Ë
    
_ßdRD  ã                   óè  — d Z ddlZddlZddlmZ ddlmZ ddlmZm	Z	m
Z
mZmZmZmZ ddlmZmZ ddlmZ d	d
lmZ d	dlmZmZ d	dlmZ erddlmZ eeej>                  f   Z  ejB                  e"«      Z#de de$fd„Z%de$de de&fd„Z'	 d"ddde ddfd„Z(	 	 	 d#de ded   fd„Z)	 	 	 d$de$dee    de&ded   de$f
d„Z* G d„ d«      Z+d„ Z,ede&fd„«       Z- G d„ dej\                  «      Z/ G d „ d!e«      Z0y)%ac  
Load setuptools configuration from ``pyproject.toml`` files.

**PRIVATE MODULE**: API reserved for setuptools internal usage only.

To read project metadata, consider using
``build.util.project_wheel_metadata`` (https://pypi.org/project/build/).
For simple scenarios, you can also try parsing the file directly
with the help of ``tomllib`` or ``tomli``.
é    N)Úcontextmanager)Úpartial)ÚTYPE_CHECKINGÚCallableÚDictÚMappingÚOptionalÚSetÚUnioné   )Ú	FileErrorÚOptionError)ÚSetuptoolsWarningé   )Úexpand)Ú_PREVIOUSLY_DEFINEDÚ_WouldIgnoreField)Úapply©ÚDistributionÚfilepathÚreturnc                 ót   — ddl m} t        | d«      5 }|j                  |«      cd d d «       S # 1 sw Y   y xY w)Nr   )ÚtomliÚrb)Úsetuptools.externr   ÚopenÚload)r   r   Úfiles      úA/usr/lib/python3/dist-packages/setuptools/config/pyprojecttoml.pyÚ	load_filer!      s2   € Ý'ä	ˆh˜Ó	ð   Ø�z‰z˜$Ó÷ ÷  ò  ús   “.®7Úconfigc                 óÒ  — ddl m} |j                  j                  d«      }t	        |d«      r|j                  «        	 |j                  | «      S # |j                  $ r‡}d|j                  › �}|j                  j                  d«      dk7  r4t        j                  |«       t        j                  |j                  «       d|j                  › d	�}t        |› d
|› �«      d ‚d }~ww xY w)Nr   )Ú_validate_pyprojectztrove-classifierÚ_disable_downloadzconfiguration error: ú`Úprojectzinvalid pyproject.toml config: ú.ú
)Ú r$   ÚFORMAT_FUNCTIONSÚgetÚhasattrr%   ÚvalidateÚValidationErrorÚsummaryÚnameÚstripÚ_loggerÚdebugÚdetailsÚ
ValueError)r"   r   Ú	validatorÚtrove_classifierÚexr0   Úerrors          r    r.   r.   %   sÌ   € Ý2à ×1Ñ1×5Ñ5Ð6HÓIÐÜÐÐ!4Ô5à×*Ñ*Ô,ð
:Ø×!Ñ! &Ó)Ð)øØ×$Ñ$ò :Ø)¨"¯*©*¨Ð6ˆØ�7‰7�=‰=˜Ó Ò*ä�M‰M˜'Ô"Ü�M‰M˜"Ÿ*™*Ô%à1°"·'±'°¸!Ð<ˆÜ˜E˜7 " W IÐ.Ó/°TÐ9ûð:ús   ¿A ÁC&ÁBC!Ã!C&Údistr   c                 ó8   — t        |d|| «      }t        | ||«      S )zeApply the configuration from a ``pyproject.toml`` file into an existing
    distribution object.
    T)Úread_configurationÚ_apply)r;   r   Úignore_option_errorsr"   s       r    Úapply_configurationr@   :   s$   € ô   ¨$Ð0DÀdÓK€FÜ�$˜ Ó)Ð)ó    c                 óÂ  — t         j                  j                  | «      } t         j                  j                  | «      st	        d| ›d�«      ‚t        | «      xs i }|j                  di «      }|j                  di «      }|j                  di «      }|r|s|si S d|v rt        j                  d¬«       |r*t        |d	d
«      �|j                  d|j                  «       n|j                  dd«       ||d<   ||d<   t        |«      5  |d|idœ}t        || «       d
d
d
«       |r-t         j                  j                  | «      }	t        ||	||«      S |S # 1 sw Y   Œ:xY w)aÉ  Read given configuration file and returns options from it as a dict.

    :param str|unicode filepath: Path to configuration file in the ``pyproject.toml``
        format.

    :param bool expand: Whether to expand directives and other computed values
        (i.e. post-process the given configuration)

    :param bool ignore_option_errors: Whether to silently ignore
        options, values of which could not be resolved (e.g. due to exceptions
        in directives such as file:, attr:, etc.).
        If False exceptions are propagated as expected.

    :param Distribution|None: Distribution object to which the configuration refers.
        If not given a dummy object will be created and discarded after the
        configuration is read. This is used for auto-discovery of packages and in the
        case a dynamic configuration (e.g. ``attr`` or ``cmdclass``) is expanded.
        When ``expand=False`` this object is simply ignored.

    :rtype: dict
    zConfiguration file z does not exist.r'   ÚtoolÚ
setuptoolsÚ	distutilsz[tool.distutils])ÚsubjectÚinclude_package_dataNzinclude-package-dataT)r'   rC   )ÚosÚpathÚabspathÚisfiler   r!   r,   Ú_ExperimentalConfigurationÚemitÚgetattrÚ
setdefaultrG   Ú_ignore_errorsr.   ÚdirnameÚexpand_configuration)
r   r   r?   r;   ÚasdictÚproject_tableÚ
tool_tableÚsetuptools_tableÚsubsetÚroot_dirs
             r    r=   r=   F   sX  € ô6 �w‰w�‰˜xÓ(€Hä�7‰7�>‰>˜(Ô#ÜÐ-¨h¨\Ð9IÐJÓKÐKä�xÓ Ò& B€FØ—J‘J˜y¨"Ó-€MØ—‘˜F BÓ'€JØ!—~‘~ l°BÓ7ÐÙ™-Ñ+;Øˆ	à�jÑ Ü"×'Ñ'Ð0BÐ'ÔCñ ”˜Ð4°dÓ;ÐGØ×#Ñ#Ð$:¸D×<UÑ<UÕVà×#Ñ#Ð$:¸DÔAà€Fˆ6�NØ/€Jˆ|Ñä	Ð,Ó	-ñ #à*°\ÐCSÐ4TÑUˆÜ�˜Ô"÷#ñ
 Ü—7‘7—?‘? 8Ó,ˆÜ# F¨HÐ6JÈDÓQÐQà€M÷#ð #ús   ÄEÅErX   r?   c                 ó:   — t        | |||«      j                  «       S )a®  Given a configuration with unresolved fields (e.g. dynamic, cmdclass, ...)
    find their final values.

    :param dict config: Dict containing the configuration for the distribution
    :param str root_dir: Top-level directory for the distribution/project
        (the same directory where ``pyproject.toml`` is place)
    :param bool ignore_option_errors: see :func:`read_configuration`
    :param Distribution|None: Distribution object to which the configuration refers.
        If not given a dummy object will be created and discarded after the
        configuration is read. Used in the case a dynamic configuration
        (e.g. ``attr`` or ``cmdclass``).

    :rtype: dict
    )Ú_ConfigExpanderr   )r"   rX   r?   r;   s       r    rR   rR   ˆ   s   € ô( ˜6 8Ð-AÀ4ÓH×OÑOÓQÐQrA   c            
       óf  — e Zd Z	 	 	 ddedee   deded   fd„Zd d	„Zd
ede	de
fd„Zd!d„Zd„ Zd„ Zd„ Zdee	e	f   fd„Zdddee	e	f   fd„Zddde	fd„Zde	dee	e	f   fd„Zddde	dee	e	f   fd„Zdddee	e	f   fd„Zdddeee	e	f      fd„Zdddee	e	f   deee	ef      fd„Zd"d„Zd"d„Zd"d„Zy)#rZ   Nr"   rX   r?   r;   r   c                 ó†  — || _         |xs t        j                  «       | _        |j	                  di «      | _        | j
                  j	                  dg «      | _        |j	                  di «      j	                  di «      | _        | j                  j	                  di «      | _        || _	        || _
        t        «       | _        y )Nr'   ÚdynamicrC   rD   )r"   rH   ÚgetcwdrX   r,   Úproject_cfgr]   Úsetuptools_cfgÚdynamic_cfgr?   Ú_distÚsetÚ_referenced_files)Úselfr"   rX   r?   r;   s        r    Ú__init__z_ConfigExpander.__init__    sž   € ð ˆŒØ Ò/¤B§I¡I£KˆŒØ!Ÿ:™: i°Ó4ˆÔØ×'Ñ'×+Ñ+¨I°rÓ:ˆŒØ$Ÿj™j¨°Ó4×8Ñ8¸ÀrÓJˆÔØ×.Ñ.×2Ñ2°9¸bÓAˆÔØ$8ˆÔ!ØˆŒ
Ü+.«5ˆÕrA   r   c                 óŒ   — ddl m} | j                  | j                  j	                  dd «      dœ}| j
                  xs  ||«      S )Nr   r   r1   )Úsrc_rootr1   )Úsetuptools.distr   rX   r_   r,   rb   )re   r   Úattrss      r    Ú_ensure_distz_ConfigExpander._ensure_dist±   s;   € Ý0à!Ÿ]™]°D×4DÑ4D×4HÑ4HÈÐQUÓ4VÑWˆØ�z‰zÒ0™\¨%Ó0Ð0rA   Ú	containerÚfieldÚfnc                 ó~   — ||v r-t        | j                  «      5   |||   «      ||<   d d d «       y y # 1 sw Y   y xY w©N)rP   r?   )re   rl   rm   rn   s       r    Ú_process_fieldz_ConfigExpander._process_field·   sK   € Ø�IÑÜ × 9Ñ 9Ó:ñ 8Ù#% i°Ñ&6Ó#7�	˜%Ñ ÷8ð 8ð ÷8ð 8ús   š3³<c                 ód   — | j                   j                  |i «      }t        j                  |«      S rp   )r`   r,   Ú_expandÚcanonic_package_data)re   rm   Úpackage_datas      r    Ú_canonic_package_dataz%_ConfigExpander._canonic_package_data¼   s+   € Ø×*Ñ*×.Ñ.¨u°bÓ9ˆÜ×+Ñ+¨LÓ9Ð9rA   c                 óÔ  — | j                  «        | j                  «        | j                  d«       | j                  «       }t        || j                  | j
                  «      }|5 }|j                  }| j                  «        | j                  |«       | j                  ||«       d d d «       |j                  j                  | j                  «       | j                  S # 1 sw Y   Œ:xY w)Nzexclude-package-data)Ú_expand_packagesrv   rk   Ú_EnsurePackagesDiscoveredr_   r`   Úpackage_dirÚ_expand_data_filesÚ_expand_cmdclassÚ_expand_all_dynamicrd   Úupdater"   )re   r;   ÚctxÚensure_discoveredrz   s        r    r   z_ConfigExpander.expandÀ   sÉ   € Ø×ÑÔØ×"Ñ"Ô$Ø×"Ñ"Ð#9Ô:ð × Ñ Ó"ˆÜ'¨¨d×.>Ñ.>À×@SÑ@SÓTˆØð 	8Ð%Ø+×7Ñ7ˆKØ×#Ñ#Ô%Ø×!Ñ! +Ô.Ø×$Ñ$ T¨;Ô7÷		8ð 	×Ñ×%Ñ% d×&<Ñ&<Ô=Ø�{‰{Ð÷	8ð 	8ús   Á%A CÃC'c                 ó¤  — | j                   j                  d«      }|�t        |t        t        f«      ry |j                  d«      }t        |t
        «      ro| j                  |d<   | j                   j                  di «      |d<   t        | j                  «      5  t        j                  di |¤Ž| j                   d<   d d d «       y y # 1 sw Y   y xY w)NÚpackagesÚfindrX   úpackage-dirÚfill_package_dir© )r`   r,   Ú
