§
    öyIfçP  ã                   ó  — d dl Z d dlmZ d dlZd dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dlm
Z
 d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlZd dlmZ d dlmZ dZ G d„ d¦  «        Z e¦   «         Ze	 G d„ d¦  «        ¦   «         Zdeed                  defd„Z G d„ de¦  «        Z G d„ d¦  «        Z G d„ d ¦  «        Z  G d!„ d"e j!        ¦  «        Z" G d#„ d$e j#        ¦  «        Z$dS )%é    N)Úgettext)ÚAny)ÚCallable)Úcast)ÚDict)Úfinal)ÚList)ÚLiteral)ÚMapping)ÚNoReturn)ÚOptional)ÚSequence)ÚTuple)ÚUnion)Ú
UsageError)Úcheck_ispytestÚfile_or_dirc                   ó   — e Zd Zdefd„ZdS )ÚNotSetÚreturnc                 ó   — dS )Nz<notset>© ©Úselfs    úM/var/www/piapp/venv/lib/python3.11/site-packages/_pytest/config/argparsing.pyÚ__repr__zNotSet.__repr__   s   € Øˆzó    N)Ú__name__Ú
__module__Ú__qualname__Ústrr   r   r   r   r   r      s/   € € € € € ð˜#ð ð ð ð ð ð r   r   c                   ó~  — e Zd ZU dZdZee         ed<   	 	 d%ddœdee         deedgdf                  d	e	d
dfd„Z
d&d„Z	 d'dededee         d
dfd„Zdeded
dfd„Z	 d(deeedf                  deej                 d
ej        fd„Zd)d„Z	 d(deeedf                  dej        deej                 d
ee         fd„Z	 d(deeedf                  deej                 d
ej        fd„Z	 d(deeedf                  deej                 d
eej        ee         f         fd„Zdefded ed!eed"                  d#ed
df
d$„ZdS )*ÚParserzÄ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ÚprogF©Ú	_ispytestÚusageÚ
processoptÚArgumentr&   r   c                ó¦   — t          |¦  «         t          d| d¬¦  «        | _        g | _        || _        || _        i | _        g | _        i | _        d S )NzCustom optionsT©Úparserr&   )	r   ÚOptionGroupÚ
_anonymousÚ_groupsÚ_processoptÚ_usageÚ_inidictÚ	_ininamesÚ
extra_info)r   r'   r(   r&   s       r   Ú__init__zParser.__init__.   sX   € õ 	�yÑ!Ô!Ð!Ý%Ð&6¸tÈtÐTÑTÔTˆŒØ*,ˆŒØ%ˆÔØˆŒØCEˆŒØ$&ˆŒØ*,ˆŒˆˆr   Úoptionc                 óT   — | j         r|j        r|                       |¦  «         d S d S d S ©N)r0   Údest)r   r6   s     r   ÚprocessoptionzParser.processoption>   sE   € ØÔð 	)ØŒ{ð )Ø× Ò  Ñ(Ô(Ð(Ð(Ð(ð	)ð 	)ð)ð )r   Ú ÚnameÚdescriptionÚafterr-   c                 óì   — | j         D ]}|j        |k    r|c S Œt          ||| d¬¦  «        }d}t          | j         ¦  «        D ]\  }}|j        |k    r nŒ| j                              |dz   |¦  «         |S )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   é   )r/   r<   r-   Ú	enumerateÚinsert)r   r<   r=   r>   ÚgroupÚiÚgrps          r   ÚgetgroupzParser.getgroupC   s    € ð ”\ð 	ð 	ˆEØŒz˜TÒ!Ð!Ø���ð "å˜D +°dÀdÐKÑKÔKˆØˆÝ ¤Ñ-Ô-ð 	ð 	‰FˆAˆsØŒx˜5Ò Ð Ø�ð !àŒ×Ò˜A ™E 5Ñ)Ô)Ð)Øˆr   ÚoptsÚattrsc                 ó*   —  | j         j        |i |¤Ž dS )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   rG   rH   s      r   rJ   zParser.addoption]   s$   € ð 	"ˆŒÔ! 4Ð1¨5Ð1Ð1Ð1Ð1Ð1r   Úargszos.PathLike[str]Ú	namespacec                 ó°   — ddl m} |                      ¦   «         | _         || j        ¦  «         d„ |D ¦   «         }| j                             ||¬¦  «        S )Nr   )Útry_argcompletec                 ó6   — g | ]}t          j        |¦  «        ‘ŒS r   ©ÚosÚfspath©Ú.0Úxs     r   ú
<listcomp>z Parser.parse.<locals>.<listcomp>v   ó    € Ð.Ð.Ð. A•2”9˜Q‘<”<Ð.Ð.Ð.r   ©rL   )Ú_pytest._argcompleterN   Ú
_getparserÚ	optparserÚ
parse_args)r   rK   rL   rN   Ústrargss        r   ÚparsezParser.parsem   sg   € ð
 	9Ð8Ð8Ð8Ð8Ð8àŸšÑ*Ô*ˆŒØˆ˜œÑ'Ô'Ð'Ø.Ð.¨Ð.Ñ.Ô.ˆØŒ~×(Ò(¨¸IÐ(ÑFÔFÐFr   ÚMyOptionParserc                 óŒ  — ddl m} t          | | j        | j        ¬¦  «        }g | j        ¢| j        ‘}|D ]k}|j        rb|j        p|j	        }| 
                    |¦  «        }|j        D ]7}|                     ¦   «         }|                     ¦   «         }	 |j        |i |	¤Ž Œ8Œl|                     t          d¬¦  «        }
