Skip to main content

Zish Python ANTLR

A Python library for the Zish format format, released under the MIT-0 licence.

Build Status

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 To Zish Type Mapping

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.

Metadata

Release files for zish-antlr 0.0.14

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

Source distribution (sdist)

Source distribution for zish-antlr 0.0.14
File Size Uploaded
zish_antlr-0.0.14.tar.gz 18.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for zish-antlr 0.0.14
File Interpreter ABI Platform
zish_antlr-0.0.14-py3-none-any.whl Python 3 none any Details

Total release size: 33.2 kB

Release files / zish_antlr-0.0.14.tar.gz

Download URL zish_antlr-0.0.14.tar.gz
Size 18.8 kB
Tags Source
SHA-256 checksum
How to use checksums
4121b241d704a221ca25a509649c309336bc5eac99dcff203aeb324ec967aa5e
BLAKE2b-256 checksum
How to use checksums
85d73d33020f9ef7bcdc917c2c03c5868b3c0d9857fa10a6fca38e3b993af443
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.10.6

Release files / zish_antlr-0.0.14-py3-none-any.whl

Download URL zish_antlr-0.0.14-py3-none-any.whl
Size 14.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
65719f2b847b8304cb9431727d2ce29f1238ec3d94aca77fc20425dfc399af9c
BLAKE2b-256 checksum
How to use checksums
5e592ecda5e78a99e15aa60a5d7cc39a1787bf64752c350af19d6cdcb5d5cccd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.10.6

Release history Release notifications | RSS feed

This release

0.0.14 This release

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