
    i                     z   d dl Z d dlZd dlZd dlZd dlmZ d dlmZ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j#        Z$ G d d          Z%dS )     N)Path)Mockpatch)InvalidRequirement)ConfigHandlerTargetread_configuration)Distribution_Distribution)SetuptoolsDeprecationWarning   )DALS)DistutilsFileErrorDistutilsOptionErrorc                       e Zd ZdZdZdS )ErrConfigHandlerz7Erroneous handler. Fails to implement required methods.z**err**N)__name__
__module____qualname____doc__section_prefix     ]/srv/django_bis/venv311/lib/python3.11/site-packages/setuptools/tests/config/test_setupcfg.pyr   r      s        AANNNr   r   Fc                     |}|                      d          D ]}|                    |          }d }|s*|                    d          }|                    d           ||fS )N/__init__.py )splitmkdirjoinwrite)namebase_dirnsdir_packagedir_name	init_files         r   make_package_dirr)      sr    KJJsOO 2 2!''11I $$]33		!!r   asciifake_packagec                 0   |d}|                      d                              |           |                      d          }|                    |                    |          d           t          ||           \  }}|                    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_envr9   %   s     <
KK
!!(+++[[%%F
LL!!(++$L777-lFCCKOO	   r   Tc              #      K   |pi }|                                  5  t          |          }d|_        |o|                                 |V  d d d            d S # 1 swxY w Y   d S )Nr-   )as_cwdr
   script_nameparse_config_files)r2   kwargs_initialparsedists       r   get_distrA   >   s      #)rN	  N++%+$))++


                 s   1AA Ac                      t          j        t                    5  t          d i dt	                                } | j         d d d            d S # 1 swxY w Y   d S )NF)pytestraisesNotImplementedErrorr   r   parsers)handlers    r   test_parsers_implementedrH   J   s    	*	+	+  "4UDFF;;                 s   &AAAc                        e Zd Zd Zd Zd ZdS )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 d S )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)r9   r	   strselfr2   _r7   config_dicts        r   
test_basicz"TestConfigurationReader.test_basicQ   s    -
 
	6 )V55:&y1X====:&z2uenDDDD9%i0Z4LLLLLLLr   c                     t          j        t                    5  t          t	          |                    d                               d d d            d S # 1 swxY w Y   d S )Nr.   )rC   rD   r   r	   rT   r!   rV   r2   s     r   test_no_configz&TestConfigurationReader.test_no_config`   s    ]-.. 	> 	>s6;;{#;#;<<===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>s   0AAAc                 n   t          |d          \  }}t          j        t                    5  t	          t          |                     d d d            n# 1 swxY w Y   t	          t          |          d          }|d         d         ddgk    sJ d|d         vsJ |                                 d S )	Nz<[metadata]
version = attr: none.VERSION
keywords = one, two
T)ignore_option_errorsrL   rO   rP   rQ   rM   )r9   rC   rD   ImportErrorr	   rT   removerU   s        r   test_ignore_errorsz*TestConfigurationReader.test_ignore_errorsd   s    M
 
	6 ];'' 	, 	,s6{{+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, )V4PPP:&z2uenDDDDJ 77777s   AAAN)r   r   r   rY   r\   ra   r   r   r   rJ   rJ   P   sD        M M M> > >    r   rJ   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j                            dd ed          ddifd ed          ddifg          d             ZdS ) TestMetadatac                    t          |d           |                    d                              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            d S # 1 swxY w Y   d S )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 LicenserN   zSome descriptiontext/somethingpackagezpackage.sub	fake_namerP   rQ   http://test.test.com/test/test@test.com)r9   r!   r"   rA   rL   rM   descriptionlong_description_content_typelong_descriptionprovidesrg   r#   rO   download_urlmaintainer_email)rV   r2   meta_initialr@   rL   s        r   rY   zTestMetadata.test_basicu   s   
1	
 	
 	
 	H##$<=== -

 fl++ 	@t}H#x////'+=====9=MMMMM,0HHHHH$M(BBBBB#'======K////$6666(,HHHHH,?????	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s   BC))C-0C-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            d S # 1 swxY w Y   d S )Nzr
            [metadata]
            name=foo
            version=0.0.1
            license=Apache 2.0
            fooz0.0.1z
