
    5hJ                    d   U d Z ddlm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 ddlmZ ddlmZ dd	lmZ dd
lmZmZmZ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  ddl!m"Z"m#Z# erddl$m%Z% ddl&m'Z' ddl(m)Z) ddl*m+Z+  ei           Z,de-d<   ee.e/e.e.f         f         Z0de-d<   edeeedf         gdf         Z1de-d<    ed          Z2 ej3        e4          Z5dd"Z6dd$Z7dd%Z8dd'Z9dd*Z:dd.Z;d/d0d1d2Z<dd5Z=dd8Z>dd:Z?dd>Z@dd?ZAdd@ZBddBZCddCZDddEZEddGZFddHZGddIZHddKZIe,fddNZJddRZKddTZLddXZMddZZNdd\ZOdd]ZPdd`ZQda ZRdb ZSe>e? e
e@dcd           e
e@ded          eAeCeDeBdfZTdge-dh<   didjiZUdkdliZV e
eQdm           e
eQdn           e
eQdo          dpZWh dqZXdreEiZYi dS eRds          dt eRdu          dv eRdw          dx eRdy          dz eSd{d|          d} eSd~d          d eSdd          d eSdd          d eRd          d eRd          d eRd          deNdjeOdePd eRd          d eRd          ZZdej[        ej[        ej[        ej[        ej\        ej\        ej\        ej\        ej[        ej\        dZ]de-d<    G d de#          Z^dS )ak  Translation 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)partialreduce)cleandoc)chain)MappingProxyType)TYPE_CHECKINGAnyCallableTypeVarUnion   )_static)StrPath)InvalidConfigErrorRemovedConfigError	Extension)SetuptoolsDeprecationWarningSetuptoolsWarning)	TypeAliasmetadataDistribution)_OptionsListr   EMPTYr   _ProjectReadmeValuer   _Correspondence_Tdistconfigdictfilenamer   returnc                   |s| S t           j                            |          pd}t          | ||           t	          | ||           t          j                    }t          j        |           	 |                                  |                                  | 	                                 t          j        |           n# t          j        |           w xY w| S )z=Apply configuration dict read with :func:`read_configuration`.)
ospathdirname_apply_project_table_apply_tool_tablegetcwdchdir_finalize_requires_finalize_license_expression_finalize_license_files)r#   r$   r&   root_dircurrent_directorys        Flib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.pyapplyr7   .   s      wx((/CHvx000dFH---	HX$!!!))+++$$&&&
"####"####Ks   0<C Cr4   c                   |                     di           }|sd S d |                                D             }t          | |           t          |           |                                D ]]\  }}t	          |          }t
                               ||          }t          |          r || ||           Lt          | ||           ^d S )Nprojectc                >    i | ]\  }}|t          j        |          S  )r   attempt_conversion.0kvs      r6   
<dictcomp>z(_apply_project_table.<locals>.<dictcomp>J   s)    VVV$!QQ2155VVV    )getitems_handle_missing_dynamic_unify_entry_pointsjson_compatible_keyPYPROJECT_CORRESPONDENCEcallable_set_config)	r#   r$   r4   orig_configproject_tablefieldvaluenorm_keycorresps	            r6   r-   r-   E   s    **Y++K VV+BSBSBUBUVVVMD-000&&&%++-- . .u&u--*..xBBG 	.GD%****gu----. .rB   c                   |                     di                                di           }|sd S d|v rCd|                     di           v rt          d          d}t          j        dd| d	
           |                                D ]\  }}t          |          }|t          v rQt          t          |                   }d| d}	t          d	                    t          |	          |g                    t                               ||          }t                               ||          }
t          |
          r |
