§
    WŠtj&S  ã                  óÔ  — d Z ddlmZ ddlZddlZddlmZmZmZ ddl	m
Z
 ddlmZ ddlmZ ddlmZmZ ddlZd	d
lmZ ddlmZ ddlmZ erddlmZ ej        j        Zd5d„Z G d„ d¦  «        Z G d„ d¦  «        Z  G d„ de ¦  «        Z! G d„ de!¦  «        Z" G d„ de ¦  «        Z# G d„ de"¦  «        Z$ G d„ d e#¦  «        Z%d6d%„Z& G d&„ d'¦  «        Z'd7d)„Z(d7d*„Z)d8d/„Z*d9d1„Z+d:d4„Z,dS );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)ÚDistributionÚpathr   ÚreturnÚboolc                ód   — t           j                             | ¦  «                             ¦   «         S ©N)Úosr   ÚbasenameÚisidentifier)r   s    úR/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/setuptools/discovery.pyÚ_valid_namer   ?   s$   € åŒ7×Ò˜DÑ!Ô!×.Ò.Ñ0Ô0Ð0ó    c                  ó*   — e Zd ZdZdd„Zdd	„Zdd
„ZdS )Ú_Filterzƒ
    Given a list of patterns, create a callable that will be true only if
    the input matches at least one of the patterns.
    ÚpatternsÚstrr   ÚNonec                óD   — t                                |¦  «        | _        d S r   )ÚdictÚfromkeysÚ	_patterns)Úselfr   s     r   Ú__init__z_Filter.__init__J   s   € ÝŸš xÑ0Ô0ˆŒˆˆr   Úitemr   c                óD   ‡— t          ˆfd„| j        D ¦   «         ¦  «        S )Nc              3  ó8   •K  — | ]}t          ‰|¦  «        V — Œd S r   r   )Ú.0Úpatr(   s     €r   ú	<genexpr>z#_Filter.__call__.<locals>.<genexpr>N   s-   øè è € ÐDÐD¨c•;˜t SÑ)Ô)ÐDÐDÐDÐDÐDÐDr   )Úanyr%   ©r&   r(   s    `r   Ú__call__z_Filter.__call__M   s(   ø€ ÝÐDÐDÐDÐD°T´^ÐDÑDÔDÑDÔDÐDr   c                ó   — || j         v S r   )r%   r/   s     r   Ú__contains__z_Filter.__contains__P   s   € Ø�t”~Ð%Ð%r   N)r   r    r   r!   )r(   r    r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r'   r0   r2   © r   r   r   r   D   s^   € € € € € ðð ð
1ð 1ð 1ð 1ðEð Eð Eð Eð&ð &ð &ð &ð &ð &r   r   c                  óh   — e Zd ZU dZdZded<   dZded<   e	 	 	 ddd„¦   «         Zedd„¦   «         Z	dS )Ú_Finderz@Base class that exposes functionality for module/package findersr7   zClassVar[tuple[str, ...]]ÚALWAYS_EXCLUDEÚDEFAULT_EXCLUDEú.©Ú*Úwherer   ÚexcludeúIterable[str]Úincluder   ú	list[str]c           	     óÀ   — |p| j         }t          |                      t          t	          |¦  «        ¦  «        t          g | j        ¢|¢R Ž t          |Ž ¦  «        ¦  «        S )aZ  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``.
        )r;   ÚlistÚ
_find_iterr   r    r   r:   ©Úclsr?   r@   rB   s       r   Úfindz_Finder.findZ   sf   € ð4 Ð0˜SÔ0ˆÝØ�NŠNÝ�S ™ZœZÑ(Ô(ÝÐ6˜Ô+Ð6¨gÐ6Ð6Ð6Ý˜Ð!ñô ñ
ô 
ð 	
r   r   úIterator[str]c                ó   — t           ‚r   )ÚNotImplementedErrorrG   s       r   rF   z_Finder._find_iter}   s
   € õ "Ð!r   N)r<   r7   r=   )r?   r   r@   rA   rB   rA   r   rC   ©r?   r   r@   r   rB   r   r   rJ   )
