§
    WŠtj<h  ã                  ó€  — U d Z ddlmZ ddl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mZ ddlmZ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mZ ddl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) erddlm*Z* ddl+m,Z, ddl-m.Z. e/e0e1e0ef         f         Z2de3d<   	 e/e0e2f         Z4de3d<   	  eddd¦  «        Z5	 dFdGd$„Z6dHd&„Z7	 	 dIdJd+„Z8dKd0„Z9dLd3„Z:	 dMdNd6„Z;dOd;„Z< G d<„ d=ee5         ¦  «        Z= G d>„ d?e=d         ¦  «        Z> G d@„ dAe=d         ¦  «        Z? G dB„ dCe(¦  «        Z@ G dD„ dEe(¦  «        ZAdS )Pa<  
Load setuptools configuration from ``setup.cfg`` files.

**API will be made private in the future**

To read project metadata, consider using
``build.util.project_wheel_metadata`` (https://pypi.org/project/build/).
For simple scenarios, you can also try parsing the file directly
with the help of ``configparser``.
é    )ÚannotationsN)Úabstractmethod)Údefaultdict)ÚCallableÚIterableÚIterator)ÚpartialÚwraps)ÚTYPE_CHECKINGÚAnyÚClassVarÚGenericÚTypeVarÚcast)Údefault_environment)ÚInvalidRequirementÚRequirement)ÚInvalidVersionÚVersioné   )Ú_static)ÚStrPath)Ú	FileErrorÚOptionError)ÚSetuptoolsDeprecationWarningé   )Úexpand)Ú	TypeAlias©ÚDistribution)ÚDistributionMetadatar   ÚSingleCommandOptionsÚAllCommandOptionsÚTargetr    r!   FÚfilepathr   Úfind_othersÚboolÚignore_option_errorsÚreturnÚdictc                ó”   — ddl m}  |¦   «         }|r|                     ¦   «         ng }t          || ||¦  «        }t	          |¦  «        S )a,  Read given configuration file and returns options from it as a dict.

    :param str|unicode filepath: Path to configuration file
        to get options from.

    :param bool find_others: Whether to search for other configuration files
        which could be on in various places.

    :param bool ignore_option_errors: Whether to silently ignore
        options, values of which could not be resolved (e.g. due to exceptions
        in directives such as file:, attr:, etc.).
        If False exceptions are propagated as expected.

    :rtype: dict
    r   r   )Úsetuptools.distr    Úfind_config_filesÚ_applyÚconfiguration_to_dict)r%   r&   r(   r    ÚdistÚ	filenamesÚhandlerss          úX/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/setuptools/config/setupcfg.pyÚread_configurationr4   3   s^   € ð$ -Ð,Ð,Ð,Ð,Ð,àˆ<‰>Œ>€DØ,7Ð?�×&Ò&Ñ(Ô(Ð(¸R€IÝ�d˜H iÐ1EÑFÔF€HÝ  Ñ*Ô*Ð*ó    r0   c                óN   — t          | |¦  «         |                      ¦   «          | S )z`Apply the configuration from a ``setup.cfg`` file into an existing
    distribution object.
    )r.   Ú_finalize_requires)r0   r%   s     r3   Úapply_configurationr8   M   s+   € õ ˆ4�ÑÔÐØ×ÒÑÔÐØ€Kr5   © Úother_filesúIterable[StrPath]ú2tuple[ConfigMetadataHandler, ConfigOptionsHandler]c                óf  — ddl m} t          j                             |¦  «        }t          j                             |¦  «        st          d|› d�¦  «        ‚t          j        ¦   «         }t          j        t          j         	                    |¦  «        ¦  «         g |¢|‘}	 | 
                    | t          t          t                   |¦  «        ¬¦  «         t          | | j        |¬¦  «        }|                      ¦   «          t          j        |¦  «         n# t          j        |¦  «         w xY w|S )zHRead configuration from ``filepath`` and applies to the ``dist`` object.r   )Ú_DistributionzConfiguration file z does not exist.)r1   )r(   )r,   r>   ÚosÚpathÚabspathÚisfiler   ÚgetcwdÚchdirÚdirnameÚparse_config_filesr   ÚlistÚstrÚparse_configurationÚcommand_optionsÚ_finalize_license_files)r0   r%   r:   r(   r>   Úcurrent_directoryr1   r2   s           r3   r.   r.   V   s"  € ð .Ð-Ð-Ð-Ð-Ð-åŒw�Š˜xÑ(Ô(€HåŒ7�>Š>˜(Ñ#Ô#ð JÝÐH¨hÐHÐHÐHÑIÔIÐIåœ	™œÐÝ„H�RŒW�_Š_˜XÑ&Ô&Ñ'Ô'Ð'Ø(�+Ð(˜xÐ(€Ið$à×(Ò(¨½½dÅ3¼iÈÑ9SÔ9SÐ(ÑTÔTÐTÝ&Ø�$Ô&Ð=Qð
ñ 
ô 
ˆð 	×$Ò$Ñ&Ô&Ð&å
ŒÐ"Ñ#Ô#Ð#Ð#ø�ŒÐ"Ñ#Ô#Ð#Ð#øøøà€Os   Â#A D ÄD.Ú
target_objú#Distribution | DistributionMetadataÚkeyrH   c                óx   — d|› �}t          j        t          | |¦  «        }t          | ||¦  «        } |¦   «         S )z 
    Given a target object and option key, get that option from
    the target object, either through a get_{key} method or
    from an attribute directly.
    Úget_)Ú	functoolsr	   Úgetattr)rM   rO   Úgetter_nameÚby_attributeÚgetters        r3   Ú_get_optionrW   u   s?   € ð ˜�,�,€KÝÔ$¥W¨j¸#Ñ>Ô>€LÝ�Z ¨lÑ;Ô;€FØˆ6‰8Œ8€Or5   r2   úKIterable[ConfigHandler[Distribution] | ConfigHandler[DistributionMetadata]]c                ó–   — t          t          ¦  «        }| D ]1}|j        D ]'}t          |j        |¦  «        }|||j                 |<   Œ(Œ2|S )z¿Returns configuration data gathered by given handlers as a dict.

    :param Iterable[ConfigHandler] handlers: Handlers list,
        usually from parse_configuration()

    :rtype: dict
    )r   r*   Úset_optionsrW   rM   Úsection_prefix)r2   Úconfig_dictÚhandlerÚoptionÚvalues        r3   r/   r/   �   sk   € õ $¥DÑ)Ô)€Kàð @ð @ˆØÔ)ð 	@ð 	@ˆFÝ Ô 2°FÑ;Ô;ˆEØ:?ˆK˜Ô.Ô/°Ñ7Ð7ð	@ð Ðr5   ÚdistributionrJ   c           	     óŒ  — t          j        | ¦  «        5 }t          | |||¦  «        }|                     ¦   «          | j        s|j        | _        t          | j        |||| j        | j        ¦  «        }|                     ¦   «          | j         	                    |j        |j        ¦  «         ddd¦  «         n# 1 swxY w Y   ||fS )aÒ  Performs additional parsing of configuration options
    for a distribution.

    Returns a list of used option handlers.

    :param Distribution distribution:
    :param dict command_options:
    :param bool ignore_option_errors: Whether to silently ignore
        options, values of which could not be resolved (e.g. due to exceptions
        in directives such as file:, attr:, etc.).
        If False exceptions are propagated as expected.
    :rtype: list
    N)
r   ÚEnsurePackagesDiscoveredÚConfigOptionsHandlerÚparseÚpackage_dirÚConfigMetadataHandlerÚmetadataÚsrc_rootÚ_referenced_filesÚupdate)r`   rJ   r(   Úensure_discoveredÚoptionsÚmetas         r3   rI   rI   —   s  € õ$ 
Ô	(¨Ñ	6Ô	6ð 
Ð:KÝ&ØØØ Øñ	
ô 
ˆð 	�Š‰ŒˆØÔ'ð 	;Ø'.Ô':ˆLÔ$å$ØÔ!ØØ ØØÔ$ØÔ!ñ
ô 
ˆð 	�
Š
‰ŒˆØÔ&×-Ò-ØÔ% tÔ'=ñ	
ô 	
ð 	
ð+
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð2 �ˆ=Ðs   •BB7Â7B;Â>B;ÚlabelÚ
orig_valueÚparsedrG   c                óÊ  ‡— d|v st          ‰¦  «        dk    rdS t          ¦   «                              ¦   «         }	 t          ‰d         ¦  «        }|j        |v r$t
                               | ‰d         ¬¦  «         dS dS # t          $ rX}t          ˆfd„|D ¦   «         ¦  «        r2t
           	                    | ‰d         ¬¦  «        }t          |¦  «        |‚Y d}~dS d}~ww xY w)am  Because users sometimes misinterpret this configuration:

    [options.extras_require]
    foo = bar;python_version<"4"

    It looks like one requirement with an environment marker
    but because there is no newline, it's parsed as two requirements
    with a semicolon as separator.

    Therefore, if:
        * input string does not contain a newline AND
        * parsed result contains two requirements AND
        * parsing of the two parts from the result ("<first>;<second>")
        leads in a valid Requirement with a valid marker
    a UserWarning is shown to inform the user about the possible problem.
    ú
