+
    yjRP                       ^ RI Ht ^ RIt^ RIHt ^ RIt^ RIt^ RIHt ^ RIHt ^ RIH	t	 ^ RIH
t
 ^ RIHt ^ R	IHt ^ R
IHt ^ RIHt ^ RIHt ^ RIt^ RIHt ^ RIHt Rt ! R R4      t]! 4       t]
 ! R R4      4       tR R lt ! R R]4      t ! R R4      t ! R R4      t ! R R]P>                  4      t  ! R R]PB                  4      t"R# )     )annotationsN)gettext)Any)Callable)cast)final)List)Literal)Mapping)NoReturn)Sequence)
UsageError)check_ispytestfile_or_dirc                  "    ] tR t^tR R ltRtR# )NotSetc                   V ^8  d   QhRR/#    returnstr )formats   "M/var/www/html/2rare/lib/python3.14/site-packages/_pytest/config/argparsing.py__annotate__NotSet.__annotate__   s      #     c                	    R # )z<notset>r   selfs   &r   __repr__NotSet.__repr__   s    r   r   N)__name__
__module____qualname____firstlineno__r!   __static_attributes__r   r   r   r   r      s     r   r   c                      ] tR t^"t$ RtRtR]R&   RRR/R R llltR	 R
 ltRR R llt	R R lt
RR R lltR R ltRR R lltRR R lltRR R lltR]3R R lltRtR# )ParserzParser for command line arguments and ini-file values.

:ivar extra_info: Dict of generic param -> value to display in case
    there's an error processing the command line arguments.
N
str | Noneprog	_ispytestFc               (    V ^8  d   QhRRRRRRRR/# )	r   usager*   
processoptz!Callable[[Argument], None] | Noner,   boolr   Noner   )r   s   "r   r   Parser.__annotate__,   s2     - -- 6-
 - 
-r   c               	    \        V4       \        R V RR7      V n        . V n        W n        Wn        / V n        . V n        / V n        R# )zCustom optionsTparserr,   N)	r   OptionGroup
_anonymous_groups_processopt_usage_inidict	_ininames
extra_info)r    r.   r/   r,   s   &&&$r   __init__Parser.__init__,   sD     	y!%&6ttT*,%@B$&*,r   c                    V ^8  d   QhRRRR/# )r   optionArgumentr   r1   r   )r   s   "r   r   r2   <   s     ) )H ) )r   c                	x    V P                   '       d(   VP                  '       d   V P                  V4       R # R # R # N)r9   dest)r    rA   s   &&r   processoptionParser.processoption<   s/    {{{  (  r   c               (    V ^8  d   QhRRRRRRRR/# )r   namer   descriptionafterr*   r   r6   r   )r   s   "r   r   r2   A   s,      &)7A	r   c                   V P                    F  pVP                  V8X  g   K  Vu # 	  \        WV RR7      p^ p\        V P                   4       F  w  rVVP                  V8X  g   K   M	  V P                   P	                  V^,           V4       V# )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``.
Tr4   )r8   rI   r6   	enumerateinsert)r    rI   rJ   rK   groupigrps   &&&&   r   getgroupParser.getgroupA   s{     \\EzzT! " DddK-FAxx5  . 	AE5)r   c               $    V ^8  d   QhRRRRRR/# r   optsr   attrsr   r   r1   r   )r   s   "r   r   r2   [   s!     2 2s 2S 2T 2r   c                >    V P                   P                  ! V/ VB  R# )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)r7   	addoption)r    rV   rW   s   &*,r   rY   Parser.addoption[   s     	!!4151r   c               $    V ^8  d   QhRRRRRR/# r   args Sequence[str | os.PathLike[str]]	namespaceargparse.Namespace | Noner   argparse.Namespacer   )r   s   "r   r   r2   k   s-     
G 
G.
G -
G 
	
Gr   c                	    ^ RI Hp V P                  4       V n        V! V P                  4       V Uu. uF  p\        P
                  ! V4      NK  	  ppV P                  P                  WRR7      # u upi )r   )try_argcompleter_   )_pytest._argcompleterc   
_getparser	optparserosfspath
parse_args)r    r]   r_   rc   xstrargss   &&&   r   parseParser.parsek   sZ    
 	9*')-.A299Q<.~~(((FF /s   A/c                   V ^8  d   QhRR/# )r   r   MyOptionParserr   )r   s   "r   r   r2   w   s      N r   c                	   ^ RI Hp \        W P                  V P                  R7      p. V P
                  OV P                  NpV F  pVP                  '       g   K  VP                  ;'       g    VP                  pVP                  V4      pVP                   F5  pVP                  4       pVP                  4       p	VP                  ! V/ V	B  K7  	  K  	  VP                  \        RR7      p
