Ë
    nûàgÏg  ã                  ó`  — 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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.e/e0e/ef   f   Z1de2d<   	 e.e/e1f   Z3de2d<   	  eddd«      Z4	 d,	 	 	 	 	 	 	 d-d„Z5d.d„Z6	 	 d/	 	 	 	 	 	 	 	 	 d0d„Z7d1d„Z8	 	 	 	 d2d„Z9	 d3	 	 	 	 	 	 	 d4d „Z:d5d!„Z; G d"„ d#ee4   «      Z< G d$„ d%e<d   «      Z= G d&„ d'e<d   «      Z> G d(„ d)e&«      Z? G d*„ d+e&«      Z@y)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)ÚInvalidVersionÚVersioné   )Ú_static)Ú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          úX/var/www/skyplay_api_hub/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_valuero   Ú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        t           «       | _	        y ©N)
r+   rJ   rQ   Ú_section_optionsÚsectionsrR   rc   Úsetr@   r`   )ÚselfrJ   rd   r+   rc   s        r/   Ú__init__zConfigHandler.__init__ô   sM   € ð %9ˆÔ!Ø",ˆŒÜ˜T×2Ñ2°7Ó;Ó<ˆŒØ&(ˆÔØ!2ˆÔÜ!$¤S¡£ˆÔð	r1   c              #  óª   K  — |j                  «       D ]<  \  }}|j                  | j                  «      \  }}}|rŒ(|j                  d«      |f–— Œ> y ­w)Nú.)ÚitemsÚ	partitionrS   Úlstrip)Úclsrd   Ú	full_namerW   ÚpreÚ_seprt   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        | j                  j                  › d�«      ‚)ú.Metadata item name to parser function mapping.z must provide .parsers property)ÚNotImplementedErrorÚ	__class__Ú__name__)r‡   s    r/   ÚparserszConfigHandler.parsers  s'   € ô "Ø�~‰~×&Ñ&Ð'Ð'FÐGó
ð 	
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Úero   Ú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                ór   •— d}| j                  |«      rt        d‰› d�«      ‚t        j                  | «      S )Núfile:z"Only strings are accepted for the z field, files are not accepted)rl   Ú
ValueErrorr   ÚStr)rW   Úexclude_directiverK   s     €r/   Úparserz3ConfigHandler._exclude_files_parser.<locals>.parserk  sG   ø€ Ø 'ÐØ×ÑÐ 1Ô2Ü Ø8¸¸ð >-ð -óð ô —;‘;˜uÓ%Ð%r1   rš   )rŽ   rK   rÆ   s    ` r/   Ú_exclude_files_parserz#ConfigHandler._exclude_files_parser_  s   ø€ ô	&ð ˆr1   c                ó|  — d}t        |t        «      s|S |j                  |«      st        j                  |«      S |t        |«      d }|j                  d«      D �cg c]  }|j                  «       ‘Œ }}| j                  j                  |«       t        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@   rl   r   rÄ   rq   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Ü—;‘;˜uÓ%Ð%à”SÐ*Ó+Ð-Ð.ˆØ.2¯j©j¸«oÖ> d�T—Z‘Z•\Ð>ˆ	Ð>Ø×Ñ×%Ñ% iÔ0ä�{‰{œ6×,Ñ,¨Y¸ÓAÓBÐBùò ?s   ÁB9c                óî   — d}|j                  |«      st        j                  |«      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:Ú )	rl   r   rÄ   Úreplacera   rc   r\   r   Ú	read_attr)r‡   rW   r\   rË   Úattr_directiveÚ	attr_descs         r/   Ú_parse_attrzConfigHandler._parse_attr‘  sg   € ð !ˆØ×Ñ Ô/Ü—;‘;˜uÓ%Ð%à—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   ro   Ú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Ý   rt   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Ú_DeprecatedConfigrv   )Ú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€   ä   s5  … Ù;àÓðð
 )+€GÐ%Ó*ððàðð #ðð
 ;ðð 
óð" ð*Ø'ð*à	3ò*ó ð*ð ñ
ó ð
ó-ð4 òCó ðCð& ñó ðð  ñ-ó ð-ð ñó ðó,Có6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                óV  — | j                  | j                  t        j                  «      }| 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
| j                  ||«      “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        r/   r—   zConfigMetadataHandler.parsers%  sj  € ð !×5Ñ5°d×6FÑ6FÌÏÉÓUÐØ ×5Ñ5°d×6FÑ6FÌÏÉÓUÐÜ˜T×-Ñ-¸¿¹ÔFˆ
Ø#×9Ñ9Ðð
Ø”g—k‘kð
àœGŸK™Kð
ð œ'Ÿ+™+ð
ð ¤§¡ð	
ð
 Ð*ð
