
    n&ph                     h   S SK r S SKrS SKrS SKrS SKJr  S SKJrJr  S SK	r	S SK
Jr  S SKJrJrJr  S SKJrJr  S SKJr  SS	KJr  S S
KJrJr   " S S\\   5      rSS jr SS jr\R:                  SS j5       rS r " S S5      r  " S S5      r! " S S5      r"\RF                  r$ " S S5      r%g)    N)Path)Mockpatch)InvalidRequirement)ConfigHandlerTargetread_configuration)Distribution_Distribution)SetuptoolsDeprecationWarning   )DALS)DistutilsFileErrorDistutilsOptionErrorc                       \ rS rSrSrSrSrg)ErrConfigHandler   z7Erroneous handler. Fails to implement required methods.z**err** N)__name__
__module____qualname____firstlineno____doc__section_prefix__static_attributes__r       X/var/www/html/venv/lib/python3.13/site-packages/setuptools/tests/config/test_setupcfg.pyr   r      s
    ANr   r   c                     UnU R                  S5       H  nUR                  U5      nM     S nU(       d"  UR                  S5      nUR                  S5        X54$ )N/__init__.py )splitmkdirjoinwrite)namebase_dirnsdir_packagedir_name	init_files         r   make_package_dirr,      sV    KJJsO!''1 $I$$]3	!!r   c                     Uc  SnU R                  S5      R                  U5        U R                  S5      nUR                  UR                  U5      SS9  [        X@5      u  pgUR                  S5        Xe4$ )Nz%from setuptools import setup
setup()
setup.py	setup.cfgwb)modezWVERSION = (1, 2, 3)

VERSION_MAJOR = 1
def get_version():
    return [3, 4, 5, "dev"]

)r$   r%   encoder,   )tmpdir	setup_cfgsetup_pyencodingpackage_pathconfigpackage_dirr+   s           r   fake_envr:   %   sx     <
KK
!!(+[[%F
LL!!(+$L7-lCKOO	 r   c              #      #    U=(       d    0 nU R                  5          [        U5      nSUl        U=(       a    UR                  5         Uv   S S S 5        g ! , (       d  f       g = f7f)Nr.   )as_cwdr
   script_nameparse_config_files)r3   kwargs_initialparsedists       r   get_distrB   >   sJ     #)rN	N+%+$))+
 
s   A(0A	A(
A%!A(c                      [         R                  " [        5         [        S 0 S[	        5       5      n U R
                    S S S 5        g ! , (       d  f       g = f)NF)pytestraisesNotImplementedErrorr   r   parsers)handlers    r   test_parsers_implementedrI   J   s4    	*	+"4UDF; 
,	+	+s   #A
Ac                   &    \ rS rSrS rS rS rSrg)TestConfigurationReaderP   c                     [        US5      u  p#[        [        U5      5      nUS   S   S:X  d   eUS   S   SS/:X  d   eUS   S	   S
S/:X  d   eg )NzX[metadata]
version = 10.1.1
keywords = one, two

[options]
scripts = bin/a.py, bin/b.py
metadataversion10.1.1keywordsonetwooptionsscriptszbin/a.pyzbin/b.py)r:   r	   strselfr3   _r8   config_dicts        r   
test_basic"TestConfigurationReader.test_basicQ   sw    -
	 )V5:&y1X===:&z2uenDDD9%i0Z4LLLLr   c                     [         R                  " [        5         [        [	        UR                  S5      5      5        S S S 5        g ! , (       d  f       g = f)Nr/   )rD   rE   r   r	   rV   r$   rX   r3   s     r   test_no_config&TestConfigurationReader.test_no_config`   s1    ]]-.s6;;{#;<= /..s   $A
Ac                 ,   [        US5      u  p#[        R                  " [        5         [	        [        U5      5        S S S 5        [	        [        U5      SS9nUS   S   SS/:X  d   eSUS   ;  d   eUR                  5         g ! , (       d  f       NM= f)	Nz<[metadata]
version = attr: none.VERSION
keywords = one, two
T)ignore_option_errorsrN   rQ   rR   rS   rO   )r:   rD   rE   ImportErrorr	   rV   removerW   s        r   test_ignore_errors*TestConfigurationReader.test_ignore_errorsd   s    M
	 ]];'s6{+ ( )V4P:&z2uenDDDJ 7777 ('s   B
