[project] name = "django-unicorn" version = "0.67.0" description = "A magical full-stack framework for Django." readme = "README.md" requires-python = ">=3.10" license = { text = "MIT" } authors = [ { name = "Adam Hill", email = "unicorn@adamghill.com" }, ] keywords = ["django", "python", "javascript", "fullstack"] classifiers = [ "Programming Language :: Python :: 3", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Framework :: Django", ] dependencies = [ "django>=2.2", # Deliberately loose on dependencies even though only newer Django versions are officially tested/supported "lxml", "orjson>=3.6.0", "shortuuid>=1.0.1", "cachetools>=4.1.1", "decorator>=4.4.2", ] [dependency-groups] dev = [ "pytest>=7", "django-stubs", "pytest-django", "django-mock-queries>=2.1.5", "pydantic>=1", "pywatchman", "django-redis>=4.12.1", "coverage[toml]", "pytest-cov", "pytest-benchmark", "ruff", "genbadge[all]>=1.1.1", "ty>=0.0.10", "pytest-playwright>=0.7.2", "pre-commit>=4.5.1", ] [project.optional-dependencies] minify = ["htmlmin"] docs = [ "Sphinx", "linkify-it-py", "myst-parser", "furo", "sphinx-copybutton", "sphinx-autobuild", "rst2pdf", "sphinx-autoapi", "sphinxext-opengraph", "toml", "sphinx-design", ] [project.urls] Homepage = "https://www.django-unicorn.com" Repository = "https://github.com/adamghill/django-unicorn/" Documentation = "https://www.django-unicorn.com/docs/" Funding = "https://github.com/sponsors/adamghill" [tool.ruff] src = ["src"] exclude = ["example", "**/migrations/*"] target-version = "py310" line-length = 120 [tool.ruff.lint] select = [ "A", "ARG", "B", "C", "DTZ", "E", "EM", "F", "FBT", "I", "ICN", "ISC", "N", "PLC", "PLE", "PLR", "PLW", "Q", "RUF", "S", "T", "TID", "UP", "W", "YTT", ] ignore = [ # Allow non-abstract empty methods in abstract base classes "B027", # Allow boolean positional values in function calls, like `dict.get(... True)` "FBT003", # Ignore checks for possible passwords "S105", "S106", "S107", # Ignore complexity "C901", "PLR0911", "PLR0912", "PLR0913", "PLR0915", # Ignore unused variables "F841", # Ignore exception strings "EM101", "EM102", ] unfixable = [ # Don't touch unused imports "F401", ] [tool.ruff.lint.pydocstyle] convention = "google" # Accepts: "google", "numpy", or "pep257". [tool.ruff.lint.isort] known-first-party = ["django_unicorn", "example"] [tool.ruff.lint.flake8-tidy-imports] ban-relative-imports = "all" [tool.ruff.lint.per-file-ignores] # Tests can use magic values, assertions, and relative imports "tests/**/*" = ["PLR2004", "S101", "TID252"] [tool.pytest] addopts = [ "--quiet", "--failed-first", "--reuse-db", "--nomigrations", "-p no:warnings", "-m (not slow and not integration and not playwright)", "--benchmark-skip", ] testpaths = [ "tests" ] markers = [ "slow: marks tests as slow", "integration: marks tests as integration", "playwright: marks tests as playwright", ] [tool.coverage.run] branch = true relative_files = true [build-system] requires = [ "hatchling", "hatch-vcs", ] build-backend = "hatchling.build" [tool.hatch.version] source = "vcs" [tool.hatch.build.targets.wheel] packages = ["src/django_unicorn"]