Ë
    –2Úiýd  ã                  ó`  — 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	m
Z
 ddlmZ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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, ddl-m.Z. e/e0e1e0ef   f   Z2de3d<   	 e/e0e2f   Z4de3d<   	  eddd«      Z5	 d,	 	 	 	 	 	 	 d-d„Z6d.d„Z7	 	 d/	 	 	 	 	 	 	 	 	 d0d„Z8d1d„Z9	 	 	 	 d2d„Z:	 d3	 	 	 	 	 	 	 d4d „Z;d5d!„Z< G d"„ d#ee5   «      Z= G d$„ d%e=d   «      Z> G d&„ d'e=d   «      Z? G d(„ d)e&«      Z@ G d*„ d+e&«      ZAy)6a<  
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)Údefaultdict)ÚIterableÚIterator)ÚpartialÚwraps)ÚTYPE_CHECKINGÚAnyÚCallableÚClassVarÚGenericÚTypeVarÚcast)Údefault_environment)ÚInvalidRequirementÚRequirement)ÚSpecifierSet)ÚInvalidVersionÚVersioné   )ÚStrPath)Ú	FileErrorÚOptionError)ÚSetuptoolsDeprecationWarningé   )Úexpand)Ú	TypeAlias©ÚDistribution)ÚDistributionMetadatar   ÚSingleCommandOptionsÚAllCommandOptionsÚTargetr   r    c                óv   — ddl m}  |«       }|r|j                  «       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)ÚfilepathÚfind_othersÚignore_option_errorsr   ÚdistÚ	filenamesÚhandlerss          úQ/var/www/html/acx/venv/lib/python3.12/site-packages/setuptools/config/setupcfg.pyÚread_configurationr0   2   s<   € õ$ -á‹>€DÙ,7�×&Ñ&Ô(¸R€IÜ�d˜H iÐ1EÓF€HÜ  Ó*Ð*ó    c                ó>   — t        | |«       | j                  «        | S )z`Apply the configuration from a ``setup.cfg`` file into an existing
    distribution object.
    )r'   Ú_finalize_requires)r,   r)   s     r/   Úapply_configurationr4   L   s   € ô ˆ4�ÔØ×ÑÔØ€Kr1   c                óD  — ddl m} t        j                  j	                  |«      }t        j                  j                  |«      st        d|› d�«      ‚t        j                  «       }t        j                  t        j                  j                  |«      «       g |¢|‘}	 |j                  | t        t        t           |«      ¬«       t        | | j                  |¬«      }| j!                  «        t        j                  |«       |S # t        j                  |«       w xY w)zHRead configuration from ``filepath`` and applies to the ``dist`` object.r   )Ú_DistributionzConfiguration file z does not exist.)r-   )r+   )r%   r6   ÚosÚpathÚabspathÚisfiler   ÚgetcwdÚchdirÚdirnameÚparse_config_filesr   ÚlistÚstrÚparse_configurationÚcommand_optionsÚ_finalize_license_files)r,   r)   Úother_filesr+   r6   Úcurrent_directoryr-   r.   s           r/   r'   r'   U   sß   € õ .ä�w‰w�‰˜xÓ(€Hä�7‰7�>‰>˜(Ô#ÜÐ-¨h¨ZÐ7GÐHÓIÐIäŸ	™	›ÐÜ‡H�HŒR�W‰W�_‰_˜XÓ&Ô'Ø(�+Ð(˜xÐ(€Ið$à×(Ñ(¨¼¼dÄ3¹iÈÓ9SÐ(ÔTÜ&Ø�$×&Ñ&Ð=Qô
ˆð 	×$Ñ$Ô&ä
�‰Ð"Ô#à€Oøô 	�‰Ð"Õ#ús   Â!AD ÄDc                ój   — 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)Ú
target_objÚkeyÚgetter_nameÚby_attributeÚgetters        r/   Ú_get_optionrO   t   s8   € ð ˜˜�,€KÜ×$Ñ$¤W¨j¸#Ó>€LÜ�Z ¨lÓ;€FÙ‹8€Or1   c                ó¤   — t        t        «      }| D ];  }|j                  D ]*  }t        |j                  |«      }|||j
                     |<   Œ, Œ= |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   ÚdictÚset_optionsrO   rJ   Úsection_prefix)r.   Úconfig_dictÚhandlerÚoptionÚvalues        r/   r(   r(   €   se   € ô $¤DÓ)€Kàò @ˆØ×)Ñ)ò 	@ˆFÜ × 2Ñ 2°FÓ;ˆEØ:?ˆK˜×.Ñ.Ñ/°Ò7ñ	@ð@ð
 Ðr1   c           	     ó¶  — t        j                  | «      5 }t        | |||«      }|j                  «        | j                  s|j                  | _        t        | j                  |||| j                  | j                  «      }|j                  «        | j                  j                  |j                  |j                  «       ddd«       ||fS # 1 sw Y   fS xY w)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)ÚdistributionrB   r+   Úensure_discoveredÚoptionsÚmetas         r/   rA   rA   –   sÓ   € ô$ 
×	(Ñ	(¨Ó	6ð 
Ð:KÜ&ØØØ Øó	
ˆð 	�‰ŒØ×'Ò'Ø'.×':Ñ':ˆLÔ$ä$Ø×!Ñ!ØØ ØØ×$Ñ$Ø×!Ñ!ó
ˆð 	�
‰
ŒØ×&Ñ&×-Ñ-Ø×%Ñ% t×'=Ñ'=ô	
÷+
ð2 �ˆ=Ð÷3
ð2 �ˆ=Ðús   –B*CÃCc                ól  ‡— d|v st        ‰«      dk7  ryt        «       j                  «       }	 t        ‰d   «      }|j                  |v rt
        j                  | ‰d   ¬«       yy# t        $ rD}t        ˆfd„|D «       «      r&t
        j                  | ‰d   ¬«      }t        |«      |‚Y d}~y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  óF   •K  — | ]  }‰d    j                  |«      –— Œ y­w)r   N)Ú