||
_        |S )Nr   )Úfilescompleter)r$   Ú*)Únargs)rY   ra   r_   r4   r$   r/   r.   Úoptionsr=   r<   Úadd_argument_groupÚnamesrH   Úadd_argumentÚFILE_OR_DIRÚ	completer)r   ra   r[   ÚgroupsrC   ÚdescÚarggroupr6   ÚnÚaÚfile_or_dir_args              r   rZ   zParser._getparsery   sé   € Ø7Ð7Ð7Ð7Ð7Ð7å" 4¨¬¸t¼yÐIÑIÔIˆ	Ø1�4”<Ð1 ¤Ð1ˆØð 	3ð 	3ˆEØŒ}ð 3ØÔ(Ð6¨E¬J�Ø$×7Ò7¸Ñ=Ô=�Ø#œmð 3ð 3�FØŸš™œ�AØŸš™œ�AØ)�HÔ)¨1Ð2°Ð2Ð2Ð2Ð2øØ#×0Ò0µÀCÐ0ÑHÔHˆð %3ˆÔ!ØÐr   c                 óö   — |                       ||¬¦  «        }|j                             ¦   «         D ]\  }}t          |||¦  «         Œt	          t
          t                   t          |t          ¦  «        ¦  «        S )NrX   )	r^   Ú__dict__ÚitemsÚsetattrr   r	   r!   Úgetattrrh   )r   rK   r6   rL   Úparsedoptionr<   Úvalues          r   Úparse_setoptionzParser.parse_setoptionŒ   sn   € ð —z’z $°)�zÑ<Ô<ˆØ'Ô0×6Ò6Ñ8Ô8ð 	)ð 	)‰KˆD�%Ý�F˜D %Ñ(Ô(Ð(Ð(Ý•D�”I�w |µ[ÑAÔAÑBÔBÐBr   c                 ó<   — |                       ||¬¦  «        d         S )zbParse the known arguments at this point.

        :returns: An argparse namespace object.
        rX   r   )Úparse_known_and_unknown_args)r   rK   rL   s      r   Úparse_known_argszParser.parse_known_args—   s"   € ð ×0Ò0°ÀÐ0ÑKÔKÈAÔNÐNr   c                 óp   — |                       ¦   «         }d„ |D ¦   «         }|                     ||¬¦  «        S )a  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.
        c                 ó6   — g | ]}t          j        |¦  «        ‘ŒS r   rP   rS   s     r   rV   z7Parser.parse_known_and_unknown_args.<locals>.<listcomp>¯   rW   r   rX   )rZ   rz   )r   rK   rL   r[   r]   s        r   ry   z#Parser.parse_known_and_unknown_args¢   s?   € ð —O’OÑ%Ô%ˆ	Ø.Ð.¨Ð.Ñ.Ô.ˆØ×)Ò)¨'¸YÐ)ÑGÔGÐGr   ÚhelpÚtype©ÚstringÚpathsÚpathlistrK   ÚlinelistÚboolÚdefaultc                 ó�   — |dv sJ ‚|t           u rt          |¦  «        }|||f| j        |<   | j                             |¦  «         dS )aR  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>`.
        )Nr€   r�   r‚   rK   rƒ   r„   N)ÚNOT_SETÚget_ini_default_for_typer2   r3   Úappend)r   r<   r}   r~   r…   s        r   ÚaddinizParser.addini²   s^   € ðP ÐXÐXÐXÐXÐXØ•gÐÐÝ.¨tÑ4Ô4ˆGà# T¨7Ð3ˆŒ�dÑØŒ×Ò˜dÑ#Ô#Ð#Ð#Ð#r   ©NN)r6   r)   r   N©r;   Nr8   )r   r_   )r   r   r    Ú__doc__r$   r   r!   Ú__annotations__r   r„   r5   r:   rF   r   rJ   r   r   ÚargparseÚ	Namespacer^   rZ   r	   rw   rz   r   ry   r‡   r
   rŠ   r   r   r   r#   r#   $   s&  € € € € € € ðð ð €Dˆ(�3Œ-ÐÐÑð  $Ø=Að-ð
  ð-ð -ð -à˜Œ}ð-ð ˜X z l°DÐ&8Ô9Ô:ð-ð
 ð-ð 
