
    hY                        d Z ddlZddlZddlZddlZddlZddlZddlZ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 ddlZddlZddlmc mZ ddlmZmZ ddlmZ ddlmZ ddlmZ d	d
lmZ ddl Z! ejD                  d      d        Z# G d d      Z$ ed      Z% G d d      Z&ejN                  jQ                  d       G d d             Z)ejD                  d        Z*ejN                  jW                  d      ejN                  jW                  d       G d d                    Z,d Z-d Z.d Z/d Z0dd e-ddd!fd"Z1ejN                  je                  ejf                  ji                  d#      xr  ejj                  ejl                        d$%       G d& d'             Z7 G d( d)      Z8 G d* d+      Z9 G d, d-e      Z:d. Z;y)/zEasy install Tests    N)
NamedTuple)mock)Distributionnormalize_path)
safer_name)PthDistributions)r      )DALST)autousec                 (    | j                  dd       y)z
    Important: Disable the default index for pip to avoid
    querying packages in the index and potentially resolving
    and installing packages there.
    PIP_NO_INDEXtrueN)setenv)monkeypatchs    ]/var/www/html/backend/venv/lib/python3.12/site-packages/setuptools/tests/test_easy_install.pypip_disable_indexr       s     ~v.    c                       e Zd Zd Zd Zy)FakeDistc                     |dk7  ri S ddiS )Nconsole_scriptsnameep )selfgroups     r   get_entry_mapzFakeDist.get_entry_map+   s    %%I~r   c                      y)Nspecr   r   s    r   as_requirementzFakeDist.as_requirement0   s    r   N)__name__
__module____qualname__r   r!   r   r   r   r   r   *   s    
r   r   z3
    from setuptools import setup

    setup()
    c                       e Zd Zd Zd Zd Zd Zd Zej                  d        Z
ej                  d        Zej                  d        Zy	)
TestEasyInstallTestc                    t         j                  j                         j                         j	                         }t               }t        t         j                  j                  |            }t        j                  |d      \  }}|j                  |      sJ d|v sJ d|v sJ d|v sJ t        j                  d|t        j                        sJ y )N   z'spec'z'console_scripts'z'name'z^# EASY-INSTALL-ENTRY-SCRIPT)flags)eiCommandSpecbestfrom_environment	as_headerr   nextScriptWriterget_args	itertoolsislice
startswithresearch	MULTILINE)r   headerdistargs_namescripts         r   test_get_script_argsz(TestEasyInstallTest.test_get_script_args>   s    $$&779CCEzBOO,,T23!((q1v  (((6!!!"f,,,6!!!yy7r||TTTr   c                    t               }t        j                  |      }d |_        d|_        ddg|_        t        j                  j                  t        j                         d      |_        dg|_        |j                          |j                  j                  i k(  sJ t        j                  |      }d |_        ddg|_        t        j                  j                  t        j                         d      |_        dg|_        |j                          t!        |j                  j                  j#                               }|ddgk(  sJ y )Nc                       yNTr   r   r   r   <lambda>z8TestEasyInstallTest.test_no_find_links.<locals>.<lambda>N       r   Tlink1link2okc                       yr@   r   r   r   r   rA   z8TestEasyInstallTest.test_no_find_links.<locals>.<lambda>X   rB   r   )r   r*   easy_installcheck_pth_processingno_find_links
find_linksospathjointempfilemkdtempinstall_dirr:   ensure_finalizedpackage_indexscanned_urlssortedkeys)r   r9   cmdrU   s       r   test_no_find_linksz&TestEasyInstallTest.test_no_find_linksI   s    ~ood##/  !7+'',,x'7'7'94@6  --333 ood##/ !7+'',,x'7'7'94@6c''4499;<))))r   c                    t               }t        j                  |      }t        j                         |_        t        j                  t        j                  j                        5  |j                          ddd       y# 1 sw Y   yxY w)zS
        Test that `cant_write_to_target` is rendered as a DistutilsError.
        N)r   r*   rG   rK   getcwdrP   pytestraises	distutilserrorsDistutilsErrorcant_write_to_target)r   r9   rV   s      r   test_write_exceptionz(TestEasyInstallTest.test_write_exception`   s_     ~ood#))+]]9++::; 	'$$&	' 	' 	's   &B  B	c                     t        d      fd}|j                  t        d|d       t        j                         v sJ y)zh
        get_site_dirs should always return site dirs reported by
        site.getsitepackages.
        z/setuptools/test/site-packagesc                  
     gS Nr   )rL   s   r   mock_gspz8TestEasyInstallTest.test_all_site_dirs.<locals>.mock_gspq   s
    6Mr   getsitepackagesFraisingN)r   setattrsiter*   get_site_dirs)r   r   rd   rL   s      @r   test_all_site_dirsz&TestEasyInstallTest.test_all_site_dirsj   sF    
 >?	 	D"3XuMr''))))r   c                 `    |j                  t        dd       t        j                         sJ y )Nre   Frf   )delattrri   r*   rj   )r   r   s     r   0test_all_site_dirs_works_without_getsitepackageszDTestEasyInstallTest.test_all_site_dirs_works_without_getsitepackagesw   s*    D"3UC!!!r   c                     dt        d      fddg}d}||z  }t        j                  t        |      d      }|D ]  \  }}|j	                  ||        |j                          t        |      S )Nsetup.pya5  
                    import setuptools
                    setuptools.setup(
                        name="setuptools-test-unicode",
                        version="1.0",
                        packages=["mypkg"],
                        include_package_data=True,
                    )
                    zmypkg/__init__.py )u   mypkg/☃.txtrr   zsetuptools-test-unicode-1.0.zipw)r
   zipfileZipFilestrwritestrcloser   tmpdirfiles
