{ "info": { "author": "decentral1se", "author_email": "lukewm@riseup.net", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": ".. _header:\n\n******************\nmerkle-tree-stream\n******************\n\n.. image:: https://img.shields.io/badge/license-MIT-brightgreen.svg\n :target: LICENSE\n :alt: Repository license\n\n.. image:: https://badge.fury.io/py/merkle-tree-stream.svg\n :target: https://badge.fury.io/py/merkle-tree-stream\n :alt: PyPI package\n\n.. image:: https://travis-ci.com/datpy/merkle-tree-stream.svg?branch=master\n :target: https://travis-ci.com/datpy/merkle-tree-stream\n :alt: Travis CI result\n\n.. image:: https://readthedocs.org/projects/merkle-tree-stream/badge/?version=latest\n :target: https://merkle-tree-stream.readthedocs.io/en/latest/\n :alt: Documentation status\n\n.. image:: https://img.shields.io/badge/support-maintainers-brightgreen.svg\n :target: https://decentral1.se\n :alt: Support badge\n\n.. _introduction:\n\nA stream that generates a merkle tree based on the incoming data\n----------------------------------------------------------------\n\nFrom `The Dat Protocol`_: \n\n.. _The Dat Protocol: https://datprotocol.github.io/book/ch01-01-flat-tree.html\n\n A hash tree or merkle tree is a tree in which every leaf node is labelled\n with the hash of a data block and every non-leaf node is labelled with the\n cryptographic hash of the labels of its child nodes. Merkle trees in Dat\n are specialized `flat trees`_ that contain the content of the archives.\n\n .. _Flat Trees: https://flat-tree.readthedocs.io/en/latest/\n\nSee the following for more:\n\n * The Dat Protocol: `Merkle Tree`_\n * The Dat Protocol: `Merkle Tree Stream`_\n\n.. _Merkle Tree: https://datprotocol.github.io/book/ch01-02-merkle-tree.html\n.. _Merkle Tree Stream: https://datprotocol.github.io/book/ch02-02-merkle-tree-stream.html\n\nA note on naming\n================\n\nFor the purposes of uniformity and easy of discovery alongside the reference\nimplementation, we use the same module name as `merkle-tree-stream`_. However,\nthere is currently no stream implemented, only a generator is available. This\nis because the reference implementation of Hypercore 7 makes use of the\ngenerator only. A `stream`_ implementation may follow.\n\n.. _merkle-tree-stream: https://github.com/mafintosh/merkle-tree-stream\n.. _stream: https://docs.python.org/3/library/asyncio-stream.html\n\n.. _example:\n\n.. code-block:: python\n\n from hashlib import sha256\n from merkle_tree_stream import MerkleTreeGenerator\n\n def leaf(node, roots=None):\n return sha256(node.data).digest()\n\n def parent(first, second):\n sha256 = hashlib.sha256()\n sha256.update(first.data)\n sha256.update(second.data)\n return sha256.digest()\n\n merkle = MerkleTreeGenerator(leaf=leaf, parent=parent)\n merkle.write('hello')\n merkle.write('hashed')\n merkle.write('world')\n\n.. _documentation:\n\nDocumentation\n*************\n\n* `merkle-tree-stream.readthedocs.io`_\n\n.. _merkle-tree-stream.readthedocs.io: https://merkle-tree-stream.readthedocs.io/\n\nMirroring\n*********\n\n* `hack.decentral1.se/datpy/merkle-tree-stream`_\n* `github.com/datpy/merkle-tree-stream`_\n\n.. _hack.decentral1.se/datpy/merkle-tree-stream: https://hack.decentral1.se/datpy/merkle-tree-stream\n.. _github.com/datpy/merkle-tree-stream: https://github.com/datpy/merkle-tree-stream\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://hack.decentral1.se/datpy/merkle-tree-stream", "keywords": "", "license": "GPLv3", "maintainer": "decentral1se", "maintainer_email": "lukewm@riseup.net", "name": "merkle-tree-stream", "package_url": "https://pypi.org/project/merkle-tree-stream/", "platform": "", "project_url": "https://pypi.org/project/merkle-tree-stream/", "project_urls": { "Documentation": "https://merkle-tree-stream.readthedocs.io/", "Homepage": "https://hack.decentral1.se/datpy/merkle-tree-stream", "Maintainer Support": "https://decentral1.se", "Source Code": "https://hack.decentral1.se/datpy/merkle-tree-stream" }, "release_url": "https://pypi.org/project/merkle-tree-stream/0.0.1a3/", "requires_dist": [ "attrs (<20.0,>=19.1.0)", "flat-tree (<1.0,>=0.0.1a3)", "towncrier (<20.0,<=19.2.0) ; extra == 'changelog'", "sphinx ; extra == 'docs'", "sphinx-autodoc-typehints (<2.0,>=1.6.0) ; extra == 'docs'" ], "requires_python": ">=3.6", "summary": "A stream that generates a merkle tree based on the incoming data.", "version": "0.0.1a3" }, "last_serial": 5946611, "releases": { "0.0.1a1": [ { "comment_text": "", "digests": { "md5": "fad8056281a5d85545e65e758db7c9ea", "sha256": "14a6503c996f50a608899f03950a3f159401c56b3f072dc95df632712f52dfcb" }, "downloads": -1, "filename": "merkle_tree_stream-0.0.1a1-py3-none-any.whl", "has_sig": false, "md5_digest": "fad8056281a5d85545e65e758db7c9ea", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "!=2.7.*, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*", "size": 6613, "upload_time": "2019-08-07T06:46:30", "url": "https://files.pythonhosted.org/packages/28/27/9f280cf745ccda081d8e6d3575076a94592ef978c54bf87507819a2b118e/merkle_tree_stream-0.0.1a1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fe5a3678096e54a6571a472241192c19", "sha256": "fecc5f29d9d530f76f2ba9f1d44e427328a1e80e729d4cf62adbbbbac92715e0" }, "downloads": -1, "filename": "merkle-tree-stream-0.0.1a1.tar.gz", "has_sig": false, "md5_digest": "fe5a3678096e54a6571a472241192c19", "packagetype": "sdist", "python_version": "source", "requires_python": "!=2.7.*, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*", "size": 9967, "upload_time": "2019-08-07T06:46:32", "url": "https://files.pythonhosted.org/packages/6e/84/3a238b2ab0bd3b72253aa062a035a9ebfda27be43ab25f7dbc7ae9051b4f/merkle-tree-stream-0.0.1a1.tar.gz" } ], "0.0.1a2": [ { "comment_text": "", "digests": { "md5": "19ce6f64cb42009c01f8ed3730c518b3", "sha256": "50549e86bf0f13b1693822c365fa4a16d4bbc3662eb1974823d656b44090edd1" }, "downloads": -1, "filename": "merkle_tree_stream-0.0.1a2-py3-none-any.whl", "has_sig": false, "md5_digest": "19ce6f64cb42009c01f8ed3730c518b3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 6774, "upload_time": "2019-10-06T14:23:54", "url": "https://files.pythonhosted.org/packages/91/9e/024c2faf04db9b23bb034a4f26a2c88ec297038f953bca01321d5fbc682f/merkle_tree_stream-0.0.1a2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "482af6bdb1817a0d4a5c9cc79fefe93c", "sha256": "bc075c053e57fd6c585eb784f283fa3813849b9042ebff887bea59ae765b722d" }, "downloads": -1, "filename": "merkle-tree-stream-0.0.1a2.tar.gz", "has_sig": false, "md5_digest": "482af6bdb1817a0d4a5c9cc79fefe93c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 10062, "upload_time": "2019-10-06T14:23:55", "url": "https://files.pythonhosted.org/packages/c1/df/07dec5619bcc6eedfb546d52b30ba92208edf0ee0477a2eb2a17f6909b16/merkle-tree-stream-0.0.1a2.tar.gz" } ], "0.0.1a3": [ { "comment_text": "", "digests": { "md5": "62ba93340cced6e81bcdc8c7caaedb0b", "sha256": "59fe50bebcd9e953709db0d6e8f04629c225e710a2812f38f53d8079ae8c5270" }, "downloads": -1, "filename": "merkle_tree_stream-0.0.1a3-py3-none-any.whl", "has_sig": false, "md5_digest": "62ba93340cced6e81bcdc8c7caaedb0b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 6734, "upload_time": "2019-10-08T20:46:38", "url": "https://files.pythonhosted.org/packages/48/d0/294992824f88284ef50fe0c6f336b777610463a45a8f479328dee529da9e/merkle_tree_stream-0.0.1a3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f106e802d0b58e615fdd992495efb83c", "sha256": "18454663735ddc0b2b66f6fea754793c96a92dba9889839bb659ed6d7aff1162" }, "downloads": -1, "filename": "merkle-tree-stream-0.0.1a3.tar.gz", "has_sig": false, "md5_digest": "f106e802d0b58e615fdd992495efb83c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 10050, "upload_time": "2019-10-08T20:46:40", "url": "https://files.pythonhosted.org/packages/48/95/aa2660d2189e89b5b033fd4c1081dab00e2934047113e02ca4091922f3f6/merkle-tree-stream-0.0.1a3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "62ba93340cced6e81bcdc8c7caaedb0b", "sha256": "59fe50bebcd9e953709db0d6e8f04629c225e710a2812f38f53d8079ae8c5270" }, "downloads": -1, "filename": "merkle_tree_stream-0.0.1a3-py3-none-any.whl", "has_sig": false, "md5_digest": "62ba93340cced6e81bcdc8c7caaedb0b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 6734, "upload_time": "2019-10-08T20:46:38", "url": "https://files.pythonhosted.org/packages/48/d0/294992824f88284ef50fe0c6f336b777610463a45a8f479328dee529da9e/merkle_tree_stream-0.0.1a3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f106e802d0b58e615fdd992495efb83c", "sha256": "18454663735ddc0b2b66f6fea754793c96a92dba9889839bb659ed6d7aff1162" }, "downloads": -1, "filename": "merkle-tree-stream-0.0.1a3.tar.gz", "has_sig": false, "md5_digest": "f106e802d0b58e615fdd992495efb83c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 10050, "upload_time": "2019-10-08T20:46:40", "url": "https://files.pythonhosted.org/packages/48/95/aa2660d2189e89b5b033fd4c1081dab00e2934047113e02ca4091922f3f6/merkle-tree-stream-0.0.1a3.tar.gz" } ] }