A stand-alone renderer for Jinja2 templates
Project description
hokora is a Jinja2 standalone template parser
You might be familiar with Jinja2 templates if you've worked
with Flask, Ansible, Salt or dbt. hokora
is a tool for rendering Jinja templates on the command line, or as part of a
bash pipeline.
README.md in this repository is itself generated by hokora, from the
README.md.in.
Usage
usage: hokora [-h] [--context CONTEXT] [--environ] [-C C] [--no-include-env]
[--no-include-cwd] [--no-include-template-dir]
[--include INCLUDE] [--autoescape | --no-autoescape]
[--strip-shebang | --no-strip-shebang]
[--clean-whitespace | --no-clean-whitespace | -w]
[--line-endings [LINE_ENDINGS]]
[--subprocesses | --no-subprocesses | -x]
[template]
Hokora: Standalone Jinja2 template renderer
positional arguments:
template path to template to render
options:
-h, --help show this help message and exit
--autoescape, --no-autoescape
whether to escape HTML entities in jinja expressions
--strip-shebang, --no-strip-shebang
remove the first line of the output if it is a bash
shebang
--clean-whitespace, --no-clean-whitespace, -w
Remove trailing whitespace from lines of the output
--line-endings [LINE_ENDINGS]
Normalize line endings of the output. Options
includeCRLF (windows), LF (unix, modern mac), CR
(classic mac).If passed without an argument, the
default for your platformwill be used
--subprocesses, --no-subprocesses, -x
Adds subprocess, shlex, and shutil to the template
context, and provides a "shell" filter which can be
used to make bash-style pipelines in jinja templates.
Jinja Context Variables:
--context, -c CONTEXT
Read the given file for context values to supply as
jinja variables. Use key=filename if you want to
namespace the data, like {{key.somevar}}. See
AVAILABLE CONTEXT FORMATS below for supported file
extensions.
--environ, -e Make environment variables available as jinja
variables
Template search paths:
-C C Change directories to this folder and interpret all
paths as relative to it.
--no-include-env Don't parse $JINJA_TEMPLATE_DIRS for include folders
--no-include-cwd Don't include the current working directory in the
search path
--no-include-template-dir
Don't include the template's folder in the search
path.
--include, -I INCLUDE
Add this folder to the template include path
ENVIRONMENT VARIABLES
$JINJA_TEMPLATE_DIRS
A :-separated list of additional template include paths, which
will be searched to handle {%extends %}, {%include %} and {%import %}
tags unless --no-include-env is passed at the command line.
$HOKORA_MODULES
Additional python modules (honoring $PYTHONPATH) to import at load time.
These can be used to extend the functionality of hokora if they contain
subclasses of DataFormat or HokoraFeature.
AVAILABLE CONTEXT FORMATS
json {{ ... | json }} *.json
python {{ ... | python }} *.py, *.pyc, *.pyd, *.so
pickle {{ ... | pickle }} *.pkl, *.pickle
config {{ ... | config }} *.ini, *.cnf
toml {{ ... | toml }} *.toml
yaml {{ ... | yaml }} *.yaml, *.yml
Installation
hokora requires Python >=3.10.
Standalone script via uv
If you're on a Unix-like operating system, the ./hokora
script in the root of this repo can just be copied into ~/.local/bin or some
appropriate place on your $PATH. uv will reach out to gitlab and grab the
latest version the first time you run it.
Local install via pipx
pipx install hokora
Local install via pip
python3 -m pip install hokora
Metadata
License
hokora is licensed under a BSD 3-Clause License, like Jinja itself.
hokora's icon is licensed under creative commons attribution share-alike 4.0 international with a hat tip to wikimedia user Immanuelle who made the original.
Name
Jinja itself says it's named for a Shinto
shrine because the word "template" sounds vaguely like the
word "temple." Well, two can play the Wikipedia game. A
Hokora is a miniature Shinto shrine, and hokora is a
miniature wrapper around Jinja.
Contributing
Issues and MRs are welcome.
-
The
mainbranch is kept stable. Tinker in topic branches. -
Don't edit
README.mddirectly; editREADME.md.in. -
Update version numbers as necessary. Follow semver
-
Make sure your code is sane:
ruff format ruff check mypy --check-untyped-defs .
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hokora-0.1.6.tar.gz.
File metadata
- Download URL: hokora-0.1.6.tar.gz
- Upload date:
- Size: 12.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e8e5d6643e82a01b99530f21f48031b4a32c85eca850942543a1f8db2e715830
|
|
| MD5 |
151d547d810e39b215f7f90c195976a4
|
|
| BLAKE2b-256 |
6fc475f46ac0a85e8766b5f3cd4d6eacad64e677be92a223e3f173a6ffc46f50
|
File details
Details for the file hokora-0.1.6-py3-none-any.whl.
File metadata
- Download URL: hokora-0.1.6-py3-none-any.whl
- Upload date:
- Size: 12.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c1b3efa5c48553e79e7b3f5748ae79b814c8240ab9b06c0ed14537db42a224f
|
|
| MD5 |
5a32803c1396ca4d6062764d7b3b0026
|
|
| BLAKE2b-256 |
bc5ffba6d05051bab325e96ae1503ac5abcc456f269790bf724aa30bef1d3e95
|