
    vKg                     ~    S r SSKrSSKrSSKrSSKrSSKJrJr  SSKJ	r	  SSK
Jr   " S S5      r " S	 S
5      rS rg)z%Tests for automatic package discovery    N)find_namespace_packagesfind_packages)FlatLayoutPackageFinder   )	os_helperc                       \ rS rSrS rS rS rSS jrSS jrS r	S	 r
S
 rS rS rS r\R                   R#                  \R&                  " 5       (       + SS9S 5       rS rS rS rS rS rS rSrg)TestFindPackages   c                 X    [         R                  " 5       U l        U R                  5         g N)tempfilemkdtempdist_dir_make_pkg_structureselfmethods     c/var/www/highfloat_scraper/venv/lib/python3.13/site-packages/setuptools/tests/test_find_packages.pysetup_methodTestFindPackages.setup_method   s     ((*  "    c                 D    [         R                  " U R                  5        g r   )shutilrmtreer   r   s     r   teardown_method TestFindPackages.teardown_method   s    dmm$r   c                    U R                  SU R                  5      U l        U R                  SU R                  5        U R                  SU R                  5      U l        U R                  SU R                  5        U R                  SU R                  5      U l        U R                  SU R
                  5        U R                  SU R                  5      U l        U R                  SU R                  5      U l        U R                  S	U R                  5        U R                  S
U R                  5        U R                  SU R                  5        g)zMake basic package structure.

dist/
    docs/
        conf.py
    pkg/
        __pycache__/
        nspkg/
            mod.py
        subpkg/
            assets/
                asset
            __init__.py
    setup.py