startswith)Ú.0ÚmarkerÚparseds     €r/   ú	<genexpr>z8_warn_accidental_env_marker_misconfig.<locals>.<genexpr>ß   s    øè ø€ ÒB°ˆv�a‰y×#Ñ# F×+ÑBùs   ƒ!)
ÚlenÚ
marker_envÚkeysr   ÚnameÚ_AmbiguousMarkerÚemitr   ÚanyÚmessage)ÚlabelÚ
orig_valuern   Úmarkersri   ÚexÚmsgs     `    r/   Ú%_warn_accidental_env_marker_misconfigr}   Ä   s°   ø€ ð" ˆzÑœS ›[¨AÒ-Øä‹l×ÑÓ!€Gð2Ü˜& ™)Ó$ˆØ�8‰8�wÑÜ×!Ñ!¨°6¸!±9Ð!Õ=ð øäò 2ÜÓB¸'ÔBÔBÜ"×*Ñ*°¸FÀ1¹IÐ*ÓFˆCÜ$ SÓ)¨rÐ1ô Cûð2ús   ®6A& Á&	B3Á/:B.Â.B3c                  ó  — e Zd ZU dZded<   	 i Zded<   	 	 	 	 	 	 	 	 	 dd„Ze	 	 	 	 dd„«       Ze	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y)ÚConfigHandlerz1Handles metadata supplied in configuration files.r@   rS   zClassVar[dict[str, str]]Úaliasesc                ó˜   — || _         || _        t        | j                  |«      «      | _        g | _        || _        t        «       | _        y ©N)	r+   rJ   rQ   Ú_section_optionsÚsectionsrR   rc   Úsetr`   )ÚselfrJ   rd   r+   rc   s        r/   Ú__init__zConfigHandler.__init__ô   sI   € ð %9ˆÔ!Ø",ˆŒÜ˜T×2Ñ2°7Ó;Ó<ˆŒØ&(ˆÔØ!2ˆÔÜ+.«5ˆÔð	r1   c              #  óª   K  — |j                  «       D ]<  \  }}|j                  | j                  «      \  }}}|rŒ(|j                  d«      |f–— Œ> y ­w)Nú.)ÚitemsÚ	partitionrS   Úlstrip)Úclsrd   Ú	full_namerW   ÚpreÚ_seprs   s          r/   rƒ   zConfigHandler._section_options  sX   è ø€ ð !(§¡£ò 	*ÑˆI�uØ'×1Ñ1°#×2DÑ2DÓE‰OˆC��tÙØØ—+‘+˜cÓ" EÐ)Ó)ñ		*ùs   ‚AAc                óF   — t        d| j                  j                  z  «      ‚)ú.Metadata item name to parser function mapping.z!%s must provide .parsers property)ÚNotImplementedErrorÚ	__class__Ú__name__)r†   s    r/   ÚparserszConfigHandler.parsers  s#   € ô "Ø/°$·.±.×2IÑ2IÑIó
ð 	
r1   c                óÖ  — | j                   }| j                  j                  ||«      }	 t        ||«      }|ry 	  | j                  j                  |d„ «      |«      }t        j                  |j                  |«      }t        |d|› �|«      } ||«       | j                  j                  |«       y # t        $ r}t        |«      |‚d }~ww xY w# t        f| j                  z  $ r Y y w xY w)Nc                ó   — | S r‚   © )Úxs    r/   ú<lambda>z+ConfigHandler.__setitem__.<locals>.<lambda>&  s   € ¸Q€ r1   Úset_)rJ   r€   ÚgetrI   ÚAttributeErrorÚKeyErrorr–   Ú	Exceptionr+   rH   r   Ú__setattr__rR   Úappend)	r†   Úoption_namerW   rJ   Úcurrent_valueÚern   Úsimple_setterÚsetters	            r/   Ú__setitem__zConfigHandler.__setitem__  sç   € Ø—_‘_ˆ
ð —l‘l×&Ñ& {°KÓ@ˆð	/Ü# J°Ó<ˆMñ àð	Ø?�T—\‘\×%Ñ% k±;Ó?ÀÓFˆFô "×)Ñ)¨*×*@Ñ*@À+ÓNˆÜ˜ t¨K¨=Ð%9¸=ÓIˆÙˆvŒà×Ñ×Ñ Õ,øô! ò 	/Ü˜;Ó'¨QÐ.ûð	/ûô ˆ|˜d×7Ñ7Ñ7ò 	Ùð	ús(   ªB1 º#C Â1	CÂ:CÃCÃC(Ã'C(c                óÚ   — t        |t        «      r|S d|v r|j                  «       }n|j                  |«      }|D �cg c]#  }|j	                  «       sŒ|j	                  «       ‘Œ% c}S c c}w )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
        rg   )Ú
