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.0
    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.0.tar.gz (26.2 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.0-py3-none-any.whl (34.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: typja-0.1.0.tar.gz
  • Upload date:
  • Size: 26.2 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.0.tar.gz
Algorithm Hash digest
SHA256 05f746973109fe3a78bd3b4ecd288200615a9da498e0a8adee1fff8677f983b5
MD5 53beb915c5c007bc1fe6a7b94f00820c
BLAKE2b-256 71b1479c98411d39212b3cb2bbe18cbf360eeb9d5384da12bd2c38c04a0fcb12

See more details on using hashes here.

Provenance

The following attestation bundles were made for typja-0.1.0.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.0-py3-none-any.whl.

File metadata

  • Download URL: typja-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 34.9 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1af9cc4088b2fae792ecda5f40d86fac045fd03aa59498981e99c4dec527bcc1
MD5 1e33430094fb62137f98f2b649e6fe9f
BLAKE2b-256 abffb29ba51164a49469a4ce5a3a5c6d2109e6b99fe118c43ad2547a012ff0d4

See more details on using hashes here.

Provenance

The following attestation bundles were made for typja-0.1.0-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