
    ~pi                        d dl 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 dej6                  v 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jL                  Z' G d d      Z(y)    N)Path)Mockpatch)InvalidRequirement)ConfigHandlerTargetread_configuration)Distribution_Distribution)SetuptoolsDeprecationWarning   )DALS)DistutilsFileErrorDistutilsOptionError__pypy__c                       e Zd ZdZdZy)ErrConfigHandlerz7Erroneous handler. Fails to implement required methods.z**err**N)__name__
__module____qualname____doc__section_prefix     g/opt/services/ai/voice_agent/venv/lib/python3.12/site-packages/setuptools/tests/config/test_setupcfg.pyr   r      s
    ANr   r   c                     |}| j                  d      D ]  }|j                  |      } d }|s"|j                  d      }|j                  d       ||fS )N/__init__.py )splitmkdirjoinwrite)namebase_dirnsdir_packagedir_name	init_files         r   make_package_dirr*      s]    KJJsO 2!''12I$$]3		!!r   c                     |d}| j                  d      j                  |       | j                  d      }|j                  |j                  |      d       t        ||       \  }}|j                  d       ||fS )Nz%from setuptools import setup
setup()
setup.py	setup.cfgwb)modezWVERSION = (1, 2, 3)

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

)r"   r#   encoder*   )tmpdir	setup_cfgsetup_pyencodingpackage_pathconfigpackage_dirr)   s           r   fake_envr8   (   s~     <
KK
!!(+[[%F
LL!!(+$L7-lFCKOO	 r   c              #      K   |xs i }| j                         5  t        |      }d|_        |xr |j                          | d d d        y # 1 sw Y   y xY ww)Nr,   )as_cwdr
   script_nameparse_config_files)r1   kwargs_initialparsedists       r   get_distr@   A   sV     #)rN	 N+%+$))+
  s   A+A	AAAc                      t        j                  t              5  t        d i dt	                     } | j
                   d d d        y # 1 sw Y   y xY w)NF)pytestraisesNotImplementedErrorr   r   parsers)handlers    r   test_parsers_implementedrG   M   s=    	*	+ "4UDF;  s   #AAc                       e Zd Zd Zd Zd Zy)TestConfigurationReaderc                     t        |d      \  }}t        t        |            }|d   d   dk(  sJ |d   d   ddgk(  sJ |d   d	   d
dgk(  sJ y )NzX[metadata]
version = 10.1.1
keywords = one, two

[options]
scripts = bin/a.py, bin/b.py
metadataversion10.1.1keywordsonetwooptionsscriptszbin/a.pyzbin/b.py)r8   r	   strselfr1   _r6   config_dicts        r   
test_basicz"TestConfigurationReader.test_basicT   sy    -
	6 )V5:&y1X===:&z2uenDDD9%i0Z4LLLLr   c                     t        j                  t              5  t        t	        |j                  d                   d d d        y # 1 sw Y   y xY w)Nr-   )rB   rC   r   r	   rS   r"   rU   r1   s     r   test_no_configz&TestConfigurationReader.test_no_configc   s:    ]]-. 	>s6;;{#;<=	> 	> 	>s   $AAc                 "   t        |d      \  }}t        j                  t              5  t	        t        |             d d d        t	        t        |      d      }|d   d   ddgk(  sJ d|d   vsJ |j                          y # 1 sw Y   HxY w)	Nz<[metadata]
version = attr: none.VERSION
keywords = one, two
T)ignore_option_errorsrK   rN   rO   rP   rL   )r8   rB   rC   ImportErrorr	   rS   removerT   s        r   test_ignore_errorsz*TestConfigurationReader.test_ignore_errorsg   s    M
	6 ]];' 	,s6{+	, )V4P:&z2uenDDDJ 7777	, 	,s   BBN)r   r   r   rX   r[   r`   r   r   r   rI   rI   S   s    M>r   rI   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej0                  j3                  dd ed      ddifd ed      ddifg      d        Zy) TestMetadatac                    t        |d       |j                  d      j                  d       ddi}t        ||      5 }|j                  }|j
                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  d	d