Wn        V# )r   )filescompleter)r+   *)nargs)re   rr   rp   r=   r+   r8   r7   optionsrJ   rI   add_argument_groupnamesrW   add_argumentFILE_OR_DIR	completer)r    rr   rg   groupsrO   descarggrouprA   nafile_or_dir_args   &          r   rf   Parser._getparserw   s    7"4tyyI	14<<11E}}}((66EJJ$77=#mmFAA))122 ,	  $00C0H %3!r   c               (    V ^8  d   QhRRRRRRRR/# )	r   r]   r^   rA   ra   r_   r`   r   	list[str]r   )r   s   "r   r   r2      s8     	C 	C.	C #	C -		C
 
	Cr   c                	    V P                  WR 7      pVP                  P                  4        F  w  rV\        W%V4       K  	  \	        \
        \        ,          \        V\        4      4      # )rd   )	rm   __dict__itemssetattrr   r	   r   getattrry   )r    r]   rA   r_   parsedoptionrI   values   &&&&   r   parse_setoptionParser.parse_setoption   sQ     zz$z<'00668KDF%( 9DIw|[ABBr   c               $    V ^8  d   QhRRRRRR/# r\   r   )r   s   "r   r   r2      s-     	O 	O.	O -	O 
		Or   c                4    V P                  WR7      ^ ,          # )zRParse the known arguments at this point.

:returns: An argparse namespace object.
rd   )parse_known_and_unknown_args)r    r]   r_   s   &&&r   parse_known_argsParser.parse_known_args   s     000KANNr   c               $    V ^8  d   QhRRRRRR/# )r   r]   r^   r_   r`   r   z$tuple[argparse.Namespace, list[str]]r   )r   s   "r   r   r2      s-     H H.H -H 
.	Hr   c                    V P                  4       pV Uu. uF  p\        P                  ! V4      NK  	  ppVP                  WRR7      # u upi )zParse 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.
rd   )rf   rh   ri   r   )r    r]   r_   rg   rk   rl   s   &&&   r   r   #Parser.parse_known_and_unknown_args   sE     OO%	)-.A299Q<.))')GG /s   Ac          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
r   rI   r   helptypeILiteral['string', 'paths', 'pathlist', 'args', 'linelist', 'bool'] | Nonedefaultr   r   r1   r   )r   s   "r   r   r2      s<     ,$ ,$,$ ,$	,$ ,$ 
,$r   c                    VR9   g   Q hV\         J d   \        V4      pW#V3V P                  V&   V P                  P	                  V4       R# )a  Register an ini-file option.

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

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

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

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

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

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

The value of ini-variables can be retrieved via a call to
:py:func:`config.getini(name) <pytest.Config.getini>`.
N)Nstringpathspathlistr]   linelistr0   )NOT_SETget_ini_default_for_typer;   r<   append)r    rI   r   r   r   s   &&&&&r   addiniParser.addini   sK    N XXXXg.t4G#73dd#r   )r7   r8   r;   r<   r9   r:   r=   rg   NN NrD   )r#   r$   r%   r&   __doc__r+   __annotations__r>   rF   rR   rY   rm   rf   r   r   r   r   r   r'   r   r   r   r)   r)   "   se     D*-
  - - )
