Ë
    oPêj�(  ã                  ó.  — d Z ddlmZ ddlZddlZddlZddlmZmZm	Z	 ddl
mZ ddlmZ ddlmZ ddlmZ dd	lmZmZmZ dd
lmZmZmZmZmZmZ  ee«      Z G d„ d«      Zeegdf   Z G d„ d«      Z G d„ de«      Z  G d„ de«      Z! G d„ de«      Z"y)zSupport for plugins.é    )ÚannotationsN)ÚCallableÚIterableÚIterator)Ú	FrameType)ÚAny)ÚPluginError)Úisolate_module)ÚCoveragePluginÚFileReporterÚ
FileTracer)ÚTArcÚTConfigurableÚ	TDebugCtlÚTLineNoÚTPluginConfigÚTSourceTokenLinesc                  óŠ   — e Zd ZdZddd„Z	 	 	 	 	 	 dd„Z	 	 	 	 dd„Zdd„Zdd„Zdd„Z	dd	„Z
	 	 	 	 	 	 dd
„Zdd„Zdd„Zdd„Zy)ÚPluginsz7The currently loaded collection of coverage.py plugins.Nc                óf   — g | _         i | _        g | _        g | _        g | _        d | _        || _        y ©N)ÚorderÚnamesÚfile_tracersÚconfigurersÚcontext_switchersÚcurrent_moduleÚdebug)Úselfr   s     ú\/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/coverage/plugin_support.pyÚ__init__zPlugins.__init__   s7   € Ø+-ˆŒ
Ø02ˆŒ
Ø24ˆÔØ13ˆÔØ79ˆÔà*.ˆÔØˆ�
ó    c                óÚ   — |D ]_  }|| _         t        |«       t        j                  |   }t	        |dd«      }|st        d|›d�«      ‚|j                  |«      } || |«       Œa d| _         y)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_configzPlugins.load_from_config$   s‚   € ð ò 	)ˆFØ"(ˆDÔÜ�vÔÜ—+‘+˜fÑ%ˆCä# C¨¸$Ó?ˆMÙ Ü!Ø$ V JÐ.UÐVóð ð ×/Ñ/°Ó7ˆGÙ˜$ Õ(ð	)ð #ˆÕr"   c                ó"   — |D ]
  } || «       Œ y)z%Load plugins from callables provided.N© )r   Úplugin_initsÚfns      r    Úload_from_callableszPlugins.load_from_callables;   s   € ð
 ò 	ˆBÙˆt�Hñ	r"   c                ó<   — | j                  || j                  «       y)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_tracerzPlugins.add_file_tracerC   s   € ð 	×Ñ˜ ×!2Ñ!2Õ3r"   c                ó<   — | j                  || j                  «       y)zªAdd a configuring plugin.

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

        N)r5   r   r6   s     r    Úadd_configurerzPlugins.add_configurerL   s   € ð 	×Ñ˜ ×!1Ñ!1Õ2r"   c                ó<   — | j                  || j                  «       y)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)r5   r   r6   s     r    Úadd_dynamic_contextzPlugins.add_dynamic_contextU   s   € ð 	×Ñ˜ ×!7Ñ!7Õ8r"   c                ó(   — | j                  |d«       y)zfAdd a plugin that does nothing.

        This is only useful for testing the plugin support.

        N)r5   r6   s     r    Úadd_noopzPlugins.add_noop^   s   € ð 	×Ñ˜ Õ&r"   c                óè  — | j                   › d|j                  j                  › �}| j                  ru| j                  j	                  d«      rZ| j                  j                  d| j                   ›d|›�«       t        d| j                   ›�| j                  «      }t        ||«      }||_        d|_	        | j                  j                  |«       || j                  |<   |�|j                  |«       yy)z˜Add a plugin object.

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

        ú.r7   zLoaded plugin z: zplugin TN)r   Ú	__class__Ú__name__r   ÚshouldÚwriteÚLabelledDebugÚDebugPluginWrapperÚ_coverage_plugin_nameÚ_coverage_enabledr   Úappendr   )r   r7   ÚspecializedÚplugin_nameÚlabelleds        r    r5   zPlugins._add_pluginf   sÙ   € ð ×,Ñ,Ð-¨Q¨v×/?Ñ/?×/HÑ/HÐ.IÐJˆØ�:Š:˜$Ÿ*™*×+Ñ+¨HÔ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                ó,   — t        | j                  «      S r   )Úboolr   ©r   s    r    Ú__bool__zPlugins.__bool__~   ó   € Ü�D—J‘JÓÐr"   c                ó,   — t        | j                  «      S r   )Úiterr   rO   s    r    Ú__iter__zPlugins.__iter__�   rQ   r"   c                ó    — | j                   |   S )zReturn a plugin by name.)r   )r   rK   s     r    ÚgetzPlugins.get„   s   € à�z‰z˜+Ñ&Ð&r"   r   )r   zTDebugCtl | NoneÚreturnÚNone)r'   úIterable[str]r*   r   rW   rX   )r1   zIterable[TCoverageInit]rW   rX   )r7   r   rW   rX   )r7   r   rJ   zlist[CoveragePlugin] | NonerW   rX   ©rW   rN   )rW   zIterator[CoveragePlugin])rK   ÚstrrW   r   )rB   Ú
