A Python implementation of Amazon Ion.
An implementation of Amazon Ion for Python.
This package is designed to work with Python 2.7+ and Python 3.4+
Start with the simpleion module, which provides four APIs (
dump,
dumps,
load,
loads) that will be familiar to users of Python's built-in JSON parsing module.
For example:
>>> import amazon.ion.simpleion as ion >>> obj = ion.loads('{abc: 123}') >>> obj['abc'] 123 >>> ion.dumps(obj, binary=False) '$ion_1_0 {abc:123}'
For additional examples, consult the cookbook.
This repository contains a git submodule called
ion-tests, which holds test data used by
ion-python's unit tests.
The easiest way to clone the
ion-pythonrepository and initialize its
ion-testssubmodule is to run the following command.
$ git clone --recursive https://github.com/amzn/ion-python.git ion-python
Alternatively, the submodule may be initialized independently from the clone by running the following commands.
$ git submodule init $ git submodule update
It is recommended to use
venvto create a clean environment to build/test Ion Python.
$ python3 -m venv ./venv ... $ . venv/bin/activate $ pip install -r requirements.txt $ pip install -e .
You can also run the tests through
setup.pyor
py.testdirectly.
$ python setup.py test
In order to verify that all platforms we support work with Ion Python, we use a combination of tox with pyenv.
Install relevant versions of Python:
$ for V in 2.7.16 3.4.10 3.5.7 3.6.8 3.7.3 pypy2.7-7.1.1 pypy3.6-7.1.1; do pyenv install $V; done
Once you have these installations, add them as a local
pyenvconfiguration
$ pyenv local 2.7.16 3.4.10 3.5.7 3.6.8 3.7.3 pypy2.7-7.1.1 pypy3.6-7.1.1
Assuming you have
pyenvproperly set up (making sure
pyenv initis evaluated into your shell), you can now run
tox:
# Run tox for all versions of python which executes py.test. $ toxRun tox for just Python 2.7 and 3.5.
$ tox -e py27,py35
Run tox for a specific version and run py.test with high verbosity
$ tox -e py27 -- py.test -vv
Run tox for a specific version and just the virtual env REPL.
$ tox -e py27 -- python
The following build, deployment, or release tasks are required:
tests/test_vectors.py defines skipList variables referencing test vectors that are not expected to work at this time.