r3   r4   r5   r6   r:   Ú__annotations__r;   ÚclassmethodrI   rF   r7   r   r   r9   r9   T   s�   € € € € € € ØJÐJà02€NÐ2Ð2Ð2Ñ2Ø13€OÐ3Ð3Ð3Ñ3àð Ø!#Ø!'ð	 
ð  
ð  
ð  
ñ „[ð 
ðD ð"ð "ð "ñ „[ð"ð "ð "r   r9   c                  óF   — e Zd ZdZdZedd
„¦   «         Zedd„¦   «         ZdS )ÚPackageFinderzI
    Generate a list of all Python packages found within a directory
    )Úez_setupz*__pycache__r?   r   r@   r   rB   r   rJ   c              #  ó  K  — t          j        t          |¦  «        d¬¦  «        D ]Ú\  }}}|dd…         }g |dd…<   |D ]À}t           j                             ||¦  «        }	t           j                             |	|¦  «        }
|
                     t           j        j        d¦  «        }d|v s|                      |	|¦  «        sŒ‚ ||¦  «        r ||¦  «        s|V — |› d�|v s|› d�|v rŒ«| 	                    |¦  «         ŒÁŒÛdS )zy
        All the packages found in 'where' that pass the 'include' filter, but
        not the 'exclude' filter.
        T)ÚfollowlinksNr<   r>   ú.*)
r   Úwalkr    r   ÚjoinÚrelpathÚreplaceÚsepÚ_looks_like_packageÚappend)rH   r?   r@   rB   ÚrootÚdirsÚfilesÚall_dirsÚdirÚ	full_pathÚrel_pathÚpackages               r   rF   zPackageFinder._find_iter‹   s;  è è € õ "$¤­¨U©¬ÀÐ!FÑ!FÔ!Fð 	!ð 	!ÑˆD�$˜à˜A˜A˜A”wˆHØˆD���‰Gàð !ð !�ÝœGŸLšL¨¨sÑ3Ô3�	Ýœ7Ÿ?š?¨9°eÑ<Ô<�Ø"×*Ò*­2¬7¬;¸Ñ<Ô<�ð ˜#�:�: S×%<Ò%<¸YÈÑ%PÔ%P�:Øð �7˜7Ñ#Ô#ð "¨G¨G°GÑ,<Ô,<ð "Ø!�M�M�Mð �=�=�= GÐ+Ð+°'¨~¨~¨~ÀÐ/HÐ/HØð —’˜CÑ Ô Ð Ð ð'!ð	!ð 	!r   r   Ú_package_namer    r   c                ó|   — t           j                             t           j                             | d¦  «        ¦  «        S )z%Does a directory look like a package?ú__init__.py)r   r   ÚisfilerW   )r   re   s     r   r[   z!PackageFinder._looks_like_package­   s(   € õ Œw�~Š~�bœgŸlšl¨4°Ñ?Ô?Ñ@Ô@Ð@r   NrM   )r   r   re   r    r   r   )	r3   r4   r5   r6   r:   rO   rF   Ústaticmethodr[   r7   r   r   rQ   rQ   „   sj   € € € € € ðð ð 2€Nàð!ð !ð !ñ „[ð!ðB ðAð Að Añ „\ðAð Að Ar   rQ   c                  ó&   — e Zd Zed	d„¦   «         ZdS )
ÚPEP420PackageFinderÚ_pathr   re   r    r   r   c                ó   — dS )NTr7   )rl   re   s     r   r[   z'PEP420PackageFinder._looks_like_package´   s   € àˆtr   N)rl   r   re   r    r   r   )r3   r4   r5   ri   r[   r7   r   r   rk   rk   ³   s2   € € € € € Øðð ð ñ „\ðð ð r   rk   c                  ó@   — e Zd ZdZedd	„¦   «         Z ee¦  «        Zd
S )ÚModuleFinderzYFind isolated Python modules.
    This function will **not** recurse subdirectories.
    r?   r   r@   r   rB   r   rJ   c              #  óH  K  — t          t          j                             |d¦  «        ¦  «        D ]q}t          j                             t          j                             |¦  «        ¦  «        \  }}|                      |¦  «        sŒW ||¦  «        r ||¦  «        s|V — Œrd S )Nz*.py)r	   r   r   rW   Úsplitextr   Ú_looks_like_module)rH   r?   r@   rB   ÚfileÚmoduleÚ_exts          r   rF   zModuleFinder._find_iter¾   s¤   è è € õ �œŸš e¨VÑ4Ô4Ñ5Ô5ð 	ð 	ˆDÝœ7×+Ò+­B¬G×,<Ò,<¸TÑ,BÔ,BÑCÔC‰LˆF�Dà×)Ò)¨&Ñ1Ô1ð Øàˆw�v‰Œð  w w¨v¡¤ð Ø���øð	ð 	r   NrM   )	r3   r4   r5   r6   rO   rF   ri   r   rr   r7   r   r   ro   ro   ¹   sL   € € € € € ðð ð ð
