Skip to main content

jinja2utils

Useful utils for jinja2

Install

pip install jinja2utils

t_factory

t_factory is a small tool which helps prefixed templates easily.

See examples below.

Example:

  • ./templates/en/home/welcome
Welcome, {{username}}!
  • ./templates/en/home/goodbye
Welcome, {{username}}!
  • ./templates/ru/home/welcome
Welcome, {{username}}!
  • ./templates/ru/home/goodbye
Goodbye, {{username}}!
  • ./main.py
from jinja2 import Environment, PrefixLoader, FileSystemLoader
from jinja2utils import t_factory

loader = PrefixLoader({
    'en': FileSystemLoader('./templates/en'),
    'ru': FileSystemLoader('./templates/ru'),
})

jinja = Environment(loader=loader)
get_t = t_factory(jinja)


def print_templates(t, username):
    rendered1 = t('home/welcome', username=username)
    print(rendered1)

    rendered2 = t('home/goodbye', username=username)
    print(rendered2)


print_templates(get_t('en'), 'John Doe')
# Expected output:
# Welcome, John Doe!
# Goodbye, John Doe!

print_templates(get_t('ru'), 'Иван')
# Expected output:
# Привет, Иван!
# Пока, Иван!

plural

plural is jinja2 filter function for easy text pluralization.

Example:

  • ./templates/info/users
System have {{users}} active {{users|plural('en','user','users')}}.
# main.py
from jinja2 import Environment, FileSystemLoader
from jinja2utils import plural

jinja = Environment(loader=FileSystemLoader('./templates'))
jinja.filters['plural'] = plural

template1 = jinja.get_template('info/users')
rendered1 = template1.render(users=1)
print(rendered1)  # System have 1 active user.
rendered2 = template1.render(users=23)
print(rendered2)  # System have 23 active users.

elapsed and remaining

Calculates and formats elapsed time to string like this: 25d 4h 3m 35s. Can be used as jinja2 filter.

Example:

  • ./templates/info
System uptime: {{started|elapsed(show_seconds=True)}}.
  • ./templates/newyear
System uptime: {{started|elapsed(show_seconds=True)}}.
# main.py
from jinja2 import Environment, FileSystemLoader
from jinja2utils import elapsed, remaining
import datetime

jinja = Environment(loader=FileSystemLoader('./templates'))
jinja.filters['elapsed'] = elapsed
jinja.filters['remaining'] = remaining

started = datetime.datetime.now()
newyear = datetime.datetime(2025, 1, 1, 0, 0, 0)

username = 'John Doe'
template1 = jinja.get_template('info/uptime')
rendered1 = template1.render(started=started)
print(rendered1)  # System uptime: 25d 4h 3m 35s.

template2 = jinja.get_template('info/newyear')
rendered2 = template2.render(newyear=newyear)
print(rendered2)  # To next year remaining 295d 10h 13m 10s!

uchar

Simple jinja2 function to insert unicode characters by unicode names. Very useful for inserting emoji.

Example:

  • ./templates/info/users
Welcome, {{username}} {{UN('THUMBS UP SIGN')}}!
# main.py
from jinja2 import Environment, FileSystemLoader
from jinja2utils import uchar

jinja = Environment(loader=FileSystemLoader('./templates'))
jinja.globals['UN'] = uchar

template1 = jinja.get_template('info/users')
rendered1 = template1.render(username='John Doe')
print(rendered1)  # Welcome, John Doe 👍!

Metadata

Release files for jinja2utils 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jinja2utils 0.1.1
File Size Uploaded
jinja2utils-0.1.1.tar.gz 6.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jinja2utils 0.1.1
File Interpreter ABI Platform
jinja2utils-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 13.2 kB

Release files / jinja2utils-0.1.1.tar.gz

Download URL jinja2utils-0.1.1.tar.gz
Size 6.1 kB
Tags Source
SHA-256 checksum
How to use checksums
6ef8454b35761585986dbc6255781abb9988296abda8cbd288e601d08cda958a
BLAKE2b-256 checksum
How to use checksums
a784d6c404bad6765f313d103d387694fac5e983c35c4362351a624878bdadb1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via pdm/2.12.4 CPython/3.12.2

Release files / jinja2utils-0.1.1-py3-none-any.whl

Download URL jinja2utils-0.1.1-py3-none-any.whl
Size 7.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9fad0e7394bc936bb0f0dfb206f428f7762393dd382873ac608633db24c0b9b0
BLAKE2b-256 checksum
How to use checksums
790f4b667a62749e829872d066a6e7e083b12bb673d41a9cf0c082e936077737
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via pdm/2.12.4 CPython/3.12.2

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page