Skip to main content

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()

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

If you're not sure about the file name format, learn more about wheel file names.

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

  • Download URL: jinja_comprehensions-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 11.3 kB
  • Tags: Python 3
  • 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-py3-none-any.whl
Algorithm Hash digest
SHA256 95609794d35ccbbfe8b60c8f687ca38b8b12b0899e69fb059da63022b2160ef4
MD5 f6e82bbb63c2a4aac5b7a962cdff8204
BLAKE2b-256 8cd6282bcdf4acc2eed40245da036df4ddd09f67f4e26942553bdfcce4970113

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page