ð 
ð 
ñ „[ð
ð &˜ kÑ2Ô2ÐÐÐr   ro   c                  óh   — e Zd ZdZ e ed„ eD ¦   «         ¦  «        ¦  «        Z	 edd	„¦   «         Zd
S )ÚFlatLayoutPackageFinder)#Ú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ú[._]*c              #  ó$   K  — | ]}||› d �fV — ŒdS )rU   Nr7   )r+   Úps     r   r-   z!FlatLayoutPackageFinder.<genexpr>ü   s,   è è € Ð&GÐ&G¸¨¨a¨8¨8¨8 }Ð&GÐ&GÐ&GÐ&GÐ&GÐ&Gr   rl   r   Úpackage_namer    r   r   c                óÜ   — |                      d¦  «        }|d                              ¦   «         p|d                              d¦  «        }|o t          d„ |dd …         D ¦   «         ¦  «        S )Nr<   r   ú-stubsc              3  ó>   K  — | ]}|                      ¦   «         V — Œd S r   )r   )r+   Únames     r   r-   z>FlatLayoutPackageFinder._looks_like_package.<locals>.<genexpr>  s.   è è € Ð(SÐ(SÀ¨×):Ò):Ñ)<Ô)<Ð(SÐ(SÐ(SÐ(SÐ(SÐ(Sr   r   )Úsplitr   ÚendswithÚall)rl   r�   ÚnamesÚroot_pkg_is_valids       r   r[   z+FlatLayoutPackageFinder._looks_like_packageÿ   sl   € à×"Ò" 3Ñ'Ô'ˆà! !œH×1Ò1Ñ3Ô3ÐR°u¸Q´x×7HÒ7HÈÑ7RÔ7RÐØ ÐS¥SÐ(SÐ(SÈÈqÈrÈrÌÐ(SÑ(SÔ(SÑ%SÔ%SÐSr   N)rl   r   r�   r    r   r   )	r3   r4   r5   Ú_EXCLUDEÚtupleÚ
chain_iterr;   ri   r[   r7   r   r   rw   rw   Ò   sm   € € € € € ð'€HðR �e˜J˜JÐ&GÐ&G¸hÐ&GÑ&GÔ&GÑGÔGÑHÔH€OØ àðTð Tð Tñ „\ðTð Tð Tr   rw   c                  ó   — e Zd ZdZdS )ÚFlatLayoutModuleFinder)ÚsetupÚconftestr‚   rƒ   r†   r‡   r�   ÚtoxfileÚnoxfileÚpavementÚdodor’   r“   z[Ss][Cc]onstructÚ	conanfileÚmanager•   r–   r—   r˜   rš   N)r3   r4   r5   r;   r7   r   r   r«   r«     s   € € € € € ð€Oð4 *Ð)r   r«   Úroot_pkgr    Úpkg_dirrC   c                ó\   ‡ — t                                |¦  «        }‰ gˆ fd„|D ¦   «         z   S )Nc                ó>   •— g | ]}d                       ‰|f¦  «        ‘ŒS )r<   )rW   )r+   Únr´   s     €r   ú
<listcomp>z)_find_packages_within.<locals>.<listcomp>'  s)   ø€ ÐAÐAÐA°Q˜Ÿš 8¨Q -Ñ0Ô0ÐAÐAÐAr   )rk   rI   )r´   rµ   Únesteds   `  r   Ú_find_packages_withinr»   %  s8   ø€ Ý ×%Ò% gÑ.Ô.€FØˆ:ÐAÐAÐAÐA¸&ÐAÑAÔAÑAÐAr   c                  óº   — e Zd ZdZd%d„Zd„ Zd„ Zed&d
„¦   «         Zed'd„¦   «         Z		 d(d)d„Z
d*d„Zd*d„Zd+d„Zd+d„Zd+d„Zd+d„Zd+d„Zd,d„Zd-d „Zd.d"„Zd.d#„Zd$S )/ÚConfigDiscoveryz…Fill-in metadata and options that can be automatically derived
    (from other metadata/options, the file system or conventions)
    Údistributionr   r   r!   c                ó>   — || _         d| _        d| _        d| _        d S )NF)rŽ   Ú_calledÚ	_disabledÚ_skip_ext_modules)r&   r¾   s     r   r'   zConfigDiscovery.__init__/  s%   € Ø ˆŒ	ØˆŒØˆŒØ!&ˆÔÐÐr   c                ó   — d| _         dS )z+Internal API to disable automatic discoveryTN)rÁ   ©r&   s    r   Ú_disablezConfigDiscovery._disable5  s   € àˆŒˆˆr   c                ó   — d| _         dS )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_modulesz#ConfigDiscovery._ignore_ext_modules9  s   € ð "&ˆÔÐÐr   r   c                ó2   — | j         j        pt          j        S r   )rŽ   Úsrc_rootr   ÚcurdirrÄ   s    r   Ú	_root_dirzConfigDiscovery._root_dirE  s   € ð ŒyÔ!Ð.¥R¤YÐ.r   údict[str, str]c                ó6   — | j         j        €i S | j         j        S r   )rŽ   Úpackage_dirrÄ   s    r   Ú_package_dirzConfigDiscovery._package_dirJ  s   € àŒ9Ô Ð(ØˆIØŒyÔ$Ð$r   FTÚforcer   r¡   Úignore_ext_modulesc                ó’   — |du r| j         s| j        rdS |                      |¦  «         |r|                      ¦   «          d| _         dS )a±  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   r0   zConfigDiscovery.__call__P  sX   € ð �Eˆ>ˆ>˜tœ|ˆ>¨t¬~ˆ>àˆFà×$Ò$Ð%7Ñ8Ô8Ð8Øð 	 Ø×ÒÑÔÐàˆŒˆˆr   c                ó´   — |p| j         }| j        j        du p| }| j        j        dup0| j        j        dup"|p t          | j        d¦  «        o| j        j        S )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_specifiedz%ConfigDiscovery._explicitly_specifiedg  sw   € à/ÐI°4Ô3IÐØœ9Ô0°DÐ8ÐNÐ<NÐOˆàŒIÔ dÐ*ð (ØŒyÔ#¨4Ð/ð(àð(õ �t”y /Ñ2Ô2ð (Ø”	Ô'ð	
