From 5a17b4e9987c3afa8089c034faa3ed88a710148f Mon Sep 17 00:00:00 2001 From: Jason Carver Date: Thu, 18 Aug 2022 13:06:16 -0700 Subject: [PATCH 1/6] Fix formatting using black, as part of lint-roll --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index c8ef228..0260659 100644 --- a/Makefile +++ b/Makefile @@ -31,6 +31,7 @@ lint: tox -elint lint-roll: + black ssz tests scripts setup.py isort --recursive ssz tests $(MAKE) lint From 3cbee7da92735c11065f8e541784644ca6774754 Mon Sep 17 00:00:00 2001 From: Jason Carver Date: Thu, 18 Aug 2022 13:16:24 -0700 Subject: [PATCH 2/6] Some bonus byte-sequence length validity tests Inspired by reviewing 180f6d0823782a19619feef7e8f762ae809dfa26 in #117 --- tests/sedes/test_composite_sedes.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tests/sedes/test_composite_sedes.py b/tests/sedes/test_composite_sedes.py index dc1cf58..921fc2e 100644 --- a/tests/sedes/test_composite_sedes.py +++ b/tests/sedes/test_composite_sedes.py @@ -10,6 +10,8 @@ from ssz.sedes import ( Bitlist, Bitvector, + ByteList, + ByteVector, Container, List, UInt, @@ -195,6 +197,23 @@ def test_homogeneous_sequence_length_boundary( sedes_type(element_type, length) +@pytest.mark.parametrize( + ("sedes_type", "length", "is_valid"), + ( + (ByteList, 0, True), + (ByteList, -1, False), + (ByteVector, 1, True), + (ByteVector, 0, False), + ), +) +def test_byte_sequence_length_boundary(sedes_type, length, is_valid): + if is_valid: + sedes_type(length) + else: + with pytest.raises(ValueError): + sedes_type(length) + + @pytest.mark.parametrize( ("sedes_type", "length", "is_valid"), ( From 56baec7f66e00a96638c8465c1a285b794320473 Mon Sep 17 00:00:00 2001 From: Jason Carver Date: Thu, 18 Aug 2022 13:27:52 -0700 Subject: [PATCH 3/6] Sort release notes with most recent on top This is how towncrier will dump in recent release notes. It's also more convenient for browsing users, who tend to be interested in most-recent changes and see them at the top of the page. --- docs/release_notes.rst | 69 +++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 34 deletions(-) diff --git a/docs/release_notes.rst b/docs/release_notes.rst index 3033e36..7dd677c 100644 --- a/docs/release_notes.rst +++ b/docs/release_notes.rst @@ -3,42 +3,40 @@ Release Notes .. towncrier release notes start -v0.1.0-alpha.0 --------------- - -- Launched repository, claimed names for pip, RTD, github, etc - - -v0.1.0-alpha.1 +v0.2.4 -------------- -Released 2018-02-05 +Released 2020-03-24 -- Implements January pre-release spec +- Update `pyrsistent` dependency. -v0.1.0-alpha.2 +v0.1.0-alpha.8 -------------- -Released 2018-02-05 +Released 2018-05-05 -- Add zero padding to tree hash - `#35 `_ +- Less strict class relationship requirement for equality of serializables - + `#71 `_ -v0.1.0-alpha.3 +v0.1.0-alpha.7 -------------- -Released 2018-04-04 +Released 2018-05-02 -- Implement spec version 0.5.0 +- Fix equality of serializable objects - `#64 `_ +- Add helpers to convert objects to and from a human readable representation - + `#66 `_ +- Cache hash tree root of serializable objects - `#68 `_ -v0.1.0-alpha.4 +v0.1.0-alpha.6 -------------- -Released 2018-04-09 +Released 2018-04-23 -- Fix bug in serializable class - `#56 `_ +No changes v0.1.0-alpha.5 @@ -53,37 +51,40 @@ Released 2018-04-23 `#57 `_ -v0.1.0-alpha.6 +v0.1.0-alpha.4 -------------- -Released 2018-04-23 +Released 2018-04-09 -No changes +- Fix bug in serializable class - `#56 `_ -v0.1.0-alpha.7 +v0.1.0-alpha.3 -------------- -Released 2018-05-02 +Released 2018-04-04 -- Fix equality of serializable objects - `#64 `_ -- Add helpers to convert objects to and from a human readable representation - - `#66 `_ -- Cache hash tree root of serializable objects - `#68 `_ +- Implement spec version 0.5.0 -v0.1.0-alpha.8 +v0.1.0-alpha.2 -------------- -Released 2018-05-05 +Released 2018-02-05 -- Less strict class relationship requirement for equality of serializables - - `#71 `_ +- Add zero padding to tree hash - `#35 `_ -v0.2.4 +v0.1.0-alpha.1 -------------- -Released 2020-03-24 +Released 2018-02-05 + +- Implements January pre-release spec + + +v0.1.0-alpha.0 +-------------- + +- Launched repository, claimed names for pip, RTD, github, etc -- Update `pyrsistent` dependency. From 255b1f1c57d6647879019138b4f49160b380fdcd Mon Sep 17 00:00:00 2001 From: Jason Carver Date: Thu, 18 Aug 2022 13:28:55 -0700 Subject: [PATCH 4/6] Add release notes for merged, but unreleased, PRs --- newsfragments/109.bugfix.rst | 1 + newsfragments/111.bugfix.rst | 1 + newsfragments/116.bugfix.rst | 1 + newsfragments/118.feature.rst | 3 +++ newsfragments/120.internal.rst | 1 + newsfragments/121.internal.rst | 2 ++ 6 files changed, 9 insertions(+) create mode 100644 newsfragments/109.bugfix.rst create mode 100644 newsfragments/111.bugfix.rst create mode 100644 newsfragments/116.bugfix.rst create mode 100644 newsfragments/118.feature.rst create mode 100644 newsfragments/120.internal.rst create mode 100644 newsfragments/121.internal.rst diff --git a/newsfragments/109.bugfix.rst b/newsfragments/109.bugfix.rst new file mode 100644 index 0000000..7b7644c --- /dev/null +++ b/newsfragments/109.bugfix.rst @@ -0,0 +1 @@ +Reject empty bytes at the end of a bitlist as invalid diff --git a/newsfragments/111.bugfix.rst b/newsfragments/111.bugfix.rst new file mode 100644 index 0000000..59449ca --- /dev/null +++ b/newsfragments/111.bugfix.rst @@ -0,0 +1 @@ +Reject vectors and bitvectors of length 0 as invalid, as defined in the spec. diff --git a/newsfragments/116.bugfix.rst b/newsfragments/116.bugfix.rst new file mode 100644 index 0000000..b88ba2d --- /dev/null +++ b/newsfragments/116.bugfix.rst @@ -0,0 +1 @@ +Enforce that vector types must have a maximum length of 1 or more, and lists may have a 0 max length diff --git a/newsfragments/118.feature.rst b/newsfragments/118.feature.rst new file mode 100644 index 0000000..6145a6c --- /dev/null +++ b/newsfragments/118.feature.rst @@ -0,0 +1,3 @@ +Add a :class:`~ssz.sedes.byte_list.ByteList` sedes that is more convenient and more performant. With +ByteList, the caller can decode a :class:`bytes` object, rather than passing in a list of +single-byte elements. diff --git a/newsfragments/120.internal.rst b/newsfragments/120.internal.rst new file mode 100644 index 0000000..c11c566 --- /dev/null +++ b/newsfragments/120.internal.rst @@ -0,0 +1 @@ +Upgrade black to a stable version, and pass newest style checks diff --git a/newsfragments/121.internal.rst b/newsfragments/121.internal.rst new file mode 100644 index 0000000..57c1dcb --- /dev/null +++ b/newsfragments/121.internal.rst @@ -0,0 +1,2 @@ +Use the latest project template, which gives many developer-focused benefits: in making release +notes, releasing new versions, etc. From a83fdfa6d8f4ab3be669a29d2017b68dc61fea39 Mon Sep 17 00:00:00 2001 From: Jason Carver Date: Thu, 18 Aug 2022 13:33:50 -0700 Subject: [PATCH 5/6] Skip tests when generating docs --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 0260659..49f7c75 100644 --- a/Makefile +++ b/Makefile @@ -42,7 +42,7 @@ test-all: tox build-docs: - sphinx-apidoc -o docs/ . setup.py "*conftest*" + sphinx-apidoc -o docs/ . setup.py "*conftest*" "tests/" $(MAKE) -C docs clean $(MAKE) -C docs html $(MAKE) -C docs doctest From de4b171261493a7a1aeeca029188f3d6297ba5c7 Mon Sep 17 00:00:00 2001 From: Jason Carver Date: Thu, 18 Aug 2022 13:53:51 -0700 Subject: [PATCH 6/6] Add release notes for some misc changes in this PR --- newsfragments/124.doc.rst | 1 + newsfragments/124.misc.rst | 3 +++ 2 files changed, 4 insertions(+) create mode 100644 newsfragments/124.doc.rst create mode 100644 newsfragments/124.misc.rst diff --git a/newsfragments/124.doc.rst b/newsfragments/124.doc.rst new file mode 100644 index 0000000..4497243 --- /dev/null +++ b/newsfragments/124.doc.rst @@ -0,0 +1 @@ +Sort release notes with most recent on top diff --git a/newsfragments/124.misc.rst b/newsfragments/124.misc.rst new file mode 100644 index 0000000..cf28195 --- /dev/null +++ b/newsfragments/124.misc.rst @@ -0,0 +1,3 @@ +Run black autoformat, as part of ``make lint-roll``. Added some tests to check length validation of +:class:`~ssz.sedes.byte_list.ByteList` and :class:`~ssz.sedes.byte_vector.ByteVector`. When +generating website docs from docstrings, skip tests.