
    ,h                     b   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mZ d dl	Z	d dl
mZ d dlmZmZmZ d dlmZmZ d dlmZ dd	lmZ d d
lmZmZ  G d dee         ZddZ	 ddZej:                  dd       Zd Z G d d      Z  G d d      Z! G d d      Z"ejF                  Z$ G d d      Z%y)    N)Path)Mockpatch)InvalidRequirement)ConfigHandlerTargetread_configuration)Distribution_Distribution)SetuptoolsDeprecationWarning   )DALS)DistutilsFileErrorDistutilsOptionErrorc                       e Zd ZdZdZy)ErrConfigHandlerz7Erroneous handler. Fails to implement required methods.z**err**N)__name__
__module____qualname____doc__section_prefix     g/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/setuptools/tests/config/test_setupcfg.pyr   r      s
    ANr   r   c                     |}| j                  d      D ]  }|j                  |      } d }|s"|j                  d      }|j                  d       ||fS )N/__init__.py )splitmkdirjoinwrite)namebase_dirnsdir_packagedir_name	init_files         r   make_package_dirr)      s]    KJJsO 2!''12I$$]3		!!r   c                     |d}| j                  d      j                  |       | j                  d      }|j                  |j                  |      d       t        ||       \  }}|j                  d       ||fS )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_envr7   %   s~     <
KK
!!(+[[%F
LL!!(+$L7-lFCKOO	 r   c              #      K   |xs i }| j                         5  t        |      }d|_        |xr |j                          | d d d        y # 1 sw Y   y xY ww)Nr+   )as_cwdr
   script_nameparse_config_files)r0   kwargs_initialparsedists       r   get_distr?   >   sV     #)rN	 N+%+$))+
  s   A+A	AAAc                      t        j                  t              5  t        d i dt	                     } | j
                   d d d        y # 1 sw Y   y xY w)NF)pytestraisesNotImplementedErrorr   r   parsers)handlers    r   test_parsers_implementedrF   J   s=    	*	+ "4UDF;  s   #AAc                       e Zd Zd Zd Zd Zy)TestConfigurationReaderc                     t        |d      \  }}t        t        |            }|d   d   dk(  sJ |d   d   ddgk(  sJ |d   d	   d
dgk(  sJ y )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)r7   r	   strselfr0   _r5   config_dicts        r   
test_basicz"TestConfigurationReader.test_basicQ   ss    -
	6 )V5:&y1X==:&z2uenDD9%i0Z4LLLLr   c                     t        j                  t              5  t        t	        |j                  d                   d d d        y # 1 sw Y   y xY w)Nr,   )rA   rB   r   r	   rR   r!   rT   r0   s     r   test_no_configz&TestConfigurationReader.test_no_config`   s:    ]]-. 	>s6;;{#;<=	> 	> 	>s   $AAc                 "   t        |d      \  }}t        j                  t              5  t	        t        |             d d d        t	        t        |      d      }|d   d   ddgk(  sJ d|d   vsJ |j                          y # 1 sw Y   HxY w)	Nz<[metadata]
version = attr: none.VERSION
keywords = one, two
T)ignore_option_errorsrJ   rM   rN   rO   rK   )r7   rA   rB   ImportErrorr	   rR   removerS   s        r   test_ignore_errorsz*TestConfigurationReader.test_ignore_errorsd   s    M
	6 ]];' 	,s6{+	, )V4P:&z2uenDDJ 777	, 	,s   BBN)r   r   r   rW   rZ   r_   r   r   r   rH   rH   P   s    M>r   rH   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej0                  j3                  dd ed      ddifd ed      ddifg      d        Zy) TestMetadatac                    t        |d       |j                  d      j                  d       ddi}t        ||      5 }|j                  }|j
                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  d	d