gk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  ddgk(  sJ |j                  dk(  sJ |j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Na-  [metadata]
version = 10.1.1
description = Some description
long_description_content_type = text/something
long_description = file: README
name = fake_name
keywords = one, two
provides = package, package.sub
license = otherlic
download_url = http://test.test.com/test/
maintainer_email = test@test.com
READMEreadme contents
line2licensezBSD 3-Clause LicenserM   zSome descriptiontext/somethingpackagezpackage.sub	fake_namerO   rP   http://test.test.com/test/test@test.com)r8   r"   r#   r@   rK   rL   descriptionlong_description_content_typelong_descriptionprovidesrf   r$   rN   download_urlmaintainer_email)rU   r1   meta_initialr?   rK   s        r   rX   zTestMetadata.test_basicx   s?   
1	
 	H##$<= -

 fl+ 	@t}}H##x///''+====99=MMMM,,0HHHH$$M(BBBB##'======K///$$666((,HHHH,,???	@ 	@ 	@s   B;DDc                     t        |t        d             t        |      5 }|j                  }|j                  dk(  sJ |j
                  dk(  sJ |j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nzr
            [metadata]
            name=foo
            version=0.0.1
            license=Apache 2.0
            fooz0.0.1z
Apache 2.0)r8   r   r@   rK   r$   rL   rf   rU   r1   r?   rK   s       r   test_license_cfgzTestMetadata.test_license_cfg   s~    
	
 f 	4}}H==E)))##w...##|333	4 	4 	4s   A A++A4c                    t        |d       |j                  d      j                  d       |j                  d      j                  d       t        |      5 }|j                  j
                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nz=[metadata]
long_description = file: README.rst, CHANGES.rst

z
README.rstre   zCHANGES.rstzchangelog contents
and stuffz2readme contents
line2
changelog contents
and stuff)r8   r"   r#   r@   rK   rn   rU   r1   r?   s      r   test_file_mixedzTestMetadata.test_file_mixed   s    N	

 	L!''(@AM"(()HIf 	==11G  	 	 	s   A>>Bc                 F   |j                  d       |j                  dd      }|j                  d       t        |d       t        |d      5 }t	        j
                  t              5  |j                          d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)	Nrd   depth1depth2T)dirz1[metadata]
long_description = file: ../../README
Fr>   )ensurer"   r8   r@   rB   rC   r   r<   )rU   r1   projectr?   s       r   test_file_sandboxedz TestMetadata.test_file_sandboxed   s    h++h14 OPgU+ 	*t34 *'')*	* 	** *	* 	*s$   B)B:BB	BB c                 (   t        |d       t        |      5 }|j                  }|j                  dk(  sJ |j                  dk(  sJ |j
                  dk(  sJ |j                  ddgk(  sJ |j                  ddgk(  sJ 	 d d d        y # 1 sw Y   y xY w)	Nz[metadata]
author_email = test@test.com
home_page = http://test.test.com/test/
summary = Short summary
platform = a, b
classifier =
  Framework :: Django
  Programming Language :: Python :: 3.5
rk   rj   zShort summaryabFramework :: Django%Programming Language :: Python :: 3.5)r8   r@   rK   author_emailurlrl   	platformsclassifiersru   s       r   test_aliaseszTestMetadata.test_aliases   s    8
	
 f 		}}H((O;;;<<#????''?:::%%#s333''%7,   		 		 		s   A&BBc                     t        |d       t        |      5 }|j                  }|j                  ddgk(  sJ |j                  ddgk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nz[metadata]
name = fake_name
keywords =
  one
  two
classifiers =
  Framework :: Django
  Programming Language :: Python :: 3.5
rO   rP   r   r   )r8   r@   rK   rN   r   ru   s       r   test_multilinezTestMetadata.test_multiline   sw    8
	
 f 	}}H$$666''%7,   	 	 	s   3AAc                     t        |d       t        |      5 }|j                  }|j                  dddk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nzf[metadata]
project_urls =
  Link One = https://example.com/one/
  Link Two = https://example.com/two/