ð Ð)ð
ð Ð)ð
ð Ð*ð
ð ˜4×4Ñ4°ZÐARÓSð
ð Ñ+¨IÓ6ð
ð Ð.ð
ð ˜:ð
ð  
ð
ð ,¬W¯[©[ð
ð �t×*Ñ*ð
ð  ”7—;‘;ð!
ð" Ð-ð#
ð 	
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_versionA  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ð!à(ð!ð #ð!ð #ð	!ð
 ;ð!ð !ð!ð !ð!ð 
õ!ð ñ
ó ð
ö6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__^  s/   ø€ ô 	‰Ñ˜ WÐ.BÐDUÔVØ"×+Ñ+ˆŒØ+-ˆÕr1   c                ó(   — | j                  |d¬«      S )Nú;)r¯   )r±   r¾   s     r/   Ú_parse_list_semicolonz*ConfigOptionsHandler._parse_list_semicoloni  s   € à�‰˜u°ˆÓ4Ð4r1   c                ó<   — | j                  || j                  ¬«      S )Nr  )rÏ   rË   )r‡   rW   s     r/   Ú_parse_file_in_rootz(ConfigOptionsHandler._parse_file_in_rootm  s   € Ø×Ñ °·±ÐÓ>Ð>r1   c                ó”   — | j                  | j                  |«      «      }t        |||«       t        j                  d„ |D «       «      S )Nc              3  óD   K  — | ]  }|j                  d «      rŒ|–— Œ y­w)ú#Nrk   )rm   rµ   s     r/   rp   z@ConfigOptionsHandler._parse_requirements_list.<locals>.<genexpr>v  s   è ø€ ÒP T¸4¿?¹?È3Õ;OœDÑPùs   ‚ ™ )r1  r3  r~   r   r   )r‡   ry   rW   ro   s       r/   Ú_parse_requirements_listz-ConfigOptionsHandler._parse_requirements_listp  s@   € à×+Ñ+¨D×,DÑ,DÀUÓ,KÓLˆÜ-¨e°U¸FÔCô �|‰|ÑP¨VÔPÓPÐPr1   c                ó   — | j                   }| 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_datar\   ÚscriptsÚeager_resourcesÚdependency_linksÚnamespace_packagesr9  Úsetup_requiresÚpackagesÚentry_pointsÚ
py_modulesÚpython_requiresÚcmdclass)r±   r¿   Ú_parse_cmdclassr¸   rú   r   r7  r1  Ú_parse_packagesr3  r   ÚSpecifierSet)r‡   Ú
parse_listÚ
parse_boolÚparse_cmdclasss       r/   r—   zConfigOptionsHandler.parsersy  s¢   € ð ×%Ñ%ˆ
Ø×%Ñ%ˆ
Ø×-Ñ-ˆð #Ø$.Ø×+Ñ+Ø!Ø)Ø *Ø"&×"AÑ"AØðHó#ô !(Ø×-Ñ-Ð/Aó!ð #×8Ñ8Ø×,Ñ,Ø ×4Ñ4Ø$Ü&×3Ñ3Ø&ñ+
ð 	
r1   c                óŽ   — | j                   j                  }t        j                  | j	                  |«      || j
                  «      S rƒ   )rc   r\   r   rE  r¸   rË   )r‡   rW   r\   s      r/   rF  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/   rG  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ÚexcluderV  r   )rå   r±   r‹   rž   )r‡   rÝ   Úsection_dataÚ
valid_keysÚkrã   rT  rV  s           r/   rP  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:
        rB  N)rå   r±   ©r‡   rÝ   ro   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:
        ra  N©rb  ©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_dataNrd  re  s     r/   Ú"parse_section_exclude_package_dataz7ConfigOptionsHandler.parse_section_exclude_package_dataÚ  s   € ð
 (,×'?Ñ'?ÀÓ'PˆÐ#Ò$r1   c                ó`   ‡ — ‰ j                  |ˆ fd„«      }t        j                  |«      ‰ d<   y)zbParses `extras_require` configuration file section.

        :param dict section_options:
        c                ó0   •— ‰j                  d| › d�|«      S )Nzextras_require[rì   )r7  )r[  rã   r‡   s     €r/   rœ   zCConfigOptionsHandler.parse_section_extras_require.<locals>.<lambda>è  s   ø€ ˜×6Ñ6¸ÈÈÈ1Ð7MÈqÓQ€ r1   Úextras_requireN)rà   r   r!  r]  s   `  r/   Úparse_section_extras_requirez1ConfigOptionsHandler.parse_section_extras_requireá  s1   ø€ ð
 ×5Ñ5ØÛQó
ˆô
 ")§¡¨fÓ!5ˆÐÒ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Ë   r]  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ý   )ry   r@   rW   r@   rþ   )r–   r   r  rS   rˆ   r  r1  r3  r7  r  r—   rF  rG  rP  r^  rb  rf  ri  rm  rq  r+  r,  s   @r/   rZ   rZ   [  s¡   ø„ Ø€Nð	.à ð	.ð #ð	.ð #ð		.ð
 ;ð	.ð 
õ	.ð ñ5ó ð5ò?óQð ñ
ó ð
ò<Tò3ò2ó$&ò9óIóQó
6÷Nr1   rZ   c                  ó(   — e Zd ZdZdZdZed„ «       Zy)ru   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/   rx   z_AmbiguousMarker.message  s2   € à6°s·}±}°oÐFˆØ�{‰{˜3Ÿ<™<¨¯©¸tÐQSˆ{ÓTÐTr1   N)r–   r   r  rx  ry  rv  r  rx   rš   r1   r/   ru   ru   ÷  s+   „ Ø.€Hð€Hð :€Ið ñUó ñUr1   ru   c                  ó   — e Zd ZdZy)rô   z!userguide/declarative_config.htmlN)r–   r   r  rv  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ü   r|  )ry   r@   rz   r@   ro   r?   )Ar  Ú
__future__r   rç   rH   r7   Úcollectionsr   Úcollections.abcr   r   r   r   Útypingr	   r
   r   r   r   r   r   Úpackaging.markersr   rr   Úpackaging.requirementsr   r   Úpackaging.versionr   r   rÑ   r   Ú_pathr   Úerrorsr   r   Úwarningsr   r   Útyping_extensionsr   r%   r   Údistutils.distr    rQ   r@   Útupler!   r  r"   r#   r0   r4   r'   rO   r(   rA   r~   r€   r]   rZ   ru   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ô@a�G˜F‘Oô aôH	PX˜MÐ*@ÑAô PXôfYN˜=¨Ñ8ô YNôxUÐ3ô Uô(4Ð4õ 4r1   