Ë
    æØjjƒE  ã                  ó|  — d dl mZ d dlZd dlmZ d dlmZ d dlZd dlZd dlZd dl	m
Z
 d dl	mZ d dl	mZ 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e G d„ d«      «       Z	 	 	 	 dd„Z G d„ d«      Z G d„ d«      Z G d„ dej6                  «      Z G d„ dej:                  «      Z G d„ dej>                  «      Z y)é    )ÚannotationsN)ÚCallable)ÚSequence)ÚAny)Úfinal)ÚLiteral)ÚNoReturné   )Ú
UsageError)ÚNOTSET)Úcheck_ispytestÚfile_or_dirc                  ó  — e Zd ZdZ	 	 ddddœ	 	 	 	 	 	 	 	 	 dd„Zedd„«       Zej                  dd„«       Zdd„Z	 d	 	 	 	 	 	 	 dd	„Z	dd
„Z
	 d	 	 	 	 	 dd„Z	 d	 	 	 	 	 dd„Z	 d	 	 	 	 	 dd„Zdefddœ	 	 	 	 	 	 	 	 	 	 	 dd„Zy)ÚParserzÇParser for command line arguments and config-file values.

    :ivar extra_info: Dict of generic param -> value to display in case
        there's an error processing the command line arguments.
    NF)ÚprogÚ	_ispytestc               óx  — t        |«       ddlm} || _        i | _        t        || j                  |¬«      | _        | j                  j                  d«      }t        |d| d¬«      | _	        | j                  g| _
        i | _        | j                  j                  t        d¬	«      }||_        i | _        i | _        y )
