+
    Spj)              	      t  a 0 t $ R t^ RIHt ^ RIHt ^ RIt^ RIt^ RIt^ RIH	t	 ^ RIH
t
 ^ RIt^ RIHt ^ RIt^ RIHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIt]P*                  R@8  d   ^ RIHt ]P0                  P2                  tR R lt ! R R]P8                  4      t]P<                  tR] R&   R R lt!R R lt"R R lt#RAR R llt$R R lt%RRRR/R R  llt&R! R" lt'](! ^4       U u/ uF  q ](! ^ ^4      9  g   K  V R#V R$ 2bK  	  up t)])PU                  ]+! R%4      R&]+! R'4      R(]+! R)4      R*/4       R+ R, lt,R- t-R. t.R/ R0 lt/R1 R2 lt0R3 R4 lt1]P*                  RB8  d   ^ R5IH2t2 MR6 R7 lt2 ! R8 R94      t3R: R; lt4]P*                  RC8  d	   ^ R<I5H6t6 R# ]'       d	   ^ R<I7H6t6 R# R=RR>^/R? lt6R# u up i )Dz?Python version compatibility code and random general utilities.)annotations)CallableN)	Parameter)	Signature)Path)Any)Final)NoReturn)TYPE_CHECKING)Formatc                    V ^8  d   QhRRRR/# )   pathzstr | os.PathLike[str]returnLEGACY_PATH )formats   "5/tmp/pip-target-d46v3snk/lib/python/_pytest/compat.py__annotate__r   $   s      ,      c                    \        V 4      # )zBInternal wrapper to prepare lazy proxies for legacy_path instances)r   )r   s   &r   legacy_pathr   $   s    tr   c                      ] tR t^,t^ tRtR# )
NotSetTyper   N)__name__
__module____qualname____firstlineno__token__static_attributes__r   r   r   r   r   ,   s    Er   r   r   NOTSETc                    V ^8  d   QhRRRR/# r   funcobjectr   boolr   )r   s   "r   r   r   2   s     	V 	Vf 	V 	Vr   c                X    \         P                  ! V 4      ;'       g    \        V RR4      # )ab  Return True if func is a coroutine function (a function defined with async
def syntax, and doesn't contain yield), or a function decorated with
@asyncio.coroutine.

Note: copied and modified from Python 3.5's builtin coroutines.py to avoid
importing asyncio directly, which in turns also initializes the "logging"
module as a side-effect (see issue #8).
_is_coroutineF)inspectiscoroutinefunctiongetattrr#   s   &r   r)   r)   2   s&     &&t,UUou0UUr   c                    V ^8  d   QhRRRR/# r"   r   )r   s   "r   r   r   >   s     I IF It Ir   c                T    \        V 4      ;'       g    \        P                  ! V 4      # )zVReturn True if the given function seems to be an async function or
an async generator.)r)   r(   isasyncgenfunctionr+   s   &r   is_async_functionr/   >   s"     t$HH(B(B4(HHr   c                    V ^8  d   QhRRRR/# )r   objCallable[..., Any]r   r   r   )r   s   "r   r   r   D   s     " "% ") "r   c                    \         P                  R8  d'   \        P                  ! V \        P
                  R7      # \        P                  ! V 4      # )z0Return signature without evaluating annotations.)annotation_format      )sysversion_infor(   	signaturer   STRINGr1   s   &r   r:   r:   D   s8    
7"  FFS!!r   c                    V ^8  d   QhRRRR/# )r   curdirzstr | os.PathLike[str] | Noner   strr   )r   s   "r   r   r   K   s        "?  3  r   c                   \        V 4      p \        \        P                  ! V 4      4      pV P                  P
                  pVe!    VP                  V4      pV RV^,            2# V RV^,            2#   \         d     Li ; i)N:)get_real_funcr   r(   getfile__code__co_firstlinenorelative_to
ValueError)functionr>   fnlinenorelfns   &&   r   getlocationrL   K   s    X&H	gooh'	(B--F	+NN6*E WAfqj\**T6A:,	  		s   A3 3B Bc                   V ^8  d   QhRR/# )r   r   intr   )r   s   "r   r   r   Y   s      S r   c                   \        V RR4      pV'       g   ^ # \        \        P                  P                  R4      R\	        4       4      p\        \        P                  P                  R4      R\	        4       4      p\        V Uu. uF;  pVP                  '       d   K  VP                  VJ g   VP                  VJ g   K9  VNK=  	  up4      # u upi )z>Return number of arguments used up by mock arguments (if any).	patchingsNmockDEFAULTzunittest.mock)r*   r8   modulesgetr$   lenattribute_namenew)rH   rP   mock_sentinelut_mock_sentinelps   &    r   num_mock_patch_argsr[   Y   s    +t4ICKKOOF3YIMs{{?FHU 	
##  -'1554D+D A	
 	