r   c                óÐ   — |                       |¦  «        rdS t          j        d¦  «         |                      ¦   «         p'|                      ¦   «         p|                      ¦   «         S )NTzLNo `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Ó   z'ConfigDiscovery._analyse_package_layoutt  sy   € Ø×%Ò%Ð&8Ñ9Ô9ð 	ð �4åŒ	ð#ñ	
ô 	
ð 	
ð ×)Ò)Ñ+Ô+ð +Ø×'Ò'Ñ)Ô)ð+ð ×(Ò(Ñ*Ô*ð		
r   c                óx  ‡— | j                              ¦   «         }|                     dd¦  «         | j        Š|sdS t	          j        d|› �¦  «         t          ˆfd„|                     ¦   «         D ¦   «         ¦  «        }t          |¦  «        | j	        _
        t	          j        d| j	        j
        › �¦  «         dS )zAThe user can explicitly give a package layout via ``package_dir``Ú NFz(`explicit-layout` detected -- analysing c              3  óz   •K  — | ]5\  }}t          |t          j                             ‰|¦  «        ¦  «        V — Œ6d S r   )r»   r   r   rW   )r+   ÚpkgÚ
parent_dirÚroot_dirs      €r   r-   z;ConfigDiscovery._analyse_explicit_layout.<locals>.<genexpr>�  sU   øè è € ð 
ð 
á��Zõ " #¥r¤w§|¢|°H¸jÑ'IÔ'IÑJÔJð
ð 
ð 
ð 
ð 
ð 
r   údiscovered packages -- T)rÏ   ÚcopyÚpoprË   r   rÝ   r©   ÚitemsrE   rŽ   rØ   )r&   rÎ   Úpkgsræ   s      @r   rÞ   z(ConfigDiscovery._analyse_explicit_layout†  sÎ   ø€ àÔ'×,Ò,Ñ.Ô.ˆØ�Š˜˜DÑ!Ô!Ð!Ø”>ˆàð 	Ø�5åŒ	ÐJ¸[ÐJÐJÑKÔKÐKÝð 
ð 
ð 
ð 
à#.×#4Ò#4Ñ#6Ô#6ð
ñ 
ô 
ñ 
ô 
ˆõ " $™ZœZˆŒ	ÔÝŒ	Ð@¨D¬IÔ,>Ð@Ð@ÑAÔAÐAØˆtr   c                óˆ  — | j         }t          j                             | j        |                     dd¦  «        ¦  «        }t          j                             |¦  «        sdS t          j        d|› �¦  «         | 	                    dt          j         
                    |¦  «        ¦  «         || j        _        t                               |¦  «        | j        _        t                                |¦  «        | j        _        t          j        d| j        j        › �¦  «         t          j        d| j        j        › �¦  «         dS )a®  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   rW   rË   ÚgetÚisdirr   rÝ   Ú
