
    sh	                     .   % S r SSKJrJrJrJr  SSKJr  SSKJ	r	J
r
  SSKrSSKJr  SSKJrJr   SSKrSr\S
 5       r/ r\/ \S   4   \S'   S\S   4S jr\S 5       r " S S\	5      r " S S\5      r\R6                  S 5       rg! \ a    S	r N\f = f)zw
Implement code coverage support.

Currently contains logic to extend ``coverage`` with lines covered by the
compiler.
    )OptionalSequenceCallableno_type_check)defaultdict)ABCabstractmethodN)cache)irconfigTFc                  \    Sn [         (       a  [        R                  R                  5       n U $ )z>Get active coverage instance or return None if not found.
    N)coverage_availablecoverageCoveragecurrent)covs    o/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/misc/coverage_support.pyget_active_coverager      s(     C'')J    NotifyLocBase_the_registryreturnc                  r    [         R                  (       d  / $ [        [        S S [         5       5      5      $ )z;
Returns a list of the registered NotifyLocBase instances.
c                 
    U S L$ N )xs    r   <lambda>+get_registered_loc_notify.<locals>.<lambda>,   s    $r   c              3   .   #    U  H  o" 5       v   M     g 7fr   r   ).0factorys     r   	<genexpr>,get_registered_loc_notify.<locals>.<genexpr>-   s     ?g		s   )r   JIT_COVERAGElistfilterr   r   r   r   get_registered_loc_notifyr(   %   s4     	.??A B Br   c                     ^^ [         R                  " SS9m[        5       mTc   S5       e[        R                  UU4S j5       n T$ )za
Make a singleton ``CoverageData``.
Avoid writing to disk. Other processes can corrupt the file.
T)no_diskzno active Coverage instancec                  D   > T R                  5       R                  T5        g r   )get_dataupdate)r   covdatas   r   	_finalize%_get_coverage_data.<locals>._finalize:   s     	g&r   )r   CoverageDatar   atexitregister)r/   r   r.   s    @@r   _get_coverage_datar4   0   sJ     ##D1G

C?999?__' ' Nr   c                   \    \ rS rSrSr\S\R                  SS4S j5       r\S	S j5       r	Sr
g)
r   B   zAInterface for notifying visiting of a ``numba.core.ir.Loc``.
    locr   Nc                     g r   r   selfr7   s     r   notifyNotifyLocBase.notifyE       r   c                     g r   r   r:   s    r   closeNotifyLocBase.closeI   r=   r   r   )r   N)__name__
__module____qualname____firstlineno____doc__r	   r   Locr;   r@   __static_attributes__r   r   r   r   r   B   s?    "&& T    r   c                   F    \ rS rSrSrS rS\R                  4S jrS r	Sr
g)	NotifyCompilerCoverageN   z
Use to notify ``coverage`` about compiled lines.

The compiled lines are under the "numba_compiled" context in the coverage
data.
c                 ,    [        [        5      U l        g r   )r   set
_arcs_datar?   s    r   __init__NotifyCompilerCoverage.__init__U   s    %c*r   r7   c                     UR                   R                  S5      (       a?  U R                  UR                      R                  UR                  UR                  45        g g )Nz.py)filenameendswithrN   addliner9   s     r   r;   NotifyCompilerCoverage.notifyX   sD    <<  ''OOCLL)--sxx.BC (r   c                     [        5       nUR                     UR                  S5        UR                  U R                  5        S S S 5        g ! , (       d  f       g = f)Nnumba_compiled)r4   _lockset_contextadd_arcsrN   )r:   r.   s     r   r@   NotifyCompilerCoverage.close]   s<    $&]] 01T__- ]]s   -A
A)rN   N)rB   rC   rD   rE   rF   rO   r   rG   r;   r@   rH   r   r   r   rJ   rJ   N   s#    +D"&& D
.r   rJ   c                  .    [        5       b
  [        5       $ g r   )r   rJ   r   r   r   _register_coverage_notifierr^   d   s    (%'' )r   )rF   typingr   r   r   r   collectionsr   abcr   r	   r2   	functoolsr
   
numba.corer   r   r   r   ImportErrorr   r   __annotations__r(   r4   r   rJ   appendr^   r   r   r   <module>rg      s    ? > # #   !    :<xH_556 ;B8O#< B  "	C 	.] ., ( (g  s   B	 	BB