15
15
Tested on releases back to 0.7.0.
16
16
17
17
"""
18
+ import argparse
19
+ argparser = argparse .ArgumentParser (description = """
20
+ 'Program description.
21
+ """ .strip ())
18
22
19
- try :
20
- import argparse
21
- argparser = argparse .ArgumentParser (description = """
22
- 'Program description.
23
- """ .strip ())
24
-
25
- argparser .add_argument ('-f' , '--force-overwrite' ,
23
+ argparser .add_argument ('-f' , '--force-overwrite' ,
26
24
default = False ,
27
25
help = 'Setting this will overwrite any existing cache results for the current commit' ,
28
26
action = 'store_true' )
29
- argparser .add_argument ('-d' , '--debug' ,
27
+ argparser .add_argument ('-d' , '--debug' ,
30
28
default = False ,
31
29
help = 'Report cache hits/misses' ,
32
30
action = 'store_true' )
33
31
34
- args = argparser .parse_args ()
35
- except :
36
- class Foo (object ):
37
- debug = False
38
- force_overwrite = False
39
-
40
- args = Foo () # for 2.6, no argparse
32
+ args = argparser .parse_args ()
41
33
42
34
#print args.accumulate(args.integers)
43
35
@@ -78,28 +70,18 @@ class Foo(object):
78
70
import shutil
79
71
import multiprocessing
80
72
pyver = "%d.%d" % (sys.version_info[:2])
81
- fileq = ["pandas"]
73
+ files = ["pandas"]
82
74
to_process = dict()
75
+ orig_hashes= dict((f.split("-")[0],f) for f in os.listdir(BUILD_CACHE_DIR)
76
+ if "-" in f and f.endswith(pyver))
77
+ post_hashes= dict((f.split("-")[1],f) for f in os.listdir(BUILD_CACHE_DIR)
78
+ if "-" in f and f.endswith(pyver))
83
79
84
- # retrieve the hashes existing in the cache
85
- orig_hashes=dict()
86
- post_hashes=dict()
87
- for path,dirs,files in os.walk(os.path.join(BUILD_CACHE_DIR,'pandas')):
88
- for f in files:
89
- s=f.split(".py-")[-1]
90
- try:
91
- prev_h,post_h,ver = s.split('-')
92
- if ver == pyver:
93
- orig_hashes[prev_h] = os.path.join(path,f)
94
- post_hashes[post_h] = os.path.join(path,f)
95
- except:
96
- pass
97
-
98
- while fileq:
99
- f = fileq.pop()
80
+ while files:
81
+ f = files.pop()
100
82
101
83
if os.path.isdir(f):
102
- fileq .extend([os.path.join(f,x) for x in os.listdir(f)])
84
+ files .extend([os.path.join(f,x) for x in os.listdir(f)])
103
85
else:
104
86
if not f.endswith(".py"):
105
87
continue
@@ -108,54 +90,40 @@ class Foo(object):
108
90
h = sha1(open(f,"rb").read()).hexdigest()
109
91
except IOError:
110
92
to_process[h] = f
111
- else:
112
- if h in orig_hashes and not BC_FORCE_OVERWRITE:
113
- src = orig_hashes[h]
114
- if BC_DEBUG:
115
- print("2to3 cache hit %s,%s" % (f,h))
116
- shutil.copyfile(src,f)
117
- elif h not in post_hashes:
118
- # we're not in a dev dir with already processed files
119
- if BC_DEBUG:
120
- print("2to3 cache miss (will process) %s,%s" % (f,h))
121
- to_process[h] = f
93
+ if h in orig_hashes and not BC_FORCE_OVERWRITE:
94
+ src = os.path.join(BUILD_CACHE_DIR,orig_hashes[h])
95
+ if BC_DEBUG:
96
+ print("2to3 cache hit %s,%s" % (f,h))
97
+ shutil.copyfile(src,f)
98
+ elif h not in post_hashes:
99
+
100
+ # we're not in a dev dir with already processed files
101
+ if BC_DEBUG:
102
+ print("2to3 cache miss %s,%s" % (f,h))
103
+ print("2to3 will process " + f)
104
+ to_process[h] = f
122
105
123
106
avail_fixes = set(refactor.get_fixers_from_package("lib2to3.fixes"))
124
107
avail_fixes.discard('lib2to3.fixes.fix_next')
125
108
t=refactor.RefactoringTool(avail_fixes)
126
- if to_process:
127
- print("Starting 2to3 refactoring...")
128
- for orig_h,f in to_process.items():
109
+ print("Starting 2to3 refactoring...")
110
+ for f in to_process.values():
111
+ if BC_DEBUG:
112
+ print("2to3 on %s" % f)
113
+ try:
114
+ t.refactor([f],True)
115
+ post_h = sha1(open(f, "rb").read()).hexdigest()
116
+ cached_fname = f + "-" + post_h + "-" + pyver
129
117
if BC_DEBUG:
130
- print("2to3 on %s" % f)
131
- try:
132
- t.refactor([f],True)
133
- post_h = sha1(open(f, "rb").read()).hexdigest()
134
- cached_fname = f + '-' + orig_h + '-' + post_h + '-' + pyver
135
- path = os.path.join(BUILD_CACHE_DIR, cached_fname)
136
- pathdir =os.path.dirname(path)
137
- if BC_DEBUG:
138
- print("cache put %s in %s" % (f, path))
139
- try:
140
- os.makedirs(pathdir)
141
- except OSError as exc:
142
- import errno
143
- if exc.errno == errno.EEXIST and os.path.isdir(pathdir):
144
- pass
145
- else:
146
- raise
147
-
148
- shutil.copyfile(f, path)
118
+ print("cache put %s,%s in %s" % (f, h, cached_fname))
119
+ shutil.copyfile(f, os.path.join(BUILD_CACHE_DIR, cached_fname))
149
120
150
- except Exception as e:
151
- print("While processing %s 2to3 raised: %s" % (f,str(e)))
152
-
153
- pass
154
- print("2to3 done refactoring.")
121
+ except:
122
+ pass
123
+ print("2to3 done refactoring.")
155
124
156
125
except Exception as e:
157
- if not isinstance(e,ZeroDivisionError):
158
- print( "Exception: " + str(e))
126
+ print( "Exception: " + str(e))
159
127
BUILD_CACHE_DIR = None
160
128
161
129
class CompilationCacheMixin(object):
0 commit comments