sdist_namesdist	sdist_zipfilenamecontents           r   sdist_unicodez!TestEasyInstallTest.sdist_unicode{   s     
'
0 7
# OOCJ4	!& 	2Hgx1	25zr   c                    dt        d      fddt        d      fg}d}||z  }t        j                  t        |      d      }|D ]&  \  }}|j	                  ||j                  d             ( |j                          t        |      S )	Nrp   ar  
                    import setuptools
                    setuptools.setup(
                        name="setuptools-test-unicode",
                        version="1.0",
                        packages=["mypkg"],
                        include_package_data=True,
                        scripts=['mypkg/unicode_in_script'],
                    )
                    rq   zmypkg/unicode_in_scriptu   
                    #!/bin/sh
                    # á

                    non_python_fn() {
                    }
                z&setuptools-test-unicode-script-1.0.ziprs   utf-8)r
   rt   ru   rv   rw   encoderx   ry   s           r   sdist_unicode_in_scriptz+TestEasyInstallTest.sdist_unicode_in_script   s     	 &)#
< >
# OOCJ4	!& 	BHgx)@A	B5zr   c                 r    dt        d      fdt        d      fg}d}t        ||z        }t        ||       |S )Nrp   a  
                    import setuptools
                    setuptools.setup(
                        name="setuptools-test-script",
                        version="1.0",
                        scripts=["mypkg_script"],
                    )
                    mypkg_scriptzg
                     #/usr/bin/python
                     print('mypkg_script')
                     zsetuptools-test-script-1.0.zip)r
   rv   
