.. image:: https://raw.githubusercontent.com/protolambda/remerkleable/master/docs/_static/logo.png
:width: 100 px
``remerkleable``
-----------------
.. image:: https://img.shields.io/pypi/l/remerkleable.svg
:target: https://pypi.python.org/pypi/remerkleable
.. image:: https://img.shields.io/pypi/pyversions/remerkleable.svg
:target: https://pypi.python.org/pypi/remerkleable
.. image:: https://img.shields.io/pypi/status/remerkleable.svg
:target: https://pypi.python.org/pypi/remerkleable
.. image:: https://img.shields.io/pypi/implementation/remerkleable.svg
:target: https://pypi.python.org/pypi/remerkleable
.. image:: https://github.com/protolambda/remerkleable/workflows/Remerkleable%20Python%20CI/badge.svg
:target: https://github.com/protolambda/remerkleable/actions
**Re-merkle-able**: Typed mutable SSZ views over cached and immutable binary Merkle trees.
Features
---------
- Types:
- custom byte-vector and byte-list view for Python bytes-like behavior
- bitfields: bitlist, bitvector
- list, container, vector
- union
- basic types
- Functionality:
- **Serialize** all types. Into output stream (returning the written count) and as ``bytes``
- **Deserialize** all types. From input stream (and scope) and from ``bytes``
- **Hash-tree-root** all types
- Merkle-based **data-sharing**:
- every view can be initialized/backed by a binary Merkle tree
- complex views have backings, and can share data.
- complex views provide a nice mutable interface, and replace their backing.
And this also works for child-views through view-hooks.
- *SSZ-Partials*: if a *partial* proof is loaded as backing, a view can be overlaid,
and the partial backing works as long as no excluded branches are accessed.
- **Calculate byte lengths**:
- Type min/max byte length
- Byte length for fixed-length types
- Output byte length for a value, without serializing
- **Navigation**: construct paths from types, and convert to generalized indices.
- **History**: traverse a sequence of nodes, and get the changelog for a given subtree location.
Project Links
--------------
- Docs: https://remerkleable.readthedocs.io/
- Changelog: https://remerkleable.readthedocs.io/en/latest/changelog.html
- PyPI: https://pypi.python.org/pypi/remerkleable
- Issues: https://github.com/protolambda/remerkleable/issues
Also see
---------
- `SSZ: "SimpleSerialize", part of Ethereum Proof of Stake spec <https://github.com/ethereum/consensus-specs/blob/dev/ssz/simple-serialize.md>`_
- `SSZ draft spec <https://github.com/protolambda/eth2.0-ssz/>`_
- `Ethereum Merkle trees information aggregate <https://github.com/protolambda/eth-merkle-trees>`_
Contact
--------
Author: `@protolambda <https://github.com/protolambda>`_
License
--------
MIT, see `LICENSE <./LICENSE>`_ file.
Raw data
{
"_id": null,
"home_page": "https://github.com/protolambda/remerkleable",
"name": "remerkleable",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.8, <4",
"maintainer_email": "",
"keywords": "merkle,merkleize,merkle-tree,merkle-trie,trie,ssz,hash-tree-root,eth2",
"author": "protolambda",
"author_email": "proto+pip@protolambda.com",
"download_url": "https://files.pythonhosted.org/packages/8f/29/c1bcc6364d1b816923e94d00ba1c7d32ac95189c8180d06ce1dc75186933/remerkleable-0.1.27.tar.gz",
"platform": null,
"description": ".. image:: https://raw.githubusercontent.com/protolambda/remerkleable/master/docs/_static/logo.png\n :width: 100 px\n\n``remerkleable``\n-----------------\n\n.. image:: https://img.shields.io/pypi/l/remerkleable.svg\n :target: https://pypi.python.org/pypi/remerkleable\n\n.. image:: https://img.shields.io/pypi/pyversions/remerkleable.svg\n :target: https://pypi.python.org/pypi/remerkleable\n\n.. image:: https://img.shields.io/pypi/status/remerkleable.svg\n :target: https://pypi.python.org/pypi/remerkleable\n\n.. image:: https://img.shields.io/pypi/implementation/remerkleable.svg\n :target: https://pypi.python.org/pypi/remerkleable\n\n.. image:: https://github.com/protolambda/remerkleable/workflows/Remerkleable%20Python%20CI/badge.svg\n :target: https://github.com/protolambda/remerkleable/actions\n\n\n**Re-merkle-able**: Typed mutable SSZ views over cached and immutable binary Merkle trees.\n\nFeatures\n---------\n\n- Types:\n - custom byte-vector and byte-list view for Python bytes-like behavior\n - bitfields: bitlist, bitvector\n - list, container, vector\n - union\n - basic types\n- Functionality:\n - **Serialize** all types. Into output stream (returning the written count) and as ``bytes``\n - **Deserialize** all types. From input stream (and scope) and from ``bytes``\n - **Hash-tree-root** all types\n - Merkle-based **data-sharing**:\n - every view can be initialized/backed by a binary Merkle tree\n - complex views have backings, and can share data.\n - complex views provide a nice mutable interface, and replace their backing.\n And this also works for child-views through view-hooks.\n - *SSZ-Partials*: if a *partial* proof is loaded as backing, a view can be overlaid,\n and the partial backing works as long as no excluded branches are accessed.\n - **Calculate byte lengths**:\n - Type min/max byte length\n - Byte length for fixed-length types\n - Output byte length for a value, without serializing\n - **Navigation**: construct paths from types, and convert to generalized indices.\n - **History**: traverse a sequence of nodes, and get the changelog for a given subtree location.\n\nProject Links\n--------------\n\n- Docs: https://remerkleable.readthedocs.io/\n- Changelog: https://remerkleable.readthedocs.io/en/latest/changelog.html\n- PyPI: https://pypi.python.org/pypi/remerkleable\n- Issues: https://github.com/protolambda/remerkleable/issues\n\nAlso see\n---------\n\n- `SSZ: \"SimpleSerialize\", part of Ethereum Proof of Stake spec <https://github.com/ethereum/consensus-specs/blob/dev/ssz/simple-serialize.md>`_\n- `SSZ draft spec <https://github.com/protolambda/eth2.0-ssz/>`_\n- `Ethereum Merkle trees information aggregate <https://github.com/protolambda/eth-merkle-trees>`_\n\nContact\n--------\n\nAuthor: `@protolambda <https://github.com/protolambda>`_\n\nLicense\n--------\n\nMIT, see `LICENSE <./LICENSE>`_ file.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Typed mutable SSZ views over cached and immutable binary merkle trees",
"version": "0.1.27",
"split_keywords": [
"merkle",
"merkleize",
"merkle-tree",
"merkle-trie",
"trie",
"ssz",
"hash-tree-root",
"eth2"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "9709331a437951ec06c9b58f2b7da7add5aaf51a91958091d356915a2f1f58ac",
"md5": "e07c5463e0511244cececbf5e9b193f7",
"sha256": "f0b11cc5ed176aba919e737357d1aa410c91387270f76c4881239efb9ac3701d"
},
"downloads": -1,
"filename": "remerkleable-0.1.27-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e07c5463e0511244cececbf5e9b193f7",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8, <4",
"size": 43672,
"upload_time": "2023-01-26T10:56:15",
"upload_time_iso_8601": "2023-01-26T10:56:15.901895Z",
"url": "https://files.pythonhosted.org/packages/97/09/331a437951ec06c9b58f2b7da7add5aaf51a91958091d356915a2f1f58ac/remerkleable-0.1.27-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8f29c1bcc6364d1b816923e94d00ba1c7d32ac95189c8180d06ce1dc75186933",
"md5": "6a39af3d008beb0e8927920be45519fb",
"sha256": "74faa228601b4724e908ba1a80ba9a88447834c53feaa7be15995f4de115fcb3"
},
"downloads": -1,
"filename": "remerkleable-0.1.27.tar.gz",
"has_sig": false,
"md5_digest": "6a39af3d008beb0e8927920be45519fb",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8, <4",
"size": 38081,
"upload_time": "2023-01-26T10:56:18",
"upload_time_iso_8601": "2023-01-26T10:56:18.206754Z",
"url": "https://files.pythonhosted.org/packages/8f/29/c1bcc6364d1b816923e94d00ba1c7d32ac95189c8180d06ce1dc75186933/remerkleable-0.1.27.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-01-26 10:56:18",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "protolambda",
"github_project": "remerkleable",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "remerkleable"
}