ó
    Ð]jÌ(  ã                  ó.  • S r SSKJr  SSKrSSKrSSKrSSKJrJrJ	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JrJr  SS
KJrJrJrJrJrJr  \" \5      r " S S5      r\\/S4   r " S S5      r " S S\5      r  " S S\5      r! " S S\5      r"g)zSupport for plugins.é    )ÚannotationsN)ÚCallableÚIterableÚIterator)Ú	FrameType)ÚAny)ÚPluginError)Úisolate_module)ÚCoveragePluginÚFileReporterÚ
FileTracer)ÚTArcÚTConfigurableÚ	TDebugCtlÚTLineNoÚTPluginConfigÚTSourceTokenLinesc                  óª   • \ rS rSrSrSSS jjr      SS jr    SS jrSS jrSS jr	SS	 jr
SS
 jr      SS jrSS jrSS jrSS jrSrg)ÚPluginsé   z7The currently loaded collection of coverage.py plugins.Nc                ód   • / U l         0 U l        / U l        / U l        / U l        S U l        Xl        g ©N)ÚorderÚnamesÚfile_tracersÚconfigurersÚcontext_switchersÚcurrent_moduleÚdebug)Úselfr   s     ÚT/home/mande/repo/quber/.venv/lib/python3.13/site-packages/coverage/plugin_support.pyÚ__init__ÚPlugins.__init__   s5   € Ø+-ˆŒ
Ø02ˆŒ
Ø24ˆÔØ13ˆÔØ79ˆÔà*.ˆÔØ�
ó    c                óæ   • U Hd  nX0l         [        U5        [        R                  U   n[	        USS5      nU(       d  [        SU< S35      eUR                  U5      nU" X5        Mf     SU l         g)z@Load plugin modules, and read their settings from configuration.Úcoverage_initNzPlugin module z' didn't define a coverage_init function)r   Ú
__import__ÚsysÚmodulesÚgetattrr	   Úget_plugin_options)r    r)   ÚconfigÚmoduleÚmodr&   Úoptionss          r!   Úload_from_configÚPlugins.load_from_config$   sy   € ó ˆFØ"(ÔÜ�vÔÜ—+‘+˜fÑ%ˆCä# C¨¸$Ó?ˆMÞ Ü!Ø$ V¡JÐ.UÐVóð ð ×/Ñ/°Ó7ˆGÙ˜$Ö(ñ ð #ˆÕr$   c                ó&   • U H  nU" U 5        M     g)z%Load plugins from callables provided.N© )r    Úplugin_initsÚfns      r!   Úload_from_callablesÚPlugins.load_from_callables;   s   € ó
 ˆBÙˆtŽHò r$   c                ó:   • U R                  XR                  5        g)z•Add a file tracer plugin.

`plugin` is an instance of a third-party plugin class.  It must
implement the :meth:`CoveragePlugin.file_tracer` method.

N)Ú_add_pluginr   ©r    Úplugins     r!   Úadd_file_tracerÚPlugins.add_file_tracerC   s   € ð 	×Ñ˜×!2Ñ!2Õ3r$   c                ó:   • U R                  XR                  5        g)z’Add a configuring plugin.

`plugin` is an instance of a third-party plugin class. It must
implement the :meth:`CoveragePlugin.configure` method.

N)r9   r   r:   s     r!   Úadd_configurerÚPlugins.add_configurerL   s   € ð 	×Ñ˜×!1Ñ!1Õ2r$   c                ó:   • U R                  XR                  5        g)z�Add a dynamic context plugin.

`plugin` is an instance of a third-party plugin class.  It must
implement the :meth:`CoveragePlugin.dynamic_context` method.

N)r9   r   r:   s     r!   Úadd_dynamic_contextÚPlugins.add_dynamic_contextU   s   € ð 	×Ñ˜×!7Ñ!7Õ8r$   c                ó(   • U R                  US5        g)zVAdd a plugin that does nothing.

This is only useful for testing the plugin support.