make_sdist)r   rz   r{   r|   r}   s        r   sdist_scriptz TestEasyInstallTest.sdist_script   s\     	 
0 6
FZ'(5% r   N)r"   r#   r$   r=   rW   r`   rk   rn   rZ   fixturer   r   r   r   r   r   r&   r&   =   sf    	U*.'*" ^^! !F ^^' 'R ^^ r   r&   zignore:Unbuilt eggc                       e Zd Zd Zd Zd Zy)TestPTHFileWriterc                     t        dt        j                         g      }|j                  rJ |j	                  t        t        j                                      |j                  sJ y)zba pth file manager should set dirty
        if a distribution is in site but also the cwd
        does-not_existN)r   rK   rY   dirtyaddPRDistribution)r   pths     r   !test_add_from_cwd_site_sets_dirtyz3TestPTHFileWriter.test_add_from_cwd_site_sets_dirty   sH     /"))+?99}ryy{+,yyyr   c                     d}t        j                  |      }t        d|g      }|j                  rJ |j	                  t        |             |j                  rJ y )Nz%/test/location/does-not-have-to-existr   )pkg_resourcesr   r   r   r   r   )r   locationr   s      r   test_add_from_site_is_ignoredz/TestPTHFileWriter.test_add_from_site_is_ignored   sY    : //9
 99}x()99}9r   c                    |j                  d      }|j                          t        |j                  d            }t        |      }t        |      }|j                  |j                  cxk(  rg k(  sJ d        J d       |j                  d      }|j                          t        |      }|j                  j                  |       |j                          |j                  sJ d       ||j                  vsJ d       |j                          ||j                  v sJ d       |j                  d   |k(  sJ d	       t        |      j                  |j                  k(  sJ d
       y)z
        If the pth file is modified under the hood, then PthDistribution
        will refresh its content before saving, merging contents when
        necessary.
        
pth_subdirz	file1.pthz6unless there would be some default added at some point
src_subdirzEthe new_src_path added must still be present/valid in pth1 after savez:right before we save the entry should still not be presentzJthe new_src_path entry should have been added by pth2 with its save() callzVand it should match exactly on the last entry actually given we append to it in save()zXand we should have the exact same list at the end with a fresh PthDistributions instanceN)rM   mkdirrv   r   pathsappendsave)r   rz   r   pth_pathpth1pth2new_src_pathnew_src_path_strs           r   *test_many_pth_distributions_merge_togetherz<TestPTHFileWriter.test_many_pth_distributions_merge_together  sg    [[.
z{34))zzTZZ-2- 	
D	
- 	
D	
-
 {{<0|,

*+		zz 	
S	
z  tzz1 	
H	
1 			4::- 	
X	
- zz"~- 	
.	
-
  )//4::= 	
5	
=r   N)r"   r#   r$   r   r   r   r   r   r   r   r      s    )
r   r   c              #      K   | dz  j                  dd      5 }|j                  t               d d d        | j                         5  |  d d d        y # 1 sw Y   'xY w# 1 sw Y   y xY ww)Nrp   rs   r   encoding)openwriteSETUP_PYas_cwd)rz   fs     r   setup_contextr   .  sh     
:
	#	#C'	#	: a		    s3   A-AA-A!	A-AA-!A*&A-user_overrider   c                   l   e Zd Z ej                  d ej
                               Z ej                  dej                         ej                  dd      ed                      Z	 ej                  dd      ed               Z
ed        Zd	 Zej                  d
        Zej                  d        Zd Zy)TestUserInstallTestz;setuptools.command.easy_install.easy_install.check_site_dirz(setuptools.command.easy_install.__file__site.ENABLE_USER_SITETc                 $    | j                          y rc   assert_not_user_siter    s    r   /test_user_install_not_implied_user_site_enabledzCTestUserInstallTest.test_user_install_not_implied_user_site_enabledB  s     	!!#r   Fc                 $    | j                          y rc   r   r    s    r   0test_user_install_not_implied_user_site_disabledzDTestUserInstallTest.test_user_install_not_implied_user_site_disabledH  s     	!!#r   c                      t               } d| _        t        j                  |       }dg|_        |j                          |j                  rJ d       y )Nrp   pyzuser should not be implied)r   script_namer*   rG   r:   rQ   user)r9   rV   s     r   r   z(TestUserInstallTest.assert_not_user_siteM  sJ     ~%ood#688999|8r   c                     t        j                  d       t        j                  d      }t        j                  t        j
                  t        j                         |j                  d       y )Nmultiprocessingtest_easy_install)levelstreamzthis should not break)	rZ   importorskiplogging	getLoggerbasicConfigINFOsysstderrinfo)r   logs     r   test_multiproc_atexitz)TestUserInstallTest.test_multiproc_atexitW  sG    -. 34',,szzB()r   c                     |dz  }|j                  d      5 }|j                  d       d d d        t        |      S # 1 sw Y   t        |      S xY w)Nzfoo-1.0.egg-infors   z
Name: foo
)r   r   rv   )r   rz   egg_filer   s       r   foo_packagezTestUserInstallTest.foo_package^  sK    ..]]3 	#1GGM"	#6{	#6{s	   <Ac              #     K   t        |      }t        j                  dt        j                  |gz         5  t
        j                  j                  j                  t        j                        }t        j                  j                  t
        j                  |      5  | d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY ww)Nzsys.path)
