golden hour
/lib64/python2.7/Tools/scripts
⬆️ Go Up
Upload
File/Folder
Size
Actions
analyze_dxp.py
4.11 KB
Del
OK
analyze_dxp.pyc
4.64 KB
Del
OK
analyze_dxp.pyo
4.64 KB
Del
OK
byext.py
3.85 KB
Del
OK
byext.pyc
4.42 KB
Del
OK
byext.pyo
4.42 KB
Del
OK
byteyears.py
1.6 KB
Del
OK
byteyears.pyc
1.37 KB
Del
OK
byteyears.pyo
1.37 KB
Del
OK
checkappend.py
4.55 KB
Del
OK
checkappend.pyc
4.77 KB
Del
OK
checkappend.pyo
4.77 KB
Del
OK
checkpyc.py
1.96 KB
Del
OK
checkpyc.pyc
1.93 KB
Del
OK
checkpyc.pyo
1.93 KB
Del
OK
classfix.py
5.81 KB
Del
OK
classfix.pyc
4.09 KB
Del
OK
classfix.pyo
4.09 KB
Del
OK
cleanfuture.py
8.38 KB
Del
OK
cleanfuture.pyc
7.22 KB
Del
OK
cleanfuture.pyo
7.19 KB
Del
OK
combinerefs.py
4.28 KB
Del
OK
combinerefs.pyc
4.16 KB
Del
OK
combinerefs.pyo
4.12 KB
Del
OK
copytime.py
664 B
Del
OK
copytime.pyc
937 B
Del
OK
copytime.pyo
937 B
Del
OK
crlf.py
611 B
Del
OK
crlf.pyc
855 B
Del
OK
crlf.pyo
855 B
Del
OK
cvsfiles.py
1.75 KB
Del
OK
cvsfiles.pyc
2.11 KB
Del
OK
cvsfiles.pyo
2.11 KB
Del
OK
db2pickle.py
3.49 KB
Del
OK
db2pickle.pyc
3.42 KB
Del
OK
db2pickle.pyo
3.42 KB
Del
OK
diff.py
1.98 KB
Del
OK
diff.pyc
2.29 KB
Del
OK
diff.pyo
2.29 KB
Del
OK
dutree.py
1.58 KB
Del
OK
dutree.pyc
2.18 KB
Del
OK
dutree.pyo
2.18 KB
Del
OK
eptags.py
1.45 KB
Del
OK
eptags.pyc
1.83 KB
Del
OK
eptags.pyo
1.83 KB
Del
OK
find_recursionlimit.py
3.39 KB
Del
OK
find_recursionlimit.pyc
5.54 KB
Del
OK
find_recursionlimit.pyo
5.54 KB
Del
OK
finddiv.py
2.46 KB
Del
OK
finddiv.pyc
3.22 KB
Del
OK
finddiv.pyo
3.22 KB
Del
OK
findlinksto.py
1.04 KB
Del
OK
findlinksto.pyc
1.39 KB
Del
OK
findlinksto.pyo
1.39 KB
Del
OK
findnocoding.py
2.64 KB
Del
OK
findnocoding.pyc
3.03 KB
Del
OK
findnocoding.pyo
3.03 KB
Del
OK
fixcid.py
9.75 KB
Del
OK
fixcid.pyc
7.67 KB
Del
OK
fixcid.pyo
7.67 KB
Del
OK
fixdiv.py
13.57 KB
Del
OK
fixdiv.pyc
13.7 KB
Del
OK
fixdiv.pyo
13.62 KB
Del
OK
fixheader.py
1.16 KB
Del
OK
fixheader.pyc
1.44 KB
Del
OK
fixheader.pyo
1.44 KB
Del
OK
fixnotice.py
2.98 KB
Del
OK
fixnotice.pyc
3.42 KB
Del
OK
fixnotice.pyo
3.42 KB
Del
OK
fixps.py
894 B
Del
OK
fixps.pyc
969 B
Del
OK
fixps.pyo
969 B
Del
OK
ftpmirror.py
12.55 KB
Del
OK
ftpmirror.pyc
10.81 KB
Del
OK
ftpmirror.pyo
10.81 KB
Del
OK
google.py
520 B
Del
OK
google.pyc
792 B
Del
OK
google.pyo
792 B
Del
OK
gprof2html.py
2.12 KB
Del
OK
gprof2html.pyc
2.22 KB
Del
OK
gprof2html.pyo
2.22 KB
Del
OK
h2py.py
5.82 KB
Del
OK
h2py.pyc
4.3 KB
Del
OK
h2py.pyo
4.3 KB
Del
OK
hotshotmain.py
1.45 KB
Del
OK
hotshotmain.pyc
1.82 KB
Del
OK
hotshotmain.pyo
1.82 KB
Del
OK
ifdef.py
3.63 KB
Del
OK
ifdef.pyc
2.21 KB
Del
OK
ifdef.pyo
2.21 KB
Del
OK
lfcr.py
619 B
Del
OK
lfcr.pyc
880 B
Del
OK
lfcr.pyo
880 B
Del
OK
linktree.py
2.37 KB
Del
OK
linktree.pyc
1.98 KB
Del
OK
linktree.pyo
1.98 KB
Del
OK
lll.py
747 B
Del
OK
lll.pyc
947 B
Del
OK
lll.pyo
947 B
Del
OK
logmerge.py
5.45 KB
Del
OK
logmerge.pyc
4.96 KB
Del
OK
logmerge.pyo
4.96 KB
Del
OK
mailerdaemon.py
7.76 KB
Del
OK
mailerdaemon.pyc
7.19 KB
Del
OK
mailerdaemon.pyo
7.19 KB
Del
OK
md5sum.py
2.33 KB
Del
OK
md5sum.pyc
2.85 KB
Del
OK
md5sum.pyo
2.85 KB
Del
OK
methfix.py
5.33 KB
Del
OK
methfix.pyc
4.03 KB
Del
OK
methfix.pyo
4.03 KB
Del
OK
mkreal.py
1.59 KB
Del
OK
mkreal.pyc
1.93 KB
Del
OK
mkreal.pyo
1.93 KB
Del
OK
ndiff.py
3.72 KB
Del
OK
ndiff.pyc
3.77 KB
Del
OK
ndiff.pyo
3.77 KB
Del
OK
nm2def.py
2.39 KB
Del
OK
nm2def.pyc
2.89 KB
Del
OK
nm2def.pyo
2.89 KB
Del
OK
objgraph.py
5.88 KB
Del
OK
objgraph.pyc
4.82 KB
Del
OK
objgraph.pyo
4.82 KB
Del
OK
parseentities.py
1.68 KB
Del
OK
parseentities.pyc
2.03 KB
Del
OK
parseentities.pyo
2.03 KB
Del
OK
patchcheck.py
5.42 KB
Del
OK
patchcheck.pyc
7.24 KB
Del
OK
patchcheck.pyo
7.24 KB
Del
OK
pathfix.py
4.23 KB
Del
OK
pathfix.pyc
3.75 KB
Del
OK
pathfix.pyo
3.75 KB
Del
OK
pdeps.py
3.84 KB
Del
OK
pdeps.pyc
3.14 KB
Del
OK
pdeps.pyo
3.14 KB
Del
OK
pickle2db.py
3.85 KB
Del
OK
pickle2db.pyc
3.73 KB
Del
OK
pickle2db.pyo
3.73 KB
Del
OK
pindent.py
16.77 KB
Del
OK
pindent.pyc
11.3 KB
Del
OK
pindent.pyo
11.3 KB
Del
OK
ptags.py
1.2 KB
Del
OK
ptags.pyc
1.37 KB
Del
OK
ptags.pyo
1.37 KB
Del
OK
pysource.py
3.76 KB
Del
OK
pysource.pyc
3.92 KB
Del
OK
pysource.pyo
3.92 KB
Del
OK
redemo.py
5.66 KB
Del
OK
redemo.pyc
5.16 KB
Del
OK
redemo.pyo
5.16 KB
Del
OK
reindent-rst.py
278 B
Del
OK
reindent-rst.pyc
481 B
Del
OK
reindent-rst.pyo
481 B
Del
OK
reindent.py
10.58 KB
Del
OK
reindent.pyc
8.77 KB
Del
OK
reindent.pyo
8.74 KB
Del
OK
rgrep.py
1.46 KB
Del
OK
rgrep.pyc
1.84 KB
Del
OK
rgrep.pyo
1.84 KB
Del
OK
serve.py
1.12 KB
Del
OK
serve.pyc
1.56 KB
Del
OK
serve.pyo
1.56 KB
Del
OK
setup.py
421 B
Del
OK
setup.pyc
548 B
Del
OK
setup.pyo
548 B
Del
OK
suff.py
622 B
Del
OK
suff.pyc
904 B
Del
OK
suff.pyo
904 B
Del
OK
svneol.py
2.86 KB
Del
OK
svneol.pyc
2.83 KB
Del
OK
svneol.pyo
2.76 KB
Del
OK
texcheck.py
9.04 KB
Del
OK
texcheck.pyc
8.18 KB
Del
OK
texcheck.pyo
8.18 KB
Del
OK
texi2html.py
68.19 KB
Del
OK
texi2html.pyc
81.37 KB
Del
OK
texi2html.pyo
81.37 KB
Del
OK
treesync.py
5.65 KB
Del
OK
treesync.pyc
5.85 KB
Del
OK
treesync.pyo
5.85 KB
Del
OK
untabify.py
1.19 KB
Del
OK
untabify.pyc
1.55 KB
Del
OK
untabify.pyo
1.55 KB
Del
OK
which.py
1.59 KB
Del
OK
which.pyc
1.59 KB
Del
OK
which.pyo
1.59 KB
Del
OK
win_add2path.py
1.58 KB
Del
OK
win_add2path.pyc
2.02 KB
Del
OK
win_add2path.pyo
2.02 KB
Del
OK
xxci.py
2.73 KB
Del
OK
xxci.pyc
3.93 KB
Del
OK
xxci.pyo
3.93 KB
Del
OK
Edit: reindent.py
#! /usr/bin/env python # 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. -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, shutil import sys import io verbose = 0 recurse = 0 dryrun = 0 makebackup = True def usage(msg=None): if msg is not None: print >> sys.stderr, msg print >> sys.stderr, __doc__ def errprint(*args): sep = "" for arg in args: sys.stderr.write(sep + str(arg)) sep = " " sys.stderr.write("\n") def main(): import getopt global verbose, recurse, dryrun, makebackup try: opts, args = getopt.getopt(sys.argv[1:], "drnvh", ["dryrun", "recurse", "nobackup", "verbose", "help"]) except getopt.error, msg: usage(msg) return for o, a in opts: if o in ('-d', '--dryrun'): dryrun += 1 elif o in ('-r', '--recurse'): recurse += 1 elif o in ('-n', '--nobackup'): makebackup = False elif o in ('-v', '--verbose'): verbose += 1 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, "...", try: f = io.open(file) except IOError, msg: errprint("%s: I/O Error: %s" % (file, str(msg))) return r = Reindenter(f) f.close() newline = r.newlines if isinstance(newline, tuple): errprint("%s: mixed newlines detected; cannot process file" % 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 f = io.open(file, "w", newline=newline) r.write(f) f.close() 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): tokenize.tokenize(self.getline, self.tokeneater) # 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 xrange(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 xrange(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, (sline, scol), 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((sline, -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((sline, 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()
Save