+
    Ž°³j S  ã                  óà  € R t ^ RIHt ^ RIt^ RIt^ RIHtHtHt ^ RI	H
t
 ^ RIHt ^ RIHt ^ RIHtHt ^ RIt^RIHt ^ R	IHt ^ R
IHt ]'       d   ^ RIHt ]P6                  P8                  tR R lt ! R R4      t ! R R4      t  ! R R] 4      t! ! R R]!4      t" ! R R] 4      t# ! R R]"4      t$ ! R R]#4      t%R R lt& ! R R4      t'R  R! lt(R" R# lt)R$ R% lt*R& R' lt+R( R) lt,R# )*u_  Automatic discovery of Python modules and packages (for inclusion in the
distribution) and other config values.

For the purposes of this module, the following nomenclature is used:

- "src-layout": a directory representing a Python project that contains a "src"
  folder. Everything under the "src" folder is meant to be included in the
  distribution when packaging the project. Example::

    .
    â”œâ”€â”€ tox.ini
    â”œâ”€â”€ pyproject.toml
    â””â”€â”€ src/
        â””â”€â”€ mypkg/
            â”œâ”€â”€ __init__.py
            â”œâ”€â”€ mymodule.py
            â””â”€â”€ my_data_file.txt

- "flat-layout": a Python project that does not use "src-layout" but instead
  have a directory under the project root for each package::

    .
    â”œâ”€â”€ tox.ini
    â”œâ”€â”€ pyproject.toml
    â””â”€â”€ mypkg/
        â”œâ”€â”€ __init__.py
        â”œâ”€â”€ mymodule.py
        â””â”€â”€ my_data_file.txt

- "single-module": a project that contains a single Python script direct under
  the project root (no directory used)::

    .
    â”œâ”€â”€ tox.ini
    â”œâ”€â”€ pyproject.toml
    â””â”€â”€ mymodule.py

)ÚannotationsN)ÚIterableÚIteratorÚMapping©Úfnmatchcase)Úglob)ÚPath)ÚTYPE_CHECKINGÚClassVar)ÚStrPath)Úlog)Úconvert_path)ÚDistributionc               ó    € V ^8„  d   QhRRRR/# )é   Úpathr   ÚreturnÚbool© )Úformats   "ÚU/home/luca/screen-checking/.venv/lib/python3.14/site-packages/setuptools/discovery.pyÚ__annotate__r   ?   s   € ÷ 1ñ 1�gð 1 $ñ 1ó    c                ó\   € \         P                  P                  V 4      P                  4       # ©N)Úosr   ÚbasenameÚisidentifier)r   s   &r   Ú_valid_namer   ?   s    € ä�7‰7×Ñ˜DÓ!×.Ñ.Ó0Ð0r   c                  ó>   € ] tR t^DtRtR R ltR R ltR R ltRtR	# )
Ú_Filterzw
Given a list of patterns, create a callable that will be true only if
the input matches at least one of the patterns.
c               ó    € V ^8„  d   QhRRRR/# )r   ÚpatternsÚstrr   ÚNoner   )r   s   "r   r   Ú_Filter.__annotate__J   s   € ÷ 1ñ 1 #ð 1¨$ñ 1r   c                	ó:   € \         P                  V4      V n        R # r   )ÚdictÚfromkeysÚ	_patterns)Úselfr#   s   &*r   Ú__init__Ú_Filter.__init__J   s   € ÜŸ™ xÓ0ˆŽr   c               ó    € V ^8„  d   QhRRRR/# ©r   Úitemr$   r   r   r   )r   s   "r   r   r&   M   s   € ÷ Eñ E˜Sð E Tñ Er   c                	ó    a€ \         ;QJ d)    V3R  lV P                   4       F  '       g   K   R# 	  R# ! V3R  lV P                   4       4      # )c              3  ó<   <"  € T F  p\        SV4      x € K  	  R # 5ir   r   )Ú.0Úpatr0   s   & €r   Ú	<genexpr>Ú#_Filter.__call__.<locals>.<genexpr>N   s   øé € ÐD±^¨c”;˜t S×)Ð)³^ùs   ƒTF)Úanyr*   ©r+   r0   s   &fr   Ú__call__Ú_Filter.__call__M   s4   ø€ ß‹sÔD°T·^²^ÓD�sŒsÐDŠsÐDˆsÔD°T·^²^ÓDÓDÐDr   c               ó    € V ^8„  d   QhRRRR/# r/   r   )r   s   "r   r   r&   P   s   € ÷ &ñ & ð &¨ñ &r   c                	ó   € WP                   9   # r   ©r*   r8   s   &&r   Ú__contains__Ú_Filter.__contains__P   s   € Ø—~‘~Ñ%Ð%r   r=   N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r,   r9   r>   Ú__static_attributes__r   r   r   r!   r!   D   s   † ñõ
1õE÷&ñ &r   r!   c                  óh   € ] tR t^Tt$ RtR	tR]R&   R	tR]R&   ]RR R ll4       t	]R R l4       t
R	tR
# )Ú_Finderz@Base class that exposes functionality for module/package finderszClassVar[tuple[str, ...]]ÚALWAYS_EXCLUDEÚDEFAULT_EXCLUDEc               ó(   € V ^8„  d   QhRRRRRRRR/# )r   Úwherer   ÚexcludezIterable[str]Úincluder   ú	list[str]r   )r   s   "r   r   Ú_Finder.__annotate__[   s2   € ÷  
ñ  
àð 
ð ð 
ð ð	 
ð
 
