
    z%iS                        d dl Z d dl mZ d dl mZ d dlZd dlZd dlZd dlmZ  G d d      Z G d dej                        Z
 G d d	ej                  ej                        Z G d
 dej                        Zedk(  r ej                           yy)    N)abc)utilc                       e Zd Zd Zd Zy)CollectInitc                      || _         || _        y N)argskwargs)selfr	   r
   s      Q/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/test_importlib/test_lazy.py__init__zCollectInit.__init__   s    	    c                     | S r    r   modules     r   exec_modulezCollectInit.exec_module   s    r   N)__name__
__module____qualname__r   r   r   r   r   r   r      s    r   r   c                       e Zd Zd Zd Zy)LazyLoaderFactoryTestsc                     t         j                  j                  t              } |ddd      }|j                  }| j                  d|j                         | j                  ddi|j                         y )Nmodule namemodule pathkw)r   )r   r   )r   
LazyLoaderfactoryr   loaderassertEqualr	   r
   )r   r   lazy_loaderr   s       r   	test_initz LazyLoaderFactoryTests.test_init   s^    //))+6 m]tD##7E$v}}5r   c                     | j                  t              5  t        j                  j	                  t
               d d d        y # 1 sw Y   y xY wr   )assertRaises	TypeErrorr   r   r   objectr   s    r   test_validationz&LazyLoaderFactoryTests.test_validation    s7    y) 	,OO##F+	, 	, 	,s   $AAN)r   r   r   r"   r(   r   r   r   r   r      s    6,r   r   c                   H    e Zd ZdZdZdZdj                  e      ZddZd Z	y)TestingImporterlazy_loader_testchangedNzattr = 42; __name__ = {!r}c                 t    || j                   k7  ry t        j                  |t        j                  |             S r   )module_namer   spec_from_loaderr   )r   namepathtargets       r   	find_speczTestingImporter.find_spec-   s/    4###$$T4??4+@AAr   c                 R    t        | j                  |j                         || _        y r   )execsource_code__dict__loadedr   s     r   r   zTestingImporter.exec_module2   s    Tv/r   r   )
r   r   r   r.   mutated_namer8   formatr6   r3   r   r   r   r   r*   r*   &   s,    $KLF.55lCKB
r   r*   c                   P    e Zd Zd ZddZd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zy)LazyLoaderTestsc                     | j                  t              5  t        j                  t               d d d        y # 1 sw Y   y xY wr   )r$   r%   r   r   r&   r'   s    r   r"   zLazyLoaderTests.test_init9   s1    y) 	$OOF#	$ 	$ 	$s	   9ANc                    t               }|||_        t        j                  t         j                  t        j
                  |            }|j                  j                  |      }|#t        j                  t         j                        }||_
        |j                  |_        |j                  j                  |       | j                  |j                         |S r   )r*   r6   r   r/   r.   r   r   create_moduletypes
ModuleType__spec__
__loader__r   assertIsNoner8   )r   r6   r   specr   s        r   
new_modulezLazyLoaderTests.new_module>   s     ""!,F$$_%@%@%)__V%<>**40>%%o&A&ABF KK'&--(r   c                    t               }t        j                  |j                        5  t        j                  |g      5  t        j                  |j                        }d d d        d d d        | j                  |j                         | j                  j                  |       | j                  |j                         | j                  ||j                         y # 1 sw Y   xY w# 1 sw Y   xY w)N)	meta_path)r*   	test_utiluncacher.   import_state	importlibimport_modulerD   r8   r    rC   assertIsNotNone)r   importerr   s      r   test_e2ezLazyLoaderTests.test_e2eN   s    "$x334 	G''8*= G"001E1EFG	G 	(//***H5X__-1G G	G 	Gs#   C- C!"C-!C*	&C--C6c                 x    | j                         }| j                  t        j                  |j                         y r   )rF   r    r*   r9   r   r   s     r   test_attr_unchangedz#LazyLoaderTests.test_attr_unchanged[   s*     "55vGr   c                 j    | j                         }d|_        | j                  d|j                         y )N*   )rF   new_attrr    r   s     r   test_new_attrzLazyLoaderTests.test_new_attra   s)    "V__-r   c                 j    | j                         }d|_        | j                  d|j                         y )Nbogus)rF   r   r    r   s     r   test_mutated_preexisting_attrz-LazyLoaderTests.test_mutated_preexisting_attrg   s+     "!&//2r   c                 j    | j                         }d|_        | j                  d|j                         y )N   )rF   attrr    r   s     r   test_mutated_attrz!LazyLoaderTests.test_mutated_attrn   s+     "FKK(r   c                 ^    | j                         }|`| j                  t        |d             y )Nr\   )rF   r\   assertFalsehasattrr   s     r   test_delete_eventual_attrz)LazyLoaderTests.test_delete_eventual_attru   s(    "K01r   c                 ^    | j                         }|`| j                  t        |d             y )Nr   )rF   r   r_   r`   r   s     r   test_delete_preexisting_attrz,LazyLoaderTests.test_delete_preexisting_attr{   s(    "O45r   c                    t        j                  t        j                        5  t	        j
                  t        j                        }|t        j                  t        j                  <   | j                         }| j                  t        d      5  |j                   d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nsubstituted)rI   rJ   r*   r.   r@   rA   sysmodulesrF   assertRaisesRegex
ValueErrorr   )r   fresh_moduler   s      r   test_module_substitution_errorz.LazyLoaderTests.test_module_substitution_error   s    ::; 	  ++O,G,GHL7CCKK334__&F''
MB   		  	    		  	 s$   A+B9B-B9-B6	2B99Cc                     t        j                  t        j                        5  | j	                         }|t
        j                  t        j                  <   |j                   d d d        y # 1 sw Y   y xY wr   )rI   rJ   r*   r.   rF   rf   rg   r   r   s     r   test_module_already_in_sysz*LazyLoaderTests.test_module_already_in_sys   sR    ::; 	__&F7=CKK334OO		 	 	s   >A++A4r   )r   r   r   r"   rF   rP   rR   rV   rY   r]   ra   rc   rk   rm   r   r   r   r<   r<   7   s:    $
 2H.3)26
 r   r<   __main__)rL   r   r   rf   r@   unittesttest.test_importlibrI   r   TestCaser   MetaPathFinderLoaderr*   r<   r   mainr   r   r   <module>ru      s}       
   1 ,X.. ,"c((#** "Vh'' Vr zHMMO r   