Spaces:
Sleeping
Sleeping
import re, pathlib | |
p = pathlib.Path("app/api.py") | |
s = p.read_text(encoding="utf-8") | |
lines = s.splitlines() | |
n = len(lines) | |
i = 0 | |
# --- Shebang / encoding sətirlərini saxla | |
header = [] | |
while i < n and (lines[i].startswith("#!") or re.search(r"coding[:=]\s*[-\w.]+", lines[i])): | |
header.append(lines[i]); i += 1 | |
# --- Docstring varsa götür (yalnız faylın əvvəlində olanda) | |
doc_block = [] | |
if i < n and re.match(r'^\s*(?P<q>"""|\'\'\')', lines[i]): | |
q = '"""' if lines[i].strip().startswith('"""') else "'''" | |
doc_block.append(lines[i]); i += 1 | |
while i < n: | |
doc_block.append(lines[i]) | |
if q in lines[i]: | |
i += 1 | |
break | |
i += 1 | |
# --- Qalan hissədən __future__ importlarını çək | |
future_re = re.compile(r'^\s*from __future__ import ') | |
futures, rest = [], [] | |
for ln in lines[i:]: | |
if future_re.match(ln): | |
futures.append(ln.rstrip()) | |
else: | |
rest.append(ln) | |
# unikallaşdır | |
seen = set(); futures = [x for x in futures if not (x in seen or seen.add(x))] | |
# --- Köhnə storage importlarını təmizlə | |
rest = [ln for ln in rest if not re.match(r'^\s*from app\.storage import ', ln)] | |
storage_line = 'from app.storage import DATA_DIR, INDEX_DIR, HISTORY_JSON' | |
out = [] | |
out += header | |
if header and (doc_block or futures or storage_line): out.append('') | |
out += doc_block | |
if doc_block and (futures or storage_line): out.append('') | |
out += futures | |
if futures: out.append(storage_line) | |
else: | |
# futures yoxdursa, storage-ı docstringdən sonra qoyuruq | |
if doc_block: out.append(storage_line) | |
else: out.append(storage_line) | |
# importlardan sonra boş sətir | |
out.append('') | |
# qalan hissə | |
out += rest | |
txt = '\n'.join(out).rstrip() + '\n' | |
p.write_text(txt, encoding="utf-8") | |
print("OK: rearranged", p) | |