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)
| File | Size | Uploaded | |
|---|---|---|---|
| jinja2utils-0.1.1.tar.gz | 6.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|