+
    SBi                         R t ^ RIt^ RIt^ RIt^ RIt^ RIHtHt ^ RIH	t	 ^RI
Ht  ! R R4      t ! R R4      tR	 tR# )
z%Tests for automatic package discoveryN)find_namespace_packagesfind_packages)FlatLayoutPackageFinder)	os_helperc                      a  ] tR t^t o R tR tR tRR ltRR ltR t	R t
R	 tR
 tR tR t]P                   P#                  ]P&                  ! 4       '       * RR7      R 4       tR tR tR tR tR tR tRtV tR# )TestFindPackagesc                Z    \         P                  ! 4       V n        V P                  4        R # N)tempfilemkdtempdist_dir_make_pkg_structureselfmethods   &&H/usr/lib/python3.14/site-packages/setuptools/tests/test_find_packages.pysetup_methodTestFindPackages.setup_method   s     ((*  "    c                F    \         P                  ! V P                  4       R # r	   )shutilrmtreer   r   s   &&r   teardown_method TestFindPackages.teardown_method   s    dmm$r   c                   V P                  RV P                  4      V n        V P                  RV P                  4       V P                  RV P                  4      V n        V P                  RV P                  4       V P                  RV P                  4      V n        V P                  RV P
                  4       V P                  RV P                  4      V n        V P                  RV P                  4      V n        V P                  R	V P                  4       V P                  R
V P                  4       V P                  RV P                  4       R# )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                    V'       d    \         P                  P                  W!4      p\         P                  ! V4       V# r	   )ospathjoinmkdir)r   r-   
parent_dirs   &&&r   r#   TestFindPackages._mkdir4   s'    77<<
1D
r   c                    V'       d    \         P                  P                  W!4      p\        VR 4      P	                  4        V# )wb)r,   r-   r.   openclose)r   r-   dir_s   &&&r   r%   TestFindPackages._touch:   s/    77<<+DT4 r   c                ~    V P                  R V P                  4       \        V P                  4      pVRR.8X  g   Q hR# )r"   r   
pkg.subpkgNr%   r&   r   r   r   packagess   & r   test_regular_package%TestFindPackages.test_regular_package@   s5    M4<<0 /E<0000r   c                    V P                  R V P                  4       \        V P                  RR7      pVR.8X  g   Q hR# )r"   excluder   N)zpkg.*r:   r;   s   & r   test_excludeTestFindPackages.test_excludeE   s4    M4<<0 
CE7"""r   c                    V P                  RV P                  4       V P                  RV P                  4       \        V P                  RR7      pVR.8X  g   Q hR# )zG
Excluding a parent package should not exclude child packages as well.
r"   r@   r9   N)r   )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                    V P                  RV P                  4       V P                  RV P                  4      pV P                  RV4       \	        V P                  R.R7      pVR.8X  g   Q hR# )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                >   \         P                  ! \        P                  P	                  V P
                  R 4      4       V P                  RV P                  4      pV P                  RV4       V P                  RV4       \        V P
                  4      pRV9  g   Q hR# )pkg/subpkg/assetsz	some.datar"   zfile.datzpkg.some.dataN)
r   r   r,   r-   r.   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                    V P                  RV P                  4      pV P                  RV4      pV P                  RV4       \        V P                  4      pRV9  g   Q hR# )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                J   V P                  RV P                  4       \        P                  P	                  V P
                  R4      p\        P                  ! RV4       \        P                  P                  V4      '       g   Q h\        V P
                  4      pRV9   g   Q hR# )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,   r-   r.   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                <    \        V4      \        V4      8X  g   Q hR # r	   )set)r   actualexpecteds   &&&r   _assert_packages!TestFindPackages._assert_packages   s    6{c(m+++r   c                b    \        V P                  R .R.R7      pV P                  V. RO4       R# )zpkg*pkg.subpkg.assets)rI   rA   Nr   	pkg.nspkgr9   r   r   rd   r;   s   & r   test_pep420_ns_package'TestFindPackages.test_pep420_ns_package   s0    *MMF86I5J
 	h(JKr   c                ^    \        V P                  R .R7      pV P                  V. RO4       R# )rg   r@   N)r   r   ri   r9   rj   r;   s   & r   "test_pep420_ns_package_no_includes3TestFindPackages.test_pep420_ns_package_no_includes   s'    *4==CVBWXh(RSr   c                Z    \        V P                  4      p. ROpV P                  W4       R# )r   N)r   r   ri   r9   rg   rj   )r   r<   rc   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                    V P                  R V P                  4       \        V P                  RR.R7      pV P	                  V. RO4       R# )r"   r   rg   r@   Nrh   )r%   r&   r   r   rd   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                   \         P                  ! V P                  4       \         P                  ! \        P                  P                  V P                  R 4      4       \        V P                  4      pV P                  V. RO4       R# )rN   Nrh   )	r   r   r$   r,   r-   r.   r   r   rd   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=   rB   rE   rK   rP   rV   pytestmarkskipifr   can_symlinkr^   rd   rk   rn   rq   rt   rw   __static_attributes____classdictcell____classdict__s   @r   r   r      s     #%/:1
#
*)/	+ [[I1133<VW" X",LT2
LL Lr   r   c                      a  ] tR t^t o R. RORR.3RRR.RR.3R. RO. 3R	. ROR.3R
. ROR.3R. RO. RO3R. RO. RO3/t]P                  P                  R]P                  4       4      R 4       t	Rt
V tR# )TestFlatLayoutPackageFinderzhidden-foldersr   z
pkg.nestedzprivate-packagesz_pkg/__init__.pyzpkg/_private/__init__.pyzpkg._privatezinvalid-namer   testsexamplesztool-specificexamplec                    V P                   V,          w  r4\        W4       \        P                  ! \	        V4      4      p\        V4      \        V4      8X  g   Q hR # r	   )EXAMPLESensure_filesr   findstrra   )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    N)z.pkg/__init__.pypkg/__init__.pyzpkg/nested/file.txt)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)ry   rz   r{   r|   r   r}   r~   parametrizekeysr   r   r   r   s   @r   r   r      s     JL!
 	!;<N#
 	W
 	G%QIG
 	 3
 	
 0
=,H\ [[Y8= 9=r   r   c                     V F8  pW,          pVP                   P                  R R R7       VP                  4        K:  	  R# )T)parentsexist_okN)parentr/   touch)	root_pathr   filer-   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   