gk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  ddgk(  sJ |j                  dk(  sJ |j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)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 LicenserL   zSome descriptiontext/somethingpackagezpackage.sub	fake_namerN   rO   http://test.test.com/test/test@test.com)r7   r!   r"   r?   rJ   rK   descriptionlong_description_content_typelong_descriptionprovidesre   r#   rM   download_urlmaintainer_email)rT   r0   meta_initialr>   rJ   s        r   rW   zTestMetadata.test_basicu   s$   
1	
 	H##$<= -

 fl+ 	@t}}H##x//''+===99=MMM,,0HHH$$M(BBB##'=====K//$$66((,HHH,,???	@ 	@ 	@s   B;DDc                     t        |t        d             t        |      5 }|j                  }|j                  dk(  sJ |j
                  dk(  sJ |j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nzr
            [metadata]
            name=foo
            version=0.0.1
            license=Apache 2.0
            fooz0.0.1z
Apache 2.0)r7   r   r?   rJ   r#   rK   re   rT   r0   r>   rJ   s       r   test_license_cfgzTestMetadata.test_license_cfg   sx    
	
 f 	4}}H==E))##w..##|333	4 	4 	4s   A A++A4c                    t        |d       |j                  d      j                  d       |j                  d      j                  d       t        |      5 }|j                  j
                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nz=[metadata]
long_description = file: README.rst, CHANGES.rst

z
README.rstrd   zCHANGES.rstzchangelog contents
and stuffz2readme contents
line2
changelog contents
and stuff)r7   r!   r"   r?   rJ   rm   rT   r0   r>   s      r   test_file_mixedzTestMetadata.test_file_mixed   s    N	

 	L!''(@AM"(()HIf 	==11G  	 	 	s   A>>Bc                 F   |j                  d       |j                  dd      }|j                  d       t        |d       t        |d      5 }t	        j
                  t              5  |j                          d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)	Nrc   depth1depth2T)dirz1[metadata]
long_description = file: ../../README
Fr=   )ensurer!   r7   r?   rA   rB   r   r;   )rT   r0   projectr>   s       r   test_file_sandboxedz TestMetadata.test_file_sandboxed   s    h++h14 OPgU+ 	*t34 *'')*	* 	** *	* 	*s$   B)B:BB	BB c                 (   t        |d       t        |      5 }|j                  }|j                  dk(  sJ |j                  dk(  sJ |j
                  dk(  sJ |j                  ddgk(  sJ |j                  ddgk(  sJ 	 d d d        y # 1 sw Y   y xY w)	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
rj   ri   zShort summaryabFramework :: Django%Programming Language :: Python :: 3.5)r7   r?   rJ   author_emailurlrk   	platformsclassifiersrt   s       r   test_aliaseszTestMetadata.test_aliases   s    8
	
 f 		}}H((O;;<<#???''?::%%#s33''%7,   		 		 		s   A&BBc                     t        |d       t        |      5 }|j                  }|j                  ddgk(  sJ |j                  ddgk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nz[metadata]
name = fake_name
keywords =
  one
  two
classifiers =
  Framework :: Django
  Programming Language :: Python :: 3.5
rN   rO   r   r   )r7   r?   rJ   rM   r   rt   s       r   test_multilinezTestMetadata.test_multiline   st    8
	
 f 	}}H$$66''%7,   	 	 	s   3AAc                     t        |d       t        |      5 }|j                  }|j                  dddk(  sJ 	 d d d        y # 1 sw Y   y xY w)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)r7   r?   rJ   project_urlsrt   s       r   	test_dictzTestMetadata.test_dict   s_    6	
 f 	}}H((66-   	 	 	s   !AAc                 H   t        |d      \  }}|j                  d      }|j                  d      j                  d       |j                  d      j                  d       |j                  d      }|j                  d      j                  d       |j                  d      j                  d       t	        |      5 }|j
                  j                  d	k(  sJ 	 d d d        |j                  d
       t	        |      5 }|j
                  j                  dk(  sJ 	 d d d        |j                  d       t	        |      5 }|j
                  j                  dk(  sJ 	 d d d        |j                  d       t	        |      5 }|j
                  j                  dk(  sJ 	 d d d        |j                  d       t	        |      5 }|j
                  j                  dk(  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   pxY w# 1 sw Y   y xY w)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
)r7   r    r!   r"   r?   rJ   rK   )rT   r0   r6   r5   sub_asub_br>   s          r   test_versionzTestMetadata.test_version  s   &H
V !!*-

