
    V.j	                    X    d Z ddlmZ ddlmZ ddlmZ ddlmZ 	 	 	 	 d
dZ	ddZ
ddZy	)z"Determine contexts for coverage.py    )annotations)Sequence)	FrameType)TShouldStartContextFnc                @      syt               dk(  r d   S d fd}|S )a  Create a single context switcher from multiple switchers.

    `context_switchers` is a list of functions that take a frame as an
    argument and return a string to use as the new context label.

    Returns a function that composites `context_switchers` functions, or None
    if `context_switchers` is an empty list.

    When invoked, the combined switcher calls `context_switchers` one-by-one
    until a string is returned.  The combined switcher returns None if all
    `context_switchers` return None.
    N   r   c                0    D ]  } ||       }||c S  y)z,The combiner for multiple context switchers.N )frameswitchernew_contextcontext_switcherss      RC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\coverage/context.pyshould_start_contextz7combine_context_switchers.<locals>.should_start_context#   s'    )H"5/K&"" *     r   r   returnz
str | None)len)r   r   s   ` r   combine_context_switchersr      s1     
" ##  r   c                r    | j                   j                  }|j                  d      s|dk(  rt        |       S y)z(Is this frame calling a test_* function?testrunTestN)f_codeco_name
startswithqualname_from_frame)r   r   s     r   "should_start_context_test_functionr   .   s4    ll""G&!W	%9"5))r   c                   | j                   }|j                  }d}|j                  r;|j                  d   dk(  r)| j                  j                  dd      }t        ||d      }|/| j                  j                  |      }|y|j                   d| S t        |dd      }|*j                  }|j                   d|j                   d| S |j                   d|j                   S )z5Get a qualified name for the code running in `frame`.Nr   self.__func__)r   r   co_argcountco_varnamesf_localsgetgetattr	f_globals
__module__	__class____name____qualname__)r   cofnamemethodr   funcclss          r   r   r   6   s    	BJJEF	~~"..+v5~~!!&$/ud+~""5)<//"!E7++6:t,D|nn..!3<<.%99ooa 1 1233r   N)r   zSequence[TShouldStartContextFn]r   zTShouldStartContextFn | Noner   )__doc__
__future__r   collections.abcr   typesr   coverage.typesr   r   r   r   r
   r   r   <module>r6      s6    ) " $  0 6 ! @4r   