ó
    Â›‘hÏg  ã                  ó~  • % 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	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\/\4   4   r1S\2S'    \.\/\14   r3S\2S'    \" SSS5      r4 S,       S-S jjr5S.S jr6  S/         S0S jjr7S1S jr8    S2S jr9 S3       S4S  jjr:S5S! jr; " S" S#\\4   5      r< " S$ S%\<S   5      r= " S& S'\<S   5      r> " S( S)\&5      r? " S* S+\&5      r@g)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                ó|   • 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          Ú^C:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\setuptools/config/setupcfg.pyÚread_configurationr0   2   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     r/   Úapply_configurationr4   L   s   € ô ˆ4ÔØ×ÑÔØ€Kr1   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%   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                ó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        r/   Ú_get_optionrO   t   s4   € ð ˜˜�,€KÜ×$Ò$¤W¨jÓ>€LÜ�Z¨lÓ;€FÙ‹8€Or1   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_optionsrO   rJ   Úsection_prefix)r.   Úconfig_dictÚhandlerÚoptionÚvalues        r/   r(   r(   €   sU   € ô $¤DÓ)€KãˆØ×)Ô)ˆFÜ × 2Ñ 2°FÓ;ˆEØ:?˜×.Ñ.Ñ/°Ó7ó *ñ ð
 Ðr1   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)ÚdistributionrB   r+   Úensure_discoveredÚoptionsÚmetas         r/   rA   rA   –   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     €r/   Ú	<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_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Ñ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	 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.r@   rS   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+   rJ   rQ   Ú_section_optionsÚsectionsrR   rc   Úsetr@   r`   )ÚselfrJ   rd   r+   rc   s        r/   Ú__init__ÚConfigHandler.__init__ô   sG   € ð %9Ô!Ø",ŒÜ˜T×2Ñ2°7Ó;Ó<ˆŒØ&(ˆÔØ!2ÔÜ!$¤S¢£ˆÔð	r1   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Ú	partitionrS   Úlstrip)Úclsrd   Ú	full_namerW   ÚpreÚ_sepru   s          r/   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    r/   ÚparsersÚConfigHandler.parsers  s'   € ô "Ø�~‰~×&Ñ&Ð'Ð'FÐGó
ð 	
r1   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    r/   Ú<lambda>Ú+ConfigHandler.__setitem__.<locals>.<lambda>&  s   € ¹Qr1   Úset_)rJ   rƒ   ÚgetrI   ÚAttributeErrorÚKeyErrorr›   Ú	Exceptionr+   rH   r   Ú__setattr__rR   Úappend)	r‰   Úoption_namerW   rJ   Úcurrent_valueÚero   Úsimple_setterÚsetters	            r/   Ú__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
rg   )Ú
isinstancer?   Ú
splitlinesÚsplitÚstrip)r‘   rW   Ú	separatorÚchunks       r/   Ú_parse_listÚConfigHandler._parse_list0  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‘   rW   r¶   ÚresultÚlinerK   ÚsepÚvals           r/   Ú_parse_dictÚConfigHandler._parse_dictD  sg   € ð ˆ	ØˆØ—O‘O EÖ*ˆDØ ŸN™N¨9Ó5‰MˆC�cØÓÜ!Ð$JÈ5È'Ð"RÓSÐSØ"%§)¡)£+ˆF—9‘9“;Óñ	 +ð ˆr1   c                ó,   • UR                  5       nUS;   $ )z9Represents value as boolean.

:param value:
:rtype: bool
)Ú1ÚtrueÚyes)Úlower©r‘   rW   s     r/   Ú_parse_boolÚConfigHandler._parse_boolU  s   € ð —‘“ˆØÐ,Ñ,Ð,r1   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)rl   Ú
ValueErrorr   ÚStr)rW   Úexclude_directiverK   s     €r/   ÚparserÚ3ConfigHandler._exclude_files_parser.<locals>.parserk  sJ   ø€ Ø 'ÐØ×ÑÐ 1×2Ñ2Ü Ø8¸¸ð >-ð -óð ô —;’;˜uÓ%Ð%r1   rŸ   )r‘   rK   rÐ   s    ` r/   Ú_exclude_files_parserÚ#ConfigHandler._exclude_files_parser_  s   ø€ õ	&ð ˆr1   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²   r@   rl   r   rÎ   rr   r´   rµ   r`   ra   r   Ú
read_files)r‰   rW   Úroot_dirÚinclude_directiveÚspecr8   Ú	filepathss          r/   Ú_parse_fileÚConfigHandler._parse_filev  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:Ú )	rl   r   rÎ   Úreplacera   rc   r\   r   Ú	read_attr)r‰   rW   r\   r×   Úattr_directiveÚ	attr_descs         r/   Ú_parse_attrÚConfigHandler._parse_attr‘  sh   € ð !ˆØ×Ñ ×/Ñ/Ü—;’;˜uÓ%Ð%à—M‘M .°"Ó5ˆ	ð 	×Ñ˜4×1Ñ1×=Ñ=Ô>Ü×Ò 	¸ÓAÐAr1   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Ÿ   )rW   ro   ÚmethodÚparse_methodss      €r/   r[   Ú1ConfigHandler._get_parser_compound.<locals>.parse¯  s"   ø€ ØˆFã'�Ù ›’ñ (ð ˆMr1   rŸ   )r‘   rè   r[   s    ` r/   Ú_get_parser_compoundÚ"ConfigHandler._get_parser_compound¥  s   ø€ õ	ð ˆr1   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_parserrW   rK   Ú_r¿   s          r/   Ú_parse_section_to_dict_with_keyÚ-ConfigHandler._parse_section_to_dict_with_key¹  s3   € ð ˆØ,×2Ñ2Ö4‰MˆC‘�!Ù& sÓ0ˆE‹Jñ 5àˆr1   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     €r/   r¡   Ú6ConfigHandler._parse_section_to_dict.<locals>.<lambda>Ò  s
   ø€ ™}¨QÔ/r1   c                ó   • U$ r…   rŸ   )rï   rô   s     r/   r¡   rõ   Ò  s   € ÑUVr1   )rð   )r‘   rí   rî   rÐ   s     ` r/   Ú_parse_section_to_dictÚ$ConfigHandler._parse_section_to_dictÈ  s!   ø€ ö 5BÕ/ÉˆØ×2Ñ2°?ÓKÐKr1   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í   ru   rï   rW   s        r/   Ú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Ž   rI   rß   r   rS   )r‰   Úsection_namerí   Úmethod_postfixÚsection_parser_methods        r/   r[   ÚConfigHandler.parseß  s™   € ð
 .2¯]©]×-@Ñ-@Ö-BÑ)ˆLØˆNÞØ#$ \ NÐ!3�ä5<Øà Ð/Ð0×8Ñ8¸¸dÓCØó	6Ð!ð %Ñ,Ü!ðØ×+Ñ+Ð,¨A¨l¨^¸1ð>óð ñ
 " /Ö2ò% .Cr1   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Ú_DeprecatedConfigrw   )ÚargsÚkwargsÚfuncÚkwr~   s     €€€r/   Úconfig_handlerÚ@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_handlerÚ(ConfigHandler._deprecated_config_handlerø  s#   ú€ ô 
ˆt‹ö	)ó 
ð	)ð
 Ðr1   )r`   rc   r+   r‡   rR   rJ   )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__Ú__firstlineno__Ú__doc__Ú__annotations__rƒ   rŠ   Úclassmethodr†   Úpropertyr›   r¯   r¸   rÀ   rÈ   rÒ   rÛ   rã   rê   rð   r÷   rü   r[   r  Ú__static_attributes__rŸ   r1   r/   r�   r�   ä   s5  ‡ Ù;àÓðð
 )+€GÐ%Ó*ððàðð #ðð
 ;ðð 