s   CC Cname clsc               (    V ^8  d   QhRRRRRRRR/# )	r   rH   zCallable[..., object]r\   r?   r^   ztype | Noner   tuple[str, ...]r   )r   s   "r   r   r   l   s8     A A#A A 
	A
 Ar   c               h    \        V 4      P                  P                  4       p\        ;QJ d    . R X 4       F  NK  	  5M! R X 4       4      pV'       g   V P                  p\        ;QJ d    R V 4       F  '       g   K   R	M	  RM! R V 4       4      '       g>   V'       d6   \        \        P                  ! W!RR
7      \        4      '       g
   VR,          p\        V R4      '       d   V\        V 4      R pV#   \        \        3 d#   p^ RIHp T! RT : RT 2RR7        Rp?ELRp?ii ; i)a  Return the names of a function's mandatory arguments.

Should return the names of all function arguments that:
* Aren't bound to an instance or type as in instance or class methods.
* Don't have default values.
* Aren't bound with functools.partial.
* Aren't replaced with mocks.

The cls arguments indicate that the function should be treated as a bound
method even though it's not unless the function is a static method.

The name parameter should be the original name in which the function was collected.
)failz!Could not determine arguments of z: F)pytraceNc              3     "   T Fo  pVP                   \        P                  J g!   VP                   \        P                  J g   KA  VP                  \        P
                  J g   Ka  VP                  x  Kq  	  R # 5iNkindr   POSITIONAL_OR_KEYWORDKEYWORD_ONLYdefaultemptyr\   .0rZ   s   & r   	<genexpr>"getfuncargnames.<locals>.<genexpr>   sX      AFFi555vv///	 	 II( 	s   >A9A9%A9c              3  X   "   T F   qP                   \        P                  J x  K"  	  R # 5ire   )rg   r   POSITIONAL_ONLYrl   s   & r   rn   ro      s     GJqvv222Js   (*T)rj   :   NN__wrapped__)r:   
parametersvaluesrG   	TypeError_pytest.outcomesrb   tupler   any
isinstancer(   getattr_staticstaticmethodhasattrr[   )rH   r\   r^   rt   erb   	arg_namess   &$$    r   getfuncargnamesr   l   s   8
x(33::<
    I   
 3GJG333GJGGG 	""3d;\
 
 bM	x''1(;=>	G 	" 
)/|2aSA	
 	

s   #C> >D1D,,D1c                    V ^8  d   QhRRRR/# )r   rH   r2   r   r`   r   )r   s   "r   r   r      s     	 	$6 	? 	r   c                    \         ;QJ d5    . R  \        V 4      P                  P                  4        4       F  NK  	  5# ! R  \        V 4      P                  P                  4        4       4      # )c              3     "   T Fb  pVP                   \        P                  \        P                  39   g   K4  VP                  \        P
                  Jg   KT  VP                  x  Kd  	  R # 5ire   rf   rl   s   & r   rn   (get_default_arg_names.<locals>.<genexpr>   sQ      8A66i55y7M7MNN 	 IIY__, 	8s   1A,A,A,)rx   r:   rt   ru   )rH   s   &r   get_default_arg_namesr      s^     5 8$//6685 5 8$//668  r   z\x02x	z\tz\r
z\nc                    V ^8  d   QhRRRR/# )r   valzbytes | strr   r?   r   )r   s   "r   r   r      s     ? ?{ ?s ?r   c                    \        V \        4      '       d   V P                  RR4      pM V P                  R4      P                  R4      pVP	                  \
        4      # )a  If val is pure ASCII, return it as an str, otherwise, escape
bytes objects into a sequence of escaped bytes:

b'\xc3\xb4\xc5\xd6' -> r'\xc3\xb4\xc5\xd6'

and escapes strings into a sequence of escaped unicode ids, e.g.:

r'4\nV\U00043efa\x0eMXWB\x1e\u3028\u15fd\xcd\U0007d944'

Note:
   The obvious "v.decode('unicode-escape')" will return
   valid UTF-8 unicode if it finds them in bytes, but we
   want to return escaped bytes for any byte, even if they match
   a UTF-8 string.
asciibackslashreplaceunicode_escape)rz   bytesdecodeencode	translate$_non_printable_ascii_translate_table)r   rets   & r   ascii_escapedr      sL      #ujj"45jj)*11':===>>r   c                    \         P                  ! V 4      p \        V \        P                  4      '       d   V P
                  p V # )zwGet the real function object of the (possibly) wrapped object by