Apache 2.0)r9   r   rA   rL   r#   rM   rg   rV   r2   r@   rL   s       r   test_license_cfgzTestMetadata.test_license_cfg   s     
	
 
	
 
	
 f 	4}H=E))))#w....#|33333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   /A**A.1A.c                 <   t          |d           |                    d                              d           |                    d                              d           t          |          5 }|j        j        dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nz=[metadata]
long_description = file: README.rst, CHANGES.rst

z
README.rstrf   zCHANGES.rstzchangelog contents
and stuffz2readme contents
line2
changelog contents
and stuff)r9   r!   r"   rA   rL   ro   rV   r2   r@   s      r   test_file_mixedzTestMetadata.test_file_mixed   s    N	
 	
 	

 	L!!''(@AAAM""(()HIIIf 	=1G    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   0BBBc                    |                     d           |                    dd          }|                     d           t          |d           t          |d          5 }t	          j        t                    5  |                                 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	Nre   depth1depth2T)dirz1[metadata]
long_description = file: ../../README
Fr?   )ensurer!   r9   rA   rC   rD   r   r=   )rV   r2   projectr@   s       r   test_file_sandboxedz TestMetadata.test_file_sandboxed   s8   h++h114   OPPPgU+++ 	*t344 * *'')))* * * * * * * * * * * * * * *	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s6   #B6=BB6B"	"B6%B"	&B66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            d S # 1 swxY w Y   d S )	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
rl   rk   zShort summaryabFramework :: Django%Programming Language :: Python :: 3.5)r9   rA   rL   author_emailurlrm   	platformsclassifiersrv   s       r   test_aliaseszTestMetadata.test_aliases   s   8
	
 
	
 
	
 f 		}H(O;;;;<#?????'?::::%#s3333'%7,     		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		s   AA;;A?A?c                     t          |d           t          |          5 }|j        }|j        ddgk    sJ |j        ddgk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nz[metadata]
name = fake_name
keywords =
  one
  two
classifiers =
  Framework :: Django
  Programming Language :: Python :: 3.5
rP   rQ   r   r   )r9   rA   rL   rO   r   rv   s       r   test_multilinezTestMetadata.test_multiline   s    8
	
 
	
 
	
 f 	}H$6666'%7,     	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   &AAAc                     t          |d           t          |          5 }|j        }|j        dddk    sJ 	 d d d            d S # 1 swxY w Y   d S )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)r9   rA   rL   project_urlsrv   s       r   	test_dictzTestMetadata.test_dict   s    6	
 	
 	
 f 	}H(66- -     	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA
A
c                    t          |d          \  }}|                    d          }|                    d                              d           |                    d                              d           |                    d          }|                    d                              d           |                    d                              d           t	          |          5 }|j        j        d	k    sJ 	 d d d            n# 1 swxY w Y   |                    d
           t	          |          5 }|j        j        dk    sJ 	 d d d            n# 1 swxY w Y   |                    d           t	          |          5 }|j        j        dk    sJ 	 d d d            n# 1 swxY w Y   |                    d           t	          |          5 }|j        j        dk    sJ 	 d d d            n# 1 swxY w Y   |                    d           t	          |          5 }|j        j        dk    sJ 	 d d d            d S # 1 swxY w Y   d S )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
)r9   r    r!   r"   rA   rL   rM   )rV   r2   r8   r7   sub_asub_br@   s          r   test_versionzTestMetadata.test_version  s   &H
 
V !!*--

=!!''+++

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

=!!''+++