ð-ð -ð -ð -ð )ð )ð )ð )ð HLðð ØðØ&)ðØ7?À´}ðà	ðð ð ð ð42˜sð 2¨Sð 2°Tð 2ð 2ð 2ð 2ð& 37ð
Gð 
Gà�u˜SÐ"4Ð4Ô5Ô6ð
Gð ˜HÔ.Ô/ð
Gð 
Ô	ð	
Gð 
Gð 
Gð 
Gðð ð ð ð. 37ð		Cð 	Cà�u˜SÐ"4Ð4Ô5Ô6ð	Cð Ô"ð	Cð ˜HÔ.Ô/ð		Cð
 
ˆcŒð	Cð 	Cð 	Cð 	Cð 37ð	Oð 	Oà�u˜SÐ"4Ð4Ô5Ô6ð	Oð ˜HÔ.Ô/ð	Oð 
Ô	ð		Oð 	Oð 	Oð 	Oð 37ðHð Hà�u˜SÐ"4Ð4Ô5Ô6ðHð ˜HÔ.Ô/ðHð 
ˆxÔ! 4¨¤9Ð,Ô	-ð	Hð Hð Hð Hð, Øð-$ð -$àð-$ð ð-$ð ØÐMÔNô
ð	-$ð ð-$ð 
ð-$ð -$ð -$ð -$ð -$ð -$r   r#   r~   r   r   c                 ó*   — | €dS | dv rg S | dk    rdS dS )zp
    Used by addini to get the default value for a given ini-option type, when
    default is not supplied.
    Nr;   )r�   r‚   rK   rƒ   r„   Fr   )r~   s    r   rˆ   rˆ   â   s2   € ð €|ØˆrØ	Ð:Ð	:Ð	:Øˆ	Ø	�ŠˆØˆuàˆrr   c                   óB   — e Zd ZdZdededef         ddfd„Zdefd„ZdS )	ÚArgumentErrorzURaised if an Argument instance is created with invalid or
    inconsistent arguments.Úmsgr6   r)   r   Nc                 ó<   — || _         t          |¦  «        | _        d S r8   )r”   r!   Ú	option_id)r   r”   r6   s      r   r5   zArgumentError.__init__÷   s   € ØˆŒÝ˜V™œˆŒˆˆr   c                 óB   — | j         rd| j         › d| j        › �S | j        S )Nzoption ú: )r–   r”   r   s    r   Ú__str__zArgumentError.__str__û   s-   € ØŒ>ð 	Ø9˜Tœ^Ð9Ð9¨t¬xÐ9Ð9Ð9à”8ˆOr   )r   r   r    r�   r!   r   r5   r™   r   r   r   r“   r“   ó   sk   € € € € € ðð ð%˜Cð %¨¨z¸3¨Ô)?ð %ÀDð %ð %ð %ð %ð˜ð ð ð ð ð ð r   r“   c                   ó‚   — e Zd ZdZdededdfd„Zdee         fd„Zde	eef         fd„Z
d	ee         ddfd
„Zdefd„ZdS )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
    rf   rH   r   Nc                 ó  — || _         g | _        g | _        	 |d         | _        n# t          $ r Y nw xY w	 |d         | _        n# t          $ r Y nw xY w|                      |¦  «         |                     d¦  «        }|r	|| _        dS | j        r0| j        d         dd…          	                    dd¦  «        | _        dS 	 | j        d         d	d…         | _        dS # t          $ r}d
