[project] name = "payshield-ml" version = "0.1.0" description = "Real-Time Financial Fraud Detection System with sub-50ms latency" readme = "README.md" requires-python = ">=3.12" dependencies = [ # ML Stack "xgboost>=2.0.0", "scikit-learn>=1.4.0", "shap>=0.50.0", # Use latest stable version compatible with Python 3.12 "mlflow>=2.10.0", # API Framework "fastapi>=0.109.0", "uvicorn[standard]>=0.27.0", "pydantic>=2.5.0", # Data Processing "pandas>=2.2.0", "numpy>=2.0.0", "pyarrow>=15.0.0", # Feature Store "redis>=5.0.0", "hiredis>=2.3.0", # Utilities "python-dotenv>=1.0.0", "pyyaml>=6.0.1", "joblib>=1.5.0", "category-encoders>=2.6.0", "seaborn>=0.13.2", "matplotlib>=3.10.8", "pydantic-settings>=2.12.0", "streamlit>=1.53.0", "plotly>=6.5.2", "requests>=2.32.5", "typing-extensions>=4.15.0", ] [project.optional-dependencies] dev = [ # Testing "pytest>=8.0.0", "pytest-asyncio>=0.23.0", "pytest-cov>=4.1.0", # Type Checking & Linting "mypy>=1.8.0", "ruff>=0.1.0", # Notebook Support "jupyter>=1.0.0", "ipykernel>=6.29.0", ] [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.pytest.ini_options] testpaths = ["tests"] python_files = "test_*.py" python_classes = "Test*" python_functions = "test_*" addopts = "-v --cov=src --cov-report=term-missing" [tool.mypy] python_version = "3.12" warn_return_any = true warn_unused_configs = true disallow_untyped_defs = true [tool.ruff] line-length = 100 target-version = "py312" [tool.hatch.build.targets.wheel] packages = ["src"] [dependency-groups] dev = [ "ruff>=0.14.13", ]