r   Nr   )ÚfieldÚreqc              3  óN   •K  — | ]}‰d                                |¦  «        V — Œ dS )r   N©Ú
startswith)Ú.0Úmarkerrp   s     €r3   ú	<genexpr>z8_warn_accidental_env_marker_misconfig.<locals>.<genexpr>à   s5   øè è € ÐBÐB°ˆv�aŒy×#Ò# FÑ+Ô+ÐBÐBÐBÐBÐBÐBr5   )
ÚlenÚ
marker_envÚkeysr   ÚnameÚ_AmbiguousMarkerÚemitr   ÚanyÚmessage)rn   ro   rp   Úmarkersrt   ÚexÚmsgs     `    r3   Ú%_warn_accidental_env_marker_misconfigr†   Å   s  ø€ ð" ˆzÐÐ�S ™[œ[¨AÒ-Ð-Øˆå‰lŒl×ÒÑ!Ô!€Gð2Ý˜& œ)Ñ$Ô$ˆØŒ8�wÐÐÝ×!Ò!¨°6¸!´9Ð!Ñ=Ô=Ð=Ð=Ð=ð Ðøåð 2ð 2ð 2ÝÐBÐBÐBÐB¸'ÐBÑBÔBÑBÔBð 	2Ý"×*Ò*°¸FÀ1¼IÐ*ÑFÔFˆCÝ$ SÑ)Ô)¨rÐ1ð	2ð 	2ð 	2ð 	2ð 	2ð 	2øøøøð2øøøs   ¼A B  Â 
C"Â
ACÃC"c                  óD  — e Zd ZU dZded<   	 i Zded<   	 d%d„Zed&d„¦   «         Ze	e
d'd„¦   «         ¦   «         Zd(d„Zed)d„¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd*d„Zd+d„Zed„ ¦   «         Zed„ ¦   «         Zed,d!„¦   «         Zd(d"„Zd(d#„Zd$„ Zd S )-ÚConfigHandlerz1Handles metadata supplied in configuration files.rH   r[   zClassVar[dict[str, str]]ÚaliasesrM   r$   rl   r#   rk   úexpand.EnsurePackagesDiscoveredr)   ÚNonec                óÈ   — || _         || _        t          |                      |¦  «        ¦  «        | _        g | _        || _        t          t                   ¦   «         | _	        d S ©N)
r(   rM   r*   Ú_section_optionsÚsectionsrZ   rk   ÚsetrH   ri   )ÚselfrM   rl   r(   rk   s        r3   Ú__init__zConfigHandler.__init__õ   sZ   € ð %9ˆÔ!Ø",ˆŒÝ˜T×2Ò2°7Ñ;Ô;Ñ<Ô<ˆŒØ&(ˆÔØ!2ˆÔÝ!$¥S¤¡¤ˆÔð	ð 	r5   ú*Iterator[tuple[str, SingleCommandOptions]]c              #  ó²   K  — |                      ¦   «         D ]?\  }}|                     | j        ¦  «        \  }}}|rŒ&|                     d¦  «        |fV — Œ@d S )Nú.)ÚitemsÚ	partitionr[   Úlstrip)Úclsrl   Ú	full_namer_   ÚpreÚ_sepr~   s          r3   rŽ   zConfigHandler._section_options  su   è è € ð !(§¢¡¤ð 	*ð 	*ÑˆI�uØ'×1Ò1°#Ô2DÑEÔE‰OˆC��tØð ØØ—+’+˜cÑ"Ô" EÐ)Ð)Ð)Ð)Ð)ð		*ð 	*r5   údict[str, Callable]c                ó:   — t          | j        j        › d�¦  «        ‚)ú.Metadata item name to parser function mapping.z must provide .parsers property)ÚNotImplementedErrorÚ	__class__Ú__name__)r‘   s    r3   ÚparserszConfigHandler.parsers  s'   € õ "ØŒ~Ô&ÐGÐGÐGñ
ô 
ð 	
r5   c                óâ  — | j         }| j                             ||¦  «        }	 t          ||¦  «        }n"# t          $ r}t          |¦  «        |‚d }~ww xY w|rd S 	  | j                             |d„ ¦  «        |¦  «        }n# t          f| j        z  $ r Y d S w xY wt          j
        |j        |¦  «        }t          |d|› �|¦  «        } ||¦  «         | j                             |¦  «         d S )Nc                ó   — | S r�   r9   )Úxs    r3   ú<lambda>z+ConfigHandler.__setitem__.<locals>.<lambda>(  s   € ¸Q€ r5   Úset_)rM   r‰   ÚgetrS   ÚAttributeErrorÚKeyErrorr£   Ú	Exceptionr(   rR   r	   Ú__setattr__rZ   Úappend)	r‘   Úoption_namer_   rM   Úcurrent_valueÚerp   Úsimple_setterÚsetters	            r3   Ú__setitem__zConfigHandler.__setitem__  s'  € Ø”_ˆ
ð ”l×&Ò& {°KÑ@Ô@ˆð	/Ý# J°Ñ<Ô<ˆMˆMøÝð 	/ð 	/ð 	/Ý˜;Ñ'Ô'¨QÐ.øøøøð	/øøøð ð 	àˆFð	Ø?�T”\×%Ò% k°;°;Ñ?Ô?ÀÑFÔFˆFˆFøÝˆ|˜dÔ7Ñ7ð 	ð 	ð 	ØˆFˆFð	øøøõ "Ô)¨*Ô*@À+ÑNÔNˆÝ˜Ð%9¨KÐ%9Ð%9¸=ÑIÔIˆØˆˆv‰ŒˆàÔ×Ò Ñ,Ô,Ð,Ð,Ð,s&   ¤5 µ
A¿AÁAÁ%B ÂBÂBú,c                ó¤   — t          |t          ¦  «        r|S d|v r|                     ¦   «         }n|                     |¦  «        }d„ |D ¦   «         S )z×Represents value as a list.

        Value is split either by separator (defaults to comma) or by lines.

        :param value:
        :param separator: List items separator character.
        :rtype: list
        rr   c                ó^   — g | ]*}|                      ¦   «         ¯|                      ¦   «         ‘Œ+S r9   ©Ústrip)rx   Úchunks     r3   ú
<listcomp>z-ConfigHandler._parse_list.<locals>.<listcomp>D  s-   € ÐBÐBÐB %°E·K²K±M´MÐB�—’‘”ÐBÐBÐBr5   )Ú
isinstancerG   Ú
splitlinesÚsplit)r™   r_   Ú	separators      r3   Ú_parse_listzConfigHandler._parse_list2  s\   € õ �e�TÑ"Ô"ð 	ØˆLà�5ˆ=ˆ=Ø×$Ò$Ñ&Ô&ˆEˆEà—K’K 	Ñ*Ô*ˆEàBÐB¨5ÐBÑBÔBÐBr5   c                óò   — d}i }|                       |¦  «        D ]\}|                     |¦  «        \  }}}||k    rt          d|› �¦  «        ‚|                     ¦   «         ||                     ¦   «         <   Œ]|S )zPRepresents value as a dict.

        :param value:
        :rtype: dict
        ú=z&Unable to parse option value to dict: )rÀ   r—   r   r¹   )r™   r_   r¿   ÚresultÚlinerO   ÚsepÚvals           r3   Ú_parse_dictzConfigHandler._parse_dictF  s„   € ð ˆ	ØˆØ—O’O EÑ*Ô*ð 	.ð 	.ˆDØ ŸNšN¨9Ñ5Ô5‰MˆC��cØ�iÒÐÝ!Ð"RÈ5Ð"RÐ"RÑSÔSÐSØ"%§)¢)¡+¤+ˆF�3—9’9‘;”;ÑÐàˆr5   c                ó2   — |                      ¦   «         }|dv S )zQRepresents value as boolean.

        :param value:
        :rtype: bool
        )Ú1ÚtrueÚyes)Úlower©r™   r_   s     r3   Ú_parse_boolzConfigHandler._parse_boolW  s   € ð —’‘”ˆØÐ,Ð,Ð,r5   c                ó   ‡— ˆfd„}|S )zßReturns a parser function to make sure field inputs
        are not files.

        Parses a value after getting the key so error messages are
        more informative.

        :param key:
        :rtype: callable
        c                ó€   •— d}|                       |¦  «        rt          d‰› d�¦  «        ‚t          j        | ¦  «        S )Núfile:z"Only strings are accepted for the z field, files are not accepted)rw   Ú
ValueErrorr   ÚStr)r_   Úexclude_directiverO   s     €r3   Úparserz3ConfigHandler._exclude_files_parser.<locals>.parserm  sZ   ø€ Ø 'ÐØ×ÒÐ 1Ñ2Ô2ð Ý ð-¸ð -ð -ð -ñô ð õ ”;˜uÑ%Ô%Ð%r5   r9   )r™   rO   rÕ   s    ` r3   Ú_exclude_files_parserz#ConfigHandler._exclude_files_parsera  s#   ø€ ð	&ð 	&ð 	&ð 	&ð 	&ð ˆr5   Úroot_dirúStrPath | Nonec                ót  — d}t          |t          ¦  «        s|S |                     |¦  «        st          j        |¦  «        S |t          |¦  «        d…         }d„ |                     d¦  «        D ¦   «         }| j                             |¦  «         t          j        t          j
        ||¦  «        ¦  «        S )aO  Represents value as a string, allowing including text
        from nearest files using `file:` directive.

        Directive is sandboxed and won't reach anything outside
        directory with setup.py.

        Examples:
            file: README.rst, CHANGELOG.md, src/file.txt

        :param str value:
        :rtype: str
        rÑ   Nc                ó6   — g | ]}|                      ¦   «         ‘ŒS r9   r¸   )rx   r@   s     r3   r»   z-ConfigHandler._parse_file.<locals>.<listcomp>Ž  s    € Ð>Ð>Ð> d�T—Z’Z‘\”\Ð>Ð>Ð>r5   rµ   )r¼   rH   rw   r   rÓ   r{   r¾   ri   rj   r   Ú
read_files)r‘   r_   r×   Úinclude_directiveÚspecÚ	filepathss         r3   Ú_parse_filezConfigHandler._parse_filex  s²   € ð $Ðå˜%¥Ñ%Ô%ð 	ØˆLà×ÒÐ 1Ñ2Ô2ð 	&Ý”;˜uÑ%Ô%Ð%à•SÐ*Ñ+Ô+Ð-Ð-Ô.ˆØ>Ð>¨d¯jªj¸©o¬oÐ>Ñ>Ô>ˆ	ØÔ×%Ò% iÑ0Ô0Ð0åŒ{�6Ô,¨Y¸ÑAÔAÑBÔBÐBr5   r   c                óî   — d}|                      |¦  «        st          j        |¦  «        S |                     |d¦  «        }|                     | j        j        ¦  «         t          j        |||¦  «        S )z·Represents value as a module attribute.

        Examples:
            attr: package.attr
            attr: package.module.attr

        :param str value:
        :rtype: str
        zattr:Ú )	rw   r   rÓ   Úreplacerj   rk   re   r   Ú	read_attr)r‘   r_   re   r×   Úattr_directiveÚ	attr_descs         r3   Ú_parse_attrzConfigHandler._parse_attr“  ss   € ð !ˆØ×Ò Ñ/Ô/ð 	&Ý”;˜uÑ%Ô%Ð%à—M’M .°"Ñ5Ô5ˆ	ð 	×Ò˜4Ô1Ô=Ñ>Ô>Ð>ÝÔ 	¨;¸ÑAÔAÐAr5   c                ó   ‡— ˆfd„}|S )z¹Returns parser function to represents value as a list.

        Parses a value applying given methods one after another.

        :param parse_methods:
        :rtype: callable
        c                ó,   •— | }‰D ]} ||¦  «        }Œ|S r�   r9   )r_   rp   ÚmethodÚparse_methodss      €r3   rd   z1ConfigHandler._get_parser_compound.<locals>.parse±  s+   ø€ ØˆFà'ð (ð (�Ø˜ ™œ��àˆMr5   r9   )r™   rê   rd   s    ` r3   Ú_get_parser_compoundz"ConfigHandler._get_parser_compound§  s#   ø€ ð	ð 	ð 	ð 	ð 	ð ˆr5   c                ób   — i }|                      ¦   «         D ]\  }\  }} |||¦  «        ||<   Œ|S )a  Parses section options into a dictionary.

        Applies a given parser to each option in a section.

        :param dict section_options:
        :param callable values_parser: function with 2 args corresponding to key, value
        :rtype: dict
        )r–   )r™   Úsection_optionsÚvalues_parserr_   rO   Ú_rÆ   s          r3   Ú_parse_section_to_dict_with_keyz-ConfigHandler._parse_section_to_dict_with_key»  sH   € ð ˆØ,×2Ò2Ñ4Ô4ð 	1ð 	1‰MˆC‘�!�SØ&˜ s¨CÑ0Ô0ˆE�#‰JˆJØˆr5   Nc                óD   ‡— ‰rˆfd„nd„ }|                       ||¦  «        S )a   Parses section options into a dictionary.

        Optionally applies a given parser to each value.

        :param dict section_options:
        :param callable values_parser: function with 1 arg corresponding to option value
        :rtype: dict
        c                ó   •—  ‰|¦  «        S r�   r9   )rï   Úvrî   s     €r3   r§   z6ConfigHandler._parse_section_to_dict.<locals>.<lambda>Ô  s   ø€ ˜}˜}¨QÑ/Ô/€ r5   c                ó   — |S r�   r9   )rï   ró   s     r3   r§   z6ConfigHandler._parse_section_to_dict.<locals>.<lambda>Ô  s   € ÐUV€ r5   )rð   )r™   rí   rî   rÕ   s     ` r3   Ú_parse_section_to_dictz$ConfigHandler._parse_section_to_dictÊ  s7   ø€ ð 5BÐWÐ/Ð/Ð/Ð/Ð/ÈÈˆØ×2Ò2°?ÀFÑKÔKÐKr5   c                ó¬   — |                      ¦   «         D ]>\  }\  }}t          j        t          ¦  «        5  || |<   ddd¦  «         n# 1 swxY w Y   Œ?dS )zQParses configuration file section.

        :param dict section_options:
        N)r–   Ú
contextlibÚsuppressr«   )r‘   rí   r~   rï   r_   s        r3   Úparse_sectionzConfigHandler.parse_section×  s¢   € ð
 !0× 5Ò 5Ñ 7Ô 7ð 	#ð 	#ÑˆD‘*�1�eÝÔ$¥XÑ.Ô.ð #ð #à"��T‘
ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #øð	#ð 	#s   ¶AÁA	ÁA	c                óö   — | j                              ¦   «         D ]^\  }}d}|rd|› �}t          | d|› �                     dd¦  «        d¦  «        }|€t	          d| j        › d|› d�¦  «        ‚ ||¦  «         Œ_dS )	zTParses configuration file items from one
        or more related sections.

        rá   rï   rù   r•   Ú__Nz*Unsupported distribution option section: [ú])r�   r–   rS   râ   r   r[   )r‘   Úsection_namerí   Úmethod_postfixÚsection_parser_methods        r3   rd   zConfigHandler.parseá  sÒ   € ð
 .2¬]×-@Ò-@Ñ-BÔ-Bð 	3ð 	3Ñ)ˆL˜/ØˆNØð 4Ø!3 \Ð!3Ð!3�å5<Øà0 Ð0Ð0×8Ò8¸¸dÑCÔCØñ	6ô 6Ð!ð %Ð,Ý!ð>ØÔ+ð>ð >Ø.:ð>ð >ð >ñô ð ð
 "Ð! /Ñ2Ô2Ð2Ð2ð%	3ð 	3r5   c                óD   ‡‡‡— t          ‰¦  «        ˆˆˆfd„¦   «         }|S )z¢this function will wrap around parameters that are deprecated

        :param msg: deprecation message
        :param func: function to be wrapped around
        c                 óf   •— ‰                      dd¦  «         t          j        d‰fi ‰¤Ž  ‰| i |¤ŽS )NÚ
stacklevelr   z Deprecated config in `setup.cfg`)Ú
setdefaultÚ_DeprecatedConfigr€   )ÚargsÚkwargsÚfuncÚkwr…   s     €€€r3   Úconfig_handlerz@ConfigHandler._deprecated_config_handler.<locals>.config_handler  sH   ø€ à�MŠM˜,¨Ñ*Ô*Ð*ÝÔ"Ð#EÀsÐQÐQÈbÐQÐQÐQØ�4˜Ð( Ð(Ð(Ð(r5   )r
   )r‘   r  r…   r  r	  s    ``` r3   Ú_deprecated_config_handlerz(ConfigHandler._deprecated_config_handlerú  sB   øøø€ õ 
ˆt‰Œð	)ð 	)ð 	)ð 	)ð 	)ð 	)ñ 
Œð	)ð
 Ðr5   )rM   r$   rl   r#   rk   rŠ   r)   r‹   )rl   r#   r)   r“   ©r)   r�   ©r)   r‹   )rµ   )r×   rØ   )r×   r   r�   )r¢   Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r‰   r’   ÚclassmethodrŽ   Úpropertyr   r£   r´   rÀ   rÇ   rÎ   rÖ   rß   ræ   rë   rð   rõ   rù   rd   r
  r9   r5   r3   rˆ   rˆ   å   sí  € € € € € € Ø;Ð;àÐÐÑðð
 )+€GÐ*Ð*Ð*Ñ*ððð ð ð ð" ð*ð *ð *ñ „[ð*ð Øð
