
    7fY9                    4   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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mZ d
dlmZ d
dlmZ d
dlmZ er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         Z&edeegdf         Z'ee%e'f         Z( ej)        e*          Z+ddZ,ddZ-ddZ.ddZ/dd"Z0dd&Z1d'd(d)d*Z2dd-Z3dd0Z4dd1Z5dd5Z6dd6Z7dd7Z8dd9Z9dd:Z:dd;Z;dd=Z<e#fdd@Z=ddDZ>ddFZ?ddJZ@ddLZAddNZBddOZCdP ZDdQ ZEe4e5 ee6dRS           ee6dTS          e7e9e:e8dUZFdVe$dW<   dXdYiZGdZd[iZHh d\ZIi dE eDd]          d^ eDd_          d` eDda          db eDdc          dd eEdedf          dg eDdh          di eEdjdk          dl eEdmdn          do eDdp          dq eDdr          ds eDdt          dueAdYeBdveCdw eDdx          dy eDdz          ZJi g g g g i i i i g i d{ZKde$d|<    G d} d~e          ZLd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)Address)partialreduce)cleandoc)chain)MappingProxyType)TYPE_CHECKINGAnyCallableDictMappingUnion   )StrPath)RemovedConfigError)SetuptoolsWarning)_OptionsListmetadataDistributionr   EMPTYr   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_files)r   r   r   root_dircurrent_directorys        d/home/feoh/.local/pipx/shared/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.pyapplyr-   -   s      wx((/CHvx000dFH---	HX$!!!$$&&&
"####"####Ks   0(B- -Cr*   c                   |                     di                                           }|sd S t          | |           t          |           |                                D ]]\  }}t          |          }t                               ||          }t          |          r || ||           Lt          | ||           ^d S )Nproject)	getcopy_handle_missing_dynamic_unify_entry_pointsitemsjson_compatible_keyPYPROJECT_CORRESPONDENCEcallable_set_config)r   r   r*   project_tablefieldvaluenorm_keycorresps           r,   r$   r$   C   s    JJy"--2244M D-000&&&%++-- . .u&u--*..xBBG 	.GD%****gu----. .    c                   |                     di                                di           }|sd S |                                D ]\  }}t          |          }|t          v rQt	          t          |                   }d| d}t          d                    t	          |          |g                    t                               ||          }t          | ||           t          || |           d S )Ntool
setuptoolsz,
            The parameter `tool.setuptools.zZ` was long deprecated
            and has been removed from `pyproject.toml`.
            
)
r0   r4   r5   TOOL_TABLE_REMOVALSr   r   joinTOOL_TABLE_RENAMESr8   _copy_command_options)	r   r   r   
tool_tabler:   r;   r<   
suggestionmsgs	            r,   r%   r%   T   s    FB''++L"==J "((** + +u&u--***!"5h"?@@J,1  C %TYYz/J%K%KLLL%))(H==D(E****&$11111r>   r9   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r:   r;   N)setr0   _PREVIOUSLY_DEFINEDr4   _MissingDynamicemit_RESET_PREVIOUSLY_DEFINED)r   r9   rK   r:   getterr;   s         r,   r2   r2   j   s    -##Ir2233G,2244 L Lv&&%7*:*:F4LLE L$$5$>>>'@'D'DU'K'Ke$L Lr>   keystrc                R    |                                                      dd          S )z1As defined in :pep:`566#json-compatible-metadata`-_)lowerreplace)rS   s    r,   r5   r5   u   s     99;;sC(((r>   r:   r;   r   c                    t          | j        d| d           }|r ||           d S t          | j        |          s	|t          v rt	          | j        ||           d S t	          | ||           d S )Nset_)getattrr   hasattrSETUPTOOLS_PATCHESsetattr)r   r:   r;   setters       r,   r8   r8   z   s    T]N5NND99F $u		&	& $%3E*E*Eue,,,,,eU#####r>   ztext/markdownz
text/x-rstz
text/plain)z.mdz.rstz.txtfile
str | Nonec                @   t           j                            |                                           \  }}|sd S |t          v rt          |         S d                    d t                                          D                       }d| d}t          d|  d|           )N, c              3  ,   K   | ]\  }}| d | dV  dS )z ()N .0kvs      r,   	<genexpr>z&_guess_content_type.<locals>.<genexpr>   s2      FFtq!llalllFFFFFFr>   z3only the following file extensions are recognized: r    zUndefined content type for )r!   r"   splitextrX   _CONTENT_TYPESrD   r4   
ValueError)ra   rW   extvalidrI   s        r,   _guess_content_typerr      s    Wdjjll++FAs t
nc""IIFF~/C/C/E/EFFFFFE
H
H
H
HC
@4@@3@@
A
AAr>   val_ProjectReadmeValuec                   ddl m} t          |t                    r(|}|                    ||          }t          |          }nJ|                    d          pd}|                    d          p|                    ||          }|d         }t          | d|           |rt          | d|           |r| j        	                    |           d S d S )	Nr   expandra   rg   textzcontent-typelong_descriptionlong_description_content_type)
setuptools.configrw   
isinstancerT   
read_filesrr   r0   r8   _referenced_filesadd)r   rs   r*   rw   ra   rx   ctypes          r,   _long_descriptionr      s    (((((( #s $  x00#D))wwv$"wwvC&"3"3D("C"CN#($/// BD95AAA )""4((((() )r>   c                    ddl m} d|v rNt          | d|                    |d         g|                     | j                            |d                    d S t          | d|d                    d S )Nr   rv   ra   licenserx   )r{   rw   r8   r}   r~   r   )r   rs   r*   rw   s       r,   _licenser      s    ((((((}}D)V%6%6F}h%O%OPPP""3v;/////D)S[11111r>   
list[dict]	_root_dirkindc                   g }g }|D ]}d|vr|                     |d                    "d|vr|                     |d                    Bt          |d         |d                   }|                     t          |                     |r$t          | |d                    |                     |r)t          | | dd                    |                     d S d S )Nnameemail)display_name	addr_specrd   _email)appendr   rT   r8   rD   )r   rs   r   r   r:   email_fieldpersonaddrs           r,   _peopler      s   EK * *vg////F""LL((((v&/RRRDs4yy)))) 2D$		% 0 0111 CDT///499[+A+ABBBBBC Cr>   c                (    t          | d|           d S )Nproject_urls)r8   )r   rs   r   s      r,   _project_urlsr      s    nc*****r>   c                F    ddl m} t          | d ||                     d S )Nr   )SpecifierSetpython_requires)packaging.specifiersr   r8   )r   rs   r   r   s       r,   _python_requiresr      s7    111111'c):):;;;;;r>   listc                b    t          | dg           rd}t          j        |           || _        d S )Ninstall_requireszA`install_requires` overwritten in `pyproject.toml` (dependencies))r\   r   rP   r   )r   rs   r   rI   s       r,   _dependenciesr      s;    t',, $Qs###Dr>   c                B    t          | dd           pi }i ||| _        d S )Nextras_require)r\   r   )r   rs   r   existings       r,   _optional_dependenciesr      s1    t-t44:H-X--Dr>   c                b   | }|                     d|                     di                     }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 = rg   rh   s      r,   
<listcomp>z2_unify_entry_points.<locals>.<dictcomp>.<listcomp>   s&    :::DAqa<<A<<:::r>   )r4   )ri   r   groups      r,   
<dictcomp>z'_unify_entry_points.<locals>.<dictcomp>   sK     #
 #
 #