| |           t          | |
|           t          || |           d S )Ntool
setuptoolszlicense-filesr9   zS'project.license-files' is defined already. Remove 'tool.setuptools.license-files'.z,guides/writing-pyproject-toml/#license-fileszt'tool.setuptools.license-files' is deprecated in favor of 'project.license-files' (available on setuptools>=77.0.0).'https://packaging.python.org/en/latest/i  r      see_urldue_datez,
            The parameter `tool.setuptools.zZ` was long deprecated
            and has been removed from `pyproject.toml`.
            
)rC   r   r   emitrD   rG   TOOL_TABLE_REMOVALSr   r   joinTOOL_TABLE_RENAMESTOOL_TABLE_CORRESPONDENCErI   rJ   _copy_command_options)r#   r$   r&   
tool_tablepypa_guidesrM   rN   rO   
suggestionmsgrP   s              r6   r.   r.   W   s   FB''++L"==J *$$fjjB7777$:  
 E$)IKkKK"		
 	
 	
 	
 #((** . .u&u--***!"5h"?@@J,1  C %TYYz/J%K%KLLL%))(H==+//(CCG 	.GD%    gu----&$11111rB   rL   c                &   t          |                    dg                     }t                                          D ]S\  }}||v sJ||v sF ||           }|r9t                              ||           t                              |          ||<   TdS )zJBe temporarily forgiving with ``dynamic`` fields not listed in ``dynamic``dynamicrM   rN   N)setrC   _PREVIOUSLY_DEFINEDrD   _MissingDynamicr[   _RESET_PREVIOUSLY_DEFINED)r#   rL   rf   rM   getterrN   s         r6   rE   rE      s    -##Ir2233G,2244 L Lv&&%7*:*:F4LLE L$$5$>>>'@'D'DU'K'Ke$L LrB   keystrc                R    |                                                      dd          S )z1As defined in :pep:`566#json-compatible-metadata`-_)lowerreplace)rm   s    r6   rG   rG      s     99;;sC(((rB   rM   rN   r   c                6   t                              |t                    | |          }t          | j        d| d           }|r ||           d S t          | j        |          s	|t          v rt          | j        ||           d S t          | ||           d S )Nset_)_PREPROCESSrC   _noopgetattrr   hasattrSETUPTOOLS_PATCHESsetattr)r#   rM   rN   valsetters        r6   rJ   rJ      s    
//%
'
'e
4
4CT]N5NND99F "s		&	& "%3E*E*Euc*****eS!!!!!rB   ztext/markdownz
text/x-rstz
text/plain)z.mdz.rstz.txtfile
str | Nonec                d   t           j                            |                                           \  }}|sd S |t          v rt          j        t          |                   S d                    d t                                          D                       }d| d}t          d|  d|           )N, c              3  ,   K   | ]\  }}| d | dV  dS )z ()Nr;   r=   s      r6   	<genexpr>z&_guess_content_type.<locals>.<genexpr>   s2      FFtq!llalllFFFFFFrB   z3only the following file extensions are recognized: r)   zUndefined content type for )
r*   r+   splitextrr   _CONTENT_TYPESr   Strr]   rD   
ValueError)r~   rq   extvalidrd   s        r6   _guess_content_typer      s    Wdjjll++FAs t
n{>#.///IIFF~/C/C/E/EFFFFFE
H
H
H
HC
@4@@3@@
A
AArB   r|   StrPath | Nonec                   ddl m} t          |t                    r(|}|                    ||          }t          |          }nJ|                    d          pd}|                    d          p|                    ||          }|d         }t          | dt          j	        |                     |r#t          | dt          j	        |                     |r| j
                            |           d S d S )	Nr   expandr~   r;   textzcontent-typelong_descriptionlong_description_content_type)setuptools.configr   