ð 
ð 
ñ „^ñ „Xð
ð-ð -ð -ð -ð4 ðCð Cð Cñ „[ðCð& ðð ñ „[ðð  ð-ð -ñ „[ð-ð ðð ñ „[ðð,Cð Cð Cð Cð6Bð Bð Bð Bð( ðð ñ „[ðð& ðð ñ „[ðð ð
Lð 
Lð 
Lñ „[ð
Lð#ð #ð #ð #ð3ð 3ð 3ð 3ð2ð ð ð ð r5   rˆ   c                  óf   ‡ — e Zd ZdZdddddœZdZ	 dej        fdˆ fd„Ze	dd„¦   «         Z
d„ Zˆ xZS )rf   rg   ÚurlÚdescriptionÚclassifiersÚ	platforms)Ú	home_pageÚsummaryÚ
classifierÚplatformFNrM   r!   rl   r#   r(   r'   rk   rŠ   re   údict | Noner×   rØ   r)   r‹   c                ól   •— t          ¦   «                              ||||¦  «         || _        || _        d S r�   )Úsuperr’   re   r×   )r‘   rM   rl   r(   rk   re   r×   r¡   s          €r3   r’   zConfigMetadataHandler.__init__  s8   ø€ õ 	‰Œ×Ò˜ WÐ.BÐDUÑVÔVÐVØ&ˆÔØ ˆŒˆˆr5   r�   c                ó   — |                       | j        t          j        ¦  «        }|                       | j        t          j        ¦  «        }t          | j        | j        ¬¦  «        }| j	        }i dt          j
        “dt          j
        “dt          j
        “dt          j
        “d|“d|“d|“d	|“d
|                       ||¦  «        “d |d¦  «        “d|“d|“d|“dt          j
        “d| j        “dt          j
        “d|“S )rŸ   ©r×   ÚauthorÚauthor_emailÚ
maintainerÚmaintainer_emailr  ÚkeywordsÚprovidesÚ	obsoletesr  ÚlicenseÚlicense_filesr  Úlong_descriptionÚlong_description_content_typeÚversionr  Úproject_urls)rë   rÀ   r   ÚListrÇ   ÚDictr	   rß   r×   rÖ   rÓ   Ú_parse_version)r‘   Úparse_list_staticÚparse_dict_staticÚ
parse_fileÚexclude_files_parsers        r3   r£   zConfigMetadataHandler.parsers'  s^  € ð !×5Ò5°dÔ6FÍÌÑUÔUÐØ ×5Ò5°dÔ6FÍÌÑUÔUÐÝ˜TÔ-¸¼ÐFÑFÔFˆ
Ø#Ô9Ðð
Ø•g”kð
à�GœKð
ð �'œ+ð
ð ¥¤ð	
ð
 Ð*ð
ð Ð)ð
ð Ð)ð
ð Ð*ð
ð ˜4×4Ò4°ZÐARÑSÔSð
ð Ð+Ð+¨IÑ6Ô6ð
ð Ð.ð
ð ˜:ð
ð  
ð
ð ,­W¬[ð
ð �tÔ*ð
ð  •7”;ð!
ð" Ð-ð#
ð 	
r5   c                óH  — |                       || j        ¦  «        }||k    rO|                     ¦   «         }	 t          |¦  «         n(# t          $ r}t          d|› d|› �¦  «        |‚d}~ww xY w|S t          j        |                      || j	        | j        ¦  «        ¦  «        S )zSParses `version` option value.

        :param value:
        :rtype: str

        zVersion loaded from z does not comply with PEP 440: N)