Br   N)r   r   r   r   r[   r_   re   r   r   r   r   rK   rK   P   s    M>r   rK   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\R2                  R5                  SS\" S5      SS04S\" S5      SS04/5      S 5       rS rg!)"TestMetadatat   c                 8   [        US5        UR                  S5      R                  S5        SS0n[        X5       nUR                  n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                  S:X  d   eUR                  S:X  d   eUR                  SS/:X  d   eUR                  S:X  d   eUR                  S:X  d   e S S S 5        g ! , (       d  f       g = f)Na-  [metadata]
version = 10.1.1
description = Some description
long_description_content_type = text/something
long_description = file: README
name = fake_name
keywords = one, two
provides = package, package.sub
license = otherlic
download_url = http://test.test.com/test/
maintainer_email = test@test.com
READMEreadme contents
line2licensezBSD 3-Clause LicenserP   zSome descriptiontext/somethingpackagezpackage.sub	fake_namerR   rS   http://test.test.com/test/test@test.com)r:   r$   r%   rB   rN   rO   descriptionlong_description_content_typelong_descriptionprovidesrm   r&   rQ   download_urlmaintainer_email)rX   r3   meta_initialrA   rN   s        r   r[   TestMetadata.test_basicu   s0   
1	
 	H##$<= -

 f+t}}H##x///''+====99=MMMM,,0HHHH$$M(BBBB##'======K///$$666((,HHHH,,??? ,++s   CD
Dc                     [        U[        S5      5        [        U5       nUR                  nUR                  S:X  d   eUR
                  S:X  d   eUR                  S:X  d   e S S S 5        g ! , (       d  f       g = f)Nzr
            [metadata]
            name=foo
            version=0.0.1
            license=Apache 2.0
            fooz0.0.1z
Apache 2.0)r:   r   rB   rN   r&   rO   rm   rX   r3   rA   rN   s       r   test_license_cfgTestMetadata.test_license_cfg   su    
	
 f}}H==E)))##w...##|333 s   AA..
A<c                     [        US5        UR                  S5      R                  S5        UR                  S5      R                  S5        [        U5       nUR                  R
                  S:X  d   e S S S 5        g ! , (       d  f       g = f)Nz=[metadata]
long_description = file: README.rst, CHANGES.rst

z
README.rstrl   zCHANGES.rstzchangelog contents
and stuffz2readme contents
line2
changelog contents
and stuff)r:   r$   r%   rB   rN   ru   rX   r3   rA   s      r   test_file_mixedTestMetadata.test_file_mixed   sw    N	

 	L!''(@AM"(()HIf==11G   s   A??
Bc                 P   UR                  S5        UR                  SS5      nUR                  SS9  [        US5        [        USS9 n[        R
                  " [        5         UR                  5         S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)	Nrk   depth1depth2T)dirz1[metadata]
long_description = file: ../../README
Fr@   )ensurer$   r:   rB   rD   rE   r   r>   )rX   r3   projectrA   s       r   test_file_sandboxed TestMetadata.test_file_sandboxed   sy    h++h14 OPgU+t34'') 5 ,+44 ,+s$   	B$B5B
B	B
B%c                 <   [        US5        [        U5       nUR                  n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                  SS/:X  d   e S S S 5        g ! , (       d  f       g = f)	Nz[metadata]
author_email = test@test.com
home_page = http://test.test.com/test/
summary = Short summary
platform = a, b
classifier =
  Framework :: Django
  Programming Language :: Python :: 3.5
rr   rq   zShort summaryabFramework :: Django%Programming Language :: Python :: 3.5)r:   rB   rN   author_emailurlrs   	platformsclassifiersr}   s       r   test_aliasesTestMetadata.test_aliases   s    8
	
 f}}H((O;;;<<#????''?:::%%#s333''%7,    s   A+B
Bc                     [        US5        [        U5       nUR                  nUR                  SS/:X  d   eUR                  SS/:X  d   e S S S 5        g ! , (       d  f       g = f)Nz[metadata]
name = fake_name
keywords =
  one
  two
classifiers =
  Framework :: Django
  Programming Language :: Python :: 3.5
rR   rS   r   r   )r:   rB   rN   rQ   r   r}   s       r   test_multilineTestMetadata.test_multiline   sn    8
	
 f}}H$$666''%7,    s   5A
