From ce7fb50e79c16f3ea09439b3942ddef6e20260de Mon Sep 17 00:00:00 2001 From: Tyler Date: Fri, 19 Jun 2026 15:26:52 -0600 Subject: [PATCH] feat(backend): scaffold cyclone package skeleton --- backend/.gitignore | 9 +++++ backend/pyproject.toml | 29 ++++++++++++++++ backend/src/cyclone/__init__.py | 1 + backend/src/cyclone/__main__.py | 4 +++ backend/src/cyclone/parsers/__init__.py | 45 +++++++++++++++++++++++++ 5 files changed, 88 insertions(+) create mode 100644 backend/.gitignore create mode 100644 backend/pyproject.toml create mode 100644 backend/src/cyclone/__init__.py create mode 100644 backend/src/cyclone/__main__.py create mode 100644 backend/src/cyclone/parsers/__init__.py diff --git a/backend/.gitignore b/backend/.gitignore new file mode 100644 index 0000000..cd7bf33 --- /dev/null +++ b/backend/.gitignore @@ -0,0 +1,9 @@ +__pycache__/ +*.py[cod] +*.egg-info/ +.pytest_cache/ +.ruff_cache/ +.venv/ +venv/ +build/ +dist/ diff --git a/backend/pyproject.toml b/backend/pyproject.toml new file mode 100644 index 0000000..a245252 --- /dev/null +++ b/backend/pyproject.toml @@ -0,0 +1,29 @@ +[build-system] +requires = ["setuptools>=68", "wheel"] +build-backend = "setuptools.build_meta" + +[project] +name = "cyclone" +version = "0.1.0" +description = "Cyclone EDI suite — X12 837P/835 parser" +requires-python = ">=3.11" +dependencies = [ + "pydantic>=2.6,<3", + "click>=8.1,<9", +] + +[project.optional-dependencies] +dev = [ + "pytest>=8.0", + "pytest-cov>=4.1", +] + +[project.scripts] +cyclone = "cyclone.cli:main" + +[tool.setuptools.packages.find] +where = ["src"] + +[tool.pytest.ini_options] +testpaths = ["tests"] +addopts = "-ra --strict-markers" diff --git a/backend/src/cyclone/__init__.py b/backend/src/cyclone/__init__.py new file mode 100644 index 0000000..3dc1f76 --- /dev/null +++ b/backend/src/cyclone/__init__.py @@ -0,0 +1 @@ +__version__ = "0.1.0" diff --git a/backend/src/cyclone/__main__.py b/backend/src/cyclone/__main__.py new file mode 100644 index 0000000..6fcbc3a --- /dev/null +++ b/backend/src/cyclone/__main__.py @@ -0,0 +1,4 @@ +from cyclone.cli import main + +if __name__ == "__main__": + main() diff --git a/backend/src/cyclone/parsers/__init__.py b/backend/src/cyclone/parsers/__init__.py new file mode 100644 index 0000000..1fab7a3 --- /dev/null +++ b/backend/src/cyclone/parsers/__init__.py @@ -0,0 +1,45 @@ +"""Public re-exports for the 837P parser.""" + +from cyclone.parsers.exceptions import CycloneParseError, CycloneValidationError +from cyclone.parsers.models import ( + Address, + BatchSummary, + BillingProvider, + ClaimHeader, + ClaimOutput, + Diagnosis, + Envelope, + ParseResult, + Payer, + Procedure, + ServiceLine, + Subscriber, + ValidationIssue, + ValidationReport, +) +from cyclone.parsers.payer import PayerConfig +from cyclone.parsers.segments import Delimiters, tokenize +from cyclone.parsers.parse_837 import parse + +__all__ = [ + "Address", + "BatchSummary", + "BillingProvider", + "ClaimHeader", + "ClaimOutput", + "CycloneParseError", + "CycloneValidationError", + "Delimiters", + "Diagnosis", + "Envelope", + "ParseResult", + "Payer", + "PayerConfig", + "Procedure", + "ServiceLine", + "Subscriber", + "ValidationIssue", + "ValidationReport", + "parse", + "tokenize", +]