rß   r×   r¹   r   r   r   r   r,  ræ   re   )r‘   r_   r,  r±   s       r3   r0  z$ConfigMetadataHandler._parse_versionC  sË   € ð ×"Ò" 5¨$¬-Ñ8Ô8ˆà�eÒÐØ—m’m‘o”oˆGðÝ˜Ñ Ô Ð Ð øÝ!ð ð ð Ý!ð6¨5ð 6ð 6Ø,3ð6ð 6ñô ð ðøøøøðøøøð ˆNåŒ~˜d×.Ò.¨u°dÔ6FÈÌÑVÔVÑWÔWÐWs   ·A Á
A,ÁA'Á'A,)rM   r!   rl   r#   r(   r'   rk   rŠ   re   r  r×   rØ   r)   r‹   r  )r¢   r  r  r[   r‰   Ústrict_moder?   Úcurdirr’   r  r£   r0  Ú__classcell__©r¡   s   @r3   rf   rf   
  s­   ø€ € € € € Ø€Nð Ø Ø#Øð	ð €Gð €Kðð $(Ø#%¤9ð!ð !ð !ð !ð !ð !ð !ð ð
ð 
ð 
ñ „Xð
ð6Xð Xð Xð Xð Xð Xð Xr5   rf   c                  ó    ‡ — e Zd ZdZdˆ fd„Zed„ ¦   «         Zd„ Zdd„Ze	dd„¦   «         Z
d„ Zd„ Zd„ Zd d„Zd„ Zd d„Zd d„Zd d„Zd d„Zˆ xZS )!rc   rl   rM   r    r#   r(   r'   rk   rŠ   r)   r‹   c                óv   •— t          ¦   «                              ||||¦  «         |j        | _        i | _        d S r�   )r  r’   rh   r×   re   )r‘   rM   rl   r(   rk   r¡   s        €r3   r’   zConfigOptionsHandler.__init__`  s=   ø€ õ 	‰Œ×Ò˜ WÐ.BÐDUÑVÔVÐVØ"Ô+ˆŒØ+-ˆÔÐÐr5   c                ó0   — |                       |d¬¦  «        S )Nú;)r¿   )rÀ   rÍ   s     r3   Ú_parse_list_semicolonz*ConfigOptionsHandler._parse_list_semicolonk  s   € à�Š˜u°ˆÑ4Ô4Ð4r5   c                ó:   — |                       || j        ¬¦  «        S )Nr   )rß   r×   )r‘   r_   s     r3   Ú_parse_file_in_rootz(ConfigOptionsHandler._parse_file_in_rooto  s   € Ø×Ò °´ÐÑ>Ô>Ð>r5   rn   rH   r_   c                ó°   — |                       |                      |¦  «        ¦  «        }t          |||¦  «         t          j        d„ |D ¦   «         ¦  «        S )Nc              3  óD   K  — | ]}|                      d ¦  «        °|V — ŒdS )ú#Nrv   )rx   rÄ   s     r3   rz   z@ConfigOptionsHandler._parse_requirements_list.<locals>.<genexpr>x  s3   è è € ÐPÐP T¸4¿?º?È3Ñ;OÔ;OÐP˜DÐPÐPÐPÐPÐPÐPr5   )r>  r@  r†   r   r.  )r‘   rn   r_   rp   s       r3   Ú_parse_requirements_listz-ConfigOptionsHandler._parse_requirements_listr  sV   € à×+Ò+¨D×,DÒ,DÀUÑ,KÔ,KÑLÔLˆÝ-¨e°U¸FÑCÔCÐCõ Œ|ÐPÐP¨VÐPÑPÔPÑPÔPÐPr5   r�   c                óØ   — | j         }| j        }| j        }||| j        ||||                      |d¦  «        t          | j        d¦  «        | j        | j        | j	        |t          j        |dœS )rŸ   zeThe namespace_packages parameter is deprecated, consider using implicit namespaces instead (PEP 420).Úinstall_requires)Úzip_safeÚinclude_package_datare   ÚscriptsÚeager_resourcesÚdependency_linksÚnamespace_packagesrF  Úsetup_requiresÚpackagesÚentry_pointsÚ
py_modulesÚpython_requiresÚcmdclass)rÀ   rÎ   Ú_parse_cmdclassrÇ   r
  r	   rD  r>  Ú_parse_packagesr@  r   ÚSpecifierSet)r‘   Ú