Nr   )Úfilescompleter©r   zCustom optionsÚ
_anonymousT©r   Ú*)Únargs)r   Ú_pytest._argcompleter   Ú_processoptÚ
extra_infoÚPytestArgumentParserÚ	optparserÚadd_argument_groupÚOptionGroupr   Ú_groupsÚ	_opt2destÚadd_argumentÚFILE_OR_DIRÚ	completerÚ_inidictÚ_ini_aliases)ÚselfÚusageÚ
processoptr   r   r   Úanonymous_arggroupÚfile_or_dir_args           ú[/opt/eval-harness/bench_task/venv/lib/python3.12/site-packages/_pytest/config/argparsing.pyÚ__init__zParser.__init__    s¤   € ô 	�yÔ!å7à%ˆÔØ*,ˆŒÜ-¨e°T·_±_È4ÔPˆŒØ!Ÿ^™^×>Ñ>Ð?OÓPÐÜ%Ø ¨d¸dô
ˆŒð Ÿ™Ð(ˆŒà)+ˆŒØŸ.™.×5Ñ5´kÈÐ5ÓMˆØ$2ˆÔ!à9;ˆŒà,.ˆÕó    c                ó.   — | j                   j                  S ©N©r   r   ©r(   s    r-   r   zParser.prog=   s   € à�~‰~×"Ñ"Ð"r/   c                ó&   — || j                   _        y r1   r2   )r(   Úvalues     r-   r   zParser.progA   s   € à#ˆ�‰Õr/   c                óZ   — | j                   r|j                  r| j                  |«       y y y r1   )r   Údest)r(   Úoptions     r-   ÚprocessoptionzParser.processoptionE   s*   € Ø×ÒØ�{Š{Ø× Ñ  Õ(ð ð r/   c                óÞ  — | j                   D ]  }|j                  |k(  sŒ|c S  | j                  j                  |xs |«      }t	        ||| d¬«      }d}t        | j                   «      D ]  \  }}|j                  |k(  sŒ n | j                   j                  |dz   |«       | j                  j                  j                  |dz   | j                  j                  j                  «       «       |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!   Únamer   r   r    Ú	enumerateÚinsertÚ_action_groupsÚpop)r(   r;   ÚdescriptionÚafterÚgroupÚarggroupÚiÚgrps           r-   ÚgetgroupzParser.getgroupJ   sÕ   € ð —\‘\ò 	ˆEØ�z‰z˜TÓ!Ø’ð	ð —>‘>×4Ñ4°[Ò5HÀDÓIˆÜ˜H d¨D¸DÔAˆØˆÜ §¡Ó-ò 	‰FˆAˆsØ�x‰x˜5Ó Ùð	ð 	�‰×Ñ˜A ™E 5Ô)ð 	�‰×%Ñ%×,Ñ,¨Q°©U°D·N±N×4QÑ4Q×4UÑ4UÓ4WÔXØˆr/   c                ó<   —  | j                   j                  |i |¤Ž y)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-   rH   zParser.addoptioni   s   € ð 	"ˆ�‰×!Ñ! 4Ð1¨5Ó1r/   c                ó  — ddl m}  || j                  «       |D �cg c]  }t        j                  |«      ‘Œ }}|€t        j                  «       }	 d|_        | j                  j                  ||¬«      |`S c c}w # |`w xY w)zÅParse the arguments.

        Unlike ``parse_known_args`` and ``parse_known_and_unknown_args``,
        raises PrintHelp on `--help` and UsageError on unknown flags

        :meta private:
        r   )Útry_argcompleteT©Ú	namespace)	r   rM   r   ÚosÚfspathÚargparseÚ	NamespaceÚ_raise_print_helpÚparse_intermixed_args)r(   ÚargsrO   rM   ÚxÚstrargss         r-   ÚparsezParser.parsey   s{   € õ 	9á˜Ÿ™Ô'Ø)-Ö. A”2—9‘9˜Q•<Ð.ˆÐ.ØÐÜ ×*Ñ*Ó,ˆIð	,Ø*.ˆIÔ'Ø—>‘>×7Ñ7¸È9Ð7ÓUàÑ+ùò /øð Ñ+ús   �A8Á#A= Á=Bc                ó.   — | j                  ||¬«      d   S )zbParse the known arguments at this point.

        :returns: An argparse namespace object.
        rN   r   )Úparse_known_and_unknown_args)r(   rV   rO   s      r-   Úparse_known_argszParser.parse_known_args‘   s   € ð ×0Ñ0°ÀÐ0ÓKÈAÑNÐNr/   c                ó®  — |D �cg c]  }t        j                  |«      ‘Œ }}t        j                  dk  sdt        j                  cxk  rdk  rgn nd| j                  j                  ||«      \  }}|€J ‚t        |t        «      }g }|D ]&  }|j                  d«      r|n|j                  |«       Œ( ||fS | j                  j                  ||«      S c c}w )a	  Parse the known arguments at this point, and also return the
        remaining unknown flag arguments.

        :returns:
            A tuple containing an argparse namespace object for the known
            arguments, and a list of unknown flag arguments.
        )é   é   é   )r^   é   )r^   ra   r
   ú-)rP   rQ   ÚsysÚversion_infor   r\   Úgetattrr$   Ú