42 
G&	C	OH* ,$ ,$r   r)   c                    V ^8  d   QhRRRR/# )r   r   r   r   r   r   )r   s   "r   r   r      s      
Sr   c                6    V f   R# V R9   d   . # V R8X  d   R# R# )zd
Used by addini to get the default value for a given ini-option type, when
default is not supplied.
r   r0   F)r   r   r]   r   r   )r   s   &r   r   r      s'     |	:	:		r   c                  2    ] tR t^tRtR R ltR R ltRtR# )ArgumentErrorzQRaised if an Argument instance is created with invalid or
inconsistent arguments.c               $    V ^8  d   QhRRRRRR/# )r   msgr   rA   zArgument | strr   r1   r   )r   s   "r   r   ArgumentError.__annotate__   s!     % %C % %D %r   c                	2    Wn         \        V4      V n        R # rD   )r   r   	option_id)r    r   rA   s   &&&r   r>   ArgumentError.__init__   s    Vr   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r      s       r   c                	v    V P                   '       d   R V P                    RV P                   2# V P                  # )zoption : )r   r   r   s   &r   __str__ArgumentError.__str__   s0    >>>T^^,Btxxj9988Or   )r   r   N)r#   r$   r%   r&   r   r>   r   r'   r   r   r   r   r      s    % r   r   c                  V    ] tR t^tRtR R ltR R ltR R ltR R	 ltR
 R lt	Rt
R# )rB   zClass 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               $    V ^8  d   QhRRRRRR/# )r   rw   r   rW   r   r   r1   r   )r   s   "r   r   Argument.__annotate__  s&     P Ps PS PT Pr   c                &   W n         . V n        . V n         VR,          V n         VR,          V n        V P                  V4       VP                  R4      pV'       d	   W0n        R
# V P                  '       d2   V P                  ^ ,          R,          P                  RR4      V n        R
#  V P                  ^ ,          R,          V n        R
#   \         d     Li ; i  \         d     Li ; i  \         d   pRT n        \        R	T 4      ThR
p?ii ; i)z5Store params in private vars for use in add_argument.r   r   rE   r   NN-_:   NNz???zneed a long or short optionN)_attrs_short_opts
_long_optsr   KeyErrorr   _set_opt_stringsgetrE   replace
IndexErrorr   )r    rw   rW   rE   es   &*,  r   r>   Argument.__init__  s    &(%'	fDI	 +DL 	e$ 99V,I___*2.66sC@DIP ,,Q/3	  		
  		  P!	#$A4HaOPs:   C
 C )C, 