__module__Ú__qualname__Ú__doc__r!   r.   r3   r8   r:   r<   r>   r5   rP   rT   rV   r0   r"   r    r   r      s†   „ ÙAôð#àð#ð ð#ð 
ó	#ð.à-ðð 
óó4ó3ó9ó'ð'àð'ð 1ð'ð 
ó	'ó0 ó ô'r"   r   c                  ó2   — e Zd ZdZddd„Zd	d„Zd
d„Zdd„Zy)rE   z?A Debug writer, but with labels for prepending to the messages.c                ó:   — t        |«      |gz   | _        || _        y r   )ÚlistÚlabelsr   )r   Úlabelr   Úprev_labelss       r    r!   zLabelledDebug.__init__�   s   € Ü˜;Ó'¨5¨'Ñ1ˆŒØˆ�
r"   c                óD   — t        || j                  | j                  «      S )z<Add a label to the writer, and return a new `LabelledDebug`.)rE   r   rb   )r   rc   s     r    Ú	add_labelzLabelledDebug.add_label“   s   € ä˜U D§J¡J°·±Ó<Ð<r"   c                ód   — | j                   dgz   }dj                  d„ t        |«      D «       «      S )z4The prefix to use on messages, combining the labels.Ú z:
c              3  ó2   K  — | ]  \  }}d |z  |z   –— Œ y­w)z  Nr0   )Ú.0Úirc   s      r    ú	<genexpr>z/LabelledDebug.message_prefix.<locals>.<genexpr>š   s   è ø€ ÒO©x¨q°%˜$ ™( UÕ*ÑOùs   ‚)rb   ÚjoinÚ	enumerate)r   Úprefixess     r    Úmessage_prefixzLabelledDebug.message_prefix—   s,   € à—;‘; " Ñ%ˆØ�z‰zÑO¼9ÀXÓ;NÔOÓOÐOr"   c                ó^   — | j                   j                  | j                  «       › |› �«       y)z/Write `message`, but with the labels prepended.N)r   rD   rp   )r   Úmessages     r    rD   zLabelledDebug.writeœ   s'   € à�
‰
×Ñ˜D×/Ñ/Ó1Ð2°7°)Ð<Õ=r"   N)r0   )rc   r[   r   r   rd   rY   )rc   r[   rW   rE   ©rW   r[   )rr   r[   rW   rX   )rB   r\   r]   r^   r!   rf   rp   rD   r0   r"   r    rE   rE   Œ   s   „ ÙIôó=óPô
>r"   rE   c                  óT   ‡ — e Zd ZdZd	ˆ fd„Zd
d„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
ˆ xZS )rF   z:Wrap a plugin, and use debug to report on what it's doing.c                ó>   •— t         ‰| �  «        || _        || _        y r   )Úsuperr!   r7   r   )r   r7   r   rA   s      €r    r!   zDebugPluginWrapper.__init__¤   s   ø€ Ü‰ÑÔØˆŒØˆ�
r"   c                óÖ   — | j                   j                  |«      }| j                  j                  d|›d|›�«       |r*| j                  j	                  d|›�«      }t        ||«      }|S )Nzfile_tracer(ú) --> úfile )r7   Úfile_tracerr   rD   rf   ÚDebugFileTracerWrapper)r   ÚfilenameÚtracerr   s       r    rz   zDebugPluginWrapper.file_tracer©   sd   € Ø—‘×(Ñ(¨Ó2ˆØ�
‰
×Ñ˜<¨ |°6¸&¸ÐDÔEÙØ—J‘J×(Ñ(¨5°°Ð)=Ó>ˆEÜ+¨F°EÓ:ˆFØˆr"   c                óü   — | j                   j                  |«      }t        |t        «      sJ ‚| j                  j                  d|›d|›�«       |r+| j                  j                  d|›�«      }t        |||«      }|S )Nzfile_reporter(rx   ry   )r7   Úfile_reporterÚ
isinstancer   r   rD   rf   ÚDebugFileReporterWrapper)r   r|   Úreporterr   s       r    r   z DebugPluginWrapper.file_reporter±   sv   € Ø—;‘;×,Ñ,¨XÓ6ˆÜ˜(¤LÔ1Ð1Ð1Ø�
‰
×Ñ˜>¨(¨°V¸H¸<ÐHÔIÙØ—J‘J×(Ñ(¨5°°Ð)=Ó>ˆEÜ/°¸(ÀEÓJˆHØˆr"   c                ó~   — | j                   j                  |«      }| j                  j                  d|›d|›�«       |S )Nzdynamic_context(rx   )r7   Údynamic_contextr   rD   )r   ÚframeÚcontexts      r    r„   z"DebugPluginWrapper.dynamic_contextº   s;   € Ø—+‘+×-Ñ-¨eÓ4ˆØ�
‰
×ÑÐ+¨E¨9°F¸7¸+ÐFÔGØˆr"   c                ó~   — | j                   j                  |«      }| j                  j                  d|›d|›�«       |S )Nzfind_executable_files(rx   )r7   Úfind_executable_filesr   rD   )r   Úsrc_dirÚexecutable_filess      r    rˆ   z(DebugPluginWrapper.find_executable_files¿   s?   € ØŸ;™;×<Ñ<¸WÓEÐØ�
‰
×ÑÐ1°'°¸FÐCSÐBVÐWÔXØÐr"   c                óx   — | j                   j                  d|›d�«       | j                  j                  |«       y )Nz
configure(ú))r   rD   r7   Ú	configure)r   r*   s     r    r�   zDebugPluginWrapper.configureÄ   s/   € Ø�
‰
×Ñ˜: f Z¨qÐ1Ô2Ø�‰×Ñ˜fÕ%r"   c                ó6   — | j                   j                  «       S r   )r7   Úsys_inforO   s    r    r�   zDebugPluginWrapper.sys_infoÈ   s   € Ø�{‰{×#Ñ#Ó%Ð%r"   )r7   r   r   rE   rW   rX   )r|   r[   rW   zFileTracer | None)r|   r[   rW   zFileReporter | str)r…   r   rW   ú
str | None)r‰   r[   rW   rY   )r*   r   rW   rX   )rW   zIterable[tuple[str, Any]])rB   r\   r]   r^   r!   rz   r   r„   rˆ   r�   r�   Ú__classcell__©rA   s   @r    rF   rF   ¡   s)   ø„ ÙDõó
óóó
 ó
