[project] name = "resume" version = "0.1.0" description = "" authors = [ {name = " Pavel Sobolev",email = "p.sobolev@dineflow.app"} ] readme = "README.md" requires-python = ">=3.13,<4.0" dependencies = [ "django (>=5.2.8,<6.0.0)", "docxtpl (>=0.20.1,<0.21.0)", "weasyprint (>=66.0,<67.0)", "python-dotenv (>=1.0.1,<2.0.0)", "rich (>=14.2.0,<15.0.0)" ] [build-system] requires = ["poetry-core>=2.0.0,<3.0.0"] build-backend = "poetry.core.masonry.api" [tool.poetry.group.dev.dependencies] ruff = "^0.14.4" mypy = "^1.18.2" django-stubs = "^5.2.7" djangorestframework-stubs = "^3.16.5" pandas-stubs = "^2.3.2.250926" vulture = "^2.14" pre-commit = "^4.4.0" bandit = "^1.7.9" pip-audit = "^2.7.3" pytest = "^9.0.1" pytest-django = "^4.11.1" [tool.ruff] line-length = 100 target-version = "py311" [tool.ruff.lint] select = ["E","F","W","I","UP","D","B","SIM","C90"] ignore = ["D203","D213"] # под Google-докстринги обычно отключают эти два [tool.ruff.lint.pydocstyle] convention = "google" [tool.ruff.format] preview = true [tool.mypy] python_version = "3.11" plugins = ["mypy_django_plugin.main"] disallow_untyped_defs = true disallow_incomplete_defs = true check_untyped_defs = true no_implicit_optional = true strict_equality = true warn_unused_ignores = true warn_redundant_casts = true warn_return_any = true exclude = ["migrations/"] ignore_missing_imports = false [tool.django-stubs] django_settings_module = "resume.settings" [tool.bandit] skips = ["B101"] # при необходимости, можно убрать exclude_dirs = [".venv", "venv", "build", "dist", ".tox", ".mypy_cache", ".ruff_cache", "node_modules"] [tool.pip-audit] require-hashes = false