Skip to content

Commit 025ab0e

Browse files
refaimclaude
andcommitted
Treat warnings as errors, fix pygit2 ls_remotes deprecation
Replace deprecated Remote.ls_remotes() with Remote.list_heads() and update ref access from dict subscript to attribute access (RemoteHead). Configure pytest filterwarnings = ["error"] to catch future deprecations. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 0c55c24 commit 025ab0e

4 files changed

Lines changed: 11 additions & 10 deletions

File tree

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ markers = [
3535
"slow: mark test as slow",
3636
]
3737
addopts = "-m 'not integration'"
38+
filterwarnings = ["error"]
3839

3940
[dependency-groups]
4041
dev = [

src/mygit.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ class RemoteState:
111111
@dataclass
112112
class _RemoteLsResult:
113113
remote: pygit2.Remote
114-
refs: list[dict]
114+
refs: list
115115
error: str | None
116116

117117

@@ -127,7 +127,7 @@ def fetch_states(requests: list[RemoteStateRequest]) -> Iterator[RemoteState]:
127127

128128
def ls(remote: pygit2.Remote) -> _RemoteLsResult:
129129
try:
130-
refs = remote.ls_remotes()
130+
refs = remote.list_heads()
131131
error = None
132132
except pygit2.GitError as exception:
133133
refs = []
@@ -148,9 +148,9 @@ def ls(remote: pygit2.Remote) -> _RemoteLsResult:
148148
else:
149149
branch_ref = f"refs/heads/{branch}"
150150
for ref in ls_result.refs:
151-
is_head = ref["name"] == "HEAD" and ref["symref_target"] == branch_ref
152-
if is_head or ref["name"] == branch_ref:
153-
yield RemoteState(url, branch, str(ref["oid"]), None)
151+
is_head = ref.name == "HEAD" and ref.symref_target == branch_ref
152+
if is_head or ref.name == branch_ref:
153+
yield RemoteState(url, branch, str(ref.oid), None)
154154
break
155155

156156

tests/conftest.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,9 +128,9 @@ def _mock_remote(name, url, refs=None, error=None):
128128
remote.name = name
129129
remote.url = url
130130
if error:
131-
remote.ls_remotes.side_effect = pygit2.GitError(error)
131+
remote.list_heads.side_effect = pygit2.GitError(error)
132132
else:
133-
remote.ls_remotes.return_value = refs or []
133+
remote.list_heads.return_value = refs or []
134134
return remote
135135

136136
return _mock_remote

tests/test_mygit.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ def test_success_returns_commit_hash(self, mock_remote, mock_pygit2_repo, fetch_
7575
remote = mock_remote(
7676
"abc123",
7777
"https://github.com/test/repo.git",
78-
refs=[{"name": "refs/heads/master", "symref_target": "", "oid": "deadbeef"}],
78+
refs=[SimpleNamespace(name="refs/heads/master", symref_target="", oid="deadbeef")],
7979
)
8080
mock_pygit2_repo.remotes.__iter__ = MagicMock(return_value=iter([remote]))
8181

@@ -92,7 +92,7 @@ def test_head_symref_resolves_branch(self, mock_remote, mock_pygit2_repo, fetch_
9292
remote = mock_remote(
9393
"abc123",
9494
"https://github.com/test/repo.git",
95-
refs=[{"name": "HEAD", "symref_target": "refs/heads/main", "oid": "cafebabe"}],
95+
refs=[SimpleNamespace(name="HEAD", symref_target="refs/heads/main", oid="cafebabe")],
9696
)
9797
mock_pygit2_repo.remotes.__iter__ = MagicMock(return_value=iter([remote]))
9898

@@ -137,7 +137,7 @@ def test_branch_not_found_in_refs(self, mock_remote, mock_pygit2_repo, fetch_sta
137137
remote = mock_remote(
138138
"abc123",
139139
"https://github.com/test/repo.git",
140-
refs=[{"name": "refs/heads/other-branch", "symref_target": "", "oid": "deadbeef"}],
140+
refs=[SimpleNamespace(name="refs/heads/other-branch", symref_target="", oid="deadbeef")],
141141
)
142142
mock_pygit2_repo.remotes.__iter__ = MagicMock(return_value=iter([remote]))
143143

0 commit comments

Comments
 (0)