Skip to main content

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.

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zish_antlr-0.0.14.tar.gz (18.8 kB view details)

Uploaded Source

Built Distribution

zish_antlr-0.0.14-py3-none-any.whl (14.5 kB view details)

Uploaded Python 3

File details

Details for the file zish_antlr-0.0.14.tar.gz.

File metadata

  • Download URL: zish_antlr-0.0.14.tar.gz
  • Upload date:
  • Size: 18.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for zish_antlr-0.0.14.tar.gz
Algorithm Hash digest
SHA256 4121b241d704a221ca25a509649c309336bc5eac99dcff203aeb324ec967aa5e
MD5 8a1be2ad4971408cb5d8e9bba1acc167
BLAKE2b-256 85d73d33020f9ef7bcdc917c2c03c5868b3c0d9857fa10a6fca38e3b993af443

See more details on using hashes here.

File details

Details for the file zish_antlr-0.0.14-py3-none-any.whl.

File metadata

  • Download URL: zish_antlr-0.0.14-py3-none-any.whl
  • Upload date:
  • Size: 14.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for zish_antlr-0.0.14-py3-none-any.whl
Algorithm Hash digest
SHA256 65719f2b847b8304cb9431727d2ce29f1238ec3d94aca77fc20425dfc399af9c
MD5 c1f736ce167d77341567866373cf1de9
BLAKE2b-256 5e592ecda5e78a99e15aa60a5d7cc39a1787bf64752c350af19d6cdcb5d5cccd

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page