ó
    Eñi×O  ã                  ó®  • S SK Jr  S SKrS SKJr  S SKJ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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\R>                  5      r  " S S\RB                  5      r"g) é    )ÚannotationsN)ÚCallable)ÚMapping)ÚSequence)ÚAny)Úfinal)ÚLiteral)ÚNoReturné   )Ú
UsageError)Úcheck_ispytestÚfile_or_dirc                  ó   • \ rS rSrSS jrSrg)ÚNotSeté   c                ó   • g)Nz<notset>© ©Úselfs    ÚV/home/mande/repo/quber/.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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©Ú	_ispytestc               óV  • [        U5        SSKJn  X l        0 U l        [        XU R                  5      U l        U R                  R                  S5      n[        USU SS9U l	        U R                  /U l
        U R                  R                  [        SS9nXFl        0 U l        0 U l        g )	Nr   )ÚfilescompleterzCustom optionsÚ
_anonymousTr%   Ú*)Únargs)r   Ú_pytest._argcompleter(   Ú_processoptÚ
extra_infoÚPytestArgumentParserÚ	optparserÚadd_argument_groupÚOptionGroupr)   Ú_groupsÚadd_argumentÚFILE_OR_DIRÚ	completerÚ_inidictÚ_ini_aliases)r   ÚusageÚ
processoptr&   r(   Úanonymous_arggroupÚfile_or_dir_args          r   Ú__init__ÚParser.__init__'   s—   € ô 	�yÔ!å7à%ÔØ*,ˆŒÜ-¨d¸4¿?¹?ÓKˆŒØ!Ÿ^™^×>Ñ>Ð?OÓPÐÜ%Ø ¨d¸dñ
ˆŒð Ÿ™Ð(ˆŒØŸ.™.×5Ñ5´kÈÐ5ÐMˆØ$2Ô!à9;ˆŒà,.ˆÕr   c                ó.   • U R                   R                  $ ©N©r0   Úprogr   s    r   rB   ÚParser.progA   s   € à�~‰~×"Ñ"Ð"r   c                ó$   • XR                   l        g r@   rA   )r   Úvalues     r   rB   rC   E   s   € à#�‰Õr   c                ón   • U R                   (       a$  UR                  (       a  U R                  U5        g g g r@   )r-   Údest)r   Úoptions     r   ÚprocessoptionÚParser.processoptionI   s*   € Ø××Ø�{�{Ø× Ñ  Õ(ð ð r   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   )	r3   Únamer0   r1   r2   Ú	enumerateÚinsertÚ_action_groupsÚpop)r   rL   ÚdescriptionÚafterÚgroupÚarggroupÚiÚgrps           r   ÚgetgroupÚParser.getgroupN   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Øˆ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   rZ   ÚParser.addoptionm   s   € ð 	�‰×!Ò! 4Ð1¨5Ó1r   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,   r_   r0   ÚosÚfspathÚargparseÚ	NamespaceÚ_raise_print_helpÚparse_intermixed_args)r   Úargsra   r_   ÚxÚstrargss         r   ÚparseÚParser.parse}   sz   € õ 	9á˜Ÿ™Ô'Ù)-Ó.ª A”2—9’9˜Q–<©ˆÐ.ØÑÜ ×*Ò*Ó,ˆIð	,Ø*.ˆIÔ'Ø—>‘>×7Ñ7¸Ð7ÐUàÑ+ùò /øð Ñ+ús   � A:ÁA? Á?Bc                ó&   • U R                  XS9S   $ )zRParse the known arguments at this point.

:returns: An argparse namespace object.
r`   r   )Úparse_known_and_unknown_args)r   rh   ra   s      r   Úparse_known_argsÚParser.parse_known_args•   s   € ð ×0Ñ0°Ð0ÐKÈAÑNÐNr   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.
)é   é   é   )rr   é   )rr   ru   r   Ú-)rb   rc   ÚsysÚversion_infor0   ro   Úgetattrr5   Ú
startswithÚappendÚparse_known_intermixed_args)	r   rh   ra   ri   rj   Úunknownr   Úunknown_flagsÚargs	            r   rn   Ú#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r   )Ú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Úpathlistrh   ÚlinelistÚboolÚintÚfloatNrƒ   zalias z- conflicts with existing configuration optionz is already an alias of )ÚNOT_SETÚget_ini_default_for_typer7   Ú
ValueErrorr8   Úget)r   rL   ÚhelpÚtypeÚdefaultr�   ÚaliasÚalreadys           r   ÚaddiniÚParser.addini¹   s¾   € ðn ð 

ó 

ð 
	
ð 

ð ‰<ØˆDØ”gÒÜ.¨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Ó$ò r   )r)   r3   r8   r7   r-   r.   r0   )NN)r9   ú
str | Noner:   z!Callable[[Argument], None] | Noner&   r‡   r   ÚNoner   )rE   r   r   r–   )rH   ÚArgumentr   r–   )Ú N)rL   r   rQ   r   rR   r•   r   r2   ©r[   r   r\   r   r   r–   r@   )rh   ú Sequence[str | os.PathLike[str]]ra   úargparse.Namespace | Noner   úargparse.Namespace)rh   rš   ra   r›   r   z$tuple[argparse.Namespace, list[str]])rL   r   rŽ   r   r�   zYLiteral['string', 'paths', 'pathlist', 'args', 'linelist', 'bool', 'int', 'float'] | Noner�   r   r�   úSequence[str]r   r–   )r   r   r   r    Ú__doc__r=   ÚpropertyrB   ÚsetterrI   rW   rZ   rk   ro   rn   rŠ   r“   r!   r   r   r   r#   r#      s€  † ñð !Ø8<ð/ð
  ñ/àð/ð 6ð/ð
 ð/ð 
ö/ð4 ó#ó ð#ð 
‡[�[ó$ó ð$ô)ð 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,r   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.
)r„   r…   rh   r†   r‡   Frˆ   r   r‰   g        r˜   r   )r�   s    r   r‹   r‹     s3   € ð Ð8Ó8Øˆ	Ø	�‹ØØ	�‹ØØ	�‹Øàr   c                  ó,   • \ rS rSrSrSS jrSS jrSrg)	ÚArgumentErrori!  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¥   rH   s      r   r=   Ú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   rH   zArgument | strr   r–   r   )r   r   r   r    rž   r=   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—   i0  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�   rG   r   é   Nrv   Ú_r   z???zneed a long or short option)Ú_attrsÚ_short_optsÚ
_long_optsr�   ÚKeyErrorr�   Ú_set_opt_stringsr�   rG   ÚreplaceÚ
IndexErrorr£   )r   Únamesr\   rG   Úes        r   r=   ÚArgument.__init__9  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   r·   ÚArgument.namesT  s   € Ø×Ñ $§/¡/Ñ1Ð1r   c                óœ   • SSSU R                   4 H  n [        X5      U R                  U'   M     U R                  $ ! [         a     M9  f = f)Nr�   rG   rŽ   )rG   ry   r°   ÚAttributeError)r   Úattrs     r   r\   ÚArgument.attrsW  sQ   € à ¨°·	±	Ó:ˆDðÜ$+¨DÓ$7�—‘˜DÓ!ñ ;ð
 �{‰{Ðøô "ó Úðús   •=½
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   rv   r   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   r[   Úopts      r   r´   ÚArgument._set_opt_strings`  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²   rG   Úhasattrr�   r�   ÚformatÚjoin)r   rh   s     r   r   ÚArgument.__repr__}  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�   rG   r�   N)r·   r   r\   r   r   r–   )r   z	list[str])r   zMapping[str, Any])r[   r�   r   r–   r   )r   r   r   r    rž   r=   r·   r\   r´   r   r!   r   r   r   r—   r—   0  s!   † ñôPô62ôô,÷:6r   r—   c                  ó\   • \ rS rSrSr S	         S
S jjrSS jrSS jrS	SS jjrSr	g)r2   i‹  z,A group of options shown in its own section.c                óL   • [        U5        Xl        X l        / U l        X0l        g r@   )r   Ú	_arggrouprL   ÚoptionsÚparser)r   rT   rL   rÐ   r&   s        r   r=   Ú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  óR   #   • U  H  oR                  5         H  o"v •  M     M     g 7fr@   )r·   )Ú.0rÃ   rL   s      r   Ú	<genexpr>Ú(OptionGroup.addoption.<locals>.<genexpr>©  s   é € ð *
Ú(�S·Y±Y·[¨TŒD±[‰DšLùs   ‚%'zoption names z already addedF©Ú
shortupperN)ÚsetÚintersectionrÏ   rŒ   r—   Ú_addoption_instance)r   r[   r\   ÚconflictrH   s        r   rZ   ÚOptionGroup.addoption›  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   r[   r\   rH   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R                  5       0 UR                  5       D6  U R                  R                  U5        g )Nr   rv   r   zlowercase shortoptions reserved)r±   ÚislowerrŒ   rÐ   rI   rÎ   r4   r·   r\   rÏ   r{   )r   rH   rØ   rÃ   s       r   rÛ   ÚOptionGroup._addoption_instanceµ  sŒ   € ÞØ×)Ô)�Ø�q‘6˜S•= S¨¡V§^¡^×%5Ó%5Ü$Ð%FÓGÐGñ *ð �;�;Ø�K‰K×%Ñ% fÔ-à�‰×#Ò# V§\¡\£^ÐF°v·|±|³~ÒFØ�‰×Ñ˜FÕ#r   )rÎ   rL   rÏ   rÐ   N)F)
rT   zargparse._ArgumentGrouprL   r   rÐ   zParser | Noner&   r‡   r   r–   r™   )rH   r—   rØ   r‡   r   r–   )
r   r   r   r    rž   r=   rZ   rß   rÛ   r!   r   r   r   r2   r2   ‹  sS   † Ù6ð  ðà)ðð ðð ð	ð
 ðð 
