150 lines
3.1 KiB
TOML
150 lines
3.1 KiB
TOML
[tool.poetry]
|
|
name = "my-uploader-bot"
|
|
version = "2.0.0"
|
|
description = "Enhanced async uploader bot with comprehensive security and monitoring"
|
|
authors = ["Your Name <your.email@example.com>"]
|
|
readme = "README.md"
|
|
packages = [{include = "app"}]
|
|
|
|
[tool.poetry.dependencies]
|
|
python = "^3.11"
|
|
sanic = "^23.12.1"
|
|
sanic-cors = "^2.2.0"
|
|
asyncpg = "^0.29.0"
|
|
sqlalchemy = {extras = ["asyncio"], version = "^2.0.23"}
|
|
alembic = "^1.13.1"
|
|
aioredis = "^2.0.1"
|
|
structlog = "^23.2.0"
|
|
pydantic = "^2.5.2"
|
|
pydantic-settings = "^2.1.0"
|
|
python-multipart = "^0.0.6"
|
|
aiofiles = "^23.2.1"
|
|
python-magic = "^0.4.27"
|
|
pillow = "^10.1.0"
|
|
prometheus-client = "^0.19.0"
|
|
psutil = "^5.9.6"
|
|
bcrypt = "^4.1.2"
|
|
pyjwt = "^2.8.0"
|
|
cryptography = "^41.0.7"
|
|
httpx = "^0.25.2"
|
|
ujson = "^5.8.0"
|
|
orjson = "^3.9.10"
|
|
toncli = "^0.0.54"
|
|
ton = "^0.24"
|
|
validators = "^0.22.0"
|
|
python-dateutil = "^2.8.2"
|
|
typing-extensions = "^4.8.0"
|
|
|
|
[tool.poetry.group.dev.dependencies]
|
|
pytest = "^7.4.3"
|
|
pytest-asyncio = "^0.21.1"
|
|
pytest-cov = "^4.1.0"
|
|
black = "^23.11.0"
|
|
isort = "^5.12.0"
|
|
flake8 = "^6.1.0"
|
|
mypy = "^1.7.1"
|
|
pre-commit = "^3.5.0"
|
|
bandit = "^1.7.5"
|
|
safety = "^2.3.5"
|
|
|
|
[tool.poetry.group.test.dependencies]
|
|
pytest-xdist = "^3.4.0"
|
|
pytest-mock = "^3.12.0"
|
|
pytest-benchmark = "^4.0.0"
|
|
hypothesis = "^6.92.1"
|
|
factory-boy = "^3.3.0"
|
|
faker = "^20.1.0"
|
|
|
|
[build-system]
|
|
requires = ["poetry-core"]
|
|
build-backend = "poetry.core.masonry.api"
|
|
|
|
[tool.black]
|
|
line-length = 88
|
|
target-version = ['py311']
|
|
include = '\.pyi?$'
|
|
extend-exclude = '''
|
|
/(
|
|
# directories
|
|
\.eggs
|
|
| \.git
|
|
| \.hg
|
|
| \.mypy_cache
|
|
| \.tox
|
|
| \.venv
|
|
| build
|
|
| dist
|
|
)/
|
|
'''
|
|
|
|
[tool.isort]
|
|
profile = "black"
|
|
multi_line_output = 3
|
|
line_length = 88
|
|
known_first_party = ["app"]
|
|
|
|
[tool.mypy]
|
|
python_version = "3.11"
|
|
warn_return_any = true
|
|
warn_unused_configs = true
|
|
disallow_untyped_defs = true
|
|
disallow_incomplete_defs = true
|
|
check_untyped_defs = true
|
|
disallow_untyped_decorators = true
|
|
no_implicit_optional = true
|
|
warn_redundant_casts = true
|
|
warn_unused_ignores = true
|
|
warn_no_return = true
|
|
warn_unreachable = true
|
|
strict_equality = true
|
|
|
|
[[tool.mypy.overrides]]
|
|
module = [
|
|
"magic.*",
|
|
"toncli.*",
|
|
"ton.*",
|
|
]
|
|
ignore_missing_imports = true
|
|
|
|
[tool.pytest.ini_options]
|
|
minversion = "7.0"
|
|
addopts = "-ra -q --strict-markers --strict-config"
|
|
testpaths = ["tests"]
|
|
asyncio_mode = "auto"
|
|
markers = [
|
|
"slow: marks tests as slow (deselect with '-m \"not slow\"')",
|
|
"integration: marks tests as integration tests",
|
|
"unit: marks tests as unit tests",
|
|
"api: marks tests as API tests",
|
|
"database: marks tests as database tests",
|
|
"redis: marks tests as redis tests",
|
|
]
|
|
|
|
[tool.coverage.run]
|
|
source = ["app"]
|
|
omit = [
|
|
"*/tests/*",
|
|
"*/venv/*",
|
|
"*/.venv/*",
|
|
]
|
|
|
|
[tool.coverage.report]
|
|
exclude_lines = [
|
|
"pragma: no cover",
|
|
"def __repr__",
|
|
"if self.debug:",
|
|
"if settings.DEBUG",
|
|
"raise AssertionError",
|
|
"raise NotImplementedError",
|
|
"if 0:",
|
|
"if __name__ == .__main__.:",
|
|
"class .*\bProtocol\):",
|
|
"@(abc\.)?abstractmethod",
|
|
]
|
|
|
|
[tool.bandit]
|
|
exclude_dirs = ["tests", "venv", ".venv"]
|
|
skips = ["B101", "B601"]
|
|
|
|
[tool.bandit.assert_used]
|
|
skips = ["*_test.py", "*/test_*.py"] |