Migrate to pyproject config
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
9776cea9f0
commit
a9ebea0889
20
CHANGELOG.md
20
CHANGELOG.md
@ -1,36 +1,26 @@
|
|||||||
# merkle-tree-stream 0.0.1a4 (UNRELEASED)
|
# merkle-tree-stream 0.0.1a6 (UNRELEASED)
|
||||||
|
|
||||||
## Removals
|
# merkle-tree-stream 0.0.1a5 (2020-07-07)
|
||||||
|
|
||||||
- Removed RTD documentation
|
|
||||||
|
|
||||||
## Trivial/Internal Changes
|
|
||||||
|
|
||||||
- Follow the Hypercore protocol renaming situation.
|
- Follow the Hypercore protocol renaming situation.
|
||||||
- Migrate to git.autonomic.zone
|
|
||||||
- Migrate CI to drone.autonomic.zone
|
- Migrate CI to drone.autonomic.zone
|
||||||
|
- Migrate to git.autonomic.zone
|
||||||
|
- Migrate to pyproject configuration
|
||||||
- Reduce package boilerplate
|
- Reduce package boilerplate
|
||||||
|
- Removed RTD documentation
|
||||||
|
|
||||||
# merkle-tree-stream 0.0.1a4 (2019-11-03)
|
# merkle-tree-stream 0.0.1a4 (2019-11-03)
|
||||||
|
|
||||||
## Improved Documentation
|
|
||||||
|
|
||||||
- New Sphinx theme. Improved clarity with documentation.
|
- New Sphinx theme. Improved clarity with documentation.
|
||||||
|
|
||||||
# merkle-tree-stream 0.0.1a3 (2019-10-08)
|
# merkle-tree-stream 0.0.1a3 (2019-10-08)
|
||||||
|
|
||||||
## Bug Fixes
|
|
||||||
|
|
||||||
- MerkleTreeIterator -> MerkleTreeGenerator
|
- MerkleTreeIterator -> MerkleTreeGenerator
|
||||||
|
|
||||||
# merkle-tree-stream 0.0.1a2 (2019-10-06)
|
# merkle-tree-stream 0.0.1a2 (2019-10-06)
|
||||||
|
|
||||||
## Bug Fixes
|
|
||||||
|
|
||||||
- MerkleTreeIterator leaf and parent functions now return bytes.
|
- MerkleTreeIterator leaf and parent functions now return bytes.
|
||||||
|
|
||||||
# merkle-tree-stream 0.0.1a1 (2019-08-07)
|
# merkle-tree-stream 0.0.1a1 (2019-08-07)
|
||||||
|
|
||||||
## Project Announcements
|
|
||||||
|
|
||||||
- Initial alpha development release is made!
|
- Initial alpha development release is made!
|
||||||
|
@ -1 +0,0 @@
|
|||||||
include LICENSE README.md CHANGELOG.md
|
|
32
README.md
32
README.md
@ -4,11 +4,35 @@
|
|||||||
|
|
||||||
## A stream that generates a merkle tree based on the incoming data
|
## A stream that generates a merkle tree based on the incoming data
|
||||||
|
|
||||||
|
> A hash tree or merkle tree is a tree in which every leaf node is labelled
|
||||||
|
> with the hash of a data block and every non-leaf node is labelled with the
|
||||||
|
> cryptographic hash of the labels of its child nodes. Merkle trees in Dat are
|
||||||
|
> specialized flat trees that contain the content of the archives.
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ pip install merkle-tree-stream
|
$ pip install merkle-tree-stream
|
||||||
```
|
```
|
||||||
|
|
||||||
A hash tree or merkle tree is a tree in which every leaf node is labelled with
|
## Example
|
||||||
the hash of a data block and every non-leaf node is labelled with the
|
|
||||||
cryptographic hash of the labels of its child nodes. Merkle trees in Dat are
|
```python
|
||||||
specialized flat trees that contain the content of the archives.
|
import hashlib
|
||||||
|
|
||||||
|
def _leaf(node, roots=None):
|
||||||
|
return hashlib.sha256(node.data).digest()
|
||||||
|
|
||||||
|
def _parent(first, second):
|
||||||
|
sha256 = hashlib.sha256()
|
||||||
|
sha256.update(first.data)
|
||||||
|
sha256.update(second.data)
|
||||||
|
return sha256.digest()
|
||||||
|
|
||||||
|
merkle = MerkleTreeGenerator(leaf=leaf, parent=parent)
|
||||||
|
|
||||||
|
merkle.write(b"a")
|
||||||
|
merkle.write(b"b")
|
||||||
|
|
||||||
|
assert len(merkle) == 2 + 1
|
||||||
|
```
|
||||||
|
@ -2,14 +2,3 @@
|
|||||||
|
|
||||||
from merkle_tree_stream.node import MerkleTreeNode # noqa
|
from merkle_tree_stream.node import MerkleTreeNode # noqa
|
||||||
from merkle_tree_stream.tree import MerkleTreeGenerator # noqa
|
from merkle_tree_stream.tree import MerkleTreeGenerator # noqa
|
||||||
|
|
||||||
try:
|
|
||||||
import pkg_resources
|
|
||||||
except ImportError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
try:
|
|
||||||
__version__ = pkg_resources.get_distribution("merkle_tree_stream").version
|
|
||||||
except Exception:
|
|
||||||
__version__ = "unknown"
|
|
||||||
|
4
mypy.ini
4
mypy.ini
@ -1,4 +0,0 @@
|
|||||||
[mypy]
|
|
||||||
python_version = 3.8
|
|
||||||
platform = linux
|
|
||||||
ignore_missing_imports = True
|
|
282
poetry.lock
generated
Normal file
282
poetry.lock
generated
Normal file
@ -0,0 +1,282 @@
|
|||||||
|
[[package]]
|
||||||
|
category = "dev"
|
||||||
|
description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
|
||||||
|
name = "appdirs"
|
||||||
|
optional = false
|
||||||
|
python-versions = "*"
|
||||||
|
version = "1.4.4"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
category = "main"
|
||||||
|
description = "Classes Without Boilerplate"
|
||||||
|
name = "attrs"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
||||||
|
version = "19.3.0"
|
||||||
|
|
||||||
|
[package.extras]
|
||||||
|
azure-pipelines = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "pytest-azurepipelines"]
|
||||||
|
dev = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "sphinx", "pre-commit"]
|
||||||
|
docs = ["sphinx", "zope.interface"]
|
||||||
|
tests = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
category = "dev"
|
||||||
|
description = "The uncompromising code formatter."
|
||||||
|
name = "black"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=3.6"
|
||||||
|
version = "19.10b0"
|
||||||
|
|
||||||
|
[package.dependencies]
|
||||||
|
appdirs = "*"
|
||||||
|
attrs = ">=18.1.0"
|
||||||
|
click = ">=6.5"
|
||||||
|
pathspec = ">=0.6,<1"
|
||||||
|
regex = "*"
|
||||||
|
toml = ">=0.9.4"
|
||||||
|
typed-ast = ">=1.4.0"
|
||||||
|
|
||||||
|
[package.extras]
|
||||||
|
d = ["aiohttp (>=3.3.2)", "aiohttp-cors"]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
category = "dev"
|
||||||
|
description = "Composable command line interface toolkit"
|
||||||
|
name = "click"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
|
||||||
|
version = "7.1.2"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
category = "dev"
|
||||||
|
description = "the modular source code checker: pep8 pyflakes and co"
|
||||||
|
name = "flake8"
|
||||||
|
optional = false
|
||||||
|
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7"
|
||||||
|
version = "3.8.3"
|
||||||
|
|
||||||
|
[package.dependencies]
|
||||||
|
mccabe = ">=0.6.0,<0.7.0"
|
||||||
|
pycodestyle = ">=2.6.0a1,<2.7.0"
|
||||||
|
pyflakes = ">=2.2.0,<2.3.0"
|
||||||
|
|
||||||
|
[package.dependencies.importlib-metadata]
|
||||||
|
python = "<3.8"
|
||||||
|
version = "*"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
category = "main"
|
||||||
|
description = "Utilities for navigating flat trees"
|
||||||
|
name = "flat-tree"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=3.6,<4.0"
|
||||||
|
version = "0.0.1a8"
|
||||||
|
|
||||||
|
[package.dependencies]
|
||||||
|
attrs = ">=19.3.0,<20.0.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
category = "dev"
|
||||||
|
description = "Read metadata from Python packages"
|
||||||
|
marker = "python_version < \"3.8\""
|
||||||
|
name = "importlib-metadata"
|
||||||
|
optional = false
|
||||||
|
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
|
||||||
|
version = "1.7.0"
|
||||||
|
|
||||||
|
[package.dependencies]
|
||||||
|
zipp = ">=0.5"
|
||||||
|
|
||||||
|
[package.extras]
|
||||||
|
docs = ["sphinx", "rst.linker"]
|
||||||
|
testing = ["packaging", "pep517", "importlib-resources (>=1.3)"]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
category = "dev"
|
||||||
|
description = "A Python utility / library to sort Python imports."
|
||||||
|
name = "isort"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=3.6,<4.0"
|
||||||
|
version = "5.0.4"
|
||||||
|
|
||||||
|
[package.extras]
|
||||||
|
pipfile_deprecated_finder = ["pipreqs", "requirementslib", "tomlkit (>=0.5.3)"]
|
||||||
|
requirements_deprecated_finder = ["pipreqs", "pip-api"]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
category = "dev"
|
||||||
|
description = "McCabe checker, plugin for flake8"
|
||||||
|
name = "mccabe"
|
||||||
|
optional = false
|
||||||
|
python-versions = "*"
|
||||||
|
version = "0.6.1"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
category = "dev"
|
||||||
|
description = "Utility library for gitignore style pattern matching of file paths."
|
||||||
|
name = "pathspec"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
|
||||||
|
version = "0.8.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
category = "dev"
|
||||||
|
description = "Python style guide checker"
|
||||||
|
name = "pycodestyle"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
||||||
|
version = "2.6.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
category = "dev"
|
||||||
|
description = "passive checker of Python programs"
|
||||||
|
name = "pyflakes"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
||||||
|
version = "2.2.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
category = "dev"
|
||||||
|
description = "Alternative regular expression module, to replace re."
|
||||||
|
name = "regex"
|
||||||
|
optional = false
|
||||||
|
python-versions = "*"
|
||||||
|
version = "2020.6.8"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
category = "dev"
|
||||||
|
description = "Python Library for Tom's Obvious, Minimal Language"
|
||||||
|
name = "toml"
|
||||||
|
optional = false
|
||||||
|
python-versions = "*"
|
||||||
|
version = "0.10.1"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
category = "dev"
|
||||||
|
description = "a fork of Python 2 and 3 ast modules with type comment support"
|
||||||
|
name = "typed-ast"
|
||||||
|
optional = false
|
||||||
|
python-versions = "*"
|
||||||
|
version = "1.4.1"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
category = "dev"
|
||||||
|
description = "Backport of pathlib-compatible object wrapper for zip files"
|
||||||
|
marker = "python_version < \"3.8\""
|
||||||
|
name = "zipp"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=3.6"
|
||||||
|
version = "3.1.0"
|
||||||
|
|
||||||
|
[package.extras]
|
||||||
|
docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"]
|
||||||
|
testing = ["jaraco.itertools", "func-timeout"]
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
content-hash = "b544dd22fb68d660d91ad4d1169de7d5f20f5c47de8056c5e2e65709f6ee1184"
|
||||||
|
python-versions = "^3.6"
|
||||||
|
|
||||||
|
[metadata.files]
|
||||||
|
appdirs = [
|
||||||
|
{file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"},
|
||||||
|
{file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"},
|
||||||
|
]
|
||||||
|
attrs = [
|
||||||
|
{file = "attrs-19.3.0-py2.py3-none-any.whl", hash = "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c"},
|
||||||
|
{file = "attrs-19.3.0.tar.gz", hash = "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72"},
|
||||||
|
]
|
||||||
|
black = [
|
||||||
|
{file = "black-19.10b0-py36-none-any.whl", hash = "sha256:1b30e59be925fafc1ee4565e5e08abef6b03fe455102883820fe5ee2e4734e0b"},
|
||||||
|
{file = "black-19.10b0.tar.gz", hash = "sha256:c2edb73a08e9e0e6f65a0e6af18b059b8b1cdd5bef997d7a0b181df93dc81539"},
|
||||||
|
]
|
||||||
|
click = [
|
||||||
|
{file = "click-7.1.2-py2.py3-none-any.whl", hash = "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"},
|
||||||
|
{file = "click-7.1.2.tar.gz", hash = "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a"},
|
||||||
|
]
|
||||||
|
flake8 = [
|
||||||
|
{file = "flake8-3.8.3-py2.py3-none-any.whl", hash = "sha256:15e351d19611c887e482fb960eae4d44845013cc142d42896e9862f775d8cf5c"},
|
||||||
|
{file = "flake8-3.8.3.tar.gz", hash = "sha256:f04b9fcbac03b0a3e58c0ab3a0ecc462e023a9faf046d57794184028123aa208"},
|
||||||
|
]
|
||||||
|
flat-tree = [
|
||||||
|
{file = "flat-tree-0.0.1a8.tar.gz", hash = "sha256:c6fe90ec5dcd5ac353c04440bbe8d19631258b04297a6464fbd7a425e2c9c80a"},
|
||||||
|
{file = "flat_tree-0.0.1a8-py3-none-any.whl", hash = "sha256:03ecedf09f47a668f83e6a8c6b396045063323756baa604aeff2ff2a32245ee0"},
|
||||||
|
]
|
||||||
|
importlib-metadata = [
|
||||||
|
{file = "importlib_metadata-1.7.0-py2.py3-none-any.whl", hash = "sha256:dc15b2969b4ce36305c51eebe62d418ac7791e9a157911d58bfb1f9ccd8e2070"},
|
||||||
|
{file = "importlib_metadata-1.7.0.tar.gz", hash = "sha256:90bb658cdbbf6d1735b6341ce708fc7024a3e14e99ffdc5783edea9f9b077f83"},
|
||||||
|
]
|
||||||
|
isort = [
|
||||||
|
{file = "isort-5.0.4-py3-none-any.whl", hash = "sha256:78661ad751751cb3c181d37302e175a0c644b3714877c073df058c596281d7fd"},
|
||||||
|
{file = "isort-5.0.4.tar.gz", hash = "sha256:6ae9cf5414e416954e3421f861cbbfc099b3ace63cb270cc76c6670efd960a0a"},
|
||||||
|
]
|
||||||
|
mccabe = [
|
||||||
|
{file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"},
|
||||||
|
{file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"},
|
||||||
|
]
|
||||||
|
pathspec = [
|
||||||
|
{file = "pathspec-0.8.0-py2.py3-none-any.whl", hash = "sha256:7d91249d21749788d07a2d0f94147accd8f845507400749ea19c1ec9054a12b0"},
|
||||||
|
{file = "pathspec-0.8.0.tar.gz", hash = "sha256:da45173eb3a6f2a5a487efba21f050af2b41948be6ab52b6a1e3ff22bb8b7061"},
|
||||||
|
]
|
||||||
|
pycodestyle = [
|
||||||
|
{file = "pycodestyle-2.6.0-py2.py3-none-any.whl", hash = "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367"},
|
||||||
|
{file = "pycodestyle-2.6.0.tar.gz", hash = "sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e"},
|
||||||
|
]
|
||||||
|
pyflakes = [
|
||||||
|
{file = "pyflakes-2.2.0-py2.py3-none-any.whl", hash = "sha256:0d94e0e05a19e57a99444b6ddcf9a6eb2e5c68d3ca1e98e90707af8152c90a92"},
|
||||||
|
{file = "pyflakes-2.2.0.tar.gz", hash = "sha256:35b2d75ee967ea93b55750aa9edbbf72813e06a66ba54438df2cfac9e3c27fc8"},
|
||||||
|
]
|
||||||
|
regex = [
|
||||||
|
{file = "regex-2020.6.8-cp27-cp27m-win32.whl", hash = "sha256:fbff901c54c22425a5b809b914a3bfaf4b9570eee0e5ce8186ac71eb2025191c"},
|
||||||
|
{file = "regex-2020.6.8-cp27-cp27m-win_amd64.whl", hash = "sha256:112e34adf95e45158c597feea65d06a8124898bdeac975c9087fe71b572bd938"},
|
||||||
|
{file = "regex-2020.6.8-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:92d8a043a4241a710c1cf7593f5577fbb832cf6c3a00ff3fc1ff2052aff5dd89"},
|
||||||
|
{file = "regex-2020.6.8-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:bae83f2a56ab30d5353b47f9b2a33e4aac4de9401fb582b55c42b132a8ac3868"},
|
||||||
|
{file = "regex-2020.6.8-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:b2ba0f78b3ef375114856cbdaa30559914d081c416b431f2437f83ce4f8b7f2f"},
|
||||||
|
{file = "regex-2020.6.8-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:95fa7726d073c87141f7bbfb04c284901f8328e2d430eeb71b8ffdd5742a5ded"},
|
||||||
|
{file = "regex-2020.6.8-cp36-cp36m-win32.whl", hash = "sha256:e3cdc9423808f7e1bb9c2e0bdb1c9dc37b0607b30d646ff6faf0d4e41ee8fee3"},
|
||||||
|
{file = "regex-2020.6.8-cp36-cp36m-win_amd64.whl", hash = "sha256:c78e66a922de1c95a208e4ec02e2e5cf0bb83a36ceececc10a72841e53fbf2bd"},
|
||||||
|
{file = "regex-2020.6.8-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:08997a37b221a3e27d68ffb601e45abfb0093d39ee770e4257bd2f5115e8cb0a"},
|
||||||
|
{file = "regex-2020.6.8-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:2f6f211633ee8d3f7706953e9d3edc7ce63a1d6aad0be5dcee1ece127eea13ae"},
|
||||||
|
{file = "regex-2020.6.8-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:55b4c25cbb3b29f8d5e63aeed27b49fa0f8476b0d4e1b3171d85db891938cc3a"},
|
||||||
|
{file = "regex-2020.6.8-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:89cda1a5d3e33ec9e231ece7307afc101b5217523d55ef4dc7fb2abd6de71ba3"},
|
||||||
|
{file = "regex-2020.6.8-cp37-cp37m-win32.whl", hash = "sha256:690f858d9a94d903cf5cada62ce069b5d93b313d7d05456dbcd99420856562d9"},
|
||||||
|
{file = "regex-2020.6.8-cp37-cp37m-win_amd64.whl", hash = "sha256:1700419d8a18c26ff396b3b06ace315b5f2a6e780dad387e4c48717a12a22c29"},
|
||||||
|
{file = "regex-2020.6.8-cp38-cp38-manylinux1_i686.whl", hash = "sha256:654cb773b2792e50151f0e22be0f2b6e1c3a04c5328ff1d9d59c0398d37ef610"},
|
||||||
|
{file = "regex-2020.6.8-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:52e1b4bef02f4040b2fd547357a170fc1146e60ab310cdbdd098db86e929b387"},
|
||||||
|
{file = "regex-2020.6.8-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:cf59bbf282b627130f5ba68b7fa3abdb96372b24b66bdf72a4920e8153fc7910"},
|
||||||
|
{file = "regex-2020.6.8-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:5aaa5928b039ae440d775acea11d01e42ff26e1561c0ffcd3d805750973c6baf"},
|
||||||
|
{file = "regex-2020.6.8-cp38-cp38-win32.whl", hash = "sha256:97712e0d0af05febd8ab63d2ef0ab2d0cd9deddf4476f7aa153f76feef4b2754"},
|
||||||
|
{file = "regex-2020.6.8-cp38-cp38-win_amd64.whl", hash = "sha256:6ad8663c17db4c5ef438141f99e291c4d4edfeaacc0ce28b5bba2b0bf273d9b5"},
|
||||||
|
{file = "regex-2020.6.8.tar.gz", hash = "sha256:e9b64e609d37438f7d6e68c2546d2cb8062f3adb27e6336bc129b51be20773ac"},
|
||||||
|
]
|
||||||
|
toml = [
|
||||||
|
{file = "toml-0.10.1-py2.py3-none-any.whl", hash = "sha256:bda89d5935c2eac546d648028b9901107a595863cb36bae0c73ac804a9b4ce88"},
|
||||||
|
{file = "toml-0.10.1.tar.gz", hash = "sha256:926b612be1e5ce0634a2ca03470f95169cf16f939018233a670519cb4ac58b0f"},
|
||||||
|
]
|
||||||
|
typed-ast = [
|
||||||
|
{file = "typed_ast-1.4.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:73d785a950fc82dd2a25897d525d003f6378d1cb23ab305578394694202a58c3"},
|
||||||
|
{file = "typed_ast-1.4.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:aaee9905aee35ba5905cfb3c62f3e83b3bec7b39413f0a7f19be4e547ea01ebb"},
|
||||||
|
{file = "typed_ast-1.4.1-cp35-cp35m-win32.whl", hash = "sha256:0c2c07682d61a629b68433afb159376e24e5b2fd4641d35424e462169c0a7919"},
|
||||||
|
{file = "typed_ast-1.4.1-cp35-cp35m-win_amd64.whl", hash = "sha256:4083861b0aa07990b619bd7ddc365eb7fa4b817e99cf5f8d9cf21a42780f6e01"},
|
||||||
|
{file = "typed_ast-1.4.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:269151951236b0f9a6f04015a9004084a5ab0d5f19b57de779f908621e7d8b75"},
|
||||||
|
{file = "typed_ast-1.4.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:24995c843eb0ad11a4527b026b4dde3da70e1f2d8806c99b7b4a7cf491612652"},
|
||||||
|
{file = "typed_ast-1.4.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:fe460b922ec15dd205595c9b5b99e2f056fd98ae8f9f56b888e7a17dc2b757e7"},
|
||||||
|
{file = "typed_ast-1.4.1-cp36-cp36m-win32.whl", hash = "sha256:4e3e5da80ccbebfff202a67bf900d081906c358ccc3d5e3c8aea42fdfdfd51c1"},
|
||||||
|
{file = "typed_ast-1.4.1-cp36-cp36m-win_amd64.whl", hash = "sha256:249862707802d40f7f29f6e1aad8d84b5aa9e44552d2cc17384b209f091276aa"},
|
||||||
|
{file = "typed_ast-1.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8ce678dbaf790dbdb3eba24056d5364fb45944f33553dd5869b7580cdbb83614"},
|
||||||
|
{file = "typed_ast-1.4.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:c9e348e02e4d2b4a8b2eedb48210430658df6951fa484e59de33ff773fbd4b41"},
|
||||||
|
{file = "typed_ast-1.4.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:bcd3b13b56ea479b3650b82cabd6b5343a625b0ced5429e4ccad28a8973f301b"},
|
||||||
|
{file = "typed_ast-1.4.1-cp37-cp37m-win32.whl", hash = "sha256:d5d33e9e7af3b34a40dc05f498939f0ebf187f07c385fd58d591c533ad8562fe"},
|
||||||
|
{file = "typed_ast-1.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:0666aa36131496aed8f7be0410ff974562ab7eeac11ef351def9ea6fa28f6355"},
|
||||||
|
{file = "typed_ast-1.4.1-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:d205b1b46085271b4e15f670058ce182bd1199e56b317bf2ec004b6a44f911f6"},
|
||||||
|
{file = "typed_ast-1.4.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:6daac9731f172c2a22ade6ed0c00197ee7cc1221aa84cfdf9c31defeb059a907"},
|
||||||
|
{file = "typed_ast-1.4.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:498b0f36cc7054c1fead3d7fc59d2150f4d5c6c56ba7fb150c013fbc683a8d2d"},
|
||||||
|
{file = "typed_ast-1.4.1-cp38-cp38-win32.whl", hash = "sha256:715ff2f2df46121071622063fc7543d9b1fd19ebfc4f5c8895af64a77a8c852c"},
|
||||||
|
{file = "typed_ast-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc0fea399acb12edbf8a628ba8d2312f583bdbdb3335635db062fa98cf71fca4"},
|
||||||
|
{file = "typed_ast-1.4.1-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:d43943ef777f9a1c42bf4e552ba23ac77a6351de620aa9acf64ad54933ad4d34"},
|
||||||
|
{file = "typed_ast-1.4.1.tar.gz", hash = "sha256:8c8aaad94455178e3187ab22c8b01a3837f8ee50e09cf31f1ba129eb293ec30b"},
|
||||||
|
]
|
||||||
|
zipp = [
|
||||||
|
{file = "zipp-3.1.0-py3-none-any.whl", hash = "sha256:aa36550ff0c0b7ef7fa639055d797116ee891440eac1a56f378e2d3179e0320b"},
|
||||||
|
{file = "zipp-3.1.0.tar.gz", hash = "sha256:c599e4d75c98f6798c509911d08a22e6c021d074469042177c8c86fb92eefd96"},
|
||||||
|
]
|
@ -1,11 +1,77 @@
|
|||||||
[build-system]
|
[build-system]
|
||||||
requires = [
|
requires = ["poetry>=1.0.9,<2.0"]
|
||||||
"setuptools",
|
build-backend = "poetry.masonry.api"
|
||||||
"setuptools-scm",
|
|
||||||
"wheel",
|
[tool.poetry]
|
||||||
]
|
name = "merkle-tree-stream"
|
||||||
build-backend = "setuptools.build_meta"
|
version = "0.0.1a5"
|
||||||
|
description = "A stream that generates a merkle tree based on the incoming data"
|
||||||
|
authors = ["decentral1se <hi@decentral1.se>"]
|
||||||
|
maintainers = ["decentral1se <hi@decentral1.se>"]
|
||||||
|
license = "GPLv3"
|
||||||
|
readme = "README.md"
|
||||||
|
repository = "https://github.com/hyperpy/merkle-tree-stream"
|
||||||
|
keywords = ["hypercore", "hypercore-protocol"]
|
||||||
|
|
||||||
|
[tool.poetry.dependencies]
|
||||||
|
python = "^3.6"
|
||||||
|
attrs = "^19.3.0"
|
||||||
|
flat-tree = "^0.0.1-alpha.8"
|
||||||
|
|
||||||
|
[tool.poetry.dev-dependencies]
|
||||||
|
black = "^19.10b0"
|
||||||
|
flake8 = "^3.8.3"
|
||||||
|
isort = "^5.0.2"
|
||||||
|
|
||||||
[tool.black]
|
[tool.black]
|
||||||
line-length = 80
|
line-length = 80
|
||||||
target-version = ["py38"]
|
target-version = ["py38"]
|
||||||
|
include = '\.pyi?$'
|
||||||
|
|
||||||
|
[tool.isort]
|
||||||
|
include_trailing_comma = true
|
||||||
|
known_first_party = "merkle_tree_stream"
|
||||||
|
known_third_party = "pytest"
|
||||||
|
line_length = 80
|
||||||
|
multi_line_output = 3
|
||||||
|
skip = ".venv,.tox"
|
||||||
|
|
||||||
|
[tool.tox]
|
||||||
|
legacy_tox_ini = """
|
||||||
|
[tox]
|
||||||
|
envlist =
|
||||||
|
{py36,py37,py38}
|
||||||
|
lint
|
||||||
|
sort
|
||||||
|
format
|
||||||
|
type
|
||||||
|
skip_missing_interpreters = True
|
||||||
|
isolated_build = True
|
||||||
|
|
||||||
|
[testenv]
|
||||||
|
deps =
|
||||||
|
pytest
|
||||||
|
pytest-cov
|
||||||
|
pytest-mock
|
||||||
|
commands = pytest test/ --cov={toxinidir}/merkle_tree_stream/ --no-cov-on-fail {posargs}
|
||||||
|
|
||||||
|
[testenv:lint]
|
||||||
|
skipdist = True
|
||||||
|
deps = flake8
|
||||||
|
commands = flake8 {posargs:--max-line-length 80} merkle_tree_stream/ test/
|
||||||
|
|
||||||
|
[testenv:sort]
|
||||||
|
skipdist = True
|
||||||
|
deps = isort
|
||||||
|
commands = isort {posargs:-c} -sp setup.cfg merkle_tree_stream/ test/
|
||||||
|
|
||||||
|
[testenv:format]
|
||||||
|
skipdist = True
|
||||||
|
deps = black
|
||||||
|
commands = black {posargs:--check} merkle_tree_stream/ test/
|
||||||
|
|
||||||
|
[testenv:type]
|
||||||
|
skipdist = True
|
||||||
|
deps = mypy
|
||||||
|
commands = mypy {posargs:--ignore-missing-imports} merkle_tree_stream/ test/
|
||||||
|
"""
|
||||||
|
52
setup.cfg
52
setup.cfg
@ -1,52 +0,0 @@
|
|||||||
[tool:pytest]
|
|
||||||
testpaths = test
|
|
||||||
|
|
||||||
[flake8]
|
|
||||||
max-line-length = 80
|
|
||||||
|
|
||||||
[isort]
|
|
||||||
known_first_party = merkle_tree_stream
|
|
||||||
known_third_party = pytest
|
|
||||||
line_length = 80
|
|
||||||
multi_line_output = 3
|
|
||||||
skip = .venv, .tox
|
|
||||||
include_trailing_comma = True
|
|
||||||
|
|
||||||
[metadata]
|
|
||||||
name = merkle-tree-stream
|
|
||||||
author = decentral1se
|
|
||||||
author_email = hi@decentral1.se
|
|
||||||
maintainer = decentral1se
|
|
||||||
maintainer_email = hi@decentral1.se
|
|
||||||
url = https://git.autonomic.zone/hyperpy/merkle-tree-stream
|
|
||||||
project_urls =
|
|
||||||
Source Code = https://git.autonomic.zone/hyperpy/merkle-tree-stream
|
|
||||||
description = A stream that generates a merkle tree based on the incoming data.
|
|
||||||
long_description = file: README.md
|
|
||||||
license = GPLv3
|
|
||||||
license_file = LICENSE
|
|
||||||
classifiers =
|
|
||||||
Programming Language :: Python :: 3
|
|
||||||
Programming Language :: Python :: 3.6
|
|
||||||
Programming Language :: Python :: 3.7
|
|
||||||
Programming Language :: Python :: 3.8
|
|
||||||
install_requires =
|
|
||||||
attrs >= 19.1.0, < 20.0
|
|
||||||
flat-tree >= 0.0.1a3, < 1.0.0
|
|
||||||
|
|
||||||
[options]
|
|
||||||
use_scm_version = True
|
|
||||||
python_requires = >=3.6
|
|
||||||
setup_requires =
|
|
||||||
setuptools_scm
|
|
||||||
setuptools_scm_git_archive
|
|
||||||
package_dir =
|
|
||||||
= .
|
|
||||||
packages = find:
|
|
||||||
zip_safe = False
|
|
||||||
install_requires =
|
|
||||||
attrs >= 19.1.0, < 20.0
|
|
||||||
flat-tree >= 0.0.1a3, < 1.0
|
|
||||||
|
|
||||||
[options.packages.find]
|
|
||||||
where = .
|
|
@ -1,10 +0,0 @@
|
|||||||
"""Version test module."""
|
|
||||||
|
|
||||||
|
|
||||||
def test_version_fails_gracefully(mocker):
|
|
||||||
target = "pkg_resources.get_distribution"
|
|
||||||
mocker.patch(target, side_effect=Exception())
|
|
||||||
|
|
||||||
from merkle_tree_stream.__init__ import __version__
|
|
||||||
|
|
||||||
assert __version__ == "unknown"
|
|
47
tox.ini
47
tox.ini
@ -1,47 +0,0 @@
|
|||||||
[tox]
|
|
||||||
envlist =
|
|
||||||
{py36,py37,py38}
|
|
||||||
lint
|
|
||||||
sort
|
|
||||||
format
|
|
||||||
type
|
|
||||||
docs
|
|
||||||
skip_missing_interpreters = True
|
|
||||||
isolated_build = True
|
|
||||||
|
|
||||||
[testenv]
|
|
||||||
deps =
|
|
||||||
pytest
|
|
||||||
pytest-cov
|
|
||||||
pytest-mock
|
|
||||||
commands = pytest test/ --cov={toxinidir}/merkle_tree_stream/ --no-cov-on-fail {posargs}
|
|
||||||
|
|
||||||
[testenv:lint]
|
|
||||||
skipdist = True
|
|
||||||
deps = flake8
|
|
||||||
commands = flake8 {posargs} merkle_tree_stream/ test/
|
|
||||||
|
|
||||||
[testenv:sort]
|
|
||||||
skipdist = True
|
|
||||||
deps = isort
|
|
||||||
commands = isort {posargs:-rc -c} -sp setup.cfg merkle_tree_stream/ test/
|
|
||||||
|
|
||||||
[testenv:format]
|
|
||||||
skipdist = True
|
|
||||||
deps = black
|
|
||||||
commands = black {posargs:--check} merkle_tree_stream/ test/
|
|
||||||
|
|
||||||
[testenv:type]
|
|
||||||
skipdist = True
|
|
||||||
deps = mypy
|
|
||||||
commands = mypy merkle_tree_stream/ test/
|
|
||||||
|
|
||||||
[testenv:release]
|
|
||||||
deps = twine
|
|
||||||
commands =
|
|
||||||
rm -rf {toxworkdir}/dist
|
|
||||||
python -m setup sdist --dist-dir {toxworkdir}/dist bdist_wheel
|
|
||||||
python -m setup sdist --dist-dir {toxworkdir}/dist bdist_egg
|
|
||||||
twine upload {toxworkdir}/dist/*
|
|
||||||
whitelist_externals =
|
|
||||||
rm
|
|
Loading…
Reference in New Issue
Block a user