ó
    EñiGh  ã                  óŠ  • % S r SSKJr  SSKrSSKrSSKrSSKJr  SSKJ	r	  SSK
JrJr  SSKJrJr  SSKJrJrJrJrJrJrJr  SS	KJr  SS
KJrJr  SSKJrJr  SSK J!r!  SSK"J#r#  SSK$J%r%J&r&  SSK'J(r(  SSK J)r)  \(       a  SSK*J+r+  SSK,J-r-  SSK.J/r/  \0\1\2\1\4   4   r3S\4S'    \0\1\34   r5S\4S'    \" SSS5      r6 S-       S.S jjr7S/S jr8  S0         S1S jjr9S2S jr:    S3S  jr; S4       S5S! jjr<S6S" jr= " S# S$\\6   5      r> " S% S&\>S   5      r? " S' S(\>S   5      r@ " S) S*\(5      rA " S+ S,\(5      rBg)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                ó|   • SSK Jn  U" 5       nU(       a  UR                  5       O/ n[        X@XR5      n[	        U5      $ )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          ÚW/home/mande/repo/quber/.venv/lib/python3.13/site-packages/setuptools/config/setupcfg.pyÚread_configurationr1   3   s7   € õ$ -á‹>€DÞ,7�×&Ñ&Ô(¸R€IÜ�d iÓF€HÜ  Ó*Ð*ó    c                ó<   • [        X5        U R                  5         U $ )zXApply 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                óH  • SSK Jn  [        R                  R	                  U5      n[        R                  R                  U5      (       d  [        SU S35      e[        R                  " 5       n[        R                  " [        R                  R                  U5      5        / UQUPn UR                  U [        [        [           U5      S9  [        X R                  US9nU R!                  5         [        R                  " U5        U$ ! [        R                  " U5        f = f)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                óh   • SU 3n[         R                  " [        X5      n[        XU5      nU" 5       $ )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   s4   € ð ˜˜�,€KÜ×$Ò$¤W¨jÓ>€LÜ�Z¨lÓ;€FÙ‹8€Or2   c                óª   • [        [        5      nU  H=  nUR                   H*  n[        UR                  U5      nXAUR
                     U'   M,     M?     U$ )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)   �   sU   € ô $¤DÓ)€KãˆØ×)Ô)ˆFÜ × 2Ñ 2°FÓ;ˆEØ:?˜×.Ñ.Ñ/°Ó7ó *ñ ð
 Ðr2   c           	     óÊ  • [         R                  " U 5       n[        U UUU5      nUR                  5         U R                  (       d  UR                  U l        [        U R                  UUUU R                  U R                  5      nUR                  5         U R                  R                  UR                  UR                  5        SSS5        XT4$ ! , (       d  f       WW4$ = f)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Ô	6ð2 �ˆ=Ðús   —B/CÃ
C"c                óx  ^• SU;   d  [        T5      S:w  a  g[        5       R                  5       n [        TS   5      nUR                  U;   a  [
        R                  U TS   S9  gg! [         aG  n[        U4S jU 5       5      (       a#  [
        R                  U TS   S9n[        U5      Ue SnAgSnAff = f)a=  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  óL   >#   • U  H  nTS    R                  U5      v •  M     g7f)r   N©Ú
startswith)Ú.0ÚmarkerÚparseds     €r0   Ú	<genexpr>Ú8_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ÑBÜ"×*Ñ*°¸FÀ1¹IÐ*ÐFˆCÜ$ SÓ)¨rÐ1ô Cûð2ús   ±5A( Á(
B9Á2=B4Â4B9c                  ó:  • \ rS rSr% SrS\S'    0 rS\S'            SS jr\    SS j5       r	\
\SS	 j5       5       rSS
 jr\SS j5       r\S 5       r\S 5       r\S 5       rSS jrSS jr\S 5       r\S 5       r\S S j5       rSS jrSS jrS rSrg)!ÚConfigHandleréå   z1Handles metadata supplied in configuration files.rA   rT   zClassVar[dict[str, str]]Úaliasesc                ó¢   • X0l         Xl        [        U R                  U5      5      U l        / U l        X@l        [        [           " 5       U l	        g ©N)
r,   rK   rR   Ú_section_optionsÚsectionsrS   rd   ÚsetrA   ra   )ÚselfrK   re   r,   rd   s        r0   Ú__init__ÚConfigHandler.__init__õ   sG   € ð %9Ô!Ø",ŒÜ˜T×2Ñ2°7Ó;Ó<ˆŒØ&(ˆÔØ!2ÔÜ!$¤S¢£ˆÔð	r2   c              #  ó¶   #   • UR                  5        HA  u  p#UR                  U R                  5      u  pEnU(       a  M,  UR                  S5      U4v •  MC     g 7f)NÚ.)ÚitemsÚ	partitionrT   Úlstrip)Úclsre   Ú	full_namerX   ÚpreÚ_seprv   s          r0   r‡   ÚConfigHandler._section_options  sN   é € ð !(§¡¦ÑˆIØ'×1Ñ1°#×2DÑ2DÓE‰OˆC�tÞÙØ—+‘+˜cÓ" EÐ)Ô)ò	 !0ùs   ‚AAc                óF   • [        U R                  R                   S35      e)ú.Metadata item name to parser function mapping.z must provide .parsers property)ÚNotImplementedErrorÚ	__class__Ú__name__)rŠ   s    r0   ÚparsersÚConfigHandler.parsers  s'   € ô "Ø�~‰~×&Ñ&Ð'Ð'FÐGó
ð 	
r2   c                óâ  • U R                   nU R                  R                  X5      n [        X15      nU(       a  g  U R                  R                  US 5      " U5      n[        R                  " UR                  U5      n[        USU 3U5      nU" U5        U R                  R                  U5        g ! [         a  n[        U5      UeS nAff = f! [        4U R                  -   a     g f = f)Nc                ó   • U $ r†   © )Úxs    r0   Ú<lambda>Ú+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__ÚConfigHandler.__setitem__  sá   € Ø—_‘_ˆ
ð —l‘l×&Ñ& {Ó@ˆð	/Ü# JÓ<ˆMö àð	Ø—\‘\×%Ñ% k±;Ô?ÀÓFˆFô "×)Ò)¨*×*@Ñ*@À+ÓNˆÜ˜ t¨K¨=Ð%9¸=ÓIˆÙˆvŒà×Ñ×Ñ Õ,øô! ó 	/Ü˜;Ó'¨QÐ.ûð	/ûô ˆ|˜d×7Ñ7Ñ7ó 	Ùð	ús(   ©B5 ½#C Â5
CÂ?CÃCÃC.Ã-C.c                óø   • [        U[        5      (       a  U$ SU;   a  UR                  5       nOUR                  U5      nU Vs/ s H)  o3R	                  5       (       d  M  UR	                  5       PM+     sn$ s  snf )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_listÚConfigHandler._parse_list2  s_   € ô �eœT×"Ñ"ØˆLà�5‹=Ø×$Ñ$Ó&‰Eà—K‘K 	Ó*ˆEá+0ÓBª5 %·K±K·M“�—‘–©5ÑBÐBùÒBs   ÁA7Á A7c                óÌ   • Sn0 nU R                  U5       HJ  nUR                  U5      u  pVnXb:w  a  [        SU 35      eUR                  5       X5R                  5       '   ML     U$ )z8Represents 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_dictÚConfigHandler._parse_dictF  sg   € ð ˆ	ØˆØ—O‘O EÖ*ˆDØ ŸN™N¨9Ó5‰MˆC�cØÓÜ!Ð$JÈ5È'Ð"RÓSÐSØ"%§)¡)£+ˆF—9‘9“;Óñ	 +ð ˆr2   c                ó,   • UR                  5       nUS;   $ )z9Represents value as boolean.

:param value:
:rtype: bool
)Ú1ÚtrueÚyes)Úlower©r’   rX   s     r0   Ú_parse_boolÚConfigHandler._parse_boolW  s   € ð —‘“ˆØÐ,Ñ,Ð,r2   c                ó   ^• U4S jnU$ )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                ó~   >• SnU R                  U5      (       a  [        ST S35      e[        R                  " U 5      $ )Núfile:z"Only strings are accepted for the z field, files are not accepted)rm   Ú
ValueErrorr   ÚStr)rX   Úexclude_directiverL   s     €r0   ÚparserÚ3ConfigHandler._exclude_files_parser.<locals>.parserm  sJ   ø€ Ø 'ÐØ×ÑÐ 1×2Ñ2Ü Ø8¸¸ð >-ð -óð ô —;’;˜uÓ%Ð%r2   r    )r’   rL   rÑ   s    ` r0   Ú_exclude_files_parserÚ#ConfigHandler._exclude_files_parsera  s   ø€ õ	&ð ˆr2   c                ó˜  • Sn[        U[        5      (       d  U$ UR                  U5      (       d  [        R                  " U5      $ U[        U5      S nUR                  S5       Vs/ s H  oUR                  5       PM     nnU R                  R                  U5        [        R                  " [        R                  " Xb5      5      $ s  snf )a  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Ï   rs   rµ   r¶   ra   rb   r   Ú
read_files)rŠ   rX   Úroot_dirÚinclude_directiveÚspecr9   Ú	filepathss          r0   Ú_parse_fileÚConfigHandler._parse_filex  s£   € ð $Ðä˜%¤×%Ñ%ØˆLà×ÑÐ 1×2Ñ2Ü—;’;˜uÓ%Ð%à”SÐ*Ó+Ð-Ð.ˆØ.2¯j©j¸¬oÓ>ªo d—Z‘Z–\©oˆ	Ð>Ø×Ñ×%Ñ% iÔ0ä�{Š{œ6×,Ò,¨YÓAÓBÐBùò ?s   Á'Cc                óú   • SnUR                  U5      (       d  [        R                  " U5      $ UR                  US5      nUR	                  U R
                  R                  5        [        R                  " XRU5      $ )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_attrÚConfigHandler._parse_attr“  sh   € ð !ˆØ×Ñ ×/Ñ/Ü—;’;˜uÓ%Ð%à—M‘M .°"Ó5ˆ	ð 	×Ñ˜4×1Ñ1×=Ñ=Ô>Ü×Ò 	¸ÓAÐAr2   c                ó   ^• U4S jnU$ )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                ó.   >• U nT H  nU" U5      nM     U$ r†   r    )rX   rp   ÚmethodÚparse_methodss      €r0   r\   Ú1ConfigHandler._get_parser_compound.<locals>.parse±  s"   ø€ ØˆFã'�Ù ›’ñ (ð ˆMr2   r    )r’   ré   r\   s    ` r0   Ú_get_parser_compoundÚ"ConfigHandler._get_parser_compound§  s   ø€ õ	ð ˆr2   c                óV   • 0 nUR                  5        H  u  nu  pVU" XF5      X4'   M     U$ )zÚ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_keyÚ-ConfigHandler._parse_section_to_dict_with_key»  s3   € ð ˆØ,×2Ñ2Ö4‰MˆC‘�!Ù& sÓ0ˆE‹Jñ 5àˆr2   Nc                óF   ^• T(       a  U4S jOS nU R                  X5      $ )zØ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                ó   >• T" U5      $ r†   r    )rð   Úvrï   s     €r0   r¢   Ú6ConfigHandler._parse_section_to_dict.<locals>.<lambda>Ô  s
   ø€ ™}¨QÔ/r2   c                ó   • U$ r†   r    )rð   rõ   s     r0   r¢   rö   Ô  s   € ÑUVr2   )rñ   )r’   rî   rï   rÑ   s     ` r0   Ú_parse_section_to_dictÚ$ConfigHandler._parse_section_to_dictÊ  s!   ø€ ö 5BÕ/ÉˆØ×2Ñ2°?ÓKÐKr2   c                ó®   • UR                  5        H/  u  nu  p4[        R                  " [        5         X@U'   SSS5        M1     g! , (       d  f       MC  = f)zAParses configuration file section.

:param dict section_options:
N)r�   Ú
contextlibÚsuppressr§   )rŠ   rî   rv   rð   rX   s        r0   Úparse_sectionÚConfigHandler.parse_section×  sB   € ð
 !0× 5Ñ 5Ö 7ÑˆD‘*�1Ü×$Ò$¤XÕ.à"�T‘
÷ /Ñ.ò !8ß.Ö.ús   ³AÁ
A	c                óô   • U R                   R                  5        HZ  u  pSnU(       a  SU 3n[        U SU 3R                  SS5      S5      nUc  [	        SU R
                   SU S35      eU" U5        M\     g)	zDParses 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\   ÚConfigHandler.parseá  s™   € ð
 .2¯]©]×-@Ñ-@Ö-BÑ)ˆLØˆNÞØ#$ \ NÐ!3�ä5<Øà Ð/Ð0×8Ñ8¸¸dÓCØó	6Ð!ð %Ñ,Ü!ðØ×+Ñ+Ð,¨A¨l¨^¸1ð>óð ñ
 " /Ö2ò% .Cr2   c                ó8   ^^^• [        T5      UUU4S j5       nU$ )zŠthis function will wrap around parameters that are deprecated

:param msg: deprecation message
:param func: function to be wrapped around
c                 óh   >• TR                  SS5        [        R                  " ST40 TD6  T" U 0 UD6$ )NÚ
stacklevelr   z Deprecated config in `setup.cfg`)Ú
setdefaultÚ_DeprecatedConfigrx   )ÚargsÚkwargsÚfuncÚkwr   s     €€€r0   Úconfig_handlerÚ@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_handlerÚ(ConfigHandler._deprecated_config_handlerú  s#   ú€ ô 
ˆt‹ö	)ó 
ð	)ð
 Ðr2   )ra   rd   r,   rˆ   rS   rK   )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__Ú__firstlineno__Ú__doc__Ú__annotations__r„   r‹   Úclassmethodr‡   Úpropertyr   rœ   r°   r¹   rÁ   rÉ   rÓ   rÜ   rä   rë   rñ   rø   rý   r\   r  Ú__static_attributes__r    r2   r0   r‚   r‚   å   s=  ‡ Ù;àÓðð
 )+€GÐ%Ó*ððàðð #ðð
 ;ðð 
ôð" ð*Ø'ð*à	3ó*ó ð*ð Øó
ó ó ð
ô-ð4 óCó ðCð& ñó ðð  ñ-ó ð-ð ñó ðô,Cô6Bð( ñó ðð& ñó ðð ó
Ló ð
Lô#ô3õ2r2   r‚   c                  ó”   ^ • \ rS rSrSrSSSSS.rSr S	\R                  4             SU 4S
 jjjr	\
SS j5       rS rSrU =r$ )r^   i
  r_   ÚurlÚdescriptionÚclassifiersÚ	platforms)Ú	home_pageÚsummaryÚ
classifierÚplatformFNc                ó>   >• [         TU ]  XX45        XPl        X`l        g r†   )Úsuperr‹   r]   rØ   )rŠ   rK   re   r,   rd   r]   rØ   rš   s          €r0   r‹   ÚConfigMetadataHandler.__init__  s    ø€ ô 	‰Ñ˜Ð.BÔVØ&ÔØ �r2   c                óN  • U R                  U R                  [        R                  5      nU R                  U R                  [        R
                  5      n[        U R                  U R                  S9nU R                  n0 S[        R                  _S[        R                  _S[        R                  _S[        R                  _SU_SU_SU_S	U_S
U R                  X15      _SU" S5      _SU_SU_SU_S[        R                  _SU R                  _S[        R                  _SU_$ )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œ   ÚConfigMetadataHandler.parsers'  sg  € ð !×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ÓSð
ð Ñ+¨IÓ6ð
ð Ð.ð
ð ˜:ð
ð  
ð
ð ,¬W¯[©[ð
ð �t×*Ñ*ð
ð  ”7—;‘;ð!
ð" Ð-ð#
ð 	
r2   c                ó:  • U R                  XR                  5      nX!:w  a  UR                  5       n [        U5        U$ [        R                  " U R                  XR                  U R                  5      5      $ ! [         a  n[        SU SU 35      UeSnAff = f)z;Parses `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>  Ú$ConfigMetadataHandler._parse_versionC  s�   € ð ×"Ñ" 5¯-©-Ó8ˆàÓØ—m‘m“oˆGðÜ˜Ô ð ˆNä�~Š~˜d×.Ñ.¨u×6FÑ6FÈÏÉÓVÓWÐWøô "ó Ü!Ø*¨5¨'ð 2,Ø,3¨9ð6óð ðûðús   ²A9 Á9
BÂBÂB©r]   rØ   )rK   r!   re   r#   r,   Úboolrd   r  r]   zdict | NonerØ   r  r  r  r  )r›   r  r  r  rT   r„   Ústrict_moder8   Úcurdirr‹   r  rœ   r>  r   Ú__classcell__©rš   s   @r0   r^   r^   
  s£   ø† Ø€Nð Ø Ø#Øñ	€Gð €Kðð $(Ø#%§9¡9ð!à(ð!ð #ð!ð #ð	!ð
 ;ð!ð !ð!ð !ð!ð 
÷!ð !ð ó
ó ð
÷6Xð Xr2   r^   c                  óÂ   ^ • \ rS rSrSr          SU 4S jjr\S 5       rS rSS jr	\
SS j5       rS rS	 rS
 rSS jrS rSS jrSS jrSS jrSS jrSrU =r$ )r[   i]  re   c                óV   >• [         TU ]  XX45        UR                  U l        0 U l        g r†   )r+  r‹   r`   rØ   r]   )rŠ   rK   re   r,   rd   rš   s        €r0   r‹   ÚConfigOptionsHandler.__init__`  s*   ø€ ô 	‰Ñ˜Ð.BÔVØ"×+Ñ+ˆŒØ+-ˆÕr2   c                ó"   • U R                  USS9$ )NÚ;)r·   )r¹   rÈ   s     r0   Ú_parse_list_semicolonÚ*ConfigOptionsHandler._parse_list_semicolonk  s   € à�‰˜u°ˆÐ4Ð4r2   c                ó4   • U R                  XR                  S9$ )Nr.  )rÜ   rØ   )rŠ   rX   s     r0   Ú_parse_file_in_rootÚ(ConfigOptionsHandler._parse_file_in_rooto  s   € Ø×Ñ ·±ÐÐ>Ð>r2   c                ó”   • U R                  U R                  U5      5      n[        XU5        [        R                  " S U 5       5      $ )Nc              3  óT   #   • U  H  oR                  S 5      (       a  M  Uv •  M      g7f)Ú#Nrl   )rn   r¾   s     r0   rq   Ú@ConfigOptionsHandler._parse_requirements_list.<locals>.<genexpr>x  s   é € ÐPªV T¿?¹?È3×;OŸD™DªVùs   ‚(Ÿ	()rQ  rT  r€   r   r<  )rŠ   r{   rX   rp   s       r0   Ú_parse_requirements_listÚ-ConfigOptionsHandler._parse_requirements_listr  s>   € à×+Ñ+¨D×,DÑ,DÀUÓ,KÓLˆÜ-¨e¸FÔCô �|Š|ÑP©VÓPÓPÐPr2   c                ó   • U R                   nU R                  nU R                  nUUU R                  UUUU R	                  US5      [        U R                  S5      U R                  U R                  U R                  U[        R                  U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   rZ  rQ  Ú_parse_packagesrT  r   ÚSpecifierSet)rŠ   Ú
parse_listÚ
parse_boolÚparse_cmdclasss       r0   rœ   ÚConfigOptionsHandler.parsers{  s¢   € ð ×%Ñ%ˆ
Ø×%Ñ%ˆ
Ø×-Ñ-ˆð #Ø$.Ø×+Ñ+Ø!Ø)Ø *Ø"&×"AÑ"AØðHó#ô !(Ø×-Ñ-Ð/Aó!ð #×8Ñ8Ø×,Ñ,Ø ×4Ñ4Ø$Ü&×3Ñ3Ø&ñ+
ð 	
r2   c                óŽ   • U R                   R                  n[        R                  " U R	                  U5      X R
                  5      $ r†   )rd   r]   r   ri  rÁ   rØ   )rŠ   rX   r]   s      r0   rj  Ú$ConfigOptionsHandler._parse_cmdclassš  s3   € Ø×,Ñ,×8Ñ8ˆÜ�Š˜t×/Ñ/°Ó6¸Ç]Á]ÓSÐSr2   c                ó,  • SS/nUR                  5       nX2;  a  U R                  U5      $ U R                  U R                  R	                  S0 5      5      nUR                  X2S   :H  U R                  U R                  S9  [        R                  " S0 UD6$ )z<Parses `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   rk  Ú$ConfigOptionsHandler._parse_packagesž  s�   € ð #Ð$5Ð6ˆØŸ™›ˆàÓ/Ø×#Ñ# EÓ*Ð*ð ×7Ñ7Ø�M‰M×Ñ˜o¨rÓ2ó
ˆð 	×ÑØ%¸Ñ);Ñ;Ø—]‘]Ø!×-Ñ-ð 	ñ 	
ô ×#Ò#Ñ2 kÑ2Ð2r2   c                óð   • U R                  XR                  5      n/ SQnUR                  5        VVs0 s H  u  pEXC;   d  M  U(       d  M  XE_M     nnnUR                  S5      nUb  US   US'   U$ s  snnf )z„Parses `packages.find` configuration file section.

To be used in conjunction with _parse_packages().

:param dict section_options:
)ÚwhereÚincludeÚexcluder}  r   )rø   r¹   r�   r¥   )rŠ   rî   Úsection_dataÚ
valid_keysÚkrõ   rz  r}  s           r0   rv  Ú1ConfigOptionsHandler.parse_section_packages__find·  s{   € ð ×2Ñ2°?×DTÑDTÓUˆâ4ˆ
Ø(4×(:Ñ(:Ô(<ÔVÒ(<¡ ÀÁ“tÔTU“t�q’tÑ(<ˆÑVà—‘ Ó(ˆØÑØ#(¨¡8ˆK˜Ñ àÐùó Ws   ³A2ÁA2ÁA2c                óB   • U R                  XR                  5      nX S'   g)zPParses `entry_points` configuration file section.

:param dict section_options:
rf  N)rø   r¹   ©rŠ   rî   rp   s      r0   Úparse_section_entry_pointsÚ/ConfigOptionsHandler.parse_section_entry_pointsÉ  s"   € ð
 ×,Ñ,¨_×>NÑ>NÓOˆØ%ˆ^Òr2   c                ód   • U R                  XR                  5      n[        R                  " U5      $ r†   )rø   r¹   r   Úcanonic_package_data)rŠ   rî   Úpackage_datas      r0   Ú_parse_package_dataÚ(ConfigOptionsHandler._parse_package_dataÑ  s)   € Ø×2Ñ2°?×DTÑDTÓUˆÜ×*Ò*¨<Ó8Ð8r2   c                ó,   • U R                  U5      U S'   g)zPParses `package_data` configuration file section.

:param dict section_options:
rŠ  N©r‹  ©rŠ   rî   s     r0   Úparse_section_package_dataÚ/ConfigOptionsHandler.parse_section_package_dataÕ  s   € ð
  $×7Ñ7¸ÓHˆˆ^Òr2   c                ó,   • U R                  U5      U S'   g)zXParses `exclude_package_data` configuration file section.

:param dict section_options:
Úexclude_package_dataNrŽ  r�  s     r0   Ú"parse_section_exclude_package_dataÚ7ConfigOptionsHandler.parse_section_exclude_package_dataÜ  s   € ð
 (,×'?Ñ'?ÀÓ'PˆÐ#Ò$r2   c                ód   ^ • T R                  UU 4S j5      n[        R                  " U5      T S'   g)zRParses `extras_require` configuration file section.

:param dict section_options:
c                ó0   >• TR                  SU  S3U5      $ )Nzextras_require[r  )rZ  )r‚  rõ   rŠ   s     €r0   r¢   ÚCConfigOptionsHandler.parse_section_extras_require.<locals>.<lambda>ê  s   ø€ ˜×6Ñ6¸ÈÈÈ1Ð7MÈqÔQr2   Úextras_requireN)rñ   r   r=  r…  s   `  r0   Úparse_section_extras_requireÚ1ConfigOptionsHandler.parse_section_extras_requireã  s1   ø€ ð
 ×5Ñ5ØÜQó
ˆô
 ")§¢¨fÓ!5ˆÐÒr2   c                ó€   • U R                  XR                  5      n[        R                  " X R                  5      U S'   g)zNParses `data_files` configuration file section.

:param dict section_options:
Ú
data_filesN)rø   r¹   r   Úcanonic_data_filesrØ   r…  s      r0   Úparse_section_data_filesÚ-ConfigOptionsHandler.parse_section_data_filesð  s3   € ð
 ×,Ñ,¨_×>NÑ>NÓOˆÜ#×6Ò6°v¿}¹}ÓMˆˆ\Òr2   rF  )
rK   r    re   r#   r,   rG  rd   r  r  r  )r{   rA   rX   rA   r  r  )r›   r  r  r  rT   r‹   r  rQ  rT  rZ  r  rœ   rj  rk  rv  r†  r‹  r�  r”  rš  rŸ  r   rJ  rK  s   @r0   r[   r[   ]  s§   ø† Ø€Nð	.à ð	.ð #ð	.ð #ð		.ð
 ;ð	.ð 
÷	.ð ñ5ó ð5ò?ôQð ó
ó ð
ò<Tò3ò2ô$&ò9ôIôQô
6÷Nò Nr2   r[   c                  ó0   • \ rS rSrSrSrSr\S 5       rSr	g)rw   iù  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                ój   • SU R                    3nU R                  U R                  U R                  X!S9$ )Nz%https://setuptools.pypa.io/en/latest/)Úsee_urlÚformat_args)Ú	_SEE_DOCSÚ_formatÚ_SUMMARYÚ_DETAILS)r’   r  Údocss      r0   rz   Ú_AmbiguousMarker.message  s/   € à6°s·}±}°oÐFˆØ�{‰{˜3Ÿ<™<¨¯©¸tˆ{ÐTÐTr2   r    N)
r›   r  r  r  r§  r¨  r¥  r  rz   r   r    r2   r0   rw   rw   ù  s+   † Ø.€Hð€Hð :€Ið ñUó óUr2   rw   c                  ó   • \ rS rSrSrSrg)r
  i  z!userguide/declarative_config.htmlr    N)r›   r  r  r  r¥  r   r    r2   r0   r
  r
    s   † Ø3ƒIr2   r
  )FF)r*   r   r+   rG  r,   rG  r  rR   )r-   r    r*   r   r  r    )r    F)
r-   r    r*   r   rE   zIterable[StrPath]r,   rG  r  ú2tuple[ConfigMetadataHandler, ConfigOptionsHandler])rK   z#Distribution | DistributionMetadatarL   rA   )r/   zKIterable[ConfigHandler[Distribution] | ConfigHandler[DistributionMetadata]]r  rR   )F)rc   r    rC   r#   r,   rG  r  r¬  )r{   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   rt   Ú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[   rw   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   