EDN reader and writer implementation in Python, using PLY (lex, yacc)
OTHER License
Implements the EDN format in Python.
All features of EDN are implemented, including custom tagged elements.
pip install edn_format
>>> import edn_format
>>> edn_format.dumps({1, 2, 3})
'#{1 2 3}'
>>> edn_format.loads("[1 true nil]")
[1, True, None]
>>> edn_format.loads_all("1 2 3 4")
[1, 2, 3, 4]
In general, edn_format.loads(edn_format.dumps(obj)) == obj
. If this is
false, it may be a bug.
See tests.py
for full details.
Special thanks to the following contributors for making this library usable:
IIRC, it was related to https://github.com/edn-format/edn#rationale :
edn will yield distinct object identities when read, unless a reader implementation goes out of its way to make such a promise. Thus the resulting values should be considered immutable, and a reader implementation should yield values that ensure this, to the extent possible.