isinstancern   
read_filesr   rC   rJ   r   r   _referenced_filesadd)r#   r|   r4   r   r~   r   ctypes          r6   _long_descriptionr      s	    )((((( #s $  x00#D))wwv$"wwvC&"3"3D("C"CN# ('+d*;*;<<< OD97;u;M;MNNN )""4((((() )rB   
str | dictc                J   ddl m} t          |t                    r[t	          | j        dd           r t          j        d           d | j        _        t          | dt          j        |                     d S d}t          j        ddd	| d
           d|v rb|                    |d         g|          }t          | dt          j        |                     | j                            |d                    d S t          | dt          j        |d                              d S )Nr   r   licensez)`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).rT   rU   rW   r~   r   )r   r   r   rn   rx   r   r   r[   r   rJ   r   r   r   r   r   r   )r#   r|   r4   r   rb   rN   s         r6   _licenser      s=   ((((((#s C4=)T22 	)"#NOOO$(DM!D.C0@0@AAAAA>$)=> LkKK"	
 	
 	
 	
 S==%%s6{mX>>EiU););<<<"&&s6{33333iS[)A)ABBBBBrB   
list[dict]	_root_dirkindc           	         g }g }|D ]}d|vr|                     |d                    "d|vr|                     |d                    Bt          |d         |d                   }|                     t          |                     |r6t          | |t	          j        d                    |                               |r;t          | | dt	          j        d                    |                               d S d S )Nnameemail)display_name	addr_specr   _email)appendr   rn   rJ   r   r   r]   )r#   r|   r   r   rM   email_fieldpersonaddrs           r6   _peopler      s   EK * *vg////F""LL((((v&/RRRDs4yy)))) ?D$DIIe,<,< = =>>> PDT///7;tyy7M7M+N+NOOOOOP PrB   c                (    t          | d|           d S )Nproject_urls)rJ   r#   r|   r   s      r6   _project_urlsr      s    nc*****rB   c                L    t          | dt          j        |                     d S )Npython_requires)rJ   r   SpecifierSetr   s      r6   _python_requiresr      s&    ')=c)B)BCCCCCrB   listc                b    t          | dg           rd}t          j        |           || _        d S )Ninstall_requireszA`install_requires` overwritten in `pyproject.toml` (dependencies))rx   r   r[   r   r#   r|   r   rd   s       r6   _dependenciesr      s;    t',, $Qs###DrB   c                b    t          | dd           rd}t          j        |           || _        d S )Nextras_requirezH`extras_require` overwritten in `pyproject.toml` (optional-dependencies))rx   r   r[   r   r   s       r6   _optional_dependenciesr     s;    t%t,, $Xs###DrB   list[Extension]c                P    | j         pg }d |D             }d |D             }g ||S )Nc              3  R   K   | ]"}d  |                                 D             V  #dS )c                B    i | ]\  }}|                     d d          |S )rp   rq   )rs   r=   s      r6   rA   z*_ext_modules.<locals>.<genexpr>.<dictcomp>  s,    :::1QYYsC  !:::rB   NrD   )r>   xs     r6   r   z_ext_modules.<locals>.<genexpr>  s9      HHq::		:::HHHHHHrB   c                &    g | ]}t          d i |S )r;   r   )r>   kws     r6   
<listcomp>z _ext_modules.<locals>.<listcomp>  s"    
*
*
*r9??r??
*
*
*rB   )ext_modules)r#   r|   existingargsnews        r6   _ext_modulesr     sE    %2HHHCHHHD
*
*T
*
*
*CXrB   _distc                    |S Nr;   )r   r|   s     r6   rw   rw         JrB   c                    | S r   r;   )r|   s    r6   	_identityr     r   rB   c                   | }|                     d|                     di                     }t          |          }ddd}t          |                                          D ]6\  }}t	          |          }||v r|                     |          |||         <   7|r#d |                                D             |d<   d S d S )Nentry-pointsentry_pointsconsole_scriptsgui_scripts)scriptsr   c                V    i | ]&\  }}||d  |                                 D             'S )c                "    g | ]\  }}| d | S )z = r;   r=   s      r6   r   z2_unify_entry_points.<locals>.<dictcomp>.<listcomp>(  s&    :::DAqa<<A<<:::rB   r   )r>   r   groups      r6   rA   z'_unify_entry_points.<locals>.<dictcomp>'  sK     #
 #
 #
e#
::EKKMM:::#
 #
 #
rB   )popr%   r   rD   rG   )rL   r9   givenr   renamingrm   rN   rO   s           r6   rF   rF     s    GKKNB(G(GHHE;;L,]KKH7==??++ @ @
U&s++x/6{{3/?/?L(+, 
#
 #
+1133#
 #
 #

 
rB   	pyprojectc           	        |                      di           }|                     di                                di           }t          |          }|j        }|                      di                                di                                           D ]\  }}t	          |          }|                     |t                                }	|                    |i            |                                D ]S\  }
}t	          |
          }
t          |          |f||         |
<   |
|	vr!t          	                    d| d|
 d           Td S )NrR   rS   cmdclass	distutilszCommand option r)   z is not defined)
rC   _valid_command_optionscommand_optionsrD   rG   rh   
setdefaultrn   _loggerwarning)r   r#   r&   ra   r   valid_optionscmd_optscmdr$   r   rm   rN   s               r6   r`   r`   0  sQ   vr**J~~lB//33JCCH*844M#H }}VR0044["EEKKMM 
N 
NV!#&&!!#suu--C$$$ ,,.. 	N 	NJC%c**C"%h--!7HSM#%  L# L L L L LMMM	N	
N 
NrB   r   dict[str, set[str]]c           	     |   ddl m} ddlm} dt	          |j                  i} |j        d          }d |D             }d	 |D             }t          ||                                           D ]M\  }}|	                    |t                                }	|	t	          t          |d
g                     z  }	|	||<   N|S )Nr   r   r   r   globalzdistutils.commands)r   c              3  4   K   | ]}t          |          V  d S r   )_load_epr>   eps     r6   r   z)_valid_command_options.<locals>.<genexpr>K  s(      HHB8B<<HHHHHHrB   c              3     K   | ]}||V  	d S r   r;   r   s     r6   r   z)_valid_command_options.<locals>.<genexpr>L  s'      ;;2;B;;;;;;rB   user_options)setuptools.distr   
_importlibr   _normalise_cmd_optionsglobal_optionsr   r	   rD   rC   rh   rx   )
r   r   r   r   unloaded_entry_pointsloaded_entry_pointsr   r   	cmd_classoptss
             r6   r   r   C  s    ,,,,,,%%%%%%5l6QRRSM1H18LMMMHH2GHHH;;!4;;;Lhnn.>.>?? " "Y  cee,,,WYPR-S-STTT!crB   r   metadata.EntryPointtuple[str, type] | Nonec                   | j                             d          rd S 	 | j        |                                 fS # t          $ r@}|j        j         d| j         }t                              | d|            Y d }~d S d }~ww xY w)Nzwheel.bdist_wheelz" while trying to load entry-point z: )	rN   
startswithr   load	Exception	__class____name__r   r   )r   exrd   s      r6   r   r   U  s    	x.//  t##   &SS"'SS3"'''ttttts   9 
B5A>>Br   c                F    t          |                               d          S )Nz_=)rG   strip)r   s    r6   _normalise_cmd_option_keyr  d  s    t$$**4000rB   descr   set[str]c                    d | D             S )Nc                8    h | ]}t          |d                    S )r   )r  )r>   fancy_options     r6   	<setcomp>z)_normalise_cmd_options.<locals>.<setcomp>i  s%    PPP<%l1o66PPPrB   r;   )r  s    r6   r   r   h  s    PP4PPPPrB   dict[str, list]c                n    dt          | dd           pi }fd|                                D             S )N)r   r   r   c                $    i | ]\  }}|v	||S r;   r;   )r>   r?   r@   ignores      r6   rA   z-_get_previous_entrypoints.<locals>.<dictcomp>o  s$    >>>TQavooAqooorB   )rx   rD   )r#   rN   r  s     @r6   _get_previous_entrypointsr  l  s@    /FD.$//52E>>>>U[[]]>>>>rB   list | Nonec                R    t          | dd           pi }|                    d          S )Nr   r   rx   rC   r#   rN   s     r6   _get_previous_scriptsr  r  s+    D.$//52E99&'''rB   c                R    t          | dd           pi }|                    d          S )Nr   r   r  r  s     r6   _get_previous_gui_scriptsr  w  s*    D.$//52E99]###rB   attrNonec                    |j         }t          |d|            t          |d|            }} ||           t          || t          j         |                                 dS )zCApply distutils metadata validation but preserve "static" behaviourru   get_N)r   rx   r{   r   List)r  r#   r|   metar}   rl   s         r6   _set_static_list_metadatar  |  sg    =DT=$==11743O3OFF
F3KKKD$VVXX../////rB   c                V    t          t          d |                     d                    S )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
    c                $    t          | |d           S r   )rx   )accr   s     r6   <lambda>z_attrgetter.<locals>.<lambda>  s    '#q$*?*? rB   r)   )r   r   split)r  s    r6   _attrgetterr$    s$     6??CQQQrB   c                       fd}|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
    c                V      fdD             }t          d |D             d           S )Nc              3  H   K   | ]} t          |                    V  d S r   )r$  )r>   iobjs     r6   r   z5_some_attrgetter.<locals>._acessor.<locals>.<genexpr>  s3      55!.+a..%%555555rB   c              3     K   | ]}||V  	d S r   r;   )r>   r(  s     r6   r   z5_some_attrgetter.<locals>._acessor.<locals>.<genexpr>  s"      881!-Q----88rB   )next)r)  valuesrD   s   ` r6   _acessorz"_some_attrgetter.<locals>._acessor  s<    5555u55588888$???rB   r;   )rD   r-  s   ` r6   _some_attrgetterr.    s(    @ @ @ @ @ OrB   author)r   