isinstanceÚlistÚtupleÚdictrX   rO   rP   r?   rs   Úfind_packages)re   r‚   rƒ   s      r    rx   z _ConfigExpander._expand_packagesÑ   sÃ   € Ø×&Ñ&×*Ñ*¨:Ó6ˆØÐœz¨(´T¼5°MÔBØà�|‰|˜FÓ#ˆÜ�dœDÔ!Ø#Ÿ}™}ˆD�ÑØ'+×':Ñ':×'EÑ'EÀmÐUWÓ'XˆDÐ#Ñ$Ü × 9Ñ 9Ó:ñ PÜ29×2GÑ2GÑ2OÈ$Ñ2O�×#Ñ# JÑ/÷Pð Pð "÷Pð Pús   Â#CÃCc                 óˆ   — t        t        j                  | j                  ¬«      }| j	                  | j
                  d|«       y )N)rX   z
data-files)r   rs   Úcanonic_data_filesrX   rq   r`   )re   Ú
data_filess     r    r{   z"_ConfigExpander._expand_data_filesÝ   s0   € ÜœW×7Ñ7À$Ç-Á-ÔPˆ
Ø×Ñ˜D×/Ñ/°¸zÕJrA   rz   c                 óŽ   — | j                   }t        t        j                  ||¬«      }| j	                  | j
                  d|«       y )N)rz   rX   Úcmdclass)rX   r   rs   r�   rq   r`   )re   rz   rX   r�   s       r    r|   z _ConfigExpander._expand_cmdclassá   s7   € Ø—=‘=ˆÜœ7×+Ñ+¸ÈxÔXˆØ×Ñ˜D×/Ñ/°¸XÕFrA   c           
      óì  — d}| j                   D �ci c]  }||vr|| j                  |||«      “Œ }}|j                  | j                  ||«      xs i | j	                  ||«      | j                  |«      | j                  |«      | j                  |«      | j                  |«      ¬«       |j                  «       D ��ci c]  \  }}|€Œ	||“Œ }}}| j                  j                  |«       y c c}w c c}}w )N)ÚversionÚreadmeúentry-pointsÚscriptsúgui-scriptsÚclassifiersÚdependenciesúoptional-dependencies)r’   r“   r—   r˜   Úoptional_dependencies)r]   Ú_obtainr~   Ú_obtain_entry_pointsÚ_obtain_versionÚ_obtain_readmeÚ_obtain_classifiersÚ_obtain_dependenciesÚ_obtain_optional_dependenciesÚitemsr_   )	re   r;   rz   Úspecialrm   Úobtained_dynamicÚkÚvÚupdatess	            r    r}   z#_ConfigExpander._expand_all_dynamicæ   s  € ð	
