From 33f36ff533ad69c6f688a98ca7e6d12a00098f48 Mon Sep 17 00:00:00 2001 From: Titusz Pan Date: Wed, 24 Jan 2024 21:37:36 +0100 Subject: [PATCH] Fixed prefix extraction during normalization --- CHANGELOG.md | 1 + docs/changelog.md | 1 + iscc_core/codec.py | 2 +- tests/test_codec.py | 5 +++++ 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d919ba..70048e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## [1.0.8] - Unreleased - Import from pydantic v2 lib first +- Fixed prefix extraction during normalization ## [1.0.7] - 2024-01-07 - Support pydantic v1 & v2 diff --git a/docs/changelog.md b/docs/changelog.md index 6d919ba..70048e6 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -2,6 +2,7 @@ ## [1.0.8] - Unreleased - Import from pydantic v2 lib first +- Fixed prefix extraction during normalization ## [1.0.7] - 2024-01-07 - Support pydantic v1 & v2 diff --git a/iscc_core/codec.py b/iscc_core/codec.py index 33ad475..b1ab987 100644 --- a/iscc_core/codec.py +++ b/iscc_core/codec.py @@ -418,7 +418,7 @@ def iscc_normalize(iscc_code): raise ValueError(f"Malformed multiformat codec: {decoded[:2]}") iscc_code = encode_base32(decoded[2:]) else: - prefix = iscc_code.lstrip("ISCC:").lstrip("iscc:")[:2].upper() + prefix = iscc_code.upper().replace("ISCC:", "")[:2] if prefix not in PREFIXES: raise ValueError(f"ISCC starts with invalid prefix {prefix}") diff --git a/tests/test_codec.py b/tests/test_codec.py index 22b1e18..0c77093 100644 --- a/tests/test_codec.py +++ b/tests/test_codec.py @@ -298,6 +298,11 @@ def test_Code_rnd(): assert ic.Code.rnd(ic.MT.DATA).maintype == ic.MT.DATA +def test_nomralize_roundtrip(): + code = "ISCC:IABTRD3EMDL2W74Z4ROZTOJTT3BDY" + assert ic.iscc_normalize(code) == code + + def test_noramlize_bad_prefix(): with pytest.raises(ValueError): ic.iscc_normalize("ISCC:LA22222222")