ó
    Ð]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 jr	SS jr
SS jrg	)z"Determine contexts for coverage.pyé    )Úannotations)ÚSequence)Ú	FrameType)Ú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      €ÚM/home/mande/repo/quber/.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c0  U R                  R                  U5      nUc  gUR                   SU 3$ [        USS5      nUc*  WR                  nUR                   SUR                   SU 3$ UR                   SUR                   3$ )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Ø�J‰J€EØ€FØ	‡~‡~˜"Ÿ.™.¨Ñ+¨vÓ5Ø�~‰~×!Ñ! &¨$Ó/ˆÜ˜ dÓ+ˆà�~Ø�‰×"Ñ" 5Ó)ˆØ‰<ØØ—/‘/Ð" ! E 7Ð+Ð+ä�6˜: tÓ,€DØ�|Ø�n‰nˆØ—.‘.Ð!  3§<¡< .°°%°Ð9Ð9à�o‰oÐ˜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>r7      s6   ðñ )å "å $Ý å 0ð Ø6ð à!ô ô@õ4r   