
    n&phiI                     |   S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	J
r
  SSKrSSKJr  SSKJrJr  SSKJr  SSKJr  SSKrSSKrS\R0                  S:H  -  S	-   r " S
 S\5      r " S S\5      r\R8                  S 5       r\R<                  \R>                  RA                  S5      \R>                  RA                  S5       " S S\RB                  5      5       5       5       r"\R>                  RA                  S5      \R>                  RA                  S5       " S S\RB                  5      5       5       r#g)zTests for distutils.dist.    N)Command)Distributionfix_help_options)support)ClassVar.posixzpydistutils.cfgc                   H    \ rS rSr% SrS/r\\\\	\	\	4         \
S'   S rSrg)	test_dist   z#Sample distutils extension command.)zsample-option=Sz	help textuser_optionsc                     S U l         g Nsample_optionselfs    X/var/www/html/venv/lib/python3.13/site-packages/setuptools/_distutils/tests/test_dist.pyinitialize_optionstest_dist.initialize_options   s
    !    r   N)__name__
__module____qualname____firstlineno____doc__r   r   listtuplestr__annotations__r   __static_attributes__ r   r   r   r      s2    - 	-:L(4c3m 456 "r   r   c                       \ rS rSrSrS rSrg)TestDistribution#   zDistribution subclasses that avoids the default search for
configuration files.

The ._config_files attribute must be set before
.parse_config_files() is called.
c                     U R                   $ r   )_config_filesr   s    r   find_config_files"TestDistribution.find_config_files+   s    !!!r   r#   N)r   r   r   r   r   r)   r"   r#   r   r   r%   r%   #   s    "r   r%   c                  *    [         R                  SS 2	 g )N   )sysargvr#   r   r   
clear_argvr/   /   s    r   save_env	save_argvc                      \ rS rSrSS jrS rS r\R                  R                  S\
R                  R                  ;  SS9S	 5       rS
 rS rS rS rS rS rS r\R                  R                  SSS9S 5       rSrg)TestDistributionBehavior4   r#   c                 f    [        5       nXl        UR                  5         UR                  5         U$ r   )r%   r(   parse_config_filesparse_command_line)r   configfilesds      r   create_distribution,TestDistributionBehavior.create_distribution8   s,    %		r   c                     [         R                  R                  S5        U R                  5       nUR	                  5       S/:X  d   eg )Nbuilddistutils.command)r-   r.   appendr:   get_command_packages)r   r/   r9   s      r   !test_command_packages_unspecified:TestDistributionBehavior.test_command_packages_unspecified?   s;     $$&%%',?+@@@@r   c                    SSK Jn  [        R                  R	                  / SQ5        U R                  5       nUR                  5       / SQ:X  d   eUR                  S5      n[        XB5      (       d   eUR                  S:X  d   eg )Nr   )r   )--command-packageszfoo.bar,distutils.testsr   z
-Ssometext)r>   foo.barzdistutils.testsr   sometext)
distutils.tests.test_distr   r-   r.   extendr:   r@   get_command_obj
isinstancer   )r   r/   r   r9   cmds        r   test_command_packages_cmdline6TestDistributionBehavior.test_command_packages_cmdlineD   s    7 
 	 $$&%%' ,
 
 	
 

 ,#))))  J...r   	distutilsz;Cannot test when virtualenv has monkey-patched Distribution)reasonc                    [         R                  R                  S5        [        US-  5      nSn[        R
                  R                  USU SU SU SU SU S	U S
