"""Fast static checks before producing an official release archive.""" from pathlib import Path import re import subprocess import sys ROOT=Path(__file__).resolve().parent.parent sys.path.insert(0,str(ROOT)) from app.version import VERSION assert VERSION=='8.21.3-dev.1' api=(ROOT/'app'/'main.py').read_text(encoding='utf-8') assert 'return builder.build(' not in api, 'A synchronous request-thread build has reappeared' assert "@app.post('/api/sites/{site_id}/builds', status_code=202)" in api assert 'VERSION' in api for name in ('automotive','industrial','corporate','minimal'): theme=ROOT/'themes'/name manifest=theme/'manifest.json' assert manifest.is_file() and (theme/'pro.html').is_file() assert len(list((theme/'pages').glob('*.html')))>=14 for file in (ROOT/'requirements.lock',ROOT/'requirements-dev.lock'): pins=[ln for ln in file.read_text(encoding='utf-8').splitlines() if ln and not ln.startswith('#')] assert pins and all(re.fullmatch(r'[a-zA-Z0-9_.-]+==[0-9][a-zA-Z0-9_.!+\-]*',ln) for ln in pins) assert (ROOT/'.github/workflows/ci.yml').is_file() for file in (ROOT/'app/static').glob('*.js'): subprocess.run(['node','--check',str(file)],check=True) print('PASS: version, 4× themes, worker route, pinned dependencies, CI workflow, JS syntax')