=!''+

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

=!''+

8""A	
 f 	4==((G333	4 	MNf 	8==((K777	8 	OPf 	0==((C///	0 	VWf 	9==((L888	9 	VWf 	9==((L888	9 	9!	4 	4	8 	8	0 	0	9 	9	9 	9s<   =G'>G4?H  HH'G14G= H	HH!c                    t        |d       |j                  dd      j                  d       t        |      5 }|j                  j
                  dk(  sJ 	 d d d        |j                  dd      j                  d       t        j                  t              5  t        |      5 }|j                  j
                   d d d        d d d        y # 1 sw Y   wxY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nz4[metadata]
version = file: fake_package/version.txt
fake_packagezversion.txtz1.2.3
r   z1.2.3
4.5.6
)	r7   r!   r"   r?   rJ   rK   rA   rB   r   rw   s      r   test_version_filezTestMetadata.test_version_file#  s    QRNM288Cf 	4==((G333	4 	NM2889IJ]]/0 	&&! &T%%&	& 	&		4 	4
& &	& 	&s/   CC$$C;C$CC!	C$$C-c                     t        |dd       t        |      5 }|j                  j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)NzY[metadata]
version = attr: fake_package_simple.VERSION
[options]
package_dir =
    = src
zsrc/fake_package_simpler4   r   r7   r?   rJ   rK   rw   s      r   $test_version_with_package_dir_simplez1TestMetadata.test_version_with_package_dir_simple/  sP    
 3	
 f 	4==((G333	4 	4 	4   A  A	c                     t        |dd       t        |      5 }|j                  j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nzr[metadata]
version = attr: fake_package_rename.VERSION
[options]
package_dir =
    fake_package_rename = fake_dir
fake_dirr   r   r   rw   s      r   $test_version_with_package_dir_renamez1TestMetadata.test_version_with_package_dir_rename=  sP    3
 $	
 f 	4==((G333	4 	4 	4r   c                     t        |dd       t        |      5 }|j                  j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nzx[metadata]
version = attr: fake_package_complex.VERSION
[options]
package_dir =
    fake_package_complex = src/fake_dir
zsrc/fake_dirr   r   r   rw   s      r   %test_version_with_package_dir_complexz2TestMetadata.test_version_with_package_dir_complexK  sP    8
 (	
 f 	4==((G333	4 	4 	4r   c                     t        |d       t        |d      5 }|j                          d d d        y # 1 sw Y   y xY w)Nz+[metadata]
name = fake_name
unknown = some
Fr}   )r7   r?   r;   rw   s      r   test_unknown_meta_itemz#TestMetadata.test_unknown_meta_itemY  s:    IJfE* 	&d##%	& 	& 	&s   4=c                     t        |d       t        |d      5 }t        j                  t              5  |j                          d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nz[metadata.some]
key = val
Fr}   r7   r?   rA   rB   r   r;   rw   s      r   test_usupported_sectionz$TestMetadata.test_usupported_section^  sa    78fE* 	*d34 *'')*	* 	** *	* 	*"   A"AA"A	A""A+c                    t        g d      }t        |d      \  }}|j                  d      j                  d       t	        |      5 }t        |j
                  j                        |k(  sJ 	 d d d        |j                  d       t	        |      5 }t        |j
                  j                        |k(  sJ 	 d d d        y # 1 sw Y   TxY w# 1 sw Y   y xY w)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
)setr7   r!   r"   r?   rJ   r   )rT   r0   expectedrU   r5   r>   s         r   test_classifierszTestMetadata.test_classifiersd  s     
  V%TU	6M"((6	
 f 	>t}}001X===	> 	:	
 f 	>t}}001X===	> 	>	> 	>	> 	>s   %C%CC
