Files
mt5-ai-xauusd-trader/pyproject.toml
T
saysgrokGitHubsaysgrokgoogle-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
73b83701f7 Institutional-Grade Research Reporting System (#1304)
* feat: implement institutional-grade research reporting system

- Implement structured report objects via Pydantic in src/research/reporting.py.
- Add granular sections for Risk Audit, Data Quality, Regime Analysis, and Stress Testing.
- Enhance reporting with metrics like Walk-Forward Efficiency (WFE) and Sharpe decay.
- Create professional Jinja2 templates for Markdown and HTML exports.
- Update research modules to populate new institutional-grade metrics.
- Expand test suite to verify reporting integrity and formatting.
- Ensure Python 3.10+ compatibility with timezone-aware timestamps.

Co-authored-by: saysgrok <279469430+saysgrok@users.noreply.github.com>

* feat: institutional research reporting system improvements

- Implement structured report objects via Pydantic in src/research/reporting.py.
- Add granular sections for Risk Audit, Data Quality, Regime Analysis, and Stress Testing.
- Enhance reporting with metrics like Walk-Forward Efficiency (WFE) and Sharpe decay.
- Create professional Jinja2 templates for Markdown and HTML exports.
- Update research modules to populate new institutional-grade metrics.
- Expand test suite to verify reporting integrity and formatting.
- Ensure Python 3.10+ compatibility with timezone-aware timestamps.
- Fix dependency conflict with python-socketio in pyproject.toml.
- Resolve Ruff and Mypy violations in reporting modules.

Co-authored-by: saysgrok <279469430+saysgrok@users.noreply.github.com>

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: saysgrok <279469430+saysgrok@users.noreply.github.com>
2026-05-17 21:24:20 +00:00

144 lines
3.9 KiB
TOML

[build-system]
requires = ["setuptools>=65.0"]
build-backend = "setuptools.build_meta"
[project]
name = "mt5-ai-xauusd-trader"
version = "1.1.0-rc7"
description = "AI/ML Trading Bot for MetaTrader 5 - XAUUSD Gold Trading"
authors = [{name = "triqbit"}]
readme = "README.md"
license = {text = "MIT"}
requires-python = ">=3.10"
classifiers = [
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
]
dependencies = [
"torch==2.5.1",
"stable-baselines3==2.8.0",
"gymnasium==1.0.0",
"numpy==1.26.4",
"scipy==1.15.3",
"scikit-learn==1.6.1",
"pandas==2.2.3",
"TA-Lib==0.6.4",
"requests==2.33.1",
"aiohttp==3.13.4",
"httpx==0.28.1",
"psycopg2-binary==2.9.10",
"sqlalchemy==2.0.38",
"alembic==1.14.1",
"redis==7.4.0",
"prometheus-client==0.21.1",
"structlog==25.5.0",
"rich==13.9.4",
"tqdm==4.67.1",
"jinja2==3.1.6",
"fastapi==0.136.1",
"uvicorn[standard]==0.34.0",
"python-dotenv==1.2.2",
"pydantic==2.13.4",
"pydantic-settings==2.14.1",
"tomli==2.2.1",
"python-dateutil==2.9.0.post0",
"nest-asyncio==1.6.0",
"pytz==2026.2",
"click==8.1.8",
"tabulate==0.9.0",
"joblib==1.4.2",
"python-telegram-bot==21.10",
"psutil==7.2.2",
"optuna==4.8.0",
"python-socketio<5.0.0",
"MetaTrader5==5.0.5735; sys_platform == 'win32'",
"metaapi-cloud-sdk==29.1.1",
]
[project.optional-dependencies]
dev = [
"pre-commit==4.1.0",
"ruff==0.9.6",
"mypy==1.15.0",
"pip-audit",
]
test = [
"pytest==9.0.3",
"pytest-asyncio==1.3.0",
"pytest-mock==3.15.1",
"pytest-cov==7.1.0",
"hypothesis==6.125.2",
"types-redis==4.6.0.20241004",
"types-requests==2.32.0.20241016",
"types-python-dateutil==2.9.0.20260508",
"types-setuptools==82.0.0.20260508",
"types-PyYAML==6.0.12.20260510",
]
[tool.setuptools.packages.find]
where = ["."]
include = ["src*"]
# ===========================================================
# Ruff — single tool for lint + format + import sorting
# Replaces: black, isort, flake8, pyupgrade
# ===========================================================
[tool.ruff]
line-length = 100
target-version = "py311"
[tool.ruff.format]
# ruff format is the black-compatible formatter
quote-style = "double"
indent-style = "space"
skip-magic-trailing-comma = false
line-ending = "auto"
[tool.ruff.lint]
# Rule sets enabled:
# E/W = pycodestyle errors/warnings
# F = pyflakes (undefined names, unused imports)
# I = isort (import sorting — enforced)
# B = flake8-bugbear (likely bugs and design issues)
# C4 = flake8-comprehensions (simplify comprehensions)
# SIM = flake8-simplify
# RUF = ruff-specific rules
#
# NOTE: UP (pyupgrade) intentionally excluded until source files
# are migrated from typing.Dict/List/Optional to built-in generics.
# Track in: https://github.com/triqbit/mt5-ai-xauusd-trader/issues
select = ["E", "W", "F", "I", "B", "C4", "SIM", "RUF"]
ignore = [
"E501", # line-length — handled by ruff format
"B008", # function calls in default args (FastAPI Depends pattern)
"RUF012", # mutable class attrs — false positives in pydantic models
"SIM108", # ternary operator — sometimes less readable
]
[tool.ruff.lint.isort]
known-first-party = ["src"]
combine-as-imports = true
force-single-line = false
split-on-trailing-comma = true
[tool.ruff.lint.per-file-ignores]
"tests/**" = ["S101", "B011"] # assert + raise-without-from OK in tests
# ===========================================================
# mypy
# ===========================================================
[tool.mypy]
python_version = "3.11"
strict = true
warn_return_any = true
warn_unused_configs = true
ignore_missing_imports = true
# ===========================================================
# pytest
# ===========================================================
[tool.pytest.ini_options]
pythonpath = "."
testpaths = ["tests"]
addopts = "--strict-markers --verbose"