K i~dZddlZddlZddlZddlZddlmZmZddlm Z ddl m Z GddZ Gd d Z d Zy) z%Tests for automatic package discoveryN)find_namespace_packages find_packages)FlatLayoutPackageFinder) os_helperceZdZdZdZdZddZddZdZdZ d Z d Z d Z d Z ejj!ej$ d dZdZdZdZdZdZdZy)TestFindPackagescVtj|_|jyN)tempfilemkdtempdist_dir_make_pkg_structureselfmethods i/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/setuptools/tests/test_find_packages.py setup_methodzTestFindPackages.setup_methods ((*    "cBtj|jyr )shutilrmtreerrs rteardown_methodz TestFindPackages.teardown_methods dmm$rc|jd|j|_|jd|j|jd|j|_|jd|j|jd|j|_|jd|j |jd|j|_|jd|j |_|jd |j|jd |j |jd |jy ) aGMake basic package structure. dist/ docs/ conf.py pkg/ __pycache__/ nspkg/ mod.py subpkg/ assets/ asset __init__.py setup.py docszconf.pypkg __pycache__nspkgzmod.pysubpkgassetsasset __init__.pyzsetup.pyN)_mkdirrdocs_dir_touchpkg_dir ns_pkg_dir sub_pkg_dir asset_dir)rs rrz$TestFindPackages._make_pkg_structures" FDMM:  It}}-{{5$--8  M4<<0++gt||< Hdoo.;;x>Xt/?/?@ GT^^, M4#3#34 J .rNct|r tjj||}tj||Sr )ospathjoinmkdir)rr, parent_dirs rr#zTestFindPackages._mkdir4s) 77<< D1D  rc~|r tjj||}t|dj |S)Nwb)r+r,r-openclose)rr,dir_s rr%zTestFindPackages._touch:s1 77<<d+D T4  rcx|jd|jt|j}|ddgk(sJy)Nr"r pkg.subpkgr%r&rrrpackagess rtest_regular_packagez%TestFindPackages.test_regular_package@s5 M4<<0 /E<0000rcz|jd|jt|jd}|dgk(sJy)Nr")zpkg.*excluderr7r8s r test_excludezTestFindPackages.test_excludeEs4 M4<<0  CE7"""rc|jd|j|jd|jt|jd}|dgk(sJy)zW Excluding a parent package should not exclude child packages as well. r")rr<r6N)r%r&r(rrr8s rtest_exclude_recursivez'TestFindPackages.test_exclude_recursiveJsJ M4<<0 M4#3#34 AL>)))rc|jd|j|jd|j}|jd|t |jdg}|dgk(sJy)zM If include is specified, other packages should be excluded. r" other_pkg)includeN)r%r&r#rr)ralt_dirr9s rtest_include_excludes_otherz,TestFindPackages.test_include_excludes_otherSsZ M4<<0++k4==9 M7+  FK=(((rc4tjtjj |j d|j d|j}|jd||jd|t|j }d|vsJy)Npkg/subpkg/assetsz some.datar"zfile.datz pkg.some.data) rrr+r,r-rr#r&r%r)rdata_dirr9s rtest_dir_with_dot_is_skippedz-TestFindPackages.test_dir_with_dot_is_skipped]sn bggll4==2EFG;;{DLL9 M8, J) /h...rc|jd|j}|jd|}|jd|t|j}d|vsJy)zk Ensure that a package in a non-package such as build/pkg/__init__.py is excluded. buildrr"z build.pkgN)r#rr%r)r build_dir build_pkg_dirr9s r,test_dir_with_packages_in_subdir_is_excludedz=TestFindPackages.test_dir_with_packages_in_subdir_is_excludedesR KK7  E95  M=1 /(***rzSymlink support required)reasonc4|jd|jtjj |j d}tj d|tjj|sJt|j }d|vsJy)z A symbolically-linked directory should be treated like any other directory when matched as a package. Create a link from lpkg -> pkg. r"lpkgrN) r%r&r+r,r-rsymlinkisdirr)r linked_pkgr9s r$test_symlinked_packages_are_includedz5TestFindPackages.test_symlinked_packages_are_includedpsn M4<<0WW\\$--8  5*%ww}}Z((( /!!!rc6t|t|k(sJyr )set)ractualexpecteds r_assert_packagesz!TestFindPackages._assert_packagess6{c(m+++rc`t|jdgdg}|j|gdy)Nzpkg*pkg.subpkg.assets)rCr=r pkg.nspkgr6rrrZr8s rtest_pep420_ns_packagez'TestFindPackages.test_pep420_ns_packages0* MMF86I5J  h(JKrc\t|jdg}|j|gdy)Nr\r<)rrr^r6r_r8s r"test_pep420_ns_package_no_includesz3TestFindPackages.test_pep420_ns_package_no_includess'*4==CVBWX h(RSrcZt|j}gd}|j||y)N)rrr^r6r\r_)rr9rYs r.test_pep420_ns_package_no_includes_or_excludesz?TestFindPackages.test_pep420_ns_package_no_includes_or_excludess%*4==9R h1rc|jd|jt|jddg}|j |gdy)Nr"rr\r<r])r%r&rrrZr8s r3test_regular_package_with_nested_pep420_ns_packageszDTestFindPackages.test_regular_package_with_nested_pep420_ns_packagess@ M4<<0* MMF,?#@  h(JKrctj|jtjtjj |j dt|j }|j|gdy)NrGr]) rrr$r+r,r-rrrZr8s r*test_pep420_ns_package_no_non_package_dirsz;TestFindPackages.test_pep420_ns_package_no_non_package_dirssQ dmm$ bggll4==2EFG*4==9 h(JKrr )__name__ __module__ __qualname__rrrr#r%r:r>r@rErIrNpytestmarkskipifr can_symlinkrUrZr`rbrdrfrhrrr r s#%/:  1 # *)/ + [[1I1133"c*;&<<<rs<+  =8"MLML`4=4=nr