ñ 
r   c           
     óÄ   € T;'       g    V P                   p\        V P                  \        \	        V4      4      \        . V P                  OVO5!  \        V!  4      4      # )aê  Return a list of all Python items (packages or modules, depending on
the finder implementation) found within directory ``where``.

``where`` is the root directory which will be searched.
It should be supplied as a "cross-platform" (i.e. URL-style) path;
it will be converted to the appropriate local path syntax.

``exclude`` is a sequence of names to exclude; ``*`` can be used
as a wildcard in the names.
When finding packages, ``foo.*`` will exclude all subpackages of ``foo``
(but not ``foo`` itself).

``include`` is a sequence of names to include.
If it's specified, only the named items will be included.
If it's not specified, all found items will be included.
``include`` can contain shell style wildcard patterns just like
``exclude``.
)rI   ÚlistÚ
_find_iterr   r$   r!   rH   ©ÚclsrK   rL   rM   s   &&&&r   ÚfindÚ_Finder.findZ   sZ   € ð4 ×0Ð0˜S×0Ñ0ˆÜØ�N‰NÜœS ›ZÓ(ÜÐ6˜×+Ñ+Ð6¨gÓ6Ü˜Ñ!óó
ð 	
r   c               ó(   € V ^8„  d   QhRRRRRRRR/# ©r   rK   r   rL   r!   rM   r   zIterator[str]r   )r   s   "r   r   rO   ~   s,   € ÷ "ñ "Øð"Ø&-ð"Ø8?ð"à	ñ"r   c                	ó   € \         hr   )ÚNotImplementedErrorrS   s   &&&&r   rR   Ú_Finder._find_iter}   s
   € ô "Ð!r   r   N)Ú.r   )Ú*)r@   rA   rB   rC   rD   rH   Ú__annotations__rI   ÚclassmethodrU   rR   rE   r   r   r   rG   rG   T   sB   ‡ ÙJà02€NÐ-Ó2Ø13€OÐ.Ó3àö 
ó ð 
ðD ô"ó ô"r   rG   c                  óJ   € ] tR t^„tRtRt]R R l4       t]R R l4       t	Rt
R# )	ÚPackageFinderzA
Generate a list of all Python packages found within a directory
c               ó(   € V ^8„  d   QhRRRRRRRR/# rX   r   )r   s   "r   r   ÚPackageFinder.__annotate__Œ   s,   € ÷ !ñ !Øð!Ø&-ð!Ø8?ð!à	ñ!r   c              #  ó0  "  € \         P                  ! \        V4      RR7       Fì  w  rEpVR,          p. VR&   V FÒ  p\         P                  P	                  WH4      p	\         P                  P                  W‘4      p
V
P                  \         P                  P                  R4      pRV9   g   V P                  W›4      '       g   K‹  V! V4      '       d   V! V4      '       g   Vx € V R2V9   g   V R2V9   d   KÁ  VP                  V4       KÔ  	  Kî  	  R# 5i)za
All the packages found in 'where' that pass the 'include' filter, but
not the 'exclude' filter.
T)ÚfollowlinksºNNNr\   r]   ú.*N)
r   Úwalkr$   r   ÚjoinÚrelpathÚreplaceÚsepÚ_looks_like_packageÚappend)rT   rK   rL   rM   ÚrootÚdirsÚfilesÚall_dirsÚdirÚ	full_pathÚrel_pathÚpackages   &&&&        r   rR   ÚPackageFinder._find_iter‹   sæ   é € ô "$§¢¬¨U«À×!FÑˆD˜à˜A•wˆHØˆD�‰Gã�ÜŸG™GŸL™L¨Ó3�	ÜŸ7™7Ÿ?™?¨9Ó<�Ø"×*Ñ*¬2¯7©7¯;©;¸Ó<�ð ˜#”: S×%<Ñ%<¸Y×%PÒ%PÙñ ˜7×#Ò#©G°G×,<Ò,<Ø!’Mð �Y˜a�= GÔ+°'°¸"¨~ÀÔ/HÙð —‘˜CÖ ó'  ó "Gùs   ‚CDÃDÃ!5Dc               ó$   € V ^8„  d   QhRRRRRR/# )r   r   r   Ú_package_namer$   r   r   r   )r   s   "r   r   rc   ®   s&   € ÷ Añ A 'ð A¸#ð AÀ$ñ Ar   c                ó|   € \         P                  P                  \         P                  P                  V R4      4      # )z%Does a directory look like a package?ú__init__.py)r   r   Úisfileri   )r   ry   s   &&r   rm   Ú!PackageFinder._looks_like_package­   s&   € ô �w‰w�~‰~œbŸg™gŸl™l¨4°Ó?Ó@Ð@r   r   N)Úez_setupz*__pycache__)r@   rA   rB   rC   rD   rH   r_   rR   Ústaticmethodrm   rE   r   r   r   ra   ra   „   s7   † ñð 2€Nàô!ó ð!ðB ôAó ôAr   ra   c                  ó,   € ] tR t^³t]R R l4       tRtR# )ÚPEP420PackageFinderc               ó$   € V ^8„  d   QhRRRRRR/# )r   Ú_pathr   ry   r$   r   r   r   )r   s   "r   r   Ú PEP420PackageFinder.__annotate__µ   s!   € ÷ ñ  7ð ¸3ð À4ñ r   c                	ó   € R # )Tr   )rƒ   ry   s   &&r   rm   Ú'PEP420PackageFinder._looks_like_package´   s   € ár   r   N)r@   rA   rB   rC   r   rm   rE   r   r   r   r�   r�   ³   s   † Øôó ôr   r�   c                  ó@   € ] tR t^¹tRt]R R l4       t]! ]4      t	Rt
R# )ÚModuleFinderzQFind isolated Python modules.
This function will **not** recurse subdirectories.
c               ó(   € V ^8„  d   QhRRRRRRRR/# rX   r   )r   s   "r   r   ÚModuleFinder.__annotate__¿   s,   € ÷ 
ñ 
Øð
Ø&-ð
Ø8?ð
à	ñ
r   c              #  	ód  "  € \        \        P                  P                  VR 4      4       F~  p\        P                  P	                  \        P                  P                  V4      4      w  rVV P                  V4      '       g   KZ  V! V4      '       g   Kj  V! V4      '       d   Kz  Vx € K€  	  R# 5i)z*.pyN)r   r   r   ri   Úsplitextr   Ú_looks_like_module)rT   rK   rL   rM   ÚfileÚmoduleÚ_exts   &&&&   r   rR   ÚModuleFinder._find_iter¾   st   é € ô œŸ™Ÿ™ e¨VÓ4Ö5ˆDÜŸ7™7×+Ñ+¬B¯G©G×,<Ñ,<¸TÓ,BÓC‰LˆFà×)Ñ)¨&×1Ò1Ùá�v�Œ¡w¨v§¤Ø”ó 6ùs   ‚BB0ÂB0Â&
B0r   N)r@   rA   rB   rC   rD   r_   rR   r   r   r�   rE   r   r   r   rˆ   rˆ   ¹   s(   † ñð ô
ó ð
ñ & kÓ2Ôr   rˆ   c                  ó\   € ] tR t^ÒtRt]! ]! R ] 4       4      4      t ]R R l4       t	Rt
R# )ÚFlatLayoutPackageFinderc              #  	ó.   "  € T F  qV R 23x € K  	  R# 5i)rg   Nr   )r3   Úps   & r   r5   Ú!FlatLayoutPackageFinder.<genexpr>ü   s   é € Ð&G¹h¸¨a¨S°¨8¥}»hùs   ‚c               ó$   € V ^8„  d   QhRRRRRR/# )r   rƒ   r   Úpackage_namer$   r   r   r   )r   s   "r   r   Ú$FlatLayoutPackageFinder.__annotate__   s&   € ÷ Tñ T 7ð T¸#ð TÀ$ñ Tr   c                	ó*  € VP                  R 4      pV^ ,          P                  4       ;'       g    V^ ,          P                  R4      pT;'       dC    \        ;QJ d#    R VR,           4       F  '       d   K   R# 	  R# ! R VR,           4       4      # )r\   ú-stubsc              3  ó@   "  € T F  qP                  4       x € K  	  R # 5ir   )r   )r3   Únames   & r   r5   Ú>FlatLayoutPackageFinder._looks_like_package.<locals>.<genexpr>  s   é € Ð(SÉÀ×):Ñ):×)<Ð)<Ëùs   ‚:é   NNFT)Úsplitr   ÚendswithÚall)rƒ   r˜   ÚnamesÚroot_pkg_is_valids   &&  r   rm   Ú+FlatLayoutPackageFinder._looks_like_packageÿ   su   € à×"Ñ" 3Ó'ˆà! !�H×1Ñ1Ó3×RÐR°u¸Qµx×7HÑ7HÈÓ7RÐØ ×SÐS§S£SÑ(SÈÈrÎÓ(S§S¤SÐS¢SÐS SÑ(SÈÈrÎÓ(SÓ%SÐSr   r   N)#ÚciÚbinÚdebianÚdocÚdocsÚdocumentationÚmanpagesÚnewsÚnewsfragmentsÚ	changelogÚtestÚtestsÚ	unit_testÚ
unit_testsÚexampleÚexamplesÚscriptsÚtoolsÚutilÚutilsÚpythonÚbuildÚdistÚvenvÚenvÚrequirementsÚtasksÚfabfileÚ
site_sconsÚ	benchmarkÚ
benchmarksÚexerciseÚ	exercisesÚhtmlcovú[._]*)r@   rA   rB   rC   Ú_EXCLUDEÚtupleÚ
chain_iterrI   r   rm   rE   r   r   r   r“   r“   Ò   s8   † ð'€HñR ™JÑ&G¹hÓ&GÓGÓH€OØ àôTó ôTr   r“   c                  ó   € ] tR tRtRtRtR# )ÚFlatLayoutModuleFinderi  r   N)ÚsetupÚconftestr°   r±   r´   rµ   r»   ÚtoxfileÚnoxfileÚpavementÚdodorÀ   rÁ   z[Ss][Cc]onstructÚ	conanfileÚmanagerÃ   rÄ   rÅ   rÆ   rÈ   )r@   rA   rB   rC   rI   rE   r   r   r   rÍ   rÍ     s   † ð€Oó4 *r   rÍ   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úroot_pkgr$   Úpkg_dirr   r   rN   r   )r   s   "r   r   r   %  s!   € ÷ <ñ < Cð <°'ð <¸iñ <r   c                ór   € \         P                  V4      pV .V Uu. uF	  q0 R V 2NK  	  up,           # u upi )r\   )r�   rU   )r×   rØ   ÚnestedÚns   &&  r   Ú_find_packages_withinrÜ   %  s:   € Ü ×%Ñ% gÓ.€FØˆ:±FÓ;±F¨q˜: Q q cÓ*±FÑ;Õ;Ð;ùÒ;s   œ4c                  óò   € ] tR tRtRtR R ltR tR t]R R l4       t	]R	 R
 l4       t
