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"""|\'\'\')', 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)