ˆð Ÿ™ö
àØ˜GÑ#ð �4—<‘<  e¨[Ó9Ñ9ð
Ðð 
ð
 	×ÑØ×%Ñ% d¨KÓ8Ò>¸BØ×(Ñ(¨¨{Ó;Ø×&Ñ& tÓ,Ø×0Ñ0°Ó6Ø×2Ñ2°4Ó8Ø"&×"DÑ"DÀTÓ"Jð 	 ô 	
ð %5×$:Ñ$:Ó$<×N™D˜A˜qÀÁ�1�a‘4ÐNˆÑNØ×Ñ×Ñ Õ(ùò!
ùó Os   ‘C+Â<
C0ÃC0c                 ó`   — t        |   |«      }|€| j                  sd|›d�}t        |«      ‚y y )Nz#No configuration found for dynamic z�.
Some dynamic fields need to be specified via `tool.setuptools.dynamic`
others must be specified via the equivalent attribute in `setup.py`.)r   r?   r   )re   r;   rm   ÚpreviousÚmsgs        r    Ú_ensure_previously_setz&_ConfigExpander._ensure_previously_set  sL   € Ü& uÑ-¨dÓ3ˆØÐ D×$=Ò$=à5°e°Yð ?Yð Yð ô
 ˜cÓ"Ð"ð %>ÐrA   Ú	specifierc                 ón  — ddl m} t        | j                  «      5  | j                  }d|v rF| j
                  j                   ||d   «      «       t        j                  |d   |«      cd d d «       S d|v r#t        j                  |d   ||«      cd d d «       S t        d|› d|›�«      ‚# 1 sw Y   y xY w)Nr   )Úalways_iterabler   Úattrz	invalid `z`: )Ú setuptools.extern.more_itertoolsr®   rP   r?   rX   rd   r~   rs   Ú
read_filesÚ	read_attrr6   )re   r¬   Ú	directiverz   r®   rX   s         r    Ú_expand_directivez!_ConfigExpander._expand_directive  s¿   € õ 	Eä˜D×5Ñ5Ó6ñ 	FØ—}‘}ˆHØ˜Ñ"Ø×&Ñ&×-Ñ-©o¸iÈÑ>OÓ.PÔQÜ×)Ñ)¨)°FÑ*;¸XÓF÷		Fñ 	Fð
 ˜Ñ"Ü×(Ñ(¨°6Ñ):¸KÈÓR÷	Fñ 	Fô ˜y¨¨°3°y°mÐDÓEÐE÷	Fð ús   œAB+Á3B+ÂB+Â+B4c                 óŠ   — || j                   v r#| j                  d|› �| j                   |   |«      S | j                  ||«       y )Nztool.setuptools.dynamic.)ra   r´   r«   )re   r;   rm   rz   s       r    r›   z_ConfigExpander._obtain  sS   € Ø�D×$Ñ$Ñ$Ø×)Ñ)Ø*¨5¨'Ð2Ø× Ñ  Ñ'Øóð ð
 	×#Ñ# D¨%Ô0ØrA   c                 óˆ   — d| j                   v r4d| j                  v r&t        j                  | j	                  |d|«      «      S y )Nr’   )r]   ra   rs   r’   r›   )re   r;   rz   s      r    r�   z_ConfigExpander._obtain_version'  s:   € à˜Ÿ™Ñ$¨°d×6FÑ6FÑ)FÜ—?‘? 4§<¡<°°iÀÓ#MÓNÐNØrA   c                 ó¸   — d| j                   vry | j                  }d|v r)| j                  |di «      |d   j                  dd«      dœS | j	                  |d«       y )Nr“   úcontent-typez
text/x-rst)Útextr¸   )r]   ra   r›   r,   r«   )re   r;   ra   s      r    rž   z_ConfigExpander._obtain_readme-  sh   € Ø˜4Ÿ<™<Ñ'Øà×&Ñ&ˆØ�{Ñ"àŸ™ T¨8°RÓ8Ø +¨HÑ 5× 9Ñ 9¸.È,Ó Wñð ð
 	×#Ñ# D¨(Ô3ØrA   c                 óä   ‡ ‡‡— d}t        ˆ fd„|D «       «      sy ‰ j                  |d|«      }|€y t        j                  |«      Šd‰iŠdt        dt        fˆˆˆ fd„} |dd«        |d	d
«       ‰S )N)r”   r•   r–   c              3   ó:   •K  — | ]  }|‰j                   v –— Œ y ­wrp   )r]   )Ú.0rm   re   s     €r    ú	<genexpr>z7_ConfigExpander._obtain_entry_points.<locals>.<genexpr>?  s   øè ø€ Ò=¨U�5˜DŸL™LÔ(Ñ=ùs   ƒr”   rm   Úgroupc                 ó†   •— |‰v r<‰j                  |«      }| ‰j                  vrt        j                  | |¬«       |‰| <   y y )N)rm   Úvalue)Úpopr]   r   rM   )rm   r¾   rÀ   ÚexpandedÚgroupsre   s      €€€r    Ú_set_scriptsz:_ConfigExpander._obtain_entry_points.<locals>._set_scriptsI  sD   ø€ Ø˜‰ØŸ
™
 5Ó)�Ø §¡Ñ,Ü%×*Ñ*°¸eÕDð #(�˜’ð rA   r•   Úconsole_scriptsr–   Úgui_scripts)Úanyr›   rs   Úentry_pointsÚstr)re   r;   rz   Úfieldsr¹   rÄ   rÂ   rÃ   s   `     @@r    rœ   z$_ConfigExpander._obtain_entry_points;  s~   ú€ ð <ˆÜÓ=°fÔ=Ô=Øà�|‰|˜D .°+Ó>ˆØˆ<Øä×%Ñ% dÓ+ˆØ" FÐ+ˆð	(¤ð 	(¬C÷ 	(ñ 	�YÐ 1Ô2Ù�] MÔ2àˆrA   c                 ój   — d| j                   v r%| j                  |di «      }|r|j                  «       S y )Nr—   )r]   r›   Ú
splitlines©re   r;   rÀ   s      r    rŸ   z#_ConfigExpander._obtain_classifiersW  s5   € Ø˜DŸL™LÑ(Ø—L‘L  }°bÓ9ˆEÙØ×'Ñ'Ó)Ð)ØrA   c                 ó`   — d| j                   v r | j                  |di «      }|rt        |«      S y )Nr˜   )r]   r›   Ú_parse_requirements_listrÍ   s      r    r    z$_ConfigExpander._obtain_dependencies^  s1   € Ø˜TŸ\™\Ñ)Ø—L‘L  ~°rÓ:ˆEÙÜ/°Ó6Ð6ØrA   c                 ó2  — d| j                   vry d| j                  v rb| j                  d   }t        |t        «      sJ ‚|j	                  «       D ��ci c]%  \  }}|t        | j                  d|› �|i «      «      “Œ' c}}S | j                  |d«       y c c}}w )Nr™   z.tool.setuptools.dynamic.optional-dependencies.)r]   ra   r‡   rŠ   r¢   rÏ   r´   r«   )re   r;   Úoptional_dependencies_mapr¾   r³   s        r    r¡   z-_ConfigExpander._obtain_optional_dependenciese  sµ   € Ø"¨$¯,©,Ñ6ØØ" d×&6Ñ&6Ñ6Ø(,×(8Ñ(8Ð9PÑ(QÐ%ÜÐ7¼Ô>Ð>Ð>ð )B×(GÑ(GÓ(I÷	ñ %�E˜9ð Ô/Ø×*Ñ*ØHÈÈÐPØ!Øóóñ ó	ð 	ð 	×#Ñ# DÐ*AÔBØùó	s   Á*B©NFN)r   r   )zpackage-data)r;   r   )Ú__name__Ú
__module__Ú__qualname__rŠ   r	   Ú_PathÚboolrf   rk   rÉ   r   rq   rv   r   rx   r{   r   r|   r}   r«   r´   r›   r�   r   rž   rœ   rŸ   r    r¡   r†   rA   r    rZ   rZ   Ÿ   s}  „ ð %)Ø%*Ø)-ñ1àð1ð ˜5‘/ð1ð #ð	1ð
 �~Ñ&ó1ó"1ð8¨ð 8°Sð 8¸hó 8ó
:òò"
PòKðG¨G°C¸°HÑ,=ó Gð
)¨ð )ÀWÈSÐRUÈXÑEVó )ð<#¨>ð #À#ó #ðØðØ6=¸cÀ3¸hÑ6Góð˜Nð °3ð ÀWÈSÐRUÈXÑEVó ð Nð ÀÈÈcÈÑARó ð >ð °h¸tÀCÈÀH¹~Ñ6Nó ðØ"ðØ18¸¸c¸Ñ1Bðà	�$�s˜D�y‘/Ñ	"óó8óôrA   rZ   c                 ó¦   — | j                  «       D �cg c]3  }|j                  «       r!|j                  «       j                  d«      s|‘Œ5 c}S c c}w )Nú#)rÌ   r2   Ú
startswith)rÀ   Úlines     r    rÏ   rÏ   y  sI   € ð ×$Ñ$Ó&öàØ�:‰:Œ< §
¡
£× 7Ñ 7¸Ô <ò 	òð ùò s   “8Ac              #   ó®   K  — | sd –— y 	 d –— y # t         $ r9}t        j                  d|j                  j                  › d|› �«       Y d }~y d }~ww xY w­w)Nzignored error: z - )Ú	Exceptionr3   r4   Ú	__class__rÓ   )r?   r9   s     r    rP   rP   �  sP   è ø€ áÛØðHÜøÜò HÜ�‰˜¨¯©×(=Ñ(=Ð'>¸cÀ"ÀÐF×GÑGûðHüs*   ‚A‹ �A�	A™/AÁAÁAÁAc                   ó@   ‡ — e Zd Zdddedefˆ fd„Zˆ fd„Zˆ fd„Zˆ xZS )ry   Údistributionr   r_   r`   c                 ó@   •— t         ‰| �  |«       || _        || _        y rp   )Úsuperrf   Ú_project_cfgÚ_setuptools_cfg)re   rà   r_   r`   rÞ   s       €r    rf   z"_EnsurePackagesDiscovered.__init__Ž  s"   ø€ ô 	‰Ñ˜Ô&Ø'ˆÔØ-ˆÕrA   c                 óü  •— | j                   | j                  }}|j                  di «      }|j                  |j                  xs i «       ||_        |j
                  j                  «        |j                  j                  €*| j                  j                  d«      |j                  _        |j                  €|j                  d«      |_        |j                  €|j                  d«      |_        t        ‰| �9  «       S )z«When entering the context, the values of ``packages``, ``py_modules`` and
        ``package_dir`` that are missing in ``dist`` are copied from ``setuptools_cfg``.
        r„   r1   ú
