
    f                     d    d 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
 e G d de             Zy)z=Implementation of magic functions for IPython's own logging.
    N)Magicsmagics_class
line_magic)warn)Boolc                       e Zd ZdZ edd      j                  d      Zedd       Zedd       Z	edd	       Z
edd
       Zedd       Zy)LoggingMagicsz(Magics related to all logging machinery.FzF
        Suppress output of log state when logging is enabled
        )helpT)configc                    | j                  |d      \  }}d|v }d|v }d|v }d|v }| j                  j                  }|r	 |j                         \  }	}
n|j                  }	|j
                  }
| j                  j                  }|	rt        j                  j                  |	      }	|	| j                  _        d}	 |j                  |	||
|||       |rd|_        |r!| j                  j                  j                  }n | j                  j                  j                  }|r|j                  }| j                  j                  j                   }t#        d	t%        |      d	z
        D ]8  } |||   j'                         d
z          ||v s$ |t)        ||         d       : n4|j                  d
j+                  |d	d              |j                  d
       |rd|_        | j,                  s|st/        d       |j1                          yyy#  |}	d}
Y xY w#  || j                  _        t3        dt5        j6                         d	   z         Y yxY w)a  Start logging anywhere in a session.

        %logstart [-o|-r|-t|-q] [log_name [log_mode]]

        If no name is given, it defaults to a file named 'ipython_log.py' in your
        current directory, in 'rotate' mode (see below).

        '%logstart name' saves to file 'name' in 'backup' mode.  It saves your
        history up to that point and then continues logging.

        %logstart takes a second optional parameter: logging mode. This can be one
        of (note that the modes are given unquoted):

        append
            Keep logging at the end of any existing file.

        backup
            Rename any existing file to name~ and start name.

        global
            Append to  a single logfile in your home directory.

        over
            Overwrite any existing log.

        rotate
            Create rotating logs: name.1~, name.2~, etc.

        Options:

          -o
            log also IPython's output. In this mode, all commands which
            generate an Out[NN] prompt are recorded to the logfile, right after
            their corresponding input line. The output lines are always
            prepended with a '#[Out]# ' marker, so that the log remains valid
            Python code.

          Since this marker is always the same, filtering only the output from
          a log is very easy, using for example a simple awk call::

            awk -F'#\[Out\]# ' '{if($2) {print $2}}' ipython_log.py

          -r
            log 'raw' input.  Normally, IPython's logs contain the processed
            input, so that user lines are logged in their final form, converted
            into valid Python.  For example, %Exit is logged as
            _ip.magic("Exit").  If the -r flag is given, all input is logged
            exactly as typed, with no transformations applied.

          -t
            put timestamps before each input line logged (these are put in
            comments).

          -q 
            suppress output of logstate message when logging is invoked
        ortqortqbackupz# IPython log file

F   
outputNTzGActivating auto-logging. Current session state plus future input saved.zCouldn't start log: %s)parse_optionsshellloggersplitlogfnamelogmodelogfileospath
expanduserlogstart	timestamphistory_managerinput_hist_rawinput_hist_parsed	log_writeoutput_histrangelenrstripreprjoinquietprintlogstater   sysexc_info)selfparameter_soptspar
log_outputlog_raw_inputr!   r,   r   r   r   old_logfileloghead
input_histr%   r&   ns                    V/var/www/cvtools/html/venv/lib/python3.12/site-packages/IPython/core/magics/logging.pyr    zLoggingMagics.logstart&   s&   v %%k&9SD[
t4K	t"" ##&99; 
 HnnG jj((ww))(3H%

+%	"OOHgw
I)+  $) !ZZ77FF
!ZZ77II
",,	"jj88DDqZ!23 AAjm224u<=K'!${1~"6x@A
   JqrN!;<  '#' JJ% H I! #(Jc#" 	?!,DJJ)CLLN1,==>s   H 6H H6Ic                 L    | j                   j                  j                          y)zFully stop logging and close log file.

        In order to start logging again, a new %logstart call needs to be made,
        possibly (though not necessarily) with a new filename, mode and other
        options.N)r   r   logstopr1   r2   s     r;   r=   zLoggingMagics.logstop   s     	

!!#    c                 N    | j                   j                  j                  d       y)zLTemporarily stop logging.

        You must have previously started logging.r   Nr   r   
switch_logr>   s     r;   logoffzLoggingMagics.logoff   s    
 	

$$Q'r?   c                 N    | j                   j                  j                  d       y)a  Restart logging.

        This function is for restarting logging which you've temporarily
        stopped with %logoff. For starting logging for the first time, you
        must use the %logstart function, which allows you to specify an
        optional log filename.r   NrA   r>   s     r;   logonzLoggingMagics.logon   s     	

$$Q'r?   c                 L    | j                   j                  j                          y)z'Print the status of the logging system.N)r   r   r.   r>   s     r;   r.   zLoggingMagics.logstate   s     	

""$r?   N) )__name__
__module____qualname____doc__r   tagr,   r   r    r=   rC   rE   r.    r?   r;   r	   r	      s    2	 
cc	 
 {" {"z $ $ ( ( ( ( % %r?   r	   )rK   r   r/   IPython.core.magicr   r   r   warningsr   	traitletsr   r	   rM   r?   r;   <module>rQ      s?    
 
 @ ?   f%F f% f%r?   