Ë
     täiGh  ã                  ól  — U d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	 ddl
mZmZ 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/ e0e1e2e1ef   f   Z3de4d<   	 e0e1e3f   Z5de4d<   	  eddd«      Z6	 d-	 	 	 	 	 	 	 d.d„Z7d/d„Z8	 	 d0	 	 	 	 	 	 	 	 	 d1d„Z9d2d„Z:	 	 	 	 d3d „Z;	 d4	 	 	 	 	 	 	 d5d!„Z<d6d"„Z= G d#„ d$ee6   «      Z> G d%„ d&e>d   «      Z? G d'„ d(e>d   «      Z@ G d)„ d*e(«      ZA G d+„ d,e(«      ZBy)7a<  
Load setuptools configuration from ``setup.cfg`` files.

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

To read project metadata, consider using
``build.util.project_wheel_metadata`` (https://pypi.org/project/build/).
For simple scenarios, you can also try parsing the file directly
with the help of ``configparser``.
é    )ÚannotationsN)Úabstractmethod)Údefaultdict)Ú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          úi/Volumes/fast/ai/experiments/MLX_z-image/.venv/lib/python3.12/site-packages/setuptools/config/setupcfg.pyÚread_configurationr1   3   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     r0   Úapply_configurationr5   M   s   € ô ˆ4�ÔØ×ÑÔØ€Kr2   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&   r7   ÚosÚpathÚabspathÚisfiler   ÚgetcwdÚchdirÚdirnameÚparse_config_filesr   ÚlistÚstrÚparse_configurationÚcommand_optionsÚ_finalize_license_files)r-   r*   Úother_filesr,   r7   Úcurrent_directoryr.   r/   s           r0   r(   r(   V   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        r0   Ú_get_optionrP   u   s8   € ð ˜˜�,€KÜ×$Ñ$¤W¨j¸#Ó>€LÜ�Z ¨lÓ;€FÙ‹8€Or2   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_optionsrP   rK   Úsection_prefix)r/   Úconfig_dictÚhandlerÚoptionÚvalues        r0   r)   r)   �   sW   € ô $¤DÓ)€KãˆØ×)Ô)ˆFÜ × 2Ñ 2°FÓ;ˆEØ:?ˆK˜×.Ñ.Ñ/°Ò7ñ *ð ð
 Ðr2   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)ÚdistributionrC   r,   Úensure_discoveredÚoptionsÚmetas         r0   rB   rB   —   sÎ   € ô$ 
×	(Ñ	(¨Ô	6Ð:KÜ&ØØØ Øó	
ˆð 	�‰ŒØ×'Ò'Ø'.×':Ñ':ˆLÔ$ä$Ø×!Ñ!ØØ ØØ×$Ñ$Ø×!Ñ!ó
ˆð 	�
‰
ŒØ×&Ñ&×-Ñ-Ø×%Ñ% t×'=Ñ'=ô	
÷+ 
7ð2 �ˆ=Ð÷3 
7ð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     €r0   Ú	<genexpr>z8_warn_accidental_env_marker_misconfig.<locals>.<genexpr>à   s!   øè ø€ ÐB¹'°ˆv�a‰y×#Ñ# F×+¹'ùs   ƒ!)
ÚlenÚ
marker_envÚkeysr   ÚnameÚ_AmbiguousMarkerÚemitr   ÚanyÚmessage)ÚlabelÚ
orig_valuerp   Úmarkersrj   ÚexÚmsgs     `    r0   Ú%_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	e
dd„«       «       Zdd	„Zedd
„«       Zed„ «       Zed„ «       Zed„ «       Zdd„Zdd„Zed„ «       Zed„ «       Zedd„«       Zdd„Zdd„Zd„ Zy)ÚConfigHandlerz1Handles metadata supplied in configuration files.rA   rT   zClassVar[dict[str, str]]Úaliasesc                ó¦   — || _         || _        t        | j                  |«      «      | _        g | _        || _        t        t           «       | _	        y ©N)
r,   rK   rR   Ú_section_optionsÚsectionsrS   rd   ÚsetrA   ra   )ÚselfrK   re   r,   rd   s        r0   Ú__init__zConfigHandler.__init__õ   sM   € ð %9ˆÔ!Ø",ˆŒÜ˜T×2Ñ2°7Ó;Ó<ˆŒØ&(ˆÔØ!2ˆÔÜ!$¤S¡£ˆÔð	r2   c              #  óª   K  — |j                  «       D ]<  \  }}|j                  | j                  «      \  }}}|rŒ(|j                  d«      |f–— Œ> y ­w)NÚ.)ÚitemsÚ	partitionrT   Úlstrip)Úclsre   Ú	full_namerX   ÚpreÚ_sepru   s          r0   r…   zConfigHandler._section_options  sS   è ø€ ð !(§¡¦ÑˆI�uØ'×1Ñ1°#×2DÑ2DÓE‰OˆC��tÙØØ—+‘+˜cÓ" EÐ)Ó)ñ	 !0ù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    r0   ÚparserszConfigHandler.parsers  s'   € ô "Ø�~‰~×&Ñ&Ð'Ð'FÐGó
ð 	
r2   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    r0   Ú<lambda>z+ConfigHandler.__setitem__.<locals>.<lambda>(  s   € ¹Qr2   Úset_)rK   r‚   ÚgetrJ   ÚAttributeErrorÚKeyErrorr˜   Ú	Exceptionr,   rI   r   Ú__setattr__rS   Úappend)	rˆ   Úoption_namerX   rK   Úcurrent_valueÚerp   Úsimple_setterÚsetters	            r0   Ú__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
        rh   )Ú
isinstancer@   Ú
splitlinesÚsplitÚstrip)r�   rX   Ú	separatorÚchunks       r0   Ú_parse_listzConfigHandler._parse_list2  s\   € ô �eœTÔ"ØˆLà�5‰=Ø×$Ñ$Ó&‰Eà—K‘K 	Ó*ˆEá+0ÓB©5 %°E·K±KµM�—‘•¨5Ñ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�   rX   r°   ÚresultÚlinerL   ÚsepÚvals           r0   Ú_parse_dictzConfigHandler._parse_dictF  sm   € ð ˆ	ØˆØ—O‘O EÖ*ˆDØ ŸN™N¨9Ó5‰MˆC��cØ�iÒÜ!Ð$JÈ5È'Ð"RÓSÐSØ"%§)¡)£+ˆF�3—9‘9“;Òð	 +ð ˆr2   c                ó*   — |j                  «       }|dv S )zQRepresents value as boolean.

        :param value:
        :rtype: bool
        )Ú1ÚtrueÚyes)Úlower©r�   rX   s     r0   Ú_parse_boolzConfigHandler._parse_boolW  s   € ð —‘“ˆØÐ,Ð,Ð,r2   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)rm   Ú
ValueErrorr   ÚStr)rX   Úexclude_directiverL   s     €r0   Úparserz3ConfigHandler._exclude_files_parser.<locals>.parserm  sG   ø€ Ø 'ÐØ×ÑÐ 1Ô2Ü Ø8¸¸ð >-ð -óð ô —;‘;˜uÓ%Ð%r2   r›   )r�   rL   rÇ   s    ` r0   Ú_exclude_files_parserz#ConfigHandler._exclude_files_parsera  s   ø€ ô	&ð ˆr2   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¬   rA   rm   r   rÅ   rr   r®   r¯   ra   rb   r   Ú
read_files)rˆ   rX   Úroot_dirÚinclude_directiveÚspecr9   Ú	filepathss          r0   Ú_parse_filezConfigHandler._parse_filex  s¡   € ð $Ðä˜%¤Ô%ØˆLà×ÑÐ 1Ô2Ü—;‘;˜uÓ%Ð%à”SÐ*Ó+Ð-Ð.ˆØ.2¯j©j¸¬oÓ>©o d�T—Z‘Z•\¨oˆ	Ð>Ø×Ñ×%Ñ% 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:Ú )	rm   r   rÅ   Úreplacerb   rd   r]   r   Ú	read_attr)rˆ   rX   r]   rÌ   Úattr_directiveÚ	attr_descs         r0   Ú_parse_attrzConfigHandler._parse_attr“  sg   € ð !ˆØ×Ñ Ô/Ü—;‘;˜uÓ%Ð%à—M‘M .°"Ó5ˆ	ð 	×Ñ˜4×1Ñ1×=Ñ=Ô>Ü×Ñ 	¨;¸ÓAÐAr2   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›   )rX   rp   ÚmethodÚparse_methodss      €r0   r\   z1ConfigHandler._get_parser_compound.<locals>.parse±  s"   ø€ ØˆFã'�Ù ›‘ð (ð ˆMr2   r›   )r�   rÛ   r\   s    ` r0   Ú_get_parser_compoundz"ConfigHandler._get_parser_compound§  s   ø€ ô	ð ˆr2   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_parserrX   rL   Ú_r¸   s          r0   Ú_parse_section_to_dict_with_keyz-ConfigHandler._parse_section_to_dict_with_key»  s9   € ð ˆØ,×2Ñ2Ö4‰MˆC‘�!�SÙ& s¨CÓ0ˆE�#ŠJð 5àˆr2   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     €r0   r�   z6ConfigHandler._parse_section_to_dict.<locals>.<lambda>Ô  s
   ø€ ™}¨QÔ/r2   c                ó   — |S r„   r›   )rà   rä   s     r0   r�   z6ConfigHandler._parse_section_to_dict.<locals>.<lambda>Ô  s   € ÑUVr2   )rá   )r�   rÞ   rß   rÇ   s     ` r0   Ú_parse_section_to_dictz$ConfigHandler._parse_section_to_dictÊ  s#   ø€ ñ 5BÔ/ÉˆØ×2Ñ2°?ÀFÓKÐKr2   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Þ   ru   rà   rX   s        r0   Úparse_sectionzConfigHandler.parse_section×  sF   € ð
 !0× 5Ñ 5Ö 7ÑˆD‘*�1�eÜ×$Ñ$¤XÕ.à"��T‘
÷ /Ð.ñ !8ß.Ð.ú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Œ   rJ   rÓ   r   rT   )rˆ   Úsection_namerÞ   Úmethod_postfixÚsection_parser_methods        r0   r\   zConfigHandler.parseá  s›   € ð
 .2¯]©]×-@Ñ-@Ö-BÑ)ˆL˜/ØˆNÙØ#$ \ NÐ!3�ä5<Øà Ð/Ð0×8Ñ8¸¸dÓCØó	6Ð!ð %Ð,Ü!ðØ×+Ñ+Ð,¨A¨l¨^¸1ð>óð ñ
 " /Õ2ñ% .Cr2   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Ú_DeprecatedConfigrw   )ÚargsÚkwargsÚfuncÚkwr~   s     €€€r0   Úconfig_handlerz@ConfigHandler._deprecated_config_handler.<locals>.config_handler  s7   ø€ à�M‰M˜,¨Ô*Ü×"Ñ"Ð#EÀsÑQÈbÒQÙ˜Ð( Ñ(Ð(r2   )r	   )rˆ   rø   r~   rù   rú   s    ``` r0   Ú_deprecated_config_handlerz(ConfigHandler._deprecated_config_handlerú  s#   ú€ ô 
ˆt‹õ	)ó 
ð	)ð
 Ðr2   )rK   r$   re   r#   rd   úexpand.EnsurePackagesDiscoveredÚreturnÚNone)re   r#   rý   z*Iterator[tuple[str, SingleCommandOptions]]©rý   zdict[str, Callable]©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û   r›   r2   r0   r�   r�   å   s=  … Ù;àÓðð
 )+€GÐ%Ó*ððàðð #ðð
 ;ðð 
