K iJ @UdZddlmZddlZddlZddlmZddlmZddl m Z m Z ddl m Z ddlmZdd lmZdd lmZmZmZmZmZd d lmZd d lmZd dlmZmZd dlm Z d dl!m"Z"m#Z#erddl$m%Z%ddl&m'Z'ddl(m)Z)ddl*m+Z+eiZ,de-d<ee.e/e.e.ffZ0de-d<edeeedfgdfZ1de-d<edZ2ejfe4Z5dsdZ6dtdZ7dudZ8dvd Z9dwd!Z:dxd"Z;d#d$d%d&Zd{d)Z?d|d*Z@d}d+ZAd~d,ZBdd-ZCd}d.ZDdd/ZEdd0ZFdd1ZGdd2ZHdd3ZIe,fdd4ZJdd5ZKdd7ZLdd8ZMdd9ZNdd:ZOdd;ZPdd<ZQd=ZRd>ZSe>e?e e@d?@e e@dA@eAeCeDeBdBZTdCe-dD<dEdFiZUdGdHiZVe eQdIe eQdJe eQdKdLZWhdMZXdNeEiZYid6eRdOdPeRdQdReRdSdTeRdUdVeSdWdXdYeSdZd[d\eSd]d^d_eSd`dadbeRdcddeRdedfeRdgdheNdFeOdiePdjeRdkdleRdmZZdnejejejejejejejejejejdo Z]de-dp<Gdqdre#Z^y)akTranslation layer between pyproject config and setuptools distribution and metadata objects. The distribution and metadata objects are modeled after (an old version of) core metadata, therefore configs in the format specified for ``pyproject.toml`` need to be processed before being applied. **PRIVATE MODULE**: API reserved for setuptools internal usage only. ) annotationsN)Mapping)Address)partialreduce)cleandoc)chain)MappingProxyType) TYPE_CHECKINGAnyCallableTypeVarUnion)_static)StrPath)InvalidConfigErrorRemovedConfigError) Extension)SetuptoolsDeprecationWarningSetuptoolsWarning) TypeAliasmetadata Distribution) _OptionsListrEMPTYr_ProjectReadmeValuer_Correspondence_Tdictc|s|Stjj|xsd}t|||t |||tj }tj | |j|j|jtj ||S#tj |wxYw)z=Apply configuration dict read with :func:`read_configuration`.) ospathdirname_apply_project_table_apply_tool_tablegetcwdchdir_finalize_requires_finalize_license_expression_finalize_license_files)distconfigfilenameroot_dircurrent_directorys l/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/setuptools/config/_apply_pyprojecttoml.pyapplyr5.s  wwx(/CHvx0dFH- HHX$ ! ))+ $$& "# K "#s ,0B33C c|jdi}|sy|jDcic]\}}|tj|}}}t ||t ||jD]I\}}t |} tj| | } t| r | |||=t|| |Kycc}}w)Nproject) getitemsrattempt_conversion_handle_missing_dynamic_unify_entry_pointsjson_compatible_keyPYPROJECT_CORRESPONDENCEcallable _set_config) r/r0r2 orig_configkv project_tablefieldvaluenorm_keycorresps r4r(r(Es**Y+K BMBSBSBUV$!QQ22155VMVD-0 &%++-. u&u-*..xB G  D% * gu - . Ws CcT|jdijdi}|syd|vr=77.0.0).'https://packaging.python.org/en/latest/irsee_urldue_datez, The parameter `tool.setuptools.zZ` was long deprecated and has been removed from `pyproject.toml`.  )r8rremitr9r=TOOL_TABLE_REMOVALSrrjoinTOOL_TABLE_RENAMESTOOL_TABLE_CORRESPONDENCEr?r@_copy_command_options) r/r0r1 tool_table pypa_guidesrErFrG suggestionmsgrHs r4r)r)WsAFB'++L"=J *$ fjjB7 7$:  E $)) I=k]K"  #((*. u&u- * *!"5h"?@J,,173 C%TYY z/J%KL L%))(H=+//(C G  D% gu -!.$&$1ct|jdg}tjD]I\}}||vr ||vr||}|stj ||t j|||<Ky)zJBe temporarily forgiving with ``dynamic`` fields not listed in ``dynamic``dynamicrErFN)setr8_PREVIOUSLY_DEFINEDr9_MissingDynamicrS_RESET_PREVIOUSLY_DEFINED)r/rDr_rEgetterrFs r4r;r;sz-##Ir23G,224L v&%7*:4LE$$5$>'@'D'DU'K e$ Lr]cB|jjddS)z1As defined in :pep:`566#json-compatible-metadata`-_)lowerreplace)keys r4r=r=s 99;  sC ((r]ctj|t||}t|jd|d}|r ||yt |j|s|t vrt|j||yt|||y)Nset_) _PREPROCESSr8_noopgetattrrhasattrSETUPTOOLS_PATCHESsetattr)r/rErFvalsetters r4r@r@sm //% 'e 4C T]]d5'ND 9F s  &%3E*E uc*eS!r]z text/markdownz text/x-rstz text/plain)z.mdz.rstz.txtc2tjj|j\}}|sy|tvrt j t|SdjdtjD}d|d}td|d|)N, c32K|]\}}|d|dyw)z ()N).0rBrCs r4 z&_guess_content_type..s Ftq!2aSlFz3only the following file extensions are recognized: r$zUndefined content type for ) r%r&splitextri_CONTENT_TYPESrStrrUr9 ValueError)filerhextvalidr\s r4_guess_content_typers WW  djjl +FAs  n{{>#.// IIF~/C/C/EF FE ?wa HC 24&3%@ AAr]cddlm}t|tr |}|j ||}t |}n?|j dxsd}|j dxs|j ||}|d}t|dtj||r t|dtj||r|jj|yy) Nrexpandrrztextz content-typelong_descriptionlong_description_content_type) setuptools.configr isinstancestr read_filesrr8r@rr_referenced_filesadd)r/rtr2rrrctypes r4_long_descriptionrs)#s  x0#D)wwv$"wwvC&"3"3D("CN#('++d*;< D97;;u;MN  ""4( r]c ddlm}t|tr^t |j ddr&t jdd|j _t|dtj|yd}tjddd |d d |vrU|j|d g|}t|dtj||jj|d yt|dtj|d y)Nrrlicensez)`license` overwritten by `pyproject.toml`license_expressionz&guides/writing-pyproject-toml/#licensez/`project.license` as a TOML table is deprecatedzPlease use a simple string containing a SPDX expression for `project.license`. You can also use `project.license-files`. (Both options available on setuptools>=77.0.0).rLrMrOrr)rrrrrprrrSrr@rrrrrr)r/rtr2rrZrFs r4_licensers(#s 4==)T 2  " "#N O$(DMM !D. C0@A> $)) = >>k]K"   S=%%s6{mX>E iU); <  " " & &s6{ 3 iS[)A Br]c g}g}|D]a}d|vr|j|dd|vr|j|d5t|d|d}|jt|c|r/t||t j dj ||r3t||dt j dj |yy)Nnameemail) display_name addr_specrw_email)appendrrr@rrrU)r/rt _root_dirkindrE email_fieldpersonaddrs r4_peoplers EK*     vg / F " LL (v&/RD   s4y )* D$ DIIe,< =>DTF&/7;;tyy7M+NOr]ct|d|y)N project_urls)r@r/rtrs r4 _project_urlsrsnc*r]cDt|dtj|y)Npython_requires)r@r SpecifierSetrs r4_python_requiresrs')=)=c)BCr]cZt|dgrd}tj|||_y)Ninstall_requireszA`install_requires` overwritten in `pyproject.toml` (dependencies))rprrSrr/rtrr\s r4 _dependenciesrs*t',Qs#Dr]cZt|ddrd}tj|||_y)Nextras_requirezH`extras_require` overwritten in `pyproject.toml` (optional-dependencies))rprrSrrs r4_optional_dependenciesrs*t%t,Xs#Dr]cz|jxsg}d|D}|Dcgc] }tdi|}}g||Scc}w)Nc 3K|]8}|jDcic]\}}|jdd|c}}:ycc}}ww)rgrhN)r9rj)r{xrBrCs r4r|z_ext_modules..s8 Hq :1QYYsC ! # : H :sAAArz) ext_modulesr)r/rtexistingargskwnews r4 _ext_modulesr sJ%2H HC HD%) *r9?r? *C * X   +s8c|SNrz)_distrts r4roro Jr]c|Srrz)rts r4 _identityrrr]c|}|jd|jdi}t|}ddd}t|jD],\}}t |}||vs|j||||<.|rT|jD cic]0\}} | r)|| jD cgc] \} } | d| c} } 2c} } } }|d<yycc} } wcc} } } }w)N entry-points entry_pointsconsole_scripts gui_scripts)scriptsrz = )popr"listr9r=) rDr7givenrrenamingrkrFrGrgrouprBrCs r4r<r<sG KK NB(G HE;L,]KH7==?+@ U&s+ x /6{{3/?L(+ , @  ,113# # e EKKM:DAqaSA3<: :# :# sC 2CC C c &|jdi}|jdijdi}t|}|j}|jdijdijD]\}}t |}|j|t } |j |i|jD]D\} } t | } t|| f||| <| | vs)tjd|d| dFy)NrJrKcmdclass distutilszCommand option r$z is not defined) r8_valid_command_optionscommand_optionsr9r=ra setdefaultr_loggerwarning) pyprojectr/r1rYr valid_optionscmd_optscmdr0rrkrFs r4rXrX0s vr*J~~lB/33JCH*84M##H }}VR044["EKKM N V!#&!!#su-C$ ,,. NJC%c*C"%h-!7HSM# %/#auO LM  N Nr]c Jddlm}ddlm}dt |j i}|j d}d|D}d |D}t||jD]=\}}|j|t} | t t|d gz} | ||<?|S) Nrrrrglobalzdistutils.commands)rc32K|]}t|ywr)_load_epr{eps r4r|z)_valid_command_options..KsHB8B<Hr}c3&K|] }|s| ywrrzrs r4r|z)_valid_command_options..Ls;2B; user_options) setuptools.distr _importlibr_normalise_cmd_optionsglobal_optionsrr r9r8rarp) rrrrunloaded_entry_pointsloaded_entry_pointsrr cmd_classoptss r4rrCs,%5l6Q6QRSM1H118LMH2GH;!4;L hnn.>?"Y  ce,,WYPR-STT! c" r]c|jjdry |j|jfS#t$rI}|j j d|j}tj|d|Yd}~yd}~wwxYw)Nzwheel.bdist_wheelz" while trying to load entry-point z: ) rF startswithrload Exception __class____name__rr)rexr\s r4rrUs} xx./## &&''I"''S3%r"'s: B ?BB rc6t|jdS)Nz_=)r=strip)rs r4_normalise_cmd_option_keyrds t $ * *4 00r]cD|Dchc]}t|dc}Scc}w)Nr)r)desc fancy_options r4rrhs KO P< %l1o 6 PP Pscd}t|ddxsi}|jDcic] \}}||vs ||c}}Scc}}w)N)rrr)rpr9)r/ignorerFrBrCs r4_get_previous_entrypointsrlsB /F D.$ / 52E"[[] >TQavoAqD >> >s ==cFt|ddxsi}|jdS)Nrrrpr8r/rFs r4_get_previous_scriptsrrs% D.$ / 52E 99& ''r]cFt|ddxsi}|jdS)Nrrrrs r4_get_previous_gui_scriptsrws$ D.$ / 52E 99] ##r]c|j}t|d|t|d|}}||t||tj|y)zCApply distutils metadata validation but preserve "static" behaviourrmget_N)rrprsrList)attrr/rtmetarures r4_set_static_list_metadatar|sL ==DTT$=1744v3OFF 3K D$ VX./r]cDttd|jdS)a8 Similar to ``operator.attrgetter`` but returns None if ``attr`` is not found >>> from types import SimpleNamespace >>> obj = SimpleNamespace(a=42, b=SimpleNamespace(c=13)) >>> _attrgetter("a")(obj) 42 >>> _attrgetter("b.c")(obj) 13 >>> _attrgetter("d")(obj) is None True ct||dSr)rp)accrs r4z_attrgetter..s'#q$*?r]r$)rrsplit)rs r4 _attrgetterr s 6?C QQr]cfd}|S)aL Return the first "truth-y" attribute or None >>> from types import SimpleNamespace >>> obj = SimpleNamespace(a=42, b=SimpleNamespace(c=13)) >>> _some_attrgetter("d", "a", "b.c")(obj) 42 >>> _some_attrgetter("d", "e", "b.c", "a")(obj) 13 >>> _some_attrgetter("d", "e", "f")(obj) is None True cBfdD}td|DdS)Nc3@K|]}t|ywr)r )r{iobjs r4r|z5_some_attrgetter.._acessor..s5!.+a.%5sc3&K|] }|| ywrrz)r{rs r4r|z5_some_attrgetter.._acessor..s81!-Q8r)next)rvaluesr9s` r4_acessorz"_some_attrgetter.._acessors 5u588$??r]rz)r9rs` r4_some_attrgetterrs@ Or]author)r maintainer)readmerauthors maintainersurls dependenciesoptional_dependenciesrequires_pythonzdict[str, _Correspondence]r> script_filesrnamespace_packagesz Please migrate to implicit native namespaces instead. See https://packaging.python.org/en/latest/guides/packaging-namespace-packages/. obsoletesprovides platforms)r"r#r$> license_filer license_filesprovides_extrasrrrz metadata.nameversionzmetadata.version descriptionzmetadata.descriptionrzmetadata.long_descriptionzrequires-pythonrzmetadata.python_requiresrzmetadata.license_expressionzmetadata.licenserzmetadata.authorzmetadata.author_emailrzmetadata.maintainerzmetadata.maintainer_emailkeywordszmetadata.keywords classifierszmetadata.classifiersrzmetadata.project_urlsr gui-scriptsrroptional-dependenciesr) rrrr*r+rrrr,rr-rdc&eZdZdZdZeddZy)rcz9`{field}` defined outside of `pyproject.toml` is ignored.a% The following seems to be defined outside of `pyproject.toml`: `{field} = {value!r}` According to the spec (see the link below), however, setuptools CANNOT consider this value unless `{field}` is listed as `dynamic`. https://packaging.python.org/en/latest/specifications/pyproject-toml/#declaring-project-metadata-the-project-table To prevent this problem, you can list `{field}` under `dynamic` or alternatively remove the `[project]` table from your file and rely entirely on other means of configuration. c<|jj||S)Nr`)_DETAILSformat)clsrErFs r4detailsz_MissingDynamic.details s||""e"<rVrTrWrrrnrb EMPTY_LIST EMPTY_DICTrdrcrzr]r4rRs# #(%"??;!F+.,+""%w%!&sDcN':!;Y;%~sE'4-2K@ <  K ( {-.;56 k56  '(9;UV   =?QR  13JK#$9;VW /0;56 K/ 0-$ ,!"K 23#$[)9:%4!!%%""%%   &&!!%%&&$//!#4(='=r]