提交 2effaf15 authored 作者: Virgile Andreani's avatar Virgile Andreani 提交者: Virgile Andreani

Fix check_duplicate_key.py and remove os.path

上级 320f66a6
import os
import pickle import pickle
import sys import sys
from collections import Counter from collections import Counter
from pathlib import Path
from pytensor.configdefaults import config from pytensor.configdefaults import config
...@@ -12,32 +12,25 @@ DISPLAY_MOST_FREQUENT_DUPLICATE_CCODE = False ...@@ -12,32 +12,25 @@ DISPLAY_MOST_FREQUENT_DUPLICATE_CCODE = False
dirs: list = [] dirs: list = []
if len(sys.argv) > 1: if len(sys.argv) > 1:
for compiledir in sys.argv[1:]: for compiledir in sys.argv[1:]:
dirs.extend(os.path.join(compiledir, d) for d in os.listdir(compiledir)) dirs.extend(x.resolve() for x in Path(compiledir).iterdir())
else: else:
dirs = os.listdir(config.compiledir) dirs = [x.resolve() for x in config.compiledir.iterdir()]
dirs = [os.path.join(config.compiledir, d) for d in dirs]
keys: Counter[bytes] = Counter() # key -> nb seen keys: Counter[bytes] = Counter() # key -> nb seen
mods: dict = {} mods: dict = {}
for dir in dirs: for dir in dirs:
key = None if not dir.is_dir():
continue
try: try:
with open(os.path.join(dir, "key.pkl"), "rb") as f: key = (dir / "key.pkl").read_bytes()
key = f.read()
keys[key] += 1 keys[key] += 1
del f except FileNotFoundError:
except OSError:
# print dir, "don't have a key.pkl file" # print dir, "don't have a key.pkl file"
pass pass
try: try:
path = os.path.join(dir, "mod.cpp") mod = (dir / "mod.cpp").read_text(encoding="utf-8")
with open(path) as fmod:
mod = fmod.read()
mods.setdefault(mod, ()) mods.setdefault(mod, ())
mods[mod] += (key,) mods[mod] += (key,)
del mod except FileNotFoundError:
del fmod
del path
except OSError:
print(dir, "don't have a mod.cpp file") print(dir, "don't have a mod.cpp file")
if DISPLAY_DUPLICATE_KEYS: if DISPLAY_DUPLICATE_KEYS:
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论