ó
    áÅŸgRP  ã                  ó¨  • S SK Jr  S SKrS SKJr  S SKrS SKrS SKJr  S SKJr  S SKJ	r	  S SKJ
r
  S SKJr  S S	KJr  S S
KJr  S SKJr  S SKJr  S SKrS SKJr  S SKJr  Sr " S S5      r\" 5       r\
 " S S5      5       r    SS jr " S S\5      r " S S5      r " S S5      r " S S\R>                  5      r  " S S\RB                  5      r"g) é    )ÚannotationsN)Úgettext)ÚAny)ÚCallable)Úcast)Úfinal)ÚList)ÚLiteral)ÚMapping)ÚNoReturn)ÚSequence)Ú
UsageError)Úcheck_ispytestÚfile_or_dirc                  ó   • \ rS rSrSS jrSrg)ÚNotSeté   c                ó   • g)Nz<notset>© ©Úselfs    ÚZ/var/www/blue/EV-Temp_rev04/venv/lib/python3.13/site-packages/_pytest/config/argparsing.pyÚ__repr__ÚNotSet.__repr__   s   € Øó    r   N©ÚreturnÚstr)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ú__static_attributes__r   r   r   r   r      s   † ÷r   r   c                  ó  • \ rS rSr% SrSrS\S'     SSS.       SS jjjrSS	 jr S       SS
 jjr	SS jr
 S     SS jjrSS jr S       SS jjr S     SS jjr S     SS jjrS\4         SS jjrSrg)ÚParseré"   z¸Parser for command line arguments and ini-file values.

:ivar extra_info: Dict of generic param -> value to display in case
    there's an error processing the command line arguments.