e#
::EKKMM:::#
 #
 #
r>   )popr   r4   r5   )r9   r/   r   renamingrS   r;   r<   s          r,   r3   r3      s    G;;~w{{>2/N/NOOL,]KKH7==??++ @ @
U&s++x/6{{3/?/?L(+, 
#
 #
+1133#
 #
 #

 
r>   	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 )Nr@   rA   cmdclass	distutilszCommand option r    z is not defined)
r0   _valid_command_optionscommand_optionsr4   r5   rM   
setdefaultrT   _loggerwarning)r   r   r   rG   r   valid_optionscmd_optscmdr   rq   rS   r;   s               r,   rF   rF      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r>   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 N)_load_epri   eps     r,   rl   z)_valid_command_options.<locals>.<genexpr>  s(      HHB8B<<HHHHHHr>   c              3     K   | ]}||V  	d S r   rg   r   s     r,   rl   z)_valid_command_options.<locals>.<genexpr>  s'      ;;2;B;;;;;;r>   user_options)
_importlibr   setuptools.distr   _normalise_cmd_optionsglobal_optionsr   r   r4   r0   rM   r\   )
r   r   r   r   unloaded_entry_pointsloaded_entry_pointsr   r   	cmd_classoptss
             r,   r   r     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r>   r   metadata.EntryPointtuple[str, type] | Nonec                    	 | j         |                                 fS # t          $ r@}|j        j         d| j          }t
                              | d|            Y d }~d S d }~ww xY w)Nz" while trying to load entry-point z: )r   load	Exception	__class____name__r   r   )r   exrI   s      r,   r   r     s~    ##   &SS"'SS3"'''ttttts    
