/usr/lib64/python3.9
NameSizeModeActions
asyncio/-0755rm
collections/-0755rm
concurrent/-0755rm
config-3.9-x86_64-linux-gnu/-0755rm
ctypes/-0755rm
curses/-0755rm
dbm/-0755rm
distutils/-0755rm
email/-0755rm
encodings/-0755rm
ensurepip/-0755rm
html/-0755rm
http/-0755rm
importlib/-0755rm
json/-0755rm
lib-dynload/-0755rm
lib2to3/-0755rm
logging/-0755rm
multiprocessing/-0755rm
pydoc_data/-0755rm
site-packages/-0755rm
sqlite3/-0755rm
unittest/-0755rm
urllib/-0755rm
venv/-0755rm
wsgiref/-0755rm
xml/-0755rm
xmlrpc/-0755rm
zoneinfo/-0755rm
__pycache__/-0755rm
abc.py49200644editdlrm
aifc.py326050644editdlrm
antigravity.py5000644editdlrm
argparse.py981190644editdlrm
ast.py562560644editdlrm
asynchat.py113210644editdlrm
asyncore.py201020644editdlrm
base64.py198590755editdlrm
bdb.py313890644editdlrm
binhex.py147840644editdlrm
bisect.py23500644editdlrm
bz2.py124470644editdlrm
calendar.py248320644editdlrm
cgi.py339320755editdlrm
cgitb.py120960644editdlrm
chunk.py54350644editdlrm
cmd.py148600644editdlrm
code.py106220644editdlrm
codecs.py366730644editdlrm
codeop.py63260644editdlrm
colorsys.py40640644editdlrm
compileall.py201050644editdlrm
configparser.py545840644editdlrm
contextlib.py246240644editdlrm
contextvars.py1290644editdlrm
copy.py86500644editdlrm
copyreg.py72740644editdlrm
cProfile.py63450755editdlrm
crypt.py38190644editdlrm
csv.py161440644editdlrm
dataclasses.py495860644editdlrm
datetime.py891770644editdlrm
decimal.py3200644editdlrm
difflib.py833070644editdlrm
dis.py205700644editdlrm
doctest.py1045680644editdlrm
enum.py394400644editdlrm
filecmp.py100240644editdlrm
fileinput.py147910644editdlrm
fnmatch.py60040644editdlrm
formatter.py151430644editdlrm
fractions.py243230644editdlrm
ftplib.py354960644editdlrm
functools.py388810644editdlrm
genericpath.py52460644editdlrm
getopt.py74890644editdlrm
getpass.py59900644editdlrm
gettext.py272660644editdlrm
glob.py58230644editdlrm
graphlib.py95730644editdlrm
gzip.py217720644editdlrm
hashlib.py80690644editdlrm
heapq.py228770644editdlrm
hmac.py80430644editdlrm
imaplib.py552560644editdlrm
imghdr.py38080644editdlrm
imp.py105360644editdlrm
inspect.py1182350644editdlrm
io.py35410644editdlrm
ipaddress.py809240644editdlrm
keyword.py10470644editdlrm
LICENSE.txt139370644editdlrm
linecache.py54610644editdlrm
locale.py782710644editdlrm
lzma.py132310644editdlrm
mailbox.py787940644editdlrm
mailcap.py91160644editdlrm
mimetypes.py215640644editdlrm
modulefinder.py244010644editdlrm
netrc.py55660644editdlrm
nntplib.py410230644editdlrm
ntpath.py264600644editdlrm
nturl2path.py28870644editdlrm
numbers.py103380644editdlrm
opcode.py56600644editdlrm
operator.py107510644editdlrm
optparse.py603690644editdlrm
os.py390650644editdlrm
pathlib.py511340644editdlrm
pdb.py632370755editdlrm
pickle.py649200644editdlrm
pickletools.py934860644editdlrm
pipes.py89160644editdlrm
pkgutil.py242760644editdlrm
platform.py406010755editdlrm
plistlib.py282480644editdlrm
poplib.py151980644editdlrm
posixpath.py161460644editdlrm
pprint.py225270644editdlrm
profile.py228810755editdlrm
pstats.py293260644editdlrm
pty.py48070644editdlrm
pyclbr.py152550644editdlrm
pydoc.py1095990755editdlrm
py_compile.py82030644editdlrm
queue.py114960644editdlrm
quopri.py72660755editdlrm
random.py314840644editdlrm
re.py158610644editdlrm
reprlib.py52670644editdlrm
rlcompleter.py76480644editdlrm
runpy.py130840644editdlrm
sched.py64420644editdlrm
secrets.py20360644editdlrm
selectors.py195360644editdlrm
shelve.py85270644editdlrm
shlex.py135010644editdlrm
shutil.py530300644editdlrm
signal.py24380644editdlrm
site.py220850644editdlrm
smtpd.py348210755editdlrm
smtplib.py454050755editdlrm
sndhdr.py70990644editdlrm
socket.py369150644editdlrm
socketserver.py272960644editdlrm
sre_compile.py279730644editdlrm
sre_constants.py71770644editdlrm
sre_parse.py407790644editdlrm
ssl.py526220644editdlrm
stat.py54850644editdlrm
statistics.py380670644editdlrm
string.py105660644editdlrm
stringprep.py129170644editdlrm
struct.py2570644editdlrm
subprocess.py835640644editdlrm
sunau.py181580644editdlrm
symbol.py22810644editdlrm
symtable.py79050644editdlrm
sysconfig.py255570644editdlrm
tabnanny.py114060755editdlrm
tarfile.py1129390755editdlrm
telnetlib.py232540644editdlrm
tempfile.py279630644editdlrm
textwrap.py194070644editdlrm
this.py10030644editdlrm
threading.py541760644editdlrm
timeit.py134800755editdlrm
token.py23680644editdlrm
tokenize.py258830644editdlrm
trace.py292070755editdlrm
traceback.py246600644editdlrm
tracemalloc.py180470644editdlrm
tty.py8790644editdlrm
types.py97850644editdlrm
typing.py770440644editdlrm
uu.py72770644editdlrm
uuid.py273240644editdlrm
warnings.py196880644editdlrm
wave.py180040644editdlrm
weakref.py215600644editdlrm
webbrowser.py240830755editdlrm
xdrlib.py59130644editdlrm
zipapp.py75350644editdlrm
zipfile.py888990644editdlrm
zipimport.py307650644editdlrm
_aix_support.py33890644editdlrm
_bootlocale.py18010644editdlrm
_bootsubprocess.py26750644editdlrm
_collections_abc.py293740644editdlrm
_compat_pickle.py87490644editdlrm
_compression.py53400644editdlrm
_markupbase.py146230644editdlrm
_osx_support.py217730644editdlrm
_pydecimal.py2286660644editdlrm
_pyio.py933160644editdlrm
_py_abc.py61890644editdlrm
_sitebuiltins.py31150644editdlrm
_strptime.py252770644editdlrm
_sysconfigdata__linux_x86_64-linux-gnu.py412360644editdlrm
_threading_local.py72200644editdlrm
_weakrefset.py59230644editdlrm
__future__.py51470644editdlrm
__phello__.foo.py640644editdlrm
Edit: /usr/lib64/python3.9/py_compile.py (8203B)
"""Routine to "compile" a .py file to a .pyc file. This module has intimate knowledge of the format of .pyc files. """ import enum import importlib._bootstrap_external import importlib.machinery import importlib.util import os import os.path import sys import traceback __all__ = ["compile", "main", "PyCompileError", "PycInvalidationMode"] class PyCompileError(Exception): """Exception raised when an error occurs while attempting to compile the file. To raise this exception, use raise PyCompileError(exc_type,exc_value,file[,msg]) where exc_type: exception type to be used in error message type name can be accesses as class variable 'exc_type_name' exc_value: exception value to be used in error message can be accesses as class variable 'exc_value' file: name of file being compiled to be used in error message can be accesses as class variable 'file' msg: string message to be written as error message If no value is given, a default exception message will be given, consistent with 'standard' py_compile output. message (or default) can be accesses as class variable 'msg' """ def __init__(self, exc_type, exc_value, file, msg=''): exc_type_name = exc_type.__name__ if exc_type is SyntaxError: tbtext = ''.join(traceback.format_exception_only( exc_type, exc_value)) errmsg = tbtext.replace('File ""', 'File "%s"' % file) else: errmsg = "Sorry: %s: %s" % (exc_type_name,exc_value) Exception.__init__(self,msg or errmsg,exc_type_name,exc_value,file) self.exc_type_name = exc_type_name self.exc_value = exc_value self.file = file self.msg = msg or errmsg def __str__(self): return self.msg class PycInvalidationMode(enum.Enum): TIMESTAMP = 1 CHECKED_HASH = 2 UNCHECKED_HASH = 3 def _get_default_invalidation_mode(): if (os.environ.get('SOURCE_DATE_EPOCH') and not os.environ.get('RPM_BUILD_ROOT')): return PycInvalidationMode.CHECKED_HASH else: return PycInvalidationMode.TIMESTAMP def compile(file, cfile=None, dfile=None, doraise=False, optimize=-1, invalidation_mode=None, quiet=0): """Byte-compile one Python source file to Python bytecode. :param file: The source file name. :param cfile: The target byte compiled file name. When not given, this defaults to the PEP 3147/PEP 488 location. :param dfile: Purported file name, i.e. the file name that shows up in error messages. Defaults to the source file name. :param doraise: Flag indicating whether or not an exception should be raised when a compile error is found. If an exception occurs and this flag is set to False, a string indicating the nature of the exception will be printed, and the function will return to the caller. If an exception occurs and this flag is set to True, a PyCompileError exception will be raised. :param optimize: The optimization level for the compiler. Valid values are -1, 0, 1 and 2. A value of -1 means to use the optimization level of the current interpreter, as given by -O command line options. :param invalidation_mode: :param quiet: Return full output with False or 0, errors only with 1, and no output with 2. :return: Path to the resulting byte compiled file. Note that it isn't necessary to byte-compile Python modules for execution efficiency -- Python itself byte-compiles a module when it is loaded, and if it can, writes out the bytecode to the corresponding .pyc file. However, if a Python installation is shared between users, it is a good idea to byte-compile all modules upon installation, since other users may not be able to write in the source directories, and thus they won't be able to write the .pyc file, and then they would be byte-compiling every module each time it is loaded. This can slow down program start-up considerably. See compileall.py for a script/module that uses this module to byte-compile all installed files (or all files in selected directories). Do note that FileExistsError is raised if cfile ends up pointing at a non-regular file or symlink. Because the compilation uses a file renaming, the resulting file would be regular and thus not the same type of file as it was previously. """ if invalidation_mode is None: invalidation_mode = _get_default_invalidation_mode() if cfile is None: if optimize >= 0: optimization = optimize if optimize >= 1 else '' cfile = importlib.util.cache_from_source(file, optimization=optimization) else: cfile = importlib.util.cache_from_source(file) if os.path.islink(cfile): msg = ('{} is a symlink and will be changed into a regular file if ' 'import writes a byte-compiled file to it') raise FileExistsError(msg.format(cfile)) elif os.path.exists(cfile) and not os.path.isfile(cfile): msg = ('{} is a non-regular file and will be changed into a regular ' 'one if import writes a byte-compiled file to it') raise FileExistsError(msg.format(cfile)) loader = importlib.machinery.SourceFileLoader('', file) source_bytes = loader.get_data(file) try: code = loader.source_to_code(source_bytes, dfile or file, _optimize=optimize) except Exception as err: py_exc = PyCompileError(err.__class__, err, dfile or file) if quiet < 2: if doraise: raise py_exc else: sys.stderr.write(py_exc.msg + '\n') return try: dirname = os.path.dirname(cfile) if dirname: os.makedirs(dirname) except FileExistsError: pass if invalidation_mode == PycInvalidationMode.TIMESTAMP: source_stats = loader.path_stats(file) bytecode = importlib._bootstrap_external._code_to_timestamp_pyc( code, source_stats['mtime'], source_stats['size']) else: source_hash = importlib.util.source_hash(source_bytes) bytecode = importlib._bootstrap_external._code_to_hash_pyc( code, source_hash, (invalidation_mode == PycInvalidationMode.CHECKED_HASH), ) mode = importlib._bootstrap_external._calc_mode(file) importlib._bootstrap_external._write_atomic(cfile, bytecode, mode) return cfile def main(args=None): """Compile several source files. The files named in 'args' (or on the command line, if 'args' is not specified) are compiled and the resulting bytecode is cached in the normal manner. This function does not search a directory structure to locate source files; it only compiles files named explicitly. If '-' is the only parameter in args, the list of files is taken from standard input. """ if args is None: args = sys.argv[1:] rv = 0 if args == ['-']: while True: filename = sys.stdin.readline() if not filename: break filename = filename.rstrip('\n') try: compile(filename, doraise=True) except PyCompileError as error: rv = 1 sys.stderr.write("%s\n" % error.msg) except OSError as error: rv = 1 sys.stderr.write("%s\n" % error) else: for filename in args: try: compile(filename, doraise=True) except PyCompileError as error: # return value to indicate at least one failure rv = 1 sys.stderr.write("%s\n" % error.msg) return rv if __name__ == "__main__": sys.exit(main())