
    V.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     YC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\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 !$VJ.UV  //7G$(  #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tH r"   c                <    | j                  || j                         y)zAdd 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)zAdd 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)zAdd 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)zAdd 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     ,,-Qv/?/?/H/H.IJ::$**++H5JJ~d.A.A-DBvjQR$wt/B/B.E%F

SH'9F'2$#' 

&!"(

;"v& #r"   c                ,    t        | j                        S r   )boolr   r   s    r    __bool__zPlugins.__bool__~       DJJ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    zz+&&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    UDJJ<<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;Nxq%$(U*;Ns   )rb   join	enumerate)r   prefixess     r    message_prefixzLabelledDebug.message_prefix   s,    ;;"%zzO9X;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27)<=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JJ((5)=>E+FE: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

>(VH<HIJJ((5)=>E/(EJH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

+E9F7+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'FCSBV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/    

:fZq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    77##ELL$<$<=1U^^,--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    KK//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    kk557

=cWEF
r"   c                    | j                   j                  ||      }| j                  j                  dj	                  || j                  |      |             |S )Nz*dynamic_source_filename({!r}, {}) --> {!r})r}   dynamic_source_filenamer   rD   formatr   )r   r|   r   dyns       r    r   z.DebugFileTracerWrapper.dynamic_source_filename   sS    kk11(EB

8??  '	
 
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-FfTH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    mm--/

3C7;<
r"   c                v    | j                   j                         }| j                  j                  d|       |S )Nzlines() --> )r   linesr   rD   r   s     r    r   zDebugFileReporterWrapper.lines   s2    mm!!#

<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    mm**,

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;    mm++E2

+E9F3'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:    mm**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    mm++-

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    mm'')

-cW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    mm  "

;sg./
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    mm""$

=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

4SXJg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 $N8| 8r"   