SILENT KILLERPanel

Current Path: > > opt > alt > python312 > lib64 > python3.12 > >


Operation   : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
Software     : Apache
Server IP    : 162.0.232.56 | Your IP: 216.73.216.111
Domains      : 1034 Domain(s)
Permission   : [ 0755 ]

Files and Folders in: //opt/alt/python312/lib64/python3.12//

NameTypeSizeLast ModifiedActions
__pycache__ Directory - -
asyncio Directory - -
collections Directory - -
concurrent Directory - -
config-3.12-x86_64-linux-gnu Directory - -
ctypes Directory - -
curses Directory - -
dbm Directory - -
email Directory - -
encodings Directory - -
ensurepip Directory - -
html Directory - -
http Directory - -
importlib Directory - -
json Directory - -
lib-dynload Directory - -
lib2to3 Directory - -
logging Directory - -
multiprocessing Directory - -
pydoc_data Directory - -
re Directory - -
site-packages Directory - -
sqlite3 Directory - -
tomllib Directory - -
unittest Directory - -
urllib Directory - -
venv Directory - -
wsgiref Directory - -
xml Directory - -
xmlrpc Directory - -
zipfile Directory - -
zoneinfo Directory - -
LICENSE.txt File 13936 bytes June 03 2025 15:41:47.
__future__.py File 5218 bytes June 23 2025 13:48:52.
__hello__.py File 227 bytes June 23 2025 13:48:52.
_aix_support.py File 4021 bytes June 23 2025 13:48:49.
_collections_abc.py File 32089 bytes June 23 2025 13:48:37.
_compat_pickle.py File 8761 bytes June 23 2025 13:48:48.
_compression.py File 5681 bytes June 23 2025 13:48:37.
_markupbase.py File 14653 bytes June 23 2025 13:48:37.
_osx_support.py File 22023 bytes June 23 2025 13:48:50.
_py_abc.py File 6189 bytes June 23 2025 13:48:51.
_pydatetime.py File 92087 bytes June 23 2025 13:48:51.
_pydecimal.py File 227283 bytes June 23 2025 13:48:36.
_pyio.py File 93593 bytes June 23 2025 13:48:37.
_pylong.py File 10790 bytes June 23 2025 13:48:37.
_sitebuiltins.py File 3128 bytes June 23 2025 13:48:37.
_strptime.py File 28393 bytes June 23 2025 13:48:51.
_sysconfigdata__linux_x86_64-linux-gnu.py File 76553 bytes June 23 2025 13:58:24.
_sysconfigdata_d_linux_x86_64-linux-gnu.py File 76549 bytes June 23 2025 13:51:17.
_threading_local.py File 7220 bytes June 23 2025 13:48:37.
_weakrefset.py File 5893 bytes June 23 2025 13:48:36.
abc.py File 6538 bytes June 23 2025 13:48:37.
aifc.py File 34211 bytes June 23 2025 13:48:51.
antigravity.py File 500 bytes June 23 2025 13:48:37.
argparse.py File 101155 bytes June 23 2025 13:48:49.
ast.py File 64452 bytes June 23 2025 13:48:50.
base64.py File 20648 bytes June 23 2025 13:48:37.
bdb.py File 33573 bytes June 23 2025 13:48:48.
bisect.py File 3423 bytes June 23 2025 13:48:36.
bz2.py File 11847 bytes June 23 2025 13:48:50.
cProfile.py File 6569 bytes June 23 2025 13:48:36.
calendar.py File 25864 bytes June 23 2025 13:48:49.
cgi.py File 34432 bytes June 23 2025 13:48:50.
cgitb.py File 12421 bytes June 23 2025 13:48:52.
chunk.py File 5500 bytes June 23 2025 13:48:37.
cmd.py File 14873 bytes June 23 2025 13:48:36.
code.py File 10962 bytes June 23 2025 13:48:37.
codecs.py File 36870 bytes June 23 2025 13:48:37.
codeop.py File 5908 bytes June 23 2025 13:48:36.
colorsys.py File 4062 bytes June 23 2025 13:48:37.
compileall.py File 20507 bytes June 23 2025 13:48:36.
configparser.py File 53789 bytes June 23 2025 13:48:37.
contextlib.py File 27637 bytes June 23 2025 13:48:36.
contextvars.py File 129 bytes June 23 2025 13:48:48.
copy.py File 8412 bytes June 23 2025 13:48:37.
copyreg.py File 7614 bytes June 23 2025 13:48:50.
crypt.py File 3913 bytes June 23 2025 13:48:37.
csv.py File 16386 bytes June 23 2025 13:48:37.
dataclasses.py File 62085 bytes June 23 2025 13:48:50.
datetime.py File 268 bytes June 23 2025 13:48:52.
decimal.py File 2805 bytes June 23 2025 13:48:49.
difflib.py File 83368 bytes June 23 2025 13:48:37.
dis.py File 30227 bytes June 23 2025 13:48:37.
doctest.py File 106749 bytes June 23 2025 13:48:37.
enum.py File 81540 bytes June 23 2025 13:48:37.
filecmp.py File 10381 bytes June 23 2025 13:48:37.
fileinput.py File 15714 bytes June 23 2025 13:48:37.
fnmatch.py File 5999 bytes June 23 2025 13:48:37.
fractions.py File 38147 bytes June 23 2025 13:48:36.
ftplib.py File 34735 bytes June 23 2025 13:48:37.
functools.py File 37940 bytes June 23 2025 13:48:52.
genericpath.py File 5572 bytes June 23 2025 13:48:52.
getopt.py File 7488 bytes June 23 2025 13:48:50.
getpass.py File 5990 bytes June 23 2025 13:48:36.
gettext.py File 21320 bytes June 23 2025 13:48:50.
glob.py File 8732 bytes June 23 2025 13:48:36.
graphlib.py File 9648 bytes June 23 2025 13:48:36.
gzip.py File 25402 bytes June 23 2025 13:48:50.
hashlib.py File 9349 bytes June 23 2025 13:48:51.
heapq.py File 23024 bytes June 23 2025 13:48:36.
hmac.py File 7716 bytes June 23 2025 13:48:37.
imaplib.py File 54040 bytes June 23 2025 13:48:49.
imghdr.py File 4398 bytes June 23 2025 13:48:50.
inspect.py File 127125 bytes June 23 2025 13:48:48.
io.py File 3582 bytes June 23 2025 13:48:37.
ipaddress.py File 81414 bytes June 23 2025 13:48:49.
keyword.py File 1073 bytes June 23 2025 13:48:50.
linecache.py File 5800 bytes June 23 2025 13:48:37.
locale.py File 78599 bytes June 23 2025 13:48:48.
lzma.py File 13277 bytes June 23 2025 13:48:51.
mailbox.py File 78911 bytes June 23 2025 13:48:48.
mailcap.py File 9333 bytes June 23 2025 13:48:36.
mimetypes.py File 23037 bytes June 23 2025 13:48:48.
modulefinder.py File 23699 bytes June 23 2025 13:48:37.
netrc.py File 6922 bytes June 23 2025 13:48:37.
nntplib.py File 41087 bytes June 23 2025 13:48:36.
ntpath.py File 32324 bytes June 23 2025 13:48:36.
nturl2path.py File 2374 bytes June 23 2025 13:48:50.
numbers.py File 11467 bytes June 23 2025 13:48:51.
opcode.py File 13174 bytes June 23 2025 13:48:52.
operator.py File 10965 bytes June 23 2025 13:48:48.
optparse.py File 60369 bytes June 23 2025 13:48:50.
os.py File 40821 bytes June 23 2025 13:48:36.
pathlib.py File 51052 bytes June 23 2025 13:48:49.
pdb.py File 70311 bytes June 23 2025 13:48:37.
pickle.py File 66911 bytes June 23 2025 13:48:37.
pickletools.py File 94052 bytes June 23 2025 13:48:37.
pipes.py File 8978 bytes June 23 2025 13:48:50.
pkgutil.py File 18281 bytes June 23 2025 13:48:37.
platform.py File 43402 bytes June 23 2025 13:48:37.
plistlib.py File 28342 bytes June 23 2025 13:48:36.
poplib.py File 14619 bytes June 23 2025 13:48:36.
posixpath.py File 17483 bytes June 23 2025 13:48:37.
pprint.py File 24158 bytes June 23 2025 13:48:37.
profile.py File 23106 bytes June 23 2025 13:48:37.
pstats.py File 29289 bytes June 23 2025 13:48:37.
pty.py File 6137 bytes June 23 2025 13:48:36.
py_compile.py File 7837 bytes June 23 2025 13:48:49.
pyclbr.py File 11396 bytes June 23 2025 13:48:36.
pydoc.py File 113522 bytes June 23 2025 13:48:37.
queue.py File 11496 bytes June 23 2025 13:48:50.
quopri.py File 7197 bytes June 23 2025 13:48:50.
random.py File 34689 bytes June 23 2025 13:48:36.
reprlib.py File 7148 bytes June 23 2025 13:48:37.
rlcompleter.py File 7827 bytes June 23 2025 13:48:52.
runpy.py File 12885 bytes June 23 2025 13:48:36.
sched.py File 6351 bytes June 23 2025 13:48:49.
secrets.py File 1984 bytes June 23 2025 13:48:37.
selectors.py File 19671 bytes June 23 2025 13:48:37.
shelve.py File 8560 bytes June 23 2025 13:48:49.
shlex.py File 13353 bytes June 23 2025 13:48:51.
shutil.py File 56762 bytes June 23 2025 13:48:49.
signal.py File 2495 bytes June 23 2025 13:48:49.
site.py File 23198 bytes June 23 2025 13:48:48.
smtplib.py File 43545 bytes June 23 2025 13:48:37.
sndhdr.py File 7448 bytes June 23 2025 13:48:50.
socket.py File 37815 bytes June 23 2025 13:48:51.
socketserver.py File 28065 bytes June 23 2025 13:48:52.
sre_compile.py File 231 bytes June 23 2025 13:48:37.
sre_constants.py File 232 bytes June 23 2025 13:48:36.
sre_parse.py File 229 bytes June 23 2025 13:48:37.
ssl.py File 50904 bytes June 23 2025 13:48:48.
stat.py File 5485 bytes June 23 2025 13:48:49.
statistics.py File 50227 bytes June 23 2025 13:48:37.
string.py File 11786 bytes June 23 2025 13:48:50.
stringprep.py File 12917 bytes June 23 2025 13:48:37.
struct.py File 257 bytes June 23 2025 13:48:37.
subprocess.py File 88747 bytes June 23 2025 13:48:36.
sunau.py File 18478 bytes June 23 2025 13:48:37.
symtable.py File 12477 bytes June 23 2025 13:48:50.
sysconfig.py File 31850 bytes June 23 2025 13:48:49.
tabnanny.py File 11545 bytes June 23 2025 13:48:50.
tarfile.py File 112458 bytes June 23 2025 13:48:37.
telnetlib.py File 23334 bytes June 23 2025 13:48:37.
tempfile.py File 32386 bytes June 23 2025 13:48:36.
textwrap.py File 19718 bytes June 23 2025 13:48:36.
this.py File 1003 bytes June 23 2025 13:48:37.
threading.py File 60200 bytes June 23 2025 13:48:49.
timeit.py File 13477 bytes June 23 2025 13:48:37.
token.py File 2511 bytes June 23 2025 13:48:36.
tokenize.py File 21570 bytes June 23 2025 13:48:49.
trace.py File 29366 bytes June 23 2025 13:48:36.
traceback.py File 46393 bytes June 23 2025 13:48:49.
tracemalloc.py File 18047 bytes June 23 2025 13:48:50.
tty.py File 2035 bytes June 23 2025 13:48:36.
types.py File 10993 bytes June 23 2025 13:48:36.
typing.py File 118836 bytes June 23 2025 13:48:50.
uu.py File 7341 bytes June 23 2025 13:59:33.
uuid.py File 29656 bytes June 23 2025 13:48:37.
warnings.py File 21909 bytes June 23 2025 13:48:37.
wave.py File 22769 bytes June 23 2025 13:48:37.
weakref.py File 21513 bytes June 23 2025 13:48:49.
webbrowser.py File 23746 bytes June 23 2025 13:48:50.
xdrlib.py File 5942 bytes June 23 2025 13:48:52.
zipapp.py File 7543 bytes June 23 2025 13:48:37.
zipimport.py File 27840 bytes June 23 2025 13:48:49.

