mirror of
https://github.com/snoups/remnashop.git
synced 2026-04-15 07:31:41 +00:00
- added get_close_notification_button helper and CLOSE_BUTTON_ID constant - added close button as a selectable option in broadcast button picker - renamed get_goto_buttons to get_broadcast_buttons - fixed webhook endpoint: moved gateway.build_webhook_response out of finally block - re-enabled YooKassa webhook verification - fixed FreeKassa nonce: switched to time.time_ns() for strict monotonicity - fixed FreeKassa currency: use .upper() instead of .value - fixed system stats getter: use stats.memory.used instead of active, cpu.cores instead of physical_cores - fixed node traffic_limit: pass None instead of 0 to i18n_format_bytes_to_unit - added as_payload to UserDevicesUpdatedEvent and SubscriptionRevokedEvent with user keyboard - added session.close() in UnitOfWork __aexit__ - added python-multipart dependency - added DOCS constant, updated update keyboard links to docs instead of GitHub README - bumped version 0.7.5
105 lines
2.2 KiB
TOML
105 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",
|
|
"python-multipart>=0.0.22",
|
|
"remnapy==2.7.0",
|
|
#
|
|
"dishka~=1.7.2",
|
|
"adaptix==3.0.0b11",
|
|
"aiogram~=3.25.0",
|
|
"aiohttp-socks>=0.10.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 = "b712d1d" }
|
|
|
|
[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"]
|