N)r9   r:   s     r!   Úadd_noopÚPlugins.add_noop^   s   € ð 	×Ñ˜ Õ&r$   c                óþ  • U R                    SUR                  R                   3nU R                  (       a|  U R                  R	                  S5      (       a\  U R                  R                  SU R                   < SU< 35        [        SU R                   < 3U R                  5      n[        X5      nX1l        SUl	        U R                  R                  U5        XR                  U'   Ub  UR                  U5        gg)z€Add a plugin object.

`plugin` is a :class:`CoveragePlugin` instance to add.  `specialized`
is a list to append the plugin to.

Ú.r;   zLoaded plugin z: zplugin TN)r   Ú	__class__Ú__name__r   ÚshouldÚwriteÚLabelledDebugÚDebugPluginWrapperÚ_coverage_plugin_nameÚ_coverage_enabledr   Úappendr   )r    r;   ÚspecializedÚplugin_nameÚlabelleds        r!   r9   ÚPlugins._add_pluginf   sÖ   € ð ×,Ñ,Ð-¨Q¨v×/?Ñ/?×/HÑ/HÐ.IÐJˆØ�:�:˜$Ÿ*™*×+Ñ+¨H×5Ñ5Ø�J‰J×Ñ˜~¨d×.AÑ.AÑ-DÀBÀvÁjÐQÔRÜ$ w¨t×/BÑ/BÑ.EÐ%FÈÏ
É
ÓSˆHÜ'¨Ó9ˆFà'2Ô$Ø#'ˆÔ Ø�
‰
×Ñ˜&Ô!Ø"(�
‰
�;ÑØÑ"Ø×Ñ˜vÕ&ð #r$   c                ó,   • [        U R                  5      $ r   )Úboolr   ©r    s    r!   Ú__bool__ÚPlugins.__bool__~   ó   € Ü�D—J‘JÓÐr$   c                ó,   • [        U R                  5      $ r   )Úiterr   rX   s    r!   Ú__iter__ÚPlugins.__iter__�   r[   r$   c                ó    • U R                   U   $ )zReturn a plugin by name.)r   )r    rS   s     r!   ÚgetÚPlugins.get„   s   € à�z‰z˜+Ñ&Ð&r$   )r   r   r   r   r   r   r   r   )r   zTDebugCtl | NoneÚreturnÚNone)r)   úIterable[str]r,   r   rc   rd   )r4   zIterable[TCoverageInit]rc   rd   )r;   r   rc   rd   )r;   r   rR   zlist[CoveragePlugin] | Nonerc   rd   ©rc   rW   )rc   zIterator[CoveragePlugin])rS   Ústrrc   r   )rJ   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r"   r0   r6   r<   r?   rB   rE   r9   rY   r^   ra   Ú__static_attributes__r3   r$   r!   r   r      s†   † ÙAöð#àð#ð ð#ð 
ô	#ð.à-ðð 
ôô4ô3ô9ô'ð'àð'ð 1ð'ð 
ô	'ô0 ô ÷'r$   r   c                  óD   • \ rS rSrSrS	S
S jjrSS jrSS jrSS jrSr	g)rM   éŒ   z?A Debug writer, but with labels for prepending to the messages.c                ó8   • [        U5      U/-   U l        X l        g r   )ÚlistÚlabelsr   )r    Úlabelr   Úprev_labelss       r!   r"   ÚLabelledDebug.__init__�   s   € Ü˜;Ó'¨5¨'Ñ1ˆŒØ�
r$   c                óB   • [        XR                  U R                  5      $ )z<Add a label to the writer, and return a new `LabelledDebug`.)rM   r   rq   )r    rr   s     r!   Ú	add_labelÚLabelledDebug.add_label“   s   € ä˜U§J¡J°·±Ó<Ð<r$   c                ód   • U R                   S/-   nSR                  S [        U5       5       5      $ )z4The prefix to use on messages, combining the labels.Ú z:
c              3  ó6   #   • U  H  u  pS U-  U-   v •  M     g7f)z  Nr3   )Ú.0Úirr   s      r!   Ú	<genexpr>Ú/LabelledDebug.message_prefix.<locals>.<genexpr>š   s   é € ÐOÒ;N©x¨q˜$ ™( UÖ*Ò;Nùs   ‚)rq   ÚjoinÚ	enumerate)r    Úprefixess     r!   Úmessage_prefixÚLabelledDebug.message_prefix—   s,   € à—;‘; " Ñ%ˆØ�z‰zÑO¼9ÀXÔ;NÓOÓOÐOr$   c                ó^   • U R                   R                  U R                  5        U 35        g)z/Write `message`, but with the labels prepended.N)r   rL   r‚   )r    Úmessages     r!   rL   ÚLabelledDebug.writeœ   s'   € à�
‰
×Ñ˜D×/Ñ/Ó1Ð2°7°)Ð<Õ=r$   )r   rq   N)r3   )rr   rg   r   r   rs   re   )rr   rg   rc   rM   ©rc   rg   )r…   rg   rc   rd   )
rJ   rh   ri   rj   rk   r"   rv   r‚   rL   rl   r3   r$   r!   rM   rM   Œ   s   † ÙIöô=ôP÷
>r$   rM   c                  ól   ^ • \ rS rSrSrSU 4S jjrSS jrSS jrSS jrSS jr	SS jr
SS	 jrS
rU =r$ )rN   é¡   z:Wrap a plugin, and use debug to report on what it's doing.c                ó:   >• [         TU ]  5         Xl        X l        g r   )Úsuperr"   r;   r   )r    r;   r   rI   s      €r!   r"   ÚDebugPluginWrapper.__init__¤   s   ø€ Ü‰ÑÔØŒØ�
r$   c                óä   • U R                   R                  U5      nU R                  R                  SU< SU< 35        U(       a*  U R                  R	                  SU< 35      n[        X#5      nU$ )Nzfile_tracer(ú) --> úfile )r;   Úfile_tracerr   rL   rv   ÚDebugFileTracerWrapper)r    ÚfilenameÚtracerr   s       r!   r�   ÚDebugPluginWrapper.file_tracer©   sb   € Ø—‘×(Ñ(¨Ó2ˆØ�
‰
×Ñ˜<¨¡|°6¸&¹ÐDÔEÞØ—J‘J×(Ñ(¨5°±Ð)=Ó>ˆEÜ+¨FÓ:ˆFØˆr$   c                ó  • U R                   R                  U5      n[        U[        5      (       d   eU R                  R                  SU< SU< 35        U(       a+  U R                  R                  SU< 35      n[        XU5      nU$ )Nzfile_reporter(rŽ   r�   )r;   Úfile_reporterÚ
isinstancer   r   rL   rv   ÚDebugFileReporterWrapper)r    r’   Úreporterr   s       r!   r–   Ú DebugPluginWrapper.file_reporter±   sw   € Ø—;‘;×,Ñ,¨XÓ6ˆÜ˜(¤L×1Ñ1Ð1Ð1Ø�
‰
×Ñ˜>¨(©°V¸H¹<ÐHÔIÞØ—J‘J×(Ñ(¨5°±Ð)=Ó>ˆEÜ/°ÀEÓJˆHØˆr$   c                ó‚   • U R                   R                  U5      nU R                  R                  SU< SU< 35        U$ )Nzdynamic_context(rŽ   )r;   Údynamic_contextr   rL   )r    ÚframeÚcontexts      r!   rœ   Ú"DebugPluginWrapper.dynamic_contextº   s;   € Ø—+‘+×-Ñ-¨eÓ4ˆØ�
‰
×ÑÐ+¨E©9°F¸7¹+ÐFÔGØˆr$   c                ó‚   • U R                   R                  U5      nU R                  R                  SU< SU< 35        U$ )Nzfind_executable_files(rŽ   )r;   Úfind_executable_filesr   rL   )r    Úsrc_dirÚexecutable_filess      r!   r¡   Ú(DebugPluginWrapper.find_executable_files¿   s?   € ØŸ;™;×<Ñ<¸WÓEÐØ�
‰
×ÑÐ1°'±¸FÐCSÑBVÐWÔXØÐr$   c                óz   • U R                   R                  SU< S35        U R                  R                  U5        g )Nz
configure(Ú))r   rL   r;   Ú	configure)r    r,   s     r!   r§   ÚDebugPluginWrapper.configureÄ   s/   € Ø�
‰
×Ñ˜: f¡Z¨qÐ1Ô2Ø�‰×Ñ˜fÕ%r$   c                ó6   • U R                   R                  5       $ r   )r;   Úsys_inforX   s    r!   rª   ÚDebugPluginWrapper.sys_infoÈ   s   € Ø�{‰{×#Ñ#Ó%Ð%r$   )r   r;   )r;   r   r   rM   rc   rd   )r’   rg   rc   zFileTracer | None)r’   rg   rc   zFileReporter | str)r�   r   rc   ú
str | None)r¢   rg   rc   re   )r,   r   rc   rd   )rc   zIterable[tuple[str, Any]])rJ   rh   ri   rj   rk   r"   r�   r–   rœ   r¡   r§   rª   rl   Ú__classcell__©rI   s   @r!   rN   rN   ¡   s.   ø† ÙD÷ô
ôôô
 ô
&÷&ò &r$   rN   c                  óT   • \ rS rSrSrSS jrSS jrSS jrSS jrSS jr	SS jr
S	rg
)r‘   éÌ   zA debugging `FileTracer`.c                ó   • Xl         X l        g r   )r“   r   )r    r“   r   s      r!   r"   ÚDebugFileTracerWrapper.__init__Ï   s   € ØŒØ�
r$   c                óŠ   • [         R                  R                  UR                  R                  5      nU SUR
                   3$ )z7A short string identifying a frame, for debug messages.Ú@)ÚosÚpathÚbasenameÚf_codeÚco_filenameÚf_lineno)r    r�   r’   s      r!   Ú_show_frameÚ"DebugFileTracerWrapper._show_frameÓ   s6   € ä—7‘7×#Ñ# E§L¡L×$<Ñ$<Ó=ˆØ�˜1˜UŸ^™^Ð,Ð-Ð-r$   c                óx   • U R                   R                  5       nU R                  R                  SU< 35        U$ )Nzsource_filename() --> )r“   Úsource_filenamer   rL   )r    Ú	sfilenames     r!   r¾   Ú&DebugFileTracerWrapper.source_filenameØ   s4   € Ø—K‘K×/Ñ/Ó1ˆ	Ø�
‰
×ÑÐ1°)±Ð?Ô@ØÐr$   c                óx   • U R                   R                  5       nU R                  R                  SU< 35        U$ )Nz"has_dynamic_source_filename() --> )r“   Úhas_dynamic_source_filenamer   rL   )r    Úhass     r!   rÂ   Ú2DebugFileTracerWrapper.has_dynamic_source_filenameÝ   s3   € Ø�k‰k×5Ñ5Ó7ˆØ�
‰
×ÑÐ=¸c¹WÐEÔFØˆ
r$   c                ó²   • U R                   R                  X5      nU R                  R                  SR	                  UU R                  U5      U5      5        U$ )Nz*dynamic_source_filename({!r}, {}) --> {!r})r“   Údynamic_source_filenamer   rL   Úformatr»   )r    r’   r�   Údyns       r!   rÆ   Ú.DebugFileTracerWrapper.dynamic_source_filenameâ   sQ   € Ø�k‰k×1Ñ1°(ÓBˆØ�
‰
×ÑØ8×?Ñ?ØØ× Ñ  Ó'Øóô	
ð ˆ
r$   c                óž   • U R                   R                  U5      nU R                  R                  SU R	                  U5       SU< 35        U$ )Nzline_number_range(rŽ   )r“   Úline_number_ranger   rL   r»   )r    r�   Úpairs      r!   rË   Ú(DebugFileTracerWrapper.line_number_rangeí   sG   € Ø�{‰{×,Ñ,¨UÓ3ˆØ�
‰
×ÑÐ-¨d×.>Ñ.>¸uÓ.EÐ-FÀfÈTÉHÐUÔVØˆr$   )r   r“   N)r“   r   r   rM   rc   rd   )r�   r   rc   rg   r‡   rf   )r’   rg   r�   r   rc   r¬   )r�   r   rc   ztuple[TLineNo, TLineNo])rJ   rh   ri   rj   rk   r"   r»   r¾   rÂ   rÆ   rË   rl   r3   r$   r!   r‘   r‘   Ì   s#   † Ù#ôô.ô
ô
ô
	÷r$   r‘   c                  ó”   ^ • \ rS rSrSrSU 4S jjrSS jrSS jrSS jrSS jr	SS jr