CCC)(C),D7DDc                   V ^8  d   QhRR/# )r   r   r   r   )r   s   "r   r   r   #  s     2 2y 2r   c                	<    V P                   V P                  ,           # rD   )r   r   r   s   &r   rw   Argument.names#  s    $//11r   c                   V ^8  d   QhRR/# )r   r   zMapping[str, Any]r   )r   s   "r   r   r   &  s     	 	( 	r   c                	    R P                  4       pVP                  V P                  4       V F  p \        W4      V P                  V&   K  	  V P                  #   \
         d     K:  i ; i)zdefault dest help)splitr   rE   r   r   AttributeError)r    rW   attrs   &  r   rW   Argument.attrs&  sb    #))+TYYD$+D$7D! 
 {{ " s   AA)(A)c                    V ^8  d   QhRRRR/# )r   rV   zSequence[str]r   r1   r   )r   s   "r   r   r   1  s     , ,] ,t ,r   c                   V F  p\        V4      ^8  d   \        RV: R2V 4      h\        V4      ^8X  dK   V^ ,          R8X  d   V^,          R8w  g   \        RV: R2V 4      hV P                  P                  V4       K~  VR,          R8X  d   V^,          R8w  g   \        RV: R	2V 4      hV P                  P                  V4       K  	  R
# )zXDirectly from optparse.

Might not be necessary as this is passed to argparse later on.
zinvalid option string z&: must be at least two characters longr   zinvalid short option string z/: must be of the form -x, (x any non-dash char):r   r   N--zinvalid long option string z*: must start with --, followed by non-dashN)lenr   r   r   r   )r    rV   opts   && r   r   Argument._set_opt_strings1  s    
 C3x!|#,SG 4; ; 
 SQA##a&C-'6sg >H H 
   '',CD(SVs]'5cW =C C 
 &&s+- r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r   N  s     6 6# 6r   c                	>   . pV P                   '       d%   VR \        V P                   4      ,           .,          pV P                  '       d%   VR\        V P                  4      ,           .,          pVR\        V P                  4      ,           .,          p\	        V R4      '       d%   VR\        V P
                  4      ,           .,          p\	        V R4      '       d%   VR\        V P                  4      ,           .,          pRP                  RP                  V4      4      # )	z_short_opts: z_long_opts: zdest: r   ztype: r   z	default: zArgument({}), )	r   reprr   rE   hasattrr   r   r   join)r    r]   s   & r   r!   Argument.__repr__N  s    _tD,<,<'==>>D???^d4??&;;<<DDO+,,4  XTYY/00D4##[4#5566D$$TYYt_55r   )r   r   r   r   rE   r   N)r#   r$   r%   r&   r   r>   rw   rW   r   r!   r'   r   r   r   rB   rB      s&    P62	,:6 6r   rB   c                  Z    ] tR tRtRtRRR/R R llltR R	 ltR
 R ltRR R lltRt	R# )r6   i\  z,A group of options shown in its own section.Nr,   Fc          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
r   rI   r   rJ   r5   zParser | Noner,   r0   r   r1   r   )r   s   "r   r   OptionGroup.__annotate___  s<        	  
r   c               	N    \        V4       Wn        W n        . V n        W0n        R # rD   )r   rI   rJ   ru   r5   )r    rI   rJ   r5   r,   s   &&&&$r   r>   OptionGroup.__init___  s#     	y!	&')r   c               $    V ^8  d   QhRRRRRR/# rU   r   )r   s   "r   r   r   m  s!     ; ;s ;S ;T ;r   c                    \        V4      P                  R V P                   4       4      pV'       d   \        RV R24      h\	        V/ VB pV P                  VRR7       R# )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  P   "   T F  qP                  4        F  q"x  K  	  K  	  R # 5irD   )rw   ).0r   rI   s   &  r   	<genexpr>(OptionGroup.addoption.<locals>.<genexpr>{  s      *
(SYY[TD[DLs   $&zoption names z already addedF
shortupperN)setintersectionru   
ValueErrorrB   _addoption_instance)r    rV   rW   conflictrA   s   &*,  r   rY   OptionGroup.addoptionm  sd     t9)) *
 LL*
 
 }XJnEFF4)5)  E :r   c               $    V ^8  d   QhRRRRRR/# rU   r   )r   s   "r   r   r     s!     : : :c :d :r   c                	B    \        V/ VB pV P                  VR R7       R# )Tr   N)rB   r   )r    rV   rW   rA   s   &*, r   
_addoptionOptionGroup._addoption  s$    4)5)  D 9r   c               $    V ^8  d   QhRRRRRR/# )r   rA   rB   r   r0   r   r1   r   )r   s   "r   r   r     s"     $ $( $ $QU $r   c                	<   V'       gL   VP                    F;  pV^ ,          R8X  g   K  V^,          P                  4       '       g   K2  \        R4      h	  V P                  '       d   V P                  P	                  V4       V P
                  P                  V4       R# )r   r   zlowercase shortoptions reservedN)r   islowerr   r5   rF   ru   r   )r    rA   r   r   s   &&& r   r   OptionGroup._addoption_instance  sk    ))q6S=SV^^%5%5$%FGG * ;;;KK%%f-F#r   )rJ   rI   ru   r5   r   )F)
