ó
    àÅŸgÂ	  ã                  ój   • S 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 jrSS jrSS	 jrg
)z"Determine contexts for coverage.pyé    )Úannotations)Ú	FrameType)Úcast)ÚSequence)ÚTShouldStartContextFnc                óP   ^ • T (       d  g[        T 5      S:X  a  T S   $ SU 4S jjnU$ )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                ó6   >• T H  nU" U 5      nUc  M  Us  $    g)z,The combiner for multiple context switchers.N© )ÚframeÚswitcherÚnew_contextÚcontext_switcherss      €ÚQ/var/www/blue/EV-Temp_rev04/venv/lib/python3.13/site-packages/coverage/context.pyÚshould_start_contextÚ7combine_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                ó~   • U R                   R                  nUR                  S5      (       d  US:X  a  [        U 5      $ g)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   /   s7   € à�l‰l×"Ñ"€GØ×Ñ˜&×!Ñ! W°	Ó%9Ü" 5Ó)Ð)Ør   c                ó>  • U R                   nUR                  nSnUR                  (       a;  UR                  S   S:X  a(  U R                  R                  SS5      n[        XBS5      nUc?  U R                  R                  U5      nUc  g[        [        UR                  S-   U-   5      $ [        USS5      nUc<  WR                  n[        [        UR                  S-   UR                  -   S-   U-   5      $ [        [        UR                  S-   UR                  -   5      $ )z5Get a qualified name for the code running in `frame`.Nr   ÚselfÚ.Ú__func__)r   r   Úco_argcountÚco_varnamesÚf_localsÚgetÚgetattrÚ	f_globalsr   ÚstrÚ
__module__Ú	__class__Ú__name__Ú__qualname__)r   ÚcoÚfnameÚmethodr!   ÚfuncÚclss          r   r   r   7   sô   € à	�‰€BØ�J‰J€EØ€FØ	‡~‡~˜"Ÿ.™.¨Ñ+¨vÓ5Ø�~‰~×!Ñ! &¨$Ó/ˆÜ˜ dÓ+ˆà�~Ø�‰×"Ñ" 5Ó)ˆØ‰<ØÜ”C˜Ÿ™¨3Ñ.°Ñ6Ó7Ð7ä�6˜: tÓ,€DØ�|Ø�n‰nˆÜ”C˜Ÿ™¨#Ñ-°·±Ñ<¸sÑBÀUÑJÓKÐKä”�T—_‘_ sÑ*¨T×->Ñ->Ñ>Ó?Ð?r   N)r   zSequence[TShouldStartContextFn]r   zTShouldStartContextFn | Noner   )Ú__doc__Ú
__future__r   Útypesr   Útypingr   Úcollections.abcr   Úcoverage.typesr   r   r   r   r   r   r   Ú<module>r:      s:   ðñ )å "å Ý Ý $å 0ð Ø6ð à!ô ô@õ@r   