o
    PFf,                     @   s  d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dlZd dlm	Z	 d dl
mZmZ d dlmZ d dlZd dlZd dlmZ d dlmZ d d	lmZmZ d
dlmZ ejd  dkZe Zdd Z e deede derteddnedddd Z!e	dd Z"dd Z#dd Z$dd Z%dZ&dZ'd Z(e%Z)ej*Z+G d!d" d"e,Z-d#d$ Z.G d%d& d&ej/Z/d'd( Z0d)d* Z1d+d, Z2d-d. Z3e3d/d0 Z4G d1d2 d2Z5e5 Z6dS )3    )print_functionN)datetime)contextmanager)basenamerealpath)dedent)	highlight)Terminal256Formatter)PythonLexerPython3Lexer   )SolarizedDark   c                    s    fdd}|S )Nc                    s   t |   | S N)setattr)fnnamevalue P/var/www/secure340b-portal/env/lib/python3.10/site-packages/icecream/icecream.py	decorator-   s   z%bindStaticVariable.<locals>.decoratorr   )r   r   r   r   r   r   bindStaticVariable,   s   r   	formatter)stylelexerF)ensurenlc                 C   s   t }t| |j|jS r   )colorizer   r   r   )sselfr   r   r   r   3   s   r   c                   c   s    t   d V  t   d S r   )coloramainitdeinitr   r   r   r   supportTerminalColorsInWindows;   s   r#   c                  G   s   t | dtji d S )Nfile)printsysstderr)argsr   r   r   stderrPrintD   s   r)   c                 C   s&   zt |  W dS  ty   Y dS w )NFT)astliteral_eval	Exception)r   r   r   r   	isLiteralH   s   r-   c                 C   s<   t | }t  t| W d    d S 1 sw   Y  d S r   )r   r#   r)   )r   coloredr   r   r   colorizedStderrPrintP   s   
"r/   zic| F   z- c                   @   s   e Zd ZdZdZdS )NoSourceAvailableErrora  
    Raised when icecream fails to find or access source code that's
    required to parse and analyze. This can happen, for example, when

      - ic() is invoked inside a REPL or interactive shell, e.g. from the
        command line (CLI) or with python -i.

      - The source code is mangled and/or packaged, e.g. with a project
        freezer like PyInstaller.

      - The underlying source code changed during execution. See
        https://stackoverflow.com/a/33175832.
    zFailed to access the underlying source code for analysis. Was ic() invoked in a REPL (e.g. from the command line), a frozen application (e.g. packaged with PyInstaller), or did the underlying source code change during execution?N)__name__
__module____qualname____doc__infoMessager   r   r   r   r1   ]   s    r1   c                 C   s   t | r|  S | S r   )callable)objr   r   r   callOrValuer   s   r9   c                   @   s   e Zd Zdd ZdS )Sourcec                 C   s>   |   |}d|v rd|jjd  | }t|}| }|S )N
 r   )	asttokensget_textfirst_tokenstartr   strip)r   noderesultr   r   r   get_text_with_indentationw   s   z Source.get_text_with_indentationN)r2   r3   r4   rD   r   r   r   r   r:   v   s    r:   c                 C   s8   | d}tdt|D ]
}| ||  ||< qd|S )NTr    )
splitlinesrangelenjoin)prefixr   linesir   r   r   prefixLinesAfterFirst   s   

rM   c                    s0   |  } |d  g fdd|dd  D  S )Nr   c                    s   g | ]
}d t   | qS r<   )rH   ).0linerJ   r   r   
<listcomp>   s    z"indented_lines.<locals>.<listcomp>r   )rF   )rJ   stringrK   r   rQ   r   indented_lines   s   
rT   c                 C   s\   t | |}|d d }|d |d  dv }|rtd|}t ||}|d d | }d|S )Nz: r   )z''z""r<   r;   )rT   rM   rI   )rJ   argr   	arg_linesvalue_prefixlooksLikeAStringvalue_linesrK   r   r   r   format_pair   s   



r[   c                    sr   dt tvrdd }| | _| _| S t| } tt| jjj| jj	}|d j
|d j
  fdd}|| _| S )Nsingledispatchc                  _   s   t dtj )Nz'functools.singledispatch is missing in )NotImplementedErrorr&   version)r(   kwargsr   r   r   unsupport_py2   s   z%singledispatch.<locals>.unsupport_py2registrydispatch_cachec                    s   | =     d S r   )clear)clsrb   ra   r   r   
unregister   s   z"singledispatch.<locals>.unregister)dir	functoolsregisterrf   r\   dictzip__code__co_freevars__closure__cell_contents)funcr`   closurerf   r   re   r   r\      s   


r\   c                 C   s   t | }|dd}|S )Nz\nr;   )DEFAULT_ARG_TO_STRING_FUNCTIONreplace)r8   r   r   r   r   argumentToString   s   rt   c                   @   s   e Zd ZdZeZeZee	e
ddf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eeeeefddZdS )IceCreamDebuggerz, Fc                 C   s(   d| _ || _|| _|| _|| _|| _d S NT)enabledrJ   includeContextoutputFunctionargToStringFunctioncontextAbsPath)r   rJ   ry   rz   rx   r{   r   r   r   __init__   s   
zIceCreamDebugger.__init__c              
   G   s   | j r7t j}z| j|g|R  }W n ty1 } zt| j}|d |j }W Y d }~nd }~ww | 	| |s=d }|S t