https://example.com/one/https://example.com/two/zLink OnezLink Two)r8   r@   rK   project_urlsru   s       r   	test_dictzTestMetadata.test_dict   s_    6	
 f 	}}H((66-   	 	 	s   !AAc                 H   t        |d      \  }}|j                  d      }|j                  d      j                  d       |j                  d      j                  d       |j                  d      }|j                  d      j                  d       |j                  d      j                  d       t	        |      5 }|j
                  j                  d	k(  sJ 	 d d d        |j                  d
       t	        |      5 }|j
                  j                  dk(  sJ 	 d d d        |j                  d       t	        |      5 }|j
                  j                  dk(  sJ 	 d d d        |j                  d       t	        |      5 }|j
                  j                  dk(  sJ 	 d d d        |j                  d       t	        |      5 }|j
                  j                  dk(  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   pxY w# 1 sw Y   y xY w)Nz0[metadata]
version = attr: fake_package.VERSION
subpkg_ar   r   zmod.pyzVERSION = (2016, 11, 26)subpkg_bz2import third_party_module
VERSION = (2016, 11, 26)1.2.3z4[metadata]
version = attr: fake_package.get_version
z	3.4.5.devz6[metadata]
version = attr: fake_package.VERSION_MAJOR
1z=[metadata]
version = attr: fake_package.subpkg_a.mod.VERSION
z
2016.11.26z=[metadata]
version = attr: fake_package.subpkg_b.mod.VERSION
)r8   r!   r"   r#   r@   rK   rL   )rU   r1   r7   r6   sub_asub_br?   s          r   test_versionzTestMetadata.test_version  s   &H
V !!*-

=!''+

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

=!''+

