Ë µ/°>lC/Âã óè—dZddlZddlZddlmZddlmZddlmZm Z m Z m Z m Z m Z mZddlmZmZddlmZd d lmZd d lmZmZd d lmZerdd lmZeeej>fZ ejBe"«Z#de de$fd„Z%de$de de&fd„Z' d"ddde ddfd„Z( d#de de dfd„Z) d$de$de e de&de dde$f d„Z*Gd„d«Z+d„Z,ede&fd„«Z-Gd„dej\«Z/Gd „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ÚInvalidConfigError)ÚSetuptoolsWarningé)Úexpand)Ú_PREVIOUSLY_DEFINEDÚ_MissingDynamic)Úapply©Ú DistributionÚfilepathÚreturncót—ddlm}t|d«5}|j|«cddd«S#1swYyxYw)Nr )ÚtomllibÚrb)Ú compat.py310rÚopenÚload)rrÚfiles úD/usr/lib/python3.12/site-packages/setuptools/config/pyprojecttoml.pyÚ load_filer!s)€Ý&ä ˆh˜Ô  Ø�|‰|˜DÓ!÷ × Ò ús“.®7ÚconfigcóÒ—ddlm}|jjd«}t |d«r|j « |j |«S#|j$r‡}d|j›�}|jjd«dk7r4tj|«tj|j«d|j›d �}t|›d |›�«d‚d}~wwxYw) Nr)Ú_validate_pyprojectztrove-classifierÚ_disable_downloadzconfiguration error: Ú`Úprojectzinvalid 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&ÁBC!Ã!C&Údistrcó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ó—tjj|«}tjj|«st d|›d�«‚t |«xsi}|j di«}|j di«}|j di«}|r|s|siSd|vrtjd¬«|r*t|d d «�|jd |j«n|jd d «||d<||d<t|«5|d|id œ}t||«d d d «|r-tjj|«} t|| ||«S|S#1swYŒ:xYw)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 zConfiguration file z does not exist.r'ÚtoolÚ setuptoolsÚ distutilsz[tool.distutils])ÚsubjectÚinclude_package_dataNzinclude-package-dataT)r'rC)ÚosÚpathÚabspathÚisfiler r!r,Ú_ExperimentalConfigurationÚemitÚgetattrÚ setdefaultrGÚ_ignore_errorsr.ÚdirnameÚexpand_configuration) rrr?r;ÚasdictÚ project_tableÚ tool_tableÚsetuptools_tableÚsubsetÚroot_dirs r r=r=GsQ€ô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×Ñ.>À×@SÑ@SÓTˆÙ Ð%Ø+×7Ñ7ˆKØ × #Ñ #Ô %Ø × !Ñ ! +Ô .Ø × $Ñ $ T¨;Ô 7÷ ð ×Ñ×%Ñ% d×&<Ñ&<Ô=Ø�{‰{Ð÷ˆSús Á%ACÃC'có¤—|jjd«}|�t|ttf«ry|jd«}t|t «ro|j |d<|jjdi«|d<t|j«5tjdi|¤Ž|jd<ddd«yy#1swYyxYw)NÚpackagesÚfindrXú package-dirÚfill_package_dir©) r`r,Ú isinstanceÚlistÚtupleÚdictrXrOrPr?rsÚ find_packages)rer‚rƒs r rxz _ConfigExpander._expand_packagesÒsµ€Ø×&Ñ&×*Ñ*¨:Ó6ˆØ Ð œz¨(´T¼5°MÔBØ à�|‰|˜FÓ#ˆÜ �dœDÔ !Ø#Ÿ}™}ˆD�Ñ Ø'+×':Ñ':×'EÑ'EÀmÐUWÓ'XˆDÐ#Ñ $Ü × 9Ñ 9Õ:Ü29×2GÑ2GÑ2OÈ$Ñ2O�×#Ñ# JÑ/÷;Ð:ð "÷;Ð:ús Â#CÃCcóˆ—ttj|j¬«}|j |j d|«y)N)rXz data-files)rrsÚcanonic_data_filesrXrqr`)reÚ data_filess r r{z"_ConfigExpander._expand_data_filesÞs0€ÜœW×7Ñ7À$Ç-Á-ÔPˆ Ø ×јD×/Ñ/°¸zÕJrArzcóŽ—|j}ttj||¬«}|j |j d|«y)N)rzrXÚcmdclass)rXrrsr�rqr`)rerzrXr�s r r|z _ConfigExpander._expand_cmdclassâs7€Ø—=‘=ˆÜœ7×+Ñ+¸ÈxÔXˆØ ×јD×/Ñ/°¸XÕFrAc óì—d}|jD�cic]}||vr||j|||«“Œ}}|j|j||«xsi|j ||«|j |«|j |«|j|«|j|«¬«|j«D��cic] \}}|€Œ ||“Œ }}}|jj|«ycc}wcc}}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_) rer;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Ø ×Ñ×Ñ Õ(ùò! ùóOs‘C+Â< C0ÃC0có`—t||«}|€|jsd|›d�}t|«‚yy)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`.)rr?r)rer;rmÚpreviousÚmsgs r Ú_ensure_previously_setz&_ConfigExpander._ensure_previously_setsL€Ü& uÑ-¨dÓ3ˆØ Ð  D×$=Ò$=à5°e°Yð?YðYð ô % SÓ)Ð )ð %>Ð rAÚ specifiercón—ddlm}t|j«5|j}d|vrF|j j ||d««tj|d|«cddd«Sd|vr#tj|d||«cddd«Std|›d|›�«‚#1swYyxYw)Nr)Úalways_iterablerÚattrz invalid `z`: ) Ú setuptools.extern.more_itertoolsr®rPr?rXrdr~rsÚ read_filesÚ read_attrr6)rer¬Ú directiverzr®rXs r Ú_expand_directivez!_ConfigExpander._expand_directives°€õ Eä ˜D×5Ñ5Õ 6Ø—}‘}ˆHؘÑ"Ø×&Ñ&×-Ñ-©o¸iÈÑ>OÓ.PÔQÜ×)Ñ)¨)°FÑ*;¸XÓF÷ 7Ñ 6ð ˜Ñ"Ü×(Ñ(¨°6Ñ):¸KÈÓR÷ 7Ñ 6ô˜y¨¨ °3°y°mÐDÓEÐ E÷7ðúsœA B+Á3B+ÂB+Â+B4cóŠ—||jvr#|jd|›�|j||«S|j||«y)Nztool.setuptools.dynamic.)rar´r«)rer;rmrzs r r›z_ConfigExpander._obtainsS€Ø �D×$Ñ$Ñ $Ø×)Ñ)Ø*¨5¨'Ð2Ø× Ñ  Ñ'Øóð ð ×#Ñ# D¨%Ô0ØrAcóˆ—d|jvr4d|jvr&tj|j |d|««Sy)Nr’)r]rarsr’r›)rer;rzs r r�z_ConfigExpander._obtain_version(s:€à ˜Ÿ ™ Ñ $¨°d×6FÑ6FÑ)FÜ—?‘? 4§<¡<°°iÀÓ#MÓNÐ NØrAcó¸—d|jvry|j}d|vr)|j|di«|djdd«dœS|j |d«y)Nr“ú content-typez text/x-rst)Útextr¸)r]rar›r,r«)rer;ras r ržz_ConfigExpander._obtain_readme.sh€Ø ˜4Ÿ<™<Ñ 'Øà×&Ñ&ˆ Ø �{Ñ "àŸ ™  T¨8°RÓ8Ø +¨HÑ 5× 9Ñ 9¸.È,Ó Wñð ð ×#Ñ# D¨(Ô3ØrAcó䇇‡—d}tˆfd„|D««sy‰j|d|«}|€ytj|«Šd‰iŠdtdtfˆˆˆfd„ }|dd«|d d «‰S) N)r”r•r–c3ó:•K—|]}|‰jv–—Œy­wrp)r])Ú.0rmres €r Ú z7_ConfigExpander._obtain_entry_points..@søèø€Ð=±f¨U�5˜DŸL™LÔ(±fùsƒr”rmÚgroupcó–•—|‰vrD‰j|«}|‰jvrttj||««‚|‰|<yyrp)Úpopr]rrr5)rmr¾ÚvalueÚexpandedÚgroupsres €€€r Ú _set_scriptsz:_ConfigExpander._obtain_entry_points.._set_scriptsJsJø€Ø˜‰ØŸ ™  5Ó)�Ø § ¡ Ñ,Ü,¬_×-DÑ-DÀUÈEÓ-RÓSÐSØ"'�˜’ð rAr•Úconsole_scriptsr–Ú gui_scripts)Úanyr›rsÚ entry_pointsÚstr)rer;rzÚfieldsr¹rÄrÂrÃs` @@r rœz$_ConfigExpander._obtain_entry_points<s~ú€ð<ˆÜÓ=±fÓ=Ô=Øà�|‰|˜D .°+Ó>ˆØ ˆ<Øä×%Ñ% dÓ+ˆØ" FÐ+ˆð (¤ð (¬C÷ (ñ �YÐ 1Ô2Ù�] MÔ2àˆrAcój—d|jvr%|j|di«}|r|j«Sy)Nr—)r]r›Ú splitlines©rer;rÁs r rŸz#_ConfigExpander._obtain_classifiersVs5€Ø ˜DŸL™LÑ (Ø—L‘L  }°bÓ9ˆEÙØ×'Ñ'Ó)Ð)ØrAcó`—d|jvr |j|di«}|r t|«Sy)Nr˜)r]r›Ú_parse_requirements_listrÍs r r z$_ConfigExpander._obtain_dependencies]s1€Ø ˜TŸ\™\Ñ )Ø—L‘L  ~°rÓ:ˆEÙÜ/°Ó6Ð6ØrAc ó2—d|jvryd|jvrb|jd}t|t«sJ‚|j «D��cic]%\}}|t |j d|›�|i««“Œ'c}}S|j|d«ycc}}w)Nr™z.tool.setuptools.dynamic.optional-dependencies.)r]rar‡rŠr¢rÏr´r«)rer;Úoptional_dependencies_mapr¾r³s r r¡z-_ConfigExpander._obtain_optional_dependenciesds¿€Ø "¨$¯,©,Ñ 6ØØ " d×&6Ñ&6Ñ 6Ø(,×(8Ñ(8Ð9PÑ(QÐ %ÜÐ7¼Ô>Ð >Ð>ð)B×(GÑ(GÔ(Iô ñ)JÑ$�E˜9ðÔ/Ø×*Ñ*ØHÈÈÐPØ!Øóóñð)Jò ð ð ×#Ñ# DÐ*AÔBØùó sÁ*B©NFN)rr)z package-data)r;r)Ú__name__Ú __module__Ú __qualname__rŠr Ú_PathÚboolrfrkrÉrrqrvrrxr{rr|r}r«r´r›r�rržrœrŸr r¡r†rAr rZrZ 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‘/Ñ "óó4óôrArZcó¦—|j«D�cgc]3}|j«r!|j«jd«s|‘Œ5c}Scc}w)NÚ#)rÌr2Ú startswith)rÁÚlines r rÏrÏxsN€ð×$Ñ$Ô&ó á&ˆDØ �:‰:Œ< § ¡ £ × 7Ñ 7¸Ô <ò Ø&ñ ðùò s“8Ac#ó®K—|sd–—y d–—y#t$r9}tjd|jj›d|›�«Yd}~yd}~wwxYw­w)Nzignored error: z - )Ú Exceptionr3r4Ú __class__rÓ)r?r9s r rPrP€sPèø€á Û ØðHÜ øÜ òHÜ� ‰ ˜¨¯ © ×(=Ñ(=Ð'>¸cÀ"ÀÐF×GÑGûðHüs*‚A‹�A� A™/A ÁAÁ AÁAcó@‡—eZdZdddedefˆfd„ Zˆfd„Zˆfd„ZˆxZS)ryÚ distributionrr_r`có@•—t‰|�|«||_||_yrp)ÚsuperrfÚ _project_cfgÚ_setuptools_cfg)reràr_r`rÞs €r rfz"_EnsurePackagesDiscovered.__init__�s"ø€ô ‰Ñ˜Ô&Ø'ˆÔØ-ˆÕrAcóü•—|j|j}}|jdi«}|j|jxsi«||_|j j «|jj€*|jjd«|j_|j€|jd«|_ |j€|jd«|_ 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‚)rbrärOr~rzÚ set_defaultsÚ_ignore_ext_modulesÚmetadatar1rãr,Ú py_modulesr‚râÚ __enter__)rer;ÚcfgrzrÞ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Ñ Ó"Ð"rAcóæ•—|jjd|jj«|jjd|jj«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ärOrbr‚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ŠrfrërîÚ __classcell__)rÞs@r ryryŒs1ø„ð.Ø*ð.Ø9=ð.ØOSõ.ô#÷,@ð@rArycó—eZdZdZy)rLz``{subject}` in `pyproject.toml` is still *experimental* and likely to change in future releases.N)rÓrÔrÕÚ_SUMMARYr†rAr rLrL´s „ð 3ñ rArL)F)TFNrÒ)1Ú__doc__ÚloggingrHÚ contextlibrÚ functoolsrÚtypingrrrrr r r Úerrorsr rÚwarningsrr*rrsÚ_apply_pyprojecttomlrrrr>rirrÉÚPathLikerÖÚ getLoggerrÓr3rŠr!r×r.r@r=rRrZrÏrPÚEnsurePackagesDiscoveredryrLr†rAr Úrssðñ óÛ Ý%ÝßO×OÑOç2Ý(ÝßFÝ1áÝ,à ˆc�2—;‘;ÐÑ€Ø ˆ'× Ñ ˜HÓ %€ð"˜ð" $ó"ð:�Tð: Uð:¨tó:ð0ñ *Ø ð *àð *ðó *ð ØØ%)ñ ?Øð?ð �>Ñ "ó ?ðH!%Ø!&Ø%)ñ RØ ðRà�u‰oðRððRð �>Ñ "ð Rð  ó R÷.UñUòpððH¨òHóðHô%@ × @Ñ @ô%@ôPÐ!2õrA