
    z%i7              
          d dl Z d dlZd dlZd dlZd dlZd dlZd dlZ	 d dlm	Z
 ddlmZ ddlmZ d dlmZmZmZmZmZmZmZmZmZ ej4                  d        Z G d d	ej8                  ej:                        Z G d
 dej8                  ej:                        Z G d dej@                  ejB                  ej:                        Z" G d dej@                  ejB                  ej:                        Z# G d dejH                  ejJ                  ejL                  ejN                  ej8                  ej:                        Z( G d dej@                  ejB                  ej:                        Z) G d dej@                  ej:                        Z* G d dej@                  e
j:                        Z+ G d dej:                        Z, G d dej@                  ejB                  ejZ                  ej:                        Z. G d dej^                  ej:                        Z0 G d dej@                  ejB                  ej:                        Z1 G d  d!ejH                  ejJ                  ejL                  ejN                  ej:                        Z2y# e$ r
 ddlm	Z
 Y gw xY w)"    N   )fake_filesystem_unittest)fixtures)suppress)	Distribution
EntryPointPackageNotFoundError_uniquedistributionsentry_pointsmetadatapackages_distributionsversionc               #      K   t        j                  d      5 } t        j                  dt               |  d d d        y # 1 sw Y   y xY ww)NT)recorddefault)category)warningscatch_warningssimplefilterDeprecationWarning)ctxs    Q/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/test_importlib/test_main.pysuppress_known_deprecationr      s@     		 	 	- i2DE	  s   A A	AAAc                       e Zd ZdZd Zd Zd Z ee       e	       d               Z
 ej                   ed       ed            d	        Zy)

BasicTestsz\d+\.\d+(\.\d)?c                 .    t        j                  d      }y )Nzdistinfo-pkg)r   	from_name)selfdists     r   test_retrieves_version_of_selfz)BasicTests.test_retrieves_version_of_self'   s    %%n5    c                     | j                  t              5  t        j                  d       d d d        y # 1 sw Y   y xY wNzdoes-not-existassertRaisesr	   r   r   r   s    r   test_for_name_does_not_existz'BasicTests.test_for_name_does_not_exist,   s5    34 	5""#34	5 	5 	5   5>c                     	 | j                  t              5 }t        j                  d       d d d        y # 1 sw Y   y xY wr$   r%   )r   r   s     r   (test_package_not_found_mentions_metadataz3BasicTests.test_package_not_found_mentions_metadata0   s>    	 34 	5""#34	5 	5 	5s   6?c                     | j                  t              5   t        dt        fi               d d d        y # 1 sw Y   y xY w)NDistributionSubclass)r&   	TypeErrortyper   r'   s    r   test_abc_enforcedzBasicTests.test_abc_enforced=   s?     y) 	@=D',"=?	@ 	@ 	@s	   7A Nname c                     | j                  t              5  t        j                  |       d d d        y # 1 sw Y   y xY wN)r&   
ValueErrorr   r   )r   r2   s     r    test_invalid_inputs_to_from_namez+BasicTests.test_invalid_inputs_to_from_nameC   s5    
 z* 	)""4(	) 	) 	)r)   )__name__