isinstancer?   Ú
splitlinesÚsplitÚstrip)r�   rW   Ú	separatorÚchunks       r/   Ú_parse_listzConfigHandler._parse_list0  sX   € ô �eœTÔ"ØˆLà�5‰=Ø×$Ñ$Ó&‰Eà—K‘K 	Ó*ˆEà+0ÖB %°E·K±KµM�—‘•ÒBÐBùÒBs   ½A(ÁA(c                óÌ   — d}i }| j                  |«      D ]K  }|j                  |«      \  }}}||k7  rt        d|› �«      ‚|j                  «       ||j                  «       <   ŒM |S )zPRepresents value as a dict.

        :param value:
        :rtype: dict
        ú=z&Unable to parse option value to dict: )r°   r‹   r   r­   )r�   rW   r®   ÚresultÚlinerK   ÚsepÚvals           r/   Ú_parse_dictzConfigHandler._parse_dictD  sr   € ð ˆ	ØˆØ—O‘O EÓ*ò 	.ˆDØ ŸN™N¨9Ó5‰MˆC��cØ�iÒÜ!Ð$JÈ5È'Ð"RÓSÐSØ"%§)¡)£+ˆF�3—9‘9“;Òð		.ð ˆr1   c                ó*   — |j                  «       }|dv S )zQRepresents value as boolean.

        :param value:
        :rtype: bool
        )Ú1ÚtrueÚyes)Úlower©r�   rW   s     r/   Ú_parse_boolzConfigHandler._parse_boolU  s   € ð —‘“ˆØÐ,Ð,Ð,r1   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                óL   •— d}| j                  |«      rt        d‰› d�«      ‚| S )Núfile:z"Only strings are accepted for the z field, files are not accepted)rk   Ú
