§
    tšjHf  ã                   óî  — d 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 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mZ ddlmZmZ dd	lmZ dd
lmZmZ ddlmZ ddl m!Z!m"Z" ddl#m$Z$ ddl%m&Z& e	rddl'm(Z( ddl)m*Z* ee+ej,        f         Z-ededef         f         Z.	 ede.f         Z/ eded         ¬¦  «        Z0	 d:de-de1fd„Z2ddde-ddfd„Z3	 	 d;ddde-dee-         de4ded          f
d!„Z5d"e0d#e+fd$„Z6d%ed          de1fd&„Z7	 d<d'dd(e/ded)         fd*„Z8d+e+d,e+d-e9fd.„Z: G d/„ d0ee0         ¦  «        Z; G d1„ d2e;d3         ¦  «        Z< G d4„ d5e;d         ¦  «        Z= G d6„ d7e$¦  «        Z> G d8„ d9e$¦  «        Z?dS )=a<  
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``.
é    N)Údefaultdict)Úpartial©Úwraps)ÚTYPE_CHECKINGÚCallableÚAnyÚDictÚGenericÚIterableÚListÚOptionalÚSetÚTupleÚTypeVarÚUnioné   )Ú	FileErrorÚOptionError)Údefault_environment)ÚInvalidRequirementÚRequirement)ÚSpecifierSet)ÚInvalidVersionÚVersion)ÚSetuptoolsDeprecationWarningé   )Úexpand)ÚDistributionMetadata©ÚDistributionÚstrÚTarget)r!   r   )ÚboundFÚfilepathÚreturnc                 ó”   — 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%   Úfind_othersÚignore_option_errorsr!   ÚdistÚ	filenamesÚhandlerss          úW/home/lighthouse/health/venv/lib/python3.11/site-packages/setuptools/config/setupcfg.pyÚread_configurationr2   8   s^   € ð$ -Ð,Ð,Ð,Ð,Ð,àˆ<‰>Œ>€DØ,7Ð?�×&Ò&Ñ(Ô(Ð(¸R€IÝ�d˜H iÐ1EÑFÔF€HÝ  Ñ*Ô*Ð*ó    r.   r!   c                 óN   — t          | |¦  «         |                      ¦   «          | S )z`Apply the configuration from a ``setup.cfg`` file into an existing
    distribution object.
    )r*   Ú_finalize_requires)r.   r%   s     r1   Úapply_configurationr6   R   s+   € õ ˆ4�ÑÔÐØ×ÒÑÔÐØ€Kr3   © Úother_filesr-   )ÚConfigHandler.c                 ó*  — ddl m} t          j                             |¦  «        }t          j                             |¦  «        st          d|› d�¦  «        ‚t          j        ¦   «         }t          j        t          j         	                    |¦  «        ¦  «         g |¢|‘}	 | 
                    | |¬¦  «         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.)r/   )r-   )r(   r;   ÚosÚpathÚabspathÚisfiler   ÚgetcwdÚchdirÚdirnameÚparse_config_filesÚparse_configurationÚcommand_optionsÚ_finalize_license_files)r.   r%   r8   r-   r;   Úcurrent_directoryr/   r0   s           r1   r*   r*   [   s  € ð .Ð-Ð-Ð-Ð-Ð-åŒw�Š˜xÑ(Ô(€HåŒ7�>Š>˜(Ñ#Ô#ð JÝÐH¨hÐHÐHÐHÑIÔIÐIåœ	™œÐÝ„H�RŒW�_Š_˜XÑ&Ô&Ñ'Ô'Ð'Ø(�+Ð(˜xÐ(€Ið$Ø×(Ò(¨¸Ð(ÑCÔCÐCÝ&Ø�$Ô&Ð=Qð
ñ 
ô 
ˆð 	×$Ò$Ñ&Ô&Ð&å
ŒÐ"Ñ#Ô#Ð#Ð#ø�ŒÐ"Ñ#Ô#Ð#Ð#øøøà€Os   Â#AC: Ã:DÚ
target_objÚkeyc                 ó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)rH   rI   Úgetter_nameÚby_attributeÚgetters        r1   Ú_get_optionrQ   y   s?   € ð ˜�,�,€KÝÔ$¥W¨j¸#Ñ>Ô>€LÝ�Z ¨lÑ;Ô;€FØˆ6‰8Œ8€Or3   r0   c                 ó–   — t          t          ¦  «        }| D ]1}|j        D ]'}t          |j        |¦  «        }|||j                 |<   Œ(Œ2|S )z»Returns configuration data gathered by given handlers as a dict.

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

    :rtype: dict
    )r   ÚdictÚset_optionsrQ   rH   Úsection_prefix)r0   Úconfig_dictÚhandlerÚoptionÚvalues        r1   r+   r+   …   sk   € õ $¥DÑ)Ô)€Kàð @ð @ˆØÔ)ð 	@ð 	@ˆFÝ Ô 2°FÑ;Ô;ˆEØ:?ˆK˜Ô.Ô/°Ñ7Ð7ð	@ð Ðr3   ÚdistributionrE   )ÚConfigMetadataHandlerÚConfigOptionsHandlerc           	      óŒ  — 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   ÚEnsurePackagesDiscoveredr\   ÚparseÚpackage_dirr[   ÚmetadataÚsrc_rootÚ_referenced_filesÚupdate)rZ   rE   r-   Úensure_discoveredÚoptionsÚmetas         r1   rD   rD   —   s  € õ$ 
Ô	(¨Ñ	6Ô	6ð 
Ð:KÝ&ØØØ Øñ	
ô 
ˆð 	�Š‰ŒˆØÔ'ð 	;Ø'.Ô':ˆLÔ$å$ØÔ!ØØ ØØÔ$ØÔ!ñ
ô 
ˆð 	�
Š
‰ŒˆØÔ&×-Ò-ØÔ% tÔ'=ñ	
ô 	
ð 	
ð+
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð2 �ˆ=Ðs   •BB7Â7B;Â>B;ÚlabelÚ
orig_valueÚparsedc                 óÊ  ‡— 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Úmarkerrj   s     €r1   ú	<genexpr>z8_warn_accidental_env_marker_misconfig.<locals>.<genexpr>à   s5   øè è € ÐBÐB°ˆv�aŒy×#Ò# FÑ+Ô+ÐBÐBÐBÐBÐBÐBr3   )
ÚlenÚ
marker_envÚkeysr   ÚnameÚ_AmbiguousMarkerÚemitr   ÚanyÚmessage)rh   ri   rj   Úmarkersrn   ÚexÚmsgs     `    r1   Ú%_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                   ó^  — e Zd ZU dZeed<   	 i Zeeef         ed<   	 dede	de
j        fd„Zede	fd„¦   «         Zed	„ ¦   «         Zd
„ Zedd„¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zdefd„Zdefd„Zed„ ¦   «         Zed„ ¦   «         Zedd„¦   «         Zd„ Zd„ Zd„ ZdS )r9   z1Handles metadata supplied in configuration files.rU   ÚaliasesrH   rf   re   c                 ó²   — || _         || _        t          |                      |¦  «        ¦  «        | _        g | _        || _        t          ¦   «         | _        d S ©N)	r-   rH   rS   Ú_section_optionsÚsectionsrT   re   Úsetrc   )ÚselfrH   rf   r-   re   s        r1   Ú__init__zConfigHandler.__init__õ   sV   € ð %9ˆÔ!Ø$ˆŒÝ˜T×2Ò2°7Ñ;Ô;Ñ<Ô<ˆŒØ&(ˆÔØ!2ˆÔÝ+.©5¬5ˆÔð	ð 	r3   c              #   ó²   K  — |                      ¦   «         D ]?\  }}|                     | j        ¦  «        \  }}}|rŒ&|                     d¦  «        |fV — Œ@d S )Nú.)ÚitemsÚ	partitionrU   Úlstrip)Úclsrf   Ú	full_namerY   ÚpreÚseprx   s          r1   r…   zConfigHandler._section_options  ss   è è € à '§¢¡¤ð 	*ð 	*ÑˆI�uØ&×0Ò0°Ô1CÑDÔD‰NˆC��dØð ØØ—+’+˜cÑ"Ô" EÐ)Ð)Ð)Ð)Ð)ð		*ð 	*r3   c                 ó:   — t          d| j        j        z  ¦  «        ‚)ú.Metadata item name to parser function mapping.z!%s must provide .parsers property)ÚNotImplementedErrorÚ	__class__Ú__name__)rˆ   s    r1   ÚparserszConfigHandler.parsers  s#   € õ "Ø/°$´.Ô2IÑIñ
ô 
ð 	
r3   c                 óØ  — | j         }| j                             ||¦  «        }	 t          ||¦  «        }n# t          $ r t          |¦  «        ‚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|z  |¦  «        } ||¦  «         | j                             |¦  «         d S )Nc                 ó   — | S r„   r7   )Úxs    r1   ú<lambda>z+ConfigHandler.__setitem__.<locals>.<lambda>%  s   € ¸Q€ r3   zset_%s)rH   r‚   ÚgetrM   ÚAttributeErrorÚKeyErrorr˜   Ú	Exceptionr-   rL   r   Ú__setattr__rT   Úappend)rˆ   Úoption_namerY   rH   Úcurrent_valuerj   Úsimple_setterÚsetters           r1   Ú__setitem__zConfigHandler.__setitem__  s  € Ø”_ˆ
ð ”l×&Ò& {°KÑ@Ô@ˆð	(Ý# J°Ñ<Ô<ˆMˆMøÝð 	(ð 	(ð 	(Ý˜;Ñ'Ô'Ð'ð	(øøøð ð 	àˆFð	Ø?�T”\×%Ò% k°;°;Ñ?Ô?ÀÑFÔFˆFˆFøÝˆ|˜dÔ7Ñ7ð 	ð 	ð 	ØˆFˆFð	øøøõ "Ô)¨*Ô*@À+ÑNÔNˆÝ˜ X°Ñ%;¸]ÑKÔKˆØˆˆv‰ŒˆàÔ×Ò Ñ,Ô,Ð,Ð,Ð,s   ¤5 µAÁ%A= Á=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
        rl   c                 ó^   — g | ]*}|                      ¦   «         ¯|                      ¦   «         ‘Œ+S r7   ©Ústrip)rr   Úchunks     r1   ú