py-modulesr‚   )rb   rä   rO   r~   rz   Úset_defaultsÚ_ignore_ext_modulesÚmetadatar1   rã   r,   Ú
py_modulesr‚   râ   Ú	__enter__)re   r;   Úcfgrz   rÞ   s       €r    rë   z#_EnsurePackagesDiscovered.__enter__•  sÌ   ø€ ð —J‘J × 4Ñ 4ˆcˆØ&)§n¡n°]ÀBÓ&GˆØ×Ñ˜4×+Ñ+Ò1¨rÔ2Ø&ˆÔà×Ñ×-Ñ-Ô/ð �=‰=×ÑÐ%Ø!%×!2Ñ!2×!6Ñ!6°vÓ!>ˆD�M‰MÔØ�?‰?Ð"Ø!Ÿg™g lÓ3ˆDŒOØ�=‰=Ð ØŸG™G JÓ/ˆDŒMä‰wÑ Ó"Ð"rA   c                 óæ   •— | j                   j                  d| j                  j                  «       | j                   j                  d| j                  j                  «       t
        ‰| �  |||«      S )zŸWhen exiting the context, if values of ``packages``, ``py_modules`` and
        ``package_dir`` are missing in ``setuptools_cfg``, copy from ``dist``.
        r‚   ræ   )rä   rO   rb   r‚   rê   râ   Ú__exit__)re   Úexc_typeÚ	exc_valueÚ	tracebackrÞ   s       €r    rî   z"_EnsurePackagesDiscovered.__exit__«  sY   ø€ ð
 	×Ñ×'Ñ'¨
