Skip to main content

Jinja2 utilities, loaders & fsspec integration.

Project description

jinjarope

JinjaRope

PyPI License Package status Daily downloads Weekly downloads Monthly downloads Distribution format Wheel availability Python version Implementation Releases Github Contributors Github Discussions Github Forks Github Issues Github Issues Github Watchers Github Stars Github Repository size Github last commit Github release date Github language count Github commits this week Github commits this month Github commits this year Package status Code style: black PyUp

Read the documentation!

How to install

pip

The latest released version is available at the Python package index.

pip install jinjarope

With CLI:

pip install jinjarope[cli]

Quick guide

Jinjarope contains a range of Jinja2 loaders (including fsspec-based ones) as well as a jinja2.Environment subclass with added functionality.

For debugging purposes, an FsSpec filesystem implementation for jinja2 loaders is also included.

FsSpecFileSystemLoader

This loader can be used like a FileSystemLoader, but also works on any fsspec-supported remote path. Using the dir:: prefix, any folder can be set as root.

# protocol path
loader = jinjarope.FsSpecFileSystemLoader("dir::github://phil65:jinjarope@main/tests/testresources")
env = jinjarope.Environment(loader=loader)
env.get_template("testfile.jinja").render()

# protocol and storage options
loader = jinjarope.FsSpecFileSystemLoader("github", org="phil65", repo="jinjarope")
env = jinjarope.Environment(loader=loader)
env.get_template("README.md").render()

# fsspec filesystem
fs = fsspec.filesystem("github", org="phil65", repo="jinjarope")
loader = jinjarope.FsSpecFileSystemLoader(fs)
env = jinjarope.Environment(loader=loader)
env.get_template("README.md").render()

FsSpecProtocolPathLoader

This loader accepts any FsSpec protocol path to be used directly. A complete protocol URL to the template file is required.

loader = jinjarope.FsSpecProtocolPathLoader()
env = jinjarope.Environment(loader=loader)
env.get_template("github://phil65:jinjarope@main/tests/testresources/testfile.jinja").render()

NestedDictLoader

[example]
template = "{{ something }}"
content = tomllib.load(toml_file)
loader = jinjarope.NestedDictLoader(content)
env = jinjarope.Environment(loader=loader)
env.get_template("example/template")

General loader information

jinjarope also contains subclasses for all default jinja2 loaders. These loaders have implementations for some magic methods (__eq__, __hash__, __repr__, , __getitem__).

loader = jinjarope.FileSystemLoader(...)
template_source = loader["path/to/template.jinja"]

The loaders can also get ORed to return a ChoiceLoader.

choice_loader = jinjarope.FileSystemLoader(..) | jinjarope.PackageLoader(...)

Prefix loaders can get created using pathlib-style string concatenations

prefix_loader = "path_prefix" / jinjarope.FileSystemLoader(...)

Additional filters / tests

Check out the documentation for a list of built-in filters and tests!

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

jinjarope-1.0.7.tar.gz (2.7 MB view details)

Uploaded Source

Built Distribution

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

jinjarope-1.0.7-py3-none-any.whl (2.7 MB view details)

Uploaded Python 3

File details

Details for the file jinjarope-1.0.7.tar.gz.

File metadata

  • Download URL: jinjarope-1.0.7.tar.gz
  • Upload date:
  • Size: 2.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for jinjarope-1.0.7.tar.gz
Algorithm Hash digest
SHA256 876db5c9b087f8275f9a6ae2686ae12d57999d320500b8ddcbc9ecbf26e3c42b
MD5 9963e0b86ea5598bb3d617f0f167467e
BLAKE2b-256 90146caaf04cefcf97fff8db5de10e5fc1f6f7af7f20acdb441f089a5dbe130c

See more details on using hashes here.

File details

Details for the file jinjarope-1.0.7-py3-none-any.whl.

File metadata

  • Download URL: jinjarope-1.0.7-py3-none-any.whl
  • Upload date:
  • Size: 2.7 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for jinjarope-1.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 c6a46558281f74fa2bde31bce368663100962ec0fa2bf68c9faf430030dea298
MD5 a43fcbe9ad97e870c1ce0f3df37575ac
BLAKE2b-256 17da065560563ffa16799e488f1fddfca96834a905b47a3201a0071b33fac43f

See more details on using hashes here.

Supported by

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