✘✘ GRAYBYTE WORDPRESS FILE MANAGER ✘✘

​🇳​​🇦​​🇲​​🇪♯➤ beluga.o2switch.net ​🇻​♯➤ 4.18.0-553.123.2.lve.el8.x86_64 #1 SMP 🇾​♯➤ 2026

𝗛𝗢𝗠𝗘 𝗜𝗗 ♯➤ 185.154.139.77 ♯➤ 𝗔𝗗𝗠𝗜𝗡 𝗜𝗗 216.73.216.254
𝗢𝗣𝗧𝗜𝗢𝗡𝗦 ♯ CRL ♯➤ 𝗢𝗞 ┃ WGT ♯➤ 𝗢𝗞 ┃ SDO ♯➤ 𝗢𝗙𝗙 ┃ PKEX ♯➤ 𝗢𝗙𝗙
𝗗𝗘𝗔𝗖𝗧𝗜𝗩𝗔𝗧𝗘𝗗 ♯➤ 𝗔𝗟𝗟 𝗪𝗢𝗥𝗞𝗜𝗡𝗚....

𝗛𝗢𝗠𝗘
𝗖𝗨𝗥𝗥𝗘𝗡𝗧 𝗙𝗜𝗟𝗘 : /opt/alt/python37/lib64/python3.7/Tools/scripts//reindent.py
#! /opt/alt/python37/bin/python3.7

# Released to the public domain, by Tim Peters, 03 October 2000.

"""reindent [-d][-r][-v] [ path ... ]

-d (--dryrun)   Dry run.   Analyze, but don't make any changes to, files.
-r (--recurse)  Recurse.   Search for all .py files in subdirectories too.
-n (--nobackup) No backup. Does not make a ".bak" file before reindenting.
-v (--verbose)  Verbose.   Print informative msgs; else no output.
   (--newline)  Newline.   Specify the newline character to use (CRLF, LF).
                           Default is the same as the original file.
-h (--help)     Help.      Print this usage information and exit.

Change Python (.py) files to use 4-space indents and no hard tab characters.
Also trim excess spaces and tabs from ends of lines, and remove empty lines
at the end of files.  Also ensure the last line ends with a newline.

If no paths are given on the command line, reindent operates as a filter,
reading a single source file from standard input and writing the transformed
source to standard output.  In this case, the -d, -r and -v flags are
ignored.

You can pass one or more file and/or directory paths.  When a directory
path, all .py files within the directory will be examined, and, if the -r
option is given, likewise recursively for subdirectories.

If output is not to standard output, reindent overwrites files in place,
renaming the originals with a .bak extension.  If it finds nothing to
change, the file is left alone.  If reindent does change a file, the changed
file is a fixed-point for future runs (i.e., running reindent on the
resulting .py file won't change it again).

The hard part of reindenting is figuring out what to do with comment
lines.  So long as the input files get a clean bill of health from
tabnanny.py, reindent should do a good job.

The backup file is a copy of the one that is being reindented. The ".bak"
file is generated with shutil.copy(), but some corner cases regarding
user/group and permissions could leave the backup file more readable than
you'd prefer. You can always use the --nobackup option to prevent this.
"""

__version__ = "1"

import tokenize
import os
import shutil
import sys

verbose = False
recurse = False
dryrun = False
makebackup = True
# A specified newline to be used in the output (set by --newline option)
spec_newline = None


def usage(msg=None):
    if msg is None:
        msg = __doc__
    print(msg, file=sys.stderr)


def errprint(*args):
    sys.stderr.write(" ".join(str(arg) for arg in args))
    sys.stderr.write("\n")

def main():
    import getopt
    global verbose, recurse, dryrun, makebackup, spec_newline
    try:
        opts, args = getopt.getopt(sys.argv[1:], "drnvh",
            ["dryrun", "recurse", "nobackup", "verbose", "newline=", "help"])
    except getopt.error as msg:
        usage(msg)
        return
    for o, a in opts:
        if o in ('-d', '--dryrun'):
            dryrun = True
        elif o in ('-r', '--recurse'):
            recurse = True
        elif o in ('-n', '--nobackup'):
            makebackup = False
        elif o in ('-v', '--verbose'):
            verbose = True
        elif o in ('--newline',):
            if not a.upper() in ('CRLF', 'LF'):
                usage()
                return
            spec_newline = dict(CRLF='\r\n', LF='\n')[a.upper()]
        elif o in ('-h', '--help'):
            usage()
            return
    if not args:
        r = Reindenter(sys.stdin)
        r.run()
        r.write(sys.stdout)
        return
    for arg in args:
        check(arg)