setdefaultr   rŽ   rÎ   rk   rI   rØ   ro   rÙ   )r&   rÎ   Úsrc_dirs      r   rß   z#ConfigDiscovery._analyse_src_layout˜  s  € ð Ô'ˆÝ”'—,’,˜tœ~¨{¯ª¸rÀ5Ñ/IÔ/IÑJÔJˆÝŒw�}Š}˜WÑ%Ô%ð 	Ø�5åŒ	ÐA¸ÐAÐAÑBÔBÐBØ×Ò˜r¥2¤7×#3Ò#3°GÑ#<Ô#<Ñ=Ô=Ð=Ø +ˆŒ	ÔÝ0×5Ò5°gÑ>Ô>ˆŒ	ÔÝ+×0Ò0°Ñ9Ô9ˆŒ	ÔÝŒ	Ð@¨D¬IÔ,>Ð@Ð@ÑAÔAÐAÝŒ	ÐD¨d¬iÔ.BÐDÐDÑEÔEÐEØˆtr   c                óŠ   — t          j        d| j        › �¦  «         |                      ¦   «         p|                      ¦   «         S )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à   z$ConfigDiscovery._analyse_flat_layout±  sB   € õ 	Œ	ÐI¸¼ÐIÐIÑJÔJÐJØ×*Ò*Ñ,Ô,ÐL°×0JÒ0JÑ0LÔ0LÐLr   c                ó,  — t                                | j        ¦  «        | j        _        t          t          | j        j        ¦  «        ¦  «        }t          j        d| j        j        › �¦  «         |  	                    |d¦  «         t          |¦  «        S )Nrç   rØ   )rw   rI   rË   rŽ   rØ   Úremove_nested_packagesÚremove_stubsr   rÝ   Ú_ensure_no_accidental_inclusionr   )r&   Ú	top_levels     r   rô   z&ConfigDiscovery._analyse_flat_packages¾  sv   € Ý4×9Ò9¸$¼.ÑIÔIˆŒ	ÔÝ*­<¸¼	Ô8JÑ+KÔ+KÑLÔLˆ	ÝŒ	Ð@¨D¬IÔ,>Ð@Ð@ÑAÔAÐAØ×,Ò,¨Y¸
ÑCÔCÐCÝ�I‰ŒÐr   c                ó  — t                                | j        ¦  «        | j        _        t          j        d| j        j        › �¦  «         |                      | j        j        d¦  «         t          | j        j        ¦  «        S )Nrî   Úmodules)	r«   rI   rË   rŽ   rÙ   r   rÝ   rù   r   rÄ   s    r   rõ   z%ConfigDiscovery._analyse_flat_modulesÅ  sh   € Ý5×:Ò:¸4¼>ÑJÔJˆŒ	ÔÝŒ	ÐD¨d¬iÔ.BÐDÐDÑEÔEÐEØ×,Ò,¨T¬YÔ-AÀ9ÑMÔMÐMÝ�D”IÔ(Ñ)Ô)Ð)r   ÚdetectedrC   Úkindr    c                ó„   — t          |¦  «        dk    r,ddlm} ddlm} d|› d|› d|› d�} | ||¦  «        ¦  «        ‚d S )	Nr   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.
            )ÚlenÚinspectr   Úsetuptools.errorsr  )r&   rý   rþ   r   r  Úmsgs         r   rù   z/ConfigDiscovery._ensure_no_accidental_inclusionË  s�   € Ýˆx‰=Œ=˜1ÒÐØ(Ð(Ð(Ð(Ð(Ð(à?Ð?Ð?Ð?Ð?Ð?ð¨$ð ð Èhð ð ð
 NRðð ð ˆCð (Ð'¨¨°©¬Ñ6Ô6Ð6ð) Ðr   c                óæ   — | j         j        j        s| j         j        rdS t          j        d¦  «         |                      ¦   «         p|                      ¦   «         }|r|| j         j        _        dS dS )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Ô   zConfigDiscovery.analyse_nameâ  s†   € ð Œ9ÔÔ"ð 	 d¤i¤nð 	àˆFåŒ	ÐKÑLÔLÐLð ×4Ò4Ñ6Ô6ð /Ø×,Ò,Ñ.Ô.ð 	ð ð 	+Ø&*ˆDŒIÔÔ#Ð#Ð#ð	+ð 	+r   ú
str | Nonec                ó¸   — dD ]V}t          | j        |d¦  «        pg }|r:t          |¦  «        dk    r't          j        d|d         › �¦  «         |d         c S ŒWdS )zExactly one module or package)rØ   rÙ   Nr   z&Single module/package detected, name: r   )ÚgetattrrŽ   r  r   rÝ   )r&   Úfieldrê   s      r   r  z3ConfigDiscovery._find_name_single_package_or_moduleó  so   € à/ð 	 ð 	 ˆEÝ˜DœI u¨dÑ3Ô3Ð9°rˆEØð  �˜U™œ qš˜Ý”	ÐMÀ5ÈÄ8ÐMÐMÑNÔNÐNØ˜Q”x���øàˆtr   c                ó"  — | j         j        sdS t          t          | j         j        t          ¬¦  «        ¦  «        }| j         j        pi }t          ||| j        ¦  «        }|rt          j	        d|› �¦  «         |S t          j
        d¦  «         dS )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Ø   rø   Úsortedr  rÎ   Úfind_parent_packagerË   r   rÝ   Úwarn)r&   rØ   rÎ   Ú
parent_pkgs       r   r	  z(ConfigDiscovery._find_name_from_packagesý  s’   € àŒyÔ!ð 	Ø�4å¥ t¤yÔ'9½sÐ CÑ CÔ CÑDÔDˆØ”iÔ+Ð1¨rˆå(¨°;ÀÄÑOÔOˆ
Øð 	ÝŒIÐK¸zÐKÐKÑLÔLÐLØÐåŒÐJÑKÔKÐKØˆtr   N)r¾   r   r   r!   )r   r   )r   rÌ   )FTF)rÐ   r   r¡   r   rÑ   r   r   r!   )rÑ   r   r   r   )r   r   )rý   rC   rþ   r    )r   r!   )r   r
  )r3   r4   r5   r6   r'   rÅ   rÇ   ÚpropertyrË   rÏ   r0   rÛ   rÓ   rÞ   rß   rà   rô   rõ   rù   rÔ   r  r	  r7   r   r   r½   r½   *  s�  € € € € € ðð ð'ð 'ð 'ð 'ðð ð ð
