.. 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": null,
"docs_url": null,
"requires_python": "<4,>=3.8",
"maintainer_email": null,
"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/c0/a3/5b1206c4281f7337945a8e86ef73f40093c41f3b78291d6f66250fe5aaf8/remerkleable-0.1.28.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.28",
"project_urls": {
"Homepage": "https://github.com/protolambda/remerkleable"
},
"split_keywords": [
"merkle",
" merkleize",
" merkle-tree",
" merkle-trie",
" trie",
" ssz",
" hash-tree-root",
" eth2"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "27c2c89771e64163950a0016251080523cfbdf1f1d2cae2ad0b8b9c52bc0c846",
"md5": "94a00801c369d65cff97dbbb82a22244",
"sha256": "133cb1283f1d6fd2a020f47ee3653e93385acf2aa4ddc30f3d00eb9404751bda"
},
"downloads": -1,
"filename": "remerkleable-0.1.28-py3-none-any.whl",
"has_sig": false,
"md5_digest": "94a00801c369d65cff97dbbb82a22244",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4,>=3.8",
"size": 51439,
"upload_time": "2024-06-16T03:16:45",
"upload_time_iso_8601": "2024-06-16T03:16:45.836121Z",
"url": "https://files.pythonhosted.org/packages/27/c2/c89771e64163950a0016251080523cfbdf1f1d2cae2ad0b8b9c52bc0c846/remerkleable-0.1.28-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c0a35b1206c4281f7337945a8e86ef73f40093c41f3b78291d6f66250fe5aaf8",
"md5": "80ecb7fe6cd7a5ab659bf2e728c0c7b9",
"sha256": "1e19e9a927961b29c4efa210795bfad5d20a28545a6f78f7552b1e4449c24890"
},
"downloads": -1,
"filename": "remerkleable-0.1.28.tar.gz",
"has_sig": false,
"md5_digest": "80ecb7fe6cd7a5ab659bf2e728c0c7b9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4,>=3.8",
"size": 45671,
"upload_time": "2024-06-16T03:16:47",
"upload_time_iso_8601": "2024-06-16T03:16:47.967292Z",
"url": "https://files.pythonhosted.org/packages/c0/a3/5b1206c4281f7337945a8e86ef73f40093c41f3b78291d6f66250fe5aaf8/remerkleable-0.1.28.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-06-16 03:16:47",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "protolambda",
"github_project": "remerkleable",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "remerkleable"
}