&÷&r"   rF   c                  ó@   — e Zd ZdZd	d„Zd
d„Zdd„Zdd„Zdd„Zdd„Z	y)r{   zA debugging `FileTracer`.c                ó    — || _         || _        y r   )r}   r   )r   r}   r   s      r    r!   zDebugFileTracerWrapper.__init__Ï   s   € ØˆŒØˆ�
r"   c                óŠ   — t         j                  j                  |j                  j                  «      }|› d|j
                  › �S )z7A short string identifying a frame, for debug messages.ú@)ÚosÚpathÚbasenameÚf_codeÚco_filenameÚf_lineno)r   r…   r|   s      r    Ú_show_framez"DebugFileTracerWrapper._show_frameÓ   s6   € ä—7‘7×#Ñ# E§L¡L×$<Ñ$<Ó=ˆØ�˜1˜UŸ^™^Ð,Ð-Ð-r"   c                óv   — | j                   j                  «       }| j                  j                  d|›�«       |S )Nzsource_filename() --> )r}   Úsource_filenamer   rD   )r   Ú	sfilenames     r    rŸ   z&DebugFileTracerWrapper.source_filenameØ   s4   € Ø—K‘K×/Ñ/Ó1ˆ	Ø�
‰
×ÑÐ1°)°Ð?Ô@ØÐr"   c                óv   — | j                   j                  «       }| j                  j                  d|›�«       |S )Nz"has_dynamic_source_filename() --> )r}   Úhas_dynamic_source_filenamer   rD   )r   Úhass     r    r¢   z2DebugFileTracerWrapper.has_dynamic_source_filenameÝ   s3   € Ø�k‰k×5Ñ5Ó7ˆØ�
‰
×ÑÐ=¸c¸WÐEÔFØˆ
r"   c                ó¤   — | j                   j                  ||«      }| j                  j                  d|›d| j	                  |«      › d|›�«       |S )Nzdynamic_source_filename(z, rx   )r}   Údynamic_source_filenamer   rD   r�   )r   r|   r…   Údyns       r    r¥   z.DebugFileTracerWrapper.dynamic_source_filenameâ   sU   € Ø�k‰k×1Ñ1°(¸EÓBˆØ�
‰
×ÑØ& x l°"°T×5EÑ5EÀeÓ5LÐ4MÈVÐTWÐSZÐ[ô	
ð ˆ
r"   c                óœ   — | j                   j                  |«      }| j                  j                  d| j	                  |«      › d|›�«       |S )Nzline_number_range(rx   )r}   Úline_number_ranger   rD   r�   )r   r…   Úpairs      r    r¨   z(DebugFileTracerWrapper.line_number_rangeé   sG   € Ø�{‰{×,Ñ,¨UÓ3ˆØ�
‰
×ÑÐ-¨d×.>Ñ.>¸uÓ.EÐ-FÀfÈTÈHÐUÔVØˆr"   N)r}   r   r   rE   rW   rX   )r…   r   rW   r[   rs   rZ   )r|   r[   r…   r   rW   r�   )r…   r   rW   ztuple[TLineNo, TLineNo])
rB   r\   r]   r^   r!   r�   rŸ   r¢   r¥   r¨   r0   r"   r    r{   r{   Ì   s#   „ Ù#óó.ó
ó
ó
ôr"   r{   c                  ót   ‡ — e Zd ZdZdˆ fd„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dd	„Zdd
„Zdd„Zdd„Zˆ xZS )r�   zA debugging `FileReporter`.c                ó@   •— t         ‰| �  |«       || _        || _        y r   )rv   r!   r‚   r   )r   r|   r‚   r   rA   s       €r    r!   z!DebugFileReporterWrapper.__init__ò   s   ø€ Ü‰Ñ˜Ô"Ø ˆŒØˆ�
r"   c                óv   — | j                   j                  «       }| j                  j                  d|›�«       |S )Nzrelative_filename() --> )r‚   Úrelative_filenamer   rD   ©r   Úrets     r    r­   z*DebugFileReporterWrapper.relative_filename÷   s3   € Ø�m‰m×-Ñ-Ó/ˆØ�
‰
×ÑÐ3°C°7Ð;Ô<Øˆ
r"   c                óv   — | j                   j                  «       }| j                  j                  d|›�«       |S )Nzlines() --> )r‚   Úlinesr   rD   r®   s     r    r±   zDebugFileReporterWrapper.linesü   s2   € Ø�m‰m×!Ñ!Ó#ˆØ�
‰
×Ñ˜<¨ wÐ/Ô0Øˆ
r"   c                óv   — | j                   j                  «       }| j                  j                  d|›�«       |S )Nzexcluded_lines() --> )r‚   Úexcluded_linesr   rD   r®   s     r    r³   z'DebugFileReporterWrapper.excluded_lines  s3   € Ø�m‰m×*Ñ*Ó,ˆØ�
‰
×ÑÐ0°°Ð8Ô9Øˆ
r"   c                ó~   — | j                   j                  |«      }| j                  j                  d|›d|›�«       |S )Nztranslate_lines(rx   )r‚   Útranslate_linesr   rD   )r   r±   r¯   s      r    rµ   z(DebugFileReporterWrapper.translate_lines  s;   € Ø�m‰m×+Ñ+¨EÓ2ˆØ�
‰
×ÑÐ+¨E¨9°F¸3¸'ÐBÔCØˆ
r"   c                ó~   — | j                   j                  |«      }| j                  j                  d|›d|›�«       |S )Nztranslate_arcs(rx   )r‚   Útranslate_arcsr   rD   )r   Úarcsr¯   s      r    r·   z'DebugFileReporterWrapper.translate_arcs  s:   € Ø�m‰m×*Ñ*¨4Ó0ˆØ�
‰
×Ñ˜?¨4¨(°&¸¸Ð@ÔAØˆ
r"   c                óv   — | j                   j                  «       }| j                  j                  d|›�«       |S )Nzno_branch_lines() --> )r‚   Úno_branch_linesr   rD   r®   s     r    rº   z(DebugFileReporterWrapper.no_branch_lines  s3   € Ø�m‰m×+Ñ+Ó-ˆØ�
‰
×ÑÐ1°#°Ð9Ô:Øˆ
r"   c                óv   — | j                   j                  «       }| j                  j                  d|›�«       |S )Nzexit_counts() --> )r‚   Úexit_countsr   rD   r®   s     r    r¼   z$DebugFileReporterWrapper.exit_counts  s3   € Ø�m‰m×'Ñ'Ó)ˆØ�
‰
×ÑÐ-¨c¨WÐ5Ô6Øˆ
r"   c                óv   — | j                   j                  «       }| j                  j                  d|›�«       |S )Nzarcs() --> )r‚   r¸   r   rD   r®   s     r    r¸   zDebugFileReporterWrapper.arcs  s2   € Ø�m‰m× Ñ Ó"ˆØ�
‰
×Ñ˜; s gÐ.Ô/Øˆ
r"   c                óŠ   — | j                   j                  «       }| j                  j                  dt	        |«      › d�«       |S )Nzsource() --> z chars)r‚   Úsourcer   rD   Úlenr®   s     r    r¿   zDebugFileReporterWrapper.source  s8   € Ø�m‰m×"Ñ"Ó$ˆØ�
‰
×Ñ˜=¬¨S«¨
°&Ð9Ô:Øˆ
r"   c                óœ   — t        | j                  j                  «       «      }| j                  j	                  dt        |«      › d�«       |S )Nzsource_token_lines() --> z tokens)ra   r‚   Úsource_token_linesr   rD   rÀ   r®   s     r    rÂ   z+DebugFileReporterWrapper.source_token_lines$  s>   € Ü�4—=‘=×3Ñ3Ó5Ó6ˆØ�
‰
×ÑÐ4´S¸³X°J¸gÐFÔGØˆ
r"   )r|   r[   r‚   r   r   rE   rW   rX   rs   )rW   úset[TLineNo])r±   zIterable[TLineNo]rW   rÃ   )r¸   zIterable[TArc]rW   ú	set[TArc])rW   zdict[TLineNo, int])rW   rÄ   )rW   r   )rB   r\   r]   r^   r!   r­   r±   r³   rµ   r·   rº   r¼   r¸   r¿   rÂ   r‘   r’   s   @r    r�   r�   ï   s=   ø„ Ù%õó
ó
ó
ó
ó
ó
ó
ó
ó
÷
r"   r�   )#r^   Ú
__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   ÚTCoverageInitrE   rF   r{   r�   r0   r"   r    ú<module>rÏ      s�   ðñ å "ã 	Û Û 
ß 8Ñ 8Ý Ý å +Ý (ß DÑ Dß d× dá�BÓ€÷o'ñ o'ðd ˜'˜ D˜Ñ)€÷>ñ >ô*(&˜ô (&ôV ˜Zô  ôF8˜|õ 8r"   