parse_listÚ
parse_boolÚparse_cmdclasss       r3   r£   zConfigOptionsHandler.parsers{  s–   € ð Ô%ˆ
ØÔ%ˆ
ØÔ-ˆð #Ø$.ØÔ+Ø!Ø)Ø *Ø"&×"AÒ"AØðHñ#ô #õ !(ØÔ-Ð/Añ!ô !ð #Ô8ØÔ,Ø Ô4Ø$Ý&Ô3Ø&ð+
ð 
ð 	
r5   c                óv   — | j         j        }t          j        |                      |¦  «        || j        ¦  «        S r�   )rk   re   r   rR  rÇ   r×   )r‘   r_   re   s      r3   rS  z$ConfigOptionsHandler._parse_cmdclassš  s1   € ØÔ,Ô8ˆÝŒ˜t×/Ò/°Ñ6Ô6¸ÀTÄ]ÑSÔSÐSr5   c                ó:  — ddg}|                      ¦   «         }||vr|                      |¦  «        S |                      | j                             di ¦  «        ¦  «        }|                     ||d         k    | j        | j        ¬¦  «         t          j	        di |¤ŽS )zTParses `packages` option value.

        :param value:
        :rtype: list
        zfind:zfind_namespace:zpackages.findr   )Ú
namespacesr×   Úfill_package_dirr9   )
r¹   rÀ   Úparse_section_packages__findr�   r©   rj   r×   re   r   Úfind_packages)r‘   r_   Úfind_directivesÚtrimmed_valueÚfind_kwargss        r3   rT  z$ConfigOptionsHandler._parse_packagesž  s·   € ð #Ð$5Ð6ˆØŸš™œˆà Ð/Ð/Ø×#Ò# EÑ*Ô*Ð*ð ×7Ò7ØŒM×Ò˜o¨rÑ2Ô2ñ
ô 
ˆð 	×ÒØ%¨¸Ô);Ò;Ø”]Ø!Ô-ð 	ñ 	
ô 	
ð 	
õ Ô#Ð2Ð2 kÐ2Ð2Ð2r5   c                óÊ   ‡— |                       || j        ¦  «        }g d¢Šˆfd„|                     ¦   «         D ¦   «         }|                     d¦  «        }|�|d         |d<   |S )zœParses `packages.find` configuration file section.

        To be used in conjunction with _parse_packages().

        :param dict section_options:
        )ÚwhereÚincludeÚexcludec                ó(   •— i | ]\  }}|‰v ¯	|¯||“ŒS r9   r9   )rx   Úkró   Ú
