Source code for squadds.database.contributor_file_ops
import glob
import json
import os
[docs]
def append_entries_to_dataset_file(dataset_file, entries):
"""
Append one or more contribution entries to a dataset JSON file.
"""
with open(dataset_file, "r+") as file:
data = json.load(file)
data.extend(entries)
file.seek(0)
json.dump(data, file, indent=4)
[docs]
def load_contribution_from_json_file(file_path):
"""
Load a single contribution entry from disk.
"""
with open(file_path) as file:
return json.load(file)
[docs]
def load_sweep_entries_from_json_prefix(json_prefix, contributor_info):
"""
Load all sweep entries under a JSON filename prefix.
"""
entries = []
for file_path in sorted(glob.glob(os.path.abspath(json_prefix + "*.json"))):
with open(file_path) as file:
data = json.load(file)
entry = {
"design": data["design"],
"sim_options": data["sim_options"],
"sim_results": data["sim_results"],
"contributor": contributor_info,
"notes": data.get("notes", {}),
}
entries.append(entry)
return entries
[docs]
def validate_sweep_entries(entries, validate_structure_fn, validate_types_fn, validate_content_fn, print_fn=print):
"""
Run the legacy validation loop over a sweep payload.
"""
total_entries = len(entries)
for index, entry in enumerate(entries, start=1):
print_fn(f"Validating entry {index} of {total_entries}...")
validate_structure_fn(entry)
validate_types_fn(entry)
validate_content_fn(entry)
print_fn(f"Entry {index} of {total_entries} validated successfully.")
print_fn("--------------------------------------------------")