A Python library for the Zish format using ANTLR.
Project description
A Python library for the Zish format format, released under the MIT-0 licence.
Installation
Create a virtual environment: python3 -m venv venv
Activate the virtual environment: source venv/bin/activate
Install: pip install zish_antlr
Quickstart
To go from a Python object to an Zish string use zish.dumps. To go from a Zish string to a Python object use zish.loads. Eg.
>>> from zish import loads, dumps >>> from datetime import datetime, timezone >>> from decimal import Decimal >>> >>> # Take a Python object >>> book = { ... 'title': 'A Hero of Our Time', ... 'read_date': datetime(2017, 7, 16, 14, 5, tzinfo=timezone.utc), ... 'would_recommend': True, ... 'description': None, ... 'number_of_novellas': 5, ... 'price': Decimal('7.99'), ... 'weight': 6.88, ... 'key': b'kshhgrl', ... 'tags': [ ... 'russian', ... 'novel', ... '19th century', ... ], ... } >>> >>> # Output it as an Zish string >>> zish_str = dumps(book) >>> print(zish_str) { "description": null, "key": 'a3NoaGdybA==', "number_of_novellas": 5, "price": 7.99, "read_date": 2017-07-16T14:05:00Z, "tags": [ "russian", "novel", "19th century", ], "title": "A Hero of Our Time", "weight": 6.88, "would_recommend": true, } >>> >>> # Load the Zish string, to give us back the Python object >>> reloaded_book = loads(zish_str) >>> >>> # Print the title >>> print(reloaded_book['title']) A Hero of Our Time
Python Type |
Zish Type |
---|---|
bool |
bool |
int |
integer |
str |
string |
datetime.datetime |
timestamp |
dict |
map |
decimal.Decimal |
decimal |
float |
decimal |
bytearray |
bytes |
bytes |
bytes |
list |
list |
tuple |
list |
Contributing
Useful link:
To run the tests:
Change to the zish_python_antlr directory: cd zish_python_antlr
Create a virtual environment: python3 -m venv venv
Activate the virtual environment: source venv/bin/activate
Install tox: pip install tox
Run tox: tox
The core parser is created using ANTLR from the Zish grammar. To create the parser files, go to the zish/antlr directory and download the ANTLR jar and then run the following command:
java -jar antlr-4.11.1-complete.jar -Dlanguage=Python3 Zish.g4
Making A New Release
Run tox to make sure all tests pass
Update the Release Notes section.
Ensure build and twine are installed: pip install wheel twine
Then do:
git tag -a x.y.z -m "version x.y.z" rm -r dist python -m build twine upload --sign dist/*
Release Notes
Version 0.0.14 (2022-10-30)
The U+00A0 NO-BREAK SPACE is now treated as whitespace.
Version 0.0.13 (2021-04-04)
Trailing commas in list and maps are now allowed.
Version 0.0.12 (2017-09-07)
Rename to zish_antlr to distinguish it from zish.
Version 0.0.11 (2017-09-07)
Upload to PyPI failed for previous release.
Version 0.0.10 (2017-09-07)
Allow lists and sets as keys to maps.
Version 0.0.9 (2017-08-24)
Fix bug where int was being parsed as Decimal.
Make bytes type return a bytes rather than a bytearray.
Version 0.0.8 (2017-08-24)
Container types aren’t allowed as map keys.
Performance improvements.
Version 0.0.7 (2017-08-22)
Fix bug with UTC timestamp formatting.
Version 0.0.6 (2017-08-22)
Fix bug in timestamp formatting.
Add note about comments.
Version 0.0.5 (2017-08-18)
Fix bug where dumps fails for a tuple.
Version 0.0.4 (2017-08-15)
Simplify integer types.
Version 0.0.3 (2017-08-09)
Fixed bug where interpreter couldn’t find the zish.antlr package in eggs.
Removed a few superfluous escape sequences.
Version 0.0.2 (2017-08-05)
Now uses RFC3339 for timestamps.
Version 0.0.1 (2017-08-03)
Fix bug where an EOF could cause an infinite loop.
Version 0.0.0 (2017-08-01)
First public release. Passes all the tests.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for zish_antlr-0.0.14-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 65719f2b847b8304cb9431727d2ce29f1238ec3d94aca77fc20425dfc399af9c |
|
MD5 | c1f736ce167d77341567866373cf1de9 |
|
BLAKE2b-256 | 5e592ecda5e78a99e15aa60a5d7cc39a1787bf64752c350af19d6cdcb5d5cccd |