
    wff9                        U 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	 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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(ee)d<   ee*e+f   Z,edeegdf   Z-ee+e-f   Z. ej^                  e0      Z1ddde*deddfdZ2ddde*defdZ3ddde*defdZ4ddde*fdZ5de+de+fdZ6ddde+d efd!Z7d"d#d$d%Z8d&e+dee+   fd'Z9ddd(e,defd)Z:ddd(e*defd*Z;ddd(ee*   d+ed,e+fd-Z<ddd(e*fd.Z=ddd(e*fd/Z>ddd(e?fd0Z@ddd(e*fd1ZAde*fd2ZBd3e*dddefd4ZCe(fd5edee+ee+   f   fd6ZDd7d8deee+ef      fd9ZEd:e+de+fd;ZFd<d=dee+   fd>ZGdddee+e?f   fd?ZHdddee?   fd@ZIdddee?   fdAZJdB ZKdC ZLe:e; ee<dDE       ee<dFE      e=e@eAe>dGZMee+e.f   e)dH<   dIdJiZNdKdLiZOh dMZPi d: eKdN      dO eKdP      dQ eKdR      dS eKdT      dU eLdVdW      dX eKdY      dZ eLd[d\      d] eLd^d_      d` eKda      db eKdc      dd eKde      dfeHdJeIdgeJdh eKdi      dj eKdk      ZQi g g g g i i i i g i dlZRe*e)dm<    G dn doe!      ZSy)pak  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.
    N)Mapping)Address)partialreduce)cleandoc)chain)MappingProxyType)TYPE_CHECKINGAnyCallableDictListOptionalSetTupleTypeUnioncast   )StrPath)RemovedConfigError)SetuptoolsWarning)_OptionsListmetadataDistributionEMPTYr   distconfigfilenamereturnc                 z   |s| S t         j                  j                  |      xs d}t        | ||       t	        | ||       t        j
                         }t        j                  |       	 | j                          | j                          t        j                  |       | S # t        j                  |       w xY w)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        _C:\xampp-8.1.2\htdocs\client\python\Lib\site-packages\setuptools/config/_apply_pyprojecttoml.pyapplyr1   1   s     wwx(/CHvx0dFH-		HHX$!$$&