U SU SU SU SU SU SU S305        [        R                  R                  [         SSS9   U R                  U/5      nS S S 5        X44nUUUUUUUUUUUUUS.n[        WR                  R                  S5      R                  5       5      [        UR                  5       5      :X  d   eUR                  R                  S5      R                  5        H  u  pXU   :X  a  M   e   [        R                  R                  [         SSS9   U R                  U/5      nS S S 5        UR                  5        H$  nXR                  R                  S0 5      ;  a  M$   e   g ! , (       d  f       GN$= f! , (       d  f       NY= f)Ninstallfilez/somedirzB
                    [install]
                    install-base = z(
                    install-platbase = z#
                    install-lib = z'
                    install-platlib = z'
                    install-purelib = z'
                    install-headers = z'
                    install-scripts = z$
                    install-data = z
                    prefix = z#
                    exec-prefix = z
                    home = z
                    user = z
                    root = z
                    z/a)prefixbase_prefix)install_baseinstall_platbaseinstall_libinstall_platlibinstall_purelibinstall_headersinstall_scriptsinstall_datarS   exec_prefixhomeuserrootz/b)r-   r.   r?   r    jaracopathr=   mockpatchmultipler:   sortedcommand_optionsgetkeysitems)
r   tmp_pathr/   rR   fakepathr9   option_tupleresult_dictkeyvalues
             r   test_venv_install_options2TestDistributionBehavior.test_venv_install_optionsX   s8   
 		"8f$% $$,: .((0z 2##+* -''/j 1''/j 1''/j 1''/j 1$$,: .&Z (##+* -$: &$: &$: &
 	( ZZ  Tt D(($0A E ' ) ,'++++("'   
  a''++I6;;=>&C
 
 	
 
 ++//	:@@BJC,,,, C ZZ  Tt D(($0A E ##%C//33IrBBBB &A ED: EDs   G8G
G
G,c                    [         R                  R                  S5        [        US-  5      n[        R
                  R                  US05        U R                  U/5      nUR                  5       / SQ:X  d   e/ SQ[         R                  SS & U R                  U/5      nUR                  5       SS/:X  d   e/ S	Q[         R                  SS & U R                  U/5      nUR                  5       S/:X  d   eg )
Nr=   rR   zh
                    [global]
                    command_packages = foo.bar, splat
                    )r>   rE   splat)rD   sporkr=   r,   r>   ru   )rD    r=   )	r-   r.   r?   r    ra   rb   r=   r:   r@   )r   rk   r/   rR   r9   s        r    test_command_packages_configfile9TestDistributionBehavior.test_command_packages_configfile   s     8f$% 
 	 $$dV,%%'+TTTT @$$dV,%%',?+IIII ;$$dV,%%',?+@@@@r   c                 
  ^ / mU4S jnUR                  [        R                  " [        [        S[        R
                  5      5        U[        l        [        SSSS0 S.S9n[        T5      S:X  d   eS[        U5      ;  d   eg )	Nc                 (   > TR                  U 5        g r   )r?   )msgwarnss    r   _warn:TestDistributionBehavior.test_empty_options.<locals>._warn   s    LLr   warnxxxxxxx)authornameversionurloptionsattrsr   r   )	addfinalizer	functoolspartialsetattrwarningsr   r   lendir)r   requestr}   distr|   s       @r   test_empty_options+TestDistributionBehavior.test_empty_options   s    
 	 	gxG	
  
 5zQD	)))r   c                 h   SSS.n[        US9nUR                  5         UR                  R                  SS/:X  d   eUR                  R                  SS/:X  d   eSSS.n[        US9nUR                  5         UR                  R                  S/:X  d   eUR                  R                  S/:X  d   eg )None,two)keywords	platformsr   onetwozfoo bar)r   finalize_optionsmetadatar   r   r   r   r   s      r   test_finalize_options.TestDistributionBehavior.test_finalize_options   s    &Y?%( }}&&5%.888}}%%%777&Y?%(}}&&9+555}}%%)444r   c                     [        5       nUR                  b   eUR                  5       nUS/:X  d   eUR                  S/:X  d   eSUl        UR                  5       nU/ SQ:X  d   eg )Nr>   r   )r>   r   r   )r   command_packagesr@   )r   r   cmdss      r   test_get_command_packages2TestDistributionBehavior.test_get_command_packages   sx    ~$$,,,((*+,,,,$$)<(==== )((*::::r   c                     [        5       n[        R                  " [        5         UR	                  SSS9  S S S 5        g ! , (       d  f       g = f)Nokok2)level)r   pytestraises	TypeErrorannounce)r   r   s     r   test_announce&TestDistributionBehavior.test_announce   s1    ~]]9%MM$eM, &%%s	   ?
Ac                     [         R                  R                  [        S0U5        [	        5       nUR                  5       n[	        SS/0S9nUR                  5       n[        U5      S-
  [        U5      :X  d   eg )Nz[distutils]
script_args--no-user-cfgr   r,   )ra   rb   r=   pydistutils_cfgr   r)   r   )r   	temp_homer9   	all_filesfiless        r   test_find_config_files_disable7TestDistributionBehavior.test_find_config_files_disable   sm    ?O<iHN'')	/@AB##% 9~!SZ///r   c                 B    [        SS0S9nUR                  SS/:X  d   eg )Nr   )r=   r   r   r=   r   )r   r   )r   r9   s     r   test_script_args_list_coercion7TestDistributionBehavior.test_script_args_list_coercion   s+    /IJK }}/ ::::r   zplatform.system() == "Windows"z Windows does not honor chmod 000c                     UR                  [        5      R                  SSS9  UR                  S5        [	        5       R                  5         g)zF
Finding config files should not fail when directory is inaccessible.
rv   zutf-8)encodingr   N)joinpathr   
write_textchmodr   r)   )r   	fake_homes     r   'test_find_config_files_permission_error@TestDistributionBehavior.test_find_config_files_permission_error   s<     	?+66rG6L((*r   N)r#   )r   r   r   r   r:   rA   rL   r   markskipifr   r6   rq   rw   r   r   r   r   r   r   r   r"   r#   r   r   r3   r3   4   s    A
/( [[<::EEEL  ;C	;CzA0*65 	;-0; [[(1  +	+r   r3   c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)TestMetadatai  c                     [         R                  " 5       nUR                  R                  U5        UR	                  5       $ r   )ioStringIOr   write_pkg_filegetvalue)r   r   sios      r   format_metadataTestMetadata.format_metadata  s+    kkm$$S)||~r   c                     SSS.n[        U5      nU R                  U5      nSU;   d   eSUR                  5       ;  d   eSUR                  5       ;  d   eSUR                  5       ;  d   eg )Npackage1.0)r   r   zMetadata-Version: 1.0	provides:	requires:
obsoletes:)r   r   lowerr   r   r   metas       r   test_simple_metadata!TestMetadata.test_simple_metadata  sp    "u5E"##D)&$...$**,...$**,...4::<///r   c                 (   SSSS/S.n[        U5      nUR                  R                  5       SS/:X  d   eUR                  5       SS/:X  d   eU R                  U5      nSU;   d   eSUR	                  5       ;  d   eSUR	                  5       ;  d   eg )Nr   r   zpackage.subr   r   providesMetadata-Version: 1.1r   r   )r   r   get_providesr   r   r   s       r   test_providesTestMetadata.test_provides  s    "M2

 E"}}))+	=/IIII  "y-&@@@@##D)&$...$**,...4::<///r   c                     [         R                  " [        5         [        SSS/S.5        S S S 5        g ! , (       d  f       g = f)Nr   r   my.pkg (splat)r   r   r   
ValueErrorr   r   s    r   test_provides_illegal"TestMetadata.test_provides_illegal,  0    ]]:&"uCSBTU '&&	   5
Ac                 H   SSSS/S.n[        U5      nUR                  R                  5       SS/:X  d   eUR                  5       SS/:X  d   eU R                  U5      nSU;   d   eSUR	                  5       ;  d   eSU;   d   eS	U;   d   eS
UR	                  5       ;  d   eg )Nr   r   otherzanother (==1.0)r   r   requiresr   r   zRequires: otherzRequires: another (==1.0)r   )r   r   get_requiresr   r   r   s       r   test_requiresTestMetadata.test_requires2  s     "34

 E"}}))+9J/KKKK  "w0A&BBBB##D)&$...$**,... D(((*d2224::<///r   c                     [         R                  " [        5         [        SSS/S.5        S S S 5        g ! , (       d  f       g = f)Nr   r   r   r   r   r   s    r   test_requires_illegal"TestMetadata.test_requires_illegalB  r   r   c                     S[        S/5      S.n[        U5      n[        UR                  R                  [
        5      (       d   eg )Nr   r   )r   r   )iterr   rJ   r   r   r   r   s      r   test_requires_to_list"TestMetadata.test_requires_to_listH  s9    "gY@E"$--00$7777r   c                 H   SSSS/S.n[        U5      nUR                  R                  5       SS/:X  d   eUR                  5       SS/:X  d   eU R                  U5      nSU;   d   eSUR	                  5       ;  d   eSUR	                  5       ;  d   eS	U;   d   eS
U;   d   eg )Nr   r   r   zanother (<1.0)r   r   	obsoletesr   r   r   zObsoletes: otherzObsoletes: another (<1.0))r   r   get_obsoletesr   r   r   s       r   test_obsoletesTestMetadata.test_obsoletesM  s    !#34

 E"}}**,:J0KKKK!!#1A'BBBB##D)&$...$**,...$**,...!T)))*d222r   c                     [         R                  " [        5         [        SSS/S.5        S S S 5        g ! , (       d  f       g = f)Nr   r   r   r   r   r   s    r   test_obsoletes_illegal#TestMetadata.test_obsoletes_illegal]  s0    ]]:&"uDTCUV '&&r   c                     S[        S/5      S.n[        U5      n[        UR                  R                  [
        5      (       d   eg )Nr   r   )r   r   )r   r   rJ   r   r   r   r   s      r   test_obsoletes_to_list#TestMetadata.test_obsoletes_to_listc  s9    "wiAE"$--1148888r   c                     SSS/S.n[        U5      nUR                  5       S/:X  d   eU R                  U5      nSU;   d   eg )NBoa3.0#Programming Language :: Python :: 3r   r   classifiersr   )r   get_classifiersr   r   s       r   test_classifierTestMetadata.test_classifierh  sZ    AB

 E"##%*O)PPPP##D)&$...r   c                     SSSS.n[        U5      nSUR                  S   ;   d   e[        UR                  R                  [
        5      (       d   eUR                  R                  [        US   5      :X  d   eg )Nr  r  )r  r  should be a listr   r  )r   messagesrJ   r   r  r   r   caplogr   r9   s       r   test_classifier_invalid_type)TestMetadata.test_classifier_invalid_types  st    C

 !V__Q%7777!**00$7777zz%%eM.B)CCCCr   c                 Z    SS/ SQS.n[        U5      nUR                  5       / SQ:X  d   eg )NMontyr   spameggszlife of brianr   r   r   )r   get_keywordsr   s      r   test_keywordsTestMetadata.test_keywords  s6    9

 E"  "&GGGGr   c                     SSSS.n[        U5      nSUR                  S   ;   d   e[        UR                  R                  [
        5      (       d   eUR                  R                  [        US   5      :X  d   eg )Nr  r   r  r  r  r   r   )r   r  rJ   r   r   r   r  s       r   test_keywords_invalid_type'TestMetadata.test_keywords_invalid_type  st    9

 !V__Q%7777!**--t4444zz""d5+<&====r   c                 Z    SSSS/S.n[        U5      nUR                  5       SS/:X  d   eg )Nr  r   	GNU/LinuxSome Evil Platformr   r   r   )r   get_platformsr   s      r   test_platformsTestMetadata.test_platforms  sA    %';<

 E"!!#5I'JJJJr   c                     SSSS.n[        U5      nSUR                  S   ;   d   e[        UR                  R                  [
        5      (       d   eUR                  R                  [        US   5      :X  d   eg )Nr  r   )r  r   r!  r  r   r   )r   r  rJ   r   r   r   r  s       r   test_platforms_invalid_types)TestMetadata.test_platforms_invalid_types  st    <

 !V__Q%7777!**..5555zz##tE+,>'????r   c                 X    SSSS.n[        U5      nU R                  U5      nSU;   d   eg )Nr  r  zhttp://example.org/boa)r   r   download_urlr   )r   r   r   s       r   test_download_urlTestMetadata.test_download_url  s<    4

 E"##D)&$...r   c                     [         R                  " S5      nSSUS.n[        U5      nU R                  U5      nUR	                  SS5      nX;   d   eg )Nzc        example::
              We start here
            and continue here
          and end here.r   r   r   r   long_descriptionz	
        
)textwrapdedentr   r   replace)r   	long_descr   r   r   s        r   test_long_description"TestMetadata.test_long_description  sY    OO
	 #u)TE"##D)||ND1   r   c                     [         R                  R                  [        S0U5        U[        -  n[	        U5      [        5       R                  5       ;   d   eg)z