A'5A""A'r   c                F    t          |                               d          S )Nz_=)r5   strip)r   s    r,   _normalise_cmd_option_keyr   "  s    t$$**4000r>   descr   set[str]c                    d | D             S )Nc                8    h | ]}t          |d                    S )r   )r   )ri   fancy_options     r,   	<setcomp>z)_normalise_cmd_options.<locals>.<setcomp>'  s%    PPP<%l1o66PPPr>   rg   )r   s    r,   r   r   &  s    PP4PPPPr>   dict[str, list]c                n    dt          | dd           pi }fd|                                D             S )N)r   r   r   c                $    i | ]\  }}|v	||S rg   rg   )ri   rj   rk   ignores      r,   r   z-_get_previous_entrypoints.<locals>.<dictcomp>-  s$    >>>TQavooAqooor>   )r\   r4   )r   r;   r   s     @r,   _get_previous_entrypointsr   *  s@    /FD.$//52E>>>>U[[]]>>>>r>   list | Nonec                R    t          | dd           pi }|                    d          S )Nr   r   r\   r0   r   r;   s     r,   _get_previous_scriptsr   0  s+    D.$//52E99&'''r>   c                R    t          | dd           pi }|                    d          S )Nr   r   r   r   s     r,   _get_previous_gui_scriptsr   5  s*    D.$//52E99]###r>   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   )r\   )accxs     r,   <lambda>z_attrgetter.<locals>.<lambda>F  s    '#q$*?*? r>   r    )r   r   split)attrs    r,   _attrgetterr   :  s$     6??CQQQr>   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   )ri   iobjs     r,   rl   z5_some_attrgetter.<locals>._acessor.<locals>.<genexpr>W  s3      55!.+a..%%555555r>   c              3     K   | ]}||V  	d S r   rg   )ri   r   s     r,   rl   z5_some_attrgetter.<locals>._acessor.<locals>.<genexpr>X  s"      881!-Q----88r>   )next)r   valuesr4   s   ` r,   _acessorz"_some_attrgetter.<locals>._acessorV  s<    5555u55588888$???r>   rg   )r4   r   s   ` r,   _some_attrgetterr   I  s(    @ @ @ @ @ Or>   author)r   
maintainer)readmer   authorsmaintainersurlsdependenciesoptional_dependenciesrequires_pythonzdict[str, _Correspondence]r6   script_filesr   namespace_packagesz
        Please migrate to implicit native namespaces instead.
        See https://packaging.python.org/en/latest/guides/packaging-namespace-packages/.
        >   license_filer   license_filesprovides_extrasrz   zmetadata.nameversionzmetadata.versiondescriptionzmetadata.descriptionr   zmetadata.long_descriptionzrequires-pythonr   zmetadata.python_requiresr   zmetadata.licenser   zmetadata.authorzmetadata.author_emailr  zmetadata.maintainerzmetadata.maintainer_emailkeywordszmetadata.keywordsclassifierszmetadata.classifiersr  zmetadata.project_urlsr   gui-scriptsr  r   optional-dependenciesr   )r   r   r  r  r  r  r   r   r  r  r  rQ   c                  .    e Zd ZdZdZed
d            Zd	S )rO   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.
    r:   rT   r;   r   r   c                :    | j                             ||          S )NrL   )_DETAILSformat)clsr:   r;   s      r,   detailsz_MissingDynamic.details  s    |""e"<<<r>   N)r:   rT   r;   r   r   rT   )r   
__module____qualname___SUMMARYr  classmethodr  rg   r>   r,   rO   rO     s@        JHH$ = = = [= = =r>   rO   )r   r   r   r   r   r   r   r   )r   r   r   r   r*   r   )r   r   r   r   r   r   )r   r   r9   r   )rS   rT   r   rT   )r   r   r:   rT   r;   r   )ra   rT   r   rb   )r   r   rs   rt   r*   r   )r   r   rs   r   r*   r   )r   r   rs   r   r   r   r   rT   )r   r   rs   r   )r   r   rs   rT   )r   r   rs   r   )r9   r   )r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   )r   rT   r   rT   )r   r   r   r   )r   r   r   r   )r   r   r   r   )M__doc__
__future__r   loggingr!   email.headerregistryr   	functoolsr   r   inspectr   	itertoolsr   typesr	   typingr
   r   r   r   r   r   _pathr   errorsr   warningsr   distutils.distr   setuptools._importlibr   r   r   r   __annotations__rT   rt   
_CorrespFn_Correspondence	getLoggerr   r   r-   r$   r%   r2   r5   r8   rn   rr   r   r   r   r   r   r   r   r3   rF   r   r   r   r   r   r   r   r   r   r6   rE   rC   r^   rN   rQ   rO   rg   r>   r,   <module>r-     sQ     # " " " " "  				 ( ( ( ( ( ( % % % % % % % %             " " " " " "                      ' ' ' ' ' ' ( ( ( ( ( ( -++++++......,,,,,,!!"%% % % % %Cc3h/0 ~sG4d:;
Z(
'
H
%
%   ,. . . ."2 2 2 2,L L L L) ) ) )
$ $ $ $  
B 
B 
B 
B) ) ) ),2 2 2 2C C C C$+ + + +< < < <       . . . .

 
 
 
(N N N N& 05     "   1 1 1 1Q Q Q Q? ? ? ?( ( ( (
$ $ $ $
R R R  *  wwX...77666!3'	8 	8  	 	 	 	 %i0      
KK(({{-.. ;;566 kk566	
 ''(9;UVV {{-..  13JKK ##$9;VWW /00 ;;566 KK/00 - $ , KK 233  [[)9::! . # #     "= = = = =' = = = = =r>   