Reading File: //opt/alt/python312/lib64/python3.12///pipes.py

"""Conversion pipeline templates.

The problem:
------------

Suppose you have some data that you want to convert to another format,
such as from GIF image format to PPM image format.  Maybe the
conversion involves several steps (e.g. piping it through compress or
uuencode).  Some of the conversion steps may require that their input
is a disk file, others may be able to read standard input; similar for
their output.  The input to the entire conversion may also be read
from a disk file or from an open file, and similar for its output.

The module lets you construct a pipeline template by sticking one or
more conversion steps together.  It will take care of creating and
removing temporary files if they are necessary to hold intermediate
data.  You can then use the template to do conversions from many
different sources to many different destinations.  The temporary
file names used are different each time the template is used.

The templates are objects so you can create templates for many
different conversion steps and store them in a dictionary, for
instance.


Directions:
-----------

To create a template:
    t = Template()

To add a conversion step to a template:
   t.append(command, kind)
where kind is a string of two characters: the first is '-' if the
command reads its standard input or 'f' if it requires a file; the
second likewise for the output. The command must be valid /bin/sh
syntax.  If input or output files are required, they are passed as
$IN and $OUT; otherwise, it must be  possible to use the command in
a pipeline.

To add a conversion step at the beginning:
   t.prepend(command, kind)

To convert a file to another file using a template:
  sts = t.copy(infile, outfile)
If infile or outfile are the empty string, standard input is read or
standard output is written, respectively.  The return value is the
exit status of the conversion pipeline.

To open a file for reading or writing through a conversion pipeline:
   fp = t.open(file, mode)
where mode is 'r' to read the file, or 'w' to write it -- just like
for the built-in function open() or for os.popen().

To create a new template object initialized to a given one:
   t2 = t.clone()
"""                                     # '