<listcomp>z-ConfigHandler._parse_list.<locals>.<listcomp>A  s-   € ÐBÐBÐB %°E·K²K±M´MÐB�—’‘”ÐBÐBÐBr3   )Ú
isinstanceÚlistÚ
splitlinesÚsplit)r�   rY   Ú	separators      r1   Ú_parse_listzConfigHandler._parse_list/  s\   € õ �e�TÑ"Ô"ð 	ØˆLà�5ˆ=ˆ=Ø×$Ò$Ñ&Ô&ˆEˆEà—K’K 	Ñ*Ô*ˆEàBÐB¨5ÐBÑBÔBÐBr3   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�   rY   r³   ÚresultÚlinerI   r’   Úvals           r1   Ú_parse_dictzConfigHandler._parse_dictC  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‘;”;ÑÐàˆr3   c                 ó2   — |                      ¦   «         }|dv S )zQRepresents value as boolean.

        :param value:
        :rtype: bool
        )Ú1ÚtrueÚyes)Úlower©r�   rY   s     r1   Ú_parse_boolzConfigHandler._parse_boolT  s   € ð —’‘”ˆØÐ,Ð,Ð,r3   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                 óz   •— d}|                       |¦  «        r"t          d                     ‰¦  «        ¦  «        ‚| S )Núfile:zCOnly strings are accepted for the {0} field, files are not accepted)rq   Ú