PYTHONPATH)
rv   r   patchr   rL   rK   pathseprM   dictenviron)r   rz   targetpython_paths       r   install_targetz"TestUserInstallTest.install_targete  s     VZZ
CHHx$78 	''//..sxx8KD 	 	 	 	s5   4CA'B?B3"B?*	C3B<	8B??CCc                    t               }d|_        t        j                  |      }||_        dg|_        |j                          |j                  j                  |g       |j                  d      }t        j                  j                  t        j                  j                  |j                              }t        j                  j                  t        j                  j                  |            }||k(  sJ y)zd
        The local index must be used when easy_install locates installed
        packages.
        rp   fooN)r   r   r*   rG   rP   r:   rQ   local_indexscanrK   rL   normcaserealpathr   )r   r   r   r9   rV   resactualexpecteds           r   test_local_indexz$TestUserInstallTest.test_local_indexm  s    
 ~%ood#(7k]+u%!!"''"2"23<<"@A77##BGG$4$4[$AB!!!r   N)r"   r#   r$   r   r   Mockprev_sp_writeri   	USER_SITEr   r   staticmethodr   r   rZ   r   r   r   r   r   r   r   r   r   6  s     DJJE		M TZZ:DNNKTZZ'.$  / L$ TZZ'/$  0$ : :* ^^  ^^ "r   r   c                 D    t        | dt        d|d|d      fdg       y)z\
    Create a simple sdist tarball at dist_path, containing just a simple
    setup.py.
    rp   zT             import setuptools
             setuptools.setup(
                 name=z,
                 version=z
             )
         	setup.cfgrr   N)r   r
   )	dist_pathdistnameversions      r   make_trivial_sdistr     sK        l #! %
	 	
r   c                    d|v sJ |j                  d      }|d   }t        dt        |      dz         D cg c]  }dj                  |d|        }}t	        d|d|d|d|d		      }d
}d|ft
        j                  j                  |d      |fg}	|dd D ]D  }
t        j                  j                  |
j                  d      dgz    }|	j                  |df       F t        | |	       yc c}w )z
    Make an sdist tarball with distname and version which also contains one
    package with the same name as distname.  The top-level package is
    designated a namespace package).
    .r   r	   NzE        import setuptools
        setuptools.setup(
            name=z,
            version=z,
            packages=z",
            namespace_packages=[z]
        )
    z7__import__('pkg_resources').declare_namespace(__name__)rp   z__init__.pyrr   )	splitrangelenrM   r
   rK   rL   r   r   )r   r   r   parts	nspackageidxpackagessetup_pyinitr{   packager   s               r   make_nspkg_sdistr     s    (??NN3EaI16q#e*q.1IJ#t%JHJ  K  \ "!!* .	
H ED(#bggll9m&Ld%STEAB< %77<<'--"4"FHh^$% y% + Ks   C-c           	      Z    t        | dt        d      j                  |||      fdg       y )Nrp   z                import setuptools
                setuptools.setup(
                  name={name!r},
                  version={version!r},
                  python_requires={python_requires!r},
                )
                )r   r   python_requiresr   )r   r
   format)r   r   r   r   s       r   make_python_requires_sdistr     sF     	 &!7O   !	
r   c                    t        |      dkD  sJ t        j                  | d      5 }|D ]  \  }}t        j                  |j                  d            }t        j                  |      }t        |j                               |_        t        t        j                               |_        |j                  ||        	 ddd       y# 1 sw Y   yxY w)z
    Create a simple sdist tarball at dist_path, containing the files
    listed in ``files`` as ``(filename, content)`` tuples.
    r	   zw:gzr   )r   )fileobjN)r   tarfiler   ioBytesIOr   TarInfogetvaluesizeinttimemtimeaddfile)r   r{   r9   r   r   
file_bytes	file_infos          r   r   r     s     u:>>	i	( 8D!& 	8HgGNN7$;<JX6I !4!4!67IN!$))+.IOLLJL7	88 8 8s   BC		Cfoobarz0.1r   c                 (   t        |      }dd| d| gt        j                  j                  |       gd}|r|j	                  |       t        j                  j                  | d      }	t        j                  |	       |rg }
g }|D ]g  }|j                  |      }|dj                         v r|}n|
}t        |t        t        f      rdj                  |      }|j                  | d|        i t        d      j                  d	j                  |
      d	j                  |      
      }nd}t        t        j                  j                  |	d      dd      5 }|j!                  |       ddd       |t        d      }t        t        j                  j                  |	d      dd      5 }|j!                  ||z         ddd       t        j                  j                  | | d| d      } ||||       |	S # 1 sw Y   xY w# 1 sw Y   GxY w)a  Creates a source tree under path for a trivial test package that has a
    single requirement in setup_requires--a tarball for that requirement is
    also created and added to the dependency_links argument.

    ``distname`` and ``version`` refer to the name/version of the package that
    the test package requires via ``setup_requires``.  The name of the test
    package itself is just 'test_pkg'.
    test_pkgz0.0z==)r   r   setup_requiresdependency_linkszname version;z: zg
            [metadata]
            {metadata}
            [options]
            {options}
            
)optionsmetadatarr   r   rs   r   r   NzI            import setuptools
            setuptools.setup(**%r)
        rp   -z.tar.gz)r   rK   rL   abspathupdaterM   r   popr   