import re
import os
import tempfile
import warnings
# we import the quote function rather than the module for backward compat
# (quote used to be an undocumented but used function in pipes)
from shlex import quote

warnings._deprecated(__name__, remove=(3, 13))

__all__ = ["Template"]

# Conversion step kinds

FILEIN_FILEOUT = 'ff'                   # Must read & write real files
STDIN_FILEOUT  = '-f'                   # Must write a real file
FILEIN_STDOUT  = 'f-'                   # Must read a real file
STDIN_STDOUT   = '--'                   # Normal pipeline element
SOURCE         = '.-'                   # Must be first, writes stdout
SINK           = '-.'                   # Must be last, reads stdin

stepkinds = [FILEIN_FILEOUT, STDIN_FILEOUT, FILEIN_STDOUT, STDIN_STDOUT, \
             SOURCE, SINK]


class Template:
    """Class representing a pipeline template."""

    def __init__(self):
        """Template() returns a fresh pipeline template."""
        self.debugging = 0
        self.reset()

    def __repr__(self):
        """t.__repr__() implements repr(t)."""
        return '<Template instance, steps=%r>' % (self.steps,)

    def reset(self):
        """t.reset() restores a pipeline template to its initial state."""
        self.steps = []

    def clone(self):
        """t.clone() returns a new pipeline template with identical
        initial state as the current one."""
        t = Template()
        t.steps = self.steps[:]
        t.debugging = self.debugging
        return t

    def debug(self, flag):
        """t.debug(flag) turns debugging on or off."""
        self.debugging = flag

    def append(self, cmd, kind):
        """t.append(cmd, kind) adds a new step at the end."""
        if not isinstance(cmd, str):
            raise TypeError('Template.append: cmd must be a string')
        if kind not in stepkinds:
            raise ValueError('Template.append: bad kind %r' % (kind,))
        if kind == SOURCE:
            raise ValueError('Template.append: SOURCE can only be prepended')
        if self.steps and self.steps[-1][1] == SINK:
            raise ValueError('Template.append: already ends with SINK')
        if kind[0] == 'f' and not re.search(r'\$IN\b', cmd):
            raise ValueError('Template.append: missing $IN in cmd')
        if kind[1] == 'f' and not re.search(r'\$OUT\b', cmd):
            raise ValueError('Template.append: missing $OUT in cmd')
        self.steps.append((cmd, kind))

    def prepend(self, cmd, kind):
        """t.prepend(cmd, kind) adds a new step at the front."""
        if not isinstance(cmd, str):
            raise TypeError('Template.prepend: cmd must be a string')
        if kind not in stepkinds:
            raise ValueError('Template.prepend: bad kind %r' % (kind,))
        if kind == SINK:
            raise ValueError('Template.prepend: SINK can only be appended')
        if self.steps and self.steps[0][1] == SOURCE:
            raise ValueError('Template.prepend: already begins with SOURCE')
        if kind[0] == 'f' and not re.search(r'\$IN\b', cmd):
            raise ValueError('Template.prepend: missing $IN in cmd')
        if kind[1] == 'f' and not re.search(r'\$OUT\b', cmd):
            raise ValueError('Template.prepend: missing $OUT in cmd')
        self.steps.insert(0, (cmd, kind))

    def open(self, file, rw):
        """t.open(file, rw) returns a pipe or file object open for
        reading or writing; the file is the other end of the pipeline."""
        if rw == 'r':
            return self.open_r(file)
        if rw == 'w':
            return self.open_w(file)
        raise ValueError('Template.open: rw must be \'r\' or \'w\', not %r'
                         % (rw,))

    def open_r(self, file):
        """t.open_r(file) and t.open_w(file) implement
        t.open(file, 'r') and t.open(file, 'w') respectively."""
        if not self.steps:
            return open(file, 'r')
        if self.steps[-1][1] == SINK:
            raise ValueError('Template.open_r: pipeline ends width SINK')
        cmd = self.makepipeline(file, '')
        return os.popen(cmd, 'r')

    def open_w(self, file):
        if not self.steps:
            return open(file, 'w')
        if self.steps[0][1] == SOURCE:
            raise ValueError('Template.open_w: pipeline begins with SOURCE')
        cmd = self.makepipeline('', file)
        return os.popen(cmd, 'w')

    def copy(self, infile, outfile):
        return os.system(self.makepipeline(infile, outfile))

    def makepipeline(self, infile, outfile):
        cmd = makepipeline(infile, self.steps, outfile)
        if self.debugging:
            print(cmd)
            cmd = 'set -x; ' + cmd
        return cmd