ValueError)rW   Úexclude_directiverK   s     €r/   Úparserz3ConfigHandler._exclude_files_parser.<locals>.parserk  s=   ø€ Ø 'ÐØ×ÑÐ 1Ô2Ü Ø8¸¸ð >-ð -óð ð ˆLr1   r™   )r�   rK   rÄ   s    ` r/   Ú_exclude_files_parserz#ConfigHandler._exclude_files_parser_  s   ø€ ô	ð ˆr1   c                ó0  — d}t        |t        «      s|S |j                  |«      s|S |t        |«      d }|j	                  d«      D �cg c]  }|j                  «       ‘Œ }}| j                  j                  |«       t        j                  ||«      S c c}w )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Á   Nú,)
rª   r@   rk   rp   r¬   r­   r`   ra   r   Ú
read_files)r†   rW   Úroot_dirÚinclude_directiveÚspecr8   Ú	filepathss          r/   Ú_parse_filezConfigHandler._parse_filev  s�   € ð $Ðä˜%¤Ô%ØˆLà×ÑÐ 1Ô2ØˆLà”SÐ*Ó+Ð-Ð.ˆØ.2¯j©j¸«oÖ> d�T—Z‘Z•\Ð>ˆ	Ð>Ø×Ñ×%Ñ% iÔ0Ü× Ñ  ¨HÓ5Ð5ùò ?s   Á	Bc                óÈ   — d}|j                  |«      s|S |j                  |d«      }|j                  | 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:Ú )rk   Úreplacera   rc   r\   r   Ú	read_attr)r†   rW   r\   rÉ   Úattr_directiveÚ	attr_descs         r/   Ú_parse_attrzConfigHandler._parse_attr�  s]   € ð !ˆØ×Ñ Ô/ØˆLà—M‘M .°"Ó5ˆ	ð 	×Ñ˜4×1Ñ1×=Ñ=Ô>Ü×Ñ 	¨;¸ÓAÐAr1   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‚   r™   )rW   rn   ÚmethodÚparse_methodss      €r/   r[   z1ConfigHandler._get_parser_compound.<locals>.parse®  s'   ø€ ØˆFà'ò (�Ù ›‘ð(ð ˆMr1   r™   )r�   rØ   r[   s    ` r/   Ú_get_parser_compoundz"ConfigHandler._get_parser_compound¤  s   ø€ ô	ð ˆr1   c                óX   — i }|j                  «       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_parserrW   rK   Ú_r¶   s          r/   Ú_parse_section_to_dict_with_keyz-ConfigHandler._parse_section_to_dict_with_key¸  s>   € ð ˆØ,×2Ñ2Ó4ò 	1‰MˆC‘�!�SÙ& s¨CÓ0ˆE�#ŠJð	1àˆr1   Nc                ó<   ‡— ‰rˆfd„nd„ }| j                  ||«      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‚   r™   )rÝ   ÚvrÜ   s     €r/   r›   z6ConfigHandler._parse_section_to_dict.<locals>.<lambda>Ñ  s   ø€ ™}¨QÓ/€ r1   c                ó   — |S r‚   r™   )rÝ   rá   s     r/   r›   z6ConfigHandler._parse_section_to_dict.<locals>.<lambda>Ñ  s   € ÐUV€ r1   ©rÞ   )r�   rÛ   rÜ   rÄ   s     ` r/   Ú_parse_section_to_dictz$ConfigHandler._parse_section_to_dictÇ  s#   ø€ ñ 5BÔ/ÉˆØ×2Ñ2°?ÀFÓKÐKr1   c                ó    — |j                  «       D ]/  \  }\  }}t        j                  t        «      5  || |<   ddd«       Œ1 y# 1 sw Y   Œ<xY w)zQParses configuration file section.

        :param dict section_options:
        N)rŠ   Ú
contextlibÚsuppressrŸ   )r†   rÛ   rs   rÝ   rW   s        r/   Úparse_sectionzConfigHandler.parse_sectionÔ  sV   € ð
 !0× 5Ñ 5Ó 7ò 	#ÑˆD‘*�1�eÜ×$Ñ$¤XÓ.ñ #à"��T‘
