Add style index check in check-styles.py

This commit is contained in:
Richard Berger
2020-09-02 12:42:18 -04:00
parent 549bdd080c
commit 286d3866e3

View File

@ -60,6 +60,7 @@ reader = {}
region = {} region = {}
total = 0 total = 0
index_pattern = re.compile(r"^.. index:: (compute|fix|pair_style|angle_style|bond_style|dihedral_style|improper_style|kspace_style)\s+([a-zA-Z0-9/_]+)$")
style_pattern = re.compile(r"(.+)Style\((.+),(.+)\)") style_pattern = re.compile(r"(.+)Style\((.+),(.+)\)")
upper = re.compile("[A-Z]+") upper = re.compile("[A-Z]+")
gpu = re.compile("(.+)/gpu$") gpu = re.compile("(.+)/gpu$")
@ -70,6 +71,26 @@ omp = re.compile("(.+)/omp$")
opt = re.compile("(.+)/opt$") opt = re.compile("(.+)/opt$")
removed = re.compile("(.*)Deprecated$") removed = re.compile("(.*)Deprecated$")
def load_index_entries_in_file(path):
entries = []
with open(path, 'r') as reader:
for line in reader:
m = index_pattern.match(line)
if m:
command_type = m.group(1)
style = m.group(2)
entries.append((command_type, style))
return entries
def load_index_entries():
index = {'compute': set(), 'fix': set(), 'pair_style': set(), 'angle_style': set(),
'bond_style': set(), 'dihedral_style': set(), 'improper_style': set(), 'kspace_style': set()}
rst_files = glob(os.path.join(doc_dir, '*.rst'))
for f in rst_files:
for command_type, style in load_index_entries_in_file(f):
index[command_type].add(style)
return index
def register_style(styles, name, info): def register_style(styles, name, info):
if name in styles: if name in styles:
for key, value in info.items(): for key, value in info.items():
@ -112,6 +133,24 @@ def check_style(filename, dirname, pattern, styles, name, suffix=False, skip=set
counter += 1 counter += 1
return counter return counter
def check_style_index(name, styles, index):
counter = 0
for style in styles:
if style not in index and not styles[style]['removed']:
print(f"{name} index entry {style} is missing")
counter += 1
for suffix in styles[style]:
if suffix == 'removed': continue
if suffix == 'kokkos':
suffix_style = f"{style}/kk"
else:
suffix_style = f"{style}/{suffix}"
if styles[style][suffix] and suffix_style not in index:
print(f"{name} index entry {suffix_style} is missing")
counter += 1
return counter
for header in headers: for header in headers:
if verbose: print("Checking ", header) if verbose: print("Checking ", header)
with open(header) as f: with open(header) as f:
@ -207,6 +246,13 @@ Total number of styles (including suffixes): %d""" \
len(fix), len(improper), len(integrate), len(kspace), \ len(fix), len(improper), len(integrate), len(kspace), \
len(minimize), len(pair), len(reader), len(region), total)) len(minimize), len(pair), len(reader), len(region), total))
index = load_index_entries()
total_index = 0
for command_type, entries in index.items():
total_index += len(entries)
print("Total number of style index entries:", total_index)
counter = 0 counter = 0
@ -244,5 +290,18 @@ counter += check_style('Commands_kspace.rst', doc_dir, ":doc:`(.+) <kspace_style
kspace,'KSpace',suffix=True) kspace,'KSpace',suffix=True)
if counter: if counter:
print("Found %d issue(s) with style lists" % counter) print(f"Found {counter} issue(s) with style lists")
counter = 0
counter += check_style_index("compute", compute, index["compute"])
counter += check_style_index("fix", fix, index["fix"])
counter += check_style_index("angle_style", angle, index["angle_style"])
counter += check_style_index("bond_style", bond, index["bond_style"])
counter += check_style_index("dihedral_style", dihedral, index["dihedral_style"])
counter += check_style_index("improper_style", dihedral, index["improper_style"])
counter += check_style_index("kspace_style", kspace, index["kspace_style"])
counter += check_style_index("pair_style", pair, index["pair_style"])
if counter:
print(f"Found {counter} issue(s) with style index")