isinstancetuplelistr   r
   r   r   r   )rL   r   r   make_packagesetup_py_templatesetup_attrsuse_setup_cfgnormalized_distnametest_setup_attrsr  r  r  r   valuesectiontest_setup_cfg_contentsr   foobar_paths                     r   create_setup_requires_packager&    s	   $ %X.12"WI>?WW__T23	 ,ww||D*-HHHX ! 	/D$((.E~++--"!%%/NNdV2eW-.	/ #'#
 &IIg&YYx(  
 	  #%	bggll8[13	I )Q	'()   
 
bggll8Z0#	H 6A	!$4456 '',,t(;'<AgYg%NOKh0O#) )6 6s   G<-H<HHjavaz0Test cannot run under java when executable is sh)reasonc                   ,    e Zd ZdZdZd Zd Zd Zd Zy)TestScriptHeaderu   /Users/José/bin/pythonz$C:\Program Files\Python36\python.exec                     dt        j                  t        j                  j	                  t
        j                               d}t         j                  j                  d      }||k(  sJ y )N#!r  z#!/usr/local/bin/python	r*   nt_quote_argrK   rL   normpathr   
executabler0   
get_headerr   r   r   s      r   test_get_script_headerz'TestScriptHeader.test_get_script_header;  sP    (8(8(HIJ"M++,EF!!!r   c                     dt        j                  t        j                  j	                  t
        j                               d}t         j                  j                  d      }||k(  sJ y )Nr,   -x
z#!/usr/bin/python -xr-  r2  s      r   test_get_script_header_argsz,TestScriptHeader.test_get_script_header_args@  sP    (8(8(HIJ%P++,BC!!!r   c                     t         j                  j                  d| j                        }d| j                   d}||k(  sJ y )N#!/usr/bin/pythonr0  r,  r5  )r*   r0   r1  non_ascii_exer   r   r   s      r   $test_get_script_header_non_ascii_exez5TestScriptHeader.test_get_script_header_non_ascii_exeE  sK    ++D,>,> , 
 **+51!!!r   c                     t         j                  j                  dd| j                  z   dz         }d| j                   d}||k(  sJ y )Nr8  "r9  #!"z"
)r*   r0   r1  exe_with_spacesr;  s      r   &test_get_script_header_exe_with_spacesz7TestScriptHeader.test_get_script_header_exe_with_spacesL  sU    ++C$2F2F,F,L , 
 --.c2!!!r   N)	r"   r#   r$   r:  r@  r3  r6  r<  rA  r   r   r   r*  r*  3  s"    
 .M=O"
"
""r   r*  c                       e Zd Zd Zd Z ej                  dej                        ej                  j                  e
j                        d               Zd ZddZy)	TestCommandSpecc                 \    t        j                  ddg      }|j                         dk(  sJ y)zx
        Show how a custom CommandSpec could be used to specify a #! executable
        which takes parameters.
        z/usr/bin/envpython3z#!/usr/bin/env python3
N)r*   r+   r.   r   rV   s     r   test_custom_launch_commandz*TestCommandSpec.test_custom_launch_commandU  s,    
 nnni89}}"<<<<r   c                 z    t        j                  dg      }t         j                  j                  |      }||u sJ y)zG
        from_param should return an instance of a CommandSpec
        pythonN)r*   r+   
from_param)r   rV   cmd_news      r   .test_from_param_for_CommandSpec_is_passthroughz>TestCommandSpec.test_from_param_for_CommandSpec_is_passthrough]  s4     nnhZ(..++C0g~~r   zsys.executablec                     t         j                  j                  dd        t        j                  j                         }t        |      dk(  sJ |j                         j                  d      sJ y )N__PYVENV_LAUNCHER__r	   r?  )	rK   r   r  r*   r+   r-   r   r.   r4   rF  s     r   /test_from_environment_with_spaces_in_executablez?TestCommandSpec.test_from_environment_with_spaces_in_executablee  sS     	

