Ë
    üÇ:jû  ã                   ó†  — U d Z ddlmZmZmZmZ ddlmZ ddlm	Z	m
Z
 ddlmZmZ ddlmZmZ 	 ddlZdZed
„ «       Zg Zeg ed   f   ed<   ded   fd„Z G d„ de«      Z G d„ de«      Zej4                  d„ «       Zer6 e	d¬«       G d„ dej8                  j:                  «      «       Zdededefd„Z yy# e$ r d	ZY ŒŠw xY w)zw
Implement code coverage support.

Currently contains logic to extend ``coverage`` with lines covered by the
compiler.
é    )ÚOptionalÚSequenceÚCallableÚno_type_check)ÚMapping)Ú	dataclassÚfield)ÚABCÚabstractmethod)ÚirÚconfigNTFc                  óR   — d} t         rt        j                  j                  «       } | S )z>Get active coverage instance or return None if not found.
    N)Úcoverage_availableÚcoverageÚCoverageÚcurrent)Úcovs    úp/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/numba/misc/coverage_support.pyÚget_active_coverager      s%   € ð €CÝÜ×Ñ×'Ñ'Ó)ˆØ€Jó    ÚNotifyLocBaseÚ_the_registryÚreturnc                  óh   — t         j                  sg S t        t        d„ d„ t        D «       «      «      S )zC
    Returns a list of the registered NotifyLocBase instances.
    c                 ó
   — | d uS ©N© )Úxs    r   ú<lambda>z+get_registered_loc_notify.<locals>.<lambda>,   s
   €  ¨$ € r   c              3   ó*   K  — | ]  } |«       –— Œ y ­wr   r   )Ú.0Úfactorys     r   ú	<genexpr>z,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                   óP   — e Zd ZdZedej                  ddfd„«       Zedd„«       Zy)r   z<Interface for notifying visiting of a ``numba.core.ir.Loc``.Úlocr   Nc                  ó   — y r   r   )Úselfr)   s     r   ÚnotifyzNotifyLocBase.notify3   ó   € àr   c                  ó   — y r   r   ©r+   s    r   ÚclosezNotifyLocBase.close7   r-   r   ©r   N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   ÚLocr,   r0   r   r   r   r   r   0   s=   „ ÙFàð˜"Ÿ&™&ð  Tò ó ðð òó ñr   c                   ó<   — e Zd ZdZd„ Zdej                  fd„Zd„ Zy)ÚNotifyCompilerCoveragez“
    Use to notify ``coverage`` about compiled lines.

    The compiled lines are under the "numba_compiled" context in the coverage
    data.
    c                 óè  — || _         |j                  j                  j                  «       }|j	                  t        |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  j                  ¬«
      «       t!        di |¤Ž| _        |j$                  j'                  | j"                  «       y )N)
ÚdataÚ	lock_dataÚunlock_dataÚ
trace_arcsÚshould_traceÚshould_trace_cacheÚwarnÚshould_start_contextÚswitch_contextÚpacked_arcsr   )Ú
_collectorÚcoreÚtracer_kwargsÚcopyÚupdateÚdictr:   r;   r<   Úbranchr>   r?   r@   rA   rB   rC   ÚNumbaTracerÚ_tracerÚtracersÚappend)r+   Ú	collectorrF   s      r   Ú__init__zNotifyCompilerCoverage.__init__D   s¼   € Ø#ˆŒð "Ÿ™×4Ñ4×9Ñ9Ó;ˆØ×ÑÜØ—^‘^Ø#×-Ñ-Ø%×1Ñ1Ø$×+Ñ+Ø&×3Ñ3Ø#,×#?Ñ#?Ø—^‘^Ø%.×%CÑ%CØ(×7Ñ7Ø%ŸN™N×6Ñ6ôô	
ô #Ñ3 ]Ñ3ˆŒØ×Ñ× Ñ  §¡Õ.r   r)   c                 óº   — | j                   }|j                  j                  d«      r4|j                  d«       |j	                  |«       |j                  d «       y y )Nz.pyÚnumba_compiled)rL   ÚfilenameÚendswithrB   Útrace)r+   r)   Útracers      r   r,   zNotifyCompilerCoverage.notifyZ   sK   € Ø—‘ˆØ�<‰<× Ñ  Ô'Ø×!Ñ!Ð"2Ô3Ø�L‰L˜ÔØ×!Ñ! $Õ'ð (r   c                  ó   — y r   r   r/   s    r   r0   zNotifyCompilerCoverage.closea   s   € Ør   N)	r2   r3   r4   r5   rP   r   r6   r,   r0   r   r   r   r8   r8   <   s!   „ ñò/ð,(˜"Ÿ&™&ó (ór   r8   c                  ód   — t        «       } | �$| j                  }|j                  rt        |«      S y y r   )r   rD   rM   r8   )r   Úcols     r   Ú_register_coverage_notifierrZ   e   s4   € ä
Ó
€CØ
€Ø�n‰nˆà�;Š;Ü)¨#Ó.Ð.ð ð r   )Úkw_onlyc                   ó2  — e Zd ZU dZej
                  j                  ed<   eed<   ej
                  j                  ed<   e
eej
                  j                  dz  f   ed<   ej
                  j                  dz  ed<   eedz  gdf   dz  ed<   eg df   ed	<   eg df   ed