ôð" ð*Ø'ð*à	3ó*ó ð*ð ñ
ó ð
ô-ð4 óCó ðCð& ñó ðð  ñ-ó ð-ð ñó ðô,Cô6Bð( ñó ðð& ñó ðð ó
Ló ð
Lô#ô3õ2r1   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 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‰   rJ   rd   r+   rc   r\   r×   r™   s          €r/   rŠ   ÚConfigMetadataHandler.__init__  s    ø€ ô 	‰Ñ˜Ð.BÔVØ&ÔØ �r1   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        r/   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—;‘;ð!
ð" Ð-ð#
ð 	
r1   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   r8  rã   r\   )r‰   rW   r8  r¬   s       r/   r<  Ú$ConfigMetadataHandler._parse_versionA  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×   )rJ   r    rd   r"   r+   Úboolrc   r  r\   zdict | Noner×   r  r  r  )rš   r  r  r  rS   rƒ   Ústrict_moder7   ÚcurdirrŠ   r  r›   r<  r  Ú__classcell__©r™   s   @r/   r]   r]     s£   ø† Ø€Nð Ø Ø#Øñ	€Gð €Kðð $(Ø#%§9¡9ð!à(ð!ð #ð!ð #ð	!ð
 ;ð!ð !ð!ð !ð!ð 