8""A	
 	
 	
 f 	4=(G33333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	MNNNf 	8=(K77777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	OPPPf 	0=(C/////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	VWWWf 	9=(L88888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	VWWWf 	9=(L88888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9sZ   -DDD<EE #E F++F/2F/G::G>G>)I

IIc                    t          |d           |                    dd                              d           t          |          5 }|j        j        dk    sJ 	 d d d            n# 1 swxY w Y   |                    dd                              d           t          j        t                    5  t          |          5 }|j        j         d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nz4[metadata]
version = file: fake_package/version.txt
r+   zversion.txtz1.2.3
r   z1.2.3
4.5.6
)	r9   r!   r"   rA   rL   rM   rC   rD   r   ry   s      r   test_version_filezTestMetadata.test_version_file#  s   QRRRNM2288CCCf 	4=(G33333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	NM22889IJJJ]/00 	& 	&&!! &T%%& & & & & & & & & & & & & & &	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&sH   	A))A-0A-6C7CC7C#	#C7&C#	'C77C;>C;c                     t          |dd           t          |          5 }|j        j        dk    sJ 	 d d d            d S # 1 swxY w Y   d S )NzY[metadata]
version = attr: fake_package_simple.VERSION
[options]
package_dir =
    = src
zsrc/fake_package_simpler6   r   r9   rA   rL   rM   ry   s      r   $test_version_with_package_dir_simplez1TestMetadata.test_version_with_package_dir_simple/  s    
 3	
 	
 	
 	
 f 	4=(G33333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4   AA
Ac                     t          |dd           t          |          5 }|j        j        dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nzr[metadata]
version = attr: fake_package_rename.VERSION
[options]
package_dir =
    fake_package_rename = fake_dir
fake_dirr   r   r   ry   s      r   $test_version_with_package_dir_renamez1TestMetadata.test_version_with_package_dir_rename=  s    3
 $	
 	
 	
 	
 f 	4=(G33333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4r   c                     t          |dd           t          |          5 }|j        j        dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nzx[metadata]
version = attr: fake_package_complex.VERSION
[options]
package_dir =
    fake_package_complex = src/fake_dir
zsrc/fake_dirr   r   r   ry   s      r   %test_version_with_package_dir_complexz2TestMetadata.test_version_with_package_dir_complexK  s    8
 (	
 	
 	
 	
 f 	4=(G33333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4r   c                     t          |d           t          |d          5 }|                                 d d d            d S # 1 swxY w Y   d S )Nz+[metadata]
name = fake_name
unknown = some
Fr   )r9   rA   r=   ry   s      r   test_unknown_meta_itemz#TestMetadata.test_unknown_meta_itemY  s    IJJJfE*** 	&d##%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s   AAAc                    t          |d           t          |d          5 }t          j        t                    5  |                                 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nz[metadata.some]
key = val
Fr   r9   rA   rC   rD   r   r=   ry   s      r   test_usupported_sectionz$TestMetadata.test_usupported_section^  s    7888fE*** 	*d344 * *'')))* * * * * * * * * * * * * * *	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*4   A5AA5A!	!A5$A!	%A55A9<A9c                    t          g d          }t          |d          \  }}|                    d                              d           t	          |          5 }t          |j        j                  |k    sJ 	 d d d            n# 1 swxY w Y   |                    d           t	          |          5 }t          |j        j                  |k    sJ 	 d d d            d S # 1 swxY w Y   d S )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
)setr9   r!   r"   rA   rL   r   )rV   r2   expectedrW   r7   r@   s         r   test_classifierszTestMetadata.test_classifiersd  s    
 
 
   V%TUU	6M""((6	
 	
 	
 f 	>t}011X=====	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	:	
 	
 	
 f 	>t}011X=====	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>s$    B		BB8 C&&C*-C*c                     t          |d           t          j        t          j                  5  t          |          5  	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nz%[metadata]
description = %(message)s
)r9   rC   rD   configparserInterpolationMissingOptionErrorrA   r[   s     r   test_interpolationzTestMetadata.test_interpolation  s    BCCC]<GHH 	 	&!!                	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s4   A%AA%A	A%A	A%%A),A)c                 |    t          |dd           t          |          5  	 d d d            d S # 1 swxY w Y   d S )Nu$   [metadata]
description = éàïôñ
utf-8r5   r9   rA   r[   s     r   test_non_ascii_1zTestMetadata.test_non_ascii_1  s    AGTTTTf 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   155c                 x    t          |d           t          |          5  	 d d d            d S # 1 swxY w Y   d S )Nz
# -*- coding: invalid
r   r[   s     r   test_non_ascii_3zTestMetadata.test_non_ascii_3  s    4555f 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   /33c                     t          |dd           t          |          5 }|j        j        dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nu8   # -*- coding: utf-8
[metadata]
description = éàïôñ
r   r   u
   éàïôñ)r9   rA   rL   rm   ry   s      r   test_non_ascii_4zTestMetadata.test_non_ascii_4  s    I	
 	
 	
 	

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

 ]-.. 	 	&!!                	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s3   A"A