maintainer)readmer   authorsmaintainersurlsdependenciesoptional_dependenciesrequires_pythonzdict[str, _Correspondence]rH   script_filesr   namespace_packagesz
        Please migrate to implicit native namespaces instead.
        See https://packaging.python.org/en/latest/guides/packaging-namespace-packages/.
        	obsoletesprovides	platforms)r:  r;  r<  >   license_filer   license_filesprovides_extrasr   r   r   zmetadata.nameversionzmetadata.versiondescriptionzmetadata.descriptionr1  zmetadata.long_descriptionzrequires-pythonr   zmetadata.python_requiresr   zmetadata.license_expressionzmetadata.licenser2  zmetadata.authorzmetadata.author_emailr3  zmetadata.maintainerzmetadata.maintainer_emailkeywordszmetadata.keywordsclassifierszmetadata.classifiersr4  zmetadata.project_urlsr   gui-scriptsr5  r   optional-dependenciesr    )r   r2  r3  rB  rC  r4  r   r   rD  r5  rE  rk   c                  .    e Zd ZdZdZed
d            Zd	S )rj   z9`{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.
    rM   rn   rN   r   r'   c                :    | j                             ||          S )Nrg   )_DETAILSformat)clsrM   rN   s      r6   detailsz_MissingDynamic.details  s    |""e"<<<rB   N)rM   rn   rN   r   r'   rn   )r  
__module____qualname___SUMMARYrI  classmethodrL  r;   rB   r6   rj   rj     s@        JHH$ = = = [= = =rB   rj   )r#   r   r$   r%   r&   r   r'   r   )r#   r   r$   r%   r4   r   )r#   r   r$   r%   r&   r   )r#   r   rL   r%   )rm   rn   r'   rn   )r#   r   rM   rn   rN   r   )r~   rn   r'   r   )r#   r   r|   r    r4   r   )r#   r   r|   r   r4   r   )r#   r   r|   r   r   r   r   rn   )r#   r   r|   r%   r   r   )r#   r   r|   rn   r   r   )r#   r   r|   r   r   r   )r#   r   r|   r   r'   r   )r   r   r|   r"   r'   r"   )r|   r"   r'   r"   )rL   r%   )r   r%   r#   r   r&   r   )r   r   r'   r   )r   r   r'   r   )r   rn   r'   rn   )r  r   r'   r  )r#   r   r'   r  )r#   r   r'   r  )r  rn   r#   r   r|   r   r'   r  )___doc__
__future__r   loggingr*   collections.abcr   email.headerregistryr   	functoolsr   r   inspectr   	itertoolsr	   typesr
   typingr   r   r   r   r   rF  r   _pathr   errorsr   r   	extensionr   warningsr   r   typing_extensionsr   setuptools._importlibr   r   r   distutils.distr   r   __annotations__rn   r%   r    r!   r"   	getLoggerr  r   r7   r-   r.   rE   rG   rJ   r   r   r   r   r   r   r   r   r   r   rw   r   rF   r`   r   r   r  r   r  r  r  r  r$  r.  rH   r^   r\   r_   rz   rv   ri   