ValueErrorÚformat)rY   Úexclude_directiverI   s     €r1   Úparserz3ConfigHandler._exclude_files_parser.<locals>.parserj  sI   ø€ Ø 'ÐØ×ÒÐ 1Ñ2Ô2ð Ý ð-ß-3ªV°C©[¬[ñô ð ð ˆLr3   r7   )r�   rI   rÈ   s    ` r1   Ú_exclude_files_parserz#ConfigHandler._exclude_files_parser^  s#   ø€ ð	ð 	ð 	ð 	ð 	ð ˆr3   Úroot_dirc                 ó,  — d}t          |t          ¦  «        s|S |                     |¦  «        s|S |t          |¦  «        d…         }d„ |                     d¦  «        D ¦   «         }| 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 r7   r«   )rr   r=   s     r1   r®   z-ConfigHandler._parse_file.<locals>.<listcomp>‹  s    € Ð>Ð>Ð> d�T—Z’Z‘\”\Ð>Ð>Ð>r3   r¨   )	r¯   r"   rq   ru   r²   rc   rd   r   Ú
read_files)rˆ   rY   rÊ   Úinclude_directiveÚspecÚ	filepathss         r1   Ú_parse_filezConfigHandler._parse_fileu  s�   € ð $Ðå˜%¥Ñ%Ô%ð 	ØˆLà×ÒÐ 1Ñ2Ô2ð 	ØˆLà•SÐ*Ñ+Ô+Ð-Ð-Ô.ˆØ>Ð>¨d¯jªj¸©o¬oÐ>Ñ>Ô>ˆ	ØÔ×%Ò% iÑ0Ô0Ð0ÝÔ  ¨HÑ5Ô5Ð5r3   c                 óÊ   — d}|                      |¦  «        s|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:Ú )rq   Úreplacerd   re   r`   r   Ú	read_attr)rˆ   rY   r`   rÊ   Úattr_directiveÚ	attr_descs         r1   Ú_parse_attrzConfigHandler._parse_attr�  sh   € ð !ˆØ×Ò Ñ/Ô/ð 	ØˆLà—M’M .°"Ñ5Ô5ˆ	ð 	×Ò˜4Ô1Ô=Ñ>Ô>Ð>ÝÔ 	¨;¸ÑAÔAÐAr3   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„   r7   )rY   rj   ÚmethodÚparse_methodss      €r1   r_   z1ConfigHandler._get_parser_compound.<locals>.parse­  s+   ø€ ØˆFà'ð (ð (�Ø˜ ™œ��àˆMr3   r7   )r�   rÜ   r_   s    ` r1   Ú_get_parser_compoundz"ConfigHandler._get_parser_compound£  s#   ø€ ð	ð 	ð 	ð 	ð 	ð ˆr3   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_parserrY   rI   Ú_r¹   s          r1   Ú_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Øˆr3   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„   r7   )rá   Úvrà   s     €r1   rœ   z6ConfigHandler._parse_section_to_dict.<locals>.<lambda>Ð  s   ø€ ˜}˜}¨QÑ/Ô/€ r3   c                 ó   — |S r„   r7   )rá   rå   s     r1   rœ   z6ConfigHandler._parse_section_to_dict.<locals>.<lambda>Ð  s   € ÐUV€ r3   ©râ   )r�   rß   rà   rÈ   s     ` r1   Ú_parse_section_to_dictz$ConfigHandler._parse_section_to_dictÆ  s7   ø€ ð 5BÐWÐ/Ð/Ð/Ð/Ð/ÈÈˆØ×2Ò2°?ÀFÑKÔKÐKr3   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ß   rx   rá   rY   s        r1   Ú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|z  }t          | d|z                       dd¦  «        d¦  «        }|€t	          d| j        › d|› d�¦  «        ‚ ||¦  «         Œ_dS )	zTParses configuration file items from one
        or more related sections.

        rÓ   z_%szparse_section%sr‹   Ú__Nz*Unsupported distribution option section: [ú])r†   rŒ   rM   rÔ   r   rU   )rˆ   Úsection_namerß   Úmethod_postfixÚsection_parser_methods        r1   r_   zConfigHandler.parseÝ  sÌ   € ð
 .2¬]×-@Ò-@Ñ-BÔ-Bð 	3ð 	3Ñ)ˆL˜/ØˆNØð 6Ø!&¨Ñ!5�å8?Øà" ^Ñ3×<Ò<¸SÀ$ÑGÔGØñ	9ô 9Ð!ð %Ð,Ý!ð>ØÔ+ð>ð >Ø.:ð>ð >ð >ñô ð ð
 "Ð! /Ñ2Ô2Ð2Ð2ð%	3ð 	3r3   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Ú_DeprecatedConfigrz   )ÚargsÚkwargsÚfuncÚkwr   s     €€€r1   Úconfig_handlerz@ConfigHandler._deprecated_config_handler.<locals>.config_handlerý  sH   ø€ à�MŠM˜,¨Ñ*Ô*Ð*ÝÔ"Ð#EÀsÐQÐQÈbÐQÐQÐQØ�4˜Ð( Ð(Ð(Ð(r3   r   )rˆ   rú   r   rû   rü   s    ``` r1   Ú_deprecated_config_handlerz(ConfigHandler._deprecated_config_handlerö  sB   øøø€ õ 
