This repository has been archived by the owner on Feb 15, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 26
/
check_installed_package.py
executable file
·79 lines (60 loc) · 2.06 KB
/
check_installed_package.py
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/usr/bin/env python
"""
check_installed_package.py [MODULE]
Check the presence of a LICENSE.txt in the installed module directory,
and that it appears to contain text prevalent for a Scipy binary
distribution.
On Windows, also check that all DLLs packaged in the SciPy
wheel reside at the same path---see gh-57.
"""
import os
import sys
import io
import re
import argparse
import platform
from pathlib import Path
def check_text(text):
ok = (u'Copyright (c)' in text and
re.search(u'This binary distribution of \w+ also bundles the following software', text))
return ok
def check_dll_paths(mod):
# all DLLs packaged in SciPy should have the
# same path; see issue gh-57
install_basedir = os.path.dirname(mod.__file__)
list_filepaths = []
for filename in Path(install_basedir).rglob('*.dll'):
list_filepaths.append(filename)
reference_basepath = os.path.dirname(str(list_filepaths.pop(0)))
for filepath in list_filepaths:
if os.path.dirname(str(filepath)) != reference_basepath:
print("mismatch between current DLL file path: ",
filepath,
"and the reference file path for packaged DLLs: ",
reference_basepath)
sys.exit(1)
def main():
p = argparse.ArgumentParser(usage=__doc__.rstrip())
p.add_argument('module', nargs='?', default='scipy')
args = p.parse_args()
# Drop '' from sys.path
sys.path.pop(0)
# Find module path
__import__(args.module)
mod = sys.modules[args.module]
# Check license text
license_txt = os.path.join(os.path.dirname(mod.__file__),
'LICENSE.txt')
with io.open(license_txt, 'r', encoding='utf-8') as f:
text = f.read()
ok = check_text(text)
if not ok:
print("ERROR: License text {} does not contain expected "
"text fragments\n".format(license_txt))
print(text)
sys.exit(1)
if platform.system() == 'Windows':
check_dll_paths(mod)
sys.exit(0)
if __name__ == "__main__":
main()