R%R R lltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R  ltR! R" ltR#tR$# )&ÚConfigDiscoveryi*  z}Fill-in metadata and options that can be automatically derived
(from other metadata/options, the file system or conventions)
c               ó    € V ^8„  d   QhRRRR/# )r   Údistributionr   r   r%   r   )r   s   "r   r   ÚConfigDiscovery.__annotate__/  s   € ÷ 'ñ ' \ð '°dñ 'r   c                	ó<   € Wn         R V n        R V n        R V n        R# )FN)r¼   Ú_calledÚ	_disabledÚ_skip_ext_modules)r+   rà   s   &&r   r,   ÚConfigDiscovery.__init__/  s   € Ø Œ	ØˆŒØˆŒØ!&ˆÖr   c                ó   € RV n         R# )z+Internal API to disable automatic discoveryTN)rä   ©r+   s   &r   Ú_disableÚConfigDiscovery._disable5  s	   € àˆŽr   c                ó   € RV n         R# )a¬  Internal API to disregard ext_modules.

Normally auto-discovery would not be triggered if ``ext_modules`` are set
(this is done for backward compatibility with existing packages relying on
``setup.py`` or ``setup.cfg``). However, ``setuptools`` can call this function
to ignore given ``ext_modules`` and proceed with the auto-discovery if
``packages`` and ``py_modules`` are not given (e.g. when using pyproject.toml
metadata).
TN)rå   rè   s   &r   Ú_ignore_ext_modulesÚ#ConfigDiscovery._ignore_ext_modules9  s   € ð "&ˆÖr   c               ó   € V ^8„  d   QhRR/# )r   r   r   r   )r   s   "r   r   rá   F  s   € ÷ /ñ /˜7ñ /r   c                	ó^   € V P                   P                  ;'       g    \        P                  # r   )r¼   Úsrc_rootr   Úcurdirrè   s   &r   Ú	_root_dirÚConfigDiscovery._root_dirE  s    € ð �y‰y×!Ñ!×.Ð.¤R§Y¡YÐ.r   c               ó   € V ^8„  d   QhRR/# )r   r   údict[str, str]r   )r   s   "r   r   rá   K  s   € ÷ %ñ %˜nñ %r   c                	ób   € V P                   P                  f   / # V P                   P                  # r   )r¼   Úpackage_dirrè   s   &r   Ú_package_dirÚConfigDiscovery._package_dirJ  s'   € à�9‰9× Ñ Ò(ØˆIØ�y‰y×$Ñ$Ð$r   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   Úforcer   r�   Úignore_ext_modulesr   r%   r   )r   s   "r   r   rá   P  s,   € ÷ ñ ØðØ)-ðØJNðà	ñr   c                ó¾   € VRJ d'   V P                   '       g   V P                  '       d   R# V P                  V4       V'       d   V P                  4        RV n         R# )ay  Automatically discover missing configuration fields
and modifies the given ``distribution`` object in-place.

