1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
#
# Pyrex -- Things that don't belong
# anywhere else in particular
#
import os, sys
try:
from __builtin__ import set
except ImportError:
from sets import Set as set
def has_suffix(path, suffixes):
for suffix in suffixes:
if path.endswith(suffix):
return True
return False
def replace_suffix(path, newsuf):
base, _ = os.path.splitext(path)
return base + newsuf
def map_suffix(path, mapping, default):
base, suffix = os.path.splitext(path)
return base + mapping.get(suffix, default)
def open_new_file(path):
# Open and truncate existing file to
# preserve metadata on the Mac.
return open(path, "w+")
def castrate_file(path, st):
# Remove junk contents from an output file after a
# failed compilation, but preserve metadata on Mac.
# Also sets access and modification times earlier
# than those specified by st (a stat struct).
try:
f = open(path, "r+")
except EnvironmentError:
pass
else:
f.seek(0, 0)
f.truncate()
f.write(
"#error Do not use this file, it is the result of a failed Pyrex compilation.\n")
f.close()
if st:
os.utime(path, (st.st_atime - 1, st.st_mtime - 1))
def modification_time(path):
st = os.stat(path)
return st.st_mtime
def file_newer_than(path, time):
ftime = modification_time(path)
return ftime > time
|