Cc                     t        |d       t        j                  t        j                        5  t        |      5  	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nz%[metadata]
description = %(message)s
)r7   rA   rB   configparserInterpolationMissingOptionErrorr?   rY   s     r   test_interpolationzTestMetadata.test_interpolation  sY    BC]]<GGH 	&! 	 	 	 	s!   AAAA	AA$c                 b    t        |dd       t        |      5  	 d d d        y # 1 sw Y   y xY w)Nu$   [metadata]
description = éàïôñ
utf-8r3   r7   r?   rY   s     r   test_non_ascii_1zTestMetadata.test_non_ascii_1  s/    AGTf 		 	 	s   %.c                 ^    t        |d       t        |      5  	 d d d        y # 1 sw Y   y xY w)Nz
# -*- coding: invalid
r   rY   s     r   test_non_ascii_3zTestMetadata.test_non_ascii_3  s-    45f 		 	 	s   #,c                     t        |dd       t        |      5 }|j                  j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nu8   # -*- coding: utf-8
[metadata]
description = éàïôñ
r   r   u
   éàïôñ)r7   r?   rJ   rk   rw   s      r   test_non_ascii_4zTestMetadata.test_non_ascii_4  sL    I	

 f 	===,,<<<	= 	= 	=r   c                     t        |dd       t        j                  t              5  t	        |      5  	 ddd       ddd       y# 1 sw Y   xY w# 1 sw Y   yxY w)z=
        Config files encoded not in UTF-8 will fail
        uJ   # vim: set fileencoding=iso-8859-15 :
