
    j8'h=                       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mZ d
dl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% ddl&m'Z'  ei       Z(de)d<   ee*ee*e*f   f   Z+de)d<   edeeedf   gdf   Z,de)d<    ed      Z- ej\                  e/      Z0didZ1djdZ2dkdZ3dldZ4dmdZ5dnd Z6d!d"d#d$Z7dod%Z8	 	 	 	 	 	 dpd&Z9dqd'Z:drd(Z;dsd)Z<dtd*Z=dud+Z>dsd,Z?dvd-Z@dwd.ZAdxd/ZBdyd0ZCe(fdzd1ZDd{d2ZEd|d4ZFd}d5ZGd~d6ZHdd7ZIdd8ZJd9 ZKd: ZLe9e: ee;d;<       ee;d=<      e<e>e?e=d>ZMd?e)d@<   dAdBiZNdCdDiZOh dEZPdFe@iZQi d3 eKdG      dH eKdI      dJ eKdK      dL eKdM      dN eLdOdP      dQ eKdR      dS eLdTdU      dV eLdWdX      dY eKdZ      d[ eKd\      d] eKd^      d_eHdBeId`eJda eKdb      dc eKdd      ZRi g g g g i i i i g i deZSde)df<    G dg dhe      ZTy)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TypeVarUnion   )StrPath)RemovedConfigError)	Extension)SetuptoolsWarning)	TypeAliasmetadataDistribution)_OptionsListr   EMPTYr   _ProjectReadmeValuer   _Correspondence_Tdictc                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)distconfigfilenameroot_dircurrent_directorys        b/var/www/html/trade_iq/venv/lib/python3.12/site-packages/setuptools/config/_apply_pyprojecttoml.pyapplyr2   ,   s     wwx(/CHvx0dFH-		HHX$!$$&
"#K 	"#s   , B# #B: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           r1   r&   r&   B   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`.
            
)
r5   r9   r:   TOOL_TABLE_REMOVALSr   r   joinTOOL_TABLE_RENAMESr=   _copy_command_options)	r,   r-   r.   
tool_tabler?   r@   rA   
suggestionmsgs	            r1   r'   r'   S   s    FB'++L"=J"((* +u&u-**!"5h"?@J,,17 3C %TYYz/J%KLL%))(H=D(E*+ &$1rC   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)setr5   _PREVIOUSLY_DEFINEDr9   _MissingDynamicemit_RESET_PREVIOUSLY_DEFINED)r,   r>   rP   r?   getterr@   s         r1   r7   r7   i   sz    -##Ir23G,224 Lv&%7*:4LE$$5$>'@'D'DU'Ke$LrC   c                B    | j                         j                  dd      S )z1As defined in :pep:`566#json-compatible-metadata`-_)lowerreplace)keys    r1   r:   r:   t   s    99;sC((rC   c                   t        j                  |t              | |      }t        | j                  d| d       }|r	 ||       y t        | j                  |      s|t        v rt        | j                  ||       y t        | ||       y )Nset_)_PREPROCESSr5   _noopgetattrr   hasattrSETUPTOOLS_PATCHESsetattr)r,   r?   r@   valsetters        r1   r=   r=   y   sm    
//%
'e
4CT]]d5'ND9Fs		&%3E*Euc*eS!rC   ztext/markdownz
text/x-rstz
text/plain)z.mdz.rstz.txtc                   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      r1   	<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_TYPESrI   r9   
ValueError)filerZ   extvalidrN   s        r1   _guess_content_typerx      s}    WWdjjl+FAs
nc""IIF~/C/C/EFFE?wa
HC
24&3%@
AArC   c                b   ddl m} t        |t              r |}|j	                  ||      }t        |      }n?|j                  d      xs d}|j                  d      xs |j	                  ||      }|d   }t        | d|       |rt        | d|       |r| j                  j                  |       y y )	Nr   expandru   rl   textzcontent-typelong_descriptionlong_description_content_type)
setuptools.configr{   
isinstancestr
read_filesrx   r5   r=   _referenced_filesadd)r,   rf   r/   r{   ru   r|   ctypes          r1   _long_descriptionr      s     ) #s  x0#D)wwv$"wwvC&"3"3D("CN#($/D95A""4( rC   c                    ddl m} d|v r@t        | d|j                  |d   g|             | j                  j                  |d          y t        | d|d          y )Nr   rz   ru   licenser|   )r   r{   r=   r   r   r   )r,   rf   r/   r{   s       r1   _licenser      sS    (}D)V%6%6F}h%OP""3v;/D)S[1rC   c                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_specri   _email)appendr   r   r=   rI   )r,   rf   	_root_dirkindr?   email_fieldpersonaddrs           r1   _peopler      s    EK *vg/F"LL(v&/RDs4y)* D$		% 01DTF&/499[+AB rC   c                    t        | d|       y )Nproject_urls)r=   )r,   rf   r   s      r1   _project_urlsr      s    nc*rC   c                6    ddl m} t        | d ||             y )Nr   )SpecifierSetpython_requires)packaging.specifiersr   r=   )r,   rf   r   r   s       r1   _python_requiresr      s    1'c):;rC   c                Z    t        | dg       rd}t        j                  |       || _        y )Ninstall_requireszA`install_requires` overwritten in `pyproject.toml` (dependencies))rb   r   rU   r   r,   rf   r   rN   s       r1   _dependenciesr      s*    t',Qs#DrC   c                Z    t        | dd       rd}t        j                  |       || _        y )Nextras_requirezH`extras_require` overwritten in `pyproject.toml` (optional-dependencies))rb   r   rU   r   r   s       r1   _optional_dependenciesr      s*    t%t,Xs#DrC   c                z    | j                   xs g }d |D        }|D cg c]  }t        di | }}g ||S c c}w )Nc           	   3     K   | ]8  }|j                         D ci c]  \  }}|j                  d d      | c}} : yc c}}w w)rY   rZ   N)r9   r\   )rm   xrn   ro   s       r1   rp   z_ext_modules.<locals>.<genexpr>   s8     Hq	:1QYYsC !#:H:s   AA Arl   )ext_modulesr   )r,   rf   existingargskwnews         r1   _ext_modulesr      sJ    %2HHCHD%)
*r9?r?
*C
*X +s   8c                    |S Nrl   )_distrf   s     r1   ra   ra      s    JrC   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listr9   r:   )r>   r4   r   renamingr]   r@   rA   r   grouprn   ro   s              r1   r8   r8      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
c           	     &   | 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 )NrE   rF   cmdclass	distutilszCommand option r"   z is not defined)
r5   _valid_command_optionscommand_optionsr9   r:   rR   
setdefaultr   _loggerwarning)	pyprojectr,   r.   rL   r   valid_optionscmd_optscmdr-   rw   r]   r@   s               r1   rK   rK     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rC   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r   )_load_eprm   eps     r1   rp   z)_valid_command_options.<locals>.<genexpr>  s     HB8B<Hrq   c              3  &   K   | ]	  }|s|  y wr   rl   r   s     r1   rp   z)_valid_command_options.<locals>.<genexpr>  s     ;2B;   user_options)setuptools.distr   
_importlibr   _normalise_cmd_optionsglobal_optionsr   r   r9   r5   rR   rb   )
r   r   r   r   unloaded_entry_pointsloaded_entry_pointsr   r   	cmd_classoptss
             r1   r   r     s    ,%5l6Q6QRSM1H118LMH2GH;!4;Lhnn.>? "Y  ce,,WYPR-STT!c"
 rC   c                   | j                   j                  d      ry 	 | j                  | j                         fS # t        $ rI}|j
                  j                   d| j                   }t        j                  | d|        Y d }~y d }~ww xY w)Nzwheel.bdist_wheelz" while trying to load entry-point z: )	r@   
