remerkleable


Nameremerkleable JSON
Version 0.1.27 PyPI version JSON
download
home_pagehttps://github.com/protolambda/remerkleable
SummaryTyped mutable SSZ views over cached and immutable binary merkle trees
upload_time2023-01-26 10:56:18
maintainer
docs_urlNone
authorprotolambda
requires_python>=3.8, <4
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": "",
    "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"
}
        
Elapsed time: 0.03304s