__module____qualname__version_patternr!   r(   r+   r   AssertionErrorr   r0   r   parameterizedictr7    r"   r   r   r   $   sk    (O<
5
0 n!@ " @ X$")	)r"   r   c                   $    e Zd Zd Zd Zd Zd Zy)ImportTestsc                     | j                  t              5  t        j                  d       d d d        y # 1 sw Y   y xY w)Ndoes_not_exist)r&   ImportError	importlibimport_moduler'   s    r   test_import_nonexistent_modulez*ImportTests.test_import_nonexistent_moduleM   s6     {+ 	6##$45	6 	6 	6r)   c                 v    t        d      d   }| j                  |j                         j                  d       y )Nentriesgroupmain)r   assertEqualloadr8   r   eps     r   test_resolvezImportTests.test_resolveS   s-    	*62++V4r"   c                 Z    t        d      d   }| j                  |j                  d       y )NrI   rJ   zns:subzmod:main)r   rM   valuerO   s     r   "test_entrypoint_with_colon_in_namez.ImportTests.test_entrypoint_with_colon_in_nameW   s%    	*84:.r"   c                      t        ddd      }y )NrP   zimportlib.metadatagrpr2   rS   rK   r   rO   s     r   test_resolve_without_attrz%ImportTests.test_resolve_without_attr[   s    &
r"   N)r8   r9   r:   rG   rQ   rT   rY   r?   r"   r   rA   rA   L   s    65//r"   rA   c                   .    e Zd Zed        Zd Zd Zd Zy)NameNormalizationTestsc                     	 |  dddiiS )Nz
.dist-infoMETADATAzVERSION: 1.0
r?   r1   s    r   make_pkgzNameNormalizationTests.make_pkge   s(    	
 fJ,"
 	
r"   c                 d    	 t        j                  | j                  d      | j                         y )Nmy_pkgr   build_filesr^   site_dirr'   s    r   -test_dashes_in_dist_name_found_as_underscoreszDNameNormalizationTests.test_dashes_in_dist_name_found_as_underscoresq   s&    	 	T]]84dmmDr"   c                 h    	 d}t        j                  | j                  |      | j                         y )NCherryPyra   )r   pkg_names     r    test_dist_name_found_as_any_casez7NameNormalizationTests.test_dist_name_found_as_any_casey   s+    	 T]]84dmmDr"   c                    	 t        j                  | j                  d      | j                         t	        t        t                           }| j                   j                  t        j                               }| j                   j                  | j                  |             t        j                  | j                  d      |       t	        t        t                           }y )NabcABC)
r   rb   r^   rc   listr
   r   enter_contexttempdiradd_sys_path)r   beforealt_site_dirafters       r   test_unique_distributionsz0NameNormalizationTests.test_unique_distributions   s    	 	T]]514==Agmo./}}2283C3C3EF##D$5$5l$CDT]]51<@W]_-.r"   N)r8   r9   r:   staticmethodr^   rd   rh   rs   r?   r"   r   r[   r[   d   s#    	
 	
*2)r"   r[   c                   8    e Zd Zed        Zed        Zd Zd Zy)NonASCIITestsc                 >    	 dddii}t        j                  ||        y)Nportend.dist-infor]   u   Description: pôrˈtendportendr   rb   rc   contentss     r   pkg_with_non_ascii_descriptionz,NonASCIITests.pkg_with_non_ascii_description   s3    	
  5"

 	Xx0r"   c                 >    	 dddii}t        j                  ||        y)Nrx   r]   u:   
                Name: portend

                pôrˈtendry   rz   r{   s     r   'pkg_with_non_ascii_description_egg_infoz5NonASCIITests.pkg_with_non_ascii_description_egg_info   s5    	
   "
 	Xx0r"   c                 P    | j                  | j                        }t        |      }y r5   )r}   rc   r   r   rg   metas      r   test_metadata_loadsz!NonASCIITests.test_metadata_loads   s     66t}}E!r"   c                 P    | j                  | j                        }t        |      }y r5   )r   rc   r   r   s      r   test_metadata_loads_egg_infoz*NonASCIITests.test_metadata_loads_egg_info   s     ??N!r"   N)r8   r9   r:   rt   r}   r   r   r   r?   r"   r   rv   rv      s2        3