| _        t          d| ¦  «        |‚d}~ww xY w)z5Store params in private vars for use in add_argument.r~   r…   r9   r   é   Nú-Ú_r@   z???zneed a long or short option)Ú_attrsÚ_short_optsÚ
_long_optsr~   ÚKeyErrorr…   Ú_set_opt_stringsÚgetr9   ÚreplaceÚ
IndexErrorr“   )r   rf   rH   r9   Úes        r   r5   zArgument.__init__  sK  € àˆŒØ&(ˆÔØ%'ˆŒð	Ø˜fœˆDŒIˆIøÝð 	ð 	ð 	ØˆDð	øøøð	à  Ô+ˆDŒLˆLøÝð 	ð 	ð 	ØˆDð	øøøà×Ò˜eÑ$Ô$Ð$Ø#Ÿiši¨Ñ/Ô/ˆØð 		PØˆDŒIˆIˆIØŒ_ð 	PØœ¨Ô*¨1¨2¨2Ô.×6Ò6°s¸CÑ@Ô@ˆDŒIˆIˆIðPØ Ô,¨QÔ/°°°Ô3�”	�	�	øÝð Pð Pð PØ!�”	Ý#Ð$AÀ4ÑHÔHÈaÐOøøøøðPøøøs5   —% ¥
2±2¶A Á
AÁAÃC Ã
DÃ'C?Ã?Dc                 ó    — | j         | j        z   S r8   )r    r¡   r   s    r   rf   zArgument.names&  s   € ØÔ $¤/Ñ1Ð1r   c                 óÈ   — d                      ¦   «         }|                     | j        ¦  «         |D ]+}	 t          | |¦  «        | j        |<   Œ# t
          $ r Y Œ(w xY w| j        S )Nzdefault dest help)Úsplitr‰   r9   rt   rŸ   ÚAttributeError)r   rH   Úattrs      r   rH   zArgument.attrs)  s|   € à#×)Ò)Ñ+Ô+ˆØ�Š�T”YÑÔÐØð 	ð 	ˆDðÝ$+¨D°$Ñ$7Ô$7�”˜DÑ!Ð!øÝ!ð ð ð Ø�ðøøøàŒ{Ðs   ´AÁ
AÁArG   c                 óœ  — |D ]È}t          |¦  «        dk     rt          d|z  | ¦  «        ‚t          |¦  «        dk    rF|d         dk    r|d         dk    st          d|z  | ¦  «        ‚| j                             |¦  «         Œ�|dd…         dk    r|d         dk    st          d|z  | ¦  «        ‚| j                             |¦  «         ŒÉd	S )
zhDirectly from optparse.

        Might not be necessary as this is passed to argparse later on.
        rœ   z>invalid option string %r: must be at least two characters longr   r�   r@   zMinvalid short option string %r: must be of the form -x, (x any non-dash char)ú--zGinvalid long option string %r: must start with --, followed by non-dashN)Úlenr“   r    r‰   r¡   )r   rG   Úopts      r   r£   zArgument._set_opt_strings4  s  € ð
 ð 	,ð 	,ˆCÝ�3‰xŒx˜!Š|ˆ|Ý#ð;Ø=@ñAàñô ð õ
 �S‘”˜Q’�Ø˜Aœ #š˜¨#¨a¬&°Cª-¨-Ý'ðHØJMñNàñô ð ð
 Ô ×'Ò'¨Ñ,Ô,Ð,Ð,à˜A˜a˜Cœ DÒ(Ð(¨S°¬V°sª]¨]Ý'ðCØEHñIàñô ð ð
 ”×&Ò& sÑ+Ô+Ð+Ð+ð-	,ð 	,r   c                 óÀ  — g }| j         r|dt          | j         ¦  «        z   gz  }| j        r|dt          | j        ¦  «        z   gz  }|dt          | j        ¦  «        z   gz  }t	          | d¦  «        r|dt          | j        ¦  «        z   gz  }t	          | d¦  «        r|dt          | j        ¦  «        z   gz  }d                     d	                     |¦  «        ¦  «        S )
