Files
mt5-ai-xauusd-trader/pyproject.toml
T
dependabot[bot]andGitHub 23bc9006df chore(deps)(deps): bump pytest-asyncio from 1.4.0 to 1.4.1
Bumps [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) from 1.4.0 to 1.4.1.
- [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
- [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v1.4.0...v1.4.1)

---
updated-dependencies:
- dependency-name: pytest-asyncio
  dependency-version: 1.4.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-11-02 04:11:52 +00:00

144 lines
4.0 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.11,<3.12"
classifiers = [
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
]
dependencies = [
"torch==2.14.1+cpu",
"stable-baselines3==2.9.0",
"gymnasium==1.4.0",
"numpy==2.4.6",
"scipy==1.17.1",
"scikit-learn==1.9.1",
"pandas==3.1.0",
"TA-Lib==0.8.2",
"requests==2.34.2",
"aiohttp==3.14.5",
"httpx==0.28.1",
"psycopg2-binary==2.9.13",
"sqlalchemy==2.1.6",
"alembic==1.20.1",
"redis==8.1.0",
"prometheus-client==0.26.0",
"structlog==26.1.0",
"rich==15.0.0",
"tqdm==4.70.1",
"jinja2==3.1.6",
"fastapi==0.143.0",
"uvicorn[standard]==0.54.0",
"python-dotenv==1.2.4",
"pydantic==2.14.1",
"pydantic-settings==2.16.1",
"tomli==2.5.0",
"python-dateutil==3.0.0",
"nest-asyncio==1.6.0",
"pytz==2026.5",
"click==8.5.0",
"tabulate==0.10.0",
"joblib==1.6.0",
"python-telegram-bot==22.8",
"psutil==7.2.2",
"optuna==5.0.0",
"python-socketio==5.17.0",
"MetaTrader5==5.0.6231; sys_platform == 'win32'",
]
[project.optional-dependencies]
dev = [
"pre-commit==4.7.0",
"ruff==0.17.2",
"mypy==2.4.0",
"pip-audit",
]
test = [
"pytest==9.1.1",
"pytest-asyncio==1.4.1",
"pytest-mock==3.17.0",
"pytest-cov==7.1.0",
"hypothesis==6.170.8",
"types-redis==4.6.0.20241004",
"types-requests==2.33.0.20261006",
"types-python-dateutil==2.9.0.20261021",
"types-setuptools==84.0.0.20261006",
"types-PyYAML==6.0.12.20260906",
]
[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
"migrations/**" = ["E402", "I"] # module level imports & import sorting ignored in migrations
# ===========================================================
# 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"