Note that by default this will only have an effect the first time the
``ConfigDiscovery`` object is called.

To repeatedly invoke automatic discovery (e.g. when the project
directory changes), please use ``force=True`` (or create a new
``ConfigDiscovery`` instance).
FNT)rã   rä   Ú_analyse_package_layoutÚanalyse_name)r+   rû   r�   rü   s   &&&&r   r9   ÚConfigDiscovery.__call__P  sC   € ð �E‹>˜tŸ|Ÿ|˜|¨t¯~¯~¨~áà×$Ñ$Ð%7Ô8ßØ×ÑÔàˆŽr   c               ó    € V ^8„  d   QhRRRR/# ©r   rü   r   r   r   )r   s   "r   r   rá   g  s   € ÷ 
ñ 
¸ð 
Àñ 
r   c                óx  € T;'       g    V P                   pV P                  P                  RJ ;'       g    T'       * pV P                  P                  RJ;'       g_    V P                  P                  RJ;'       g?    T;'       g5    \        V P                  R4      ;'       d    V P                  P                  # )zF``True`` if the user has specified some form of package/module listingNÚconfiguration)rå   r¼   Úext_modulesÚpackagesÚ
py_modulesÚhasattrr  )r+   rü   r  s   && r   Ú_explicitly_specifiedÚ%ConfigDiscovery._explicitly_specifiedg  s§   € à/×IÐI°4×3IÑ3IÐØŸ9™9×0Ñ0°DÐ8×NÐNÐ<NÔOˆà�I‰I×Ñ dÐ*÷ (ð (Ø�y‰y×#Ñ#¨4Ð/÷(ð (à÷(ð (ô �t—y‘y /Ó2÷ (ð (Ø—	‘	×'Ñ'ð	
r   c               ó    € V ^8„  d   QhRRRR/# r  r   )r   s   "r   r   rá   t  s   € ÷ 
ñ 
¸$ð 
À4ñ 
r   c                	óà   € V P                  V4      '       d   R # \        P                  ! R4       V P                  4       ;'       g)    V P	                  4       ;'       g    V P                  4       # )TzLNo `packages` or `py_modules` configuration, performing automatic discovery.)r	  r   ÚdebugÚ_analyse_explicit_layoutÚ_analyse_src_layoutÚ_analyse_flat_layout)r+   rü   s   &&r   rþ   Ú'ConfigDiscovery._analyse_package_layoutt  sk   € Ø×%Ñ%Ð&8×9Ò9ñ ä�	Š	ð#ô	
ð ×)Ñ)Ó+÷ +ð +Ø×'Ñ'Ó)÷+ð +ð ×(Ñ(Ó*ð		
r   c               ó   € V ^8„  d   QhRR/# ©r   r   r   r   )r   s   "r   r   rá   †  s   € ÷ ñ ¨$ñ r   c                ó’  a€ V P                   P                  4       pVP                  RR4       V P                  oV'       g   R# \        P
                  ! RV 24       \        V3R lVP                  4        4       4      p\        V4      V P                  n
        \        P
                  ! RV P                  P                   24       R# )zAThe user can explicitly give a package layout via ``package_dir``Ú NFz(`explicit-layout` detected -- analysing c              3  ó|   <"  € T F1  w  r\        V\        P                  P                  SV4      4      x € K3  	  R # 5ir   )rÜ   r   r   ri   )r3   ÚpkgÚ
parent_dirÚroot_dirs   &  €r   r5   Ú;ConfigDiscovery._analyse_explicit_layout.<locals>.<genexpr>�  s3   øé € ð 
á#6‘�ô " #¤r§w¡w§|¡|°H¸jÓ'I×JÐJÛ#6ùs   ƒ9<údiscovered packages -- T)rø   ÚcopyÚpoprò   r   r  rË   ÚitemsrQ   r¼   r  )r+   r÷   Úpkgsr  s   &  @r   r  Ú(ConfigDiscovery._analyse_explicit_layout†  sœ   ø€ à×'Ñ'×,Ñ,Ó.ˆØ�‰˜˜DÔ!Ø—>‘>ˆçÙä�	Š	Ð<¸[¸MÐJÔKÜô 
à#.×#4Ñ#4Ô#6ó
ó 
ˆô " $›Zˆ�	‰	ÔÜ�	Š	Ð+¨D¯I©I×,>Ñ,>Ð+?Ð@ÔAÙr   c               ó   € V ^8„  d   QhRR/# r  r   )r   s   "r   r   rá   ˜  s   € ÷ ñ  Tñ r   c                óÔ  € V P                   p\        P                  P                  V P                  VP                  RR4      4      p\        P                  P                  V4      '       g   R# \        P                  ! RV 24       VP                  R\        P                  P                  V4      4       WP                  n        \        P                  V4      V P                  n        \         P                  V4      V P                  n        \        P                  ! RV P                  P                   24       \        P                  ! RV P                  P"                   24       R# )av  Try to find all packages or modules under the ``src`` directory
(or anything pointed by ``package_dir[""]``).

The "src-layout" is relatively safe for automatic discovery.
We assume that everything within is meant to be included in the
distribution.

If ``package_dir[""]`` is not given, but the ``src`` directory exists,
this function will set ``package_dir[""] = "src"``.
r  ÚsrcFz#`src-layout` detected -- analysing r  údiscovered py_modules -- T)rø   r   r   ri   rò   ÚgetÚisdirr   r  Ú
setdefaultr   r¼   r÷   r�   rU   r  rˆ   r  )r+   r÷   Úsrc_dirs   &  r   r  Ú#ConfigDiscovery._analyse_src_layout˜  sô   € ð ×'Ñ'ˆÜ—'‘'—,‘,˜tŸ~™~¨{¯©¸rÀ5Ó/IÓJˆÜ�w‰w�}‰}˜W×%Ò%Ùä�	Š	Ð7¸°yÐAÔBØ×Ñ˜r¤2§7¡7×#3Ñ#3°GÓ#<Ô=Ø +�	‰	ÔÜ0×5Ñ5°gÓ>ˆ�	‰	ÔÜ+×0Ñ0°Ó9ˆ�	‰	ÔÜ�	Š	Ð+¨D¯I©I×,>Ñ,>Ð+?Ð@ÔAÜ�	Š	Ð-¨d¯i©i×.BÑ.BÐ-CÐDÔEÙr   c               ó   € V ^8„  d   QhRR/# r  r   )r   s   "r   r   rá   ±  s   € ÷ Mñ M dñ Mr   c                ó˜   € \         P                  ! RV P                   24       V P                  4       ;'       g    V P	                  4       # )a–  Try to find all packages and modules under the project root.

Since the ``flat-layout`` is more dangerous in terms of accidentally including
extra files/directories, this function is more conservative and will raise an
error if multiple packages or modules are found.

This assumes that multi-package dists are uncommon and refuse to support that
use case in order to be able to prevent unintended errors.
z$`flat-layout` detected -- analysing )r   r  rò   Ú_analyse_flat_packagesÚ_analyse_flat_modulesrè   s   &r   r  Ú$ConfigDiscovery._analyse_flat_layout±  s=   € ô 	�	Š	Ð8¸¿¹Ð8HÐIÔJØ×*Ñ*Ó,×LÐL°×0JÑ0JÓ0LÐLr   c               ó   € V ^8„  d   QhRR/# r  r   )r   s   "r   r   rá   ¾  s   € ÷ ñ ¨ñ r   c                	óB  € \         P                  V P                  4      V P                  n        \        \        V P                  P                  4      4      p\        P                  ! R V P                  P                   24       V P                  VR4       \        V4      # )r  r  )r“   rU   rò   r¼   r  Úremove_nested_packagesÚremove_stubsr   r  Ú_ensure_no_accidental_inclusionr   )r+   Ú	top_levels   & r   r,  Ú&ConfigDiscovery._analyse_flat_packages¾  so   € Ü4×9Ñ9¸$¿.¹.ÓIˆ�	‰	ÔÜ*¬<¸¿	¹	×8JÑ8JÓ+KÓLˆ	Ü�	Š	Ð+¨D¯I©I×,>Ñ,>Ð+?Ð@ÔAØ×,Ñ,¨Y¸
ÔCÜ�I‹Ðr   c               ó   € V ^8„  d   QhRR/# r  r   )r   s   "r   r   rá   Å  s   € ÷ *ñ * tñ *r   c                	óB  € \         P                  V P                  4      V P                  n        \
        P                  ! R V P                  P                   24       V P                  V P                  P                  R4       \        V P                  P                  4      # )r$  Úmodules)	rÍ   rU   rò   r¼   r  r   r  r3  r   rè   s   &r   r-  Ú%ConfigDiscovery._analyse_flat_modulesÅ  sk   € Ü5×:Ñ:¸4¿>¹>ÓJˆ�	‰	ÔÜ�	Š	Ð-¨d¯i©i×.BÑ.BÐ-CÐDÔEØ×,Ñ,¨T¯Y©Y×-AÑ-AÀ9ÔMÜ�D—I‘I×(Ñ(Ó)Ð)r   c               ó    € V ^8„  d   QhRRRR/# )r   ÚdetectedrN   Úkindr$   r   )r   s   "r   r   rá   Ë  s   € ÷ 7ñ 7¸	ð 7Èñ 7r   c                	ór   € \        V4      ^8”  d'   ^ RIHp ^ RIHp RV RV RV R2pV! V! V4      4      hR# )rŸ   )Úcleandoc)ÚPackageDiscoveryErrorzMultiple top-level z discovered in a flat-layout: zÕ.

            To avoid accidental inclusion of unwanted files or directories,
            setuptools will not proceed with this build.

            If you are trying to create a single distribution with multiple a¥  
            on purpose, you should not rely on automatic discovery.
            Instead, consider the following options:

            1. set up custom discovery (`find` directive with `include` or `exclude`)
            2. use a `src-layout`
            3. explicitly set `py_modules` or `packages` with a list of names

            To find more information, look for "package discovery" on setuptools docs.
            N)ÚlenÚinspectr>  Úsetuptools.errorsr?  )r+   r;  r<  r>  r?  Úmsgs   &&&   r   r3  Ú/ConfigDiscovery._ensure_no_accidental_inclusionË  sU   € Üˆx‹=˜1ÔÝ(å?à)¨$¨Ð/MÈhÈZð XMð
 NRÈFð 	SðˆCñ (©°«Ó6Ð6ñ) r   c               ó   € V ^8„  d   QhRR/# )r   r   r%   r   )r   s   "r   r   rá   â  s   € ÷ +ñ +˜dñ +r   c                óR  € V P                   P                  P                  '       g   V P                   P                  '       d   R# \        P                  ! R4       V P                  4       ;'       g    V P                  4       pV'       d   WP                   P                  n        R# R# )z„The packages/modules are the essential contribution of the author.
