Skip to main content

Jinja2 environment supporting Python comprehensions

Project description

jinja-comprehensions

Jinja2 environments providing support for list/dict comprehensions, set literals/comprehensions, generator expressions, and list/dict spreading.

Set literals

{{ {'set', 'set', 'literal', 'literal'} }}
{'literal', 'set'}

Comprehensions

list: {{ [n // 2 for n in range(10)] }}
set:  {{ {n // 2 for n in range(10)} }}
dict: {{ {n: n // 2 for n in range(10)} }}
list: [0, 0, 1, 1, 2, 2, 3, 3, 4, 4]
set:  {0, 1, 2, 3, 4}
dict: {0: 0, 1: 0, 2: 1, 3: 1, 4: 2, 5: 2, 6: 3, 7: 3, 8: 4, 9: 4}

Generator expressions

{{ (n // 2 for n in range(10)) | join(', ') }}
0, 0, 1, 1, 2, 2, 3, 3, 4, 4

List/dict spreading

{% set stuff = {'b': 98, 'c': 99, 'd': 100} -%}
{{ {'a': 97, **stuff, 'e': 101} }}
{{ [97, *stuff.values(), 101] }}
{'a': 97, 'b': 98, 'c': 99, 'd': 100, 'e': 101}
[97, 98, 99, 100, 101]

Environments are provided for both sync and async contexts, as well as native variants, too.

Quickstart

pip install jinja-comprehensions

And use a ComprehensionEnvironment (or NativeComprehensionEnvironment) instead of the vanilla jinja2.Environment to compile your templates:

# For rendering to strings
from jinja_comprehensions import ComprehensionEnvironment
jinja_env = ComprehensionEnvironment()

# For rendering to native types
from jinja_comprehensions import NativeComprehensionEnvironment
jinja_env = NativeComprehensionEnvironment()

# For rendering to native types with async enabled
#  (This env avoids some pitfalls with vanilla Jinja2 native envs and Awaitable return values)
from jinja_comprehensions import NoLiteralEvalComprehensionNativeEnvironment
jinja_env = NoLiteralEvalComprehensionNativeEnvironment()

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

jinja_comprehensions-0.1.1.tar.gz (12.5 kB view details)

Uploaded Source

Built Distribution

jinja_comprehensions-0.1.1-py3-none-any.whl (11.3 kB view details)

Uploaded Python 3

File details

Details for the file jinja_comprehensions-0.1.1.tar.gz.

File metadata

  • Download URL: jinja_comprehensions-0.1.1.tar.gz
  • Upload date:
  • Size: 12.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.11.4 Linux/5.13.0-52-generic

File hashes

Hashes for jinja_comprehensions-0.1.1.tar.gz
Algorithm Hash digest
SHA256 7ac83c7f6a05d672ba0e6fe82739316635ca5a0198b1f00f85c026a92c480cdc
MD5 428f079039d912e196696d869ce45eec
BLAKE2b-256 080c9428d39d2c336d7dc78dbefece48189f0b6a38611acb180d87587fb738e6

See more details on using hashes here.

File details

Details for the file jinja_comprehensions-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for jinja_comprehensions-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 95609794d35ccbbfe8b60c8f687ca38b8b12b0899e69fb059da63022b2160ef4
MD5 f6e82bbb63c2a4aac5b7a962cdff8204
BLAKE2b-256 8cd6282bcdf4acc2eed40245da036df4ddd09f67f4e26942553bdfcce4970113

See more details on using hashes here.

Supported by

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