A%c                     [        US5        [        U5       nUR                  nUR                  SSS.:X  d   e S S S 5        g ! , (       d  f       g = f)Nzf[metadata]
project_urls =
  Link One = https://example.com/one/
  Link Two = https://example.com/two/
https://example.com/one/https://example.com/two/zLink OnezLink Two)r:   rB   rN   project_urlsr}   s       r   	test_dictTestMetadata.test_dict   sV    6	
 f}}H((66-    s   "A
Ac                    [        US5      u  p#UR                  S5      nUR                  S5      R                  S5        UR                  S5      R                  S5        UR                  S5      nUR                  S5      R                  S5        UR                  S5      R                  S5        [	        U5       nUR
                  R                  S	:X  d   e S S S 5        UR                  S
5        [	        U5       nUR
                  R                  S:X  d   e S S S 5        UR                  S5        [	        U5       nUR
                  R                  S:X  d   e S S S 5        UR                  S5        [	        U5       nUR
                  R                  S:X  d   e S S S 5        UR                  S5        [	        U5       nUR
                  R                  S:X  d   e S S S 5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nz0[metadata]
version = attr: fake_package.VERSION
subpkg_ar    r!   zmod.pyzVERSION = (2016, 11, 26)subpkg_bz2import third_party_module
VERSION = (2016, 11, 26)1.2.3z4[metadata]
version = attr: fake_package.get_version
z	3.4.5.devz6[metadata]
version = attr: fake_package.VERSION_MAJOR
1z=[metadata]
version = attr: fake_package.subpkg_a.mod.VERSION
z
2016.11.26z=[metadata]
version = attr: fake_package.subpkg_b.mod.VERSION
)r:   r#   r$   r%   rB   rN   rO   )rX   r3   r9   r8   sub_asub_brA   s          r   test_versionTestMetadata.test_version  s   &H
 !!*-

=!''+

8""#=>!!*-

=!''+

8""A	
 f==((G333  	MNf==((K777  	OPf==((C///  	VWf==((L888  	VWf==((L888 !     s<   <G+>G= HHH0+
G:=
H
H
H-0
H>c                    [        US5        UR                  SS5      R                  S5        [        U5       nUR                  R
                  S:X  d   e S S S 5        UR                  SS5      R                  S5        [        R                  " [        5         [        U5       nUR                  R
                    S S S 5        S S S 5        g ! , (       d  f       N}= f! , (       d  f       N(= f! , (       d  f       g = f)Nz4[metadata]
version = file: fake_package/version.txt
fake_packagezversion.txtz1.2.3
r   z1.2.3
4.5.6
)	r:   r$   r%   rB   rN   rO   rD   rE   r   r   s      r   test_version_fileTestMetadata.test_version_file#  s    QRNM288Cf==((G333  	NM2889IJ]]/0&!T%% " 10	 
 "! 10s/   CC0&C=C0
C
C-	)C00
C>c                     [        USSS9  [        U5       nUR                  R                  S:X  d   e S S S 5        g ! , (       d  f       g = f)NzY[metadata]
version = attr: fake_package_simple.VERSION
[options]
package_dir =
    = src
zsrc/fake_package_simpler7   r   r:   rB   rN   rO   r   s      r   $test_version_with_package_dir_simple1TestMetadata.test_version_with_package_dir_simple/  sG    
 3	
 f==((G333 	   >
Ac                     [        USSS9  [        U5       nUR                  R                  S:X  d   e S S S 5        g ! , (       d  f       g = f)Nzr[metadata]
version = attr: fake_package_rename.VERSION
[options]
package_dir =
    fake_package_rename = fake_dir
fake_dirr   r   r   r   s      r   $test_version_with_package_dir_rename1TestMetadata.test_version_with_package_dir_rename=  sG    3
 $	
 f==((G333 r   c                     [        USSS9  [        U5       nUR                  R                  S:X  d   e S S S 5        g ! , (       d  f       g = f)Nzx[metadata]
version = attr: fake_package_complex.VERSION
[options]
package_dir =
    fake_package_complex = src/fake_dir
zsrc/fake_dirr   r   r   r   s      r   %test_version_with_package_dir_complex2TestMetadata.test_version_with_package_dir_complexK  sG    8
 (	
 f==((G333 r   c                     [        US5        [        USS9 nUR                  5         S S S 5        g ! , (       d  f       g = f)Nz+[metadata]
name = fake_name
unknown = some
Fr   )r:   rB   r>   r   s      r   test_unknown_meta_item#TestMetadata.test_unknown_meta_itemY  s1    IJfE*d##% +**s   1
?c                     [        US5        [        USS9 n[        R                  " [        5         UR                  5         S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nz[metadata.some]
key = val
Fr   r:   rB   rD   rE   r   r>   r   s      r   test_usupported_section$TestMetadata.test_usupported_section^  sO    78fE*d34'') 5 +*44 +*"   A%AA%
A"	A%%
A3c                    [        / SQ5      n[        US5      u  p4UR                  S5      R                  S5        [	        U5       n[        UR
                  R                  5      U:X  d   e S S S 5        UR                  S5        [	        U5       n[        UR
                  R                  5      U:X  d   e S S S 5        g ! , (       d  f       NZ= f! , (       d  f       g = f)N)r   z#Programming Language :: Python :: 3r   z+[metadata]
classifiers = file: classifiers
r   z^Framework :: Django
Programming Language :: Python :: 3
Programming Language :: Python :: 3.5
z[metadata]
classifiers =
    Framework :: Django
    Programming Language :: Python :: 3
    Programming Language :: Python :: 3.5
)setr:   r$   r%   rB   rN   r   )rX   r3   expectedrY   r8   rA   s         r   test_classifiersTestMetadata.test_classifiersd  s     
  V%TU	M"((6	
 ft}}001X===  	:	
 ft}}001X===   s   &C&C
C
C!c                     [        US5        [        R                  " [        R                  5         [        U5          S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nz%[metadata]
description = %(message)s
)r:   rD   rE   configparserInterpolationMissingOptionErrorrB   r^   s     r   test_interpolationTestMetadata.test_interpolation  sI    BC]]<GGH&! " IH!! IHs!   A!AA!
A	A!!
A/c                 f    [        USSS9  [        U5          S S S 5        g ! , (       d  f       g = f)Nu$   [metadata]
description = éàïôñ
utf-8r6   r:   rB   r^   s     r   test_non_ascii_1TestMetadata.test_non_ascii_1  s&    AGTf s   "
0c                 h    [        US5        [        U5          S S S 5        g ! , (       d  f       g = f)Nz
# -*- coding: invalid
r   r^   s     r   test_non_ascii_3TestMetadata.test_non_ascii_3  s$    45f s   #
1c                     [        USSS9  [        U5       nUR                  R                  S:X  d   e S S S 5        g ! , (       d  f       g = f)Nu8   # -*- coding: utf-8
[metadata]
description = éàïôñ
r   r   u
   éàïôñ)r:   rB   rN   rs   r   s      r   test_non_ascii_4TestMetadata.test_non_ascii_4  sC    I	

 f==,,<<< r   c                     [        USSS9  [        R                  " [        5         [	        U5          SSS5        SSS5        g! , (       d  f       N= f! , (       d  f       g= f)z-
Config files encoded not in UTF-8 will fail
uJ   # vim: set fileencoding=iso-8859-15 :
[metadata]
description = éàïôñ
ziso-8859-15r   N)r:   rD   rE   UnicodeDecodeErrorrB   r^   s     r   test_not_utf8TestMetadata.test_not_utf8  sL     	["	

 ]]-.&! " /.!! /.s!   AAA
A	A
A$)	error_msgr8   invalidzCInvalid dash-separated key 'author-email' in 'metadata' (setup.cfg)z
                    [metadata]
                    author-email = test@test.com
                    maintainer_email = foo@foo.com
                    zauthor-emailrr   z6Invalid uppercase key 'Name' in 'metadata' (setup.cfg)z
                    [metadata]
                    Name = foo
                    description = Some description
                    Namer|   c                    [        X5        [        R                  " [        [        R
                  " U5      S9   [        U5      R                  5       nS S S 5        UR                  S5      R                  5         UR                  5        HA  u  pgUR                  SS5      R                  5       n[        WR                  U5      U:X  a  MA   e   g ! , (       d  f       N= f)Nmatchr/   -rY   )r:   rD   warnsr   reescaperB   	__enter__r$   rd   itemsreplacelowergetattrrN   )	rX   r3   r   r8   r   rA   fieldvalueattrs	            r   *test_invalid_options_previously_deprecated7TestMetadata.test_invalid_options_previously_deprecated  s    B 	 \\6bii	>RSF#--/D T 	K '')#MMOLE==c*002D4==$/5888 , TSs   C
Cr   N)r   r   r   r   r[   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rD   markparametrizer   r   r   r   r   r   rh   rh   t   s    #@J4(*0( 9D
&444&
*><

= [[* V  1
 I 
	
69769r   rh   c                      \ rS rSrS rS rS rS rS rS r	S r
S	 r\R                  R                  S
/ SQ5      S 5       r\R                  R                  S
/ SQ5      S 5       r\R                  R                  S
/ SQ5      \R                  R#                  S5      S 5       5       rS rS rS rS rS rS rS rS rS rS rSrg)TestOptionsi  c                    [        US5        [        R                  " [        SS9nU   [	        U5       nUR
                  (       d   eUR                  (       d   eUR                  SSS.:X  d   eUR                  SS/:X  d   eUR                  S	S
/:X  d   eUR                  SS/:X  d   eUR                  SS/:X  d   eUR                  / SQ:X  d   eUR                  / SQ:X  d   eUR                  S:X  d   eUR                  SS/:X  d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Na  [options]
zip_safe = True
include_package_data = yes
package_dir = b=c, =src
packages = pack_a, pack_b.subpack
namespace_packages = pack1, pack2
scripts = bin/one.py, bin/two.py
eager_resources = bin/one.py, bin/two.py
install_requires = docutils>=0.3; pack ==1.1, ==1.3; hey
setup_requires = docutils>=0.3; spack ==1.1, ==1.3; there
dependency_links = http://some.com/here/1, http://some.com/there/2
python_requires = >=1.0, !=2.8
py_modules = module1, module2
namespace_packagesr   srccr!   r   pack_apack_b.subpackpack1pack2
bin/one.py
bin/two.pyhttp://some.com/here/1http://some.com/there/2docutils>=0.3pack==1.1,==1.3heyr  zspack ==1.1, ==1.3therez>=1.0, !=2.8module1module2)r:   rD   r   r   rB   zip_safeinclude_package_datar9   packagesr   rU   dependency_linksinstall_requiressetup_requirespython_requires
py_modulesrX   r3   deprecrA   s       r   r[   TestOptions.test_basic  sQ   .	
" :BVWXf%== =,,,,##E'<<<<==X/?$@@@@**w.@@@@<<L,#????((().    (( .   
 && ,   
 ''>999??y)&<<<<- &VV%%VVs#   D1CD D1 
D.	*D11
D?c                    [        US5        [        R                  " [        SS9nU   [	        U5       nUR
                  SSS.:X  d   eUR                  SS/:X  d   eUR                  S	S
/:X  d   eUR                  SS/:X  d   eUR                  SS/:X  d   eUR                  / SQ:X  d   eUR                  / SQ:X  d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Na  [options]
package_dir = 
  b=c
  =src
packages = 
  pack_a
  pack_b.subpack
namespace_packages = 
  pack1
  pack2
scripts = 
  bin/one.py
  bin/two.py
eager_resources = 
  bin/one.py
  bin/two.py
install_requires = 
  docutils>=0.3
  pack ==1.1, ==1.3
  hey
setup_requires = 
  docutils>=0.3
  spack ==1.1, ==1.3
  there
dependency_links = 
  http://some.com/here/1
  http://some.com/there/2
r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  )r:   rD   r   r   rB   r9   r  r   rU   r  r  r  r  s       r   r   TestOptions.test_multiline   s	   *	
< :BVWXf%##E'<<<<==X/?$@@@@**w.@@@@<<L,#????((().    (( .   
 && ,    &VV%%VVs#   C%BCC%
C"	C%%
C3c                     [        US5        [        USS9 n[        R                  " [        5         UR                  5         S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nz[options]
package_dir = a b
Fr   r   r   s      r   test_package_dir_fail!TestOptions.test_package_dir_fail4  sO    9:fE*d34'') 5 +*44 +*r   c                     [        US5        [        U5       nUR                  SS/S/S.:X  d   eUR                  SS/S/S.:X  d   e S S S 5        g ! , (       d  f       g = f)	Nz}[options.package_data]
* = *.txt, *.rst
hello = *.msg

[options.exclude_package_data]
* = fake1.txt, fake2.txt
hello = *.dat
z*.txtz*.rstz*.msg)r!   helloz	fake1.txtz	fake2.txtz*.dat)r:   rB   package_dataexclude_package_datar   s      r   test_package_dataTestOptions.test_package_data:  s    		
 f$$g&!)    ,, +.!1       1A
A!c                     [        US5        [        U5       nUR                  S/:X  d   e S S S 5        g ! , (       d  f       g = f)N[options]
packages = find:
r   )r:   rB   r  r   s      r   test_packagesTestOptions.test_packagesP  s8    89f==^$4444 s	   6
Ac                 6   [        US5      u  p#[        SU5        [        SU5        [        U5       n[        UR                  5      [        / SQ5      :X  d   e S S S 5        UR                  S5        [        U5       nUR                  S/:X  d   e S S S 5        UR                  S5        [        U5       n[        UR                  5      [        SS	/5      :X  d   e S S S 5        g ! , (       d  f       N= f! , (       d  f       Nl= f! , (       d  f       g = f)
Nr#  sub_onesub_two)r   fake_package.sub_twofake_package.sub_onezi[options]
packages = find:

[options.packages.find]
where = .
include =
    fake_package.sub_one
    two
r*  zW[options]
packages = find:

[options.packages.find]
exclude =
    fake_package.sub_one
r   r)  r:   r,   rB   r   r  r%   rX   r3   r)   r8   rA   s        r   test_find_directiveTestOptions.test_find_directiveV  s    &v/NOK0K0ft}}% . *     			
 f==%;$<<<<  	)	
 ft}}%n>T-U)VVVV 9 "  s#   'C(>C97'D
(
C69
D

Dc                    [        US5      u  p#[        SU5        [        SUSS9  [        U5       n[        UR                  5      1 Sk:X  d   e S S S 5        UR                  S5        [        U5       nUR                  S/:X  d   e S S S 5        UR                  S	5        [        U5       n[        UR                  5      S
S1:X  d   e S S S 5        g ! , (       d  f       N= f! , (       d  f       Nc= f! , (       d  f       g = f)Nz%[options]
packages = find_namespace:
r'  r(  T)r(   >   r   r*  r)  zs[options]
packages = find_namespace:

[options.packages.find]
where = .
include =
    fake_package.sub_one
    two
r*  za[options]
packages = find_namespace:

[options.packages.find]
exclude =
    fake_package.sub_one
r   r)  r+  r,  s        r   test_find_namespace_directive)TestOptions.test_find_namespace_directive{  s    &=
 	K0KD9ft}}% *     			
 f==%;$<<<<  	)	
 ft}}%.:P)QQQQ 9 "  s#   C4C&-C7
C#&
C47
Dc                     [        US5        [        U5       nUR                  SS/SS/S.:X  d   e[        UR                  R
                  5      SS1:X  d   e S S S 5        g ! , (       d  f       g = f)	Nz_[options.extras_require]
pdf = ReportLab>=1.2; RXP
rest = 
  docutils>=0.3
  pack ==1.1, ==1.3
zReportLab>=1.2RXPr  r  )pdfrestr4  r5  )r:   rB   extras_requirer   rN   provides_extrasr   s      r   test_extras_requireTestOptions.test_extras_require  s{    $	
 f&&(%0(*;<+    t}}445%HHH s   AA##
A1r8   )z5[options.extras_require]
foo = bar;python_version<'3'z3[options.extras_require]
foo = bar;os_name=='linux'z6[options.extras_require]
foo = bar;python_version<'3'
z4[options.extras_require]
foo = bar;os_name=='linux'
z3[options]
install_requires = bar;python_version<'3'z1[options]
install_requires = bar;os_name=='linux'z4[options]
install_requires = bar;python_version<'3'
z2[options]
install_requires = bar;os_name=='linux'
c                     [        X!5        Sn[        R                  " [        US9   [	        U5       n S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = fNzoOne of the parsed requirements in `(install_requires|extras_require.+)` looks like a valid environment marker.*r   )r:   rD   rE   r   rB   rX   r8   r3   r   rY   s        r   +test_raises_accidental_env_marker_misconfig7TestOptions.test_raises_accidental_env_marker_misconfig  sQ     	 6 	 ]]-U;&!Q " <;!! <;!   AAA
A	A
A%)z3[options.extras_require]
foo = bar;python_version<3z4[options.extras_require]
foo = bar;python_version<3
z1[options]
install_requires = bar;python_version<3z2[options]
install_requires = bar;python_version<3
c                     [        X!5        Sn[        R                  " [        US9   [	        U5       n S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = fr;  )r:   rD   r   r   rB   r<  s        r   )test_warn_accidental_env_marker_misconfig5TestOptions.test_warn_accidental_env_marker_misconfig  sS     	 6 	 \\6eD&!Q " ED!! EDr?  )
z9[options.extras_require]
foo =
    bar;python_version<'3'z4[options.extras_require]
foo = bar;baz
boo = xxx;yyyz:[options.extras_require]
foo =
    bar;python_version<'3'
z5[options.extras_require]
foo = bar;baz
boo = xxx;yyy
z<[options.extras_require]
foo =
    bar
    python_version<3
z7[options]
install_requires =
    bar;python_version<'3'z2[options]
install_requires = bar;baz
boo = xxx;yyyz8[options]
install_requires =
    bar;python_version<'3'
z3[options]
install_requires = bar;baz
boo = xxx;yyy
z:[options]
install_requires =
    bar
    python_version<3
z.error::setuptools.SetuptoolsDeprecationWarningc                     [        X!5        [        U5      n[        U5       n S S S 5        [        U5      U:X  d   eg ! , (       d  f       N = f)N)r:   lenrB   )rX   r8   r3   recwarnnum_warningsrY   s         r   +test_nowarn_accidental_env_marker_misconfig7TestOptions.test_nowarn_accidental_env_marker_misconfig  sD    " 	 7|f  7||+++ s	   >
Ac                     [        US5        [        U5       nUR                  S/S/S.:X  d   e S S S 5        g ! , (       d  f       g = f)Nz2[options.extras_require]
foo-a = foo
foo_b = test
r|   test)zfoo-afoo_b)r:   rB   r6  r   s      r   "test_dash_preserved_extras_require.TestOptions.test_dash_preserved_extras_require  s@    PQf&&UGvh*OOOO s	   :
Ac                 r   [        US5      u  p#[        U5       nUR                  SS/S/S.:X  d   e S S S 5        SnUR                  S5      R	                  U5        UR	                  S5        [        U5       nUR                  U:X  d   e S S S 5        g ! , (       d  f       Ni= f! , (       d  f       g = f)	Nz[options.entry_points]
group1 = point1 = pack.module:func, .point2 = pack.module2:func_rest [rest]
group2 = point3 = pack.module:func2
point1 = pack.module:func'.point2 = pack.module2:func_rest [rest]point3 = pack.module:func2)group1group2zN[blogtool.parsers]
.rst = some.nested.module:SomeClass.some_classmethod[reST]
entry_pointsz,[options]
entry_points = file: entry_points
)r:   rB   rT  r$   r%   )rX   r3   rY   r8   rA   r   s         r   test_entry_pointsTestOptions.test_entry_points  s    4
	 f$$/= 88)    K 	
 	N#))(3 	EFf$$000 ' & s   B:B(
B%(
B6c                     [        US5        [        U5       nUR                  SS/S/S.:X  d   e S S S 5        g ! , (       d  f       g = f)Nz[options.entry_points]
GROUP1 = point1 = pack.module:func, .point2 = pack.module2:func_rest [rest]
group2 = point3 = pack.module:func2
rO  rP  rQ  )GROUP1rS  )r:   rB   rT  r   s      r    test_case_sensitive_entry_points,TestOptions.test_case_sensitive_entry_points  sZ    4	
 f$$/= 88)    s	   ;
A	c                     [        US5        [        U5       nSSS/4SSS/4/n[        UR                  5      [        U5      :X  d   e S S S 5        g ! , (       d  f       g = f)NzQ[options.data_files]
cfg =
      a/b.conf
      c/d.conf
data = e/f.dat, g/h.dat
cfga/b.confc/d.confdataze/f.datzg/h.dat)r:   rB   sorted
data_filesrX   r3   rA   r   s       r   test_data_filesTestOptions.test_data_files,  si    (	
 fZ01)Y/0H $//*fX.>>>> r!  c                    [        US5        UR                  S5      R                  S5        UR                  S5      R                  S5        UR                  S5      R                  S5        UR                  S5      R                  S5        UR                  S5      R                  S5        UR                  S5      R                  S5        UR                  S	5      R                  S5        UR                  S
5      R                  S5        UR                  S5      R                  S5        [        U5       nSSS/4S/ SQ4S/ SQ4S/ SQ4/n[	        UR
                  5      [	        U5      :X  d   e S S S 5        g ! , (       d  f       g = f)Nz[options.data_files]
cfg =
      a/b.conf
      c/d.conf
data = *.dat
icons = 
      *.ico
audio = 
      *.wav
      sounds.db
a.datr!   b.datc.data.icob.icoc.icobeep.wavboop.wav	sounds.dbr\  r]  r^  r_  )rf  rg  rh  icons)ri  rj  rk  audio)rl  rm  rn  )r:   r$   r%   rB   r`  ra  rb  s       r   test_data_files_globby"TestOptions.test_data_files_globby=  sF   	 	
 	G""2&G""2&G""2&G""2&G""2&G""2&J%%b)J%%b)K &&r*fZ014556?@	H $//*fX.>>>> s   8;E==
Fc                     [        U[        S5      5        [        U5       nUR                  5         S S S 5        g ! , (       d  f       g = f)NzE
            [options]
            python_requires=>=2.7
            r:   r   rB   r>   r   s      r   test_python_requires_simple'TestOptions.test_python_requires_simple`  >    	
 f##% 	   ;
A	c                     [        U[        S5      5        [        U5       nUR                  5         S S S 5        g ! , (       d  f       g = f)NzM
            [options]
            python_requires=>=2.7,!=3.0.*
            rt  r   s      r   test_python_requires_compound)TestOptions.test_python_requires_compoundm  rw  rx  c                     [        U[        S5      5        [        R                  " [        5         [        U5       nUR                  5         S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)NzG
            [options]
            python_requires=invalid
            )r:   r   rD   rE   	ExceptionrB   r>   r   s      r   test_python_requires_invalid(TestOptions.test_python_requires_invalidz  s[    	
 ]]9%&!T'') " &%!! &%s"   A/AA/
A,	(A//
A=c                    [        US5      nUR                  R                  SSS9  UR                  SSS9  Sn[	        U[
        R                  " U5      5        [        U5       nUR                  S   nUR                  S	:X  d   eUR                  S
:X  d   eUR                  [
        R                  " U5      5      (       d   e S S S 5        g ! , (       d  f       g = f)Nzsrc/custom_build.pyT)parentsexist_okzBfrom distutils.core import Command
class CustomCmd(Command): pass
r   r   zi
            [options]
            cmdclass =
                customcmd = custom_build.CustomCmd
        	customcmd	CustomCmdcustom_build)r   parentr#   
write_textr:   inspectcleandocrB   cmdclassr   r   samefilegetfile)rX   r3   module_pathr4   rA   r  s         r   test_cmdclassTestOptions.test_cmdclass  s    6#89   =R 	 	

	
 	)))45f}}[1H$$333&&.888''(ABBBB	 s   $A C
Cc                 J   [        U[        S5      5        UR                  S5      R                  S5        UR                  S5      R                  S5        [	        U5       nUR
                  S/:X  d   eUR                  SS/0:X  d   e S S S 5        g ! , (       d  f       g = f)Nz
            [options]
            install_requires = file:requirements.txt
            [options.extras_require]
            colors = file:requirements-extra.txt
            zrequirements.txtz
docutils>=0.3

zrequirements-extra.txtcoloramar  colors)r:   r   r$   r%   rB   r  r6  r   s      r   test_requirements_file"TestOptions.test_requirements_file  s    
	
 	&'--.CD,-33J?f((_,====&&8j\*BBBB s   !)B
B"r   N)r   r   r   r   r[   r   r  r  r$  r-  r0  r8  rD   r   r   r=  rA  filterwarningsrG  rL  rU  rY  rc  rq  ru  rz  r~  r  r  r   r   r   r   r   r     s   )=V2h*,5#WJ%RNI" [[		
 [[	
 [[	
 [[ PQ, R ,P1>$?"!?F&&*C*Cr   r   c                   J    \ rS rSrS r\R                  " \SSS9S 5       rSr	g)	TestExternalSettersi  c                 d    [        X5        SUR                  l        SSS.UR                  l        g )Nrn   r   r   r   )saved_dist_initrN   rt   r   )rX   rA   attrss      r   _fake_distribution_init+TestExternalSetters._fake_distribution_init  s,    $6F3 32&
"r   __init__T)autospecc                     U R                   Ul        [        SSS00S9nUR                  R                  S:X  d   eUR                  R
                  SSS.:X  d   eg )	Nr   will_beignored)r  rn   r   r   r   )r  side_effectr
   rN   rt   r   )rX   mock_parent_initr3   rA   s       r   test_external_setters)TestExternalSetters.test_external_setters  se    '+'C'C$>Iy3I"JK}}::>NNNN}}))22.
 
 	
 
r   r   N)
r   r   r   r   r  r   objectr   r  r   r   r   r   r  r    s(    
 \\-d;	
 <	
r   r  )F)Nasciir   )NT)&r   
contextlibr  r   pathlibr   unittest.mockr   r   rD   packaging.requirementsr   setuptools.config.setupcfgr   r   r	   setuptools.distr
   r   setuptools.warningsr   textwrapr   distutils.errorsr   r   r   r,   r:   contextmanagerrB   rI   rK   rh   r   r  r  r  r   r   r   <module>r     s       	  %  5 P P 7 <  E}V, " FT2  ! !H]9 ]9@[C [C|  ((
 
r   