startswithr   load	Exception	__class____name__r   r   )r   exrN   s      r1   r   r   (  s}    	xx./ ## &&''I"''S3%r"'s   : 	B?BBr   c                6    t        |       j                  d      S )Nz_=)r:   strip)r   s    r1   _normalise_cmd_option_keyr   7  s    t$**400rC   c                D    | D ch c]  }t        |d          c}S c c}w )Nr   )r   )descfancy_options     r1   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   )rb   r9   )r,   ignorer@   rn   ro   s        r1   _get_previous_entrypointsr   ?  sB    /FD.$/52E"[[]>TQavoAqD>>>s   ==c                F    t        | dd       xs i }|j                  d      S )Nr   r   rb   r5   r,   r@   s     r1   _get_previous_scriptsr   E  s%    D.$/52E99&''rC   c                F    t        | dd       xs i }|j                  d      S )Nr   r   r   r   s     r1   _get_previous_gui_scriptsr   J  s$    D.$/52E99]##rC   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   )rb   )accr   s     r1   <lambda>z_attrgetter.<locals>.<lambda>[  s    '#q$*? rC   r"   )r   r   split)attrs    r1   _attrgetterr   O  s     6?CQQrC   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   )rm   iobjs     r1   rp   z5_some_attrgetter.<locals>._acessor.<locals>.<genexpr>l  s     5!.+a.%5s   c              3  &   K   | ]	  }||  y wr   rl   )rm   r   s     r1   rp   z5_some_attrgetter.<locals>._acessor.<locals>.<genexpr>m  s     81!-Q8r   )next)r   valuesr9   s   ` r1   _acessorz"_some_attrgetter.<locals>._acessork  s     5u588$??rC   rl   )r9   r   s   ` r1   _some_attrgetterr   ^  s    @ OrC   author)r   
maintainer)readmer   authorsmaintainersurlsdependenciesoptional_dependenciesrequires_pythonzdict[str, _Correspondence]r;   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~   r   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  rV   c                  &    e Zd ZdZdZedd       Zy)rT   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.
    c                <    | j                   j                  ||      S )NrQ   )_DETAILSformat)clsr?   r@   s      r1   detailsz_MissingDynamic.details  s    ||""e"<<rC   N)r?   r   r@   r   returnr   )r   
