[project] name = "telebrief" version = "0.1.0" description = "Automated Telegram Digest Generator powered by AI" readme = "README.md" requires-python = ">=3.14" dependencies = [ "aiohttp>=3.9.0", "aiosqlite>=0.22.1", "apscheduler>=3.10.0", "asyncpg>=0.31.0", "mcp>=2.0.0", "openai>=1.0.0", "python-dateutil>=2.8.0", "python-dotenv>=1.0.0", "python-telegram-bot>=20.0", "pyyaml>=6.0", "telethon>=1.34.0", "uvicorn>=0.30.0", ] [project.optional-dependencies] dev = [ "black==24.10.0", "flake8>=6.1.0", "flake8-bugbear>=23.7.0", "flake8-docstrings>=1.7.0", "flake8-import-order>=0.18.2", "isort>=5.12.0", "mypy>=1.5.0", "pre-commit>=3.3.0", "pylint>=2.17.0", "pytest>=7.4.0", "pytest-asyncio>=0.21.0", "pytest-cov>=4.1.0", "pytest-mock>=3.11.0", "pytest-timeout>=2.1.0", "types-python-dateutil>=2.8.0", "types-pyyaml>=6.0.0", "vulture>=2.7", ] [tool.black] line-length = 100 target-version = ['py313'] include = '\.pyi?$' exclude = ''' /( \.git | \.venv | venv | build | dist | \.pytest_cache | \.mypy_cache | sessions )/ ''' [tool.isort] profile = "black" line_length = 100 skip_gitignore = true known_first_party = ["src", "tests"] sections = ["FUTURE", "STDLIB", "THIRDPARTY", "FIRSTPARTY", "LOCALFOLDER"] [tool.mypy] python_version = "3.14" warn_return_any = true warn_unused_configs = true disallow_untyped_defs = false disallow_incomplete_defs = false check_untyped_defs = true no_implicit_optional = true warn_redundant_casts = true warn_unused_ignores = true warn_no_return = true follow_imports = "normal" [[tool.mypy.overrides]] module = [ "telethon.*", "telegram.*", "apscheduler.*", "asyncpg", "asyncpg.*", ] ignore_missing_imports = true [tool.pylint.messages_control] disable = [ "C0111", # missing-docstring "C0103", # invalid-name "R0913", # too-many-arguments "R0914", # too-many-locals "W0212", # protected-access (for tests) ] [tool.pylint.format] max-line-length = 100 [tool.coverage.run] source = ["src"] omit = [ "tests/*", "*/__init__.py", "*/main.py", ] [tool.coverage.report] exclude_lines = [ "pragma: no cover", "def __repr__", "raise AssertionError", "raise NotImplementedError", "if __name__ == .__main__.:", "if TYPE_CHECKING:", "class .*\\bProtocol\\):", "@(abc\\.)?abstractmethod", ] [build-system] requires = ["setuptools>=45", "wheel"] build-backend = "setuptools.build_meta"