Therefore the name of the distribution can be derived from them.
Nz7No `name` configuration, performing automatic discovery)r¼   Úmetadatar�   r   r  Ú#_find_name_single_package_or_moduleÚ_find_name_from_packages)r+   r�   s   & r   rÿ   ÚConfigDiscovery.analyse_nameâ  sy   € ð �9‰9×Ñ×"×"Ð" d§i¡i§n§n náä�	Š	ÐKÔLð ×4Ñ4Ó6÷ /ð /Ø×,Ñ,Ó.ð 	÷ Ø&*�I‰I×ÑÖ#ñ r   c               ó   € V ^8„  d   QhRR/# ©r   r   ú
str | Noner   )r   s   "r   r   rá   ó  s   € ÷ ñ °Zñ r   c                óä   € R Fi  p\        V P                  VR4      ;'       g    . pV'       g   K.  \        V4      ^8X  g   K@  \        P                  ! RV^ ,           24       V^ ,          u # 	  R# )zExactly one module or packageNz&Single module/package detected, name: )r  r  )Úgetattrr¼   r@  r   r  )r+   Úfieldr  s   &  r   rH  Ú3ConfigDiscovery._find_name_single_package_or_moduleó  s[   € ã/ˆEÜ˜DŸI™I u¨dÓ3×9Ð9°rˆEß‰uœ˜U› qžÜ—	’	ÐBÀ5ÈÅ8À*ÐMÔNØ˜Q•x’ñ	 0ñ r   c               ó   € V ^8„  d   QhRR/# rL  r   )r   s   "r   r   rá   ý  s   € ÷ ñ ¨*ñ r   c                ó|  € V P                   P                  '       g   R# \        \        V P                   P                  \        R7      4      pV P                   P
                  ;'       g    / p\        WV P                  4      pV'       d   \        P                  ! RV 24       V# \        P                  ! R4       R# )z<Try to find the root package that is not a PEP 420 namespaceN©Úkeyz&Common parent package detected, name: z7No parent package detected, impossible to derive `name`)r¼   r  r2  Úsortedr@  r÷   Úfind_parent_packagerò   r   r  Úwarn)r+   r  r÷   Ú
