[tool.poetry] name = "ruwiki-schoolnotes" version = "1.0.0" description = "Конвейер для упрощения статей RuWiki с помощью LLM" authors = ["Leon K. "] readme = "README.md" packages = [{include = "src"}] [tool.poetry.dependencies] python = "^3.10" anyio = "^4.2.0" aiohttp = "^3.9.0" aiosqlite = "^0.19.0" sqlmodel = "^0.0.14" openai = "^1.13.0" tiktoken = "^0.5.2" mwclient = "^0.10.1" pydantic = "^2.5.0" pydantic-settings = "^2.1.0" structlog = "^23.2.0" tenacity = "^8.2.3" click = "^8.1.7" [tool.poetry.group.dev.dependencies] black = "^23.12.0" ruff = "^0.1.8" mypy = "^1.8.0" pytest = "^7.4.3" pytest-asyncio = "^0.21.1" pytest-cov = "^4.1.0" pytest-vcr = "^1.0.2" bandit = "^1.7.5" pip-audit = "^2.6.2" [tool.poetry.scripts] schoolnotes = "src.cli:main" [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" [tool.black] line-length = 100 target-version = ['py310'] [tool.ruff] target-version = "py310" line-length = 100 select = ["ALL"] ignore = [ "D100", "D101", "D102", "D103", "D104", "D105", "D106", "D107", # missing docstrings "ANN101", "ANN102", # missing type annotation for self/cls "COM812", "ISC001", # incompatible with black ] [tool.ruff.per-file-ignores] "tests/*" = ["S101", "PLR2004", "ANN"] # allow assert, magic values, no annotations [tool.mypy] python_version = "3.10" strict = true warn_return_any = true warn_unused_configs = true disallow_untyped_defs = true disallow_incomplete_defs = true check_untyped_defs = true disallow_untyped_decorators = true [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"] python_files = ["test_*.py"] python_classes = ["Test*"] python_functions = ["test_*"] addopts = "--cov=src --cov-report=html --cov-report=term-missing --cov-fail-under=80" [tool.coverage.run] source = ["src"] omit = ["tests/*"] [tool.bandit] exclude_dirs = ["tests"] skips = ["B101"]