From c4aaa6e0a6b5bde6ff923588407134982b32c6a0 Mon Sep 17 00:00:00 2001 From: Dave Mihalcik Date: Thu, 30 Apr 2026 09:50:36 -0400 Subject: [PATCH 1/3] fix(otdf-sdk-mgr): normalize refs/heads/ prefix in version resolution Resolves refs/heads/ inputs (other than main) by stripping the prefix before lookup, so callers passing full git refs like refs/heads/release/sdk-v0.17 no longer fail version resolution. Co-Authored-By: Claude Sonnet 4.6 --- otdf-sdk-mgr/src/otdf_sdk_mgr/resolve.py | 4 +++- otdf-sdk-mgr/tests/test_resolve.py | 12 ++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/otdf-sdk-mgr/src/otdf_sdk_mgr/resolve.py b/otdf-sdk-mgr/src/otdf_sdk_mgr/resolve.py index a3c6115bf..3a3221bbd 100644 --- a/otdf-sdk-mgr/src/otdf_sdk_mgr/resolve.py +++ b/otdf-sdk-mgr/src/otdf_sdk_mgr/resolve.py @@ -155,7 +155,9 @@ def _annotate(result: ResolveResult) -> ResolveResult: try: repo = Git() - if version == "main" or version == "refs/heads/main": + if version.startswith("refs/heads/"): + version = version[len("refs/heads/"):] + if version == "main": all_heads = [r.split("\t") for r in repo.ls_remote(sdk_url, heads=True).split("\n")] try: sha, _ = next(tag for tag in all_heads if "refs/heads/main" in tag) diff --git a/otdf-sdk-mgr/tests/test_resolve.py b/otdf-sdk-mgr/tests/test_resolve.py index f100152f7..e75ddb0b9 100644 --- a/otdf-sdk-mgr/tests/test_resolve.py +++ b/otdf-sdk-mgr/tests/test_resolve.py @@ -67,6 +67,18 @@ def test_refs_heads_main_alias(self): assert is_resolve_success(result) assert result["tag"] == "main" + def test_refs_heads_non_main_branch(self): + ls = make_ls_remote( + (SHA40, "refs/heads/release/sdk-v0.17"), + (SHA40, "refs/heads/main"), + ) + with patch_git(ls): + result = resolve("js", "refs/heads/release/sdk-v0.17", None) + assert is_resolve_success(result) + assert result["head"] is True + assert result["tag"] == "release/sdk-v0.17" + assert result["sha"] == SHA40 + # --------------------------------------------------------------------------- # resolve() — SHA inputs From 8275879b342d3d5e608f06dd21bdb0c70055ec26 Mon Sep 17 00:00:00 2001 From: Dave Mihalcik Date: Fri, 1 May 2026 09:37:42 -0400 Subject: [PATCH 2/3] fixup more idiomatic python --- otdf-sdk-mgr/src/otdf_sdk_mgr/resolve.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/otdf-sdk-mgr/src/otdf_sdk_mgr/resolve.py b/otdf-sdk-mgr/src/otdf_sdk_mgr/resolve.py index 3a3221bbd..d35609b0d 100644 --- a/otdf-sdk-mgr/src/otdf_sdk_mgr/resolve.py +++ b/otdf-sdk-mgr/src/otdf_sdk_mgr/resolve.py @@ -155,8 +155,7 @@ def _annotate(result: ResolveResult) -> ResolveResult: try: repo = Git() - if version.startswith("refs/heads/"): - version = version[len("refs/heads/"):] + version = version.removeprefix("refs/heads/") if version == "main": all_heads = [r.split("\t") for r in repo.ls_remote(sdk_url, heads=True).split("\n")] try: From 8d0323215c9d88cc303542c3a668161e30342eb7 Mon Sep 17 00:00:00 2001 From: Dave Mihalcik Date: Fri, 1 May 2026 09:47:52 -0400 Subject: [PATCH 3/3] fixup pyright is a stickler --- otdf-sdk-mgr/tests/test_resolve.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/otdf-sdk-mgr/tests/test_resolve.py b/otdf-sdk-mgr/tests/test_resolve.py index e75ddb0b9..627478c11 100644 --- a/otdf-sdk-mgr/tests/test_resolve.py +++ b/otdf-sdk-mgr/tests/test_resolve.py @@ -75,7 +75,7 @@ def test_refs_heads_non_main_branch(self): with patch_git(ls): result = resolve("js", "refs/heads/release/sdk-v0.17", None) assert is_resolve_success(result) - assert result["head"] is True + assert "head" in result and result["head"] is True assert result["tag"] == "release/sdk-v0.17" assert result["sha"] == SHA40