Nz_short_opts: z_long_opts: zdest: r~   ztype: r…   z	default: zArgument({})ú, )	r    Úreprr¡   r9   Úhasattrr~   r…   ÚformatÚjoin)r   rK   s     r   r   zArgument.__repr__Q  sç   € ØˆØÔð 	?Ø�_¥t¨DÔ,<Ñ'=Ô'=Ñ=Ð>Ñ>ˆDØŒ?ð 	=Ø�^¥d¨4¬?Ñ&;Ô&;Ñ;Ð<Ñ<ˆDØ��D ¤™OœOÑ+Ð,Ñ,ˆÝ�4˜Ñ Ô ð 	1Ø�X¥ T¤Y¡¤Ñ/Ð0Ñ0ˆDÝ�4˜Ñ#Ô#ð 	7Ø�[¥4¨¬Ñ#5Ô#5Ñ5Ð6Ñ6ˆDØ×$Ò$ T§Y¢Y¨t¡_¤_Ñ5Ô5Ð5r   )r   r   r    r�   r!   r   r5   r	   rf   r   rH   r   r£   r   r   r   r   r)   r)     sÒ   € € € € € ðð ðP˜sð P¨Sð P°Tð Pð Pð Pð Pð62�t˜C”yð 2ð 2ð 2ð 2ð	�w˜s C˜xÔ(ð 	ð 	ð 	ð 	ð, X¨c¤]ð ,°tð ,ð ,ð ,ð ,ð:6˜#ð 6ð 6ð 6ð 6ð 6ð 6r   r)   c                   ó„   — e Zd ZdZ	 	 dddœdededee         d	ed
df
d„Zdede	d
dfd„Z
dede	d
dfd„Zdddded
dfd„ZdS )r-   z,A group of options shown in its own section.r;   NFr%   r<   r=   r,   r&   r   c                ó\   — t          |¦  «         || _        || _        g | _        || _        d S r8   )r   r<   r=   rd   r,   )r   r<   r=   r,   r&   s        r   r5   zOptionGroup.__init__b  s3   € õ 	�yÑ!Ô!Ð!ØˆŒ	Ø&ˆÔØ')ˆŒØˆŒˆˆr   rG   rH   c                 óÖ   — t          |¦  «                             d„ | j        D ¦   «         ¦  «        }|rt          d|z  ¦  «        ‚t	          |i |¤Ž}|                      |d¬¦  «         dS )aJ  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   óH   K  — | ]}|                      ¦   «         D ]}|V — ŒŒd S r8   )rf   )rT   r°   r<   s      r   ú	<genexpr>z(OptionGroup.addoption.<locals>.<genexpr>~  sO   è è € ð *
ð *
Ø°S·Y²Y±[´[ð*
ð *
Ø-1ˆDð*
ð *
ð *
ð *
ð *
ð *
ð *
r   zoption names %s already addedF©Ú
shortupperN)ÚsetÚintersectionrd   Ú
ValueErrorr)   Ú_addoption_instance)r   rG   rH   Úconflictr6   s        r   rJ   zOptionGroup.addoptionp  s�   € õ �t‘9”9×)Ò)ð *
ð *
Ø œLð*
ñ *
ô *
ñ 
ô 
ˆð ð 	IÝÐ<¸xÑGÑHÔHÐHÝ˜4Ð) 5Ð)Ð)ˆØ× Ò  °EÐ Ñ:Ô:Ð:Ð:Ð:r   c                 óL   — t          |i |¤Ž}|                      |d¬¦  «         d S )NTr¼   )r)   rÁ   )r   rG   rH   r6   s       r   Ú
_addoptionzOptionGroup._addoption†  s3   € Ý˜4Ð) 5Ð)Ð)ˆØ× Ò  °DÐ Ñ9Ô9Ð9Ð9Ð9r   r6   r)   r½   c                 óþ   — |s?|j         D ]7}|d         dk    r)|d                              ¦   «         rt          d¦  «        ‚Œ8| j        r| j                             |¦  «         | j                             |¦  «         d S )Nr   r�   r@   zlowercase shortoptions reserved)r    ÚislowerrÀ   r,   r:   rd   r‰   )r   r6   r½   r°   s       r   rÁ   zOptionGroup._addoption_instanceŠ  sŠ   € Øð 	HØÔ)ð Hð H�Ø�q”6˜S’=�= S¨¤V§^¢^Ñ%5Ô%5�=Ý$Ð%FÑGÔGÐGøØŒ;ð 	.ØŒK×%Ò% fÑ-Ô-Ð-ØŒ×Ò˜FÑ#Ô#Ð#Ð#Ð#r   rŒ   )F)r   r   r    r�   r!   r   r#   r„   r5   r   rJ   rÄ   rÁ   r   r   r   r-   r-   _  s   € € € € € Ø6Ð6ð
 Ø#'ð	ð  ðð ð àðð ðð ˜Ô ð	ð ðð 
