Mercurial > cpython-lru_cache-weakref
annotate Tools/scripts/pathfix.py @ 87690:66c1c9f32567 default tip
Add use_weakref option to functools.lru_cache
The use_weakref option makes lru_cache create weak references to the function
arguments when creating the cache key, which prevents them from staying in the
memory forever even after all other references to them are gone.
This is a proof of concept for http://bugs.python.org/issue19859
| author | Radomir Dopieralski <devel@sheep.art.pl> |
|---|---|
| date | Tue, 03 Dec 2013 16:02:48 +0100 |
| parents | 6b28bfff9204 |
| children |
| rev | line source |
|---|---|
|
56221
2644f54e3676
Merged revisions 75061-75062 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
42084
diff
changeset
|
1 #!/usr/bin/env python3 |
|
1799
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
2 |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
3 # Change the #! line occurring in Python scripts. The new interpreter |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
4 # pathname must be given with a -i option. |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
5 # |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
6 # Command line arguments are files or directories to be processed. |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
7 # Directories are searched recursively for files whose name looks |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
8 # like a python module. |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
9 # Symbolic links are always ignored (except as explicit directory |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
10 # arguments). Of course, the original file is kept as a back-up |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
11 # (with a "~" attached to its name). |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
12 # |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
13 # Undoubtedly you can do this using find and sed or perl, but this is |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
14 # a nice example of Python code that recurses down a directory tree |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
15 # and uses regular expressions. Also note several subtleties like |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
16 # preserving the file's mode and avoiding to even write a temp file |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
17 # when no changes are needed for a file. |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
18 # |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
19 # NB: by changing only the function fixfile() you can turn this |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
20 # into a program for a different change to Python programs... |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
21 |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
22 import sys |
|
37021
4727f260f6f8
Remove regsub, reconvert, regex, regex_syntax and everything under lib-old.
Neal Norwitz <nnorwitz@gmail.com>
parents:
33076
diff
changeset
|
23 import re |
|
1799
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
24 import os |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
25 from stat import * |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
26 import getopt |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
27 |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
28 err = sys.stderr.write |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
29 dbg = err |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
30 rep = sys.stdout.write |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
31 |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
32 new_interpreter = None |
|
65538
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
33 preserve_timestamps = False |
|
1799
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
34 |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
35 def main(): |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
36 global new_interpreter |
|
65538
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
37 global preserve_timestamps |
|
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
38 usage = ('usage: %s -i /interpreter -p file-or-directory ...\n' % |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
39 sys.argv[0]) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
40 try: |
|
65538
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
41 opts, args = getopt.getopt(sys.argv[1:], 'i:p') |
|
40587
6b18a095c2e7
SF patch 1631942 by Collin Winter:
Guido van Rossum <guido@python.org>
parents:
37021
diff
changeset
|
42 except getopt.error as msg: |
|
65538
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
43 err(str(msg) + '\n') |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
44 err(usage) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
45 sys.exit(2) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
46 for o, a in opts: |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
47 if o == '-i': |
|
56221
2644f54e3676
Merged revisions 75061-75062 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
42084
diff
changeset
|
48 new_interpreter = a.encode() |
|
65538
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
49 if o == '-p': |
|
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
50 preserve_timestamps = True |
|
56221
2644f54e3676
Merged revisions 75061-75062 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
42084
diff
changeset
|
51 if not new_interpreter or not new_interpreter.startswith(b'/') or \ |
|
2644f54e3676
Merged revisions 75061-75062 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
42084
diff
changeset
|
52 not args: |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
53 err('-i option or file-or-directory missing\n') |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
54 err(usage) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
55 sys.exit(2) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
56 bad = 0 |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
57 for arg in args: |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
58 if os.path.isdir(arg): |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
59 if recursedown(arg): bad = 1 |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
60 elif os.path.islink(arg): |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
61 err(arg + ': will not process symbolic links\n') |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
62 bad = 1 |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
63 else: |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
64 if fix(arg): bad = 1 |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
65 sys.exit(bad) |
|
1799
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
66 |
|
37021
4727f260f6f8
Remove regsub, reconvert, regex, regex_syntax and everything under lib-old.
Neal Norwitz <nnorwitz@gmail.com>
parents:
33076
diff
changeset
|
67 ispythonprog = re.compile('^[a-zA-Z0-9_]+\.py$') |
|
1799
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
68 def ispython(name): |
|
56221
2644f54e3676
Merged revisions 75061-75062 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
42084
diff
changeset
|
69 return bool(ispythonprog.match(name)) |
|
1799
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
70 |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
71 def recursedown(dirname): |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
25219
diff
changeset
|
72 dbg('recursedown(%r)\n' % (dirname,)) |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
73 bad = 0 |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
74 try: |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
75 names = os.listdir(dirname) |
|
81017
6cfe2982de42
Use OESeeror instead of os.error (#16720)
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
65538
diff
changeset
|
76 except OSError as msg: |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
25219
diff
changeset
|
77 err('%s: cannot list directory: %r\n' % (dirname, msg)) |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
78 return 1 |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
79 names.sort() |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
80 subdirs = [] |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
81 for name in names: |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
82 if name in (os.curdir, os.pardir): continue |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
83 fullname = os.path.join(dirname, name) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
84 if os.path.islink(fullname): pass |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
85 elif os.path.isdir(fullname): |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
86 subdirs.append(fullname) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
87 elif ispython(name): |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
88 if fix(fullname): bad = 1 |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
89 for fullname in subdirs: |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
90 if recursedown(fullname): bad = 1 |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
91 return bad |
|
1799
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
92 |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
93 def fix(filename): |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
25219
diff
changeset
|
94 ## dbg('fix(%r)\n' % (filename,)) |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
95 try: |
|
56221
2644f54e3676
Merged revisions 75061-75062 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
42084
diff
changeset
|
96 f = open(filename, 'rb') |
|
40587
6b18a095c2e7
SF patch 1631942 by Collin Winter:
Guido van Rossum <guido@python.org>
parents:
37021
diff
changeset
|
97 except IOError as msg: |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
25219
diff
changeset
|
98 err('%s: cannot open: %r\n' % (filename, msg)) |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
99 return 1 |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
100 line = f.readline() |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
101 fixed = fixline(line) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
102 if line == fixed: |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
103 rep(filename+': no change\n') |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
104 f.close() |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
105 return |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
106 head, tail = os.path.split(filename) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
107 tempname = os.path.join(head, '@' + tail) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
108 try: |
|
56221
2644f54e3676
Merged revisions 75061-75062 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
42084
diff
changeset
|
109 g = open(tempname, 'wb') |
|
40587
6b18a095c2e7
SF patch 1631942 by Collin Winter:
Guido van Rossum <guido@python.org>
parents:
37021
diff
changeset
|
110 except IOError as msg: |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
111 f.close() |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
25219
diff
changeset
|
112 err('%s: cannot create: %r\n' % (tempname, msg)) |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
113 return 1 |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
114 rep(filename + ': updating\n') |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
115 g.write(fixed) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
116 BUFSIZE = 8*1024 |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
117 while 1: |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
118 buf = f.read(BUFSIZE) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
119 if not buf: break |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
120 g.write(buf) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
121 g.close() |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
122 f.close() |
|
1799
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
123 |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
124 # Finishing touch -- move files |
|
1799
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
125 |
|
65538
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
126 mtime = None |
|
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
127 atime = None |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
128 # First copy the file's mode to the temp file |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
129 try: |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
130 statbuf = os.stat(filename) |
|
65538
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
131 mtime = statbuf.st_mtime |
|
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
132 atime = statbuf.st_atime |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
133 os.chmod(tempname, statbuf[ST_MODE] & 0o7777) |
|
81017
6cfe2982de42
Use OESeeror instead of os.error (#16720)
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
65538
diff
changeset
|
134 except OSError as msg: |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
25219
diff
changeset
|
135 err('%s: warning: chmod failed (%r)\n' % (tempname, msg)) |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
136 # Then make a backup of the original file as filename~ |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
137 try: |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
138 os.rename(filename, filename + '~') |
|
81017
6cfe2982de42
Use OESeeror instead of os.error (#16720)
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
65538
diff
changeset
|
139 except OSError as msg: |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
25219
diff
changeset
|
140 err('%s: warning: backup failed (%r)\n' % (filename, msg)) |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
141 # Now move the temp file to the original file |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
142 try: |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
143 os.rename(tempname, filename) |
|
81017
6cfe2982de42
Use OESeeror instead of os.error (#16720)
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
65538
diff
changeset
|
144 except OSError as msg: |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
25219
diff
changeset
|
145 err('%s: rename failed (%r)\n' % (filename, msg)) |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
146 return 1 |
|
65538
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
147 if preserve_timestamps: |
|
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
148 if atime and mtime: |
|
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
149 try: |
|
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
150 os.utime(filename, (atime, mtime)) |
|
81017
6cfe2982de42
Use OESeeror instead of os.error (#16720)
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
65538
diff
changeset
|
151 except OSError as msg: |
|
65538
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
152 err('%s: reset of timestamp failed (%r)\n' % (filename, msg)) |
|
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
153 return 1 |
|
85406
c57d99a8fc42
#18803: fix more typos. Patch by Févry Thibault.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65538
diff
changeset
|
154 # Return success |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
155 return 0 |
|
1799
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
156 |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
157 def fixline(line): |
|
56221
2644f54e3676
Merged revisions 75061-75062 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
42084
diff
changeset
|
158 if not line.startswith(b'#!'): |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
159 return line |
|
56221
2644f54e3676
Merged revisions 75061-75062 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
42084
diff
changeset
|
160 if b"python" not in line: |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
161 return line |
|
56221
2644f54e3676
Merged revisions 75061-75062 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
42084
diff
changeset
|
162 return b'#! ' + new_interpreter + b'\n' |
|
1799
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
163 |
|
33074
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
31515
diff
changeset
|
164 if __name__ == '__main__': |
|
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
31515
diff
changeset
|
165 main() |