docszconf.pypkg__pycache__nspkgzmod.pysubpkgassetsasset__init__.pyzsetup.pyN)_mkdirr   docs_dir_touchpkg_dir
ns_pkg_dirsub_pkg_dir	asset_dir)r   s    r   r   $TestFindPackages._make_pkg_structure   s    " FDMM:It}}-{{5$--8M4<<0++gt||<Hdoo.;;x>Xt/?/?@GT^^,M4#3#34J.r   Nc                 ~    U(       a  [         R                  R                  X!5      n[         R                  " U5        U$ r   )ospathjoinmkdir)r   r0   
parent_dirs      r   r&   TestFindPackages._mkdir4   s'    77<<
1D
r   c                     U(       a  [         R                  R                  X!5      n[        US5      R	                  5         U$ )Nwb)r/   r0   r1   openclose)r   r0   dir_s      r   r(   TestFindPackages._touch:   s/    77<<+DT4 r   c                 z    U R                  SU R                  5        [        U R                  5      nUSS/:X  d   eg )Nr%   r   
pkg.subpkgr(   r)   r   r   r   packagess     r   test_regular_package%TestFindPackages.test_regular_package@   s5    M4<<0 /E<0000r   c                 v    U R                  SU R                  5        [        U R                  SS9nUS/:X  d   eg )Nr%   )zpkg.*excluder   r=   r>   s     r   test_excludeTestFindPackages.test_excludeE   s4    M4<<0 
CE7"""r   c                     U R                  SU R                  5        U R                  SU R                  5        [        U R                  SS9nUS/:X  d   eg)zG
Excluding a parent package should not exclude child packages as well.
r%   )r   rC   r<   N)r(   r)   r+   r   r   r>   s     r   test_exclude_recursive'TestFindPackages.test_exclude_recursiveJ   sJ     	M4<<0M4#3#34 AL>)))r   c                     U R                  SU R                  5        U R                  SU R                  5      nU R                  SU5        [	        U R                  S/S9nUS/:X  d   eg)z=
If include is specified, other packages should be excluded.
r%   	other_pkg)includeN)r(   r)   r&   r   r   )r   alt_dirr?   s      r   test_include_excludes_other,TestFindPackages.test_include_excludes_otherS   sZ     	M4<<0++k4==9M7+ FK=(((r   c                 :   [         R                  " [        R                  R	                  U R
                  S5      5        U R                  SU R                  5      nU R                  SU5        U R                  SU5        [        U R
                  5      nSU;  d   eg )Npkg/subpkg/assetsz	some.datar%   zfile.datzpkg.some.data)
r   r   r/   r0   r1   r   r&   r)   r(   r   )r   data_dirr?   s      r   test_dir_with_dot_is_skipped-TestFindPackages.test_dir_with_dot_is_skipped]   sn    bggll4==2EFG;;{DLL9M8,J) /h...r   c                     U R                  SU R                  5      nU R                  SU5      nU R                  SU5        [        U R                  5      nSU;  d   eg)zS
Ensure that a package in a non-package such as build/pkg/__init__.py
is excluded.
buildr   r%   z	build.pkgN)r&   r   r(   r   )r   	build_dirbuild_pkg_dirr?   s       r   ,test_dir_with_packages_in_subdir_is_excluded=TestFindPackages.test_dir_with_packages_in_subdir_is_excludede   sR    
 KK7	E95M=1 /(***r   zSymlink support required)reasonc                 D   U R                  SU R                  5        [        R                  R	                  U R
                  S5      n[        R                  " SU5        [        R                  R                  U5      (       d   e[        U R
                  5      nSU;   d   eg)z
A symbolically-linked directory should be treated like any other
directory when matched as a package.

Create a link from lpkg -> pkg.
r%   lpkgr   N)	r(   r)   r/   r0   r1   r   symlinkisdirr   )r   
linked_pkgr?   s      r   $test_symlinked_packages_are_included5TestFindPackages.test_symlinked_packages_are_includedp   sq     	M4<<0WW\\$--8



5*%ww}}Z(((( /!!!r   c                 8    [        U5      [        U5      :X  d   eg r   )set)r   actualexpecteds      r   _assert_packages!TestFindPackages._assert_packages   s    6{c(m+++r   c                 Z    [        U R                  S/S/S9nU R                  U/ SQ5        g )Nzpkg*pkg.subpkg.assets)rL   rD   r   	pkg.nspkgr<   r   r   rg   r>   s     r   test_pep420_ns_package'TestFindPackages.test_pep420_ns_package   s0    *MMF86I5J
 	h(JKr   c                 V    [        U R                  S/S9nU R                  U/ SQ5        g )Nrj   rC   )r   r   rl   r<   rm   r>   s     r   "test_pep420_ns_package_no_includes3TestFindPackages.test_pep420_ns_package_no_includes   s'    *4==CVBWXh(RSr   c                 X    [        U R                  5      n/ SQnU R                  X5        g )N)r   r   rl   r<   rj   rm   )r   r?   rf   s      r   .test_pep420_ns_package_no_includes_or_excludes?TestFindPackages.test_pep420_ns_package_no_includes_or_excludes   s#    *4==9Rh1r   c                     U R                  SU R                  5        [        U R                  SS/S9nU R	                  U/ SQ5        g )Nr%   r   rj   rC   rk   )r(   r)   r   r   rg   r>   s     r   3test_regular_package_with_nested_pep420_ns_packagesDTestFindPackages.test_regular_package_with_nested_pep420_ns_packages   s@    M4<<0*MMF,?#@
 	h(JKr   c                    [         R                  " U R                  5        [         R                  " [        R                  R                  U R                  S5      5        [        U R                  5      nU R                  U/ SQ5        g )NrQ   rk   )	r   r   r'   r/   r0   r1   r   r   rg   r>   s     r   *test_pep420_ns_package_no_non_package_dirs;TestFindPackages.test_pep420_ns_package_no_non_package_dirs   sQ    dmm$bggll4==2EFG*4==9h(JKr   )r,   r   r'   r*   r)   r+   r   )__name__
__module____qualname____firstlineno__r   r   r   r&   r(   r@   rE   rH   rN   rS   rY   pytestmarkskipifr   can_symlinkra   rg   rn   rq   rt   rw   rz   __static_attributes__ r   r   r	   r	      s    #%/:1
#
*)/	+ [[I1133<VW" X",LT2
LLr   r	   c            	           \ rS rSr/ SQSS/4SS/SS/4/ SQ/ 4/ S	QS/4/ S
QS/4/ SQ/ SQ4/ SQ/ SQ4S.r\R                  R                  S\R                  5       5      S 5       r	Sr
g)TestFlatLayoutPackageFinder   )z.pkg/__init__.pypkg/__init__.pyzpkg/nested/file.txtr   z
pkg.nestedz_pkg/__init__.pyzpkg/_private/__init__.pyzpkg._private)zinvalid-pkg/__init__.pyzother.pkg/__init__.pyzyet,another/file.py)r   zdocs/conf.pyzdocs/readme.rst)r   ztests/test_pkg.pyztests/__init__.py)r   zexamples/__init__.pyzexamples/file.pyzexample/other_file.pyzpkg/example/__init__.pyzpkg/examples/__init__.py)r   zpkg.exampleszpkg.example)zhtmlcov/index.htmlr   ztasks/__init__.pyztasks/subpackage/__init__.pyzfabfile/__init__.pyzfabfile/subpackage/__init__.pyzpkg/tasks/__init__.pyzpkg/fabfile/__init__.py)r   z	pkg.taskszpkg.fabfile)zhidden-folderszprivate-packageszinvalid-namer   testsexamplesztool-specificexamplec                     U R                   U   u  p4[        X5        [        R                  " [	        U5      5      n[        U5      [        U5      :X  d   eg r   )EXAMPLESensure_filesr   findstrrd   )r   tmp_pathr   filesexpected_packagesfound_packagess         r   &test_unwanted_directories_not_includedBTestFlatLayoutPackageFinder.test_unwanted_directories_not_included   sH    #'==#9 X%055c(mD>"c*;&<<<<r   r   N)r|   r}   r~   r   r   r   r   parametrizekeysr   r   r   r   r   r   r      s     KL!

  !;<N#

 X
 H%QIG

 3

 0
=,H\ [[Y8= 9=r   r   c                 r    U H1  nX-  nUR                   R                  SSS9  UR                  5         M3     g )NT)parentsexist_ok)parentr2   touch)	root_pathr   filer0   s       r   r   r      s4    $6

 r   )__doc__r/   r   r   r   
setuptoolsr   r   setuptools.discoveryr   compat.py39r   r	   r   r   r   r   r   <module>r      s<    + 	    = 8 "ML ML`4= 4=nr   