÷#ð #ñ	#÷#ð #ús   ³AÁA	c                óæ   — | j                   j                  «       D ]T  \  }}d}|rd|› �}t        | d|› �j                  dd«      d«      }|€t	        d| j
                  › d|› d�«      ‚ ||«       ŒV y)	zTParses configuration file items from one
        or more related sections.

        rÏ   rÝ   rè   r‰   Ú__Nz*Unsupported distribution option section: [ú])r„   rŠ   rI   rÐ   r   rS   )r†   Úsection_namerÛ   Úmethod_postfixÚsection_parser_methods        r/   r[   zConfigHandler.parseÞ  sŸ   € ð
 .2¯]©]×-@Ñ-@Ó-Bò 	3Ñ)ˆL˜/ØˆNÙØ#$ \ NÐ!3�ä5<Øà Ð/Ð0×8Ñ8¸¸dÓCØó	6Ð!ð %Ð,Ü!ðØ×+Ñ+Ð,¨A¨l¨^¸1ð>óð ñ
 " /Õ2ñ%	3r1   c                ó6   ‡‡‡— 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   •— ‰j                  dd«       t        j                  d‰fi ‰¤Ž  ‰| i |¤ŽS )NÚ
stacklevelr   z Deprecated config in `setup.cfg`)Ú
setdefaultÚ_DeprecatedConfigru   )ÚargsÚkwargsÚfuncÚkwr|   s     €€€r/   Úconfig_handlerz@ConfigHandler._deprecated_config_handler.<locals>.config_handlerþ  s7   ø€ à�M‰M˜,¨Ô*Ü×"Ñ"Ð#EÀsÑQÈbÒQÙ˜Ð( Ñ(Ð(r1   )r   )r†   rö   r|   r÷   rø   s    ``` r/   Ú_deprecated_config_handlerz(ConfigHandler._deprecated_config_handler÷  s#   ú€ ô 
ˆt‹õ	)ó 
ð	)ð
 Ðr1   )rJ   r#   rd   r"   rc   úexpand.EnsurePackagesDiscoveredÚreturnÚNone)rd   r"   rû   z*Iterator[tuple[str, SingleCommandOptions]]©rû   rü   )rÇ   )rÉ   úStrPath | None)rÉ   r   r‚   )r•   Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r€   r‡   Úclassmethodrƒ   Úpropertyr–   r¨   r°   r·   r¾   rÅ   rÍ   rÔ   rÙ   rÞ   rä   rè   r[   rù   r™   r1   r/   r   r   ä   s4  … Ù;àÓðð
 )+€GÐ%Ó*ððàðð #ðð
 ;ðð 
óð" ð*Ø'ð*à	3ò*ó ð*ð ñ
ó ð
ó-ð4 òCó ðCð& ñó ðð  ñ-ó ð-ð ñó ðó,6ó4Bð( ñó ðð& ñó ðð ò
Ló ð
Ló#ó3ó2r1   r   c                  ó‚   ‡ — e Zd ZdZdddddœZdZ	 dej                  f	 	 	 	 	 	 	 	 	 	 	 	 	 dˆ fd	„Ze	d
„ «       Z
d„ Zˆ xZS )r]   r^   ÚurlÚdescriptionÚclassifiersÚ	platforms)Ú	home_pageÚsummaryÚ
classifierÚplatformFNc                óF   •— t         ‰| �  ||||«       || _        || _        y r‚   )Úsuperr‡   r\   rÉ   )r†   rJ   rd   r+   rc   r\   rÉ   r”   s          €r/   r‡   zConfigMetadataHandler.__init__  s)   ø€ ô 	‰Ñ˜ WÐ.BÐDUÔVØ&ˆÔØ ˆ�r1   c                óè   — | j                   }t        | j                  | j                  ¬«      }| j                  }| j
                  }||||| j                  ||«       |d«      |||| j                  |dœS )r’   ©rÉ   Úlicense)r	  ÚkeywordsÚprovidesÚ	obsoletesr  r  Úlicense_filesr  Úlong_descriptionÚversionÚproject_urls)r°   r   rÍ   rÉ   r·   rÅ   rÙ   Ú_parse_version)r†   Ú
