chore: add temporary AST refactor inventory
This commit is contained in:
@@ -0,0 +1,55 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import ast
|
||||||
|
import json
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
ROOT = Path(__file__).resolve().parents[1]
|
||||||
|
TARGETS = [
|
||||||
|
ROOT / "grok_register_ttk.py",
|
||||||
|
ROOT / "registration_flow.py",
|
||||||
|
ROOT / "cpa_xai" / "browser_confirm.py",
|
||||||
|
ROOT / "cpa_export.py",
|
||||||
|
ROOT / "cf_mail_debug.py",
|
||||||
|
ROOT / "cpa_xai" / "oauth_device.py",
|
||||||
|
ROOT / "cpa_xai" / "proxyutil.py",
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def free_names(node):
|
||||||
|
assigned = set()
|
||||||
|
loaded = set()
|
||||||
|
for child in ast.walk(node):
|
||||||
|
if isinstance(child, ast.Name):
|
||||||
|
if isinstance(child.ctx, (ast.Store, ast.Param)):
|
||||||
|
assigned.add(child.id)
|
||||||
|
elif isinstance(child.ctx, ast.Load):
|
||||||
|
loaded.add(child.id)
|
||||||
|
elif isinstance(child, (ast.FunctionDef, ast.AsyncFunctionDef, ast.ClassDef)) and child is not node:
|
||||||
|
assigned.add(child.name)
|
||||||
|
return sorted(loaded - assigned)
|
||||||
|
|
||||||
|
out = {}
|
||||||
|
for path in TARGETS:
|
||||||
|
if not path.exists():
|
||||||
|
continue
|
||||||
|
text = path.read_text(encoding="utf-8")
|
||||||
|
tree = ast.parse(text, filename=str(path))
|
||||||
|
entries = []
|
||||||
|
for node in tree.body:
|
||||||
|
if isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef, ast.ClassDef)):
|
||||||
|
entries.append({
|
||||||
|
"kind": type(node).__name__,
|
||||||
|
"name": node.name,
|
||||||
|
"start": node.lineno,
|
||||||
|
"end": getattr(node, "end_lineno", node.lineno),
|
||||||
|
"free_names": free_names(node),
|
||||||
|
})
|
||||||
|
out[str(path.relative_to(ROOT))] = {
|
||||||
|
"lines": len(text.splitlines()),
|
||||||
|
"definitions": entries,
|
||||||
|
}
|
||||||
|
|
||||||
|
(ROOT / "refactor_inventory.json").write_text(
|
||||||
|
json.dumps(out, ensure_ascii=False, indent=2) + "\n", encoding="utf-8"
|
||||||
|
)
|
||||||
|
print("inventory written")
|
||||||
Reference in New Issue
Block a user