3r"   rv   c                       e Zd Zd Zd Zy)DiscoveryTestsc                 *    t        t                     }y r5   )rl   r   )r   distss     r   test_package_discoveryz%DiscoveryTests.test_package_discovery   s    ]_%r"   c                     | j                  t              5  t        t        dd             d d d        y # 1 sw Y   y xY w)N	somethingelse)contextr2   )r&   r6   rl   r   r'   s    r   test_invalid_usagez!DiscoveryTests.test_invalid_usage   s8    z* 	B{@A	B 	B 	Bs   6?N)r8   r9   r:   r   r   r?   r"   r   r   r      s    NBr"   r   c                       e Zd Zd Zd Zy)DirectoryTestc                     | j                   j                  d      j                          | j                  t              5  t        d       d d d        y # 1 sw Y   y xY w)NzEGG-INFOzunknown-package)rc   joinpathmkdirr&   r	   r   r'   s    r   test_egg_infozDirectoryTest.test_egg_info   sJ    z*00234 	'%&	' 	' 	's   AAc                    | j                   j                  d      }|j                          | j                  |      5  | j	                  t
              5  t        d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nzfoo-3.6.eggfoo)rc   r   r   ro   r&   r	   r   )r   eggs     r   test_eggzDirectoryTest.test_egg   sr    mm$$]3		s# 	""#78 	 	 	 	s#   A<A0A<0A9	5A<<BN)r8   r9   r:   r   r   r?   r"   r   r   r      s    'r"   r   c                       e Zd ZdZd Zy)MissingSysPathz/does-not-existc                 B    	 t         j                  j                          y r5   )rE   r   r   r'   s    r   test_discoveryzMissingSysPath.test_discovery   s    	 	((*r"   N)r8   r9   r:   rc   r   r?   r"   r   r   r      s     H+r"   r   c                   (     e Zd ZdZ fdZd Z xZS )InaccessibleSysPathz/access-deniedc                     t         |           | j                          | j                  j	                  | j
                  d       y )Nr   )	perm_bits)supersetUpsetUpPyfakefsfs
create_dirrc   )r   	__class__s    r   r   zInaccessibleSysPath.setUp   s3    4==C8r"   c                 T    	 t        t        j                  j                                y r5   )rl   rE   r   r   r'   s    r   r   z"InaccessibleSysPath.test_discovery   s     	 	Y--/0r"   )r8   r9   r:   rc   r   r   __classcell__r   s   @r   r   r      s    H9
1r"   r   c                   N     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Z xZS )
TestEntryPointsc                 l    t        |   |  t        j                  j	                  ddd      | _        y )Nr2   rS   rK   rW   )r   __init__rE   r   r   rP   )r   argsr   s     r   r   zTestEntryPoints.__init__   s4    $$$//wg 0 
r"   c                 h    t        j                  t        j                  | j                              }y r5   )pickleloadsdumpsrP   )r   reviveds     r   test_entry_point_pickleablez+TestEntryPoints.test_entry_point_pickleable  s    ,,v||DGG45r"   c                      	 t        ddd       y )Nr2   rS   rK   rX   r'   s    r   test_positional_argsz$TestEntryPoints.test_positional_args
  s    	 	67G,r"   c                 |    	 | j                  t              5  d| j                  _        d d d        y # 1 sw Y   y xY w)Nbadactor)r&   AttributeErrorrP   r2   r'   s    r   test_immutablezTestEntryPoints.test_immutable  s3    -~. 	&%DGGL	& 	& 	&s   2;c                      y r5   r?   r'   s    r   	test_reprzTestEntryPoints.test_repr      r"   c                 0    	 t        | j                         y r5   )hashrP   r'   s    r   test_hashablezTestEntryPoints.test_hashable  s    ,TWWr"   c                      y r5   r?   r'   s    r   test_modulezTestEntryPoints.test_module  r   r"   c                      y r5   r?   r'   s    r   	test_attrzTestEntryPoints.test_attr!  r   r"   c                 P    	 t        t        ddd      t        ddd      g       y )NbvalrK   rW   a)sortedr   r'   s    r   test_sortablezTestEntryPoints.test_sortable$  s.    	 	5@5@	