pydistutils.cfg is found
rv   N)ra   rb   r=   r   r    r   r)   )r   r   config_paths      r   test_custom_pydistutils$TestMetadata.test_custom_pydistutils  sE     	?B/;/1;<>#C#C#EEEEr   c                     [         R                  R                  SS0U5        US-  nUR                  S[	        U5      5        [	        U5      [        5       R                  5       ;   d   eg )Nzoverrides.cfgrv   DIST_EXTRA_CONFIG)ra   rb   r=   setenvr    r   r)   )r   monkeypatchrk   filenames       r   test_extra_pydistutils#TestMetadata.test_extra_pydistutils  sW    ?B/:o-.H>8} @ @ BBBBr   c                 N    SS/n[        U5      nUS   S:X  d   eUS   S:X  d   eg )N)abcr9   )r,            r   )rB  rC  rD  r,   )r,   rE  rF  )r   )r   help_tuplesfancy_optionss      r   test_fix_help_options"TestMetadata.test_fix_help_options  s<    +\:(5Q?222Q9,,,r   c                 "   [        5       n/ [        l        SUl        SUl        UR                  5         UR                  5       R                  R                  S5       Vs/ s H  oDR                  5       S:w  d  M  UPM     nnU(       d   eg s  snf )NTzsetup.pyr/  rv   )
r   r-   r.   helpscript_namer7   
readouterroutsplitstrip)r   r   capsysr   lineoutputs         r   test_show_helpTestMetadata.test_show_help  s~    ~	%! $..044::4@
@TJJLTVDVD@ 	 
 v