óð" ð*Ø'ð*à	3ò*ó ð*ð Øò
ó ó ð
ó-ð4 òCó ðCð& ñó ðð  ñ-ó ð-ð ñó ðó,Có6Bð( ñó ðð& ñó ðð ò
Ló ð
Ló#ó3ó2r2   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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ˆ   rK   re   r,   rd   r]   rÌ   r–   s          €r0   r‰   zConfigMetadataHandler.__init__  s)   ø€ ô 	‰Ñ˜ WÐ.BÐDUÔVØ&ˆÔØ ˆ�r2   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        r0   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—;‘;ð!
ð" Ð-ð#
ð 	
r2   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ˆ   rX   r   r§   s       r0   r$  z$ConfigMetadataHandler._parse_versionC  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)rK   r!   re   r#   r,   Úboolrd   rü   r]   zdict | NonerÌ   r  rý   rþ   rÿ   )r—   r  r  rT   r‚   Ústrict_moder8   Úcurdirr‰   r  r˜   r$  Ú__classcell__©r–   s   @r0   r^   r^   
  s˜   ø„ Ø€Nð Ø Ø#Øñ	€Gð €Kðð $(Ø#%§9¡9ð!à(ð!ð #ð!ð #ð	!ð
 ;ð!ð !ð!ð !ð!ð 