÷!ð !ð ñ
ó ð
÷6Xð Xr1   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 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$ )rZ   i[  rd   c                óV   >• [         TU ]  XX45        UR                  U l        0 U l        g r…   )r)  rŠ   r_   r×   r\   )r‰   rJ   rd   r+   rc   r™   s        €r/   rŠ   ÚConfigOptionsHandler.__init__^  s*   ø€ ô 	‰Ñ˜Ð.BÔVØ"×+Ñ+ˆŒØ+-ˆÕr1   c                ó"   • U R                  USS9$ )NÚ;)r¶   )r¸   rÇ   s     r/   Ú_parse_list_semicolonÚ*ConfigOptionsHandler._parse_list_semicoloni  s   € à�‰˜u°ˆÐ4Ð4r1   c                ó4   • U R                  XR                  S9$ )Nr,  )rÛ   r×   )r‰   rW   s     r/   Ú_parse_file_in_rootÚ(ConfigOptionsHandler._parse_file_in_rootm  s   € Ø×Ñ ·±ÐÐ>Ð>r1   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)Ú#Nrk   )rm   r½   s     r/   rp   Ú@ConfigOptionsHandler._parse_requirements_list.<locals>.<genexpr>v  s   é € ÐPªV T¿?¹?È3×;OŸD™DªVùs   ‚(Ÿ	()rO  rR  r   r   r:  )r‰   rz   rW   ro   s       r/   Ú_parse_requirements_listÚ-ConfigOptionsHandler._parse_requirements_listp  s>   € à×+Ñ+¨D×,DÑ,DÀUÓ,KÓLˆÜ-¨e¸FÔCô �|Š|ÑP©VÓPÓPÐPr1   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   rX  rO  Ú_parse_packagesrR  r   ÚSpecifierSet)r‰   Ú
parse_listÚ
parse_boolÚparse_cmdclasss       r/   r›   ÚConfigOptionsHandler.parsersy  s¢   € ð ×%Ñ%ˆ
Ø×%Ñ%ˆ
Ø×-Ñ-ˆð #Ø$.Ø×+Ñ+Ø!Ø)Ø *Ø"&×"AÑ"AØðHó#ô !(Ø×-Ñ-Ð/Aó!ð #×8Ñ8Ø×,Ñ,Ø ×4Ñ4Ø$Ü&×3Ñ3Ø&ñ+
ð 	
r1   c                óŽ   • U R                   R                  n[        R                  " U R	                  U5      X R
                  5      $ r…   )rc   r\   r   rg  rÀ   r×   )r‰   rW   r\   s      r/   rh  Ú$ConfigOptionsHandler._parse_cmdclass˜  s3   € Ø×,Ñ,×8Ñ8ˆÜ�Š˜t×/Ñ/°Ó6¸Ç]Á]ÓSÐSr1   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¤   ra   r×   r\   r   Úfind_packages)r‰   rW   Úfind_directivesÚtrimmed_valueÚfind_kwargss        r/   ri  Ú$ConfigOptionsHandler._parse_packagesœ  s�   € ð #Ð$5Ð6ˆØŸ™›ˆàÓ/Ø×#Ñ# EÓ*Ð*ð ×7Ñ7Ø�M‰M×Ñ˜o¨rÓ2ó