8""A	
 f 	4==((G333	4 	MNf 	8==((K777	8 	OPf 	0==((C///	0 	VWf 	9==((L888	9 	VWf 	9==((L888	9 	9!	4 	4	8 	8	0 	0	9 	9	9 	9s<   =G'>G4?H  HH'G14G= H	HH!c                    t        |d       |j                  dd      j                  d       t        |      5 }|j                  j
                  dk(  sJ 	 d d d        |j                  dd      j                  d       t        j                  t              5  t        |      5 }|j                  j
                   d d d        d d d        y # 1 sw Y   wxY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nz4[metadata]
version = file: fake_package/version.txt
fake_packagezversion.txtz1.2.3
r   z1.2.3
4.5.6
)	r8   r"   r#   r@   rK   rL   rB   rC   r   rx   s      r   test_version_filezTestMetadata.test_version_file&  s    QRNM288Cf 	4==((G333	4 	NM2889IJ]]/0 	&&! &T%%&	& 	&		4 	4
& &	& 	&s/   CC$$C;C$CC!	C$$C-c                     t        |dd       t        |      5 }|j                  j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)NzY[metadata]
version = attr: fake_package_simple.VERSION
[options]
package_dir =
    = src
zsrc/fake_package_simpler5   r   r8   r@   rK   rL   rx   s      r   $test_version_with_package_dir_simplez1TestMetadata.test_version_with_package_dir_simple2  sP    
 3	
 f 	4==((G333	4 	4 	4   A  A	c                     t        |dd       t        |      5 }|j                  j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nzr[metadata]
version = attr: fake_package_rename.VERSION
[options]
package_dir =
    fake_package_rename = fake_dir
fake_dirr   r   r   rx   s      r   $test_version_with_package_dir_renamez1TestMetadata.test_version_with_package_dir_rename@  sP    3
 $	
 f 	4==((G333	4 	4 	4r   c                     t        |dd       t        |      5 }|j                  j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nzx[metadata]
version = attr: fake_package_complex.VERSION
[options]
package_dir =
    fake_package_complex = src/fake_dir
zsrc/fake_dirr   r   r   rx   s      r   %test_version_with_package_dir_complexz2TestMetadata.test_version_with_package_dir_complexN  sP    8
 (	
 f 	4==((G333	4 	4 	4r   c                     t        |d       t        |d      5 }|j                          d d d        y # 1 sw Y   y xY w)Nz+[metadata]
name = fake_name
unknown = some
Fr~   )r8   r@   r<   rx   s      r   test_unknown_meta_itemz#TestMetadata.test_unknown_meta_item\  s:    IJfE* 	&d##%	& 	& 	&s   4=c                     t        |d       t        |d      5 }t        j                  t              5  |j                          d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nz[metadata.some]
key = val
Fr~   r8   r@   rB   rC   r   r<   rx   s      r   test_usupported_sectionz$TestMetadata.test_usupported_sectiona  sa    78fE* 	*d34 *'')*	* 	** *	* 	*"   A"AA"A	A""A+c                    t        g d      }t        |d      \  }}|j                  d      j                  d       t	        |      5 }t        |j
                  j                        |k(  sJ 	 d d d        |j                  d       t	        |      5 }t        |j
                  j                        |k(  sJ 	 d d d        y # 1 sw Y   TxY w# 1 sw Y   y xY w)N)r   z#Programming Language :: Python :: 3r   z+[metadata]
classifiers = file: classifiers
r   z^Framework :: Django
Programming Language :: Python :: 3
Programming Language :: Python :: 3.5
z[metadata]
classifiers =
    Framework :: Django
    Programming Language :: Python :: 3
    Programming Language :: Python :: 3.5
)setr8   r"   r#   r@   rK   r   )rU   r1   expectedrV   r6   r?   s         r   test_classifierszTestMetadata.test_classifiersg  s     
  V%TU	6M"((6	
 f 	>t}}001X===	> 	:	
 f 	>t}}001X===	> 	>	> 	>	> 	>s   %C%CC
Cc                     t        |d       t        j                  t        j                        5  t        |      5  	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nz%[metadata]
description = %(message)s
)r8   rB   rC   configparserInterpolationMissingOptionErrorr@   rZ   s     r   test_interpolationzTestMetadata.test_interpolation  sY    BC]]<GGH 	&! 	 	 	 	s!   AAAA	AA$c                 b    t        |dd       t        |      5  	 d d d        y # 1 sw Y   y xY w)Nu$   [metadata]
description = éàïôñ
utf-8r4   r8   r@   rZ   s     r   test_non_ascii_1zTestMetadata.test_non_ascii_1  s/    AGTf 		 	 	s   %.c                 ^    t        |d       t        |      5  	 d d d        y # 1 sw Y   y xY w)Nz
# -*- coding: invalid
r   rZ   s     r   test_non_ascii_3zTestMetadata.test_non_ascii_3  s-    45f 		 	 	s   #,c                     t        |dd       t        |      5 }|j                  j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nu8   # -*- coding: utf-8
[metadata]
description = éàïôñ
r   r   u
   éàïôñ)r8   r@   rK   rl   rx   s      r   test_non_ascii_4zTestMetadata.test_non_ascii_4  sL    I	

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

 ]]-. 	&! 	 	 	 	s!   AAAA	AA)	error_msgr6   invalidzCInvalid dash-separated key 'author-email' in 'metadata' (setup.cfg)z
                    [metadata]
                    author-email = test@test.com
                    maintainer_email = foo@foo.com
                    zauthor-emailrk   z6Invalid uppercase key 'Name' in 'metadata' (setup.cfg)z
                    [metadata]
                    Name = foo
                    description = Some description
                    Namert   c                    t        ||       t        j                  t        t	        j
                  |            5  t        |      j                         }d d d        |j                  d      j                          |j                         D ]@  \  }}|j                  dd      j                         }t        j                  |      |k(  r@J  y # 1 sw Y   |xY w)Nmatchr-   -rV   )r8   rB   warnsr   reescaper@   	__enter__r"   r_   itemsreplacelowergetattrrK   )	rU   r1   r   r6   r   r?   fieldvalueattrs	            r   *test_invalid_options_previously_deprecatedz7TestMetadata.test_invalid_options_previously_deprecated  s    B 	 \\6bii	>RS 	0F#--/D	0 	K '')#MMO 	9LE5==c*002D4==$/5888	9	0 	0s   CCN)r   r   r   rX   rv   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rB   markparametrizer   r   r   r   r   rb   rb   w   s    #@J4(*0( 9D
&444&
*><

= [[* V  1
 I 
	
69769r   rb   c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
ej                  j                  d	g d
      ej                  j                  ed      d               Zej                  j                  d	g d      ej                  j                  ed      d               Zej                  j                  d	g d      ej                  j%                  d      d               Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestOptionsc                 N   t        |d       t        j                  t        d      }|5  t	        |      5 }|j
                  sJ |j                  sJ |j                  dddk(  sJ |j                  ddgk(  sJ |j                  d	d
gk(  sJ |j                  ddgk(  sJ |j                  ddgk(  sJ |j                  g dk(  sJ |j                  g dk(  sJ |j                  dk(  sJ |j                  ddgk(  sJ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Na  [options]
zip_safe = True
include_package_data = yes
package_dir = b=c, =src
packages = pack_a, pack_b.subpack
namespace_packages = pack1, pack2
scripts = bin/one.py, bin/two.py
eager_resources = bin/one.py, bin/two.py
install_requires = docutils>=0.3; pack ==1.1, ==1.3; hey
setup_requires = docutils>=0.3; spack ==1.1, ==1.3; there
dependency_links = http://some.com/here/1, http://some.com/there/2
python_requires = >=1.0, !=2.8
py_modules = module1, module2
namespace_packagesr   srccr   r   pack_apack_b.subpackpack1pack2
bin/one.py
bin/two.pyhttp://some.com/here/1http://some.com/there/2docutils>=0.3pack==1.1,==1.3heyr   zspack ==1.1, ==1.3therez>=1.0, !=2.8module1module2)r8   rB   r   r   r@   zip_safeinclude_package_datar7   packagesr   rR   dependency_linksinstall_requiressetup_requirespython_requires
py_modulesrU   r1   deprecr?   s       r   rX   zTestOptions.test_basic  sf   .	
" :BVW 	=Xf% 	=== =,,,,##E'<<<<==X/?$@@@@**w.@@@@<<L,#????((().    (( .   
 && ,   
 ''>999??y)&<<<<-	= 	= 	= 	= 	= 	=s#   DCD>DD	DD$c                    t        |d       t        j                  t        d      }|5  t	        |      5 }|j
                  dddk(  sJ |j                  ddgk(  sJ |j                  d	d
gk(  sJ |j                  ddgk(  sJ |j                  ddgk(  sJ |j                  g dk(  sJ |j                  g dk(  sJ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Na  [options]
package_dir = 
  b=c
  =src
packages = 
  pack_a
  pack_b.subpack
namespace_packages = 
  pack1
  pack2
scripts = 
  bin/one.py
  bin/two.py
eager_resources = 
  bin/one.py
  bin/two.py
install_requires = 
  docutils>=0.3
  pack ==1.1, ==1.3
  hey
setup_requires = 
  docutils>=0.3
  spack ==1.1, ==1.3
  there
dependency_links = 
  http://some.com/here/1
  http://some.com/there/2
r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r8   rB   r   r   r@   r7   r   r   rR   r   r   r   r   s       r   r   zTestOptions.test_multiline  s   *	
< :BVW 	Xf% 	##E'<<<<==X/?$@@@@**w.@@@@<<L,#????((().    (( .   
 && ,   	 	 	 	 	 	s#   CBC>CC	CC$c                     t        |d       t        |d      5 }t        j                  t              5  |j                          d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nz[options]
package_dir = a b
Fr~   r   rx   s      r   test_package_dir_failz!TestOptions.test_package_dir_fail7  sa    9:fE* 	*d34 *'')*	* 	** *	* 	*r   c                     t        |d       t        |      5 }|j                  ddgdgdk(  sJ |j                  ddgdgdk(  sJ 	 d d d        y # 1 sw Y   y xY w)	Nz}[options.package_data]
* = *.txt, *.rst
hello = *.msg

[options.exclude_package_data]
* = fake1.txt, fake2.txt
hello = *.dat
z*.txtz*.rstz*.msg)r   helloz	fake1.txtz	fake2.txtz*.dat)r8   r@   package_dataexclude_package_datarx   s      r   test_package_datazTestOptions.test_package_data=  s    		
 f 	$$g&!)    ,, +.!1   	 	 	s   /AAc                     t        |d       t        |      5 }|j                  dgk(  sJ 	 d d d        y # 1 sw Y   y xY w)N[options]
packages = find:
r   )r8   r@   r   rx   s      r   test_packageszTestOptions.test_packagesS  sA    89f 	5==^$4444	5 	5 	5s   5>c                    t        |d      \  }}t        d|       t        d|       t        |      5 }t        |j                        t        g d      k(  sJ 	 d d d        |j                  d       t        |      5 }|j                  dgk(  sJ 	 d d d        |j                  d       t        |      5 }t        |j                        t        dd	g      k(  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   axY w# 1 sw Y   y xY w)
Nr  sub_onesub_two)r   fake_package.sub_twofake_package.sub_onezi[options]
packages = find:

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

[options.packages.find]
exclude =
    fake_package.sub_one
r   r  r8   r*   r@   r   r   r#   rU   r1   r'   r6   r?   s        r   test_find_directivezTestOptions.test_find_directiveY  s   &v/NOVK0K0f 	t}}% . *   	 			
 f 	===%;$<<<<	= 	)	
 f 	Wt}}%n>T-U)VVVV	W 	W9	 	"	= 	=	W 	Ws#   &C&>C26&C>&C/2C;>Dc                    t        |d      \  }}t        d|       t        d|d       t        |      5 }t        |j                        h dk(  sJ 	 d d d        |j                  d       t        |      5 }|j                  dgk(  sJ 	 d d d        |j                  d	       t        |      5 }t        |j                        d
dhk(  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   XxY w# 1 sw Y   y xY w)Nz%[options]
packages = find_namespace:
r  r  T)r&   >   r   r  r  zs[options]
packages = find_namespace:

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

[options.packages.find]
exclude =
    fake_package.sub_one
r   r  r	  r
  s        r   test_find_namespace_directivez)TestOptions.test_find_namespace_directive~  s   &=
V 	K0KD9f 	t}}% *   	 			
 f 	===%;$<<<<	= 	)	
 f 	Rt}}%.:P)QQQQ	R 	R9	 	"	= 	=	R 	Rs#   C7C"/C.C"C+.C7c                     t        |d       t        |      5 }|j                  ddgddgdk(  sJ t        |j                  j
                        ddhk(  sJ 	 d d d        y # 1 sw Y   y xY w)	Nz_[options.extras_require]
pdf = ReportLab>=1.2; RXP
rest = 
  docutils>=0.3
  pack ==1.1, ==1.3
zReportLab>=1.2RXPr   r   )pdfrestr  r  )r8   r@   extras_requirer   rK   provides_extrasrx   s      r   test_extras_requirezTestOptions.test_extras_require  s    $	
 f 	I&&(%0(*;<+    t}}445%HHH	I 	I 	Is   ?A!!A*r6   )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'