parse_listÚ
parse_fileÚ
parse_dictÚexclude_files_parsers        r/   r–   zConfigMetadataHandler.parsers$  s�   € ð ×%Ñ%ˆ
Ü˜T×-Ñ-¸¿¹ÔFˆ
Ø×%Ñ%ˆ
Ø#×9Ñ9Ðð $Ø"Ø"Ø#Ø×4Ñ4°ZÀÓLÙ+¨IÓ6Ø'Ø%Ø *Ø×*Ñ*Ø&ñ
ð 	
r1   c                ó:  — | j                  || j                  «      }||k7  r|j                  «       }	 t        |«       |S t        j                  | j                  || j                  | j                  «      «      S # t        $ r}t        d|› d|› �«      |‚d}~ww xY w)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Ô   r\   )r†   rW   r  r¥   s       r/   r  z$ConfigMetadataHandler._parse_version:  s£   € ð ×"Ñ" 5¨$¯-©-Ó8ˆà�eÒØ—m‘m“oˆGðÜ˜Ô ð ˆNä�~‰~˜d×.Ñ.¨u°d×6FÑ6FÈÏÉÓVÓWÐWøô "ò Ü!Ø*¨5¨'ð 2,Ø,3¨9ð6óð ðûðús   ³A: Á:	BÂBÂB)rJ   r    rd   r"   r+   Úboolrc   rú   r\   zdict | NonerÉ   rþ   rû   rü   )r•   rÿ   r   rS   r€   Ústrict_moder7   Úcurdirr‡   r  r–   r  Ú__classcell__©r”   s   @r/   r]   r]     s˜   ø„ Ø€Nð Ø Ø#Øñ	€Gð €Kðð $(Ø#%§9¡9ð!à(ð!ð #ð!ð #ð	!ð
 ;ð!ð !ð!ð !ð!ð 
õ!ð ñ
ó ð
ö*Xr1   r]   c                  ó¦   ‡ — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 dˆ fd„Zed„ «       Zd„ Zdd„Ze	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 )rZ   rd   c                óZ   •— t         ‰| �  ||||«       |j                  | _        i | _        y r‚   )r  r‡   r_   rÉ   r\   )r†   rJ   rd   r+   rc   r”   s        €r/   r‡   zConfigOptionsHandler.__init__W  s/   ø€ ô 	‰Ñ˜ WÐ.BÐDUÔVØ"×+Ñ+ˆŒØ+-ˆÕr1   c                ó(   — | j                  |d¬«      S )Nú;)r®   )r°   r½   s     r/   Ú_parse_list_semicolonz*ConfigOptionsHandler._parse_list_semicolonb  s   € à�‰˜u°ˆÓ4Ð4r1   c                ó<   — | j                  || j                  ¬«      S )Nr  )rÍ   rÉ   )r†   rW   s     r/   Ú_parse_file_in_rootz(ConfigOptionsHandler._parse_file_in_rootf  s   € Ø×Ñ °·±ÐÓ>Ð>r1   c                óª   — | j                  | j                  |«      «      }t        |||«       |D �cg c]  }|j                  d«      rŒ|‘Œ c}S c c}w )Nú#)r)  r+  r}   rk   )r†   rx   rW   rn   r´   s        r/   Ú_parse_requirements_listz-ConfigOptionsHandler._parse_requirements_listi  sJ   € à×+Ñ+¨D×,DÑ,DÀUÓ,KÓLˆÜ-¨e°U¸FÔCð "(ÖD˜¨t¯©¸sÕ/C’ÒDÐDùÒDs   ²AÁ	Ac                ó  — | j                   }| j                  }| j                  }| j                  }||||||| j	                  |d«      t        | j                  d«      | 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_packagesr0  Úsetup_requiresÚpackagesÚentry_pointsÚ
py_modulesÚpython_requiresÚcmdclass)r°   r¾   r·   Ú_parse_cmdclassrù   r   r.  r)  Ú_parse_packagesr+  r   )r†   r  Ú
parse_boolr  Úparse_cmdclasss        r/   r–   zConfigOptionsHandler.parsersq  s¡   € ð ×%Ñ%ˆ
Ø×%Ñ%ˆ
Ø×%Ñ%ˆ
Ø×-Ñ-ˆð #Ø$.Ø%Ø!Ø)Ø *Ø"&×"AÑ"AØðHó#ô !(Ø×-Ñ-Ð/Aó!ð #×8Ñ8Ø×,Ñ,Ø ×4Ñ4Ø$Ü+Ø&ñ+
ð 	
r1   c                óŽ   — | j                   j                  }t        j                  | j	                  |«      || j
                  «      S r‚   )rc   r\   r   r<  r·   rÉ   )r†   rW   r\   s      r/   r=  z$ConfigOptionsHandler._parse_cmdclass‘  s5   € Ø×,Ñ,×8Ñ8ˆÜ�‰˜t×/Ñ/°Ó6¸ÀTÇ]Á]ÓSÐSr1   c                ó0  — ddg}|j                  «       }||vr| j                  |«      S | j                  | j                  j	                  di «      «      }|j                  ||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_dirr™   )