ˆð 	×ÑØ%¸Ñ);Ñ;Ø—]‘]Ø!×-Ñ-ð 	ñ 	
ô ×#Ò#Ñ2 kÑ2Ð2r1   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ô   rx  r{  s           r/   rt  Ú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:
rd  N)r÷   r¸   ©r‰   rí   ro   s      r/   Úparse_section_entry_pointsÚ/ConfigOptionsHandler.parse_section_entry_pointsÇ  s"   € ð
 ×,Ñ,¨_×>NÑ>NÓOˆØ%ˆ^Òr1   c                ód   • U R                  XR                  5      n[        R                  " U5      $ r…   )r÷   r¸   r   Úcanonic_package_data)r‰   rí   Úpackage_datas      r/   Ú_parse_package_dataÚ(ConfigOptionsHandler._parse_package_dataÏ  s)   € Ø×2Ñ2°?×DTÑDTÓUˆÜ×*Ò*¨<Ó8Ð8r1   c                ó,   • U R                  U5      U S'   g)zPParses `package_data` configuration file section.

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

:param dict section_options:
Úexclude_package_dataNrŒ  r�  s     r/   Ú"parse_section_exclude_package_dataÚ7ConfigOptionsHandler.parse_section_exclude_package_dataÚ  s   € ð
 (,×'?Ñ'?ÀÓ'PˆÐ#Ò$r1   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   )rX  )r€  rô   r‰   s     €r/   r¡   ÚCConfigOptionsHandler.parse_section_extras_require.<locals>.<lambda>è  s   ø€ ˜×6Ñ6¸ÈÈÈ1Ð7MÈqÔQr1   Úextras_requireN)rð   r   r;  rƒ  s   `  r/   Úparse_section_extras_requireÚ1ConfigOptionsHandler.parse_section_extras_requireá  s1   ø€ ð
 ×5Ñ5ØÜQó
ˆô
 ")§¢¨fÓ!5ˆÐÒr1   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      r/   Úparse_section_data_filesÚ-ConfigOptionsHandler.parse_section_data_filesî  s3   € ð
 ×,Ñ,¨_×>NÑ>NÓOˆÜ#×6Ò6°v¿}¹}ÓMˆˆ\Òr1   rD  )
rJ   r   rd   r"   r+   rE  rc   r  r  r  )rz   r@   rW   r@   r  )rš   r  r  r  rS   rŠ   r  rO  rR  rX  r  r›   rh  ri  rt  r„  r‰  rŽ  r’  r˜  r�  r  rH  rI  s   @r/   rZ   rZ   [  s§   ø† Ø€Nð	.à ð	.ð #ð	.ð #ð		.ð
 ;ð	.ð 
÷	.ð ñ5ó ð5ò?ôQð ñ
ó ð
ò<Tò3ò2ô$&ò9ôIôQô
6÷Nò Nr1   rZ   c                  ó0   • \ rS rSrSrSrSr\S 5       rSr	g)rv   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      r/   ry   Ú_AmbiguousMarker.message  s/   € à6°s·}±}°oÐFˆØ�{‰{˜3Ÿ<™<¨¯©¸tˆ{ÐTÐTr1   rŸ   N)
rš   r  r  r  r¥  r¦  r£  r  ry   r  rŸ   r1   r/   rv   rv   ÷  s+   † Ø.€Hð€Hð :€Ið ñUó óUr1   rv   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Ÿ   r1   r/   r	  r	    s   † Ø3ƒIr1   r	  )FF)r)   r   r*   rE  r+   rE  r  rQ   )r,   r   r)   r   r  r   )rŸ   F)
r,   r   r)   r   rD   zIterable[StrPath]r+   rE  r  ú2tuple[ConfigMetadataHandler, ConfigOptionsHandler])rJ   z#Distribution | DistributionMetadatarK   r@   )r.   zKIterable[ConfigHandler[Distribution] | ConfigHandler[DistributionMetadata]]r  rQ   )F)rb   r   rB   r"   r+   rE  r  rª  )rz   r@   r{   r@   ro   r?   )Ar  Ú
__future__r   rú   rH   r7   Ú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    rQ   r@   Útupler!   r  r"   r#   r0   r4   r'   rO   r(   rA   r   r�   r]   rZ   rv   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   