__module____qualname___SUMMARYr  classmethodr  rl   rC   r1   rT   rT     s"    JHH$ = =rC   rT   )r,   r   r-   r    r.   r   r  r   )r,   r   r-   r    r/   r   )r,   r   r-   r    r.   r   )r,   r   r>   r    )r]   r   r  r   )r,   r   r?   r   r@   r   )ru   r   r  z
str | None)r,   r   rf   r   r/   StrPath | None)r,   r   rf   r    r/   r  )r,   r   rf   
list[dict]r   r  r   r   )r,   r   rf   r    r   r  )r,   r   rf   r   r   r  )r,   r   rf   r   r   r  )r,   r   rf   r   r  zlist[Extension])r   r   rf   r   r  r   )r>   r    )r   r    r,   r   r.   r   )r   r   r  zdict[str, set[str]])r   zmetadata.EntryPointr  ztuple[str, type] | None)r   r   r  r   )r   r   r  zset[str])r,   r   r  zdict[str, list])r,   r   r  zlist | None)U__doc__
__future__r   loggingr#   email.headerregistryr   	functoolsr   r   inspectr   	itertoolsr   typesr	   typingr
   r   r   r   r   r   r   _pathr   errorsr   	extensionr   warningsr   typing_extensionsr   setuptools._importlibr   r   r   distutils.distr   r   __annotations__r   r   r   r   	getLoggerr   r   r2   r&   r'   r7   r:   r=   rs   rx   r   r   r   r   r   r   r   r   ra   r8   rK   r   r   r   r   r   r   r   r   r   r;   rJ   rH   rd   r`   rS   rV   rT   rl   rC   r1   <module>r3     s<   #  	 ( %   " N N N  ' ! (+.,+ ""%w %!&sDcN':!; Y ;%~sE'4-<P&QSW&WX XT]
'

H
%,."2,L)
" 
B)
)0)<J)02C$+< 
(N& 05 $1Q?(
$
R*  wX.76!3'	8 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 "=' =rC   