ðð ð ð ð;˜sð ;¨Sð ;°Tð ;ð ;ð ;ð ;ð,: ð :¨cð :°dð :ð :ð :ð :ð$ð $¨*ð $À$ð $ÐSWð $ð $ð $ð $ð $ð $r   r-   c            	       ó.  ‡ — e Zd Z	 	 ddedeeeef                  dee         ddfˆ fd„Zdede	fd„Z
	 	 dd	eee                  d
eej                 dej        fd„Zej        dk     r,dedeeeej                 eee         f                  fd„Zˆ xZS ˆ xZS )r_   Nr,   r4   r$   r   c                 óŽ   •— || _         t          ¦   «                              ||j        dt          dd¬¦  «         |r|ni | _        d S )NFú@)r$   r'   Úadd_helpÚformatter_classÚallow_abbrevÚfromfile_prefix_chars)Ú_parserÚsuperr5   r1   ÚDropShorterLongHelpFormatterr4   )r   r,   r4   r$   Ú	__class__s       €r   r5   zMyOptionParser.__init__•  sW   ø€ ð ˆŒÝ‰Œ×ÒØØ”-ØÝ8ØØ"%ð 	ñ 	
ô 	
ð 	
ð )3Ð:˜*˜*¸ˆŒˆˆr   Úmessagec                 ó°   — | j         › d|› �}t          | j        d¦  «        r|› d| j        j        › d�}t	          |                      ¦   «         |z   ¦  «        ‚)z1Transform argparse error message into UsageError.z	: error: Ú_config_source_hintz (ú))r$   r´   rÎ   rÔ   r   Úformat_usage)r   rÒ   r”   s      r   ÚerrorzMyOptionParser.error¨  sg   € à”Ð.Ð. WÐ.Ð.ˆå�4”<Ð!6Ñ7Ô7ð 	@ØÐ?Ð?˜DœLÔ<Ð?Ð?Ð?ˆCå˜×*Ò*Ñ,Ô,¨sÑ2Ñ3Ô3Ð3r   rK   rL   c                 óÂ  — |                       ||¦  «        \  }}|rÃ|D ]˜}|r”|d         dk    rˆdd                     |¦  «        z  g}t          | j                             ¦   «         ¦  «        D ] \  }}|                     d|› d|› �¦  «         Œ!|                      d                     |¦  «        ¦  «         Œ™t          |t          ¦  «         	                    |¦  «         |S )z(Allow splitting of positional arguments.r   r�   zunrecognized arguments: %sú z  r˜   ú
)
rz   r¶   Úsortedr4   rr   r‰   r×   rt   rh   Úextend)	r   rK   rL   ÚparsedÚunrecognizedÚargÚlinesÚkÚvs	            r   r\   zMyOptionParser.parse_args²  sî   € ð  $×4Ò4°T¸9ÑEÔEÑˆ�Øð 	>Ø#ð 1ð 1�Øð 1˜3˜qœ6 Sš=˜=Ø9¸S¿XºXÀlÑ=SÔ=SÑTÐU�EÝ & t¤×'<Ò'<Ñ'>Ô'>Ñ ?Ô ?ð 4ð 4™˜˜1ØŸš ]¨! ] ]¨q ] ]Ñ3Ô3Ð3Ð3Ø—J’J˜tŸyšy¨Ñ/Ô/Ñ0Ô0Ð0øÝ�F�KÑ(Ô(×/Ò/°Ñ=Ô=Ð=Øˆr   )é   é	   Ú
arg_stringc                 ó¦  — |sd S |d         | j         vrd S || j        v r| j        |         }||d fS t          |¦  «        dk    rd S d|v r4|                     dd¦  «        \  }}|| j        v r| j        |         }|||fS | j        s|                     d¦  «        s‹|                      |¦  «        }t          |¦  «        dk    rJt          d¦  «        }d                     d„ |D ¦   «         ¦  «        }|  	                    |||dœz  ¦  «         nt          |¦  «        dk    r|\  }|S | j
                             |¦  «        r	| j        sd S d	|v rd S d |d fS )