def check(file):
    if os.path.isdir(file) and not os.path.islink(file):
        if verbose:
            print("listing directory", file)
        names = os.listdir(file)
        for name in names:
            fullname = os.path.join(file, name)
            if ((recurse and os.path.isdir(fullname) and
                 not os.path.islink(fullname) and
                 not os.path.split(fullname)[1].startswith("."))
                or name.lower().endswith(".py")):
                check(fullname)
        return

    if verbose:
        print("checking", file, "...", end=' ')
    with open(file, 'rb') as f:
        try:
            encoding, _ = tokenize.detect_encoding(f.readline)
        except SyntaxError as se:
            errprint("%s: SyntaxError: %s" % (file, str(se)))
            return
    try:
        with open(file, encoding=encoding) as f:
            r = Reindenter(f)
    except IOError as msg:
        errprint("%s: I/O Error: %s" % (file, str(msg)))
        return

    newline = spec_newline if spec_newline else r.newlines
    if isinstance(newline, tuple):
        errprint("%s: mixed newlines detected; cannot continue without --newline" % file)
        return

    if r.run():
        if verbose:
            print("changed.")
            if dryrun:
                print("But this is a dry run, so leaving it alone.")
        if not dryrun:
            bak = file + ".bak"
            if makebackup:
                shutil.copyfile(file, bak)
                if verbose:
                    print("backed up", file, "to", bak)
            with open(file, "w", encoding=encoding, newline=newline) as f:
                r.write(f)
            if verbose:
                print("wrote new", file)
        return True
    else:
        if verbose:
            print("unchanged.")
        return False


def _rstrip(line, JUNK='\n \t'):
    """Return line stripped of trailing spaces, tabs, newlines.

    Note that line.rstrip() instead also strips sundry control characters,
    but at least one known Emacs user expects to keep junk like that, not
    mentioning Barry by name or anything <wink>.
    """

    i = len(line)
    while i > 0 and line[i - 1] in JUNK:
        i -= 1
    return line[:i]


class Reindenter:

    def __init__(self, f):
        self.find_stmt = 1  # next token begins a fresh stmt?
        self.level = 0      # current indent level

        # Raw file lines.
        self.raw = f.readlines()

        # File lines, rstripped & tab-expanded.  Dummy at start is so
        # that we can use tokenize's 1-based line numbering easily.
        # Note that a line is all-blank iff it's "\n".
        self.lines = [_rstrip(line).expandtabs() + "\n"
                      for line in self.raw]
        self.lines.insert(0, None)
        self.index = 1  # index into self.lines of next line

        # List of (lineno, indentlevel) pairs, one for each stmt and
        # comment line.  indentlevel is -1 for comment lines, as a
        # signal that tokenize doesn't know what to do about them;
        # indeed, they're our headache!
        self.stats = []

        # Save the newlines found in the file so they can be used to
        #  create output without mutating the newlines.
        self.newlines = f.newlines

    def run(self):
        tokens = tokenize.generate_tokens(self.getline)
        for _token in tokens:
            self.tokeneater(*_token)
        # Remove trailing empty lines.
        lines = self.lines
        while lines and lines[-1] == "\n":
            lines.pop()
        # Sentinel.
        stats = self.stats
        stats.append((len(lines), 0))
        # Map count of leading spaces to # we want.
        have2want = {}
        # Program after transformation.
        after = self.after = []
        # Copy over initial empty lines -- there's nothing to do until
        # we see a line with *something* on it.
        i = stats[0][0]
        after.extend(lines[1:i])
        for i in range(len(stats) - 1):
            thisstmt, thislevel = stats[i]
            nextstmt = stats[i + 1][0]
            have = getlspace(lines[thisstmt])
            want = thislevel * 4
            if want < 0:
                # A comment line.
                if have:
                    # An indented comment line.  If we saw the same
                    # indentation before, reuse what it most recently
                    # mapped to.
                    want = have2want.get(have, -1)
                    if want < 0:
                        # Then it probably belongs to the next real stmt.
                        for j in range(i + 1, len(stats) - 1):
                            jline, jlevel = stats[j]
                            if jlevel >= 0:
                                if have == getlspace(lines[jline]):
                                    want = jlevel * 4
                                break
                    if want < 0:           # Maybe it's a hanging
                                           # comment like this one,
                        # in which case we should shift it like its base
                        # line got shifted.
                        for j in range(i - 1, -1, -1):
                            jline, jlevel = stats[j]
                            if jlevel >= 0:
                                want = have + (getlspace(after[jline - 1]) -
                                               getlspace(lines[jline]))
                                break
                    if want < 0:
                        # Still no luck -- leave it alone.
                        want = have
                else:
                    want = 0
            assert want >= 0
            have2want[have] = want
            diff = want - have
            if diff == 0 or have == 0:
                after.extend(lines[thisstmt:nextstmt])
            else:
                for line in lines[thisstmt:nextstmt]:
                    if diff > 0:
                        if line == "\n":
                            after.append(line)
                        else:
                            after.append(" " * diff + line)
                    else:
                        remove = min(getlspace(line), -diff)
                        after.append(line[remove:])
        return self.raw != self.after

    def write(self, f):
        f.writelines(self.after)

    # Line-getter for tokenize.
    def getline(self):
        if self.index >= len(self.lines):
            line = ""
        else:
            line = self.lines[self.index]
            self.index += 1
        return line

    # Line-eater for tokenize.
    def tokeneater(self, type, token, slinecol, end, line,
                   INDENT=tokenize.INDENT,
                   DEDENT=tokenize.DEDENT,
                   NEWLINE=tokenize.NEWLINE,
                   COMMENT=tokenize.COMMENT,
                   NL=tokenize.NL):

        if type == NEWLINE:
            # A program statement, or ENDMARKER, will eventually follow,
            # after some (possibly empty) run of tokens of the form
            #     (NL | COMMENT)* (INDENT | DEDENT+)?
            self.find_stmt = 1

        elif type == INDENT:
            self.find_stmt = 1
            self.level += 1

        elif type == DEDENT:
            self.find_stmt = 1
            self.level -= 1

        elif type == COMMENT:
            if self.find_stmt:
                self.stats.append((slinecol[0], -1))
                # but we're still looking for a new stmt, so leave
                # find_stmt alone

        elif type == NL:
            pass

        elif self.find_stmt:
            # This is the first "real token" following a NEWLINE, so it
            # must be the first token of the next program statement, or an
            # ENDMARKER.
            self.find_stmt = 0
            if line:   # not endmarker
                self.stats.append((slinecol[0], self.level))