startswithÚappendÚparse_known_intermixed_args)	r(   rV   rO   rW   rX   Úunknownr   Úunknown_flagsÚargs	            r-   r[   z#Parser.parse_known_and_unknown_argsœ   sÊ   € ð *.Ö. A”2—9‘9˜Q•<Ð.ˆÐ.Ü×Ñ˜jÒ(¨G´s×7GÑ7GÔ,TÈ*Õ,Tà!%§¡×!@Ñ!@ÀÈ)Ó!TÑˆI�wØÐ(Ð(Ð(Ü! )¬[Ó9ˆKØ')ˆMØò T�Ø"%§.¡.°Ô"5‘¸;×NÑNÈsÕSðTà˜mÐ+Ð+à—>‘>×=Ñ=¸gÀyÓQÐQùò /s   …C© )Úaliasesc               ó"  — |dv sJ ‚|€d}|t         u rt        |«      }|||f| j                  |<   |D ][  }|| j                  v rt        d|›d�«      ‚| j                  j                  |«      x}�t        |›d|›�«      ‚|| j                  |<   Œ] y)a  Register a configuration file option.

        :param name:
            Name of the configuration.
        :param type:
            Type of the configuration. 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
                * ``int``: an integer
                * ``float``: a floating-point number

                .. versionadded:: 8.4

                    The ``float`` and ``int`` types.

            For ``paths`` and ``pathlist`` types, they are considered relative to the config-file.
            In case the execution is happening without a config-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 a config-file.

            Defaults to ``string`` if ``None`` or not passed.
        :param default:
            Default value if no config-file option exists but is queried.
        :param aliases:
            Additional names by which this option can be referenced.
            Aliases resolve to the canonical name.

            .. versionadded:: 9.0
                The ``aliases`` parameter.

        The value of configuration keys can be retrieved via a call to
        :py:func:`config.getini(name) <pytest.Config.getini>`.
        )	NÚstringÚpathsÚpathlistrV   ÚlinelistÚboolÚintÚfloatNro   zalias z- conflicts with existing configuration optionz is already an alias of )r   Úget_ini_default_for_typer&   Ú
ValueErrorr'   Úget)r(   r;   ÚhelpÚtypeÚdefaultrm   ÚaliasÚalreadys           r-   ÚaddinizParser.addiniµ   sÉ   € ðn ð 

ñ 

ð 
	
ð 