SS	 jrSS
 jrSS jrSS jrSS jrSrU =r$ )r˜   éó   zA debugging `FileReporter`.c                ó<   >• [         TU ]  U5        X l        X0l        g r   )r‹   r"   r™   r   )r    r’   r™   r   rI   s       €r!   r"   Ú!DebugFileReporterWrapper.__init__ö   s   ø€ Ü‰Ñ˜Ô"Ø ŒØ�
r$   c                óx   • U R                   R                  5       nU R                  R                  SU< 35        U$ )Nzrelative_filename() --> )r™   Úrelative_filenamer   rL   ©r    Úrets     r!   rÓ   Ú*DebugFileReporterWrapper.relative_filenameû   s3   € Ø�m‰m×-Ñ-Ó/ˆØ�
‰
×ÑÐ3°C±7Ð;Ô<Øˆ
r$   c                óx   • U R                   R                  5       nU R                  R                  SU< 35        U$ )Nzlines() --> )r™   Úlinesr   rL   rÔ   s     r!   rØ   ÚDebugFileReporterWrapper.lines   s2   € Ø�m‰m×!Ñ!Ó#ˆØ�
‰
×Ñ˜<¨¡wÐ/Ô0Øˆ
r$   c                óx   • U R                   R                  5       nU R                  R                  SU< 35        U$ )Nzexcluded_lines() --> )r™   Úexcluded_linesr   rL   rÔ   s     r!   rÛ   Ú'DebugFileReporterWrapper.excluded_lines  s3   € Ø�m‰m×*Ñ*Ó,ˆØ�
‰
×ÑÐ0°±Ð8Ô9Øˆ
r$   c                ó‚   • U R                   R                  U5      nU R                  R                  SU< SU< 35        U$ )Nztranslate_lines(rŽ   )r™   Útranslate_linesr   rL   )r    rØ   rÕ   s      r!   rÞ   Ú(DebugFileReporterWrapper.translate_lines
  s;   € Ø�m‰m×+Ñ+¨EÓ2ˆØ�
‰
×ÑÐ+¨E©9°F¸3¹'ÐBÔCØˆ
r$   c                ó‚   • U R                   R                  U5      nU R                  R                  SU< SU< 35        U$ )Nztranslate_arcs(rŽ   )r™   Útranslate_arcsr   rL   )r    ÚarcsrÕ   s      r!   rá   Ú'DebugFileReporterWrapper.translate_arcs  s:   € Ø�m‰m×*Ñ*¨4Ó0ˆØ�
‰
×Ñ˜?¨4©(°&¸¹Ð@ÔAØˆ
r$   c                óx   • U R                   R                  5       nU R                  R                  SU< 35        U$ )Nzno_branch_lines() --> )r™   Úno_branch_linesr   rL   rÔ   s     r!   rå   Ú(DebugFileReporterWrapper.no_branch_lines  s3   € Ø�m‰m×+Ñ+Ó-ˆØ�
‰
×ÑÐ1°#±Ð9Ô:Øˆ
r$   c                óx   • U R                   R                  5       nU R                  R                  SU< 35        U$ )Nzexit_counts() --> )r™   Úexit_countsr   rL   rÔ   s     r!   rè   Ú$DebugFileReporterWrapper.exit_counts  s3   € Ø�m‰m×'Ñ'Ó)ˆØ�
‰
×ÑÐ-¨c©WÐ5Ô6Øˆ
r$   c                óx   • U R                   R                  5       nU R                  R                  SU< 35        U$ )Nzarcs() --> )r™   râ   r   rL   rÔ   s     r!   râ   ÚDebugFileReporterWrapper.arcs  s2   € Ø�m‰m× Ñ Ó"ˆØ�
‰
×Ñ˜; s¡gÐ.Ô/Øˆ
r$   c                óŠ   • U R                   R                  5       nU R                  R                  S[	        U5       S35        U$ )Nzsource() --> z chars)r™   Úsourcer   rL   ÚlenrÔ   s     r!   rí   ÚDebugFileReporterWrapper.source#  s8   € Ø�m‰m×"Ñ"Ó$ˆØ�
‰
×Ñ˜=¬¨S«¨
°&Ð9Ô:Øˆ
r$   c                óœ   • [        U R                  R                  5       5      nU R                  R	                  S[        U5       S35        U$ )Nzsource_token_lines() --> z tokens)rp   r™   Úsource_token_linesr   rL   rî   rÔ   s     r!   rñ   Ú+DebugFileReporterWrapper.source_token_lines(  s>   € Ü�4—=‘=×3Ñ3Ó5Ó6ˆØ�
‰
×ÑÐ4´S¸³X°J¸gÐFÔGØˆ
r$   )r   r™   )r’   rg   r™   r   r   rM   rc   rd   r‡   )rc   úset[TLineNo])rØ   zIterable[TLineNo]rc   ró   )râ   zIterable[TArc]rc   ú	set[TArc])rc   zdict[TLineNo, int])rc   rô   )rc   r   )rJ   rh   ri   rj   rk   r"   rÓ   rØ   rÛ   rÞ   rá   rå   rè   râ   rí   rñ   rl   r­   r®   s   @r!   r˜   r˜   ó   sB   ø† Ù%÷ô
ô
ô
ô
ô
ô
ô
ô
ô
÷
ò r$   r˜   )#rk   Ú
__future__r   rµ   Úos.pathr(   Úcollections.abcr   r   r   Útypesr   Útypingr   Úcoverage.exceptionsr	   Úcoverage.miscr
   Úcoverage.pluginr   r   r   Úcoverage.typesr   r   r   r   r   r   r   ÚTCoverageInitrM   rN   r‘   r˜   r3   r$   r!   Ú<module>rÿ      s�   ðñ å "ã 	Û Û 
ß 8Ñ 8Ý Ý å +Ý (ß DÑ Dß d× dá�BÓ€÷o'ñ o'ðd ˜'˜ D˜Ñ)€÷>ñ >ô*(&˜ô (&ôV$˜Zô $ôN8˜|õ 8r$   