# Count number of leading blanks.
def getlspace(line):
    i, n = 0, len(line)
    while i < n and line[i] == " ":
        i += 1
    return i


if __name__ == '__main__':
    main()


Current_dir [ 𝗡𝗢𝗧 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ] Document_root [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ]


[ Back ]
𝗡𝗔𝗠𝗘
𝗦𝗜𝗭𝗘
𝗟𝗔𝗦𝗧 𝗧𝗢𝗨𝗖𝗛
𝗨𝗦𝗘𝗥
𝗦𝗧𝗔𝗧𝗨𝗦
𝗙𝗨𝗡𝗖𝗧𝗜𝗢𝗡𝗦
..
--
25 Jul 2024 8.41 AM
root / linksafe
0755
__pycache__
--
25 Jul 2024 8.41 AM
root / linksafe
0755
2to3
0.094 KB
5 Jun 2023 8.45 PM
root / linksafe
0755
README
4.53 KB
5 Jun 2023 8.45 PM
root / linksafe
0644
abitype.py
5.453 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
analyze_dxp.py
4.085 KB
17 Apr 2024 5.36 PM
root / linksafe
0644
byext.py
3.823 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
byteyears.py
1.622 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
checkpip.py
0.786 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
checkpyc.py
2.174 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
cleanfuture.py
8.432 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
combinerefs.py
4.325 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
copytime.py
0.658 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
crlf.py
0.628 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
db2pickle.py
3.557 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
diff.py
2.215 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
dutree.doc
2.185 KB
5 Jun 2023 8.45 PM
root / linksafe
0644
dutree.py
1.581 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
eptags.py
1.469 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
find-uname.py
1.19 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
find_recursionlimit.py
3.912 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
finddiv.py
2.449 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
findlinksto.py
1.057 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
findnocoding.py
2.895 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
fixcid.py
9.826 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
fixdiv.py
13.567 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
fixheader.py
1.19 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
fixnotice.py
2.998 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
fixps.py
0.89 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
generate_opcode_h.py
1.708 KB
17 Apr 2024 5.36 PM
root / linksafe
0644
get-remote-certificate.py
2.292 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
google.py
0.5 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
gprof2html.py
2.188 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
h2py.py
5.483 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
highlight.py
8.959 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
idle3
0.094 KB
5 Jun 2023 8.45 PM
root / linksafe
0755
ifdef.py
3.644 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
import_diagnostics.py
0.987 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
lfcr.py
0.636 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
linktree.py
2.394 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
lll.py
0.741 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
mailerdaemon.py
7.863 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
make_ctype.py
2.238 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
md5sum.py
2.46 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
mkreal.py
1.604 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
ndiff.py
3.741 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
nm2def.py
2.407 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
objgraph.py
5.79 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
parse_html5_entities.py
3.917 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
parseentities.py
1.667 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
patchcheck.py
9.57 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
pathfix.py
5.039 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
pdeps.py
3.834 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
pickle2db.py
3.938 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
pindent.py
16.736 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
ptags.py
1.209 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
pydoc3
0.078 KB
5 Jun 2023 8.45 PM
root / linksafe
0755
pysource.py
3.785 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
pyvenv
0.427 KB
5 Jun 2023 8.45 PM
root / linksafe
0755
reindent-rst.py
0.284 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
reindent.py
11.385 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
rgrep.py
1.452 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
run_tests.py
1.778 KB
17 Apr 2024 5.36 PM
root / linksafe
0644
serve.py
1.146 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
smelly.py
2.081 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
suff.py
0.509 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
texi2html.py
68.542 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
untabify.py
1.276 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
update_file.py
0.744 KB
17 Apr 2024 5.36 PM
root / linksafe
0644
verify_ensurepip_wheels.py
3.12 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
which.py
1.605 KB
17 Apr 2024 5.36 PM
root / linksafe
0755
win_add2path.py
1.619 KB
17 Apr 2024 5.36 PM
root / linksafe
0644

✘✘ GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME ✘✘
Static GIF Static GIF