&ð 
&ð 
&ð ð/ð /ð /ñ „Xð/ð ð%ð %ð %ñ „Xð%ð RWðð ð ð ð ð.
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð$ð ð ð ð$ð ð ð ð2Mð Mð Mð Mðð ð ð ð*ð *ð *ð *ð7ð 7ð 7ð 7ð.+ð +ð +ð +ð"ð ð ð ðð ð ð ð ð r   r½   rØ   c                ó  ‡— t          | t          ¬¦  «        }|dd…         }t          |¦  «        }t          t          |¦  «        ¦  «        D ];\  }Št	          ˆfd„|D ¦   «         ¦  «        r|                     ||z
  dz
  ¦  «         Œ<|S )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']
    r  Nc              3  óH   •K  — | ]}‰                      |› d �¦  «        V — ŒdS ©r<   N©Ú
startswith)r+   Úotherr¡   s     €r   r-   z)remove_nested_packages.<locals>.<genexpr>  s5   øè è € ÐCÐC°ˆt�Š %˜{˜{˜{Ñ+Ô+ÐCÐCÐCÐCÐCÐCr   r   )r  r  Ú	enumerateÚreversedr.   ré   )rØ   rë   rú   ÚsizeÚir¡   s        @r   r÷   r÷     s–   ø€ õ �(¥Ð$Ñ$Ô$€DØ�Q�Q�Q”€IÝˆt‰9Œ9€DÝ�X d™^œ^Ñ,Ô,ð (ð (‰ˆˆ4ÝÐCÐCÐCÐC¸ÐCÑCÔCÑCÔCð 	(Ø�MŠM˜$ ™( Q™,Ñ'Ô'Ð'øàÐr   c                ó   — d„ | D ¦   «         S )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']
    c                ón   — g | ]2}|                      d ¦  «        d                              d¦  «        °0|‘Œ3S )r<   r   rŸ   )r¢   r£   )r+   rä   s     r   r¹   z remove_stubs.<locals>.<listcomp>&  s:   € ÐPÐPÐP�C¨3¯9ª9°S©>¬>¸!Ô+<×+EÒ+EÀhÑ+OÔ+OÐPˆCÐPÐPÐPr   r7   )rØ   s    r   rø   rø      s   € ð QÐP˜8ÐPÑPÔPÐPr   rÎ   úMapping[str, str]ræ   r
  c                óŽ  ‡— t          | t          ¬¦  «        } g }t          | ¦  «        D ]B\  }Št          ˆfd„| |dz   d…         D ¦   «         ¦  «        s n|                     ‰¦  «         ŒC|D ]VŠt          ‰||¦  «        }t          j                             |d¦  «        }t          j         	                    |¦  «        r‰c S ŒWdS )z0Find the parent package that is not a namespace.r  c              3  óH   •K  — | ]}|                      ‰› d �¦  «        V — ŒdS r  r  )r+   r¸   r¡   s     €r   r-   z&find_parent_package.<locals>.<genexpr>0  s5   øè è € ÐGÐG°�1—<’< 4 
 
 
