remerkleable


Nameremerkleable JSON
Version 0.1.28 PyPI version JSON
download
home_pagehttps://github.com/protolambda/remerkleable
SummaryTyped mutable SSZ views over cached and immutable binary merkle trees
upload_time2024-06-16 03:16:47
maintainerNone
docs_urlNone
authorprotolambda
requires_python<4,>=3.8
licenseMIT
keywords merkle merkleize merkle-tree merkle-trie trie ssz hash-tree-root eth2
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            .. 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"
}
        
Elapsed time: 4.68409s