õô;ô,:÷
$ñ 
$r   r2   c                  óF   ^ • \ rS rSr        SU 4S jjrSS jrSrU =r$ )r/   iÂ  c                óH   >• Xl         [        TU ]	  US[        SSS9  X0l        g )NFÚ@)r9   Úadd_helpÚformatter_classÚallow_abbrevÚfromfile_prefix_chars)Ú_parserÚsuperr=   ÚDropShorterLongHelpFormatterr.   )r   rÐ   r9   r.   Ú	__class__s       €r   r=   ÚPytestArgumentParser.__init__Ã  s2   ø€ ð ŒÜ‰ÑØØÜ8ØØ"%ð 	ñ 	
ð %�r   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  ó6   #   • U  H  u  pS U SU 3v •  M     g7f)z  r©   Nr   )rÔ   ÚkÚvs      r   rÕ   Ú-PytestArgumentParser.error.<locals>.<genexpr>Ù  s"   é € ð $Ú*I¡$ !�"�Q�C�r˜!˜•Ò*Iùs   ‚)rB   r.   rÊ   ÚsortedÚitemsr   Úformat_usage)r   Úmessager¥   s      r   ÚerrorÚPytestArgumentParser.errorÕ  ss   € à—‘�˜9 W IÐ.ˆØ�?�?Ø�4˜$Ÿ)™)ñ $Ü*0°·±×1FÑ1FÓ1HÔ*Ió$ó ñ ñ ˆCô ˜×*Ñ*Ó,¨sÑ2Ó3Ð3r   )rë   r.   )rÐ   r#   r9   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   ø† ð%àð%ð ð%ð #ð	%ð
 
