/
opt
/
imh-python
/
lib
/
python3.9
/
site-packages
/
IPython
/
core
/
/opt/imh-python/lib/python3.9/site-packages/IPython/core
mkdir
upload
Name
Size
Mode
Actions
magics/
-
0755
rm
profile/
-
0755
rm
tests/
-
0755
rm
__pycache__/
-
0755
rm
alias.py
10034
0644
edit
dl
rm
application.py
18937
0644
edit
dl
rm
async_helpers.py
4297
0644
edit
dl
rm
autocall.py
1991
0644
edit
dl
rm
builtin_trap.py
3009
0644
edit
dl
rm
compilerop.py
7730
0644
edit
dl
rm
completer.py
117850
0644
edit
dl
rm
completerlib.py
12365
0644
edit
dl
rm
crashhandler.py
8508
0644
edit
dl
rm
debugger.py
38872
0644
edit
dl
rm
display.py
42503
0644
edit
dl
rm
displayhook.py
12962
0644
edit
dl
rm
displaypub.py
4944
0644
edit
dl
rm
display_functions.py
12918
0644
edit
dl
rm
display_trap.py
2098
0644
edit
dl
rm
error.py
1734
0644
edit
dl
rm
events.py
5251
0644
edit
dl
rm
excolors.py
4928
0644
edit
dl
rm
extensions.py
5780
0644
edit
dl
rm
formatters.py
34981
0644
edit
dl
rm
getipython.py
912
0644
edit
dl
rm
guarded_eval.py
25037
0644
edit
dl
rm
history.py
34475
0644
edit
dl
rm
historyapp.py
5909
0644
edit
dl
rm
hooks.py
5663
0644
edit
dl
rm
inputsplitter.py
29041
0644
edit
dl
rm
inputtransformer.py
18184
0644
edit
dl
rm
inputtransformer2.py
29393
0644
edit
dl
rm
interactiveshell.py
153761
0644
edit
dl
rm
latex_symbols.py
31288
0644
edit
dl
rm
logger.py
8441
0644
edit
dl
rm
macro.py
1734
0644
edit
dl
rm
magic.py
28899
0644
edit
dl
rm
magic_arguments.py
9734
0644
edit
dl
rm
oinspect.py
39898
0644
edit
dl
rm
page.py
11753
0644
edit
dl
rm
payload.py
1758
0644
edit
dl
rm
payloadpage.py
1431
0644
edit
dl
rm
prefilter.py
25588
0644
edit
dl
rm
profileapp.py
10631
0644
edit
dl
rm
profiledir.py
8029
0644
edit
dl
rm
prompts.py
607
0644
edit
dl
rm
pylabtools.py
14018
0644
edit
dl
rm
release.py
2178
0644
edit
dl
rm
shellapp.py
17845
0644
edit
dl
rm
splitinput.py
4836
0644
edit
dl
rm
ultratb.py
55803
0644
edit
dl
rm
usage.py
13542
0644
edit
dl
rm
__init__.py
0
0644
edit
dl
rm
Edit:
/opt/imh-python/lib/python3.9/site-packages/IPython/core/logger.py
(8441B)
"""Logger class for IPython's logging facilities. """ #***************************************************************************** # Copyright (C) 2001 Janko Hauser <jhauser@zscout.de> and # Copyright (C) 2001-2006 Fernando Perez <fperez@colorado.edu> # # Distributed under the terms of the BSD License. The full license is in # the file COPYING, distributed as part of this software. #***************************************************************************** #**************************************************************************** # Modules and globals # Python standard modules import glob import io import logging import os import time # prevent jedi/parso's debug messages pipe into interactiveshell logging.getLogger("parso").setLevel(logging.WARNING) #**************************************************************************** # FIXME: This class isn't a mixin anymore, but it still needs attributes from # ipython and does input cache management. Finish cleanup later... class Logger(object): """A Logfile class with different policies for file creation""" def __init__(self, home_dir, logfname='Logger.log', loghead=u'', logmode='over'): # this is the full ipython instance, we need some attributes from it # which won't exist until later. What a mess, clean up later... self.home_dir = home_dir self.logfname = logfname self.loghead = loghead self.logmode = logmode self.logfile = None # Whether to log raw or processed input self.log_raw_input = False # whether to also log output self.log_output = False # whether to put timestamps before each log entry self.timestamp = False # activity control flags self.log_active = False # logmode is a validated property def _set_mode(self,mode): if mode not in ['append','backup','global','over','rotate']: raise ValueError('invalid log mode %s given' % mode) self._logmode = mode def _get_mode(self): return self._logmode logmode = property(_get_mode,_set_mode) def logstart(self, logfname=None, loghead=None, logmode=None, log_output=False, timestamp=False, log_raw_input=False): """Generate a new log-file with a default header. Raises RuntimeError if the log has already been started""" if self.logfile is not None: raise RuntimeError('Log file is already active: %s' % self.logfname) # The parameters can override constructor defaults if logfname is not None: self.logfname = logfname if loghead is not None: self.loghead = loghead if logmode is not None: self.logmode = logmode # Parameters not part of the constructor self.timestamp = timestamp self.log_output = log_output self.log_raw_input = log_raw_input # init depending on the log mode requested isfile = os.path.isfile logmode = self.logmode if logmode == 'append': self.logfile = io.open(self.logfname, 'a', encoding='utf-8') elif logmode == 'backup': if isfile(self.logfname): backup_logname = self.logfname+'~' # Manually remove any old backup, since os.rename may fail # under Windows. if isfile(backup_logname): os.remove(backup_logname) os.rename(self.logfname,backup_logname) self.logfile = io.open(self.logfname, 'w', encoding='utf-8') elif logmode == 'global': self.logfname = os.path.join(self.home_dir,self.logfname) self.logfile = io.open(self.logfname, 'a', encoding='utf-8') elif logmode == 'over': if isfile(self.logfname): os.remove(self.logfname) self.logfile = io.open(self.logfname,'w', encoding='utf-8') elif logmode == 'rotate': if isfile(self.logfname): if isfile(self.logfname+'.001~'): old = glob.glob(self.logfname+'.*~') old.sort() old.reverse() for f in old: root, ext = os.path.splitext(f) num = int(ext[1:-1])+1 os.rename(f, root+'.'+repr(num).zfill(3)+'~') os.rename(self.logfname, self.logfname+'.001~') self.logfile = io.open(self.logfname, 'w', encoding='utf-8') if logmode != 'append': self.logfile.write(self.loghead) self.logfile.flush() self.log_active = True def switch_log(self,val): """Switch logging on/off. val should be ONLY a boolean.""" if val not in [False,True,0,1]: raise ValueError('Call switch_log ONLY with a boolean argument, ' 'not with: %s' % val) label = {0:'OFF',1:'ON',False:'OFF',True:'ON'} if self.logfile is None: print(""" Logging hasn't been started yet (use logstart for that). %logon/%logoff are for temporarily starting and stopping logging for a logfile which already exists. But you must first start the logging process with %logstart (optionally giving a logfile name).""") else: if self.log_active == val: print('Logging is already',label[val]) else: print('Switching logging',label[val]) self.log_active = not self.log_active self.log_active_out = self.log_active def logstate(self): """Print a status message about the logger.""" if self.logfile is None: print('Logging has not been activated.') else: state = self.log_active and 'active' or 'temporarily suspended' print('Filename :', self.logfname) print('Mode :', self.logmode) print('Output logging :', self.log_output) print('Raw input log :', self.log_raw_input) print('Timestamping :', self.timestamp) print('State :', state) def log(self, line_mod, line_ori): """Write the sources to a log. Inputs: - line_mod: possibly modified input, such as the transformations made by input prefilters or input handlers of various kinds. This should always be valid Python. - line_ori: unmodified input line from the user. This is not necessarily valid Python. """ # Write the log line, but decide which one according to the # log_raw_input flag, set when the log is started. if self.log_raw_input: self.log_write(line_ori) else: self.log_write(line_mod) def log_write(self, data, kind='input'): """Write data to the log file, if active""" #print 'data: %r' % data # dbg if self.log_active and data: write = self.logfile.write if kind=='input': if self.timestamp: write(time.strftime('# %a, %d %b %Y %H:%M:%S\n', time.localtime())) write(data) elif kind=='output' and self.log_output: odata = u'\n'.join([u'#[Out]# %s' % s for s in data.splitlines()]) write(u'%s\n' % odata) try: self.logfile.flush() except OSError: print("Failed to flush the log file.") print( f"Please check that {self.logfname} exists and have the right permissions." ) print( "Also consider turning off the log with `%logstop` to avoid this warning." ) def logstop(self): """Fully 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.""" if self.logfile is not None: self.logfile.close() self.logfile = None else: print("Logging hadn't been started.") self.log_active = False # For backwards compatibility, in case anyone was using this. close_log = logstop
Save
cmd:
run