zExceptions missing on PyPy)reasonc                     t        ||       d}t        j                  t        |      5  t	        |      5 }	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wNzoOne of the parsed requirements in `(install_requires|extras_require.+)` looks like a valid environment marker.*r   )r8   rB   rC   r   r@   rU   r6   r1   r   rV   s        r   +test_raises_accidental_env_marker_misconfigz7TestOptions.test_raises_accidental_env_marker_misconfig  se      	 6 	 ]]-U; 	&! Q	 	 	 	!   AA	A	A	AA)z3[options.extras_require]
foo = bar;python_version<3z4[options.extras_require]
foo = bar;python_version<3
z1[options]
install_requires = bar;python_version<3z2[options]
install_requires = bar;python_version<3
z&Warnings missing on PyPy (minor issue)c                     t        ||       d}t        j                  t        |      5  t	        |      5 }	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wr  )r8   rB   r   r   r@   r  s        r   )test_warn_accidental_env_marker_misconfigz5TestOptions.test_warn_accidental_env_marker_misconfig  se     	 6 	 \\6eD 	&! Q	 	 	 	r  )
z9[options.extras_require]
foo =
    bar;python_version<'3'z4[options.extras_require]
foo = bar;baz
boo = xxx;yyyz:[options.extras_require]
foo =
    bar;python_version<'3'