Nú
str | NoneÚprogF©Ú	_ispytestc               óŠ   • [        U5        [        SU SS9U l        / U l        X l        Xl        0 U l        / U l        0 U l        g )NzCustom optionsT©Úparserr*   )	r   ÚOptionGroupÚ
_anonymousÚ_groupsÚ_processoptÚ_usageÚ_inidictÚ	_ininamesÚ
extra_info)r   ÚusageÚ
processoptr*   s       r   Ú__init__ÚParser.__init__,   sD   € ô 	�yÔ!Ü%Ð&6¸tÈtÑTˆŒØ*,ˆŒØ%ÔØŒØ@BˆŒØ$&ˆŒØ*,ˆ�r   c                ón   • U R                   (       a$  UR                  (       a  U R                  U5        g g g ©N)r1   Údest)r   Úoptions     r   ÚprocessoptionÚParser.processoption<   s*   € Ø××Ø�{�{Ø× Ñ  Õ(ð ð r   c                ó  • U R                    H  nUR                  U:X  d  M  Us  $    [        XU SS9nSn[        U R                   5       H  u  pVUR                  U:X  d  M    O   U R                   R	                  US-   U5        U$ )a»  Get (or create) a named option Group.

:param name: Name of the option group.
:param description: Long description for --help output.
:param after: Name of another group, used for ordering --help output.
:returns: The option group.

The returned group object has an ``addoption`` method with the same
signature as :func:`parser.addoption <pytest.Parser.addoption>` but
will be shown in the respective group in the output of
``pytest --help``.
Tr,   r   é   )r0   Únamer.   Ú	enumerateÚinsert)r   rB   ÚdescriptionÚafterÚgroupÚiÚgrps          r   ÚgetgroupÚParser.getgroupA   s{   € ð —\”\ˆEØ�z‰z˜TÕ!Ø’ñ "ô ˜D°dÀdÑKˆØˆÜ §¡Ö-‰FˆAØ�x‰x˜5Õ Ùñ .ð 	�‰×Ñ˜A ™E 5Ô)Øˆr   c                ó<   • U R                   R                  " U0 UD6  g)aÎ  Register a command line option.

:param opts:
    Option names, can be short or long options.
:param attrs:
    Same attributes as the argparse library's :meth:`add_argument()
    <argparse.ArgumentParser.add_argument>` function accepts.

After command line parsing, options are available on the pytest config
object via ``config.option.NAME`` where ``NAME`` is usually set
by passing a ``dest`` attribute, for example
``addoption("--long", dest="NAME", ...)``.
N)r/   Ú	addoption)r   ÚoptsÚattrss      r   rM   ÚParser.addoption[   s   € ð 	�‰×!Ò! 4Ð1¨5Ó1r   c                óâ   • SSK Jn  U R                  5       U l        U" U R                  5        U Vs/ sH  n[        R
                  " U5      PM     nnU R                  R                  XRS9$ s  snf )Nr   )Útry_argcomplete©Ú	namespace)Ú_pytest._argcompleterR   Ú
_getparserÚ	optparserÚosÚfspathÚ
parse_args)r   ÚargsrT   rR   ÚxÚstrargss         r   ÚparseÚParser.parsek   sZ   € õ
 	9àŸ™Ó*ˆŒÙ˜Ÿ™Ô'Ù)-Ó.© A”2—9’9˜Q–<©ˆÐ.Ø�~‰~×(Ñ(¨Ð(ÐFÐFùò /s   ²A,c                óØ  • SSK Jn  [        X R                  U R                  S9n/ U R
                  QU R                  PnU H‹  nUR                  (       d  M  UR                  =(       d    UR                  nUR                  U5      nUR                   H5  nUR                  5       nUR                  5       n	UR                  " U0 U	D6  M7     M�     UR                  [        SS9n
Xl        U$ )Nr   )Úfilescompleter)r(   Ú*)Únargs)rU   ra   ÚMyOptionParserr5   r(   r0   r/   ÚoptionsrE   rB   Úadd_argument_groupÚnamesrO   Úadd_argumentÚFILE_OR_DIRÚ	completer)r   ra   rW   ÚgroupsrG   ÚdescÚarggroupr=   ÚnÚaÚfile_or_dir_args              r   rV   ÚParser._getparserw   sÃ   € Ý7ä" 4¯©¸t¿y¹yÑIˆ	Ø1�4—<‘<Ð1 §¡Ð1ˆÛˆEØ�}�}‰}Ø×(Ñ(×6¨E¯J©J�Ø$×7Ñ7¸Ó=�Ø#Ÿmœm�FØŸ™›�AØŸ™›�AØ×)Ò)¨1Ð2°Ô2ó ,ñ	 ð $×0Ñ0´ÀCÐ0ÐHˆð %3Ô!ØÐr   c                óÈ   • U R                  XS9nUR                  R                  5        H  u  pV[        X%U5        M     [	        [
        [           [        U[        5      5      $ )NrS   )	r^   Ú__dict__ÚitemsÚsetattrr   r	   r   Úgetattrri   )r   r[   r=   rT   ÚparsedoptionrB   Úvalues          r   Úparse_setoptionÚParser.parse_setoptionŠ   sQ   € ð —z‘z $�zÐ<ˆØ'×0Ñ0×6Ñ6Ö8‰KˆDÜ�F %Ö(ñ 9ä”Dœ‘Iœw |´[ÓAÓBÐBr   c                ó&   • U R                  XS9S   $ )zRParse the known arguments at this point.

:returns: An argparse namespace object.
rS   r   )Úparse_known_and_unknown_args)r   r[   rT   s      r   Úparse_known_argsÚParser.parse_known_args•   s   € ð ×0Ñ0°Ð0ÐKÈAÑNÐNr   c                ó”   • U R                  5       nU Vs/ sH  n[        R                  " U5      PM     nnUR                  XRS9$ s  snf )zÛParse the known arguments at this point, and also return the
remaining unknown arguments.

:returns:
    A tuple containing an argparse namespace object for the known
    arguments, and a list of the unknown arguments.
rS   )rV   rX   rY   r}   )r   r[   rT   rW   r\   r]   s         r   r|   Ú#Parser.parse_known_and_unknown_args    sE   € ð —O‘OÓ%ˆ	Ù)-Ó.© A”2—9’9˜Q–<©ˆÐ.Ø×)Ñ)¨'Ð)ÐGÐGùò /s   •Ac                ó”   • US;   d   eU[         L a  [        U5      nX#U4U R                  U'   U R                  R	                  U5        g)aš  Register an ini-file option.

:param name:
    Name of the ini-variable.
:param type:
    Type of the variable. Can be:

        * ``string``: a string
        * ``bool``: a boolean
        * ``args``: a list of strings, separated as in a shell
        * ``linelist``: a list of strings, separated by line breaks
        * ``paths``: a list of :class:`pathlib.Path`, separated as in a shell
        * ``pathlist``: a list of ``py.path``, separated as in a shell

    For ``paths`` and ``pathlist`` types, they are considered relative to the ini-file.
    In case the execution is happening without an ini-file defined,
    they will be considered relative to the current working directory (for example with ``--override-ini``).

    .. versionadded:: 7.0
        The ``paths`` variable type.

    .. versionadded:: 8.1
        Use the current working directory to resolve ``paths`` and ``pathlist`` in the absence of an ini-file.

    Defaults to ``string`` if ``None`` or not passed.
:param default:
    Default value if no ini-file option exists but is queried.

The value of ini-variables can be retrieved via a call to
:py:func:`config.getini(name) <pytest.Config.getini>`.
)NÚstringÚpathsÚpathlistr[   ÚlinelistÚboolN)ÚNOT_SETÚget_ini_default_for_typer3   r4   Úappend)r   rB   ÚhelpÚtypeÚdefaults        r   ÚaddiniÚParser.addini°   sK   € ðN ÐXÓXÐXÐXØ”gÒÜ.¨tÓ4ˆGà#¨7Ð3ˆ�‰�dÑØ�‰×Ñ˜dÕ#r   )r/   r0   r3   r4   r1   r2   r5   rW   ©NN)r6   r'   r7   z!Callable[[Argument], None] | Noner*   r†   r   ÚNone)r=   ÚArgumentr   r�   ©Ú N)rB   r   rE   r   rF   r'   r   r.   ©rN   r   rO   r   r   r�   r;   )r[   ú Sequence[str | os.PathLike[str]]rT   úargparse.Namespace | Noner   úargparse.Namespace)r   rd   )r[   r•   r=   r—   rT   r–   r   ú	list[str])r[   r•   rT   r–   r   z$tuple[argparse.Namespace, list[str]])
rB   r   rŠ   r   r‹   úILiteral['string', 'paths', 'pathlist', 'args', 'linelist', 'bool'] | NonerŒ   r   r   r�   )r   r    r!   r"   Ú__doc__r(   Ú__annotations__r8   r>   rJ   rM   r^   rV   ry   r}   r|   r‡   r�   r#   r   r   r   r%   r%   "   s€  ‡ ñð €Dˆ*Óð !Ø8<ð-ð
  ñ-àð-ð 6ð-ð
 ð-ð 
ö-ô )ð EIðØðØ&)ðØ7Aðà	õô42ð& 04ð
Gà.ð
Gð -ð
Gð 
õ	
Gôð. 04ð		Cà.ð	Cð #ð	Cð -ð		Cð
 
õ	Cð 04ð	Oà.ð	Oð -ð	Oð 
õ		Oð 04ðHà.ðHð -ðHð 
.õ	Hð* Øð,$àð,$ð ð,$ðð	,$ð ð,$ð 
÷,$ð ,$r   r%   c                ó*   • U c  gU S;   a  / $ U S:X  a  gg)zd
Used by addini to get the default value for a given ini-option type, when
default is not supplied.
r“   )rƒ   r„   r[   r…   r†   Fr   )r‹   s    r   rˆ   rˆ   ß   s'   € ð �|ØØ	Ð:Ó	:Øˆ	Ø	�‹Øàr   c                  ó,   • \ rS rSrSrSS jrSS jrSrg)	ÚArgumentErroréð   zQRaised if an Argument instance is created with invalid or
inconsistent arguments.c                ó0   • Xl         [        U5      U l        g r;   )Úmsgr   Ú	option_id)r   r¡   r=   s      r   r8   ÚArgumentError.__init__ô   s   € ØŒÜ˜V›ˆ�r   c                ót   • U R                   (       a  SU R                    SU R                   3$ U R                  $ )Nzoption ú: )r¢   r¡   r   s    r   Ú__str__ÚArgumentError.__str__ø   s.   € Ø�>�>Ø˜TŸ^™^Ð,¨B¨t¯x©x¨jÐ9Ð9à—8‘8ˆOr   )r¡   r¢   N)r¡   r   r=   zArgument | strr   r�   r   )r   r    r!   r"   rš   r8   r¦   r#   r   r   r   rž   rž   ð   s   † ñô%÷r   rž   c                  óJ   • \ rS rSrSrS
S jrSS jrSS jrSS jrSS jr	Sr
g	)r‘   éÿ   zçClass that mimics the necessary behaviour of optparse.Option.

It's currently a least effort implementation and ignoring choices
and integer prefixes.

https://docs.python.org/3/library/optparse.html#optparse-standard-option-types
c                óæ  • X l         / U l        / U l         US   U l         US   U l        U R                  U5        UR                  S5      nU(       a  X0l        gU R                  (       a(  U R                  S   SS R                  SS5      U l        g U R                  S   S	S U l        g! [         a     N™f = f! [         a     Nžf = f! [         a  nS
U l        [        SU 5      UeSnAff = f)z5Store params in private vars for use in add_argument.r‹   rŒ   r<   r   é   NÚ-Ú_rA   z???zneed a long or short option)Ú_attrsÚ_short_optsÚ
_long_optsr‹   ÚKeyErrorrŒ   Ú_set_opt_stringsÚgetr<   ÚreplaceÚ
IndexErrorrž   )r   rg   rO   r<   Úes        r   r8   ÚArgument.__init__  sø   € àŒØ&(ˆÔØ%'ˆŒð	Ø˜f™ˆDŒIð	à  Ñ+ˆDŒLð 	×Ñ˜eÔ$Ø Ÿ9™9 VÓ,ˆÞØ�IØ�_�_ØŸ™¨Ñ*¨1¨2Ð.×6Ñ6°s¸CÓ@ˆD�IðPØ ×,Ñ,¨QÑ/°°Ð3�•	øô ó 	Ùð	ûô
 ó 	Ùð	ûô ó PØ!�”	Ü#Ð$AÀ4ÓHÈaÐOûðPús:   –
B- ¡
B= ÂC Â-
B:Â9B:Â=
C
Ã	C
Ã
C0ÃC+Ã+C0c                ó4   • U R                   U R                  -   $ r;   )r¯   r°   r   s    r   rg   ÚArgument.names#  s   € Ø×Ñ $§/¡/Ñ1Ð1r   c                óÖ   • SR                  5       nUR                  U R                  5        U H  n [        X5      U R                  U'   M     U R                  $ ! [
         a     M9  f = f)Nzdefault dest help)Úsplitr‰   r<   rv   r®   ÚAttributeError)r   rO   Úattrs      r   rO   ÚArgument.attrs&  sb   € à#×)Ñ)Ó+ˆØ�‰�T—Y‘YÔÛˆDðÜ$+¨DÓ$7�—‘˜DÓ!ñ ð
 �{‰{Ðøô "ó Úðús   ²AÁ
A(Á'A(c                óp  • U H°  n[        U5      S:  a  [        SU< S3U 5      e[        U5      S:X  a@  US   S:X  a	  US   S:w  d  [        SU< S3U 5      eU R                  R                  U5        Mr  USS S	:X  a	  US   S:w  d  [        S
U< S3U 5      eU R                  R                  U5        M²     g)zXDirectly from optparse.

Might not be necessary as this is passed to argparse later on.
r«   zinvalid option string z&: must be at least two characters longr   r¬   rA   zinvalid short option string z/: must be of the form -x, (x any non-dash char)ú--zinvalid long option string z*: must start with --, followed by non-dashN)Úlenrž   r¯   r‰   r°   )r   rN   Úopts      r   r²   ÚArgument._set_opt_strings1  sä   € ó
 ˆCÜ�3‹x˜!‹|Ü#Ø,¨S©Gð 4;ð ;àóð ô
 �S“˜Q“Ø˜A™ #›¨#¨a©&°C«-Ü'Ø6°s±gð >Hð Hàóð ð
 × Ñ ×'Ñ'¨Ö,à˜A˜a˜ DÓ(¨S°©V°s«]Ü'Ø5°c±Wð =Cð Càóð ð
 —‘×&Ñ& sÖ+ò- r   c                óæ  • / nU R                   (       a  US[        U R                   5      -   /-  nU R                  (       a  US[        U R                  5      -   /-  nUS[        U R                  5      -   /-  n[	        U S5      (       a  US[        U R
                  5      -   /-  n[	        U S5      (       a  US[        U R                  5      -   /-  nSR                  S	R                  U5      5      $ )
Nz_short_opts: z_long_opts: zdest: r‹   ztype: rŒ   z	default: zArgument({})ú, )	r¯   Úreprr°   r<   Úhasattrr‹   rŒ   ÚformatÚjoin)r   r[   s     r   r   ÚArgument.__repr__N  sÑ   € ØˆØ××Ø�_¤t¨D×,<Ñ,<Ó'=Ñ=Ð>Ñ>ˆDØ�?�?Ø�^¤d¨4¯?©?Ó&;Ñ;Ð<Ñ<ˆDØ�œD §¡›OÑ+Ð,Ñ,ˆÜ�4˜× Ñ Ø�X¤ T§Y¡Y£Ñ/Ð0Ñ0ˆDÜ�4˜×#Ñ#Ø�[¤4¨¯©Ó#5Ñ5Ð6Ñ6ˆDØ×$Ñ$ T§Y¡Y¨t£_Ó5Ð5r   )r®   r°   r¯   rŒ   r<   r‹   N)rg   r   rO   r   r   r�   )r   r˜   )r   zMapping[str, Any])rN   zSequence[str]r   r�   r   )r   r    r!   r"   rš   r8   rg   rO   r²   r   r#   r   r   r   r‘   r‘   ÿ   s!   † ñôPô62ô	ô,÷:6r   r‘   c                  óf   • \ rS rSrSr  SSS.         SS jjjrSS jrSS jrSSS	 jjrS
r	g)r.   i\  z,A group of options shown in its own section.NFr)   c               óL   • [        U5        Xl        X l        / U l        X0l        g r;   )r   rB   rE   re   r-   )r   rB   rE   r-   r*   s        r   r8   ÚOptionGroup.__init___  s#   € ô 	�yÔ!ØŒ	Ø&ÔØ')ˆŒØ�r   c                ó¼   • [        U5      R                  S U R                   5       5      nU(       a  [        SU S35      e[	        U0 UD6nU R                  USS9  g)aú  Add an option to this group.

If a shortened version of a long option is specified, it will
be suppressed in the help. ``addoption('--twowords', '--two-words')``
results in help showing ``--two-words`` only, but ``--twowords`` gets
accepted **and** the automatic destination is in ``args.twowords``.

:param opts:
    Option names, can be short or long options.
:param attrs:
    Same attributes as the argparse library's :meth:`add_argument()
    <argparse.ArgumentParser.add_argument>` function accepts.
c              3  óN   #   • U H  oR                  5        H  o"v •  M     M     g 7fr;   )rg   )Ú.0rÂ   rB   s      r   Ú	<genexpr>Ú(OptionGroup.addoption.<locals>.<genexpr>{  s   é € ð *
Ù(�S·Y±Y¶[¨TŒD±[‰DšLùs   ‚#%zoption names z already addedF©Ú
shortupperN)ÚsetÚintersectionre   Ú
ValueErrorr‘   Ú_addoption_instance)r   rN   rO   Úconflictr=   s        r   rM   ÚOptionGroup.addoptionm  sd   € ô �t“9×)Ñ)ñ *
Ø ŸLšLó*
ó 
ˆö Ü˜}¨X¨J°nÐEÓFÐFÜ˜4Ð) 5Ñ)ˆØ× Ñ  °EÐ Ò:r   c                ó:   • [        U0 UD6nU R                  USS9  g )NTrÓ   )r‘   rØ   )r   rN   rO   r=   s       r   Ú
_addoptionÚOptionGroup._addoptionƒ  s$   € Ü˜4Ð) 5Ñ)ˆØ× Ñ  °DÐ Ò9r   c                ó"  • U(       dA  UR                    H1  nUS   S:X  d  M  US   R                  5       (       d  M(  [        S5      e   U R                  (       a  U R                  R	                  U5        U R
                  R                  U5        g )Nr   r¬   rA   zlowercase shortoptions reserved)r¯   Úislowerr×   r-   r>   re   r‰   )r   r=   rÔ   rÂ   s       r   rØ   ÚOptionGroup._addoption_instance‡  si   € ÞØ×)Ô)�Ø�q‘6˜S•= S¨¡V§^¡^×%5Ó%5Ü$Ð%FÓGÐGñ *ð �;�;Ø�K‰K×%Ñ% fÔ-Ø�‰×Ñ˜FÕ#r   )rE   rB   re   r-   r’   )
rB   r   rE   r   r-   zParser | Noner*   r†   r   r�   r”   )F)r=   r‘   rÔ   r†   r   r�   )
r   r    r!   r"   rš   r8   rM   rÜ   rØ   r#   r   r   r   r.   r.   \  s`   † Ù6ð
 Ø $ð	ð  ñàðð ðð ð	ð ðð 
öô;ô,:÷$ñ $r   r.   c                  ó¦   ^ • \ rS rSr  S       S	U 4S jjjrS
S jr  S     SS jjr\R                  S:  a      SS jr	Sr
U =r$ Sr
U =r$ )rd   i‘  c           	     ó|   >• Xl         [        TU ]	  UUR                  S[        SSS9  U(       a  X l        g 0 U l        g )NFÚ@)r(   r6   Úadd_helpÚformatter_classÚallow_abbrevÚfromfile_prefix_chars)Ú_parserÚsuperr8   r2   ÚDropShorterLongHelpFormatterr5   )r   r-   r5   r(   Ú	__class__s       €r   r8   ÚMyOptionParser.__init__’  sA   ø€ ð ŒÜ‰ÑØØ—-‘-ØÜ8ØØ"%ð 	ñ 	
ö )3˜*�¸ˆ�r   c                óÊ   • U R                    SU 3n[        U R                  S5      (       a  U SU R                  R                   S3n[	        U R                  5       U-   5      e)z1Transform argparse error message into UsageError.z	: error: Ú_config_source_hintz (Ú))r(   rÇ   rè   rî   r   Úformat_usage)r   Úmessager¡   s      r   ÚerrorÚMyOptionParser.error¥  s^   € à—‘�˜9 W IÐ.ˆä�4—<‘<Ð!6×7Ñ7Ø�E˜˜DŸL™L×<Ñ<Ð=¸QÐ?ˆCä˜×*Ñ*Ó,¨sÑ2Ó3Ð3r   c                óº  • U R                  X5      u  p4U(       aÀ  U H›  nU(       d  M  US   S:X  d  M  SR                  SR                  U5      5      /n[        U R                  R                  5       5       H  u  pxUR                  SU SU 35        M     U R                  SR                  U5      5        M�     [        U[        5      R                  U5        U$ )z(Allow splitting of positional arguments.r   r¬   zunrecognized arguments: {}Ú z  r¥   Ú
)r}   rÈ   rÉ   Úsortedr5   rt   r‰   rò   rv   ri   Úextend)	r   r[   rT   ÚparsedÚunrecognizedÚargÚlinesÚkÚvs	            r   rZ   ÚMyOptionParser.parse_args¯  s»   € ð  $×4Ñ4°TÓEÑˆÞÛ#�ß�3˜3˜q™6 S�=à4×;Ñ;¸C¿H¹HÀ\Ó<RÓSð�Eô !' t§¡×'<Ñ'<Ó'>Ö ?™˜ØŸ™ r¨!¨¨B¨q¨c ]Ö3ñ !@à—J‘J˜tŸy™y¨Ó/Ö0ñ $ô �FœKÓ(×/Ñ/°Ô=Øˆr   )é   é	   c                ó¾  • U(       d  g US   U R                   ;  a  g XR                  ;   a  U R                  U   nX!S 4$ [        U5      S:X  a  g SU;   a6  UR                  SS5      u  p4X0R                  ;   a  U R                  U   nX#U4$ U R                  (       d  UR                  S5      (       do  U R                  U5      n[        U5      S:”  a:  [        S5      nSR                  S U 5       5      nU R                  XaUS.-  5        O[        U5      S:X  a  Uu  nU$ U R                  R                  U5      (       a  U R                  (       d  g S	U;   a  g S US 4$ )
Nr   rA   Ú=rÀ   z4ambiguous option: %(option)s could match %(matches)srÅ   c              3  ó(   #   • U H	  u  pov •  M     g 7fr;   r   )rÐ   r­   r=   s      r   rÑ   Ú1MyOptionParser._parse_optional.<locals>.<genexpr>Ü  s   é € Ð'QÁ=±<°1¸a¬Â=ùs   ‚)r=   Úmatchesrõ   )Úprefix_charsÚ_option_string_actionsrÁ   r»   ræ   Ú
startswithÚ_get_option_tuplesr   rÉ   rò   Ú_negative_number_matcherÚmatchÚ_has_negative_number_optionals)	r   Ú
arg_stringÚactionÚoption_stringÚexplicit_argÚoption_tuplesr¡   re   Úoption_tuples	            r   Ú_parse_optionalÚMyOptionParser._parse_optionalÅ  s[  € ö ØØ˜!‰} D×$5Ñ$5Ó5ØØ×8Ñ8Ó8Ø×4Ñ4°ZÑ@�Ø¨4Ð/Ð/Ü�:‹ !Ó#ØØ�jÓ Ø.8×.>Ñ.>¸sÀAÓ.FÑ+�Ø ×$?Ñ$?Ó?Ø!×8Ñ8¸ÑG�FØ!°,Ð>Ð>Ø× × ¨
×(=Ñ(=¸d×(CÑ(CØ $× 7Ñ 7¸
Ó C�Ü�}Ó%¨Ó)Ü!ØNó�Cð #Ÿi™iÑ'QÁ=Ó'QÓQ�GØ—J‘J˜sÀwÑ%OÑOÕPÜ˜Ó'¨1Ó,Ø&3‘O�\Ø'Ð'Ø×,Ñ,×2Ñ2°:×>Ñ>Ø×:×:ØØ�jÓ ØØ˜ TÐ)Ð)r   )rè   r5   r�   )r-   r%   r5   zdict[str, Any] | Noner(   r'   r   r�   )rñ   r   r   r   )r[   zSequence[str] | NonerT   r–   r   r—   )r  r   r   z5tuple[argparse.Action | None, str, str | None] | None)r   r    r!   r"   r8   rò   rZ   ÚsysÚversion_infor  r#   Ú__classcell__©rë   s   @r   rd   rd   ‘  s˜   ø† ð -1Øð	;àð;ð *ð;ð ð	;ð
 
÷;ð ;ô&4ð &*Ø/3ðà"ðð -ðð 
õ	ð& ×Ñ˜&Ó ð!	*Ø!ð!	*àB÷!	*ò !	*õ !r   rd   c                  óF   ^ • \ rS rSrSrSU 4S jjrSU 4S jjrS rSrU =r	$ )	rê   ié  a  Shorten help for long options that differ only in extra hyphens.

- Collapse **long** options that are the same except for extra hyphens.
- Shortcut if there are only two options and one of them is a short one.
- Cache result on the action object as this is called at least 2 times.
c                ót   >• SU;  a!  [         R                  R                  5       US'   [        TU ]  " U0 UD6  g )NÚwidth)Ú_pytestÚ_ioÚget_terminal_widthré   r8   )r   r[   Úkwargsrë   s      €r   r8   Ú%DropShorterLongHelpFormatter.__init__ñ  s3   ø€ à˜&Ó Ü%Ÿk™k×<Ñ<Ó>ˆF�7‰OÜ‰Ò˜$Ð) &Ó)r   c                óJ  >• [         TU ]  U5      nU(       a  US   S:w  a  U$ [        USS 5      nU(       a  U$ UR                  S5      n[	        U5      S:X  a,  [	        US   5      S:X  d  [	        US   5      S:X  a  X!l        U$ / n0 nU H  n[	        U5      S:X  d	  US   S:X  a  M  UR                  S5      (       d  [        S	U S
3U5      eUSS  nUR                  SS5      n	X–;  d  [	        Xi   5      [	        U5      :  d  M{  X†U	'   M�     U Hx  n[	        U5      S:X  d	  US   S:X  a  UR                  U5        USS  UR                  UR                  SS5      5      :X  d  MV  UR                  UR                  SSS5      5        Mz     SR                  U5      n
X¡l        U
$ )Nr   r¬   Ú_formatted_action_invocationrÅ   r«   rA   rõ   rÀ   z&long optional argument without "--": [Ú]r“   r  )ré   Ú_format_action_invocationrv   r»   rÁ   r#  r	  rž   r´   r‰   r³   rÉ   )r   r  ÚorgstrÚresre   Úreturn_listÚ
short_longr=   ÚxxoptionÚ	shortenedÚformatted_action_invocationrë   s              €r   r%  Ú6DropShorterLongHelpFormatter._format_action_invocation÷  s­  ø€ Ü‘Ñ2°6Ó:ˆÞ�f˜Q‘i 3Ó&ØˆMÜ! &Ð*HÈ$ÓOˆÞØˆJØ—,‘,˜tÓ$ˆÜˆw‹<˜1Ó¤# g¨a¡j£/°QÓ"6¼#¸gÀa¹j»/ÈQÓ:Nà28Ô/ØˆMØˆØ%'ˆ
ÛˆFÜ�6‹{˜aÓ 6¨!¡9°Ó#3ÙØ×$Ñ$ T×*Ñ*Ü#Ø<¸V¸HÀAÐFÈóð ð ˜a˜b�zˆHØ ×(Ñ(¨¨bÓ1ˆIØÓ*¬c°*Ñ2GÓ.HÌ3ØóLõ /ð )1˜9Ó%ñ ó ˆFÜ�6‹{˜aÓ 6¨!¡9°Ó#3Ø×"Ñ" 6Ô*Ø�a�bˆz˜ZŸ^™^¨F¯N©N¸3ÀÓ,CÓDÕDØ×"Ñ" 6§>¡>°#°s¸AÓ#>Ö?ñ	 ð
 '+§i¡i°Ó&<Ð#Ø.IÔ+Ø*Ð*r   c                óž   • SSK n/ nUR                  5        H2  nUR                  UR                  UR	                  5       U5      5        M4     U$ )zmWrap lines after splitting on original newlines.

This allows to have explicit line breaks in the help text.
r   N)ÚtextwrapÚ
splitlinesrø   ÚwrapÚstrip)r   Útextr  r/  rü   Úlines         r   Ú_split_linesÚ)DropShorterLongHelpFormatter._split_lines  s?   € ó
 	àˆØ—O‘OÖ%ˆDØ�L‰L˜Ÿ™ t§z¡z£|°UÓ;Ö<ñ &àˆr   r   )r[   r   r   r   r   r�   )r  zargparse.Actionr   r   )
r   r    r!   r"   rš   r8   r%  r5  r#   r  r  s   @r   rê   rê   é  s   ø† ñ÷*÷$+÷L
ð 
r   rê   )r‹   r™   r   r   )#Ú
__future__r   Úargparser   rX   r  Útypingr   r   r   r   r	   r
   r   r   r   Ú_pytest._ior  Ú_pytest.config.exceptionsr   Ú_pytest.deprecatedr   ri   r   r‡   r%   rˆ   Ú	Exceptionrž   r‘   r.   ÚArgumentParserrd   ÚHelpFormatterrê   r   r   r   Ú<module>r@     sÏ   ðå "ã Ý Û 	Û 
Ý Ý Ý Ý Ý Ý Ý Ý Ý ã Ý 0Ý -ð €÷ñ ñ
 ‹(€ð ÷y$ð y$ó ðy$ðxØ
Sðàôô"�Iô ÷Z6ñ Z6÷z2$ñ 2$ôjU*�X×,Ñ,ô U*ôp> 8×#9Ñ#9õ >r   