"#K 	"#s   , B# #B:r.   c                 0   |j                  di       j                         }|sy t        | |       t        |       |j	                         D ]I  \  }}t        |      }t        j                  ||      }t        |      r || ||       =t        | ||       K y )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           r0   r(   r(   G   s    JJy"-224MD-0&%++- .u&u-*..xBGD%*gu-.    c                 ~   |j                  di       j                  di       }|sy |j                         D ]x  \  }}t        |      }|t        v r=t	        t        |         }d| d}t        dj                  t	        |      |g            t        j                  ||      }t        | ||       z t        || |       y )Ntool
setuptoolsz,
            The parameter `tool.setuptools.zZ` was long deprecated
            and has been removed from `pyproject.toml`.
            
)
r4   r8   r9   TOOL_TABLE_REMOVALSr   r   joinTOOL_TABLE_RENAMESr<   _copy_command_options)	r   r    r!   
tool_tabler>   r?   r@   
suggestionmsgs	            r0   r)   r)   X   s    FB'++L"=J"((* +u&u-**!"5h"?@J,,17 3C %TYYz/J%KLL%))(H=D(E*+ &$1rB   r=   c                     t        |j                  dg             }t        j                         D ]I  \  }}||v r||v r ||       }|st        j                  ||       t        j                  |      ||<   K y)zJBe temporarily forgiving with ``dynamic`` fields not listed in ``dynamic``dynamicr>   r?   N)setr4   _PREVIOUSLY_DEFINEDr8   _MissingDynamicemit_RESET_PREVIOUSLY_DEFINED)r   r=   rO   r>   getterr?   s         r0   r6   r6   n   sz    -##Ir23G,224 Lv&%7*:4LE$$5$>'@'D'DU'Ke$LrB   keyc                 B    | j                         j                  dd      S )z1As defined in :pep:`566#json-compatible-metadata`-_)lowerreplace)rW   s    r0   r9   r9   y   s    99;sC((rB   r>   r?   c                     t        | j                  d| d       }|r	 ||       y t        | j                  |      s|t        v rt	        | j                  ||       y t	        | ||       y )Nset_)getattrr   hasattrSETUPTOOLS_PATCHESsetattr)r   r>   r?   setters       r0   r<   r<   ~   sV    T]]d5'ND9Fu		&%3E*Eue,eU#rB   ztext/markdownz
text/x-rstz
text/plain)z.mdz.rstz.txtfilec                    t         j                  j                  | j                               \  }}|sy |t        v r	t        |   S dj                  d t        j                         D              }d| d}t        d|  d|       )N, c              3   2   K   | ]  \  }}| d | d  yw)z ()N ).0kvs      r0   	<genexpr>z&_guess_content_type.<locals>.<genexpr>   s      Ftq!2aSlF   z3only the following file extensions are recognized: r$   zUndefined content type for )r%   r&   splitextr[   _CONTENT_TYPESrH   r8   
ValueError)rd   rZ   extvalidrM   s        r0   _guess_content_typert      s}    WWdjjl+FAs
nc""IIF~/C/C/EFFE?wa
HC
24&3%@
AArB   valc                 ~   ddl m} t        |t              r |}|j	                  ||      }t        |      }n?|j                  d      xs g }|j                  d      xs |j	                  ||      }|d   }t        | d|       |rt        | d|       |r*| j                  j                  t        t        |             y y )Nr   expandrd   textzcontent-typelong_descriptionlong_description_content_type)setuptools.configrx   
isinstancestr
read_filesrt   r4   r<   _referenced_filesaddr   )r   ru   r.   rx   rd   ry   ctypes          r0   _long_descriptionr      s    (#s!$  x0#C(wwv$"wwvC&"3"3D("CN#($/D95A""4T?3 rB   c                     ddl m} d|v r@t        | d|j                  |d   g|             | j                  j                  |d          y t        | d|d          y )Nr   rw   rd   licensery   )r|   rx   r<   r   r   r   )r   ru   r.   rx   s       r0   _licenser      sS    (}D)V%6%6F}h%OP""3v;/D)S[1rB   	_root_dirkindc                 X   g }g }|D ]a  }d|vr|j                  |d          d|vr|j                  |d          5t        |d   |d         }|j                  t        |             c |rt        | |dj	                  |             |r t        | | ddj	                  |             y y )Nnameemail)display_name	addr_specrf   _email)appendr   r~   r<   rH   )r   ru   r   r   r>   email_fieldpersonaddrs           r0   _peopler      s    EK *vg/F"LL(v&/RDs4y)* D$		% 01DTF&/499[+AB rB   c                     t        | d|       y )Nproject_urls)r<   )r   ru   r   s      r0   _project_urlsr      s    nc*rB   c                 6    ddl m} t        | d ||             y )Nr   )SpecifierSetpython_requires)&setuptools.extern.packaging.specifiersr   r<   )r   ru   r   r   s       r0   _python_requiresr      s    C'c):;rB   c                 Z    t        | dg       rd}t        j                  |       || _        y )Ninstall_requireszA`install_requires` overwritten in `pyproject.toml` (dependencies))r_   r   rT   r   )r   ru   r   rM   s       r0   _dependenciesr      s*    t',Qs#DrB   c                 <    t        | dd       xs i }i ||| _        y )Nextras_require)r_   r   )r   ru   r   existings       r0   _optional_dependenciesr      s(    t-t4:H-X--DrB   c                    | }|j                  d|j                  di             }ddd}t        |j                               D ],  \  }}t        |      }||v s|j                  |      |||   <   . |rT|j                         D 	
ci c]0  \  }}|r)||j                         D 	
cg c]  \  }	}
|	 d|
  c}
}	2 c}
}	}}|d<   y y c c}
}	w c c}
}	}}w )Nentry-pointsentry_pointsconsole_scriptsgui_scripts)scriptsr   z = )poplistr8   r9   )r=   r3   r   renamingrW   r?   r@   r   grouprk   rl   s              r0   r7   r7      s    G;;~w{{>2/NOL,]KH7==?+ @
U&s+x/6{{3/?L(+,	@   ,113#
 #
e EKKM:DAqaSA3<::#
 :#
s   	C
'C	8C
	C
	pyprojectc           	      &   | j                  di       }|j                  di       j                  di       }t        |      }|j                  }| j                  di       j                  di       j                         D ]  \  }}t	        |      }|j                  |t                     }	|j                  |i        |j                         D ]D  \  }
}t	        |
      }
t        |      |f||   |
<   |
|	vs)t        j                  d| d|
 d       F  y )NrD   rE   cmdclass	distutilszCommand option r$   z is not defined)
r4   _valid_command_optionscommand_optionsr8   r9   rQ   
setdefaultr~   _loggerwarning)r   r   r!   rK   r   valid_optionscmd_optscmdr    rs   rW   r?   s               r0   rJ   rJ      s	   vr*J~~lB/33JCH*84M##H }}VR044["EKKM 
NV!#&!!#su-C$ ,,. 	NJC%c*C"%h-!7HSM#% /#auO LM	N	
NrB   r   c           	      J   ddl m} ddlm} dt	        |j
                        i} |j                  d      }d |D        }d	 |D        }t        || j                               D ]=  \  }}|j                  |t                     }	|	t	        t        |d