A"
A	A"A	A""A&)A&)	error_msgr7   invalidzCInvalid dash-separated key 'author-email' in 'metadata' (setup.cfg)z
                    [metadata]
                    author-email = test@test.com
                    maintainer_email = foo@foo.com
                    zauthor-emailrl   z6Invalid uppercase key 'Name' in 'metadata' (setup.cfg)z
                    [metadata]
                    Name = foo
                    description = Some description
                    Nameru   c                    t          ||           t          j        t          t	          j        |                    5  t          |                                          }d d d            n# 1 swxY w Y   |                    d          	                                 |
                                D ]H\  }}|                    dd                                          }t          |j        |          |k    sJ Id S )Nmatchr.   -rW   )r9   rC   warnsr   reescaperA   	__enter__r!   r`   itemsreplacelowergetattrrL   )	rV   r2   r   r7   r   r@   fieldvalueattrs	            r   *test_invalid_options_previously_deprecatedz7TestMetadata.test_invalid_options_previously_deprecated  s'   B 	   \6bi	>R>RSSS 	0 	0F##--//D	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	K  '')))#MMOO 	9 	9LE5==c**0022D4=$//588888	9 	9s   "A,,A03A0N)r   r   r   rY   rw   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rC   markparametrizer   r   r   r   r   rc   rc   t   s       #@ #@ #@J4 4 4(  * * *  0  (   9  9  9D
& 
& 
&4 4 44 4 44 4 4& & &
* * *> > ><    
  
= = =   [* V   1
 I  
	
 69 97 69 9 9r   rc   c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
ej                            d	g d
          d             Zej                            d	g d          d             Zej                            d	g d          ej                            d          d                         Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestOptionsc                    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            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )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)r9   rC   r   r   rA   zip_safeinclude_package_datar8   packagesr   rS   dependency_linksinstall_requiressetup_requirespython_requires
py_modulesrV   r2   deprecr@   s       r   rY   zTestOptions.test_basic  s+   .	
 	
 	
" :BVWWW 	= 	=Xf%% 	==  =,,,,#E'<'<<<<<=X/?$@@@@@*w.@@@@@<L,#?????(().     ( . . .    
 & , , ,    
 '>9999?y)&<<<<<<-	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s5   C<BC$C<$C(	(C<+C(	,C<<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            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )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   )r9   rC   r   r   rA   r8   r   r   rS   r   r   r   r   s       r   r   zTestOptions.test_multiline   s   *	
 	
 	
< :BVWWW 	 	Xf%% 	#E'<'<<<<<=X/?$@@@@@*w.@@@@@<L,#?????(().     ( . . .    
 & , , ,     	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5   CA+B6*C6B:	:C=B:	>CCCc                    t          |d           t          |d          5 }t          j        t                    5  |                                 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nz[options]
package_dir = a b
Fr   r   ry   s      r   test_package_dir_failz!TestOptions.test_package_dir_fail4  s    9:::fE*** 	*d34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            d S # 1 swxY w Y   d S )	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)r9   rA   package_dataexclude_package_datary   s      r   test_package_datazTestOptions.test_package_data:  s    		
 		
 		
 f 	$g&!) )     , +.!1 1     	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   'AAAc                     t          |d           t          |          5 }|j        dgk    sJ 	 d d d            d S # 1 swxY w Y   d S )N[options]
packages = find:
r+   )r9   rA   r   ry   s      r   test_packageszTestOptions.test_packagesP  s    8999f 	5=^$444444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   =AAc                 r   t          |d          \  }}t          d|           t          d|           t          |          5 }t          |j                  t          g d          k    sJ 	 d d d            n# 1 swxY w Y   |                    d           t          |          5 }|j        dgk    sJ 	 d d d            n# 1 swxY w Y   |                    d           t          |          5 }t          |j                  t          dd	g          k    sJ 	 d d d            d S # 1 swxY w Y   d S )
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  r9   r)   rA   r   r   r"   rV   r2   r&   r7   r@   s        r   test_find_directivezTestOptions.test_find_directiveV  s>   &v/NOOVK000K000f 	t}%% . . . * *     	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 			
 		
 		
 f 	==%;$<<<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	)	
 	
 	
 f 	Wt}%%n>T-U)V)VVVVVV	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	Ws6   *A::A>A>)CC	C	4*D,,D03D0c                 B   t          |d          \  }}t          d|           t          d|d           t          |          5 }t          |j                  h dk    sJ 	 d d d            n# 1 swxY w Y   |                    d           t          |          5 }|j        dgk    sJ 	 d d d            n# 1 swxY w Y   |                    d	           t          |          5 }t          |j                  d
dhk    sJ 	 d d d            d S # 1 swxY w Y   d S )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{  s6   &=
 
V 	K000KD9999f 	t}%% * * *     	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 			
 		
 		
 f 	==%;$<<<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	)	
 	
 	
 f 	Rt}%%.:P)QQQQQQ	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	Rs6   A//A36A3B::B>B>)DDD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            d S # 1 swxY w Y   d S )	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  )r9   rA   extras_requirer   rL   provides_extrasry   s      r   test_extras_requirezTestOptions.test_extras_require  s    $	
 	
 	
 f 	I&(%0(*;<+ +     t}455%HHHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	Is   6A$$A(+A(r7   )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            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S NzoOne of the parsed requirements in `(install_requires|extras_require.+)` looks like a valid environment marker.*r   )r9   rC   rD   r   rA   rV   r7   r2   r   rW   s        r   +test_raises_accidental_env_marker_misconfigz7TestOptions.test_raises_accidental_env_marker_misconfig  s     	   6 	 ]-U;;; 	 	&!! Q              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	4   A$A A$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            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S r  )r9   rC   r   r   rA   r  s        r   )test_warn_accidental_env_marker_misconfigz5TestOptions.test_warn_accidental_env_marker_misconfig  s     	   6 	 \6eDD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            n# 1 swxY w Y   t          |          |k    sJ d S )N)r9   lenrA   )rV   r7   r2   recwarnnum_warningsrW   s         r   +test_nowarn_accidental_env_marker_misconfigz7TestOptions.test_nowarn_accidental_env_marker_misconfig  s    " 	   7||f 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 7|||++++++s   =AAc                     t          |d           t          |          5 }|j        dgdgdk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nz2[options.extras_require]
foo-a = foo
foo_b = test
ru   test)zfoo-afoo_b)r9   rA   r  ry   s      r   "test_dash_preserved_extras_requirez.TestOptions.test_dash_preserved_extras_require  s    PQQQf 	P&UGvh*O*OOOOOO	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	Ps   AAAc                    t          |d          \  }}t          |          5 }|j        ddgdgdk    sJ 	 d d d            n# 1 swxY w Y   d}|                    d                              |           |                    d           t          |          5 }|j        |k    sJ 	 d d d            d S # 1 swxY w Y   d S )	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
)r9   rA   r+  r!   r"   )rV   r2   rW   r7   r@   r   s         r   test_entry_pointszTestOptions.test_entry_points  s   4
 
	6 f 	$/= 88) )     	 	 	 	 	 	 	 	 	 	 	 	 	 	 	K 	
 	N##))(333 	EFFFf 	1$00000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s#   AAAB99B= B=c                     t          |d           t          |          5 }|j        ddgdgdk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nz[options.entry_points]
GROUP1 = point1 = pack.module:func, .point2 = pack.module2:func_rest [rest]
group2 = point3 = pack.module:func2
r&  r'  r(  )GROUP1r*  )r9   rA   r+  ry   s      r    test_case_sensitive_entry_pointsz,TestOptions.test_case_sensitive_entry_points  s    4	
 	
 	
 f 	$/= 88) )     	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA	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            d S # 1 swxY w Y   d S )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)r9   rA   sorted
data_filesrV   r2   r@   r   s       r   test_data_fileszTestOptions.test_data_files,  s    (	
 	
 	
 f 	?Z01)Y/0H $/**fX.>.>>>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s   4A""A&)A&c                    t          |d           |                    d                              d           |                    d                              d           |                    d                              d           |                    d                              d           |                    d                              d           |                    d                              d           |                    d	                              d           |                    d
                              d           |                    d                              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            d S # 1 swxY w Y   d S )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.dbr1  r2  r3  r4  )r:  r;  r<  icons)r=  r>  r?  audio)r@  rA  rB  )r9   r!   r"   rA   r5  r6  r7  s       r   test_data_files_globbyz"TestOptions.test_data_files_globby=  s   	 	
 	
 	
 	G""2&&&G""2&&&G""2&&&G""2&&&G""2&&&G""2&&&J%%b)))J%%b)))K  &&r***f 	?Z0144455556???@	H $/**fX.>.>>>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s   >GGGc                     t          |t          d                     t          |          5 }|                                 d d d            d S # 1 swxY w Y   d S )NzE
            [options]
            python_requires=>=2.7
            r9   r   rA   r=   ry   s      r   test_python_requires_simplez'TestOptions.test_python_requires_simple`       	
 	
 	
 f 	&##%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&   AAAc                     t          |t          d                     t          |          5 }|                                 d d d            d S # 1 swxY w Y   d S )NzM
            [options]
            python_requires=>=2.7,!=3.0.*
            rG  ry   s      r   test_python_requires_compoundz)TestOptions.test_python_requires_compoundm  rI  rJ  c                    t          |t          d                     t          j        t                    5  t          |          5 }|                                 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NzG
            [options]
            python_requires=invalid
            )r9   r   rC   rD   	ExceptionrA   r=   ry   s      r   test_python_requires_invalidz(TestOptions.test_python_requires_invalidz  s    	
 	
 	
 ]9%% 	* 	*&!! *T'')))* * * * * * * * * * * * * * *	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s5   B A(B (A,	,B /A,	0B  BBc                    t          |d          }|j                            dd           |                    dd           d}t	          |t          j        |                     t          |          5 }|j        d         }|j	        d	k    sJ |j
        d