÷%÷$4ò 4r   r/   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ì   r=   )r   rh   Úkwargsrî   s      €r   r=   Ú%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   rv   Ú_formatted_action_invocationrÆ   r®   r   Ú rÁ   z&long optional argument without "--": [Ú]r˜   Ú=)rì   Ú_format_action_invocationry   ÚsplitrÂ   r  rz   r£   rµ   r{   r�   rÊ   )r   ÚactionÚorgstrÚresrÏ   Úreturn_listÚ
short_longrH   Ú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Ú
splitlinesÚextendÚwrapÚstrip)r   Útextr   r  ÚlinesÚlines         r   Ú_split_linesÚ)DropShorterLongHelpFormatter._split_lines  s?   € ó
 	àˆØ—O‘OÖ%ˆDØ�L‰L˜Ÿ™ t§z¡z£|°UÓ;Ö<ñ &àˆr   r   )rh   r   r  r   r   r–   )r  zargparse.Actionr   r   )
r   r   r   r    rž   r=   r  r  r!   rü   rý   s   @r   rí   rí   ß  s   ø† ñ÷*÷$+÷L
ð 
r   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   Úoption_stringsrG   r+   r$  r%  rh   r  rî   s	           €r   r=   ÚOverrideIniAction.__init__(  s(   ø€ ô 	‰Ò˜¨qÐB°4ÒB¸6ÒBØ$ŒØ"�r   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
  )ÚsetattrrG   ry   r{   r$  r%  )r   rÐ   ra   rh   r  Úcurrent_overridess         r   Ú__call__ÚOverrideIniAction.__call__6  s]   € ô 	�	Ÿ9™9 dÔ+Ü# I¨~¸tÓDÐØÑ$Ø "ÐØ× Ñ  D§O¡OÐ#4°A°d·n±nÐ5EÐ!FÔGÜ�	˜>Ð+<Õ=r   )r$  r%  r@   )r&  r�   rG   r   r+   zint | str | Noner$  r   r%  r   r   r–   )rÐ   zargparse.ArgumentParserra   rœ   r   r–   )	r   r   r   r    rž   r=   r,  r!   rü   rý   s   @r   r"  r"     sw   ø† ñð #'ð	#à%ð#ð ð#ð  ð	#ð ð#ð ð#ð 
÷#ð #ð>à'ð>ð &ð>ð 
÷>ò >r   r"  )r�   zRLiteral['string', 'paths', 'pathlist', 'args', 'linelist', 'bool', 'int', 'float']r   r   )#Ú
__future__r   rd   Úcollections.abcr   r   r   rb   rw   Útypingr   r   r	   r
   Ú
exceptionsr   Ú_pytest._ior  Ú_pytest.deprecatedr   r5   r   rŠ   r#   r‹   Ú	Exceptionr£   r—   r2   ÚArgumentParserr/   ÚHelpFormatterrí   ÚActionr"  r   r   r   Ú<module>r8     sØ   ðå "ã Ý $Ý #Ý $Û 	Û 
Ý Ý Ý Ý å "Û Ý -ð €÷ñ ñ
 ‹(€ð ÷i,ð i,ó ði,ðXððð 	ô	ô*�Iô ÷X6ñ X6÷v4$ñ 4$ôn4˜8×2Ñ2ô 4ô:> 8×#9Ñ#9ô >ôB">˜Ÿ™õ ">r   