s   B:Bc                    SSSSSSS/S/S	.n[        U5      nUR                  n[        R                  " 5       nUR	                  U5        UR                  S
5        UR                  U5        UR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  SS/:X  d   eUR                  b   eUR                  b   eUR                  S/:X  d   eg )Nr   r   descr   zhttp://example.comr   r   foo)r   r   r.  descriptionr)  r   r   r   )r   r   r   r   r   seekread_pkg_filer   r   r[  r)  r   r   r   r   )r   r   r   r   PKG_INFOs        r   test_read_metadataTestMetadata.test_read_metadata  s    & 0
 E"== ;;=)ax(}}	)))5(((##u,,,$$(<<<<  UEN222!!)))!!)))  UG+++r   c                    SSSS.n[        U5      nUR                  n[        R                  " 5        nUR	                  U5        UR                  5       nSSS5        [        R                  " W5      n[        R                  R                  SSSS	9n[        R                  " 5        n[        R                  R                  XGS
9R                  U5        UR                  S5        [        R                  " U5      nSSS5        [        US   R!                  5       5      n	[        WS   R!                  5       5      n
X:X  d   eg! , (       d  f       N= f! , (       d  f       N_= f)z
In pypa/setuptools#4033, it was shown that once PKG-INFO is
re-generated using ``email.generator.Generator``, some control
characters might cause problems.
r   r   zhello
world
r-  NTFr   )utf8mangle_from_max_line_length)policyDescription)r   r   r   r   r   r   emailmessage_from_stringre  EmailPolicy	generator	Generatorflattenr\  message_from_fileset
splitlines)r   r   r   r   bufferr{   origre  regen	orig_desc
regen_descs              r   'test_round_trip_through_email_generator4TestMetadata.test_round_trip_through_email_generator  s"     4

 E"==[[]f##F+//#C 
 ((-)) * 

 [[]fOO%%f%<DDTJKKN++F3E	  ]+6689	}-88:;
&&&+ ] ]s   "E'AE
E
E"r#   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	  r  r  r  r#  r&  r*  r4  r8  r?  rJ  rV  r_  ru  r"   r#   r   r   r   r     s    
000 8
3 9
	/DH>K@/!FC-,:$'r   r   )$r   rg  email.generatoremail.policyr   r   osr-   r0  unittest.mockrc   r   distutils.cmdr   distutils.distr   r   distutils.testsr   typingr   jaraco.pathra   r   r   r   r   r%   fixturer/   combine_markersr   usefixturesTempdirManagerr3   r   r#   r   r   <module>r     s$        	 	 
    ! 9 #   G+,/@@" "	"| 	"   	$%S+w55 S+ & % S+l $%Y'7)) Y' & %Y'r   