parent_pkgs   &   r   rI  Ú(ConfigDiscovery._find_name_from_packagesý  s„   € à�y‰y×!×!Ð!Ùä¤ t§y¡y×'9Ñ'9¼sÔ CÓDˆØ—i‘i×+Ñ+×1Ð1¨rˆä(¨ÀÇÁÓOˆ
ßÜ�IŠIÐ>¸z¸lÐKÔLØÐä�ŠÐJÔKÙr   )rã   rä   rå   r¼   N)FTF)r@   rA   rB   rC   rD   r,   ré   rì   Úpropertyrò   rø   r9   r	  rþ   r  r  r  r,  r-  r3  rÿ   rH  rI  rE   r   r   r   rÞ   rÞ   *  s€   † ñõ'òò
&ð ô/ó ð/ð ô%ó ð%÷
õ.
õ
õ$õ$õ2Mõõ*õ7õ.+õ"÷ñ r   rÞ   c               ó    € V ^8„  d   QhRRRR/# ©r   r  rN   r   r   )r   s   "r   r   r     s   € ÷ ñ  Yð °9ñ r   c                óN  a€ \        V \        R7      pVR,          p\        V4      p\        \        V4      4       Ff  w  po\        ;QJ d    V3R lV 4       F  '       g   K   RM	  RM! V3R lV 4       4      '       g   KH  VP                  W4,
          ^,
          4       Kh  	  V# )zÕRemove nested packages from a list of packages.