Nr   r@   ú=r®   z4ambiguous option: %(option)s could match %(matches)sr²   c              3   ó"   K  — | ]
\  }}}|V — Œd S r8   r   )rT   rž   r6   s      r   r»   z1MyOptionParser._parse_optional.<locals>.<genexpr>Ý  s(   è è € Ð'QÐ'Q±<°1°f¸a¨Ð'QÐ'QÐ'QÐ'QÐ'QÐ'Qr   )r6   ÚmatchesrÙ   )Úprefix_charsÚ_option_string_actionsr¯   rª   rÌ   Ú
startswithÚ_get_option_tuplesr   r¶   r×   Ú_negative_number_matcherÚmatchÚ_has_negative_number_optionals)	r   rå   ÚactionÚoption_stringÚexplicit_argÚoption_tuplesr”   rd   Úoption_tuples	            r   Ú_parse_optionalzMyOptionParser._parse_optionalÆ  sµ  € ð ð Ø�tØ˜!Œ} DÔ$5Ð5Ð5Ø�tØ˜TÔ8Ð8Ð8ØÔ4°ZÔ@�Ø˜z¨4Ð/Ð/Ý�:‰Œ !Ò#Ð#Ø�tØ�jÐ Ð Ø.8×.>Ò.>¸sÀAÑ.FÔ.FÑ+�˜|Ø  DÔ$?Ð?Ð?Ø!Ô8¸ÔG�FØ! =°,Ð>Ð>ØÔ ð 
(¨
×(=Ò(=¸dÑ(CÔ(Cð 
(Ø $× 7Ò 7¸
Ñ CÔ C�Ý�}Ñ%Ô%¨Ò)Ð)Ý!ØNñô �Cð #ŸišiÐ'QÐ'QÀ=Ð'QÑ'QÔ'QÑQÔQ�GØ—J’J˜s°
ÀwÐ%OÐ%OÑOÑPÔPÐPÐPÝ˜Ñ'Ô'¨1Ò,Ð,Ø&3‘O�\Ø'Ð'ØÔ,×2Ò2°:Ñ>Ô>ð  ØÔ:ð  Ø˜4Ø�jÐ Ð Ø�tØ˜ TÐ)Ð)r   r‹   )r   r   r    r#   r   r   r!   r   r5   r   r×   r   r�   r�   r\   ÚsysÚversion_infor   ÚActionrö   Ú__classcell__©rÑ   s   @r   r_   r_   ”  sR  ø€ € € € € ð 04Ø"ð	;ð ;àð;ð ˜T # s (œ^Ô,ð;ð �sŒmð	;ð
 
ð;ð ;ð ;ð ;ð ;ð ;ð&4˜Sð 4 Xð 4ð 4ð 4ð 4ð )-Ø26ðð à�x ”}Ô%ðð ˜HÔ.Ô/ðð 
Ô	ð	ð ð ð ð" Ô˜&Ò Ð ð!	*Ø!ð!	*à�e˜H X¤_Ô5°s¸HÀS¼MÐIÔJÔKð!	*ð !	*ð !	*ð !	*ð !	*ð !	*ð !	*ð !	*ð !Ð Ð Ð r   r_   c                   óT   ‡ — e Zd ZdZdededdfˆ fd„Zdej        defˆ fd„Z	d	„ Z
ˆ xZS )
rÐ   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.
    rK   Úkwargsr   Nc                 ó„   •— d|vr!t           j                             ¦   «         |d<    t          ¦   «         j        |i |¤Ž d S )NÚwidth)Ú_pytestÚ_ioÚget_terminal_widthrÏ   r5   )r   rK   rý   rÑ   s      €r   r5   z%DropShorterLongHelpFormatter.__init__ò  sG   ø€ à˜&Ð Ð Ý%œk×<Ò<Ñ>Ô>ˆF�7‰OØ�‰ŒÔ˜$Ð) &Ð)Ð)Ð)Ð)Ð)r   rñ   c                 ó  •— t          ¦   «                              |¦  «        }|r|d         dk    r|S t          |dd ¦  «        }|r|S |                     d¦  «        }t	          |¦  «        dk    r;t	          |d         ¦  «        dk    st	          |d         ¦  «        dk    r	||_        |S g }i }|D ]™}t	          |¦  «        dk    s|d         dk    rŒ"|                     d¦  «        st          d	|z  |¦  «        ‚|dd …         }|                     dd
¦  «        }	|	|vs&t	          ||	         ¦  «        t	          |¦  «        k     r|||	<   Œš|D ]•}t	          |¦  «        dk    s|d         dk    r| 	                    |¦  «         |dd …         | 
                    |                     dd