ð ˆ<ØˆDØ”fÑÜ.¨tÓ4ˆGà# T¨7Ð3ˆ�‰�dÑàò 	,ˆEØ˜Ÿ™Ñ%Ü Ø˜U˜IÐ%RÐSóð ð  ×,Ñ,×0Ñ0°Ó7Ð7�ÐDÜ  E 9Ð,DÀWÀKÐ!PÓQÐQØ'+ˆD×Ñ˜eÒ$ñ	,r/   )NN)
r)   ú
str | Noner*   z!Callable[[Argument], None] | Noner   r   r   rs   ÚreturnÚNone©r€   Ústr)r5   rƒ   r€   r�   )r8   ÚArgumentr€   r�   )Ú N)r;   rƒ   r@   rƒ   rA   r   r€   r    ©rJ   rƒ   rK   r   r€   r�   r1   )rV   ú Sequence[str | os.PathLike[str]]rO   úargparse.Namespace | Noner€   úargparse.Namespace)rV   r‡   rO   rˆ   r€   z$tuple[argparse.Namespace, list[str]])r;   rƒ   ry   rƒ   rz   zYLiteral['string', 'paths', 'pathlist', 'args', 'linelist', 'bool', 'int', 'float'] | Noner{   r   rm   úSequence[str]r€   r�   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r.   Úpropertyr   Úsetterr9   rF   rH   rY   r\   r[   r   r~   rl   r/   r-   r   r      s‡  „ ñð !Ø8<ð/ð
  Øñ/àð/ð 6ð/ð
 ð/ð ð/ð 
ó/ð: ò#ó ð#ð 
‡[�[ò$ó ð$ó)ð EIðØðØ&)ðØ7Aðà	óó>2ð& 04ð,à.ð,ð -ð,ð 
ó	,ð6 04ð	Oà.ð	Oð -ð	Oð 
ó		Oð 04ðRà.ðRð -ðRð 
.ó	Rð@ ØðP,ð "$ñP,àðP,ð ðP,ðð	P,ð ðP,ð ðP,ð 
ôP,r/   r   c                ó4   — | dv rg S | dk(  ry| dk(  ry| dk(  ryy)	zs
    Used by addini to get the default value for a given config option type, when
    default is not supplied.
    )rp   rq   rV   rr   rs   Frt   r   ru   g        r…   rl   )rz   s    r-   rv   rv     s3   € ð Ð8Ñ8Øˆ	Ø	�ŠØØ	�ŠØØ	�ŠØàr/   c                  óf   — e Zd ZdZd
d„Zdd„Zdd„Zedd„«       Zedd„«       Z	edd„«       Z
dd„Zy	)r„   z$An option defined in an OptionGroup.c                ó   — || _         y r1   )Ú_action)r(   Úactions     r-   r.   zArgument.__init__   s	   € Øˆ�r/   c                ó.   — | j                   j                  S r1   )r”   Ú__dict__r3   s    r-   rK   zArgument.attrs#  s   € Ø�|‰|×$Ñ$Ð$r/   c                ó.   — | j                   j                  S r1   )r”   Úoption_stringsr3   s    r-   ÚnameszArgument.names&  s   € Ø�|‰|×*Ñ*Ð*r/   c                ó.   — | j                   j                  S r1   )r”   r7   r3   s    r-   r7   zArgument.dest)  ó   € à�|‰|× Ñ Ð r/   c                ó.   — | j                   j                  S r1   )r”   r{   r3   s    r-   r{   zArgument.default-  s   € à�|‰|×#Ñ#Ð#r/   c                ó.   — | j                   j                  S r1   )r”   rz   r3   s    r-   rz   zArgument.type1  rœ   r/   c                óf  — t        | dd «      }|€yg }|dt        | j                  «       «      z   gz  }|dt        | j                  «      z   gz  }|j                  r|dt        | j                  «      z   gz  }|dt        | j
                  «      z   gz  }dj                  dj                  |«      «      S )	Nr”   zArgument(<uninitialized>)zopts: zdest: ztype: z	default: zArgument({})ú, )re   Úreprrš   r7   rz   r{   ÚformatÚjoin)r(   r•   rV   s      r-   Ú__repr__zArgument.__repr__5  s©   € Ü˜˜y¨$Ó/ˆØˆ>Ø.ØˆØ�œD §¡£Ó.Ñ.Ð/Ñ/ˆØ�œD §¡›OÑ+Ð,Ñ,ˆØ�;Š;Ø�X¤ T§Y¡Y£Ñ/Ð0Ñ0ˆDØ�œt D§L¡LÓ1Ñ1Ð2Ñ2ˆØ×$Ñ$ T§Y¡Y¨t£_Ó5Ð5r/   N)r•   úargparse.Actionr€   r�   )r€   údict[str, Any])r€   rŠ   r‚   )r€   r   )r€   z
