From 1267a341e3171c6b9ae651d3d4fbb8c61c3c92a9 Mon Sep 17 00:00:00 2001 From: Tyler Date: Sun, 21 Jun 2026 00:50:31 -0600 Subject: [PATCH] refactor(api): trailing newlines + hoist acks.py parser imports to top-level MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Self-review nits from the router-split commit: - All four new files lacked a trailing newline (PEP 8 / POSIX). - acks.py was lazily importing ParseResult999 / serialize_999 inside get_ack_endpoint. Hoist to module-level — there's no import cycle (acks.py does not import from cyclone.api), so the imports are safe to do once. No behavior change. Targeted tests (test_acks + test_health + test_api_gets) still pass 41/41. --- backend/src/cyclone/api_routers/__init__.py | 2 +- backend/src/cyclone/api_routers/acks.py | 6 +++--- backend/src/cyclone/api_routers/health.py | 2 +- backend/src/cyclone/api_routers/ta1_acks.py | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/backend/src/cyclone/api_routers/__init__.py b/backend/src/cyclone/api_routers/__init__.py index 2c89bd5..8df5940 100644 --- a/backend/src/cyclone/api_routers/__init__.py +++ b/backend/src/cyclone/api_routers/__init__.py @@ -1 +1 @@ -"""Resource-group routers. Imported and registered by ``cyclone.api``.""" \ No newline at end of file +"""Resource-group routers. Imported and registered by ``cyclone.api``.""" diff --git a/backend/src/cyclone/api_routers/acks.py b/backend/src/cyclone/api_routers/acks.py index b2c4bf2..3ea8f09 100644 --- a/backend/src/cyclone/api_routers/acks.py +++ b/backend/src/cyclone/api_routers/acks.py @@ -17,6 +17,8 @@ from fastapi import APIRouter, HTTPException, Query, Request from fastapi.responses import StreamingResponse from cyclone.api_helpers import ndjson_stream_list, wants_ndjson +from cyclone.parsers.models_999 import ParseResult999 +from cyclone.parsers.serialize_999 import serialize_999 from cyclone.store import store router = APIRouter() @@ -91,8 +93,6 @@ def get_ack_endpoint(ack_id: int) -> dict: # the regenerated text to keep payloads small; detail does.) if row.raw_json: try: - from cyclone.parsers.models_999 import ParseResult999 - from cyclone.parsers.serialize_999 import serialize_999 regenerated = ParseResult999.model_validate(row.raw_json) icn = regenerated.envelope.control_number or "000000001" body["raw_999_text"] = serialize_999(regenerated, interchange_control_number=icn) @@ -101,4 +101,4 @@ def get_ack_endpoint(ack_id: int) -> dict: body["raw_999_text"] = None else: body["raw_999_text"] = None - return body \ No newline at end of file + return body diff --git a/backend/src/cyclone/api_routers/health.py b/backend/src/cyclone/api_routers/health.py index 8062c44..f87031e 100644 --- a/backend/src/cyclone/api_routers/health.py +++ b/backend/src/cyclone/api_routers/health.py @@ -14,4 +14,4 @@ router = APIRouter() @router.get("/api/health") def health() -> dict[str, str]: - return {"status": "ok", "version": __version__} \ No newline at end of file + return {"status": "ok", "version": __version__} diff --git a/backend/src/cyclone/api_routers/ta1_acks.py b/backend/src/cyclone/api_routers/ta1_acks.py index e1d4e23..bf10da5 100644 --- a/backend/src/cyclone/api_routers/ta1_acks.py +++ b/backend/src/cyclone/api_routers/ta1_acks.py @@ -73,4 +73,4 @@ def get_ta1_ack_endpoint(ack_id: int) -> dict: body = _ta1_to_ui(row) body["raw_ta1_text"] = _serialize_ta1_from_row(row) body["raw_json"] = row.raw_json - return body \ No newline at end of file + return body