¦  «        ¦  «        k    r*| 	                    |                     ddd¦  «        ¦  «         Œ–d                     |¦  «        }
|
|_        |
S )Nr   r�   Ú_formatted_action_invocationr²   rœ   r@   rÙ   r®   z)long optional argument without "--": [%s]r;   rç   )rÏ   Ú_format_action_invocationrt   rª   r¯   r  rì   r“   r¥   r‰   r¤   r¶   )r   rñ   ÚorgstrÚresrd   Úreturn_listÚ
short_longr6   ÚxxoptionÚ	shortenedÚformatted_action_invocationrÑ   s              €r   r  z6DropShorterLongHelpFormatter._format_action_invocationø  s6  ø€ Ý‘”×2Ò2°6Ñ:Ô:ˆØð 	�f˜Q”i 3Ò&Ð&ØˆMÝ$ VÐ-KÈTÑRÔRˆØð 	ØˆJØ—,’,˜tÑ$Ô$ˆÝˆw‰<Œ<˜1ÒÐ¥# g¨a¤j¡/¤/°QÒ"6Ð"6½#¸gÀa¼j¹/¼/ÈQÒ:NÐ:Nà28ˆFÔ/ØˆMØˆØ%'ˆ
Øð 	1ð 	1ˆFÝ�6‰{Œ{˜aÒÐ 6¨!¤9°Ò#3Ð#3ØØ×$Ò$ TÑ*Ô*ð Ý#Ø?À6ÑJÈFñô ð ð ˜a˜b˜b”zˆHØ ×(Ò(¨¨bÑ1Ô1ˆIØ 
Ð*Ð*­c°*¸YÔ2GÑ.HÔ.HÍ3ØñLô Lò /ð /ð )1�
˜9Ñ%øð ð 	@ð 	@ˆFÝ�6‰{Œ{˜aÒÐ 6¨!¤9°Ò#3Ð#3Ø×"Ò" 6Ñ*Ô*Ð*Ø�a�b�bŒz˜ZŸ^š^¨F¯NªN¸3ÀÑ,CÔ,CÑDÔDÒDÐDØ×"Ò" 6§>¢>°#°s¸AÑ#>Ô#>Ñ?Ô?Ð?øØ&*§i¢i°Ñ&<Ô&<Ð#Ø.IˆÔ+Ø*Ð*r   c                 ó¶   — ddl }g }|                     ¦   «         D ]=}|                     |                     |                     ¦   «         |¦  «        ¦  «         Œ>|S )z}Wrap 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_linesz)DropShorterLongHelpFormatter._split_lines  s[   € ð
 	ˆˆˆàˆØ—O’OÑ%Ô%ð 	=ð 	=ˆDØ�LŠL˜Ÿš t§z¢z¡|¤|°UÑ;Ô;Ñ<Ô<Ð<Ð<Øˆr   )r   r   r    r�   r   r5   r�   rù   r!   r  r  rú   rû   s   @r   rÐ   rÐ   ê  sš   ø€ € € € € ðð ð*˜cð *¨Sð *°Tð *ð *ð *ð *ð *ð *ð$+°´ð $+ÀCð $+ð $+ð $+ð $+ð $+ð $+ðL
ð 
ð 
ð 
ð 
ð 
ð 
r   rÐ   )%r�   r   rQ   r÷   Útypingr   r   r   r   r   r	   r
   r   r   r   r   r   r   Ú_pytest._ior   Ú_pytest.config.exceptionsr   Ú_pytest.deprecatedr   rh   r   r‡   r#   rˆ   Ú	Exceptionr“   r)   r-   ÚArgumentParserr_   ÚHelpFormatterrÐ   r   r   r   ú<module>r     så  ðà €€€Ø Ð Ð Ð Ð Ð Ø 	€	€	€	Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø -Ð -Ð -Ð -Ð -Ð -ð €ðð ð ð ð ñ ô ð ð
 ˆ&‰(Œ(€ð ðz$ð z$ð z$ð z$ð z$ñ z$ô z$ñ „ðz$ðzØ
�7ÐTÔUÔ
Vðàðð ð ð ð"ð ð ð ð �Iñ ô ð ðZ6ð Z6ð Z6ð Z6ð Z6ñ Z6ô Z6ð Z6ðz2$ð 2$ð 2$ð 2$ð 2$ñ 2$ô 2$ð 2$ðjS*ð S*ð S*ð S*ð S*�XÔ,ñ S*ô S*ð S*ðl>ð >ð >ð >ð > 8Ô#9ñ >ô >ð >ð >ð >r   