g             z  }	|	||<   ? |S )Nr   r   r   r   globalzdistutils.commands)r   c              3   2   K   | ]  }t        |        y wN)_load_eprj   eps     r0   rm   z)_valid_command_options.<locals>.<genexpr>  s     HB8B<Hrn   c              3   &   K   | ]	  }|s|  y wr   ri   r   s     r0   rm   z)_valid_command_options.<locals>.<genexpr>  s     ;2B;   user_options)
_importlibr   setuptools.distr   _normalise_cmd_optionsglobal_optionsr   r   r8   r4   rQ   r_   )
r   r   r   r   unloaded_entry_pointsloaded_entry_pointsr   r   	cmd_classoptss
             r0   r   r   
  s    %,5l6Q6QRSM1H118LMH2GH;!4;Lhnn.>? "Y  ce,,WYPR-STT!c"
 rB   r   zmetadata.EntryPointc                     	 | j                   | j                         fS # t        $ rI}|j                  j                   d| j                    }t
        j                  | d|        Y d }~y d }~ww xY w)Nz" while trying to load entry-point z: )r   load	Exception	__class____name__r   r   )r   exrM   s      r0   r   r     se    ## &&''I"''S3%r"'s    	A0?A++A0r   c                 6    t        |       j                  d      S )Nz_=)r9   strip)r   s    r0   _normalise_cmd_option_keyr   %  s    t$**400rB   descr   c                 D    | D ch c]  }t        |d          c}S c c}w )Nr   )r   )r   fancy_options     r0   r   r   )  s     KOP<%l1o6PPPs   c                     d}t        | dd       xs i }|j                         D ci c]  \  }}||vs|| c}}S c c}}w )N)r   r   r   )r_   r8   )r   ignorer?   rk   rl   s        r0   _get_previous_entrypointsr   -  sB    /FD.$/52E"[[]>TQavoAqD>>>s   ==c                 F    t        | dd       xs i }|j                  d      S )Nr   r   r_   r4   r   r?   s     r0   _get_previous_scriptsr   3  s%    D.$/52E99&''rB   c                 F    t        | dd       xs i }|j                  d      S )Nr   r   r   r   s     r0   _get_previous_gui_scriptsr   8  s$    D.$/52E99]##rB   c                 D    t        t        d | j                  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     r0   <lambda>z_attrgetter.<locals>.<lambda>I  s    '#q$*? rB   r$   )r   r   split)attrs    r0   _attrgetterr   =  s     6?C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                 B      fdD        }t        d |D        d       S )Nc              3   @   K   | ]  } t        |              y wr   )r   )rj   iobjs     r0   rm   z5_some_attrgetter.<locals>._acessor.<locals>.<genexpr>Z  s     5!.+a.%5s   c              3   &   K   | ]	  }||  y wr   ri   )rj   r   s     r0   rm   z5_some_attrgetter.<locals>._acessor.<locals>.<genexpr>[  s     81!-Q8r   )next)r   valuesr8   s   ` r0   _acessorz"_some_attrgetter.<locals>._acessorY  s     5u588$??rB   ri   )r8   r   s   ` r0   _some_attrgetterr   L  s    @ OrB   author)r   
maintainer)readmer   authorsmaintainersurlsdependenciesoptional_dependenciesrequires_pythonr:   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_extrasr{   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  rU   c                   2    e Zd ZdZdZedededefd       Zy)rS   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>   r?   r"   c                 <    | j                   j                  ||      S )NrP   )_DETAILSformat)clsr>   r?   s      r0   detailsz_MissingDynamic.details  s    ||""e"<<rB   N)	r   
__module____qualname___SUMMARYr  classmethodr~   r   r  ri   rB   r0   rS   rS     s7    JHH$ =C = = = =rB   rS   )T__doc__loggingr%   collections.abcr   email.headerregistryr   	functoolsr   r   inspectr   	itertoolsr   typesr	   typingr
   r   r   r   r   r   r   r   r   r   r   _pathr   errorsr   warningsr   distutils.distr   setuptools._importlibr   r   r   r   __annotations__dictr~   
_DictOrStr
_CorrespFn_Correspondence	getLoggerr   r   r1   r(   r)   r6   r9   r<   rp   rt   r   r   r   r   r   r   r   r   r7   rJ   r   r   r   r   r   r   r   r   r   r:   rI   rG   ra   rR   rU   rS   ri   rB   r0   <module>r$     s    	 # ( %   "     ' (+.,!"%w %49
~sG4d:;
Z(
'

H
%   N ,.~ .t .w ."2N 2D 2G 2,L. L L)S )S )
$n $S $ $ 
Bc 
Bhsm 
B4N 4 4w 4*2> 2 2 2C. CtDz Cg CS C$+ +T +<> < <   T  . .d .

t 
(NT N N7 N& 05 W c3s8m9L "& 8E#t)4D+E 1C 1C 1Q QCH Q?N ?tCI ?( (8D> (
$N $x~ $
R*  wX.76!3'	8 $sO34 	 %i0    
K({-. ;56 k56	
 '(9;UV {-.  13JK #$9;VW /0 ;56 K/0 - $ , K 23  [)9:! . # 4 "=' =rB   