r#   r$   r%   r&   r   r>   rY   r   r   r'   r   r   r   r6   r6   \  s-    6   ;,:$ $r   r6   c                     a  ] tR tRtRR V 3R llltR R ltRR R llt]P                  R8  d   R R	 lt	R
t
V ;t# R
t
V ;t# )rp   i  c               (    V ^8  d   QhRRRRRRRR/# )	r   r5   r)   r=   zdict[str, Any] | Noner+   r*   r   r1   r   )r   s   "r   r   MyOptionParser.__annotate__  s2     ; ;; *; 	;
 
;r   c           	     	   < Wn         \        SV `	  VVP                  R \        R RR7       V'       d	   W n        R# / V n        R# )F@)r+   r.   add_helpformatter_classallow_abbrevfromfile_prefix_charsN)_parsersuperr>   r:   DropShorterLongHelpFormatterr=   )r    r5   r=   r+   	__class__s   &&&&r   r>   MyOptionParser.__init__  sA     --8"% 	 	
 )3*r   c                    V ^8  d   QhRRRR/# )r   messager   r   r   r   )r   s   "r   r   r     s     4 4S 4X 4r   c                    V P                    RV 2p\        V P                  R4      '       d   V RV P                  P                   R2p\	        V P                  4       V,           4      h)z1Transform argparse error message into UsageError.z	: error: _config_source_hintz ())r+   r   r  r  r   format_usage)r    r
  r   s   && r   errorMyOptionParser.error  s^    9WI.4<<!677EDLL<<=Q?C**,s233r   c               $    V ^8  d   QhRRRRRR/# )r   r]   zSequence[str] | Noner_   r`   r   ra   r   )r   s   "r   r   r     s(      " - 
	r   c                   V P                  W4      w  r4V'       d   V F  pV'       g   K  V^ ,          R8X  g   K  RP                  RP                  V4      4      .p\        V P                  P                  4       4       F  w  rxVP                  RV RV 24       K  	  V P                  RP                  V4      4       K  	  \        V\        4      P                  V4       V# )z(Allow splitting of positional arguments.r   zunrecognized arguments: {} z  r   
)r   r   r   sortedr=   r   r   r  r   ry   extend)	r    r]   r_   parsedunrecognizedarglineskvs	   &&&      r   rj   MyOptionParser.parse_args  s      $44TE#33q6S=4;;CHH\<RSE !'t'<'<'> ?r!Bqc]3 !@JJtyy/0 $ FK(//=r   c                    V ^8  d   QhRRRR/# )r   
arg_stringr   r   z5tuple[argparse.Action | None, str, str | None] | Noner   )r   s   "r   r   r     s     !	* !	*!!	*B!	*r   c                	   V'       g   R # V^ ,          V P                   9  d   R # WP                  9   d   V P                  V,          pW!R 3# \        V4      ^8X  d   R # RV9   d<   VP                  R^4      w  r4W0P                  9   d   V P                  V,          pW#V3# V P                  '       g   VP                  R4      '       gx   V P                  V4      p\        V4      ^8  dA   \        R4      pRP                  R V 4       4      pV P                  VRVRV/,          4       M\        V4      ^8X  d   Vw  pV# V P                  P                  V4      '       d   V P                  '       g   R # RV9   d   R # R VR 3# )	N=r   z4ambiguous option: %(option)s could match %(matches)sr   c              3  *   "   T F	  w  rqx  K  	  R # 5irD   r   )r   r   rA   s   &  r   r   1MyOptionParser._parse_optional.<locals>.<genexpr>  s     'Q=<1a=s   rA   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   ru   option_tuples	   &&       r   _parse_optionalMyOptionParser._parse_optional  sg    !}D$5$5588844Z@4//:!#j .8.>.>sA.F+ $?$??!88GF!,>>   
(=(=d(C(C $ 7 7
 C}%)!NC #ii'Q='QQGJJsh
Iw%OOP'1,&3O\'',,22:>>:::j T))r   )r  r=   r   )   	   )r#   r$   r%   r&   r>   r  rj   sysversion_infor1  r'   __classcell__r  s   @r   rp   rp     s6    ; ;&4& & !	* !	* !r   rp   c                  J   a  ] tR tRtRtR V 3R lltR V 3R lltR tRtV ;t	# )	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               $    V ^8  d   QhRRRRRR/# )r   r]   r   kwargsr   r1   r   )r   s   "r   r   )DropShorterLongHelpFormatter.__annotate__  s!     * *c *S *T *r   c                	x   < R V9  d"   \         P                  P                  4       VR &   \        SV `  ! V/ VB  R# )widthN)_pytest_ioget_terminal_widthr  r>   )r    r]   r;  r  s   &*,r   r>   %DropShorterLongHelpFormatter.__init__  s3    & %kk<<>F7O$)&)r   c                    V ^8  d   QhRRRR/# )r   r,  zargparse.Actionr   r   r   )r   s   "r   r   r<    s     $+ $+ $+C $+r   c                	  < \         SV `  V4      pV'       d   V^ ,          R8w  d   V# \        VRR4      pV'       d   V# VP                  R4      p\	        V4      ^8X  d7   \	        V^ ,          4      ^8X  g   \	        V^,          4      ^8X  d	   W!n        V# . p/ pV F  p\	        V4      ^8X  g   V^,          R8X  d   K#  VP                  R4      '       g   \        RV R2V4      hVR	,          pVP                  RR
4      p	W9  g"   \	        Wi,          4      \	        V4      8  g   K  WV	&   K  	  V F  p\	        V4      ^8X  g   V^,          R8X  d   VP                  V4       VR	,          VP                  VP                  RR
4      4      8X  g   Ka  VP                  VP                  RR^4      4       K  	  RP                  V4      p
Wn        V
# )r   r   _formatted_action_invocationNr   r  r   z&long optional argument without "--": []r   r   r!  )r  _format_action_invocationr   r   r   rE  r'  r   r   r   r   r   )r    r,  orgstrresru   return_list
short_longrA   xxoption	shortenedformatted_action_invocationr  s   &&         r   rG  6DropShorterLongHelpFormatter._format_action_invocation  s   26:fQi3&M!&*H$OJ,,t$w<1#gaj/Q"6#gaj/Q:N28/M%'
F6{a6!9#3$$T**#<VHAF  bzH ((b1I*c*2G.H3L / )19%  F6{a6!9#3""6*bzZ^^FNN3,CDD""6>>#sA#>?	 
 '+ii&<#.I+**r   c                    ^ RI p. pVP                  4        F2  pVP                  VP                  VP	                  4       V4      4       K4  	  V# )zmWrap lines after splitting on original newlines.

This allows to have explicit line breaks in the help text.
N)textwrap
splitlinesr  wrapstrip)r    textr>  rQ  r  lines   &&&   r   _split_lines)DropShorterLongHelpFormatter._split_lines  s?    
 	OO%DLLtzz|U;< &r   r   )
r#   r$   r%   r&   r   r>   rG  rW  r'   r7  r8  s   @r   r  r    s'    * *$+ $+L
 
r   r  )#
__future__r   argparser   rh   r5  typingr   r   r   r   r	   r
   r   r   r   _pytest._ior?  _pytest.config.exceptionsr   _pytest.deprecatedr   ry   r   r   r)   r   	Exceptionr   rB   r6   ArgumentParserrp   HelpFormatterr  r   r   r   <module>rb     s    "   	 
           0 -  
 ( y$ y$ y$x"I Z6 Z6z2$ 2$jU*X,, U*p>8#9#9 >r   