,d3nn--/3x1}}}}))%000r   c                     t         j                  j                  d      }t        |      dk(  sJ d|j	                         vsJ y)z
        In order to support `executable = /usr/bin/env my-python`, make sure
        from_param invokes shlex on that input.
        z/usr/bin/env my-pythonr(   r>  N)r*   r+   rJ  r   r.   rF  s     r   "test_from_simple_string_uses_shlexz2TestCommandSpec.test_from_simple_string_uses_shlexm  s=    
 nn''(@A3x1}}#--/)))r   Nc                     t        j                  t              5 }t        j                  j                  t                      ddd       t        j                        dk(  sJ |j                         y# 1 sw Y   3xY w)zc
        from_param should raise its own TypeError when the argument's type is unsupported
        Nz1Argument has an unsupported type <class 'object'>)	rZ   r[   	TypeErrorr*   r+   rJ  objectrv   r"  )r   exc_infos     r   %test_from_param_raises_expected_errorz5TestCommandSpec.test_from_param_raises_expected_errorv  sc     ]]9% 	0NN%%fh/	0 #VV	>>	V	0 	0s   (A44A=)returnN)r"   r#   r$   rG  rL  r   r   r*  r@  r   rK   r   rO  rQ  rV  r   r   r   rC  rC  T  sY    = TZZ "2"B"BC	ZZ__RZZ 1 ! D1*r   rC  c                       e Zd Zd Zy)TestWindowsScriptWriterc                     t         j                  j                  d      }|j                  d      sJ |j	                  d      sJ |j                  d      }|j                  d      }|j                  d      rJ y )Nrr   r,  r  z\")r*   WindowsScriptWriterr1  r4   endswithlstriprstrip)r   hdrs     r   test_headerz#TestWindowsScriptWriter.test_header  sm    $$//3~~d###||D!!!jjjj>>%((((r   N)r"   r#   r$   r`  r   r   r   rY  rY    s    )r   rY  c                   @    e Zd ZU eed<   eed<   eed<   eed<   eed<   y)VersionStubmajorminormicroreleaselevelserialN)r"   r#   r$   r  __annotations__rv   r   r   r   rb  rb    s    JJJKr   rb  c           	         t               }|j                  d      }dg|_        d|_        d|_        t        |       |_        d |_        |j                  d      }t        |       |_        d |_        |j                         5 }t        j                         5  t        j                  d       d}t        dd	d
dd      }|j                  dd       |j                  d|       |j                  d|       |j                  |dt        j                                |j!                          d d d        d d d        t#        t$        d      rdnd}	|j&                  j)                         }
t+        j,                  |	dz   |
      rt+        j,                  |	dz   |
      sJ |j.                  d   dk(  sJ |j.                  d   dk(  sJ |j.                  d   dk(  sJ y # 1 sw Y   xY w# 1 sw Y   xY w)NrG   rE   r   Tinstallignorez:3.10.1 (main, Dec 21 2021, 09:17:12) [GCC 10.2.1 20210110]   
   r	   finalr   zsys.versionzsys.version_infocreate_home_pathpypy_version_infopypyrI  z3\.?1z3\.?1\d
py_versionz3.10.1py_version_shortz3.10py_version_nodot310)r   get_command_objr:   optimizer   rv   install_userbaseinstall_usersitecontextwarningscatch_warningssimplefilterrb  rh   r   r   finalize_optionshasattrr   rP   lowerr5   r6   config_vars)rz   
tmpdir_cwdr   r9   rV   install_cmdr   r   r   r   rP   s              r   &test_use_correct_python_version_stringr    s    >D


~
.CvCHCLCHv;CC&&y1K#&v;K #'K 				 %)@)@)B h'N1b!Wa0-t4mW-($/c-tyy{;  S"566HD//'')K 
yy+.yy
*K888
 ??<(H444??-.&888??-.%7779   s%   G#BG(G#G 	G##G,)<__doc__r  r2   r   rK   r5   ri   r   r   rN   r  r{  rt   typingr   unittestr   rZ   r   setuptools.command.easy_installcommandrG   r*   r   r   r   setuptools._normalizationr   r   setuptools.disttextwrapr
   distutils.errorsr\   r   r   r   r   r&   markfilterwarningsr   r   usefixturesr   r   r   r   r   r&  skipifplatformr4   is_shr0  r*  rC  rY  rb  r  r   r   r   <module>r     s    	   	 	  
          , , H 0 < (   / /  i iX 01A
 A
 2A
H   ))D" D" * *D"N4!!H08& #JZ LLF#@(@=  " "	":* *Z) )* +8r   