r"   )r8   r9   r:   r   r   r   r   r   r   r   r   r   r   r   s   @r   r   r      s0    
"-&
)
)$	
r"   r   c                       e Zd Zd Zy)
FileSystemc                     	 t        j                  | j                         i i| j                         t	        t                      y )Nprefix)r   rb   unicode_filenamerc   rl   r   r'   s    r   test_unicode_dir_on_sys_pathz'FileSystem.test_unicode_dir_on_sys_path3  s;    	 	""$b)==	
 	]_r"   N)r8   r9   r:   r   r?   r"   r   r   r   0  s    	r"   r   c                       e Zd Zd Zd Zy)!PackagesDistributionsPrebuiltTestc                 &    | j                  d       y )Nzexample-21.12-py3-none-any.whl_fixture_on_pathr'   s    r   #test_packages_distributions_examplezEPackagesDistributionsPrebuiltTest.test_packages_distributions_example@  s    >?r"   c                 (    	 | j                  d       y )Nzexample2-1.0.0-py3-none-any.whlr   r'   s    r   $test_packages_distributions_example2zFPackagesDistributionsPrebuiltTest.test_packages_distributions_example2D  s    	 	?@r"   N)r8   r9   r:   r   r   r?   r"   r   r   r   ?  s    BDr"   r   c                       e Zd Zd Zd Zy)PackagesDistributionsTestc                 d    	 t        j                  dddii| j                         t                y )Nztrim_example-1.0.0.dist-infor]   zS
                Name: trim_example
                Version: 1.0.0
                r   )r   rb   rc   r   r'   s    r   6test_packages_distributions_neither_toplevel_nor_fileszPPackagesDistributionsTest.test_packages_distributions_neither_toplevel_nor_filesP  s=    	 	. !1 ==
	
 	 r"   c                    	 t         j                  j                         }t        d      }d|i}t	        |      D ]3  \  }}|j                  d| | dd| d| did| d	dd| dii       5  |j
                  t        j                  |      
       t        j                  || j                         t               }t        t        |            D ]  } y )NzX
                Name: all_distributions
                Version: 1.0.0
                )r]   z!all_distributions-1.0.0.dist-infozimportable-name r3   in_namespace_modin_package_z__init__.py)RECORDr   )rE   	machineryall_suffixesr>   	enumerateupdater   build_recordrb   rc   r   rangelen)r   suffixesr   filesisuffixr   s          r   ,test_packages_distributions_all_module_typeszFPackagesDistributionsTest.test_packages_distributions_all_module_typesa  s   	 &&335
 0
 #8, 	IAvLL&qc&2B#A3'fX* "!%%rfX(		 	x44U;<U4==9.0s8}% 	MA 	Mr"   N)r8   r9   r:   r   r   r?   r"   r   r   r   M  s    !"%Nr"   r   c                       e Zd Zd Zy)PackagesDistributionsEggTestc                 &    	 t               fd}y )Nc                 `     j                          D ch c]  \  }}| |v r| c}}S c c}}w r5   )items)package_nameimport_namepackage_namesr   s      r   import_names_from_packagezcPackagesDistributionsEggTest.test_packages_distributions_on_eggs.<locals>.import_names_from_package  s=     3F-2E2E2G.K=0   s   *)r   )r   r   r   s     @r   #test_packages_distributions_on_eggsz@PackagesDistributionsEggTest.test_packages_distributions_on_eggs  s    	 /0	r"   N)r8   r9   r:   r   r?   r"   r   r   r     s    Yr"   r   )3rer   unittestr   importlib.metadatarE   
contextlib	itertools!pyfakefs.fake_filesystem_unittestr   ffsrD   stubsr3   r   _contextr   r   r   r	   r
   r   r   r   r   r   contextmanagerr   DistInfoPkgTestCaser   rA   	OnSysPathSiteDirr[   rv   
EggInfoPkg EggInfoPkgPipInstalledNoToplevelEggInfoPkgPipInstalledNoModulesEggInfoPkgSourcesFallbackr   r   r   r   r   FileBuilderr   ZipFixturesr   r   r   r?   r"   r   <module>r     s5   	      73  
 
 
  %)%%x'8'8 %)P/(&&(9(9 /0,)X//1A1A8CTCT ,)^(3H&&(8(8(:K:K (3VB--,,&&B,H&&(8(8(:K:K  +X''):): +1(,,cll 1 .
h'' .
b(((*>*>@Q@QD(<(<h>O>O D9N(((*;*;9Nx"Y--,,&&"Y}  7667s   I= =JJ