z5[options.extras_require]
foo = bar;baz
boo = xxx;yyy
z<[options.extras_require]
foo =
    bar
    python_version<3
z7[options]
install_requires =
    bar;python_version<'3'z2[options]
install_requires = bar;baz
boo = xxx;yyyz8[options]
install_requires =
    bar;python_version<'3'
z3[options]
install_requires = bar;baz
boo = xxx;yyy
z:[options]
install_requires =
    bar
    python_version<3
z.error::setuptools.SetuptoolsDeprecationWarningc                     t        ||       t        |      }t        |      5 }	 d d d        t        |      |k(  sJ y # 1 sw Y   xY w)N)r8   lenr@   )rU   r6   r1   recwarnnum_warningsrV   s         r   +test_nowarn_accidental_env_marker_misconfigz7TestOptions.test_nowarn_accidental_env_marker_misconfig  sM    " 	 7|f 		 7||+++	 	s	   >Ac                     t        |d       t        |      5 }|j                  dgdgdk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nz2[options.extras_require]
foo-a = foo
foo_b = test
rt   test)zfoo-afoo_b)r8   r@   r  rx   s      r   "test_dash_preserved_extras_requirez.TestOptions.test_dash_preserved_extras_require  sM    PQf 	P&&UGvh*OOOO	P 	P 	Ps	   9Ac                 \   t        |d      \  }}t        |      5 }|j                  ddgdgdk(  sJ 	 d d d        d}|j                  d      j	                  |       |j	                  d       t        |      5 }|j                  |k(  sJ 	 d d d        y # 1 sw Y   cxY w# 1 sw Y   y xY w)	Nz[options.entry_points]
group1 = point1 = pack.module:func, .point2 = pack.module2:func_rest [rest]
group2 = point3 = pack.module:func2
point1 = pack.module:func'.point2 = pack.module2:func_rest [rest]point3 = pack.module:func2)group1group2zN[blogtool.parsers]
.rst = some.nested.module:SomeClass.some_classmethod[reST]
entry_pointsz,[options]
entry_points = file: entry_points
)r8   r@   r,  r"   r#   )rU   r1   rV   r6   r?   r   s         r   test_entry_pointszTestOptions.test_entry_points  s    4
	6 f 	$$/= 88)   	K 	
 	N#))(3 	EFf 	1$$000	1 	1'	 	&	1 	1s   B:B"B"B+c                     t        |d       t        |      5 }|j                  ddgdgdk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nz[options.entry_points]