>>> remove_nested_packages(["a", "a.b1", "a.b2", "a.b1.c1"])
['a']
>>> remove_nested_packages(["a", "b", "c.d", "c.d.e.f", "g.h", "a.a1"])
['a', 'b', 'c.d', 'g.h']
rT  rf   c              3  óL   <"  € T F  pSP                  V R 24      x € K  	  R# 5i©r\   N©Ú
startswith)r3   Úotherr�   s   & €r   r5   Ú)remove_nested_packages.<locals>.<genexpr>  s#   øé € ÐC¹°ˆt�‰ % ¨˜{×+Ð+»ùs   ƒ!$TF)rV  r@  Ú	enumerateÚreversedr7   r  )r  r  r4  ÚsizeÚir�   s   &    @r   r1  r1    su   ø€ ô �(¤Ô$€DØ�Q•€IÜˆt‹9€DÜœX d›^Ö,‰ˆˆ4ß‹3ÔC¹ÓC�3�3Š3ÔC¹ÓC×CÔCØ�M‰M˜$�( Q�,Ö'ñ -ð Ðr   c               ó    € V ^8„  d   QhRRRR/# r]  r   )r   s   "r   r   r      s   € ÷ Qñ Q˜9ð Q¨ñ Qr   c                óŒ   € V  Uu. uF3  qP                  R4      ^ ,          P                  R4      '       d   K1  VNK5  	  up# u upi )z”Remove type stubs (:pep:`561`) from a list of packages.

