Loading README.rst +2 −1 Original line number Diff line number Diff line Loading @@ -45,6 +45,8 @@ The following Jinja filters were added: - :code:`from_json`: Convert from json. - :code:`pprint`: Pretty print variable. - :code:`combine`: Combine 2 dictionaries. - :code:`jmespath`: Queries data using the `JMESPath <http://jmespath.org/>`_ query language. Example usage can be seen in :code:`tests.sh` and for specific filters in the docstrings in :code:`template/filters.py`. Loading Loading @@ -85,5 +87,4 @@ TODO - Release on tagged commits to PyPI in Travis CI (https://docs.travis-ci.com/user/deployment/pypi/ and https://docs.travis-ci.com/user/encryption-keys/). - Add JMESPath support. - Add TOML support? setup.py +1 −1 Original line number Diff line number Diff line Loading @@ -21,7 +21,7 @@ setup( ], keywords='config configuration jinja template environment', packages=find_packages(), install_requires=['Jinja2', 'PyYAML', 'six'], install_requires=['Jinja2', 'PyYAML', 'jmespath'], extras_require={ 'dev': ['tox'], }, entry_points={ Loading template/filters.py +24 −1 Original line number Diff line number Diff line #!/usr/bin/env python from __future__ import (absolute_import, division, print_function, unicode_literals) import six # noqa: F401 def to_yaml(value): Loading Loading @@ -45,6 +44,7 @@ def from_json(value): Returns native data structure from the given JSON string. Examples: >>> import six >>> from_json('[1, 2, 3]') [1, 2, 3] >>> from_json('"a"') == six.text_type('a') Loading Loading @@ -78,6 +78,7 @@ def pprint(value): Examples: >>> pprint(1) '1' >>> import six >>> output = pprint([{'first_name': 'John', 'last_name': 'Doe'}, {'first_name': 'Jane', 'last_name': 'Doe'}]) # noqa: E501 >>> if six.PY3: ... output == "[{'first_name': 'John', 'last_name': 'Doe'},\\n {'first_name': 'Jane', 'last_name': 'Doe'}]" Loading @@ -101,3 +102,25 @@ def combine(default, override): combined = default.copy() combined.update(override) return combined def jmespath(value, query): ''' Queries the data using the JMESPath query language. Examples: >>> import six >>> locations = [{'name': 'Seattle', 'state': 'WA'}, ... {"name": "New York", "state": "NY"}, ... {"name": "Bellevue", "state": "WA"}, ... {"name": "Olympia", "state": "WA"}] >>> query = "[?state == 'WA'].name | sort(@) | {WashingtonCities: join(', ', @)}" # noqa: E501 >>> WACities = jmespath(locations, query) >>> if six.PY2: ... WACities == {u'WashingtonCities': u'Bellevue, Olympia, Seattle'} ... elif six.PY3: ... WACities == {'WashingtonCities': 'Bellevue, Olympia, Seattle'} ... True ''' import jmespath return jmespath.search(query, value) tox.ini +2 −1 Original line number Diff line number Diff line [tox] envlist = py{2,3} envlist = py{2,3},docs [travis] python = Loading @@ -17,6 +17,7 @@ deps = check-manifest readme_renderer flake8 six commands = check-manifest --ignore tox.ini,tests* flake8 . Loading Loading
README.rst +2 −1 Original line number Diff line number Diff line Loading @@ -45,6 +45,8 @@ The following Jinja filters were added: - :code:`from_json`: Convert from json. - :code:`pprint`: Pretty print variable. - :code:`combine`: Combine 2 dictionaries. - :code:`jmespath`: Queries data using the `JMESPath <http://jmespath.org/>`_ query language. Example usage can be seen in :code:`tests.sh` and for specific filters in the docstrings in :code:`template/filters.py`. Loading Loading @@ -85,5 +87,4 @@ TODO - Release on tagged commits to PyPI in Travis CI (https://docs.travis-ci.com/user/deployment/pypi/ and https://docs.travis-ci.com/user/encryption-keys/). - Add JMESPath support. - Add TOML support?
setup.py +1 −1 Original line number Diff line number Diff line Loading @@ -21,7 +21,7 @@ setup( ], keywords='config configuration jinja template environment', packages=find_packages(), install_requires=['Jinja2', 'PyYAML', 'six'], install_requires=['Jinja2', 'PyYAML', 'jmespath'], extras_require={ 'dev': ['tox'], }, entry_points={ Loading
template/filters.py +24 −1 Original line number Diff line number Diff line #!/usr/bin/env python from __future__ import (absolute_import, division, print_function, unicode_literals) import six # noqa: F401 def to_yaml(value): Loading Loading @@ -45,6 +44,7 @@ def from_json(value): Returns native data structure from the given JSON string. Examples: >>> import six >>> from_json('[1, 2, 3]') [1, 2, 3] >>> from_json('"a"') == six.text_type('a') Loading Loading @@ -78,6 +78,7 @@ def pprint(value): Examples: >>> pprint(1) '1' >>> import six >>> output = pprint([{'first_name': 'John', 'last_name': 'Doe'}, {'first_name': 'Jane', 'last_name': 'Doe'}]) # noqa: E501 >>> if six.PY3: ... output == "[{'first_name': 'John', 'last_name': 'Doe'},\\n {'first_name': 'Jane', 'last_name': 'Doe'}]" Loading @@ -101,3 +102,25 @@ def combine(default, override): combined = default.copy() combined.update(override) return combined def jmespath(value, query): ''' Queries the data using the JMESPath query language. Examples: >>> import six >>> locations = [{'name': 'Seattle', 'state': 'WA'}, ... {"name": "New York", "state": "NY"}, ... {"name": "Bellevue", "state": "WA"}, ... {"name": "Olympia", "state": "WA"}] >>> query = "[?state == 'WA'].name | sort(@) | {WashingtonCities: join(', ', @)}" # noqa: E501 >>> WACities = jmespath(locations, query) >>> if six.PY2: ... WACities == {u'WashingtonCities': u'Bellevue, Olympia, Seattle'} ... elif six.PY3: ... WACities == {'WashingtonCities': 'Bellevue, Olympia, Seattle'} ... True ''' import jmespath return jmespath.search(query, value)
tox.ini +2 −1 Original line number Diff line number Diff line [tox] envlist = py{2,3} envlist = py{2,3},docs [travis] python = Loading @@ -17,6 +17,7 @@ deps = check-manifest readme_renderer flake8 six commands = check-manifest --ignore tox.ini,tests* flake8 . Loading