GROUP1 = point1 = pack.module:func, .point2 = pack.module2:func_rest [rest]
group2 = point3 = pack.module:func2
r'  r(  r)  )GROUP1r+  )r8   r@   r,  rx   s      r    test_case_sensitive_entry_pointsz,TestOptions.test_case_sensitive_entry_points!  sc    4	
 f 	$$/= 88)   	 	 	s	   :Ac                     t        |d       t        |      5 }dddgfdddgfg}t        |j                        t        |      k(  sJ 	 d d d        y # 1 sw Y   y xY w)NzQ[options.data_files]
cfg =
      a/b.conf
      c/d.conf
data = e/f.dat, g/h.dat
cfga/b.confc/d.confdataze/f.datzg/h.dat)r8   r@   sorted
data_filesrU   r1   r?   r   s       r   test_data_fileszTestOptions.test_data_files3  sr    (	
 f 	?Z01)Y/0H $//*fX.>>>>	? 	? 	?s   0AAc                    t        |d       |j                  d      j                  d       |j                  d      j                  d       |j                  d      j                  d       |j                  d      j                  d       |j                  d      j                  d       |j                  d      j                  d       |j                  d	      j                  d       |j                  d
      j                  d       |j                  d      j                  d       t        |      5 }dddgfdg dfdg dfdg dfg}t	        |j
                        t	        |      k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nz[options.data_files]
cfg =
      a/b.conf
      c/d.conf
data = *.dat
icons = 
      *.ico
audio = 
      *.wav
      sounds.db