r­   r°   Úparse_section_packages__findr„   r�   ra   rÉ   r\   r   Úfind_packages)r†   rW   Úfind_directivesÚtrimmed_valueÚfind_kwargss        r/   r>  z$ConfigOptionsHandler._parse_packages•  s¡   € ð #Ð$5Ð6ˆØŸ™›ˆà Ñ/Ø×#Ñ# EÓ*Ð*ð ×7Ñ7Ø�M‰M×Ñ˜o¨rÓ2ó
ˆð 	×ÑØ%¨¸Ñ);Ñ;Ø—]‘]Ø!×-Ñ-ð 	ô 	
ô ×#Ñ#Ñ2 kÑ2Ð2r1   c                óÞ   — | j                  || j                  «      }g d¢}|j                  «       D ��ci c]  \  }}||v sŒ|sŒ||“Œ }}}|j                  d«      }|�|d   |d<   |S c c}}w )zœParses `packages.find` configuration file section.

        To be used in conjunction with _parse_packages().

        :param dict section_options:
        )ÚwhereÚincludeÚexcluderK  r   )rä   r°   rŠ   r�   )r†   rÛ   Úsection_dataÚ
valid_keysÚkrá   rI  rK  s           r/   rE  z1ConfigOptionsHandler.parse_section_packages__find®  s|   € ð ×2Ñ2°?ÀD×DTÑDTÓUˆâ4ˆ
Ø(4×(:Ñ(:Ó(<×V¡  1ÀÀZÂÒTU�q˜!‘tÐVˆÑVà—‘ Ó(ˆØÐØ#(¨¡8ˆK˜Ñ àÐùó Ws   ´A)ÁA)ÁA)c                óF   — | j                  || j                  «      }|| d<   y)z`Parses `entry_points` configuration file section.

        :param dict section_options:
        r9  N)rä   r°   ©r†   rÛ   rn   s      r/   Úparse_section_entry_pointsz/ConfigOptionsHandler.parse_section_entry_pointsÀ  s&   € ð
 ×,Ñ,¨_¸d×>NÑ>NÓOˆØ%ˆˆ^Òr1   c                ód   — | j                  || j                  «      }t        j                  |«      S r‚   )rä   r°   r   Úcanonic_package_data)r†   rÛ   Úpackage_datas      r/   Ú_parse_package_dataz(ConfigOptionsHandler._parse_package_dataÈ  s+   € Ø×2Ñ2°?ÀD×DTÑDTÓUˆÜ×*Ñ*¨<Ó8Ð8r1   c                ó,   — | j                  |«      | d<   y)z`Parses `package_data` configuration file section.

        :param dict section_options:
        rV  N©rW  ©r†   rÛ   s     r/   Úparse_section_package_dataz/ConfigOptionsHandler.parse_section_package_dataÌ  s   € ð
  $×7Ñ7¸ÓHˆˆ^Òr1   c                ó,   — | j                  |«      | d<   y)zhParses `exclude_package_data` configuration file section.

        :param dict section_options:
        Úexclude_package_dataNrY  rZ  s     r/   Ú"parse_section_exclude_package_dataz7ConfigOptionsHandler.parse_section_exclude_package_dataÓ  s   € ð
 (,×'?Ñ'?ÀÓ'PˆÐ#Ò$r1   c                ó:   ‡ — ‰ j                  |ˆ fd„«      }|‰ d<   y)zbParses `extras_require` configuration file section.

        :param dict section_options:
        c                ó0   •— ‰j                  d| › d�|«      S )Nzextras_require[rë   )r.  )rP  rá   r†   s     €r/   r›   zCConfigOptionsHandler.parse_section_extras_require.<locals>.<lambda>á  s   ø€ ˜×6Ñ6¸ÈÈÈ1Ð7MÈqÓQ€ r1   Úextras_requireNrã   rR  s   `  r/   Úparse_section_extras_requirez1ConfigOptionsHandler.parse_section_extras_requireÚ  s(   ø€ ð
 ×5Ñ5ØÛQó
ˆð
 "(ˆÐÒr1   c                ó‚   — | j                  || j                  «      }t        j                  || j                  «      | d<   y)z^Parses `data_files` configuration file section.

        :param dict section_options:
        Ú
data_filesN)rä   r°   r   Úcanonic_data_filesrÉ   rR  s      r/   Úparse_section_data_filesz-ConfigOptionsHandler.parse_section_data_filesæ  s7   € ð
 ×,Ñ,¨_¸d×>NÑ>NÓOˆÜ#×6Ñ6°v¸t¿}¹}ÓMˆˆ\Òr1   )
rJ   r   rd   r"   r+   r   rc   rú   rû   rü   )rx   r@   rW   r@   rý   )r•   rÿ   r   rS   r‡   r  r)  r+  r.  r  r–   r=  r>  rE  rS  rW  r[  r^  rb  rf  r#  r$  s   @r/   rZ   rZ   T  s¡   ø„ Ø€Nð	.à ð	.ð #ð	.ð #ð		.ð
 ;ð	.ð 
õ	.ð ñ5ó ð5ò?óEð ñ
ó ð
ò>Tò3ò2ó$&ò9óIóQó
(÷Nr1   rZ   c                  ó(   — e Zd ZdZdZdZed„ «       Zy)rt   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                ór   — d| j                   › �}| j                  | j                  | j                  ||¬«      S )Nz%https://setuptools.pypa.io/en/latest/)Úsee_urlÚformat_args)Ú	_SEE_DOCSÚ_formatÚ_SUMMARYÚ_DETAILS)r�   r÷   Údocss      r/   rw   z_AmbiguousMarker.messageý  s2   € à6°s·}±}°oÐFˆØ�{‰{˜3Ÿ<™<¨¯©¸tÐQSˆ{ÓTÐTr1   N)r•   rÿ   r   rm  rn  rk  r  rw   r™   r1   r/   rt   rt   ï  s+   „ Ø.€Hð€Hð :€Ið ñUó ñUr1   rt   c                  ó   — e Zd ZdZy)ró   z!userguide/declarative_config.htmlN)r•   rÿ   r   rk  r™   r1   r/   ró   ró     s   „ Ø3�Ir1   ró   )FF)r)   r   r*   r   r+   r   rû   rQ   )r,   r   r)   r   rû   r   )r™   F)
r,   r   r)   r   rD   zIterable[StrPath]r+   r   rû   ú2tuple[ConfigMetadataHandler, ConfigOptionsHandler])rJ   z#Distribution | DistributionMetadatarK   r@   )r.   zKIterable[ConfigHandler[Distribution] | ConfigHandler[DistributionMetadata]]rû   rQ   )F)rb   r   rB   r"   r+   r   rû   rq  )rx   r@   ry   r@   rn   r?   )Br  Ú
__future__r   ræ   rH   r7   Úcollectionsr   Úcollections.abcr   r   r   r   Útypingr	   r
   r   r   r   r   r   Úpackaging.markersr   rq   Úpackaging.requirementsr   r   Úpackaging.specifiersr   Úpackaging.versionr   r   Ú_pathr   Úerrorsr   r   Úwarningsr   rÏ   r   Útyping_extensionsr   r%   r   Údistutils.distr    rQ   r@   Útupler!   r  r"   r#   r0   r4   r'   rO   r(   rA   r}   r   r]   rZ   rt   ró   r™   r1   r/   ú<module>r€     sµ  ðò	õ #ã Û Û 	Ý #ß .ß $ß Q× QÑ Qå ?ß BÝ -ß 5å ß +Ý 3Ý áÝ+å,å3à"& s¨E°#°s°(©OÐ';Ñ"<Ð �iÓ <ðð
  $ CÐ)=Ð$=Ñ>Ð �9Ó >Ø Ù	�˜>Ð+AÓ	B€ð PUð+Øð+Ø$(ð+ØHLð+à	ó+ó4ð &(Ø!&ð	Ø
ðàðð #ðð ð	ð
 8óó>	ðððð 
ó	ð2 "'ð+Øð+à&ð+ð ð+ð 8ó	+ó\2ô@`�G˜F‘Oô `ôF	JX˜MÐ*@ÑAô JXôZXN˜=¨Ñ8ô XNôvUÐ3ô Uô(4Ð4õ 4r1   