|dkrI|d }|S |}|S )NzError: r   r   )rw   inspectcurrentframef_back_formatr1   r9   rJ   r6   ry   rH   )r   r(   	callFrameouterrrJ   passthroughr   r   r   __call__   s$   


zIceCreamDebugger.__call__c                 G   s    t  j}| j|g|R  }|S r   )r}   r~   r   r   )r   r(   r   r   r   r   r   format   s   
zIceCreamDebugger.formatc                 G   sl   t | j}t|j}|d u rt | ||}|s&|  }|| | }|S | js+d}| 	|||||}|S )NrE   )
r9   rJ   r:   	executingrB   r1   _formatContext_formatTimerx   _formatArgs)r   r   r(   rJ   callNodecontexttimer   r   r   r   r      s   

zIceCreamDebugger._formatc           	         s>   t |  fdd|jD }tt||}| |||}|S )Nc                    s   g | ]}  |qS r   )rD   )rO   rV   sourcer   r   rR      s    z0IceCreamDebugger._formatArgs.<locals>.<listcomp>)r:   	for_framer(   listrk   _constructArgumentOutput)	r   r   r   rJ   r   r(   sanitizedArgStrspairsr   r   r   r   r      s   

zIceCreamDebugger._formatArgsc                    s   dd  fdd|D } fdd|D }j |}t| dk}|r)jnd}| | | }t| d jk}	|sB|	rc|rS| gfd	d|D  }
nd
d |D }td|}
n	| | | g}
d|
S )Nc                 S   s   d|  S )Nz%s: r   )rV   r   r   r   	argPrefix  s   z<IceCreamDebugger._constructArgumentOutput.<locals>.argPrefixc                    s   g | ]\}}|  |fqS r   )rz   rO   rV   valr   r   r   rR     s    z=IceCreamDebugger._constructArgumentOutput.<locals>.<listcomp>c                    s(   g | ]\}}t |r|n || qS r   )r-   r   )r   r   r   rR     s    r   rE   r   c                    s$   g | ]\}}t t d  ||qS rN   )r[   rH   rO   rV   r   rQ   r   r   rR   &  s    c                 S   s   g | ]
\}}t d ||qS )rE   )r[   r   r   r   r   rR   0  s    
r;   )_pairDelimiterrI   rH   rF   contextDelimiterlineWrapWidthrT   )r   rJ   r   r   pairStrsallArgsOnOneLinemultilineArgsr   allPairsfirstLineTooLongrK   rW   r   )r   rJ   r   r   r     s*   



z)IceCreamDebugger._constructArgumentOutputc                 C   s4   |  ||\}}}|dkrd| }d|||f }|S )Nz<module>z%s()z%s:%s in %s)_getContext)r   r   r   filename
lineNumberparentFunctionr   r   r   r   r   <  s   
zIceCreamDebugger._formatContextc                 C   s"   t  }|dd d }d| S )Nz%H:%M:%S.%fz at %s)r   nowstrftime)r   r   	formattedr   r   r   r   F  s   zIceCreamDebugger._formatTimec                 C   s4   |j }t|}|j}| jrtnt|j}|||fS r   )linenor}   getframeinfofunctionr{   r   r   r   )r   r   r   r   	frameInfor   filepathr   r   r   r   K  s
   

zIceCreamDebugger._getContextc                 C   
   d| _ d S rv   rw   r   r   r   r   enableS     
zIceCreamDebugger.enablec                 C   r   )NFr   r   r   r   r   disableV  r   zIceCreamDebugger.disablec                 C   sr   t dd t  D }|rtd|tur|| _|tur || _|tur'|| _|tur.|| _|tur7|| _	d S d S )Nc                 s   s$    | ]\}}|d kr|t u V  qdS )r   N)_absent)rO   kvr   r   r   	<genexpr>\  s    z3IceCreamDebugger.configureOutput.<locals>.<genexpr>z/configureOutput() missing at least one argument)
alllocalsitems	TypeErrorr   rJ   ry   rz   rx   r{   )r   rJ   ry   rz   rx   r{   noParameterProvidedr   r   r   configureOutputY  s    
z IceCreamDebugger.configureOutputN)r2   r3   r4   r   DEFAULT_LINE_WRAP_WIDTHr   DEFAULT_CONTEXT_DELIMITERr   DEFAULT_PREFIXDEFAULT_OUTPUT_FUNCTIONrt   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ru      s.    
:
ru   )7
__future__r   r*   r}   pprintr&   r   rh   
contextlibr   os.pathr   r   textwrapr   r    r   pygmentsr   pygments.formattersr	   pygments.lexersr
   PyLexerr   Py3Lexercoloringr   version_infoPYTHON2objectr   r   r   r#   r)   r-   r/   r   r   r   r   pformatrr   OSErrorr1   r9   r:   rM   rT   r[   r\   rt   ru   icr   r   r   r   <module>   s\   

	
 
6