##// END OF EJS Templates
Refactor with Pathlib for setupbase.py
kevin1kevin1k -
Show More
@@ -13,6 +13,7 This includes:
13 13 # Distributed under the terms of the Modified BSD License.
14 14
15 15 import os
16 from pathlib import Path
16 17 import re
17 18 import sys
18 19 from glob import glob
@@ -30,9 +31,7 from setuptools.command.install_scripts import install_scripts
30 31 #-------------------------------------------------------------------------------
31 32
32 33 # A few handy globals
33 isfile = os.path.isfile
34 pjoin = os.path.join
35 repo_root = os.path.dirname(os.path.abspath(__file__))
34 repo_root = Path(__file__).resolve().parent
36 35
37 36 def execfile(fname, globs, locs=None):
38 37 locs = locs or globs
@@ -44,7 +43,8 def execfile(fname, globs, locs=None):
44 43 #---------------------------------------------------------------------------
45 44
46 45 # release.py contains version, authors, license, url, keywords, etc.
47 execfile(pjoin(repo_root, 'IPython','core','release.py'), globals())
46 with open(repo_root / "IPython" / "core" / "release.py", encoding="utf-8") as f:
47 exec(f.read(), globals())
48 48
49 49 # Create a dict with the basic information
50 50 # This dict is eventually passed to setup after additional keys are added.
@@ -62,13 +62,13 def check_package_data(package_data):
62 62 """verify that package_data globs make sense"""
63 63 print("checking package data")
64 64 for pkg, data in package_data.items():
65 pkg_root = pjoin(*pkg.split('.'))
65 pkg_root = Path(*pkg.split("."))
66 66 for d in data:
67 path = pjoin(pkg_root, d)
67 path = pkg_root / d
68 68 if '*' in path:
69 69 assert len(glob(path)) > 0, "No files match pattern %s" % path
70 70 else:
71 assert os.path.exists(path), "Missing package data: %s" % path
71 assert path.exists(), f"Missing package data: {path}"
72 72
73 73
74 74 def check_package_data_first(command):
@@ -95,18 +95,18 def find_data_files():
95 95 """
96 96
97 97 if "freebsd" in sys.platform:
98 manpagebase = pjoin('man', 'man1')
98 manpagebase = Path("man") / "man1"
99 99 else:
100 manpagebase = pjoin('share', 'man', 'man1')
100 manpagebase = Path("share") / "man" / "man1"
101 101
102 102 # Simple file lists can be made by hand
103 manpages = [f for f in glob(pjoin('docs','man','*.1.gz')) if isfile(f)]
103 manpages = [f for f in Path("docs/man").glob("*.1.gz") if f.is_file()]
104 104 if not manpages:
105 105 # When running from a source tree, the manpages aren't gzipped
106 manpages = [f for f in glob(pjoin('docs','man','*.1')) if isfile(f)]
106 manpages = [f for f in Path("docs/man").glob("*.1") if f.is_file()]
107 107
108 108 # And assemble the entire output list
109 data_files = [ (manpagebase, manpages) ]
109 data_files = [(str(manpagebase), [str(f) for f in manpages])]
110 110
111 111 return data_files
112 112
@@ -126,11 +126,11 def target_outdated(target,deps):
126 126 true, otherwise return false.
127 127 """
128 128 try:
129 target_time = os.path.getmtime(target)
130 except os.error:
129 target_time = Path(target).stat().st_mtime
130 except FileNotFoundError:
131 131 return 1
132 132 for dep in deps:
133 dep_time = os.path.getmtime(dep)
133 dep_time = Path(dep).stat().st_mtime
134 134 if dep_time > target_time:
135 135 # print("For target",target,"Dep failed:",dep) # dbg
136 136 # print("times (dep,tar):",dep_time,target_time) # dbg
@@ -190,25 +190,24 def git_prebuild(pkg_dir, build_cmd=build_py):
190 190 repo_commit, _ = proc.communicate()
191 191 repo_commit = repo_commit.strip().decode("ascii")
192 192
193 out_pth = pjoin(base_dir, pkg_dir, 'utils', '_sysinfo.py')
194 if os.path.isfile(out_pth) and not repo_commit:
193 out_pth = Path(base_dir) / pkg_dir / "utils" / "_sysinfo.py"
194 if out_pth.is_file() and not repo_commit:
195 195 # nothing to write, don't clobber
196 196 return
197 197
198 print("writing git commit '%s' to %s" % (repo_commit, out_pth))
198 print(f"writing git commit '{repo_commit}' to {out_pth}")
199 199
200 200 # remove to avoid overwriting original via hard link
201 201 try:
202 os.remove(out_pth)
203 except (IOError, OSError):
202 out_pth.unlink()
203 except FileNotFoundError:
204 204 pass
205 with open(out_pth, "w", encoding="utf-8") as out_file:
205 with out_pth.open("w", encoding="utf-8") as out_file:
206 206 out_file.writelines(
207 207 [
208 208 "# GENERATED BY setup.py\n",
209 'commit = "%s"\n' % repo_commit,
209 f'commit = "{repo_commit}"\n',
210 210 ]
211 211 )
212 212
213 213 return MyBuildPy
214
General Comments 0
You need to be logged in to leave comments. Login now