ó
    ùÞ jƒE  ã                  ó~  • S SK Jr  S SKrS SKJr  S SKJr  S SKrS SKrS SKrS SK	J
r
  S SK	Jr  S SK	Jr  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      5       r    SS jr " S S5      r " S S5      r " S S\R6                  5      r " S S\R:                  5      r " S S\R>                  5      r g)é    )ÚannotationsN)ÚCallable)ÚSequence)ÚAny)Úfinal)ÚLiteral)ÚNoReturné   )Ú
UsageError)ÚNOTSET)Úcheck_ispytestÚfile_or_dirc                  ó2  • \ rS rSrSr  SSSS.         SS jjjr\SS j5       r\R                  SS j5       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.           SS jjjrSrg)ÚParseré   z»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               ó`  • [        U5        SSKJn  X l        0 U l        [        XR                  US9U l        U R                  R                  S5      n[        USU SS9U l	        U R                  /U l
        0 U l        U R                  R                  [        SS	9nXWl        0 U l        0 U l        g )
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           ÚS/var/www/html/gaurav/venv/lib/python3.13/site-packages/_pytest/config/argparsing.pyÚ__init__ÚParser.__init__    sž   € ô 	�yÔ!å7à%ÔØ*,ˆŒÜ-¨e·_±_È4ÑPˆŒØ!Ÿ^™^×>Ñ>Ð?OÓPÐÜ%Ø ¨d¸dñ
ˆŒð Ÿ™Ð(ˆŒà)+ˆŒØŸ.™.×5Ñ5´kÈÐ5ÐMˆØ$2Ô!à9;ˆŒà,.ˆÕó    c                ó.   • U R                   R                  $ ©N©r   r   ©r)   s    r.   r   ÚParser.prog=   s   € à�~‰~×"Ñ"Ð"r1   c                ó$   • XR                   l        g r3   r4   )r)   Úvalues     r.   r   r6   A   s   € à#�‰Õr1   c                ón   • U R                   (       a$  UR                  (       a  U R                  U5        g g g r3   )r   Údest)r)   Úoptions     r.   ÚprocessoptionÚParser.processoptionE   s*   € Ø××Ø�{�{Ø× Ñ  Õ(ð ð r1   c                óê  • U R                    H  nUR                  U:X  d  M  Us  $    U R                  R                  U=(       d    U5      n[	        XQU SS9nSn[        U R                   5       H  u  pgUR                  U:X  d  M    O   U R                   R                  US-   U5        U R                  R                  R                  US-   U R                  R                  R                  5       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   r
   )	r"   Únamer   r    r!   Ú	enumerateÚinsertÚ_action_groupsÚpop)r)   r?   ÚdescriptionÚafterÚgroupÚarggroupÚiÚgrps           r.   ÚgetgroupÚParser.getgroupJ   sÇ   € ð —\”\ˆEØ�z‰z˜TÕ!Ø’ñ "ð —>‘>×4Ñ4°[×5HÀDÓIˆÜ˜H¨D¸DÑAˆØˆÜ §¡Ö-‰FˆAØ�x‰x˜5Õ Ùñ .ð 	�‰×Ñ˜A ™E 5Ô)ð 	�‰×%Ñ%×,Ñ,¨Q°©U°D·N±N×4QÑ4Q×4UÑ4UÓ4WÔXØˆr1   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.addoptioni   s   € ð 	�‰×!Ò! 4Ð1¨5Ó1r1   c                ó
  • SSK Jn  U" U R                  5        U Vs/ sH  n[        R                  " U5      PM     nnUc  [
        R                  " 5       n SUl        U R                  R                  XRS9U?$ s  snf ! U?f = f)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   rS   r   ÚosÚfspathÚargparseÚ	NamespaceÚ_raise_print_helpÚparse_intermixed_args)r)   ÚargsrU   rS   ÚxÚstrargss         r.   ÚparseÚParser.parsey   sz   € õ 	9á˜Ÿ™Ô'Ù)-Ó.© A”2—9’9˜Q–<©ˆÐ.ØÑÜ ×*Ò*Ó,ˆIð	,Ø*.ˆIÔ'Ø—>‘>×7Ñ7¸Ð7ÐUàÑ+ùò /øð Ñ+ús   �A9ÁA> Á>Bc                ó&   • U R                  XS9S   $ )zRParse the known arguments at this point.

:returns: An argparse namespace object.
rT   r   )Úparse_known_and_unknown_args)r)   r\   rU   s      r.   Úparse_known_argsÚParser.parse_known_args‘   s   € ð ×0Ñ0°Ð0ÐKÈAÑNÐNr1   c                óÂ  • U Vs/ sH  n[         R                  " U5      PM     nn[        R                  S:  d  S[        R                  s=::  a  S:  al  O  OiU R                  R                  XB5      u  p%Uc   e[        U[        5      n/ nU H,  nUR                  S5      (       a  UOUR                  U5        M.     X'4$ U R                  R                  XB5      $ s  snf )zá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.
)é   é   é   )rf   é   )rf   ri   r
   Ú-)rV   rW   ÚsysÚversion_infor   rc   Úgetattrr%   Ú
startswithÚappendÚparse_known_intermixed_args)	r)   r\   rU   r]   r^   Úunknownr   Úunknown_flagsÚargs	            r.   rb   Ú#Parser.parse_known_and_unknown_argsœ   s¿   € ñ *.Ó.© A”2—9’9˜Q–<©ˆÐ.Ü×Ñ˜jÓ(¨G´s×7GÑ7GÕ,TÈ*Ö,Tà!%§¡×!@Ñ!@ÀÓ!TÑˆIØÑ(Ð(Ð(Ü! )¬[Ó9ˆKØ')ˆMÛ�Ø"%§.¡.°×"5Ñ"5‘¸;×NÑNÈsÖSñ àÐ+Ð+à—>‘>×=Ñ=¸gÓQÐQùò /s   …C© )Úaliasesc               ó4  • US;   d   eUc  SnU[         L a  [        U5      nX#U4U R                  U'   U H`  nX`R                  ;   a  [        SU< S35      eU R                  R                  U5      =nb  [        U< SU< 35      eXR                  U'   Mb     g)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Úpathlistr\   ÚlinelistÚboolÚintÚfloatNrx   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Údefaultrv   ÚaliasÚalreadys           r.   ÚaddiniÚParser.addiniµ   s¾   € ðn ð 

ó 

ð 
	
ð 

ð ‰<ØˆDØ”fÒÜ.¨tÓ4ˆGà#¨7Ð3ˆ�‰�dÑãˆEØŸ™Ó%Ü Ø˜U™IÐ%RÐSóð ð  ×,Ñ,×0Ñ0°Ó7Ð7�ÑDÜ  E¡9Ð,DÀWÁKÐ!PÓQÐQØ'+×Ñ˜eÓ$ò r1   )r   r"   r(   r'   r#   r   r   r   )NN)
r*   ú
str | Noner+   z!Callable[[Argument], None] | Noner   r‰   r   r|   ÚreturnÚNone©rŠ   Ústr)r8   r�   rŠ   r‹   )r;   ÚArgumentrŠ   r‹   )Ú N)r?   r�   rD   r�   rE   r‰   rŠ   r!   ©rO   r�   rP   r   rŠ   r‹   r3   )r\   ú Sequence[str | os.PathLike[str]]rU   úargparse.Namespace | NonerŠ   úargparse.Namespace)r\   r‘   rU   r’   rŠ   z$tuple[argparse.Namespace, list[str]])r?   r�   r‚   r�   rƒ   zYLiteral['string', 'paths', 'pathlist', 'args', 'linelist', 'bool', 'int', 'float'] | Noner„   r   rv   úSequence[str]rŠ   r‹   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r/   Úpropertyr   Úsetterr<   rJ   rM   r_   rc   rb   r   r‡   Ú__static_attributes__ru   r1   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,ñ P,r1   r   c                ó>   • U S;   a  / $ U S:X  a  gU S:X  a  gU S:X  a  gg)	zg
Used by addini to get the default value for a given config option type, when
default is not supplied.
)ry   rz   r\   r{   r|   Fr}   r   r~   g        r�   ru   )rƒ   s    r.   r   r     s3   € ð Ð8Ó8Øˆ	Ø	�‹ØØ	�‹ØØ	�‹Øàr1   c                  ó|   • \ rS rSrSrSS jrSS jrSS jr\SS j5       r	\SS j5       r
\SS j5       rSS	 jrS
rg)rŽ   i  z$An option defined in an OptionGroup.c                ó   • Xl         g r3   ©Ú_action)r)   Úactions     r.   r/   ÚArgument.__init__   s   € Ø�r1   c                ó.   • U R                   R                  $ r3   )r¡   Ú__dict__r5   s    r.   rP   ÚArgument.attrs#  s   € Ø�|‰|×$Ñ$Ð$r1   c                ó.   • U R                   R                  $ r3   )r¡   Úoption_stringsr5   s    r.   ÚnamesÚArgument.names&  s   € Ø�|‰|×*Ñ*Ð*r1   c                ó.   • U R                   R                  $ r3   )r¡   r:   r5   s    r.   r:   ÚArgument.dest)  ó   € à�|‰|× Ñ Ð r1   c                ó.   • U R                   R                  $ r3   )r¡   r„   r5   s    r.   r„   ÚArgument.default-  s   € à�|‰|×#Ñ#Ð#r1   c                ó.   • U R                   R                  $ r3   )r¡   rƒ   r5   s    r.   rƒ   ÚArgument.type1  r­   r1   c                ór  • [        U SS 5      nUc  g/ nUS[        U R                  5       5      -   /-  nUS[        U R                  5      -   /-  nUR                  (       a  US[        U R                  5      -   /-  nUS[        U R
                  5      -   /-  nSR                  SR                  U5      5      $ )	Nr¡   zArgument(<uninitialized>)zopts: zdest: ztype: z	default: zArgument({})ú, )rm   Úreprr©   r:   rƒ   r„   ÚformatÚjoin)r)   r¢   r\   s      r.   Ú__repr__Ú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Ð5r1   r    N)r¢   úargparse.ActionrŠ   r‹   )rŠ   údict[str, Any])rŠ   r”   rŒ   )rŠ   r   )rŠ   z
Any | None)r•   r–   r—   r˜   r™   r/   rP   r©   rš   r:   r„   rƒ   r·   rœ   ru   r1   r.   rŽ   rŽ     sU   † Ù.ôô%ô+ð ó!ó ð!ð ó$ó ð$ð ó!ó ð!÷
6r1   rŽ   c                  óh   • \ rS rSrSr S	         S
S jjrSS jrSS jr        SS jrSr	g)r!   iB  z,A group of options shown in its own section.c                óL   • [        U5        Xl        X l        / U l        X0l        g r3   )r   Ú	_arggroupr?   ÚoptionsÚparser)r)   rG   r?   r¿   r   s        r.   r/   ÚOptionGroup.__init__E  s"   € ô 	�yÔ!Ø!ŒØŒ	Ø')ˆŒØ�r1   c                ó¦   • [        U5      R                  S U R                   5       5      nU(       a  [        SU S35      eU R	                  X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.
    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  óN   #   • U H  oR                  5        H  o"v •  M     M     g 7fr3   )r©   )Ú.0Úoptr?   s      r.   Ú	<genexpr>Ú(OptionGroup.addoption.<locals>.<genexpr>a  s   é € ð *
Ù(�S·Y±Y¶[¨TŒD±[‰DšLùs   ‚#%zoption names z already addedF©Úallow_reservedN)ÚsetÚintersectionr¾   r€   Ú_addoption_inner)r)   rO   rP   Úconflicts       r.   rM   ÚOptionGroup.addoptionR  sU   € ô �t“9×)Ñ)ñ *
Ø ŸLšLó*
ó 
ˆö Ü˜}¨X¨J°nÐEÓFÐFØ×Ñ˜d¸%ÐÒ@r1   c                ó$   • U R                  XSS9  g)zuLike addoption(), but also allows registering short lower case options (e.g. -x),
which are reserved for pytest core.TrÇ   N)rË   rN   s      r.   Ú
_addoptionÚOptionGroup._addoptionh  s   € ð 	×Ñ˜d¸$ÐÒ?r1   c                óô  • U(       dH  U HB  n[        U5      S:¼  d  M  US   S:X  d  M  US   R                  5       (       d  M9  [        S5      e   U R                  R                  " U0 UD6n[        U5      nU R                  R                  U5        U R                  (       aV  UR                  5        H&  nUR                  U R                  R                  U'   M(     U R                  R                  U5        g g )Né   r   rj   r
   z$lowercase short options are reserved)ÚlenÚislowerr€   r½   r$   rŽ   r¾   ro   r¿   r©   r:   r#   r<   )r)   rO   rP   rÈ   rÄ   r¢   r;   r?   s           r.   rË   ÚOptionGroup._addoption_innerm  s¿   € ö Û�Ü�s“8˜q•= S¨¡V¨s¥]°s¸1±v·~±~×7GÓ7GÜ$Ð%KÓLÐLñ ð —‘×,Ò,¨dÐ<°eÑ<ˆÜ˜&Ó!ˆØ�‰×Ñ˜FÔ#Ø�;�;ØŸ™ž�Ø.4¯k©k�—‘×%Ñ% dÓ+ñ 'à�K‰K×%Ñ% fÕ-ð r1   )r½   r?   r¾   r¿   N)F)
rG   zargparse._ArgumentGroupr?   r�   r¿   zParser | Noner   r|   rŠ   r‹   r�   )rO   ztuple[str, ...]rP   rº   rÈ   r|   rŠ   r‹   )
r•   r–   r—   r˜   r™   r/   rM   rÏ   rË   rœ   ru   r1   r.   r!   r!   B  sp   † Ù6ð  ðà)ðð ðð ð	ð
 ðð 
õôAô,@ð
.Ø#ð.Ø,:ð.ØLPð.à	÷.r1   r!   c                  óL   ^ • \ rS rSrSS.       SU 4S jjjrSS jrSrU =r$ )	r   i~  Nr   c          	     ó>   >• [         TU ]  UUS[        SSS9  X l        g )NFÚ@)r*   r   Úadd_helpÚformatter_classÚallow_abbrevÚfromfile_prefix_chars)Úsuperr/   ÚDropShorterLongHelpFormatterr   )r)   r*   r   r   Ú	__class__s       €r.   r/   ÚPytestArgumentParser.__init__  s0   ø€ ô 	‰ÑØØØÜ8ØØ"%ð 	ñ 	
ð %�r1   c           	     óü   • U R                    SU 3nU R                  (       a?  USSR                  S [        U R                  R	                  5       5       5       5      -   -  n[        U R                  5       U-   5      e)z1Transform argparse error message into UsageError.z	: error: Ú
c              3  ó4   #   • U H  u  pS U SU 3v •  M     g7f)z  z: Nru   )rÃ   ÚkÚvs      r.   rÅ   Ú-PytestArgumentParser.error.<locals>.<genexpr>˜  s"   é € ð $Ù*I¡$ !�"�Q�C�r˜!˜•Ò*Iùs   ‚)r   r   r¶   ÚsortedÚitemsr   Úformat_usage)r)   ÚmessageÚmsgs      r.   ÚerrorÚPytestArgumentParser.error’  su   € ð —‘�˜9 W IÐ.ˆØ�?�?Ø�4˜$Ÿ)™)ñ $Ü*0°·±×1FÑ1FÓ1HÔ*Ió$ó ñ ñ ˆCô ˜×*Ñ*Ó,¨sÑ2Ó3Ð3r1   )r   )r*   r‰   r   zdict[str, str]r   r‰   rŠ   r‹   )rê   r�   rŠ   r	   )r•   r–   r—   r˜   r/   rì   rœ   Ú__classcell__©rß   s   @r.   r   r   ~  sB   ø† ð  ñ%àð%ð #ð%ð
 ð%ð 
÷%ð %÷&	4ò 	4r1   r   c                  óJ   ^ • \ rS rSrSrSU 4S jjrSU 4S jjrS	S jrSrU =r	$ )
rÞ   iž  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                ót   >• SU;  a!  [         R                  R                  5       US'   [        TU ]  " U0 UD6  g )NÚwidth)Ú_pytestÚ_ioÚget_terminal_widthrÝ   r/   )r)   r\   Úkwargsrß   s      €r.   r/   Ú%DropShorterLongHelpFormatter.__init__¥  s3   ø€ à˜&Ó Ü%Ÿk™k×<Ñ<Ó>ˆF�7‰OÜ‰Ò˜$Ð) &Ó)r1   c                óø  >• [         T	U ]  U5      nU(       a  US   S:w  a  U$ UR                  S5      n[        U5      S:X  a&  [        US   5      S:X  d  [        US   5      S:X  a  U$ / n0 nU Hz  n[        U5      S:X  d	  US   S:X  a  M  UR	                  S5      (       d   SU S	35       eUSS  nUR                  SS
5      nX…;  d  [        XX   5      [        U5      :  d  Mv  XuU'   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      $ )Nr   rj   r³   rÒ   r
   Ú z--z&long optional argument without "--": [Ú]r�   Ú=)	rÝ   Ú_format_action_invocationÚsplitrÓ   rn   Úreplacero   r�   r¶   )
r)   r¢   Úorgstrr¾   Úreturn_listÚ
short_longr;   ÚxxoptionÚ	shortenedrß   s
            €r.   rü   Ú6DropShorterLongHelpFormatter._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ØˆØ%'ˆ
ÛˆFÜ�6‹{˜aÓ 6¨!¡9°Ó#3ÙØ×$Ñ$ T×*Ñ*ð Ø8¸¸ÀÐBóÐ*ð ˜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Ó#>Ö?ñ	 ð
 �y‰y˜Ó%Ð%r1   c                ó    • / nUR                  5        H7  nUR                  [        R                  " UR	                  5       U5      5        M9     U$ )zmWrap 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_linesÚ)DropShorterLongHelpFormatter._split_linesÊ  s<   € ð
 ˆØ—O‘OÖ%ˆDØ�L‰LœŸš t§z¡z£|°UÓ;Ö<ñ &àˆr1   ru   )r\   r   rö   r   rŠ   r‹   )r¢   r¹   rŠ   r�   )r  r�   rò   r}   rŠ   z	list[str])
r•   r–   r—   r˜   r™   r/   rü   r  rœ   rî   rï   s   @r.   rÞ   rÞ   ž  s   ø† ñ÷*÷&÷>ò r1   rÞ   c                  ób   ^ • \ rS rSrSr S           SU 4S jjjr      SS jrSrU =r$ )	ÚOverrideIniActioniÕ  zè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               óH   >• [         TU ]  " XS/UQ70 UD6  X@l        XPl        g )Nr   )rÝ   r/   Ú
ini_optionÚ	ini_value)	r)   r¨   r:   r   r  r  r\   rö   rß   s	           €r.   r/   ÚOverrideIniAction.__init__Ý  s(   ø€ ô 	‰Ò˜¨qÐB°4ÒB¸6ÒBØ$ŒØ"�r1   c                óÂ   • [        X R                  S5        [        USS 5      nUc  / nUR                  U R                   SU R
                   35        [        USU5        g )NTÚoverride_inirû   )Úsetattrr:   rm   ro   r  r  )r)   r¿   rU   r\   rö   Úcurrent_overridess         r.   Ú__call__ÚOverrideIniAction.__call__ë  s]   € ô 	�	Ÿ9™9 dÔ+Ü# I¨~¸tÓDÐØÑ$Ø "ÐØ× Ñ  D§O¡OÐ#4°A°d·n±nÐ5EÐ!FÔGÜ�	˜>Ð+<Õ=r1   )r  r  r3   )r¨   r”   r:   r�   r   zint | str | Noner  r�   r  r�   rŠ   r‹   )r¿   zargparse.ArgumentParserrU   r“   rŠ   r‹   )	r•   r–   r—   r˜   r™   r/   r  rœ   rî   rï   s   @r.   r  r  Õ  sw   ø† ñð #'ð	#à%ð#ð ð#ð  ð	#ð ð#ð ð#ð 
÷#ð #ð>à'ð>ð &ð>ð 
÷>ò >r1   r  )rƒ   zRLiteral['string', 'paths', 'pathlist', 'args', 'linelist', 'bool', 'int', 'float']rŠ   r   )!Ú
__future__r   rX   Úcollections.abcr   r   rV   rk   r  Útypingr   r   r   r	   Ú
exceptionsr   Ú_pytest._ioró   Ú_pytest.compatr   Ú_pytest.deprecatedr   r%   r   r   rŽ   r!   ÚArgumentParserr   ÚHelpFormatterrÞ   ÚActionr  ru   r1   r.   Ú<module>r&     s»   ðå "ã Ý $Ý $Û 	Û 
Û Ý Ý Ý Ý å "Û Ý !Ý -ð €ð ÷l,ð l,ó ðl,ð^ððð 	ô	÷*"6ñ "6÷J9.ñ 9.ôx4˜8×2Ñ2ô 4ô@4 8×#9Ñ#9ô 4ôn">˜Ÿ™õ ">r1   