def makepipeline(infile, steps, outfile):
    # Build a list with for each command:
    # [input filename or '', command string, kind, output filename or '']

    list = []
    for cmd, kind in steps:
        list.append(['', cmd, kind, ''])
    #
    # Make sure there is at least one step
    #
    if not list:
        list.append(['', 'cat', '--', ''])
    #
    # Take care of the input and output ends
    #
    [cmd, kind] = list[0][1:3]
    if kind[0] == 'f' and not infile:
        list.insert(0, ['', 'cat', '--', ''])
    list[0][0] = infile
    #
    [cmd, kind] = list[-1][1:3]
    if kind[1] == 'f' and not outfile:
        list.append(['', 'cat', '--', ''])
    list[-1][-1] = outfile
    #
    # Invent temporary files to connect stages that need files
    #
    garbage = []
    for i in range(1, len(list)):
        lkind = list[i-1][2]
        rkind = list[i][2]
        if lkind[1] == 'f' or rkind[0] == 'f':
            (fd, temp) = tempfile.mkstemp()
            os.close(fd)
            garbage.append(temp)
            list[i-1][-1] = list[i][0] = temp
    #
    for item in list:
        [inf, cmd, kind, outf] = item
        if kind[1] == 'f':
            cmd = 'OUT=' + quote(outf) + '; ' + cmd
        if kind[0] == 'f':
            cmd = 'IN=' + quote(inf) + '; ' + cmd
        if kind[0] == '-' and inf:
            cmd = cmd + ' <' + quote(inf)
        if kind[1] == '-' and outf:
            cmd = cmd + ' >' + quote(outf)
        item[1] = cmd
    #
    cmdlist = list[0][1]
    for item in list[1:]:
        [cmd, kind] = item[1:3]
        if item[0] == '':
            if 'f' in kind:
                cmd = '{ ' + cmd + '; }'
            cmdlist = cmdlist + ' |\n' + cmd
        else:
            cmdlist = cmdlist + '\n' + cmd
    #
    if garbage:
        rmcmd = 'rm -f'
        for file in garbage:
            rmcmd = rmcmd + ' ' + quote(file)
        trapcmd = 'trap ' + quote(rmcmd + '; exit') + ' 1 2 3 13 14 15'
        cmdlist = trapcmd + '\n' + cmdlist + '\n' + rmcmd
    #
    return cmdlist

SILENT KILLER Tool