summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Misc/NEWS.d/next/Tools-Demos/2020-04-24-21-08-19.bpo-40385.nWIQdq.rst2
-rw-r--r--Tools/scripts/README1
-rwxr-xr-xTools/scripts/checkpyc.py69
3 files changed, 2 insertions, 70 deletions
diff --git a/Misc/NEWS.d/next/Tools-Demos/2020-04-24-21-08-19.bpo-40385.nWIQdq.rst b/Misc/NEWS.d/next/Tools-Demos/2020-04-24-21-08-19.bpo-40385.nWIQdq.rst
new file mode 100644
index 0000000..07d48fd
--- /dev/null
+++ b/Misc/NEWS.d/next/Tools-Demos/2020-04-24-21-08-19.bpo-40385.nWIQdq.rst
@@ -0,0 +1,2 @@
+Removed the checkpyc.py tool. Please see compileall without force mode as a
+potential alternative.
diff --git a/Tools/scripts/README b/Tools/scripts/README
index bee5b0b..7fc51a1 100644
--- a/Tools/scripts/README
+++ b/Tools/scripts/README
@@ -7,7 +7,6 @@ abitype.py Converts a C file to use the PEP 384 type definition A
analyze_dxp.py Analyzes the result of sys.getdxp()
byext.py Print lines/words/chars stats of files by extension
byteyears.py Print product of a file's size and age
-checkpyc.py Check presence and validity of ".pyc" files
cleanfuture.py Fix redundant Python __future__ statements
combinerefs.py A helper for analyzing PYTHONDUMPREFS output
copytime.py Copy one file's atime and mtime to another
diff --git a/Tools/scripts/checkpyc.py b/Tools/scripts/checkpyc.py
deleted file mode 100755
index bbaa3d1..0000000
--- a/Tools/scripts/checkpyc.py
+++ /dev/null
@@ -1,69 +0,0 @@
-#! /usr/bin/env python3
-# Check that all ".pyc" files exist and are up-to-date
-# Uses module 'os'
-
-import sys
-import os
-from stat import ST_MTIME
-import importlib.util
-
-# PEP 3147 compatibility (PYC Repository Directories)
-cache_from_source = (importlib.util.cache_from_source if sys.implementation.cache_tag
- else lambda path: path + 'c')
-
-
-def main():
- if len(sys.argv) > 1:
- verbose = (sys.argv[1] == '-v')
- silent = (sys.argv[1] == '-s')
- else:
- verbose = silent = False
- MAGIC = importlib.util.MAGIC_NUMBER
- if not silent:
- print('Using MAGIC word', repr(MAGIC))
- for dirname in sys.path:
- try:
- names = os.listdir(dirname)
- except OSError:
- print('Cannot list directory', repr(dirname))
- continue
- if not silent:
- print('Checking ', repr(dirname), '...')
- for name in sorted(names):
- if name.endswith('.py'):
- name = os.path.join(dirname, name)
- try:
- st = os.stat(name)
- except OSError:
- print('Cannot stat', repr(name))
- continue
- if verbose:
- print('Check', repr(name), '...')
- name_c = cache_from_source(name)
- try:
- with open(name_c, 'rb') as f:
- magic_str = f.read(4)
- mtime_str = f.read(4)
- except IOError:
- print('Cannot open', repr(name_c))
- continue
- if magic_str != MAGIC:
- print('Bad MAGIC word in ".pyc" file', end=' ')
- print(repr(name_c))
- continue
- mtime = get_long(mtime_str)
- if mtime in {0, -1}:
- print('Bad ".pyc" file', repr(name_c))
- elif mtime != st[ST_MTIME]:
- print('Out-of-date ".pyc" file', end=' ')
- print(repr(name_c))
-
-
-def get_long(s):
- if len(s) != 4:
- return -1
- return s[0] + (s[1] << 8) + (s[2] << 16) + (s[3] << 24)
-
-
-if __name__ == '__main__':
- main()