>>> remove_stubs(["a", "a.b", "a-stubs", "a-stubs.b.c", "b", "c-stubs"])
['a', 'a.b', 'b']
r\   r›   )r    r¡   )r  r  s   & r   r2  r2     s6   € ñ $ÓP™8�C¯9©9°S«>¸!Õ+<×+EÑ+EÀh×+O�CˆC™8ÑPÐPùÒPs
   ….A¸Ac               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   r  rN   r÷   úMapping[str, str]r  r   r   rM  r   )r   s   "r   r   r   )  s,   € ÷ ñ ØðØ&7ðØCJðàñr   c                óÞ  a€ \        V \        R7      p . p\        V 4       Fk  w  po\        ;QJ d(    V3R lW^,           R  4       F  '       d   K   RM	  RM! V3R lW^,           R  4       4      '       g    MVP	                  S4       Km  	  V FX  o\        SW4      p\        P                  P                  VR4      p\        P                  P                  V4      '       g   KV  Su # 	  R# )z0Find the parent package that is not a namespace.rT  c              3  óJ   <"  € T F  qP                  S R 24      x € K  	  R# 5ir`  ra  )r3   rÛ   r�   s   & €r   r5   Ú&find_parent_package.<locals>.<genexpr>0  s#   øé € ÐGÑ5F°—<‘< 4 &¨ 
×+Ð+Ó5Fùs   ƒ #NFTr{   )
rV  r@  re  r¢   rn   Úfind_package_pathr   r   ri   r|   )r  r÷   r  Úcommon_ancestorsrh  Úpkg_pathÚinitr�   s   &&&    @r   rW  rW  )  s¹   ø€ ô �h¤CÔ(€HØÐÜ˜XÖ&‰ˆˆ4ß‹sÔG°XÀ!½e¸gÑ5FÓG�s�sŠsÔG°XÀ!½e¸gÑ5FÓG×GÒGñ
 Ø×Ñ Ö%ñ 'ó !ˆÜ$ T¨;ÓAˆÜ�w‰w�|‰|˜H mÓ4ˆÜ�7‰7�>‰>˜$×ÔØŠKñ	 !ñ r   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r�   r$   r÷   rl  r  r   r   r   )r   s   "r   r   r   A  s,   € ÷ >ñ >Ø
ð>Ø-ð>Ø9@ð>àñ>r   c                óŠ  € V P                  R4      p\        \        V4      ^ R4       FK  pRP                  VRV 4      pWQ9   g   K  W,          p\        P
                  P                  ! W&.W4R O5!  u # 	  VP                  R4      ;'       g    Rp\        P
                  P                  ! V.VP                  R4      OVO5!  # )a_  Given a package name, return the path where it should be found on
disk, considering the ``package_dir`` option.

>>> path = find_package_path("my.pkg", {"": "root/is/nested"}, ".")
>>> path.replace(os.sep, "/")
'./root/is/nested/my/pkg'

>>> path = find_package_path("my.pkg", {"my": "root/is/nested"}, ".")
>>> path.replace(os.sep, "/")
'./root/is/nested/pkg'

>>> path = find_package_path("my.pkg", {"my.pkg": "root/is/nested"}, ".")
>>> path.replace(os.sep, "/")
'./root/is/nested'

>>> path = find_package_path("other.pkg", {"my.pkg": "root/is/nested"}, ".")
>>> path.replace(os.sep, "/")
'./other/pkg'
r\   Nr  Ú/éÿÿÿÿ)r    Úranger@  ri   r   r   r%  )r�   r÷   r  Úpartsrh  Úpartial_nameÚparents   &&&    r   rp  rp  A  s¤   € ð, �J‰J�s‹O€EÜ”3�u“:˜q "Ö%ˆà—x‘x  b q 	Ó*ˆØÖ&Ø Õ.ˆFÜ—7‘7—<’< Ð=°5¸°9Ó=Ò=ñ &ð �_‰_˜RÓ ×&Ð& B€FÜ�7‰7�<Š<˜Ð= 6§<¡<°Ó#4Ð=°uÓ=Ð=r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r  rN   Úpackage_pathr   r   rõ   r   )r   s   "r   r   r   c  s&   € ÷ Nñ N Ið N¸Wð NÈñ Nr   c           
     ó´   € \        V 4      p\        V4      P                  pV Uu/ uF'  qDR P                  . VOVP	                  R4      O4      bK)  	  up# u upi )rv  r\   )r1  r	   ry  ri   r    )r  r}  Úparent_pkgsÚprefixr  s   &&   r   Úconstruct_package_dirr�  c  sS   € Ü(¨Ó2€KÜ�,Ó×%Ñ%€FÙALÓMÁ¸#�—‘Ð4˜FÐ4 S§Y¡Y¨s£^Ð4Ó5Ò5ÁÑMÐMùÒMs   ¥-A)-rD   Ú
__future__r   Ú	itertoolsr   Úcollections.abcr   r   r   Úfnmatchr   r   Úpathlibr	   Útypingr
   r   Ú_distutils_hack.overrideÚ_distutils_hackrƒ   r   Ú	distutilsr   Údistutils.utilr   Ú
setuptoolsr   ÚchainÚfrom_iterablerË   r   r!   rG   ra   r�   rˆ   r“   rÍ   rÜ   rÞ   r1  r2  rW  rp  r�  r   r   r   Ú<module>r�     sÔ   ðñ%õN #ã Û 	ß 7Ñ 7Ý Ý Ý ß *ã å å Ý 'çÝ'à�_‰_×*Ñ*€
õ1÷
&ñ &÷ -"ñ -"ô`,A�Gô ,Aô^˜-ô ô3�7ô 3ô22TÐ1ô 2Tôj*˜\ô *õ<<÷
añ aõHõ$Qõõ0>÷DNr   