Ñ+Ô+ÐGÐGÐGÐGÐGÐGr   r   Nrg   )
r  r  r  r¤   r\   Úfind_package_pathr   r   rW   rh   )rØ   rÎ   ræ   Úcommon_ancestorsr  Úpkg_pathÚinitr¡   s          @r   r  r  )  sè   ø€ õ �h¥CÐ(Ñ(Ô(€HØÐÝ˜XÑ&Ô&ð &ð &‰ˆˆ4ÝÐGÐGÐGÐG°X¸aÀ!¹e¸g¸gÔ5FÐGÑGÔGÑGÔGð 	ð
 ˆEØ×Ò Ñ%Ô%Ð%Ð%à ð ð ˆÝ$ T¨;¸ÑAÔAˆÝŒw�|Š|˜H mÑ4Ô4ˆÝŒ7�>Š>˜$ÑÔð 	ØˆKˆKˆKð	ð ˆ4r   r¡   c                óŠ  — |                       d¦  «        }t          t          |¦  «        dd¦  «        D ]M}d                     |d|…         ¦  «        }||v r*||         }t	          j        j        ||g||d…         ¢R Ž c S ŒN|                     d¦  «        pd}t	          j        j        |g|                      d¦  «        ¢|¢R Ž S )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<   r   éÿÿÿÿNrâ   ú/)r¢   Úranger  rW   r   r   rï   )r¡   rÎ   ræ   Úpartsr  Úpartial_nameÚparents          r   r%  r%  A  sÔ   € ð, �JŠJ�s‰OŒO€EÝ•3�u‘:”:˜q "Ñ%Ô%ð >ð >ˆà—x’x  b q b¤	Ñ*Ô*ˆØ˜;Ð&Ð&Ø  Ô.ˆFÝ”7”< ¨&Ð=°5¸¸¸´9Ð=Ð=Ð=Ð=Ð=Ð=ð 'ð �_Š_˜RÑ Ô Ð& B€FÝŒ7Œ<˜Ð= 6§<¢<°Ñ#4Ô#4Ð=°uÐ=Ð=Ð=Ð=r   Úpackage_pathrÌ   c                óf   ‡— t          | ¦  «        }t          |¦  «        j        Šˆfd„|D ¦   «         S )Nc           	     ój   •— i | ]/}|d                       g ‰¢|                     d¦  «        ¢¦  «        “Œ0S )r+  r<   )rW   r¢   )r+   rä   Úprefixs     €r   ú