EMPTY_LIST
EMPTY_DICTrk   rj   r;   rB   r6   <module>rf     sk     # " " " " "  				 # # # # # # ( ( ( ( ( ( % % % % % % % %             " " " " " " ? ? ? ? ? ? ? ? ? ? ? ? ? ?             ; ; ; ; ; ; ; ; ! ! ! ! ! ! F F F F F F F F ,++++++......,,,,,,++++++ "!"%% % % % %!&sDcN':!;  ; ; ; ;%~sE'4-<P&QSW&WX X X X XWT]]
'
H
%
%   .. . . .$'2 '2 '2 '2TL L L L) ) ) )
" " " "  
B 
B 
B 
B) ) ) )2C C C C6P P P P$+ + + +D D D D                   
 
 
 
*N N N N& 05     $   1 1 1 1Q Q Q Q? ? ? ?( ( ( (
$ $ $ $
0 0 0 0R R R  *  wwX...77666!3'	8 	8  	 	 	 	 %i0    2K@@1:>>2K@@	      <
KK(({{-.. ;;566 kk566	
 ''(9;UVV  =?QRR  13JKK ##$9;VWW /00 ;;566 KK/00 - $  ,!" KK 233#$ [[)9::% 4  !%"%&!%&$/!# #     (= = = = =' = = = = =rB   