mirror of
https://github.com/snoups/remnashop.git
synced 2026-04-07 00:37:55 +00:00
- added total_disabled and total_limited fields to SubscriptionStatsDto and PlanSubStatsDto - fixed is_unlimited condition: changed or_ to and_ in subscription stats query - excluded DELETED subscriptions from stats queries - fixed PlanSubStatsDto field names: total_subs/active_subs/expired_subs → total/total_active/total_expired - replaced raise ValueError with redirect to Subscription.MAIN when PlanDto missing in dialog data - replaced raise ValueError with redirect to Subscription.MAIN when plan not found on selection - fixed migration 0019: added explicit COMMIT/BEGIN, fixed invalid menu button payloads - fixed broadcast text-too-long translation: $max_limit variable reference - fixed user_name_clean: strip remaining HTML special chars - added limit=50 to get_recent_registered_users call - bumped remnapy to f442fb6 - minor import cleanups across multiple files
103 lines
2.2 KiB
TOML
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.6.3",
|
|
#
|
|
"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 = "f442fb6" }
|
|
|
|
[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"]
|