Files
remnashop/pyproject.toml
Ilay 6ccaf0ffb7 feat: support MONTH_ROLLING traffic strategy and remnawave 2.7.x
- added MONTH_ROLLING traffic reset strategy with subscription creation date support
- added migration 0020: add MONTH_ROLLING value to plan_traffic_limit_strategy enum
- updated get_traffic_reset_delta to accept optional subscription_created_at for MONTH_ROLLING
- passed subscription.created_at to get_traffic_reset_delta in menu getter and show_reason handler
- added MONTH_ROLLING translation in utils.ftl and messages.ftl
- bumped remnapy to 10e5c95 (2.7.x)
- fixed ram_used_percent: fallback to 0 if memory.active is None
- fixed delete_device return type cast to int
- bumped version to 0.7.4
2026-04-05 23:00:48 +05:00

103 lines
2.2 KiB
TOML

[project]
name = "remnashop"
version = "0.0.0"
description = "This is a Telegram bot for selling VPN subscriptions. It works with Remnawave"
authors = [{ name = "snoups" }]
readme = "README.md"
license = "MIT"
requires-python = ">=3.12,<3.13"
dependencies = [
"greenlet>=3.2.4",
"uvicorn>=0.38.0",
"fastapi>=0.120.2",
"remnapy==2.7.0",
#
"dishka~=1.7.2",
"adaptix==3.0.0b11",
"aiogram~=3.25.0",
"aiogram-dialog~=2.5.0",
"fluentogram~=1.2.1",
#
"asyncpg~=0.30.0",
"alembic~=1.16.5",
"sqlalchemy[mypy]>=2.0.0",
"redis~=7.0.0",
"taskiq[orjson]~=0.12.1",
"taskiq-redis~=1.2.1",
#
"pydantic-settings~=2.11.0",
"loguru~=0.7.3",
"msgspec~=0.19.0",
"cryptography>=46.0.3",
"qrcode[pil]>=8.2",
]
[tool.uv.sources]
remnapy = { git = "https://github.com/snoups/remnapy", rev = "10e5c95" }
[project.urls]
homepage = "https://t.me/@remna_shop"
repository = "https://github.com/snoups/remnashop"
[dependency-groups]
dev = [
"aiogram-dialog[tools]~=2.5.0",
"mypy>=1.18.2",
"ruff>=0.14.2",
"pytest>=8.4.2",
"watchfiles>=1.1.1",
"ftl-extract>=0.9.0",
"types-cachetools",
"pytest-asyncio",
]
[tool.ruff]
target-version = "py312"
line-length = 100
lint.select = [
"C",
"DTZ",
"E",
"F",
"I",
"ICN",
"N",
"PLC",
"PLE",
"Q",
"T",
"W",
"YTT",
]
lint.ignore = ["N805"]
exclude = ["venv", ".venv", ".idea"]
[tool.mypy]
packages = ["src"]
plugins = ["sqlalchemy.ext.mypy.plugin", "pydantic.mypy"]
exclude = ["venv", ".venv", ".idea", "tests"]
warn_unused_configs = true
disallow_subclassing_any = true
disallow_untyped_calls = true
disallow_untyped_defs = true
disallow_incomplete_defs = true
check_untyped_defs = true
disallow_untyped_decorators = true
warn_unused_ignores = true
warn_return_any = true
no_implicit_reexport = true
strict_equality = true
extra_checks = true
explicit_package_bases = true
[[tool.mypy.overrides]]
module = ["fluentogram.*", "remnawave.*", "qrcode.*", "remnapy.*"]
follow_untyped_imports = true
[[tool.mypy.overrides]]
module = ["app.telegram.handlers.*"]
strict_optional = false
warn_return_any = false
disable_error_code = ["union-attr"]