õ!ð ò
ó ð
ö6Xr2   r^   c                  ó¨   ‡ — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 dˆ fd„Zed„ «       Zd„ Zdd„Ze	dd„«       Z
d„ Zd„ Zd	„ Zdd
„Zd„ Zdd„Zdd„Zdd„Zdd„Zˆ xZS )r[   re   c                óZ   •— t         ‰| �  ||||«       |j                  | _        i | _        y r„   )r  r‰   r`   rÌ   r]   )rˆ   rK   re   r,   rd   r–   s        €r0   r‰   zConfigOptionsHandler.__init__`  s/   ø€ ô 	‰Ñ˜ WÐ.BÐDUÔVØ"×+Ñ+ˆŒØ+-ˆÕr2   c                ó(   — | j                  |d¬«      S )NÚ;)r°   )r²   r¿   s     r0   Ú_parse_list_semicolonz*ConfigOptionsHandler._parse_list_semicolonk  s   € à�‰˜u°ˆÓ4Ð4r2   c                ó<   — | j                  || j                  ¬«      S )Nr  )rÐ   rÌ   )rˆ   rX   s     r0   Ú_parse_file_in_rootz(ConfigOptionsHandler._parse_file_in_rooto  s   € Ø×Ñ °·±ÐÓ>Ð>r2   c                ó”   — | j                  | j                  |«      «      }t        |||«       t        j                  d„ |D «       «      S )Nc              3  óD   K  — | ]  }|j                  d «      rŒ|–— Œ y­w)Ú#Nrl   )rn   r¶   s     r0   rq   z@ConfigOptionsHandler._parse_requirements_list.<locals>.<genexpr>x  s   è ø€ ÐP©V T¸4¿?¹?È3Õ;OœD©Vùs   ‚ ™ )r3  r5  r   r   r"  )rˆ   rz   rX   rp   s       r0   Ú_parse_requirements_listz-ConfigOptionsHandler._parse_requirements_listr  s@   € à×+Ñ+¨D×,DÑ,DÀUÓ,KÓLˆÜ-¨e°U¸FÔCô �|‰|ÑP©VÓPÓPÐPr2   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_packagesr;  Úsetup_requiresÚpackagesÚentry_pointsÚ
py_modulesÚpython_requiresÚcmdclass)r²   rÀ   Ú_parse_cmdclassr¹   rû   r   r9  r3  Ú_parse_packagesr5  r   ÚSpecifierSet)rˆ   Ú
parse_listÚ
parse_boolÚparse_cmdclasss       r0   r˜   zConfigOptionsHandler.parsers{  s¢   € ð ×%Ñ%ˆ
Ø×%Ñ%ˆ
Ø×-Ñ-ˆð #Ø$.Ø×+Ñ+Ø!Ø)Ø *Ø"&×"AÑ"AØðHó#ô !(Ø×-Ñ-Ð/Aó!ð #×8Ñ8Ø×,Ñ,Ø ×4Ñ4Ø$Ü&×3Ñ3Ø&ñ+
ð 	
r2   c                óŽ   — | j                   j                  }t        j                  | j	                  |«      || j
                  «      S r„   )rd   r]   r   rG  r¹   rÌ   )rˆ   rX   r]   s      r0   rH  z$ConfigOptionsHandler._parse_cmdclassš  s5   € Ø×,Ñ,×8Ñ8ˆÜ�‰˜t×/Ñ/°Ó6¸ÀTÇ]Á]ÓSÐSr2   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Ÿ   rb   rÌ   r]   r   Úfind_packages)rˆ   rX   Úfind_directivesÚtrimmed_valueÚfind_kwargss        r0   rI  z$ConfigOptionsHandler._parse_packagesž  s¡   € ð #Ð$5Ð6ˆØŸ™›ˆà Ñ/Ø×#Ñ# EÓ*Ð*ð ×7Ñ7Ø�M‰M×Ñ˜o¨rÓ2ó