ˆt‰Œð	)ð 	)ð 	)ð 	)ð 	)ð 	)ñ 
Œð	)ð
 Ðr3   )r¨   r„   )r—   Ú
__module__Ú__qualname__Ú__doc__r"   Ú__annotations__r‚   r
   r#   ÚAllCommandOptionsr   r^   r‰   Úclassmethodr…   Úpropertyr˜   r§   r´   rº   rÁ   rÉ   Ú_PathrÑ   rØ   rÝ   râ   rè   rì   r_   rý   r7   r3   r1   r9   r9   å   s  € € € € € € Ø;Ð;àÐÐÑðð
 !€GˆT�#�s�(Œ^Ð Ð Ñ ððàðð #ðð
 "Ô:ðð ð ð ð" ð*Ð'8ð *ð *ð *ñ „[ð*ð ð
ð 
ñ „Xð
ð-ð -ð -ð4 ðCð Cð Cñ „[ðCð& ðð ñ „[ðð  ð-ð -ñ „[ð-ð ðð ñ „[ðð,6¨5ð 6ð 6ð 6ð 6ð4B¸ð Bð Bð Bð Bð( ðð ñ „[ðð& ðð ñ „[ðð ð
Lð 
Lð 
Lñ „[ð
Lð#ð #ð #ð3ð 3ð 3ð2ð ð ð ð r3   r9   c                   ó’   ‡ — e Zd ZdZdddddœZdZ	 dej        fd	d
dede	de
j        dee         defˆ fd„Zed„ ¦   «         Zd„ Zˆ xZS )r[   ra   ÚurlÚdescriptionÚclassifiersÚ	platforms)Ú	home_pageÚsummaryÚ
classifierÚplatformFNrH   r   rf   r-   re   r`   rÊ   c                 ól   •— t          ¦   «                              ||||¦  «         || _        || _        d S r„   )Úsuperr‰   r`   rÊ   )rˆ   rH   rf   r-   re   r`   rÊ   r–   s          €r1   r‰   zConfigMetadataHandler.__init__  s8   ø€ õ 	‰Œ×Ò˜ WÐ.BÐDUÑVÔVÐVØ&ˆÔØ ˆŒˆˆr3   c                 ó0  — | j         }t          | j        | j        ¬¦  «        }| j        }| j        }||||                      |dd¬¦  «        ||                      ||¦  «         |d¦  «        |                       |d¦  «        dd¬¦  «        |||| j        |dœS )	r”   ©rÊ   z[The requires parameter is deprecated, please use install_requires for runtime dependencies.)iç  é
   é   )Údue_dateÚlicenseÚlicense_filezDThe license_file parameter is deprecated, use license_files instead.)r
  ÚkeywordsÚprovidesÚrequiresÚ	obsoletesr	  r  r  Úlicense_filesr  Úlong_descriptionÚversionÚproject_urls)	r´   r   rÑ   rÊ   rº   rÉ   rý   rÝ   Ú_parse_version)rˆ   Ú
parse_listÚ
parse_fileÚ
parse_dictÚexclude_files_parsers        r1   r˜   zConfigMetadataHandler.parsers#  sÙ   € ð Ô%ˆ
Ý˜TÔ-¸¼ÐFÑFÔFˆ
ØÔ%ˆ
Ø#Ô9Ðð $Ø"Ø"Ø×7Ò7Øð=à'ð	 8ñ ô ð $Ø×4Ò4°ZÀÑLÔLØ+Ð+¨IÑ6Ô6Ø ×;Ò;Ø$Ð$ ^Ñ4Ô4ð-à'ð	 <ñ ô ð (Ø%Ø *ØÔ*Ø&ð3
ð 
ð 	
r3   c                 ó>  — |                       || j        ¦  «        }||k    rJ|                     ¦   «         }	 t          |¦  «         n## t          $ r t          d|› d|› �¦  «        ‚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: )
rÑ   rÊ   r¬   r   r   r   r   r  rØ   r`   )rˆ   rY   r  s      r1   r   z$ConfigMetadataHandler._parse_versionG  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')r—   rþ   rÿ   rU   r‚   Ústrict_moder<   Úcurdirr  Úboolr   r^   r   rS   r  r‰   r  r˜   r   Ú__classcell__©r–   s   @r1   r[   r[     sê   ø€ € € € € Ø€Nð Ø Ø#Øð	ð €Gð €Kðð '+Øœ)ð!ð !à*ð!ð #ð!ð #ð	!ð
 "Ô:ð!ð ˜d”^ð!ð ð!ð !ð !ð !ð !ð !ð ð!
ð !
ñ „Xð!
ðFXð Xð Xð Xð Xð Xð Xr3   r[   r   c                   ó¶   ‡ — e Zd ZdZdddededej        fˆ fd„Ze	d„ ¦   «         Z
d„ Zd	ed
efd„Zed„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )r\   rf   rH   r!   r-   re   c                 óv   •— t          ¦   «                              ||||¦  «         |j        | _        i | _        d S r„   )r  r‰   rb   rÊ   r`   )rˆ   rH   rf   r-   re   r–   s        €r1   r‰   zConfigOptionsHandler.__init__d  s=   ø€ õ 	‰Œ×Ò˜ WÐ.BÐDUÑVÔVÐVØ"Ô+ˆŒØ+-ˆÔÐÐr3   c                 ó0   — |                       |d¬¦  «        S )Nú;)r³   )r´   rÀ   s     r1   Ú_parse_list_semicolonz*ConfigOptionsHandler._parse_list_semicolono  s   € à�Š˜u°ˆÑ4Ô4Ð4r3   c                 ó:   — |                       || j        ¬¦  «        S )Nr  )rÑ   rÊ   )rˆ   rY   s     r1   Ú_parse_file_in_rootz(ConfigOptionsHandler._parse_file_in_roots  s   € Ø×Ò °´ÐÑ>Ô>Ð>r3   rh   rY   c                 óŒ   — |                       |                      |¦  «        ¦  «        }t          |||¦  «         d„ |D ¦   «         S )Nc                 ó<   — g | ]}|                      d ¦  «        °|‘ŒS )ú#rp   )rr   r¸   s     r1   r®   zAConfigOptionsHandler._parse_requirements_list.<locals>.<listcomp>|  s)   € ÐDÐDÐD˜¨t¯ª¸sÑ/CÔ/CÐD�ÐDÐDÐDr3   )r/  r1  r€   )rˆ   rh   rY   rj   s       r1   Ú_parse_requirements_listz-ConfigOptionsHandler._parse_requirements_listv  sL   € à×+Ò+¨D×,DÒ,DÀUÑ,KÔ,KÑLÔLˆÝ-¨e°U¸FÑCÔCÐCð EÐD ÐDÑDÔDÐDr3   c                 óÞ   — | j         }| j        }| j        }| j        }|||||||                      |d¦  «        t          | j        d¦  «        | j        | j        | j        | j	        |t          |dœS )r”   zeThe namespace_packages parameter is deprecated, consider using implicit namespaces instead (PEP 420).Úinstall_requires)Úzip_safeÚinclude_package_datar`   ÚscriptsÚeager_resourcesÚdependency_linksÚnamespace_packagesr7  Úsetup_requiresÚtests_requireÚpackagesÚentry_pointsÚ
py_modulesÚpython_requiresÚcmdclass)r´   rÁ   rº   Ú_parse_cmdclassrý   r   r5  r/  Ú_parse_packagesr1  r   )rˆ   r!  Ú
parse_boolr#  Úparse_cmdclasss        r1   r˜   zConfigOptionsHandler.parsers~  sž   € ð Ô%ˆ
ØÔ%ˆ
ØÔ%ˆ
ØÔ-ˆð #Ø$.Ø%Ø!Ø)Ø *Ø"&×"AÒ"AØðHñ#ô #õ !(ØÔ-Ð/Añ!ô !ð #Ô8Ø!Ô7ØÔ,Ø Ô4Ø$Ý+Ø&ð-
ð 
ð 	
r3   c                 óv   — | j         j        }t          j        |                      |¦  «        || j        ¦  «        S r„   )re   r`   r   rD  rº   rÊ   )rˆ   rY   r`   s      r1   rE  z$ConfigOptionsHandler._parse_cmdclassŸ  s1   € ØÔ,Ô8ˆÝŒ˜t×/Ò/°Ñ6Ô6¸ÀTÄ]ÑSÔSÐSr3   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_dirr7   )
r¬   r´   Úparse_section_packages__findr†   r�   rd   rÊ   r`   r   Úfind_packages)rˆ   rY   Úfind_directivesÚtrimmed_valueÚfind_kwargss        r1   rF  z$ConfigOptionsHandler._parse_packages£  s·   € ð #Ð$5Ð6ˆØŸš™œˆà Ð/Ð/Ø×#Ò# EÑ*Ô*Ð*ð ×7Ò7ØŒM×Ò˜o¨rÑ2Ô2ñ
ô 
ˆð 	×ÒØ%¨¸Ô);Ò;Ø”]Ø!Ô-ð 	ñ 	
ô 	
ð 	
õ Ô#Ð2Ð2 kÐ2Ð2Ð2r3   c                 óä   ‡— |                       || j        ¦  «        }g d¢Št          ˆ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                 ó*   •— g | ]\  }}|‰v ¯	|¯||f‘ŒS r7   r7   )rr   Úkrå   Ú
valid_keyss      €r1   r®   zEConfigOptionsHandler.parse_section_packages__find.<locals>.<listcomp>È  s*   ø€ ÐNÐNÐN™˜˜1¸¸Z¸¸ÈA¸ˆa�ˆV¸¸¸r3   rS  Nr   )rè   r´   rS   rŒ   r�   )rˆ   rß   Úsection_datarQ  rS  rX  s        @r1   rM  z1ConfigOptionsHandler.parse_section_packages__find¼  s‡   ø€ ð ×2Ò2°?ÀDÔDTÑUÔUˆà4Ð4Ð4ˆ
åØNÐNÐNÐN × 2Ò 2Ñ 4Ô 4ÐNÑNÔNñ
ô 
ˆð —’ Ñ(Ô(ˆØÐØ#(¨¤8ˆK˜Ñ àÐr3   c                 óF   — |                       || j        ¦  «        }|| d<   dS )z`Parses `entry_points` configuration file section.

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

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

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

        :param dict section_options:
        c                 ó8   •— ‰                      d| › d�|¦  «        S )Nzextras_require[rï   )r5  )rW  rå   rˆ   s     €r1   rœ   zCConfigOptionsHandler.parse_section_extras_require.<locals>.<lambda>ò  s#   ø€ ˜×6Ò6Ð7MÈÐ7MÐ7MÐ7MÈqÑQÔQ€ r3   Úextras_requireNrç   r[  s   `  r1   Úparse_section_extras_requirez1ConfigOptionsHandler.parse_section_extras_requireë  s<   ø€ ð
 ×5Ò5ØØQÐQÐQÐQñ