<   ej
                  j                  ed<   eed<    ed¬«      Zeed<   dej
                  j$                  dz  fd„Zdd„Zdefd„Zdd„Zdeeef   dz  fd„Zdej6                  ddfd„Zy)rK   a   
        Not actually a tracer as in the coverage implementation, which will
        setup a Python trace function. This implementation pretends to trace
        but instead receives fake trace events for each line the compiler has
        visited.

        See coverage.PyTracer
        r:   r=   r>   Nr?   rA   rB   r;   r<   r@   rC   F)ÚdefaultÚ	_activityr   c                  ó   — y)zPStart this tracer, return a trace function if based on
            sys.settrace.Nr   r/   s    r   ÚstartzNumbaTracer.start‹   s   € ð r   c                  ó   — y)zStop this tracer.Nr   r/   s    r   ÚstopzNumbaTracer.stop�   ó   € àr   c                 ó   — | j                   S )zHas there been any activity?©r^   r/   s    r   ÚactivityzNumbaTracer.activity”   s   € à—>‘>Ð!r   c                 ó   — d| _         y)zReset the activity() flag.FNre   r/   s    r   Úreset_activityzNumbaTracer.reset_activity˜   s	   € à"ˆD�Nr   c                  ó   — y)z+Return a dictionary of statistics, or None.Nr   r/   s    r   Ú	get_statszNumbaTracer.get_statsœ   rc   r   r)   c                 óš  — | j                   j                  |j                  «      }|€5| j                  |j                  d«      }|| j                   |j                  <   |j                  sy|j
                  }| j                  «        | j                  j                  |t        «       «      }| j                  rd| j                  r0|j                  t        |j                  |j                  «      «       nC|j                  |j                  |j                  f«       n|j                  |j                  «       | j                  «        d| _        y)z8Insert coverage data given source location.
            NT)r?   ÚgetrS   r>   rU   Úsource_filenamer;   r:   Ú
setdefaultÚsetr=   rC   ÚaddÚ
_pack_arcsÚliner<   r^   )r+   r)   ÚdispÚ	tracenameÚcur_file_datas        r   rU   zNumbaTracer.trace    sñ   € ð ×*Ñ*×.Ñ.¨s¯|©|Ó<ˆDØˆ|Ø×(Ñ(¨¯©°tÓ<�Ø8<�×'Ñ'¨¯©Ñ5Ø—:’:àà×,Ñ,ˆIØ�N‰NÔØ ŸI™I×0Ñ0°¼C»EÓBˆMØ�ŠØ×#Ò#Ø!×%Ñ%¤j°·±¸3¿8¹8Ó&DÕEà!×%Ñ% s§x¡x°·±Ð&:Õ;à×!Ñ! #§(¡(Ô+Ø×ÑÔà!ˆD�Nr   r1   )r2   r3   r4   r5   r   ÚtypesÚ
TTraceDataÚ__annotations__ÚboolÚTShouldTraceFnr   ÚstrÚTFileDispositionÚTShouldStartContextFnr   ÚTWarnFnr	   r^   ÚTTraceFnr`   rb   rf   rh   rI   Úintrj   r   r6   rU   r   r   r   rK   rK   q   s)  … ñ	ð �n‰n×'Ñ'Ó'ØÓØ—n‘n×3Ñ3Ó3Ø#Ø�—‘×0Ñ0°4Ñ7Ð7ñ
ó 	
ð 'Ÿn™n×BÑBÀTÑIÓIØ  #¨¡* ¨tÐ!3Ñ4°tÑ;Ó;Ø˜B ˜HÑ%Ó%Ø˜b $˜hÑ'Ó'Ø�n‰n×$Ñ$Ó$ØÓá¨Ô.ˆ	�4Ó.ð	˜8Ÿ>™>×2Ñ2°TÑ9ó 	ó
	ð	"˜dó 	"ó	#ð	˜t C¨ H™~°Ñ4ó 	ð	"˜RŸV™Vð 	"¨ô 	"r   rK   Úl1Úl2c                 óT   — d}| dk  r|dz  }|  } |dk  r|dz  }| }||dz  | z   z  }|S )zãPack arcs into a single integer for compatibility with .packed_arcs
        option.

        See
        https://github.com/nedbat/coveragepy/blob/e7c05fe91ee36c0c94e144bb88d25db4fc3d02fd/coverage/ctracer/tracer.c#L171
        r   l        l        é   r   )r�   r‚   Úpackeds      r   rq   rq   º   sP   € ð ˆØ�Š6Ø�gÑˆFØ�ˆBØ�Š6Ø�gÑˆFØ�ˆBØ�2˜‘8˜r‘/Ñ!ˆØˆr   )!r5   Útypingr   r   r   r   Úcollections.abcr   Údataclassesr   r	   Úabcr
   r   Ú
numba.corer   r   r   r   ÚImportErrorr   r   rx   r'   r   r8   rN   rZ   rv   ÚTracerrK   r€   rq   r   r   r   ú<module>r�      s  ðò÷ ?Ó >Ý #ß (ß #ç !ðÛð Ðð ñó ðð :<€ˆx˜˜H _Ñ5Ð5Ñ6Ó ;ðB 8¨OÑ#<ó Bô	�Cô 	ô&˜]ô &ðR ×Ññ/ó ð/ñ á�tÔôF"�h—n‘n×+Ñ+ó F"ó ðF"ðP�sð  ð ¨ô ðW øð{ ò ØÒðús   ¯B6 Â6C Â?C 