[build-system] requires = ["setuptools"] [project] name = "jinjax" version = "0.55" description = "Replace your HTML templates with Python server-Side components" authors = [ {name = "Juan Pablo Scaletti", email = "juanpablo@jpscaletti.com"}, ] license = { "file" = "MIT-LICENSE" } readme = "README.md" classifiers = [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Intended Audience :: Developers", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Software Development :: User Interfaces", "Topic :: Text Processing :: Markup :: HTML", "Typing :: Typed", ] requires-python = ">=3.11,<4" dependencies = [ "jinja2 >= 3.0", "markupsafe >= 2.0", ] [project.optional-dependencies] whitenoise = ["whitenoise"] [project.urls] homepage = "https://jinjax.scaletti.dev/" repository = "https://github.com/jpsca/jinjax" documentation = "https://jinjax.scaletti.dev/guides/" [dependency-groups] dev = [ "ipdb >= 0.13", "pyright >= 1.1", "pre-commit", "ruff >= 0.2.0", "tox-uv", ] test = [ "pytest >= 7.2", "pytest-cov", "ruff > 0.3", "whitenoise >= 5.3", ] [tool.setuptools.packages.find] where = ["src"] [tool.coverage.run] branch = true [tool.coverage.report] exclude_lines = [ "pragma: no cover", "TYPE_CHECKING", "def __repr__", "def __str__", "raise AssertionError", "raise NotImplementedError", "if __name__ == .__main__.:" ] [tool.coverage.html] directory = "covreport" exclude_lines = [ "pragma: no cover", "TYPE_CHECKING", "def __repr__", "def __str__", "raise AssertionError", "raise NotImplementedError", "if __name__ == .__main__.:" ] [tool.pyright] include = ["src"] exclude = [ "**/node_modules", "**/__pycache__", "**/tests", ] reportPrivateImportUsage = false reportWildcardImportFromLibrary = false [tool.pytest.ini_options] addopts = "--doctest-modules" [tool.tox] legacy_tox_ini = """ [tox] env_list = 3.11 3.12 3.13 3.14 [testenv] runner = uv-venv-lock-runner dependency_groups = dev test extras = whitenoise commands = pytest -x src/jinjax tests """ [tool.ruff] line-length = 90 indent-width = 4 target-version = "py311" exclude = [ ".*", "_build", "build", "covreport", "dist", "benchmark", ] include = ["*.py"] [tool.ruff.format] # Like Black, use double quotes for strings. quote-style = "double" # Like Black, indent with spaces, rather than tabs. indent-style = "space" # Like Black, respect magic trailing commas. skip-magic-trailing-comma = false # Like Black, automatically detect the appropriate line ending. line-ending = "auto" # Enable auto-formatting of code examples in docstrings. Markdown, # reStructuredText code/literal blocks and doctests are all supported. # # This is currently disabled by default, but it is planned for this # to be opt-out in the future. docstring-code-format = false # Set the line length limit used when formatting code snippets in # docstrings. # # This only has an effect when the `docstring-code-format` setting is # enabled. docstring-code-line-length = "dynamic" [tool.ruff.lint] fixable = ["ALL"] ignore = [ # x is too complex "C901", # whitespace before ':' "E203", "E501", # x defined from star imports "F405", # line break before binary operator "W505", "W605", ] select = [ # bugbear "B", # mccabe"", comprehensions, commas "C", # pycodestyle errors "E", # pyflakes "F", # logging format "G", # imports "I", # quotes "Q", # pycodestyle warnings "W", ] [tool.ruff.lint.isort] known-first-party = ["jinjax"] known-local-folder = ["src/jinjax"] # Use two line after imports. lines-after-imports = 2