[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "erp-report-engine" description = "A read-only, self-verifying data layer for the SQL database behind your ERP - weekly reports and a guarded MCP server for AI agents, every query provably read-only." readme = "README.md" license = "MIT" requires-python = ">=3.10" authors = [{ name = "Eren Gülmez" }] keywords = ["erp", "reporting", "sql", "kpi", "logo-tiger", "mssql", "audit", "read-only", "supply-chain", "mcp", "model-context-protocol", "ai-agents", "text-to-sql"] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Office/Business :: Financial", "Topic :: Database :: Front-Ends", ] dynamic = ["version"] dependencies = [ "pandas>=2.2,<3", "numpy>=1.26", "sqlalchemy>=2.0,<3", "pyyaml>=6.0", "matplotlib>=3.8,<4", "jinja2>=3.1", "sqlglot>=25.0", ] [project.optional-dependencies] mssql = ["pyodbc>=5.0"] postgres = ["psycopg2-binary>=2.9"] mcp = ["mcp>=1.20"] notify = ["apprise>=1.7"] dev = [ "pytest>=8.0", "pytest-cov>=5.0", "ruff>=0.6", "mcp>=1.20", "hypothesis>=6.0", ] [project.scripts] erp-report-engine = "erp_report_engine.cli:main" [project.urls] Homepage = "https://github.com/gulmezeren2-byte/erp-report-engine" Repository = "https://github.com/gulmezeren2-byte/erp-report-engine" Issues = "https://github.com/gulmezeren2-byte/erp-report-engine/issues" Changelog = "https://github.com/gulmezeren2-byte/erp-report-engine/blob/main/CHANGELOG.md" [tool.hatch.version] path = "erp_report_engine/__init__.py" [tool.hatch.build.targets.wheel] packages = ["erp_report_engine"] [tool.hatch.build.targets.wheel.force-include] # ship every bundled profile's YAML inside the wheel (the .py package files are # already included; only the data files need this), so `profile: netsis` resolves # from an installed package. Add a line when you add a profile — the CI wheel # check fails loudly if one is missing. "erp_report_engine/py.typed" = "erp_report_engine/py.typed" "erp_report_engine/profiles/generic.yaml" = "erp_report_engine/profiles/generic.yaml" "erp_report_engine/profiles/logo_tiger.yaml" = "erp_report_engine/profiles/logo_tiger.yaml" "erp_report_engine/profiles/netsis.yaml" = "erp_report_engine/profiles/netsis.yaml" "erp_report_engine/profiles/mikro.yaml" = "erp_report_engine/profiles/mikro.yaml" [tool.hatch.build.targets.sdist] include = [ "erp_report_engine", "demo", "tests", "config.example.yaml", "README.md", "README.tr.md", "CHANGELOG.md", "SECURITY.md", "LICENSE", ] [tool.ruff] line-length = 110 target-version = "py310" [tool.ruff.lint] select = ["E", "F", "I", "UP", "B", "SIM"] ignore = ["E501"] [tool.pytest.ini_options] testpaths = ["tests"]