Skip to main content
Yanked

This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
Consider using release 0.1.6 instead.
Reason given by maintainers: alpha

ustache

Mustache for Python.

Documentation: ustache.readthedocs.io

Usage

import ustache

print(ustache.render('Hello {{v}}', {'v': 'World!'}))
# Hello World!

Command line:

$ ustache -j data.json -o output.html template.mustache

Highlights

  • Command line interface.
  • Spec compliant, but also highly compatible with Mustache.js.
  • Fast and small codebase, efficiently rendering to str or bytes, supporting streaming.
  • Customizable (property getter, partial resolver, and stringify, escape and lambda render functions).

Considerations

For inter-compatibility with JavaScript (especially Mustache.js, enabling client-side rendering with the same templates), ustache exposes some atypical behavior:

  • Mustache blocks stick to JavaScript falseness (__bool__ is not honored): None, False, 0, nan, and empty sequences (including strings) are taken as falsy, while everything else (including empty mappings) will be considered truthy (Mustache.js Boolean and empty Array handling).
  • Mustache blocks receiving any iterable other than mappings and strings will result on a loop (Mustache.js Array handling).
  • Sequences expose a virtual length property (JavaScript Array.length emulation). Customizable via getter parameter.
  • Mapping keys containing dot (.) or whitespace ( ) are unreachable, (Mustache.js property name limitation). Customizable via getter parameter.
  • Sequence elements are accessible by positive index in the same way mapping integer-keyed items are also accessible if no string key conflicts, as properties (JavaScript Object emulation). Customizable via getter parameter.

Syntax

Check out the mustache(5) manual.

For quick reference, here is a quick overview of the Mustache syntax.

Template (template.mustache):

{{!comment}}
<ul>
{{#object}}<li>{{property}}</li>{{/object}}
{{^object}}<li>As <b>object</b> is truthy, this won't be shown</li>{{/object}}
{{^null}}<li><b>null</b> is falsy</li>{{/null}}
{{#array}}<li>{{property}}</li>
{{/array}}
{{^array}}<li>Array isn't empty, this won't be shown.</li>{{/array}}
{{#empty_array}}<li>Empty Array, this won't be shown</li>{{/empty_array}}
{{^empty_array}}<li>empty_array is empty</li>{{/empty_array}}
{{&unescaped_html}}
</ul>

Data (data.json):

{
  "object": {
    "property": "Object property value"
  },
  "null": null,
  "array": [
    {"property": "Array item1 property"},
    {"property": "Array item2 property"},
    {"property": "Array item3 property"}
  ],
  "empty_array": [],
  "unescaped_html": "<li>this is unescaped html</li>"
}

Command:

$ python -m ustache -j data.json -o template.mustache

Output:

<ul>
<li>Object property value</li>
<li><b>null</b> is falsy</li>
<li>Array item1 property</li>
<li>Array item2 property</li>
<li>Array item3 property</li>
<li>empty_array is empty</li>
<li>this is unescaped html</li>
</ul>

Metadata

Release files for ustache 0.1.2a20210129

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

Source distribution (sdist)

Source distribution for ustache 0.1.2a20210129
File Size Uploaded
ustache-0.1.2a20210129.tar.gz 10.2 kB Details

Built distribution (wheel)

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

Total release size: 20.6 kB

Release files / ustache-0.1.2a20210129.tar.gz

Download URL ustache-0.1.2a20210129.tar.gz
Size 10.2 kB
Tags Source
SHA-256 checksum
How to use checksums
505a6923025c0ec912c34b34ba3f58870a3e18b2135074e91cca602290a1cde9
BLAKE2b-256 checksum
How to use checksums
b33f3b2d61e8a6ed630a47c7d92563643306b6fa94e0816b3cb86270353576af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.9.1

Release files / ustache-0.1.2a20210129-py3-none-any.whl

Download URL ustache-0.1.2a20210129-py3-none-any.whl
Size 10.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
668deb6e29f1960ce24c0837dfa1a3b25913158909d7ae05778fb72c45450337
BLAKE2b-256 checksum
How to use checksums
2361a7f53d2d272383c9233539f2b36ca2371c62f4fd97460647c673cfd2ffb1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.9.1

Release history Release notifications | RSS feed

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

This release

0.1.2a20210129 This release

2 release files

0.1.1

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