ˆð 	×ÑØ%¨¸Ñ);Ñ;Ø—]‘]Ø!×-Ñ-ð 	ô 	
ô ×#Ñ#Ñ2 kÑ2Ð2r2   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ÚexcluderX  r   )ræ   r²   rŒ   rŸ   )rˆ   rÞ   Úsection_dataÚ
valid_keysÚkrä   rV  rX  s           r0   rR  z1ConfigOptionsHandler.parse_section_packages__find·  s   € ð ×2Ñ2°?ÀD×DTÑDTÓUˆâ4ˆ
Ø(4×(:Ñ(:Ô(<ÔVÑ(<¡  1ÀÀZÂÒTU�q˜!‘tÐ(<ˆÑ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:
        rD  N)ræ   r²   ©rˆ   rÞ   rp   s      r0   Úparse_section_entry_pointsz/ConfigOptionsHandler.parse_section_entry_pointsÉ  s&   € ð
 ×,Ñ,¨_¸d×>NÑ>NÓOˆØ%ˆˆ^Òr2   c                ód   — | j                  || j                  «      }t        j                  |«      S r„   )ræ   r²   r   Úcanonic_package_data)rˆ   rÞ   Úpackage_datas      r0   Ú_parse_package_dataz(ConfigOptionsHandler._parse_package_dataÑ  s+   € Ø×2Ñ2°?ÀD×DTÑDTÓUˆÜ×*Ñ*¨<Ó8Ð8r2   c                ó,   — | j                  |«      | d<   y)z`Parses `package_data` configuration file section.

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

        :param dict section_options:
        Úexclude_package_dataNrf  rg  s     r0   Ú"parse_section_exclude_package_dataz7ConfigOptionsHandler.parse_section_exclude_package_dataÜ  s   € ð
 (,×'?Ñ'?ÀÓ'PˆÐ#Ò$r2   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í   )r9  )r]  rä   rˆ   s     €r0   r�   zCConfigOptionsHandler.parse_section_extras_require.<locals>.<lambda>ê  s   ø€ ˜×6Ñ6¸ÈÈÈ1Ð7MÈqÔQr2   Úextras_requireN)rá   r   r#  r_  s   `  r0   Úparse_section_extras_requirez1ConfigOptionsHandler.parse_section_extras_requireã  s1   ø€ ð
 ×5Ñ5ØÛQó
ˆô
 ")§¡¨fÓ!5ˆÐÒr2   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      r0   Úparse_section_data_filesz-ConfigOptionsHandler.parse_section_data_filesð  s7   € ð
 ×,Ñ,¨_¸d×>NÑ>NÓOˆÜ#×6Ñ6°v¸t¿}¹}ÓMˆˆ\Òr2   )
rK   r    re   r#   r,   r*  rd   rü   rý   rþ   )rz   rA   rX   rA   rÿ   r   )r—   r  r  rT   r‰   r  r3  r5  r9  r  r˜   rH  rI  rR  r`  rd  rh  rk  ro  rs  r-  r.  s   @r0   r[   r[   ]  s¡   ø„ Ø€Nð	.à ð	.ð #ð	.ð #ð		.ð
 ;ð	.ð 
õ	.ð ñ5ó ð5ò?óQð ò
ó ð
ò<Tò3ò2ó$&ò9óIóQó
6÷Nr2   r[   c                  ó(   — e Zd ZdZdZdZed„ «       Zy)rv   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      r0   ry   z_AmbiguousMarker.message  s2   € à6°s·}±}°oÐFˆØ�{‰{˜3Ÿ<™<¨¯©¸tÐQSˆ{ÓTÐTr2   N)r—   r  r  rz  r{  rx  r  ry   r›   r2   r0   rv   rv   ù  s+   „ Ø.€Hð€Hð :€Ið ñUó ñUr2   rv   c                  ó   — e Zd ZdZy)rõ   z!userguide/declarative_config.htmlN)r—   r  r  rx  r›   r2   r0   rõ   rõ     s   „ Ø3�Ir2   rõ   )FF)r*   r   r+   r*  r,   r*  rý   rR   )r-   r    r*   r   rý   r    )r›   F)
r-   r    r*   r   rE   zIterable[StrPath]r,   r*  rý   ú2tuple[ConfigMetadataHandler, ConfigOptionsHandler])rK   z#Distribution | DistributionMetadatarL   rA   )r/   zKIterable[ConfigHandler[Distribution] | ConfigHandler[DistributionMetadata]]rý   rR   )F)rc   r    rC   r#   r,   r*  rý   r~  )rz   rA   r{   rA   rp   r@   )Cr  Ú
__future__r   rè   rI   r8   Úabcr   Úcollectionsr   Úcollections.abcr   r   r   r	   Útypingr
   r   r   r   r   r   r   Úpackaging.markersr   rs   Úpackaging.requirementsr   r   Úpackaging.versionr   r   rÒ   r   Ú_pathr   Úerrorsr   r   Úwarningsr   r   Útyping_extensionsr   r&   r    Údistutils.distr!   rR   rA   Útupler"   r  r#   r$   r1   r5   r(   rP   r)   rB   r   r�   r^   r[   rv   rõ   r›   r2   r0   Ú<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ô@b�G˜F‘Oô bôJ	PX˜MÐ*@ÑAô PXôfYN˜=¨Ñ8ô YNôxUÐ3ô Uô(4Ð4õ 4r2   