opt
/
alt
/
python310
/
lib64
/
python3.10
/
Go to Home Directory
+
Upload
Create File
root@0UT1S:~$
Execute
By Order of Mr.0UT1S
[DIR] ..
N/A
[DIR] __pycache__
N/A
[DIR] asyncio
N/A
[DIR] collections
N/A
[DIR] concurrent
N/A
[DIR] config-3.10-x86_64-linux-gnu
N/A
[DIR] ctypes
N/A
[DIR] curses
N/A
[DIR] dbm
N/A
[DIR] distutils
N/A
[DIR] email
N/A
[DIR] encodings
N/A
[DIR] ensurepip
N/A
[DIR] html
N/A
[DIR] http
N/A
[DIR] importlib
N/A
[DIR] json
N/A
[DIR] lib-dynload
N/A
[DIR] lib2to3
N/A
[DIR] logging
N/A
[DIR] multiprocessing
N/A
[DIR] pydoc_data
N/A
[DIR] site-packages
N/A
[DIR] sqlite3
N/A
[DIR] unittest
N/A
[DIR] urllib
N/A
[DIR] venv
N/A
[DIR] wsgiref
N/A
[DIR] xml
N/A
[DIR] xmlrpc
N/A
[DIR] zoneinfo
N/A
LICENSE.txt
13.61 KB
Rename
Delete
__future__.py
5.03 KB
Rename
Delete
__phello__.foo.py
64 bytes
Rename
Delete
_aix_support.py
3.19 KB
Rename
Delete
_bootsubprocess.py
2.61 KB
Rename
Delete
_collections_abc.py
31.53 KB
Rename
Delete
_compat_pickle.py
8.54 KB
Rename
Delete
_compression.py
5.55 KB
Rename
Delete
_markupbase.py
14.31 KB
Rename
Delete
_osx_support.py
21.28 KB
Rename
Delete
_py_abc.py
6.04 KB
Rename
Delete
_pydecimal.py
223.32 KB
Rename
Delete
_pyio.py
92.25 KB
Rename
Delete
_sitebuiltins.py
3.05 KB
Rename
Delete
_strptime.py
24.68 KB
Rename
Delete
_sysconfigdata__linux_x86_64-linux-gnu.py
40.38 KB
Rename
Delete
_sysconfigdata_d_linux_x86_64-linux-gnu.py
39.81 KB
Rename
Delete
_threading_local.py
7.05 KB
Rename
Delete
_weakrefset.py
5.78 KB
Rename
Delete
abc.py
6.37 KB
Rename
Delete
aifc.py
31.84 KB
Rename
Delete
antigravity.py
500 bytes
Rename
Delete
argparse.py
96.23 KB
Rename
Delete
ast.py
58.50 KB
Rename
Delete
asynchat.py
11.25 KB
Rename
Delete
asyncore.py
19.79 KB
Rename
Delete
base64.py
20.37 KB
Rename
Delete
bdb.py
31.64 KB
Rename
Delete
binhex.py
14.44 KB
Rename
Delete
bisect.py
3.06 KB
Rename
Delete
bz2.py
11.57 KB
Rename
Delete
cProfile.py
6.21 KB
Rename
Delete
calendar.py
24.00 KB
Rename
Delete
cgi.py
33.31 KB
Rename
Delete
cgitb.py
11.81 KB
Rename
Delete
chunk.py
5.31 KB
Rename
Delete
cmd.py
14.51 KB
Rename
Delete
code.py
10.37 KB
Rename
Delete
codecs.py
35.85 KB
Rename
Delete
codeop.py
5.48 KB
Rename
Delete
colorsys.py
3.92 KB
Rename
Delete
compileall.py
19.78 KB
Rename
Delete
configparser.py
53.33 KB
Rename
Delete
contextlib.py
25.28 KB
Rename
Delete
contextvars.py
129 bytes
Rename
Delete
copy.py
8.48 KB
Rename
Delete
copyreg.py
7.25 KB
Rename
Delete
crypt.py
3.76 KB
Rename
Delete
csv.py
15.65 KB
Rename
Delete
dataclasses.py
55.07 KB
Rename
Delete
datetime.py
86.02 KB
Rename
Delete
decimal.py
320 bytes
Rename
Delete
difflib.py
81.36 KB
Rename
Delete
dis.py
19.55 KB
Rename
Delete
doctest.py
102.68 KB
Rename
Delete
enum.py
38.90 KB
Rename
Delete
filecmp.py
9.94 KB
Rename
Delete
fileinput.py
16.06 KB
Rename
Delete
fnmatch.py
6.56 KB
Rename
Delete
fractions.py
27.58 KB
Rename
Delete
ftplib.py
34.66 KB
Rename
Delete
functools.py
37.18 KB
Rename
Delete
genericpath.py
4.86 KB
Rename
Delete
getopt.py
7.31 KB
Rename
Delete
getpass.py
5.85 KB
Rename
Delete
gettext.py
26.63 KB
Rename
Delete
glob.py
7.70 KB
Rename
Delete
graphlib.py
9.35 KB
Rename
Delete
gzip.py
21.34 KB
Rename
Delete
hashlib.py
9.99 KB
Rename
Delete
heapq.py
22.34 KB
Rename
Delete
hmac.py
7.54 KB
Rename
Delete
imaplib.py
53.58 KB
Rename
Delete
imghdr.py
3.72 KB
Rename
Delete
imp.py
10.34 KB
Rename
Delete
inspect.py
121.46 KB
Rename
Delete
io.py
4.10 KB
Rename
Delete
ipaddress.py
76.71 KB
Rename
Delete
keyword.py
1.04 KB
Rename
Delete
linecache.py
5.56 KB
Rename
Delete
locale.py
76.29 KB
Rename
Delete
lzma.py
12.97 KB
Rename
Delete
mailbox.py
76.95 KB
Rename
Delete
mailcap.py
8.90 KB
Rename
Delete
mimetypes.py
22.01 KB
Rename
Delete
modulefinder.py
23.83 KB
Rename
Delete
netrc.py
5.61 KB
Rename
Delete
nntplib.py
40.06 KB
Rename
Delete
ntpath.py
28.79 KB
Rename
Delete
nturl2path.py
2.82 KB
Rename
Delete
numbers.py
10.11 KB
Rename
Delete
opcode.py
5.76 KB
Rename
Delete
operator.py
10.50 KB
Rename
Delete
optparse.py
58.95 KB
Rename
Delete
os.py
38.63 KB
Rename
Delete
pathlib.py
48.41 KB
Rename
Delete
pdb.py
61.76 KB
Rename
Delete
pickle.py
63.43 KB
Rename
Delete
pickletools.py
91.29 KB
Rename
Delete
pipes.py
8.71 KB
Rename
Delete
pkgutil.py
24.00 KB
Rename
Delete
platform.py
41.05 KB
Rename
Delete
plistlib.py
27.69 KB
Rename
Delete
poplib.py
14.84 KB
Rename
Delete
posixpath.py
15.87 KB
Rename
Delete
pprint.py
23.87 KB
Rename
Delete
profile.py
22.36 KB
Rename
Delete
pstats.py
28.64 KB
Rename
Delete
pty.py
5.09 KB
Rename
Delete
py_compile.py
7.71 KB
Rename
Delete
pyclbr.py
11.13 KB
Rename
Delete
pydoc.py
107.03 KB
Rename
Delete
queue.py
11.23 KB
Rename
Delete
quopri.py
7.11 KB
Rename
Delete
random.py
32.44 KB
Rename
Delete
re.py
15.49 KB
Rename
Delete
reprlib.py
5.14 KB
Rename
Delete
rlcompleter.py
7.63 KB
Rename
Delete
runpy.py
12.80 KB
Rename
Delete
sched.py
6.20 KB
Rename
Delete
secrets.py
1.99 KB
Rename
Delete
selectors.py
19.08 KB
Rename
Delete
shelve.py
8.36 KB
Rename
Delete
shlex.py
13.18 KB
Rename
Delete
shutil.py
53.29 KB
Rename
Delete
signal.py
2.38 KB
Rename
Delete
site.py
22.39 KB
Rename
Delete
smtpd.py
34.35 KB
Rename
Delete
smtplib.py
44.37 KB
Rename
Delete
sndhdr.py
6.93 KB
Rename
Delete
socket.py
36.14 KB
Rename
Delete
socketserver.py
26.66 KB
Rename
Delete
sre_compile.py
27.32 KB
Rename
Delete
sre_constants.py
7.01 KB
Rename
Delete
sre_parse.py
39.82 KB
Rename
Delete
ssl.py
52.63 KB
Rename
Delete
stat.py
5.36 KB
Rename
Delete
statistics.py
42.19 KB
Rename
Delete
string.py
10.32 KB
Rename
Delete
stringprep.py
12.61 KB
Rename
Delete
struct.py
257 bytes
Rename
Delete
subprocess.py
82.93 KB
Rename
Delete
sunau.py
17.73 KB
Rename
Delete
symtable.py
9.98 KB
Rename
Delete
sysconfig.py
26.96 KB
Rename
Delete
tabnanny.py
11.05 KB
Rename
Delete
tarfile.py
105.13 KB
Rename
Delete
telnetlib.py
22.71 KB
Rename
Delete
tempfile.py
28.78 KB
Rename
Delete
textwrap.py
19.31 KB
Rename
Delete
this.py
1003 bytes
Rename
Delete
threading.py
55.41 KB
Rename
Delete
timeit.py
13.19 KB
Rename
Delete
token.py
2.33 KB
Rename
Delete
tokenize.py
25.31 KB
Rename
Delete
trace.py
28.54 KB
Rename
Delete
traceback.py
25.61 KB
Rename
Delete
tracemalloc.py
17.62 KB
Rename
Delete
tty.py
879 bytes
Rename
Delete
types.py
9.88 KB
Rename
Delete
typing.py
90.39 KB
Rename
Delete
uu.py
7.11 KB
Rename
Delete
uuid.py
26.86 KB
Rename
Delete
warnings.py
19.23 KB
Rename
Delete
wave.py
17.58 KB
Rename
Delete
weakref.py
21.05 KB
Rename
Delete
webbrowser.py
23.69 KB
Rename
Delete
xdrlib.py
5.77 KB
Rename
Delete
zipapp.py
7.36 KB
Rename
Delete
zipfile.py
88.09 KB
Rename
Delete
zipimport.py
30.17 KB
Rename
Delete
"""Module/script to byte-compile all .py files to .pyc files. When called as a script with arguments, this compiles the directories given as arguments recursively; the -l option prevents it from recursing into directories. Without arguments, if compiles all modules on sys.path, without recursing into subdirectories. (Even though it should do so for packages -- for now, you'll have to deal with packages separately.) See module py_compile for details of the actual byte-compilation. """ import os import sys import importlib.util import py_compile import struct import filecmp from functools import partial from pathlib import Path __all__ = ["compile_dir","compile_file","compile_path"] def _walk_dir(dir, maxlevels, quiet=0): if quiet < 2 and isinstance(dir, os.PathLike): dir = os.fspath(dir) if not quiet: print('Listing {!r}...'.format(dir)) try: names = os.listdir(dir) except OSError: if quiet < 2: print("Can't list {!r}".format(dir)) names = [] names.sort() for name in names: if name == '__pycache__': continue fullname = os.path.join(dir, name) if not os.path.isdir(fullname): yield fullname elif (maxlevels > 0 and name != os.curdir and name != os.pardir and os.path.isdir(fullname) and not os.path.islink(fullname)): yield from _walk_dir(fullname, maxlevels=maxlevels - 1, quiet=quiet) def compile_dir(dir, maxlevels=None, ddir=None, force=False, rx=None, quiet=0, legacy=False, optimize=-1, workers=1, invalidation_mode=None, *, stripdir=None, prependdir=None, limit_sl_dest=None, hardlink_dupes=False): """Byte-compile all modules in the given directory tree. Arguments (only dir is required): dir: the directory to byte-compile maxlevels: maximum recursion level (default `sys.getrecursionlimit()`) ddir: the directory that will be prepended to the path to the file as it is compiled into each byte-code file. force: if True, force compilation, even if timestamps are up-to-date quiet: full output with False or 0, errors only with 1, no output with 2 legacy: if True, produce legacy pyc paths instead of PEP 3147 paths optimize: int or list of optimization levels or -1 for level of the interpreter. Multiple levels leads to multiple compiled files each with one optimization level. workers: maximum number of parallel workers invalidation_mode: how the up-to-dateness of the pyc will be checked stripdir: part of path to left-strip from source file path prependdir: path to prepend to beginning of original file path, applied after stripdir limit_sl_dest: ignore symlinks if they are pointing outside of the defined path hardlink_dupes: hardlink duplicated pyc files """ ProcessPoolExecutor = None if ddir is not None and (stripdir is not None or prependdir is not None): raise ValueError(("Destination dir (ddir) cannot be used " "in combination with stripdir or prependdir")) if ddir is not None: stripdir = dir prependdir = ddir ddir = None if workers < 0: raise ValueError('workers must be greater or equal to 0') if workers != 1: # Check if this is a system where ProcessPoolExecutor can function. from concurrent.futures.process import _check_system_limits try: _check_system_limits() except NotImplementedError: workers = 1 else: from concurrent.futures import ProcessPoolExecutor if maxlevels is None: maxlevels = sys.getrecursionlimit() files = _walk_dir(dir, quiet=quiet, maxlevels=maxlevels) success = True if workers != 1 and ProcessPoolExecutor is not None: # If workers == 0, let ProcessPoolExecutor choose workers = workers or None with ProcessPoolExecutor(max_workers=workers) as executor: results = executor.map(partial(compile_file, ddir=ddir, force=force, rx=rx, quiet=quiet, legacy=legacy, optimize=optimize, invalidation_mode=invalidation_mode, stripdir=stripdir, prependdir=prependdir, limit_sl_dest=limit_sl_dest, hardlink_dupes=hardlink_dupes), files) success = min(results, default=True) else: for file in files: if not compile_file(file, ddir, force, rx, quiet, legacy, optimize, invalidation_mode, stripdir=stripdir, prependdir=prependdir, limit_sl_dest=limit_sl_dest, hardlink_dupes=hardlink_dupes): success = False return success def compile_file(fullname, ddir=None, force=False, rx=None, quiet=0, legacy=False, optimize=-1, invalidation_mode=None, *, stripdir=None, prependdir=None, limit_sl_dest=None, hardlink_dupes=False): """Byte-compile one file. Arguments (only fullname is required): fullname: the file to byte-compile ddir: if given, the directory name compiled in to the byte-code file. force: if True, force compilation, even if timestamps are up-to-date quiet: full output with False or 0, errors only with 1, no output with 2 legacy: if True, produce legacy pyc paths instead of PEP 3147 paths optimize: int or list of optimization levels or -1 for level of the interpreter. Multiple levels leads to multiple compiled files each with one optimization level. invalidation_mode: how the up-to-dateness of the pyc will be checked stripdir: part of path to left-strip from source file path prependdir: path to prepend to beginning of original file path, applied after stripdir limit_sl_dest: ignore symlinks if they are pointing outside of the defined path. hardlink_dupes: hardlink duplicated pyc files """ if ddir is not None and (stripdir is not None or prependdir is not None): raise ValueError(("Destination dir (ddir) cannot be used " "in combination with stripdir or prependdir")) success = True fullname = os.fspath(fullname) stripdir = os.fspath(stripdir) if stripdir is not None else None name = os.path.basename(fullname) dfile = None if ddir is not None: dfile = os.path.join(ddir, name) if stripdir is not None: fullname_parts = fullname.split(os.path.sep) stripdir_parts = stripdir.split(os.path.sep) ddir_parts = list(fullname_parts) for spart, opart in zip(stripdir_parts, fullname_parts): if spart == opart: ddir_parts.remove(spart) dfile = os.path.join(*ddir_parts) if prependdir is not None: if dfile is None: dfile = os.path.join(prependdir, fullname) else: dfile = os.path.join(prependdir, dfile) if isinstance(optimize, int): optimize = [optimize] # Use set() to remove duplicates. # Use sorted() to create pyc files in a deterministic order. optimize = sorted(set(optimize)) if hardlink_dupes and len(optimize) < 2: raise ValueError("Hardlinking of duplicated bytecode makes sense " "only for more than one optimization level") if rx is not None: mo = rx.search(fullname) if mo: return success if limit_sl_dest is not None and os.path.islink(fullname): if Path(limit_sl_dest).resolve() not in Path(fullname).resolve().parents: return success opt_cfiles = {} if os.path.isfile(fullname): for opt_level in optimize: if legacy: opt_cfiles[opt_level] = fullname + 'c' else: if opt_level >= 0: opt = opt_level if opt_level >= 1 else '' cfile = (importlib.util.cache_from_source( fullname, optimization=opt)) opt_cfiles[opt_level] = cfile else: cfile = importlib.util.cache_from_source(fullname) opt_cfiles[opt_level] = cfile head, tail = name[:-3], name[-3:] if tail == '.py': if not force: try: mtime = int(os.stat(fullname).st_mtime) expect = struct.pack('<4sLL', importlib.util.MAGIC_NUMBER, 0, mtime & 0xFFFF_FFFF) for cfile in opt_cfiles.values(): with open(cfile, 'rb') as chandle: actual = chandle.read(12) if expect != actual: break else: return success except OSError: pass if not quiet: print('Compiling {!r}...'.format(fullname)) try: for index, opt_level in enumerate(optimize): cfile = opt_cfiles[opt_level] ok = py_compile.compile(fullname, cfile, dfile, True, optimize=opt_level, invalidation_mode=invalidation_mode) if index > 0 and hardlink_dupes: previous_cfile = opt_cfiles[optimize[index - 1]] if filecmp.cmp(cfile, previous_cfile, shallow=False): os.unlink(cfile) os.link(previous_cfile, cfile) except py_compile.PyCompileError as err: success = False if quiet >= 2: return success elif quiet: print('*** Error compiling {!r}...'.format(fullname)) else: print('*** ', end='') # escape non-printable characters in msg encoding = sys.stdout.encoding or sys.getdefaultencoding() msg = err.msg.encode(encoding, errors='backslashreplace').decode(encoding) print(msg) except (SyntaxError, UnicodeError, OSError) as e: success = False if quiet >= 2: return success elif quiet: print('*** Error compiling {!r}...'.format(fullname)) else: print('*** ', end='') print(e.__class__.__name__ + ':', e) else: if ok == 0: success = False return success def compile_path(skip_curdir=1, maxlevels=0, force=False, quiet=0, legacy=False, optimize=-1, invalidation_mode=None): """Byte-compile all module on sys.path. Arguments (all optional): skip_curdir: if true, skip current directory (default True) maxlevels: max recursion level (default 0) force: as for compile_dir() (default False) quiet: as for compile_dir() (default 0) legacy: as for compile_dir() (default False) optimize: as for compile_dir() (default -1) invalidation_mode: as for compiler_dir() """ success = True for dir in sys.path: if (not dir or dir == os.curdir) and skip_curdir: if quiet < 2: print('Skipping current directory') else: success = success and compile_dir( dir, maxlevels, None, force, quiet=quiet, legacy=legacy, optimize=optimize, invalidation_mode=invalidation_mode, ) return success def main(): """Script main program.""" import argparse parser = argparse.ArgumentParser( description='Utilities to support installing Python libraries.') parser.add_argument('-l', action='store_const', const=0, default=None, dest='maxlevels', help="don't recurse into subdirectories") parser.add_argument('-r', type=int, dest='recursion', help=('control the maximum recursion level. ' 'if `-l` and `-r` options are specified, ' 'then `-r` takes precedence.')) parser.add_argument('-f', action='store_true', dest='force', help='force rebuild even if timestamps are up to date') parser.add_argument('-q', action='count', dest='quiet', default=0, help='output only error messages; -qq will suppress ' 'the error messages as well.') parser.add_argument('-b', action='store_true', dest='legacy', help='use legacy (pre-PEP3147) compiled file locations') parser.add_argument('-d', metavar='DESTDIR', dest='ddir', default=None, help=('directory to prepend to file paths for use in ' 'compile-time tracebacks and in runtime ' 'tracebacks in cases where the source file is ' 'unavailable')) parser.add_argument('-s', metavar='STRIPDIR', dest='stripdir', default=None, help=('part of path to left-strip from path ' 'to source file - for example buildroot. ' '`-d` and `-s` options cannot be ' 'specified together.')) parser.add_argument('-p', metavar='PREPENDDIR', dest='prependdir', default=None, help=('path to add as prefix to path ' 'to source file - for example / to make ' 'it absolute when some part is removed ' 'by `-s` option. ' '`-d` and `-p` options cannot be ' 'specified together.')) parser.add_argument('-x', metavar='REGEXP', dest='rx', default=None, help=('skip files matching the regular expression; ' 'the regexp is searched for in the full path ' 'of each file considered for compilation')) parser.add_argument('-i', metavar='FILE', dest='flist', help=('add all the files and directories listed in ' 'FILE to the list considered for compilation; ' 'if "-", names are read from stdin')) parser.add_argument('compile_dest', metavar='FILE|DIR', nargs='*', help=('zero or more file and directory names ' 'to compile; if no arguments given, defaults ' 'to the equivalent of -l sys.path')) parser.add_argument('-j', '--workers', default=1, type=int, help='Run compileall concurrently') invalidation_modes = [mode.name.lower().replace('_', '-') for mode in py_compile.PycInvalidationMode] parser.add_argument('--invalidation-mode', choices=sorted(invalidation_modes), help=('set .pyc invalidation mode; defaults to ' '"checked-hash" if the SOURCE_DATE_EPOCH ' 'environment variable is set, and ' '"timestamp" otherwise.')) parser.add_argument('-o', action='append', type=int, dest='opt_levels', help=('Optimization levels to run compilation with. ' 'Default is -1 which uses the optimization level ' 'of the Python interpreter itself (see -O).')) parser.add_argument('-e', metavar='DIR', dest='limit_sl_dest', help='Ignore symlinks pointing outsite of the DIR') parser.add_argument('--hardlink-dupes', action='store_true', dest='hardlink_dupes', help='Hardlink duplicated pyc files') args = parser.parse_args() compile_dests = args.compile_dest if args.rx: import re args.rx = re.compile(args.rx) if args.limit_sl_dest == "": args.limit_sl_dest = None if args.recursion is not None: maxlevels = args.recursion else: maxlevels = args.maxlevels if args.opt_levels is None: args.opt_levels = [-1] if len(args.opt_levels) == 1 and args.hardlink_dupes: parser.error(("Hardlinking of duplicated bytecode makes sense " "only for more than one optimization level.")) if args.ddir is not None and ( args.stripdir is not None or args.prependdir is not None ): parser.error("-d cannot be used in combination with -s or -p") # if flist is provided then load it if args.flist: try: with (sys.stdin if args.flist=='-' else open(args.flist, encoding="utf-8")) as f: for line in f: compile_dests.append(line.strip()) except OSError: if args.quiet < 2: print("Error reading file list {}".format(args.flist)) return False if args.invalidation_mode: ivl_mode = args.invalidation_mode.replace('-', '_').upper() invalidation_mode = py_compile.PycInvalidationMode[ivl_mode] else: invalidation_mode = None success = True try: if compile_dests: for dest in compile_dests: if os.path.isfile(dest): if not compile_file(dest, args.ddir, args.force, args.rx, args.quiet, args.legacy, invalidation_mode=invalidation_mode, stripdir=args.stripdir, prependdir=args.prependdir, optimize=args.opt_levels, limit_sl_dest=args.limit_sl_dest, hardlink_dupes=args.hardlink_dupes): success = False else: if not compile_dir(dest, maxlevels, args.ddir, args.force, args.rx, args.quiet, args.legacy, workers=args.workers, invalidation_mode=invalidation_mode, stripdir=args.stripdir, prependdir=args.prependdir, optimize=args.opt_levels, limit_sl_dest=args.limit_sl_dest, hardlink_dupes=args.hardlink_dupes): success = False return success else: return compile_path(legacy=args.legacy, force=args.force, quiet=args.quiet, invalidation_mode=invalidation_mode) except KeyboardInterrupt: if args.quiet < 2: print("\n[interrupted]") return False return True if __name__ == '__main__': exit_status = int(not main()) sys.exit(exit_status)
Save