"""Path setup shared by all scripts in code/: makes the run root the working directory, puts the workspace-local dependency directory (.pydeps) and code/ on sys.path, and provides small provenance helpers.""" import datetime import hashlib import json import os import resource import sys import time ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.insert(0, os.path.join(ROOT, ".pydeps")) sys.path.insert(0, os.path.join(ROOT, "code")) os.chdir(ROOT) RESULTS = os.path.join(ROOT, "results") # AUTOSCHOLAR_CERTS_DIR lets reproduce.sh write regenerated certificates next to, not over, the shipped ones CERTS = os.environ.get("AUTOSCHOLAR_CERTS_DIR") or os.path.join(ROOT, "code", "proofs", "certificates") os.makedirs(RESULTS, exist_ok=True) os.makedirs(CERTS, exist_ok=True) def utcnow(): return datetime.datetime.now(datetime.timezone.utc).isoformat(timespec="seconds") def sha256_file(path): h = hashlib.sha256() with open(path, "rb") as f: for chunk in iter(lambda: f.read(1 << 20), b""): h.update(chunk) return h.hexdigest() def peak_rss_mb(): r = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss # macOS reports bytes, Linux kilobytes return r / (1 << 20) if sys.platform == "darwin" else r / 1024.0 def cpu_time(): r = resource.getrusage(resource.RUSAGE_SELF) return r.ru_utime + r.ru_stime def append_jsonl(path, obj): with open(path, "a") as f: f.write(json.dumps(obj, sort_keys=True) + "\n") def log_event(stage, event, **fields): rec = {"utc": utcnow(), "stage": stage, "event": event} rec.update(fields) append_jsonl(os.path.join(RESULTS, "experiment-log.jsonl"), rec) return rec def versions(): import pysat return {"python": sys.version.split()[0], "python_sat": pysat.__version__, "platform": sys.platform, "worker": os.environ.get("AUTOSCHOLAR_WORKER", "M4M64c")}