[metadata]
description = éàïôñ
ziso-8859-15r   N)r7   rA   rB   UnicodeDecodeErrorr?   rY   s     r   test_not_utf8zTestMetadata.test_not_utf8  s^     	["	

 ]]-. 	&! 	 	 	 	s!   AAAA	AA)	error_msgr5   invalidzCInvalid dash-separated key 'author-email' in 'metadata' (setup.cfg)z
                    [metadata]
                    author-email = test@test.com
                    maintainer_email = foo@foo.com
                    zauthor-emailrj   z6Invalid uppercase key 'Name' in 'metadata' (setup.cfg)z
                    [metadata]
                    Name = foo
                    description = Some description
                    Namers   c                    t        ||       t        j                  t        t	        j
                  |            5  t        |      j                         }d d d        |j                  d      j                          |j                         D ]@  \  }}|j                  dd      j                         }t        j                  |      |k(  r@J  y # 1 sw Y   |xY w)Nmatchr,   -rU   )r7   rA   warnsr   reescaper?   	__enter__r!   r^   itemsreplacelowergetattrrJ   )	rT   r0   r   r5   r   r>   fieldvalueattrs	            r   *test_invalid_options_previously_deprecatedz7TestMetadata.test_invalid_options_previously_deprecated  s    B 	 \\6bii	>RS 	0F#--/D	0 	K '')#MMO 	9LE5==c*002D4==$/588	9	0 	0s   CCN)r   r   r   rW   ru   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rA   markparametrizer   r   r   r   r   ra   ra   t   s    #@J4(*0( 9D
&444&
*><

= [[* V  1
 I 
	
69769r   ra   c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
ej                  j                  d	g d
      d        Zej                  j                  d	g d      d        Zej                  j                  d	g d      ej                  j!                  d      d               Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestOptionsc                 N   t        |d       t        j                  t        d      }|5  t	        |      5 }|j
                  sJ |j                  sJ |j                  dddk(  sJ |j                  ddgk(  sJ |j                  d	d
gk(  sJ |j                  ddgk(  sJ |j                  ddgk(  sJ |j                  g dk(  sJ |j                  g dk(  sJ |j                  dk(  sJ |j                  ddgk(  sJ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)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)r7   rA   r   r   r?   zip_safeinclude_package_datar6   packagesr   rQ   dependency_linksinstall_requiressetup_requirespython_requires
py_modulesrT   r0   deprecr>   s       r   rW   zTestOptions.test_basic  sC   .	
" :BVW 	=Xf% 	=== ,,,##E'<<<==X/?$@@@**w.@@@<<L,#???((().   (( .  
 && ,  
 ''>99??y)&<<<<-	= 	= 	= 	= 	= 	=s#   DCD>DD	DD$c                    t        |d       t        j                  t        d      }|5  t	        |      5 }|j
                  dddk(  sJ |j                  ddgk(  sJ |j                  d	d
gk(  sJ |j                  ddgk(  sJ |j                  ddgk(  sJ |j                  g dk(  sJ |j                  g dk(  sJ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)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   )r7   rA   r   r   r?   r6   r   r   rQ   r   r   r   r   s       r   r   zTestOptions.test_multiline   s   *	
< :BVW 	Xf% 	##E'<<<==X/?$@@@**w.@@@<<L,#???((().   (( .  
 && ,   	 	 	 	 	 	s#   CBC>CC	CC$c                     t        |d       t        |d      5 }t        j                  t              5  |j                          d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nz[options]
package_dir = a b
Fr}   r   rw   s      r   test_package_dir_failz!TestOptions.test_package_dir_fail4  sa    9:fE* 	*d34 *'')*	* 	** *	* 	*r   c                     t        |d       t        |      5 }|j                  ddgdgdk(  sJ |j                  ddgdgdk(  sJ 	 d d d        y # 1 sw Y   y xY w)	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)r7   r?   package_dataexclude_package_datarw   s      r   test_package_datazTestOptions.test_package_data:  s    		
 f 	$$g&!)   ,, +.!1   	 	 	s   /AAc                     t        |d       t        |      5 }|j                  dgk(  sJ 	 d d d        y # 1 sw Y   y xY w)N[options]
packages = find:
r   )r7   r?   r   rw   s      r   test_packageszTestOptions.test_packagesP  sA    89f 	5==^$4444	5 	5 	5s   5>c                    t        |d      \  }}t        d|       t        d|       t        |      5 }t        |j                        t        g d      k(  sJ 	 d d d        |j                  d       t        |      5 }|j                  dgk(  sJ 	 d d d        |j                  d       t        |      5 }t        |j                        t        dd	g      k(  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   axY w# 1 sw Y   y xY w)
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  r7   r)   r?   r   r   r"   rT   r0   r&   r5   r>   s        r   test_find_directivezTestOptions.test_find_directiveV  s   &v/NOVK0K0f 	t}}% . *   	 			
 f 	===%;$<<<<	= 	)	
 f 	Wt}}%n>T-U)VVVV	W 	W9	 	"	= 	=	W 	Ws#   &C&>C26&C>&C/2C;>Dc                    t        |d      \  }}t        d|       t        d|d       t        |      5 }t        |j                        h dk(  sJ 	 d d d        |j                  d       t        |      5 }|j                  dgk(  sJ 	 d d d        |j                  d	       t        |      5 }t        |j                        d
dhk(  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   XxY w# 1 sw Y   y xY w)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_directivez)TestOptions.test_find_namespace_directive{  s   &=
V 	K0KD9f 	t}}% *   	 			
 f 	===%;$<<<<	= 	)	
 f 	Rt}}%.:P)QQQQ	R 	R9	 	"	= 	=	R 	Rs#   C7C"/C.C"C+.C7c                     t        |d       t        |      5 }|j                  ddgddgdk(  sJ t        |j                  j
                        ddhk(  sJ 	 d d d        y # 1 sw Y   y xY w)	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restr  r  )r7   r?   extras_requirer   rJ   provides_extrasrw   s      r   test_extras_requirezTestOptions.test_extras_require  s    $	
 f 	I&&(%0(*;<+   t}}445%HHH	I 	I 	Is   ?A!!A*r5   )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                     t        ||       d}t        j                  t        |      5  t	        |      5 }	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wNzoOne of the parsed requirements in `(install_requires|extras_require.+)` looks like a valid environment marker.*r   )r7   rA   rB   r   r?   rT   r5   r0   r   rU   s        r   +test_raises_accidental_env_marker_misconfigz7TestOptions.test_raises_accidental_env_marker_misconfig  se     	 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                     t        ||       d}t        j                  t        |      5  t	        |      5 }	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wr  )r7   rA   r   r   r?   r  s        r   )test_warn_accidental_env_marker_misconfigz5TestOptions.test_warn_accidental_env_marker_misconfig  se     	 6 	 \\6eD 	&! Q	 	 	 	r  )
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                     t        ||       t        |      }t        |      5 }	 d d d        t        |      |k(  sJ y # 1 sw Y   xY w)N)r7   lenr?   )rT   r5   r0   recwarnnum_warningsrU   s         r   +test_nowarn_accidental_env_marker_misconfigz7TestOptions.test_nowarn_accidental_env_marker_misconfig  sM    " 	 7|f 		 7||+++	 	s	   >Ac                     t        |d       t        |      5 }|j                  dgdgdk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nz2[options.extras_require]
foo-a = foo
foo_b = test
rs   test)zfoo-afoo_b)r7   r?   r  rw   s      r   "test_dash_preserved_extras_requirez.TestOptions.test_dash_preserved_extras_require  sM    PQf 	P&&UGvh*OOOO	P 	P 	Ps	   9Ac                 \   t        |d      \  }}t        |      5 }|j                  ddgdgdk(  sJ 	 d d d        d}|j                  d      j	                  |       |j	                  d       t        |      5 }|j                  |k(  sJ 	 d d d        y # 1 sw Y   cxY w# 1 sw Y   y xY w)	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
)r7   r?   r*  r!   r"   )rT   r0   rU   r5   r>   r   s         r   test_entry_pointszTestOptions.test_entry_points  s    4
	6 f 	$$/= 88)   	K 	
 	N#))(3 	EFf 	1$$000	1 	1'	 	&	1 	1s   B:B"B"B+c                     t        |d       t        |      5 }|j                  ddgdgdk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nz[options.entry_points]
