Skip to main content

Type checker for your Jinja2 templates

Project description

Typja

Python Version Build and Test Typja codecov License: MIT

An experimental tool to check Jinja templates for type errors using Python's type hints. It parses Jinja templates, extracts variable usage, and checks them against provided type information.

Features

  • Type Checking for Jinja2 Templates: Validate that variables in your Jinja2 templates match their declared types
  • Python Type Hints Integration: Leverage your existing Python type annotations to catch template errors early
  • Pre-commit Integration: Built-in pre-commit hook for automated checking
  • Flexible Configuration: Customize checking behavior with typja.toml
  • Rich Error Reports: Detailed error messages with code snippets and suggestions
  • Watch Mode: Monitor templates for changes and run checks automatically

Quick Start

Installation

pip install typja

Basic Usage

# Check all templates in current directory
typja check

# Run in watch mode
typja watch

# Initialize a new typja.toml configuration
typja init

Configuration

Create a typja.toml file in your project root with typja init or manually:

[project]
root = "."
paths = ["./models/**/*.py"]
fail_on_warning = false

[environment]
template_dirs = ["./templates"]
include_patterns = ["*.html", "*.jinja", "*.jinja2"]

[linting]
strict = false
prefer_pep604_unions = true
validate_imports = true
validate_variables = true

[errors]
verbosity = "normal"
show_snippets = true
show_hints = true
color = "auto"

Type Annotations in Templates

Use special Jinja2 comments to declare variable types:

{# typja:var user: User #}
{# typja:var items: list[str] #}
{# typja:var count: int #}

<h1>{{ user.name }}</h1>
<ul>
  {% for item in items %}
    <li>{{ item }}</li>
  {% endfor %}
</ul>

Examples

See the examples/fastapi/ directory for a complete FastAPI application with Jinja2 template type checking.

Pre-commit Integration

Add to your .pre-commit-config.yaml:

repos:
  - repo: https://github.com/Daniel-Brai/Typja
    rev: v0.1.3
    hooks:
      - id: typja-check
        # With args
        # args: ["--strict", "--fix"]

Documentation

Contributing

See CONTRIBUTING.md for development instructions.

License

See LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

typja-0.1.3.tar.gz (29.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

typja-0.1.3-py3-none-any.whl (38.8 kB view details)

Uploaded Python 3

File details

Details for the file typja-0.1.3.tar.gz.

File metadata

  • Download URL: typja-0.1.3.tar.gz
  • Upload date:
  • Size: 29.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for typja-0.1.3.tar.gz
Algorithm Hash digest
SHA256 b52418ac167f215e57b8d9d602d03c79453bca880a09e0def95a61eb8c198022
MD5 89e4c97671cd49de9eb9a6e403ff2ee2
BLAKE2b-256 b83cb4eb449166b99d1891b4e4f6b64764078d1781886ec0d132eb8bbf89efde

See more details on using hashes here.

Provenance

The following attestation bundles were made for typja-0.1.3.tar.gz:

Publisher: ci.yml on Daniel-Brai/Typja

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file typja-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: typja-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 38.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for typja-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 d330c1bd8a3feb9018b67cf4eb95ddb4be884ddae9e1ed92617de96a5d1cf3e4
MD5 943cffbe4880684a46f31bbfeb1617ef
BLAKE2b-256 094bd8fd4e914b32118e4172011b5253929cc8f1f4765a96dbeaf60c83dfc045

See more details on using hashes here.

Provenance

The following attestation bundles were made for typja-0.1.3-py3-none-any.whl:

Publisher: ci.yml on Daniel-Brai/Typja

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page