Files
TG_autoposter/pyproject.toml
2025-12-18 05:55:32 +09:00

154 lines
3.4 KiB
TOML

[build-system]
requires = ["setuptools>=68.0"]
build-backend = "setuptools.build_meta"
[project]
name = "tg-autoposter"
version = "1.0.0"
description = "Telegram bot for group message broadcasting with scheduling"
readme = "README.md"
license = {text = "MIT"}
authors = [
{name = "Your Name", email = "your.email@example.com"}
]
keywords = ["telegram", "bot", "broadcasting", "scheduler"]
classifiers = [
"Development Status :: 4 - Beta",
"Environment :: Console",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Natural Language :: English",
"Natural Language :: Russian",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Communications :: Chat",
"Topic :: Internet",
]
requires-python = ">=3.11"
dependencies = [
"pyrogram==1.4.16",
"telethon==1.29.3",
"sqlalchemy[asyncio]==2.0.23",
"asyncpg==0.29.0",
"psycopg2-binary==2.9.9",
"redis==5.0.1",
"celery==5.3.4",
"croniter==2.0.1",
"APScheduler==3.10.4",
"pydantic==2.5.2",
"aiofiles==23.2.1",
"python-dateutil==2.8.2",
"python-dotenv==1.0.0",
]
[project.optional-dependencies]
dev = [
"pytest==7.4.3",
"pytest-cov==4.1.0",
"pytest-asyncio==0.21.1",
"black==23.12.1",
"isort==5.13.2",
"flake8==6.1.0",
"mypy==1.7.1",
"ipython==8.18.1",
]
[project.urls]
Homepage = "https://github.com/yourusername/TG_autoposter"
Repository = "https://github.com/yourusername/TG_autoposter.git"
Documentation = "https://github.com/yourusername/TG_autoposter/blob/main/README.md"
Issues = "https://github.com/yourusername/TG_autoposter/issues"
[tool.setuptools]
packages = ["app"]
[tool.black]
line-length = 100
target-version = ['py311']
include = '\.pyi?$'
extend-exclude = '''
/(
# directories
\.eggs
| \.git
| \.hg
| \.mypy_cache
| \.tox
| \.venv
| build
| dist
| venv
)/
'''
[tool.isort]
profile = "black"
line_length = 100
multi_line_mode = 3
include_trailing_comma = true
force_grid_wrap = 0
use_parentheses = true
ensure_newline_before_comments = true
skip_glob = ["*/migrations/*", "*/venv/*"]
[tool.mypy]
python_version = "3.11"
warn_return_any = true
warn_unused_configs = true
ignore_missing_imports = true
disallow_untyped_defs = false
disallow_incomplete_defs = false
check_untyped_defs = true
[tool.pytest.ini_options]
testpaths = ["tests"]
addopts = "-v --cov=app --cov-report=html --cov-report=term-missing"
asyncio_mode = "auto"
python_files = "test_*.py"
python_classes = "Test*"
python_functions = "test_*"
norecursedirs = [".git", ".tox", "dist", "build", "*.egg"]
[tool.coverage.run]
source = ["app"]
omit = [
"*/migrations/*",
"*/venv/*",
"*/tests/*",
"*/__main__.py",
]
[tool.coverage.report]
exclude_lines = [
"pragma: no cover",
"def __repr__",
"if __name__ == .__main__.:",
"raise AssertionError",
"raise NotImplementedError",
"if TYPE_CHECKING:",
"if typing.TYPE_CHECKING:",
"@abstractmethod",
"@abc.abstractmethod",
]
[tool.bandit]
exclude_dirs = ["tests", "venv"]
skips = ["B101", "B601"]
[tool.pylint.messages_control]
disable = [
"C0111", # missing-docstring
"C0103", # invalid-name
"R0913", # too-many-arguments
"R0914", # too-many-locals
]
[tool.pylint.format]
max-line-length = 100
[tool.pylint.design]
max-attributes = 8