valid_keyss      €r3   ú
<dictcomp>zEConfigOptionsHandler.parse_section_packages__find.<locals>.<dictcomp>Á  s)   ø€ ÐVÐVÐV¡  1ÀÀZÀÀÐTUÀ�q˜!ÀÀÀr5   rc  Nr   )rõ   rÀ   r–   r©   )r‘   rí   Úsection_datara  rc  rh  s        @r3   r]  z1ConfigOptionsHandler.parse_section_packages__find·  sx   ø€ ð ×2Ò2°?ÀDÔDTÑUÔUˆà4Ð4Ð4ˆ
ØVÐVÐVÐV¨×(:Ò(:Ñ(<Ô(<ÐVÑVÔVˆà—’ Ñ(Ô(ˆØÐØ#(¨¤8ˆK˜Ñ àÐr5   c                óF   — |                       || j        ¦  «        }|| d<   dS )z`Parses `entry_points` configuration file section.

        :param dict section_options:
        rO  N)rõ   rÀ   ©r‘   rí   rp   s      r3   Úparse_section_entry_pointsz/ConfigOptionsHandler.parse_section_entry_pointsÉ  s,   € ð
 ×,Ò,¨_¸dÔ>NÑOÔOˆØ%ˆˆ^ÑÐÐr5   c                ó`   — |                       || j        ¦  «        }t          j        |¦  «        S r�   )rõ   rÀ   r   Úcanonic_package_data)r‘   rí   Úpackage_datas      r3   Ú_parse_package_dataz(ConfigOptionsHandler._parse_package_dataÑ  s+   € Ø×2Ò2°?ÀDÔDTÑUÔUˆÝÔ*¨<Ñ8Ô8Ð8r5   c                ó6   — |                       |¦  «        | d<   dS )z`Parses `package_data` configuration file section.

        :param dict section_options:
        rp  N©rq  ©r‘   rí   s     r3   Úparse_section_package_dataz/ConfigOptionsHandler.parse_section_package_dataÕ  s"   € ð
  $×7Ò7¸ÑHÔHˆˆ^ÑÐÐr5   c                ó6   — |                       |¦  «        | d<   dS )zhParses `exclude_package_data` configuration file section.

        :param dict section_options:
        Úexclude_package_dataNrs  rt  s     r3   Ú"parse_section_exclude_package_dataz7ConfigOptionsHandler.parse_section_exclude_package_dataÜ  s#   € ð
 (,×'?Ò'?ÀÑ'PÔ'PˆÐ#Ñ$Ð$Ð$r5   c                óh   ‡ — ‰                       |ˆ fd„¦  «        }t          j        |¦  «        ‰ d<   dS )zbParses `extras_require` configuration file section.

        :param dict section_options:
        c                ó8   •— ‰                      d| › d�|¦  «        S )Nzextras_require[rü   )rD  )rg  ró   r‘   s     €r3   r§   zCConfigOptionsHandler.parse_section_extras_require.<locals>.<lambda>ê  s#   ø€ ˜×6Ò6Ð7MÈÐ7MÐ7MÐ7MÈqÑQÔQ€ r5   Úextras_requireN)rð   r   r/  rl  s   `  r3   Úparse_section_extras_requirez1ConfigOptionsHandler.parse_section_extras_requireã  sF   ø€ ð
 ×5Ò5ØØQÐQÐQÐQñ
ô 
ˆõ
 ")¤¨fÑ!5Ô!5ˆÐÑÐÐr5   c                óv   — |                       || j        ¦  «        }t          j        || j        ¦  «        | d<   dS )z^Parses `data_files` configuration file section.

        :param dict section_options:
        Ú
data_filesN)rõ   rÀ   r   Úcanonic_data_filesr×   rl  s      r3   Úparse_section_data_filesz-ConfigOptionsHandler.parse_section_data_filesð  s;   € ð
 ×,Ò,¨_¸dÔ>NÑOÔOˆÝ#Ô6°v¸t¼}ÑMÔMˆˆ\ÑÐÐr5   )
rM   r    rl   r#   r(   r'   rk   rŠ   r)   r‹   )rn   rH   r_   rH   r  r  )r¢   r  r  r[   r’   r  r>  r@  rD  r  r£   rS  rT  r]  rm  rq  ru  rx  r|  r€  r8  r9  s   @r3   rc   rc   ]  sW  ø€ € € € € Ø€Nð	.ð 	.ð 	.ð 	.ð 	.ð 	.ð ð5ð 5ñ „[ð5ð?ð ?ð ?ðQð Qð Qð Qð ð
ð 
ð 
ñ „Xð
ð<Tð Tð Tð3ð 3ð 3ð2ð ð ð$&ð &ð &ð &ð9ð 9ð 9ðIð Ið Ið IðQð Qð Qð Qð
6ð 
6ð 
6ð 
6ðNð Nð Nð Nð Nð Nð Nð Nr5   rc   c                  ó0   — e Zd ZdZdZdZed„ ¦   «         ZdS )r   zAmbiguous requirement marker.zá
    One of the parsed requirements in `{field}` looks like a valid environment marker:

        {req!r}

    Please make sure that the configuration file is correct.
    You can use dangling lines to avoid this problem.
    z'userguide/declarative_config.html#opt-2c                ó\   — d| j         › �}|                      | j        | j        ||¬¦  «        S )Nz%https://setuptools.pypa.io/en/latest/)Úsee_urlÚformat_args)Ú	_SEE_DOCSÚ_formatÚ_SUMMARYÚ_DETAILS)r™   r  Údocss      r3   r‚   z_AmbiguousMarker.message  s0   € àF°s´}ÐFÐFˆØ�{Š{˜3œ<¨¬¸tÐQSˆ{ÑTÔTÐTr5   N)r¢   r  r  r‡  rˆ  r…  r  r‚   r9   r5   r3   r   r   ù  sG   € € € € € Ø.€Hð€Hð :€Ið ðUð Uñ „[ðUð Uð Ur5   r   c                  ó   — e Zd ZdZdS )r  z!userguide/declarative_config.htmlN)r¢   r  r  r…  r9   r5   r3   r  r    s   € € € € € Ø3€I€I€Ir5   r  )FF)r%   r   r&   r'   r(   r'   r)   r*   )r0   r    r%   r   r)   r    )r9   F)
r0   r    r%   r   r:   r;   r(   r'   r)   r<   )rM   rN   rO   rH   )r2   rX   r)   r*   )F)r`   r    rJ   r#   r(   r'   r)   r<   )rn   rH   ro   rH   rp   rG   )Br  Ú
__future__r   r÷   rR   r?   Úabcr   Úcollectionsr   Úcollections.abcr   r   r   r	   r
   Útypingr   r   r   r   r   r   Úpackaging.markersr   r|   Úpackaging.requirementsr   r   Úpackaging.versionr   r   rá   r   Ú_pathr   Úerrorsr   r   Úwarningsr   r   r   r,   r    Údistutils.distr!   r*   rH   Útupler"   r  r#   r$   r4   r8   r.   rW   r/   rI   r†   rˆ   rf   rc   r   r  r9   r5   r3   ú<module>r˜     sã  ðð	ð 	ð 	ð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ Gà ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø Ð Ð Ð Ð Ð àð 4Ø Ð Ð Ð Ð Ð à,Ð,Ð,Ð,Ð,Ð,à3Ð3Ð3Ð3Ð3Ð3à"& s¨E°#°s°(¬OÐ';Ô"<Ð Ð <Ð <Ð <Ñ <ðð
  $ CÐ)=Ð$=Ô>Ð Ð >Ð >Ð >Ñ >Ø Ø	ˆ�˜>Ð+AÑ	BÔ	B€ð PUð+ð +ð +ð +ð +ð4ð ð ð ð &(Ø!&ð	ð ð ð ð ð>	ð 	ð 	ð 	ðð ð ð ð2 "'ð+ð +ð +ð +ð +ð\2ð 2ð 2ð 2ð@bð bð bð bð b�G˜F”Oñ bô bð bðJ	PXð PXð PXð PXð PX˜MÐ*@ÔAñ PXô PXð PXðfYNð YNð YNð YNð YN˜=¨Ô8ñ YNô YNð YNðxUð Uð Uð Uð UÐ3ñ Uô Uð Uð(4ð 4ð 4ð 4ð 4Ð4ñ 4ô 4ð 4ð 4ð 4r5   