<dictcomp>z)construct_package_dir.<locals>.<dictcomp>f  s<   ø€ ÐMÐMÐM¸#ˆC�—’Ð4˜FÐ4 S§Y¢Y¨s¡^¤^Ð4Ñ5Ô5ÐMÐMÐMr   )r÷   r
   r-  )rØ   r0  Úparent_pkgsr3  s      @r   Úconstruct_package_dirr6  c  s:   ø€ Ý(¨Ñ2Ô2€KÝ�,ÑÔÔ%€FØMÐMÐMÐMÀÐMÑMÔMÐMr   )r   r   r   r   )r´   r    rµ   r   r   rC   )rØ   rC   r   rC   )rØ   rC   rÎ   r"  ræ   r   r   r
  )r¡   r    rÎ   r"  ræ   r   r   r    )rØ   rC   r0  r   r   rÌ   )-r6   Ú
__future__r   Ú	itertoolsr   Úcollections.abcr   r   r   Úfnmatchr   r	   Úpathlibr
   Útypingr   r   Ú_distutils_hack.overrideÚ_distutils_hackrl   r   Ú	distutilsr   Údistutils.utilr   Ú
setuptoolsr   ÚchainÚfrom_iterabler©   r   r   r9   rQ   rk   ro   rw   r«   r»   r½   r÷   rø   r  r%  r6  r7   r   r   ú<module>rD     s  ðð%ð %ðN #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø 	€	€	€	Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *à Ð Ð Ð à Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'àð (Ø'Ð'Ð'Ð'Ð'Ð'àŒ_Ô*€
ð1ð 1ð 1ð 1ð
&ð &ð &ð &ð &ñ &ô &ð &ð -"ð -"ð -"ð -"ð -"ñ -"ô -"ð -"ð`,Að ,Að ,Að ,Að ,A�Gñ ,Aô ,Að ,Að^ð ð ð ð ˜-ñ ô ð ð3ð 3ð 3ð 3ð 3�7ñ 3ô 3ð 3ð22Tð 2Tð 2Tð 2Tð 2TÐ1ñ 2Tô 2Tð 2Tðj*ð *ð *ð *ð *˜\ñ *ô *ð *ð<Bð Bð Bð Bð
að að að að añ aô að aðHð ð ð ð$Qð Qð Qð Qðð ð ð ð0>ð >ð >ð >ðDNð Nð Nð Nð Nð Nr   