GROUP1 = point1 = pack.module:func, .point2 = pack.module2:func_rest [rest]
group2 = point3 = pack.module:func2
r%  r&  r'  )GROUP1r)  )r7   r?   r*  rw   s      r    test_case_sensitive_entry_pointsz,TestOptions.test_case_sensitive_entry_points  sc    4	
 f 	$$/= 88)   	 	 	s	   :Ac                     t        |d       t        |      5 }dddgfdddgfg}t        |j                        t        |      k(  sJ 	 d d d        y # 1 sw Y   y xY w)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)r7   r?   sorted
data_filesrT   r0   r>   r   s       r   test_data_fileszTestOptions.test_data_files,  sr    (	
 f 	?Z01)Y/0H $//*fX.>>>>	? 	? 	?s   0AAc                    t        |d       |j                  d      j                  d       |j                  d      j                  d       |j                  d      j                  d       |j                  d      j                  d       |j                  d      j                  d       |j                  d      j                  d       |j                  d	      j                  d       |j                  d
      j                  d       |j                  d      j                  d       t        |      5 }dddgfdg dfdg dfdg dfg}t	        |j
                        t	        |      k(  sJ 	 d d d        y # 1 sw Y   y xY w)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.dbr0  r1  r2  r3  )r9  r:  r;  icons)r<  r=  r>  audio)r?  r@  rA  )r7   r!   r"   r?   r4  r5  r6  s       r   test_data_files_globbyz"TestOptions.test_data_files_globby=  sO   	 	
 	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                     t        |t        d             t        |      5 }|j                          d d d        y # 1 sw Y   y xY w)NzE
            [options]
            python_requires=>=2.7
            r7   r   r?   r;   rw   s      r   test_python_requires_simplez'TestOptions.test_python_requires_simple`  G    	
 f 	&##%	& 	& 	&	   ;Ac                     t        |t        d             t        |      5 }|j                          d d d        y # 1 sw Y   y xY w)NzM
            [options]
            python_requires=>=2.7,!=3.0.*
            rF  rw   s      r   test_python_requires_compoundz)TestOptions.test_python_requires_compoundm  rH  rI  c                     t        |t        d             t        j                  t              5  t        |      5 }|j                          d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NzG
            [options]
            python_requires=invalid
            )r7   r   rA   rB   	Exceptionr?   r;   rw   s      r   test_python_requires_invalidz(TestOptions.test_python_requires_invalidz  sm    	
 ]]9% 	*&! *T'')*	* 	** *	* 	*s"   A)AA)A&	"A))A2c                    t        |d      }|j                  j                  dd       |j                  dd       d}t	        |t        j                  |             t        |      5 }|j                  d   }|j                  d	k(  sJ |j                  d
k(  sJ |j                  t        j                  |            sJ 	 d d d        y # 1 sw Y   y xY w)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_textr7   inspectcleandocr?   cmdclassr   r   samefilegetfile)rT   r0   module_pathr1   r>   rY  s         r   test_cmdclasszTestOptions.test_cmdclass  s    6#89   =R 	 	

	
 	)))45f 	C}}[1H$$33&&.88''(ABBB		C 	C 	Cs   )ACCc                 <   t        |t        d             |j                  d      j                  d       |j                  d      j                  d       t	        |      5 }|j
                  dgk(  sJ |j                  ddgik(  sJ 	 d d d        y # 1 sw Y   y xY w)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)r7   r   r!   r"   r?   r   r  rw   s      r   test_requirements_filez"TestOptions.test_requirements_file  s    
	
 	&'--.CD,-33J?f 	C((_,===&&8j\*BBBB	C 	C 	Cs   !'BBN)r   r   r   rW   r   r   r   r  r
  r  r  rA   r   r   r  r  filterwarningsr  r#  r+  r.  r7  rD  rG  rK  rN  r]  ra  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                   H    e Zd Zd Z ej
                  edd      d        Zy)TestExternalSettersc                 f    t        ||       d|j                  _        ddd|j                  _        y )Nrf   r   r   r   )saved_dist_initrJ   rl   r   )rT   r>   attrss      r   _fake_distribution_initz+TestExternalSetters._fake_distribution_init  s.    e$6F3 32&
"r   __init__T)autospecc                     | j                   |_        t        dddii      }|j                  j                  dk(  sJ |j                  j
                  dddk(  sJ y )	Nr   will_beignored)rg  rf   r   r   r   )rh  side_effectr
   rJ   rl   r   )rT   mock_parent_initr0   r>   s       r   test_external_settersz)TestExternalSetters.test_external_setters  sb    '+'C'C$>Iy3I"JK}}::>NNN}}))22.
 
 	
 
r   N)r   r   r   rh  r   objectr   rp  r   r   r   rd  rd    s*    
 U\\-d;	
 <	
r   rd  )F)Nasciir   )NT)&r   
contextlibrW  r   pathlibr   unittest.mockr   r   rA   packaging.requirementsr   setuptools.config.setupcfgr   r   r	   setuptools.distr
   r   setuptools.warningsr   textwrapr   distutils.errorsr   r   r   r)   r7   contextmanagerr?   rF   rH   ra   r   ri  rf  rd  r   r   r   <module>r}     s       	  %  5 P P 7 <  E}V, " FT2  ! !H]9 ]9@[C [C|  ((
 
r   