mstache
Mustache for Python.
Documentation: mstache.readthedocs.io
License
Installation
pip install mstache
Usage
Python:
import mstache
print(mstache.render('Hello {{v}}', {'v': 'World!'}))
# Hello World!
Command line:
$ mstache -j data.json -o output.html template.mustache
Highlights
- The fastest pure-python Mustache implementation to this date.
- High mustache.js compatibility.
- Fully spec compliant up to Mustache v1.4.2, including lambda extension (opt-in).
- Support for chevron-style lambdas (opt-out)
- Command line interface.
- Small codebase, efficiently rendering to
strorbytes, buffered or stream. - Fully customizable behavior for caching, property getter, partial resolver, stringification, escaping, chevron lambda render and mustache block line trimming.
- Support for binary templates (
bytesandkeep_linesoption). - No dynamic code generation, both jit and transpiler friendly.
Considerations
For inter-compatibility with JavaScript (especially mustache.js,
to enable client-side rendering the same templates), mstache must behave
somewhat atypically for a Python template engine:
- Mustache blocks stick to JavaScript truthyness:
- Empty mappings (such as
dict) are unconditionally truthy. NaN/-NaNare falsy.
- Empty mappings (such as
- Mustache blocks do not iterate mappings nor strings.
- Sized collections, excluding mappings, will expose a virtual
lengthproperty, customizable viagetterparameter. - Mapping keys containing dot (
.) or whitespace () are unreachable (common property limitation), customizable viagetterparameter. - Sequence elements are accessible by positive index in the same way mapping
integer-keyed items are also accessible when no string key conflicts, as
properties (JavaScript
Objectemulation), customizable viagetterparameter.
An special consideration about the Mustache spec: mstache currently passes most mustache spec tests (plus optional lambdas) but one to ensure mustache.js compatibility.
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:
$ mstache -j data.json -o output.html 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 mstache 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mstache-0.3.0.tar.gz | 18.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mstache-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 32.4 kB
Release files / mstache-0.3.0.tar.gz
| Download URL | mstache-0.3.0.tar.gz |
|---|---|
| Size | 18.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1d72368d1cd46a3721f7f7bbe18aa602d19d063ca0d63b164c1ab75c8c410e52
|
|
BLAKE2b-256 checksum How to use checksums |
6c3aa0d22da35675d328ff45c29b35bb0e90b0ea3ff72f7cd7e679e3d383eb6a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.12.2
|
Release files / mstache-0.3.0-py3-none-any.whl
| Download URL | mstache-0.3.0-py3-none-any.whl |
|---|---|
| Size | 14.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
17a53df221fe7cab18bf2250db4ed003db5f5e06d84cf41b1c5caeea6da50cf9
|
|
BLAKE2b-256 checksum How to use checksums |
6db03742108cf5a2e24edab4e0ac24db9a3858803497e2385270f78a7ed3c525
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.12.2
|