
    ϶vg                     r   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     b/var/www/pixelcanvas.ch/venv/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   I   s    	*	+	+  "4UDFF;;                    &AAAc                        e Zd Zd Zd Zd ZdS )TestConfigurationReaderc                     t          |d          \  }}t          d|z            }|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
%smetadataversion10.1.1keywordsonetwooptionsscriptszbin/a.pyzbin/b.py)r9   r	   selfr2   _r7   config_dicts        r   
test_basicz"TestConfigurationReader.test_basicP   s    -
 
	6 )77:&y1X====:&z2uenDDDD9%i0Z4LLLLLLLr   c                     t          j        t                    5  t          d|                    d          z             d d d            d S # 1 swxY w Y   d S )NrM   r.   )rC   rD   r   r	   r!   rW   r2   s     r   test_no_configz&TestConfigurationReader.test_no_config_   s    ]-.. 	@ 	@tfkk+&>&>>???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@rI   c                 F   t          |d          \  }}t          j        t                    5  t	          d|z             d d d            n# 1 swxY w Y   t	          d|z  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
rM   T)ignore_option_errorsrN   rQ   rR   rS   rO   )r9   rC   rD   ImportErrorr	   removerV   s        r   test_ignore_errorsz*TestConfigurationReader.test_ignore_errorsc   s    M
 
	6 ];'' 	. 	.tf}---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. )TRRR:&z2uenDDDDJ 77777s   AAAN)r   r   r   rZ   r]   rb   r   r   r   rK   rK   O   sG        M M M@ @ @    r   rK   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d Z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 LicenserP   Some descriptiontext/somethingpackagezpackage.sub	fake_namerR   rS   http://test.test.com/test/test@test.com)r9   r!   r"   rA   rN   rO   descriptionlong_description_content_typelong_descriptionprovidesrh   r#   rQ   download_urlmaintainer_email)rW   r2   meta_initialr@   rN   s        r   rZ   zTestMetadata.test_basict   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   rN   r#   rO   rh   rW   r2   r@   rN   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.rstrg   zCHANGES.rstzchangelog contents
and stuffz2readme contents
line2
changelog contents
and stuff)r9   r!   r"   rA   rN   rq   rW   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 )	Nrf   depth1depth2T)dirz1[metadata]
long_description = file: ../../README
Fr?   )ensurer!   r9   rA   rC   rD   r   r=   )rW   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
rn   rm   zShort summaryabFramework :: Django%Programming Language :: Python :: 3.5)r9   rA   rN   author_emailurlro   	platformsclassifiersrx   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
rR   rS   r   r   )r9   rA   rN   rQ   r   rx   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   rN   project_urlsrx   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   rN   rO   )rW   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   rN   rO   rC   rD   r   r{   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   rN   rO   r{   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   r{   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   r{   s      r   %test_version_with_package_dir_complexz2TestMetadata.test_version_with_package_dir_complexJ  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=   r{   s      r   test_unknown_meta_itemz#TestMetadata.test_unknown_meta_itemX  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=   r{   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   rN   r   )rW   r2   expectedrX   r7   r@   s         r   test_classifierszTestMetadata.test_classifiersc  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   rN   ro   r{   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&c                     t          |d           d}t          j        t          |          5  t	          |          5 }|j        }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |j        dk    sJ |j        dk    sJ d S )NzG[metadata]
author-email = test@test.com
maintainer_email = foo@foo.com
z<Usage of dash-separated 'author-email' will not be supportedmatchrn   zfoo@foo.com)r9   rC   warnsr   rA   rN   r   rt   rW   r2   msgr@   rN   s        r   test_warn_dash_deprecationz'TestMetadata.test_warn_dash_deprecation  s(    	/	
 	
 	
 M\6cBBB 	) 	)&!! )T=) ) ) ) ) ) ) ) ) ) ) ) ) ) )	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) $7777(M9999994   A)AA)A	A)A	A))A-0A-c                     t          |d           d}t          j        t          |          5  t	          |          5 }|j        }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |j        dk    sJ |j        dk    sJ d S )Nz5[metadata]
Name = foo
description = Some description
zAUsage of uppercase key 'Name' in 'metadata' will not be supportedr   rw   ri   )r9   rC   r   r   rA   rN   r#   ro   r   s        r   test_make_option_lowercasez'TestMetadata.test_make_option_lowercase  s    	STTTQ\6cBBB 	) 	)&!! )T=) ) ) ) ) ) ) ) ) ) ) ) ) ) )	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) }%%%%#'9999999r   N)r   r   r   rZ   ry   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rd   rd   s   sc       #@ #@ #@J4 4 4(  * * *  0  (   9  9  9D
& 
& 
&4 4 44 4 44 4 4& & &
* * *> > ><    
  
= = =  : : :"
: 
: 
: 
: 
:r   rd   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   rU   dependency_linksinstall_requiressetup_requirespython_requires
py_modulesrW   r2   deprecr@   s       r   rZ   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   rU   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   r{   s      r   test_package_dir_failz!TestOptions.test_package_dir_fail%  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_datar{   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   r{   s      r   test_packageszTestOptions.test_packagesA  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"   rW   r2   r&   r7   r@   s        r   test_find_directivezTestOptions.test_find_directiveG  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_directivel  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   rN   provides_extrasr{   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   rW   r7   r2   r   rX   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   )rW   r7   r2   recwarnnum_warningsrX   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
rw   test)zfoo-afoo_b)r9   rA   r	  r{   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"   )rW   r2   rX   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"  r{   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rW   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.dbr(  r)  r*  r+  )r1  r2  r3  icons)r4  r5  r6  audio)r7  r8  r9  )r9   r!   r"   rA   r,  r-  r.  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=   r{   s      r   test_python_requires_simplez'TestOptions.test_python_requires_simpleQ       	
 	
 	
 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.*
            r>  r{   s      r   test_python_requires_compoundz)TestOptions.test_python_requires_compound^  r@  rA  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=   r{   s      r   test_python_requires_invalidz(TestOptions.test_python_requires_invalidk  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)rW   r2   module_pathr3   r@   rQ  s         r   test_cmdclasszTestOptions.test_cmdclassy  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	  r{   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   rZ   r   r   r   r   r  r  r  rC   markparametrizer  r  filterwarningsr  r  r#  r&  r/  r<  r?  rC  rF  rU  rY  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 )Nrj   r   r   r   )saved_dist_initrN   rp   r   )rW   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)ra  rj   r   r   r   )rb  side_effectr
   rN   rp   r   )rW   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   rb  r   objectr   rj  r   r   r   r^  r^    sR        
 
 
 U\-d;;;	
 	
 <;	
 	
 	
r   r^  )F)Nr*   r+   )NT)%r   
contextlibrO  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   rK   rd   r   rc  r`  r^  r   r   r   <module>rv     s=                  % % % % % % % %  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O: O: O: O: O: O: O: O:d
[C [C [C [C [C [C [C [C|  (
 
 
 
 
 
 
 
 
 
r   