Skip to content

Commit 0950a47

Browse files
committed
Add mypy type checking to CI workflow
Fix mypy errors: add types-requests stubs, fix variable type reassignment in query serialization, and add cast for HostResult. Add make typecheck step to both CI jobs. Closes #42
1 parent 098e5f1 commit 0950a47

3 files changed

Lines changed: 10 additions & 11 deletions

File tree

.github/workflows/actions.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ jobs:
2626
run: make check-format
2727
- name: Run linter
2828
run: make lint
29+
- name: Type check
30+
run: make typecheck
2931
- name: Security audit
3032
run: make audit
3133

@@ -49,5 +51,7 @@ jobs:
4951
run: make check-format
5052
- name: Run linter
5153
run: make lint
54+
- name: Type check
55+
run: make typecheck
5256
- name: Security audit
5357
run: make audit

leakix/client.py

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import json
33
from enum import Enum
44
from importlib.metadata import version
5-
from typing import Any
5+
from typing import Any, cast
66

77
import requests
88
from l9format import l9format
@@ -99,9 +99,7 @@ def get(
9999
if queries is None or len(queries) == 0:
100100
serialized_query = EmptyQuery().serialize()
101101
else:
102-
serialized_query = [q.serialize() for q in queries]
103-
serialized_query = " ".join(serialized_query)
104-
serialized_query = f"{serialized_query}"
102+
serialized_query = " ".join(q.serialize() for q in queries)
105103
url = f"{self.base_url}/search"
106104
r = self.__get(
107105
url=url,
@@ -149,7 +147,7 @@ def get_host(self, ipv4: str) -> AbstractResponse:
149147
r = self.__get(url, params=None)
150148
if r.is_success():
151149
response_json = r.json()
152-
formatted_result = HostResult.from_dict(response_json)
150+
formatted_result = cast(HostResult, HostResult.from_dict(response_json))
153151
response_json = {
154152
"services": formatted_result.Services,
155153
"leaks": formatted_result.Leaks,
@@ -190,9 +188,7 @@ def bulk_export(self, queries: list[Query] | None = None) -> AbstractResponse:
190188
if queries is None or len(queries) == 0:
191189
serialized_query = EmptyQuery().serialize()
192190
else:
193-
serialized_query = [q.serialize() for q in queries]
194-
serialized_query = " ".join(serialized_query)
195-
serialized_query = f"{serialized_query}"
191+
serialized_query = " ".join(q.serialize() for q in queries)
196192
params = {"q": serialized_query}
197193
r = requests.get(url, params=params, headers=self.headers, stream=True)
198194
if r.status_code == 200:
@@ -228,9 +224,7 @@ def bulk_service(self, queries: list[Query] | None = None) -> AbstractResponse:
228224
if queries is None or len(queries) == 0:
229225
serialized_query = EmptyQuery().serialize()
230226
else:
231-
serialized_query = [q.serialize() for q in queries]
232-
serialized_query = " ".join(serialized_query)
233-
serialized_query = f"{serialized_query}"
227+
serialized_query = " ".join(q.serialize() for q in queries)
234228
params = {"q": serialized_query}
235229
r = requests.get(url, params=params, headers=self.headers, stream=True)
236230
if r.status_code == 200:

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ dev = [
1616
"pytest",
1717
"pytest-cov",
1818
"mypy",
19+
"types-requests",
1920
"requests-mock",
2021
"ruff",
2122
"pip-audit",

0 commit comments

Comments
 (0)