ô 
ˆð
 "(ˆÐÑÐÐr3   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Ê   r[  s      r1   Úparse_section_data_filesz-ConfigOptionsHandler.parse_section_data_files÷  s;   € ð
 ×,Ò,¨_¸dÔ>NÑOÔOˆÝ#Ô6°v¸t¼}ÑMÔMˆˆ\ÑÐÐr3   )r—   rþ   rÿ   rU   r  r(  r   r^   r‰   r  r/  r1  r"   r5  r  r˜   rE  rF  rM  r\  r`  rd  rg  rk  ro  r)  r*  s   @r1   r\   r\   a  sp  ø€ € € € € Ø€Nð	.à"ð	.ð #ð	.ð #ð		.ð
 "Ô:ð	.ð 	.ð 	.ð 	.ð 	.ð 	.ð ð5ð 5ñ „[ð5ð?ð ?ð ?ðE¨cð E¸#ð Eð Eð Eð Eð ð
ð 
ñ „Xð
ð@Tð Tð Tð3ð 3ð 3ð2ð ð ð*&ð &ð &ð9ð 9ð 9ðIð Ið IðQð Qð Qð
(ð 
(ð 
(ðNð Nð Nð Nð Nð Nð Nr3   r\   c                   ó0   — e Zd ZdZdZdZed„ ¦   «         ZdS )ry   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      r1   r|   z_AmbiguousMarker.message  s0   € àF°s´}ÐFÐFˆØ�{Š{˜3œ<¨¬¸tÐQSˆ{ÑTÔTÐTr3   N)r—   rþ   rÿ   rv  rw  rt  r  r|   r7   r3   r1   ry   ry      sG   € € € € € Ø.€Hð€Hð :€Ið ðUð Uñ „[ðUð Uð Ur3   ry   c                   ó   — e Zd ZdZdS )r÷   z!userguide/declarative_config.htmlN)r—   rþ   rÿ   rt  r7   r3   r1   r÷   r÷     s   € € € € € Ø3€I€I€Ir3   r÷   )FF)r7   F)F)@r   rê   rL   r<   Úcollectionsr   r   r   Útypingr   r   r	   r
   r   r   r   r   r   r   r   r   Úerrorsr   r   Úextern.packaging.markersr   rv   Úextern.packaging.requirementsr   r   Úextern.packaging.specifiersr   Úextern.packaging.versionr   r   Úwarningsr   rÓ   r   Údistutils.distr   r(   r!   r"   ÚPathLiker  ÚSingleCommandOptionsr  r#   rS   r2   r6   r(  r*   rQ   r+   rD   r°   r€   r9   r[   r\   ry   r÷   r7   r3   r1   ú<module>r…     s’  ðð	ð 	ð Ð Ð Ð Ø Ð Ð Ð Ø 	€	€	€	Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ,Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ø HÐ HÐ HÐ HÐ HÐ HØ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KØ 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø Ð Ð Ð Ð Ð àð -Ø3Ð3Ð3Ð3Ð3Ð3à,Ð,Ð,Ð,Ð,Ð,àˆc�2”;ÐÔ€Ø˜E 5¨°¨Ô#4Ð4Ô5Ð ðð
 ˜Ð 4Ð4Ô5Ð Ø	ˆ� Ð'MÔ!NÐ	OÑ	OÔ	O€ð >Cð+ð +Øð+à	ð+ð +ð +ð +ð4˜nð ¸ð À.ð ð ð ð ð $&Ø!&ð	ð Ø
ðàðð ˜%”ðð ð	ð
 ÐÔ ðð ð ð ð<	˜Fð 	¨ð 	ð 	ð 	ð 	ð EÐ*>Ô$?ð ÀDð ð ð ð ð* ð+ð +Ø ð+à&ð+ð Ð:Ô;ð	+ð +ð +ð +ð\2°ð 2À#ð 2Ètð 2ð 2ð 2ð 2ð@^ð ^ð ^ð ^ð ^�G˜F”Oñ ^ô ^ð ^ðB	XXð XXð XXð XXð XX˜MÐ*@ÔAñ XXô XXð XXðv\Nð \Nð \Nð \Nð \N˜=¨Ô8ñ \Nô \Nð \Nð~Uð Uð Uð Uð UÐ3ñ Uô Uð Uð(4ð 4ð 4ð 4ð 4Ð4ñ 4ô 4ð 4ð 4ð 4r3   