[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