°D·J±J×4GÑ4GÔHØ×Ñ×'Ñ'¨°d·j±j×6KÑ6KÔLÜ‰wÑ ¨)°YÓ?Ð?rA   )rÓ   rÔ   rÕ   rŠ   rf   rë   rî   Ú__classcell__)rÞ   s   @r    ry   ry   �  s1   ø„ ð.Ø*ð.Ø9=ð.ØOSõ.ô#÷,@ð @rA   ry   c                   ó   — e Zd ZdZy)rL   z``{subject}` in `pyproject.toml` is still *experimental* and likely to change in future releases.N)rÓ   rÔ   rÕ   Ú_SUMMARYr†   rA   r    rL   rL   µ  s   „ ð	3ñ rA   rL   )F)TFNrÒ   )1Ú__doc__ÚloggingrH   Ú
contextlibr   Ú	functoolsr   Útypingr   r   r   r   r	   r
   r   Úerrorsr   r   Úwarningsr   r*   r   rs   Ú_apply_pyprojecttomlr   r   r   r>   ri   r   rÉ   ÚPathLikerÖ   Ú	getLoggerrÓ   r3   rŠ   r!   r×   r.   r@   r=   rR   rZ   rÏ   rP   ÚEnsurePackagesDiscoveredry   rL   r†   rA   r    ú<module>r      ss  ðñ	ó Û 	Ý %Ý ß O× OÑ Oç +Ý (Ý ß HÝ 1áÝ,àˆc�2—;‘;ÐÑ€Ø
ˆ'×
Ñ
˜HÓ
%€ð ˜ð   $ó  ð:�Tð : Uð :¨tó :ð0 ñ	*Ø
ð	*àð	*ð ó		*ð ØØ%)ñ	?Øð?ð �>Ñ
"ó	?ðH !%Ø!&Ø%)ñ	RØðRà�u‰oðRð ðRð �>Ñ
"ð	Rð
 
óR÷.Wñ Wòtð ðH¨ò Hó ðHô%@ × @Ñ @ô %@ôPÐ!2õ rA   