a.datr   b.datc.data.icob.icoc.icobeep.wavboop.wav	sounds.dbr2  r3  r4  r5  )r;  r<  r=  icons)r>  r?  r@  audio)rA  rB  rC  )r8   r"   r#   r@   r6  r7  r8  s       r   test_data_files_globbyz"TestOptions.test_data_files_globbyD  sO   	 	
 	G""2&G""2&G""2&G""2&G""2&G""2&J%%b)J%%b)K &&r*f 	?Z014556?@	H $//*fX.>>>>	? 	? 	?s   8:E<<Fc                     t        |t        d             t        |      5 }|j                          d d d        y # 1 sw Y   y xY w)NzE
            [options]
            python_requires=>=2.7
            r8   r   r@   r<   rx   s      r   test_python_requires_simplez'TestOptions.test_python_requires_simpleg  G    	
 f 	&##%	& 	& 	&	   ;Ac                     t        |t        d             t        |      5 }|j                          d d d        y # 1 sw Y   y xY w)NzM
            [options]
            python_requires=>=2.7,!=3.0.*
            rH  rx   s      r   test_python_requires_compoundz)TestOptions.test_python_requires_compoundt  rJ  rK  c                     t        |t        d             t        j                  t              5  t        |      5 }|j                          d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NzG
            [options]
            python_requires=invalid
            )r8   r   rB   rC   	Exceptionr@   r<   rx   s      r   test_python_requires_invalidz(TestOptions.test_python_requires_invalid  sm    	
 ]]9% 	*&! *T'')*	* 	** *	* 	*s"   A)AA)A&	"A))A2c                    t        |d      }|j                  j                  dd       |j                  dd       d}t	        |t        j                  |             t        |      5 }|j                  d   }|j                  d	k(  sJ |j                  d
k(  sJ |j                  t        j                  |            sJ 	 d d d        y # 1 sw Y   y xY w)Nzsrc/custom_build.pyT)parentsexist_okzBfrom distutils.core import Command
class CustomCmd(Command): pass
r   r   zi
            [options]
            cmdclass =
                customcmd = custom_build.CustomCmd
        	customcmd	CustomCmdcustom_build)r   parentr!   
write_textr8   inspectcleandocr@   cmdclassr   r   samefilegetfile)rU   r1   module_pathr2   r?   r[  s         r   test_cmdclasszTestOptions.test_cmdclass  s    6#89   =R 	 	

	
 	)))45f 	C}}[1H$$333&&.888''(ABBB		C 	C 	Cs   )ACCc                 <   t        |t        d             |j                  d      j                  d       |j                  d      j                  d       t	        |      5 }|j
                  dgk(  sJ |j                  ddgik(  sJ 	 d d d        y # 1 sw Y   y xY w)Nz
            [options]
            install_requires = file:requirements.txt
            [options.extras_require]
            colors = file:requirements-extra.txt
            zrequirements.txtz
docutils>=0.3

zrequirements-extra.txtcoloramar   colors)r8   r   r"   r#   r@   r   r  rx   s      r   test_requirements_filez"TestOptions.test_requirements_file  s    
	
 	&'--.CD,-33J?f 	C((_,====&&8j\*BBBB	C 	C 	Cs   !'BBN)r   r   r   rX   r   r   r   r  r  r  r  rB   r   r   xfailIS_PYPYr  r  filterwarningsr!  r%  r-  r0  r9  rF  rI  rM  rP  r_  rc  r   r   r   r   r     sC   )=V2h*,5#WJ%RNI" [[		
 [[w'CD E [[	
 [[w'OP Q [[	
 [[ PQ, R ,P1>$?"!?F&&*C*Cr   r   c                   H    e Zd Zd Z ej
                  edd      d        Zy)TestExternalSettersc                 f    t        ||       d|j                  _        ddd|j                  _        y )Nrg   r   r   r   )saved_dist_initrK   rm   r   )rU   r?   attrss      r   _fake_distribution_initz+TestExternalSetters._fake_distribution_init  s.    e$6F3 32&
"r   __init__T)autospecc                     | j                   |_        t        dddii      }|j                  j                  dk(  sJ |j                  j
                  dddk(  sJ y )	Nr   will_beignored)rk  rg   r   r   r   )rl  side_effectr
   rK   rm   r   )rU   mock_parent_initr1   r?   s       r   test_external_settersz)TestExternalSetters.test_external_setters  se    '+'C'C$>Iy3I"JK}}::>NNNN}}))22.
 
 	
 
r   N)r   r   r   rl  r   objectr   rt  r   r   r   rh  rh    s*    
 U\\-d;	
 <	
r   rh  )F)Nasciir   )NT))r   
contextlibrY  r   syspathlibr   unittest.mockr   r   rB   packaging.requirementsr   setuptools.config.setupcfgr   r   r	   setuptools.distr
   r   setuptools.warningsr   textwrapr   distutils.errorsr   r   builtin_module_namesre  r   r*   r8   contextmanagerr@   rG   rI   rb   r   rm  rj  rh  r   r   r   <module>r     s       	 
  %  5 P P 7 <  E
00
0}V, " FT2  ! !H]9 ]9@_C _CD  ((
 
r   