From 37ca9d3ed72a83d0d1a48e27e1c4a7d6a1ea6005 Mon Sep 17 00:00:00 2001 From: Jordan Yates Date: Wed, 13 Aug 2025 21:04:26 +1000 Subject: [PATCH 1/4] ci: dependency-review: added Add a workflow for detecting bad dependencies. Signed-off-by: Jordan Yates --- .github/workflows/dependency-review.yml | 27 +++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .github/workflows/dependency-review.yml diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml new file mode 100644 index 0000000..2159f1d --- /dev/null +++ b/.github/workflows/dependency-review.yml @@ -0,0 +1,27 @@ +# Dependency Review Action +# +# This Action will scan dependency manifest files that change as part of a Pull Request, +# surfacing known-vulnerable versions of the packages declared or updated in the PR. +# Once installed, if the workflow run is marked as required, +# PRs introducing known-vulnerable packages will be blocked from merging. +# +# Source repository: https://github.com/actions/dependency-review-action +name: 'Dependency Review' + +on: [pull_request] + +permissions: + contents: read + +jobs: + dependency-review: + name: Review Dependencies + runs-on: ubuntu-latest + steps: + - name: 'Checkout Repository' + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false + + - name: 'Dependency Review' + uses: actions/dependency-review-action@8805179dc9a63c54224914839d370dd93bd37b2e # v4 From 853ac917eadce2ddd9037d3525c01b0f381385c7 Mon Sep 17 00:00:00 2001 From: Jordan Yates Date: Wed, 13 Aug 2025 21:05:09 +1000 Subject: [PATCH 2/4] tdf: fix missing properties on `UnknownTDF` Ensure that UnknownTDF has the same properties as known TDFs. Signed-off-by: Jordan Yates --- src/infuse_iot/tdf.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/infuse_iot/tdf.py b/src/infuse_iot/tdf.py index 1e89d2d..a6c0dc7 100644 --- a/src/infuse_iot/tdf.py +++ b/src/infuse_iot/tdf.py @@ -13,7 +13,8 @@ def unknown_tdf_factory(tdf_id: int, tdf_len: int) -> type[tdf_base.TdfReadingBase]: class UnknownTDF(tdf_base.TdfReadingBase): - name = str(tdf_id) + NAME = str(tdf_id) + ID = tdf_id _fields_ = [ ("data", tdf_len * ctypes.c_uint8), ] From 06572b12ab48ab9fd4efce438c0331c0555db0ec Mon Sep 17 00:00:00 2001 From: Jordan Yates Date: Wed, 13 Aug 2025 21:10:05 +1000 Subject: [PATCH 3/4] tests: tdf: test a range of unknown TDFs Test constructing a variety of unknown TDFs. Signed-off-by: Jordan Yates --- tests/tdf/test_tdf.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/tests/tdf/test_tdf.py b/tests/tdf/test_tdf.py index 3106181..f1347ec 100644 --- a/tests/tdf/test_tdf.py +++ b/tests/tdf/test_tdf.py @@ -1,6 +1,6 @@ import os -from infuse_iot.tdf import TDF +from infuse_iot.tdf import TDF, unknown_tdf_factory # assert "TOXTEMPDIR" in os.environ, "you must run these tests using tox" @@ -61,3 +61,20 @@ def test_buffers(): assert isinstance(tdf, TDF.Reading) total_tdfs += 1 assert total_tdfs > 0 + + +def test_unknown_tdf(): + for i in range(1, 10): + unknown_id = 400 + i + unknown_len = 5 + i + unknown_class = unknown_tdf_factory(unknown_id, unknown_len) + + assert hasattr(unknown_class, "ID") + assert hasattr(unknown_class, "NAME") + assert hasattr(unknown_class, "data") + + unknown_inst = unknown_class.from_buffer_copy(unknown_len * b"\x00") + + assert unknown_id == unknown_inst.ID + assert str(unknown_id) == unknown_inst.NAME + assert unknown_len == len(unknown_inst.data) From 2b9526df0f7cf5030fafe09ed990952bded52233 Mon Sep 17 00:00:00 2001 From: Jordan Yates Date: Wed, 13 Aug 2025 21:11:02 +1000 Subject: [PATCH 4/4] pyproject.toml: bump version Bump version with UnknownTDF fix. Signed-off-by: Jordan Yates --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index ea8d08f..498248d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "infuse_iot" -version = "0.1.0" +version = "0.1.1" authors = [{name = "Embeint Holdings Pty Ltd", email = "support@embeint.com"}] description = "Infuse-IoT Platform python package" classifiers = [