Any | None)r‹   rŒ   r�   rŽ   r.   rK   rš   r�   r7   r{   rz   r¤   rl   r/   r-   r„   r„     sU   „ Ù.óó%ó+ð ò!ó ð!ð ò$ó ð$ð ò!ó ð!ô
6r/   r„   c                  óV   — e Zd ZdZ	 d	 	 	 	 	 	 	 	 	 dd„Zd	d„Zd	d„Z	 	 	 	 	 	 	 	 d
d„Zy)r    z,A group of options shown in its own section.c                óR   — t        |«       || _        || _        g | _        || _        y r1   )r   Ú	_arggroupr;   ÚoptionsÚparser)r(   rC   r;   r«   r   s        r-   r.   zOptionGroup.__init__E  s(   € ô 	�yÔ!Ø!ˆŒØˆŒ	Ø')ˆŒØˆ�r/   c                ó¤   — t        |«      j                  d„ | j                  D «       «      }|rt        d|› d�«      ‚| j	                  ||d¬«       y)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.
            Note that lower-case short options (e.g. `-x`) are reserved.
        :param attrs:
            Same attributes as the argparse library's :meth:`add_argument()
            <argparse.ArgumentParser.add_argument>` function accepts.
        c              3  óJ   K  — | ]  }|j                  «       D ]  }|–— Œ Œ y ­wr1   )rš   )Ú.0Úoptr;   s      r-   ú	<genexpr>z(OptionGroup.addoption.<locals>.<genexpr>a  s-   è ø€ ò *
Ø°S·Y±Y³[ò*
Ø-1ŒDð*
Øñ*
ùs   ‚!#zoption names z already addedF©Úallow_reservedN)ÚsetÚintersectionrª   rw   Ú_addoption_inner)r(   rJ   rK   Úconflicts       r-   rH   zOptionGroup.addoptionR  sW   € ô �t“9×)Ñ)ñ *
Ø ŸL™Lô*
ó 
ˆñ Ü˜}¨X¨J°nÐEÓFÐFØ×Ñ˜d E¸%ÐÕ@r/   c                ó,   — | j                  ||d¬«       y)z}Like addoption(), but also allows registering short lower case options (e.g. -x),
        which are reserved for pytest core.Tr±   N)rµ   rI   s      r-   Ú
_addoptionzOptionGroup._addoptionh  s   € ð 	×Ñ˜d E¸$ÐÕ?r/   c                óÆ  — |s=|D ]8  }t        |«      dk\  sŒ|d   dk(  sŒ|d   j                  «       sŒ/t        d«      ‚  | j                  j                  |i |¤Ž}t        |«      }| j                  j                  |«       | j                  rT|j                  «       D ]%  }|j                  | j                  j                  |<   Œ' | j                  j                  |«       y y )Né   r   rb   r
   z$lowercase short options are reserved)ÚlenÚislowerrw   r©   r#   r„   rª   rg   r«   rš   r7   r"   r9   )r(   rJ   rK   r²   r¯   r•   r8   r;   s           r-   rµ   zOptionGroup._addoption_innerm  sÊ   € ñ Øò M�Ü�s“8˜q“= S¨¡V¨s£]°s¸1±v·~±~Õ7GÜ$Ð%KÓLÐLðMð -�—‘×,Ñ,¨dÐ<°eÑ<ˆÜ˜&Ó!ˆØ�‰×Ñ˜FÔ#Ø�;Š;ØŸ™›ò :�Ø.4¯k©k�—‘×%Ñ% dÒ+ð:à�K‰K×%Ñ% fÕ-ð r/   N)F)
rC   zargparse._ArgumentGroupr;   rƒ   r«   zParser | Noner   rs   r€   r�   r†   )rJ   ztuple[str, ...]rK   r¦   r²   rs   r€   r�   )r‹   rŒ   r�   rŽ   r.   rH   r¸   rµ   rl   r/   r-   r    r    B  sp   „ Ù6ð  ðà)ðð ðð ð	ð
 ðð 
óóAó,@ð
.Ø#ð.Ø,:ð.ØLPð.à	ô.r/   r    c                  ó<   ‡ — e Zd Zddœ	 	 	 	 	 	 	 dˆ fd„Zdd„Zˆ xZS )r   Nr   c               óF   •— t         ‰| �  ||dt        dd¬«       || _        y )NFú@)r)   r   Úadd_helpÚformatter_classÚallow_abbrevÚfromfile_prefix_chars)Úsuperr.   ÚDropShorterLongHelpFormatterr   )r(   r)   r   r   Ú	__class__s       €r-   r.   zPytestArgumentParser.__init__  s2   ø€ ô 	‰ÑØØØÜ8ØØ"%ð 	ô 	
ð %ˆ�r/   c           	     óò   — | j                   › d|› �}| j                  r?|ddj                  d„ t        | j                  j	                  «       «      D «       «      z   z  }t        | j                  «       |z   «      ‚)z1Transform argparse error message into UsageError.z	: error: ú
c              3  ó2   K  — | ]  \  }}d |› d|› �–— Œ y­w)z  z: Nrl   )r®   ÚkÚvs      r-   r°   z-PytestArgumentParser.error.<locals>.<genexpr>˜  s%   è ø€ ò $Ù"& ! Q�"�Q�C�r˜!˜”ñ$ùs   ‚)r   r   r£   ÚsortedÚitemsr   Úformat_usage)r(   ÚmessageÚmsgs      r-   ÚerrorzPytestArgumentParser.error’  su   € ð —‘�˜9 W IÐ.ˆØ�?Š?Ø�4˜$Ÿ)™)ñ $Ü*0°·±×1FÑ1FÓ1HÓ*Iô$ó ñ ñ ˆCô ˜×*Ñ*Ó,¨sÑ2Ó3Ð3r/   )r)   r   r   zdict[str, str]r   r   r€   r�   )rÏ   rƒ   r€   r	   )r‹   rŒ   r�   r.   rÑ   Ú__classcell__©rÆ   s   @r-   r   r   ~  s8   ø„ ð  ñ%àð%ð #ð%ð
 ð%ð 
õ%÷&	4r/   r   c                  ó8   ‡ — e Zd ZdZdˆ fd„Zdˆ fd„Zdd„Zˆ xZS )rÅ   zß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.
    c                ón   •— d|vr!t         j                  j                  «       |d<   t        ‰| �  |i |¤Ž y )NÚwidth)Ú_pytestÚ_ioÚget_terminal_widthrÄ   r.   )r(   rV   ÚkwargsrÆ   s      €r-   r.   z%DropShorterLongHelpFormatter.__init__¥  s3   ø€ à˜&Ñ Ü%Ÿk™k×<Ñ<Ó>ˆF�7‰OÜ‰Ñ˜$Ð) &Ó)r/   c                óÄ  •— t         ‰	| �  |«      }|r
|d   dk7  r|S |j                  d«      }t        |«      dk(  r$t        |d   «      dk(  st        |d   «      dk(  r|S g }i }|D ]p  }t        |«      dk(  s|d   dk(  rŒ|j	                  d«      sJ d|› d	�«       ‚|dd  }|j                  dd
«      }||vst        ||   «      t        |«      k  sŒl|||<   Œr |D ]s  }t        |«      dk(  s|d   dk(  r|j                  |«       |dd  |j                  |j                  dd
«      «      k(  sŒR|j                  |j                  ddd«      «       Œu dj                  |«      S )Nr   rb   r    rº   r
   ú z--z&long optional argument without "--": [ú]r…   ú=)	rÄ   Ú_format_action_invocationÚsplitr»   rf   Úreplacerg   rx   r£   )
r(   r•   Úorgstrrª   Úreturn_listÚ
short_longr8   ÚxxoptionÚ	shortenedrÆ   s
            €r-   rß   z6DropShorterLongHelpFormatter._format_action_invocation«  s‘  ø€ Ü‘Ñ2°6Ó:ˆÙ�f˜Q‘i 3Ò&ØˆMØ—,‘,˜tÓ$ˆÜˆw‹<˜1Ò¤# g¨a¡j£/°QÒ"6¼#¸gÀa¹j»/ÈQÒ:NàˆMØˆØ%'ˆ
Øò 	1ˆFÜ�6‹{˜aÒ 6¨!¡9°Ò#3ØØ×$Ñ$ TÔ*ð Ø8¸¸ÀÐBóÐ*ð ˜a˜b�zˆHØ ×(Ñ(¨¨bÓ1ˆIØ 
Ñ*¬c°*¸YÑ2GÓ.HÌ3ØóLó /ð )1�
˜9Ò%ð	1ð ò 	@ˆFÜ�6‹{˜aÒ 6¨!¡9°Ò#3Ø×"Ñ" 6Ô*Ø�a�bˆz˜ZŸ^™^¨F¯N©N¸3ÀÓ,CÓDÓDØ×"Ñ" 6§>¡>°#°s¸AÓ#>Õ?ð		@ð
 �y‰y˜Ó%Ð%r/   c                óš   — g }|j                  «       D ]5  }|j                  t        j                  |j	                  «       |«      «       Œ7 |S )z}Wrap lines after splitting on original newlines.

        This allows to have explicit line breaks in the help text.
        )Ú
splitlinesÚextendÚtextwrapÚwrapÚstrip)r(   ÚtextrÖ   ÚlinesÚlines        r-   Ú_split_linesz)DropShorterLongHelpFormatter._split_linesÊ  sA   € ð
 ˆØ—O‘OÓ%ò 	=ˆDØ�L‰LœŸ™ t§z¡z£|°UÓ;Õ<ð	=àˆr/   )rV   r   rÚ   r   r€   r�   )r•   r¥   r€   rƒ   )rí   rƒ   rÖ   rt   r€   z	list[str])r‹   rŒ   r�   rŽ   r.   rß   rð   rÒ   rÓ   s   @r-   rÅ   rÅ   ž  s   ø„ ñõ*õ&÷>r/   rÅ   c                  óR   ‡ — e Zd ZdZ	 d	 	 	 	 	 	 	 	 	 	 	 dˆ fd„Z	 	 	 	 	 	 dd„Zˆ xZS )ÚOverrideIniActionzøCustom argparse action that makes a CLI flag equivalent to overriding an
    option, in addition to behaving like `store_true`.

    This can simplify things since code only needs to inspect the config option
    and not consider the CLI flag.
    c               óL   •— t        ‰| �  ||dg|¢­i |¤Ž || _        || _        y )Nr   )rÄ   r.   Ú
ini_optionÚ	ini_value)	r(   r™   r7   r   rô   rõ   rV   rÚ   rÆ   s	           €r-   r.   zOverrideIniAction.__init__Ý  s.   ø€ ô 	‰Ñ˜¨¨qÐB°4ÒB¸6ÒBØ$ˆŒØ"ˆ�r/   c                óÂ   — t        || j                  d«       t        |dd «      }|€g }|j                  | j                  › d| j
                  › �«       t        |d|«       y )NTÚoverride_inirÞ   )Úsetattrr7   re   rg   rô   rõ   )r(   r«   rO   rV   rÚ   Úcurrent_overridess         r-   Ú__call__zOverrideIniAction.__call__ë  s_   € ô 	�	˜4Ÿ9™9 dÔ+Ü# I¨~¸tÓDÐØÐ$Ø "ÐØ× Ñ  D§O¡OÐ#4°A°d·n±nÐ5EÐ!FÔGÜ�	˜>Ð+<Õ=r/   r1   )r™   rŠ   r7   rƒ   r   zint | str | Nonerô   rƒ   rõ   rƒ   r€   r�   )r«   zargparse.ArgumentParserrO   r‰   r€   r�   )r‹   rŒ   r�   rŽ   r.   rú   rÒ   rÓ   s   @r-   rò   rò   Õ  sm   ø„ ñð #'ð	#à%ð#ð ð#ð  ð	#ð ð#ð ð#ð 
õ#ð>à'ð>ð &ð>ð 
÷>r/   rò   )rz   zRLiteral['string', 'paths', 'pathlist', 'args', 'linelist', 'bool', 'int', 'float']r€   r   )!Ú
__future__r   rR   Úcollections.abcr   r   rP   rc   rê   Útypingr   r   r   r	   Ú
exceptionsr   Ú_pytest._ior×   Ú_pytest.compatr   Ú_pytest.deprecatedr   r$   r   rv   r„   r    ÚArgumentParserr   ÚHelpFormatterrÅ   ÚActionrò   rl   r/   r-   ú<module>r     s»   ðå "ã Ý $Ý $Û 	Û 
Û Ý Ý Ý Ý å "Û Ý !Ý -ð €ð ÷l,ð l,ó ðl,ð^ððð 	ó	÷*"6ñ "6÷J9.ñ 9.ôx4˜8×2Ñ2ô 4ô@4 8×#9Ñ#9ô 4ôn">˜Ÿ™õ ">r/   