:func:`functools.wraps`, or :func:`functools.partial`.)r(   unwraprz   	functoolspartialr#   r<   s   &r   rB   rB      s3     ..
C#y(())hhJr   c                B     V P                   #   \         d    T u # i ; ire   )__func__AttributeErrorr+   s   &r   	getimfuncr      s%    }} s    c               (    V ^8  d   QhRRRRRRRR/# )r   r$   r   r\   r?   rj   r   r   )r   s   "r   r   r      s(       C # # r   c                F    ^ RI Hp  \        WV4      #   T d    Tu # i ; i)a:  Like getattr but return default upon any Exception or any OutcomeException.

Attribute access can potentially fail for 'evil' Python objects.
See issue #214.
It catches OutcomeException because of #2490 (issue #580), new outcomes
are derived from BaseException instead of Exception (for more details
check #2707).
)TEST_OUTCOME)rw   r   r*   )r$   r\   rj   r   s   &&& r   safe_getattrr      s-     .vW-- s    	  c                    V ^8  d   QhRRRR/# )r   r1   r$   r   r%   r   )r   s   "r   r   r      s      f  r   c                T     \         P                  ! V 4      #   \         d     R# i ; i)z0Ignore any exception via isinstance on Python 3.F)r(   isclass	Exceptionr<   s   &r   safe_isclassr      s(    s## s    ''c                   V ^8  d   QhRR/# )r   r   z
int | Noner   )r   s   "r   r   r     s     - -Z -r   c                     \         P                  R8X  g   \         P                  R8X  d   R# Rp \        P                  ! 4       pW8w  d   V# R# )zReturn the current process's real user id or None if it could not be
determined.

:return: The user id or None if it could not be determined.
win32
emscriptenN)r8   platformosgetuid)ERRORuids     r   get_user_idr     sA     ||w#,,,">  iikls,,r   )assert_neverc                    V ^8  d   QhRRRR/# )r   valuer	   r   r   )r   s   "r   r   r     s     K KH K Kr   c                D    Q RV  R\        V 4      P                   R24       h)FzUnhandled value: z ())typer   )r   s   &r   r   r     s'    J)%4;3G3G2HJJur   c                  >    ] tR tRtRtR R ltR R ltR R ltR	tR
# )CallableBooli"  a  
A bool-like object that can also be called, returning its true/false value.

Used for backwards compatibility in cases where something was supposed to be a method
but was implemented as a simple attribute by mistake (see `TerminalReporter.isatty`).

Do not use in new code.
c                    V ^8  d   QhRRRR/# )r   r   r%   r   Noner   )r   s   "r   r   CallableBool.__annotate__,  s      d t r   c                	    Wn         R # re   _value)selfr   s   &&r   __init__CallableBool.__init__,  s    r   c                   V ^8  d   QhRR/# r   r   r%   r   )r   s   "r   r   r   /        $ r   c                	    V P                   # re   r   r   s   &r   __bool__CallableBool.__bool__/      {{r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r   2  r   r   c                	    V P                   # re   r   r   s   &r   __call__CallableBool.__call__2  r   r   r   N)	r   r   r   r   __doc__r   r   r   r   r   r   r   r   r   "  s     r   r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r   6  s     8 8t 8r   c                 r    RR.p \         ;QJ d    R V  4       F  '       g   K   R# 	  R# ! R V  4       4      # )z0Check if we're currently running on a CI system.CIBUILD_NUMBERc              3  `   "   T F$  p\         P                  P                  V4      x  K&  	  R # 5ire   )r   environrT   )rm   vars   & r   rn    running_on_ci.<locals>.<genexpr>;  s      7hsrzz~~c""hs   ,.TF)ry   )env_varss    r   running_on_cir   6  s7     n%H37h73373737h777r   )
deprecatedcategory
stacklevelc                  R  pV# )c                    V # re   r   r+   s   &r   	decoratordeprecated.<locals>.decoratorF  s    r   r   )msgr   r   r   s   "$$ r   r   r   E  s     r   r5   re   )r6      )r6      )8__conditional_annotations__r   
__future__r   collections.abcr   enumr   r(   r   r   r   pathlibr   r8   typingr   r   r	   r
   pyr9   annotationlibr   r   localr   r   Enumr   r   r    __annotations__r)   r/   r:   rL   r[   r   r   ranger   updateordr   rB   r   r   r   r   r   r   r   warningsr   typing_extensions)ir   s   0@r   <module>r      s   E " $      	  
      	 w$ ggnn     	VI" &A A 	AH	 $Cj((U2s^,CAQsG}j( $ % + +Ys4y%TE:
?."-* w#K (8 w1>	4 	A 	S(s   *F5>F5