Explorer
/tmp/fix_tail2.py
← Zurück ↓ Download
#!/usr/bin/env python3
"""Rebuild p2t_e2e.py tail: cut from broken _f.write line to EOF, re-append
the full remaining test flow (verified logic from previous working runs)."""
p = '/opt/struktur/obsidian-graphiti-import-staging-p2i/p2t_e2e.py'
lines = open(p, encoding='utf-8').read().split('\n')
start = next(i for i, l in enumerate(lines) if "_f.write(" in l and "SOL-005" in l)
head = lines[:start]

tail = '''import hashlib as _hh
os.makedirs('/tmp/Solutions', exist_ok=True)
with open('/tmp/Solutions/SOL-005-content-briefing-modul.md', 'w') as _fw:
    _fw.write('# SOL-005 Content Briefing Modul')
os.chdir('/tmp')

spec2 = importlib.util.spec_from_file_location(
    "p2t_writer", "/tmp/aa043-p2i/aa043_single_writer_staging.py")
wmod = importlib.util.module_from_spec(spec2)
sys.modules["p2t_writer"] = wmod
spec2.loader.exec_module(wmod)
assert str(wmod.DB) == KNOWLEDGE_DB, str(wmod.DB)
wmod.inventory = lambda: []

kc = kconn()
qrow = kc.execute("SELECT id FROM graphiti_import_queue WHERE obsidian_path LIKE '%SOL-005-content-briefing-modul%' AND action='CREATE' ORDER BY id DESC LIMIT 1").fetchone()
assert qrow is not None, "no queue row"
qid = qrow["id"]
kc.close()

import io, contextlib
buf = io.StringIO()
with contextlib.redirect_stdout(buf):
    wmod.run(qid, dry_run=True)
out = json.loads(buf.getvalue().strip().splitlines()[-1])
assert out["dry_run"] is True and out["action"] == "WRITE_REQUIRED", out
print("PASS Writer DRY-RUN WRITE_REQUIRED")

# no_write case
conn_state = sqlite3.connect(STATE_DB); conn_state.row_factory = sqlite3.Row
fr = conn_state.execute("select * from files where id=34").fetchone()
res2 = mod.post(fr)
assert res2["status"] == "no_write", res2
print("PASS no_write weiterhin korrekt")
conn_state.close()

assert not _calls, _calls
print("PASS kein Netzwerk-POST")
urllib.request.urlopen = _real_urlopen

import subprocess
r = subprocess.run(["python3", "-m", "pytest", "-q",
    "/opt/struktur/obsidian-graphiti-reconciler-staging/test_pipeline.py",
    "/opt/struktur/obsidian-graphiti-reconciler-staging/test_classifier.py",
    "/opt/struktur/obsidian-graphiti-reconciler-staging/tests/test_aa043_contract.py"],
    cwd="/opt/struktur", capture_output=True, text=True)
print(r.stdout[-200:])
assert r.returncode == 0

print("=== P2T E2E: all checks passed ===")'''

open(p, 'w', encoding='utf-8').write('\n'.join(head) + '\n' + tail + '\n')
import py_compile
py_compile.compile(p, doraise=True)
print('tail rebuilt + SYNTAX_OK')