k    sJ |                    t          j        |                    sJ 	 d d d            d S # 1 swxY w Y   d S )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_textr9   inspectcleandocrA   cmdclassr   r   samefilegetfile)rV   r2   module_pathr3   r@   rZ  s         r   test_cmdclasszTestOptions.test_cmdclass  sR   6#899   ===R 	 	
 	
 	

	
 	))44555f 	C}[1H$3333&.8888''(A(ABBBBBB		C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs   7ACCCc                 n   t          |t          d                     |                    d                              d           |                    d                              d           t	          |          5 }|j        dgk    sJ |j        ddgik    sJ 	 d d d            d S # 1 swxY w Y   d S )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)r9   r   r!   r"   rA   r   r  ry   s      r   test_requirements_filez"TestOptions.test_requirements_file  s%    
	
 
	
 
	
 	&''--.CDDD,--33J???f 	C(_,=====&8j\*BBBBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs   =B**B.1B.N)r   r   r   rY   r   r   r   r  r  r  r  rC   r   r   r  r  filterwarningsr   r$  r,  r/  r8  rE  rH  rL  rO  r^  rb  r   r   r   r   r     s        )= )= )=V2 2 2h* * *  ,5 5 5#W #W #WJ%R %R %RNI I I" [		
 		
 		
    [	
 	
 	
    [	
 	
 	
  [ PQQ, , RQ  ,P P P1 1 1>  $? ? ?"!? !? !?F& & && & &* * *C C C*C C C C Cr   r   c                   L    e Zd Zd Z ej        edd          d             ZdS )TestExternalSettersc                 \    t          ||           d|j        _        ddd|j        _        d S )Nrh   r   r   r   )saved_dist_initrL   rn   r   )rV   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 d S )	Nr   will_beignored)rh  rh   r   r   r   )ri  side_effectr
   rL   rn   r   )rV   mock_parent_initr2   r@   s       r   test_external_settersz)TestExternalSetters.test_external_setters  su    '+'C$>Iy3I"JKKK}:>NNNNN})22.
 .
 
 
 
 
 
 
r   N)r   r   r   ri  r   objectr   rq  r   r   r   re  re    sR        
 
 
 U\-d;;;	
 	
 <;	
 	
 	
r   re  )F)Nr*   r+   )NT)&r   
contextlibrX  r   pathlibr   unittest.mockr   r   rC   packaging.requirementsr   setuptools.config.setupcfgr   r   r	   setuptools.distr
   r   setuptools.warningsr   textwrapr   distutils.errorsr   r   r   r)   r9   contextmanagerrA   rH   rJ   rc   r   rj  rg  re  r   r   r   <module>r}     sF            				       % % % % % % % %  5 5 5 5 5 5 P P P P P P P P P P 7 7 7 7 7 7 7 7 < < < < < <       E E E E E E E E    }V,   " " " " FT   2      ! ! ! ! ! ! ! !H]9 ]9 ]9 ]9 ]9 ]9 ]9 ]9@[C [C [C [C [C [C [C [C|  (
 
 
 
 
 
 
 
 
 
r   