Skip to content

Commit 5f23ed9

Browse files
authored
Merge pull request #1342 from JohnVillalovos/jlvillal/mypy_incomplete
chore: disallow incomplete type defs
2 parents d8b8a0a + 907634f commit 5f23ed9

File tree

5 files changed

+45
-31
lines changed

5 files changed

+45
-31
lines changed

.mypy.ini

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,6 @@
11
[mypy]
22
files = gitlab/*.py
3+
4+
# disallow_incomplete_defs: This flag reports an error whenever it encounters a
5+
# partly annotated function definition.
6+
disallow_incomplete_defs = True

gitlab/base.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ def __getattr__(self, name: str) -> Any:
9898
except KeyError:
9999
raise AttributeError(name)
100100

101-
def __setattr__(self, name: str, value) -> None:
101+
def __setattr__(self, name: str, value: Any) -> None:
102102
self.__dict__["_updated_attrs"][name] = value
103103

104104
def __str__(self) -> str:
@@ -116,12 +116,16 @@ def __repr__(self) -> str:
116116
else:
117117
return "<%s>" % self.__class__.__name__
118118

119-
def __eq__(self, other) -> bool:
119+
def __eq__(self, other: object) -> bool:
120+
if not isinstance(other, RESTObject):
121+
return NotImplemented
120122
if self.get_id() and other.get_id():
121123
return self.get_id() == other.get_id()
122124
return super(RESTObject, self) == other
123125

124-
def __ne__(self, other) -> bool:
126+
def __ne__(self, other: object) -> bool:
127+
if not isinstance(other, RESTObject):
128+
return NotImplemented
125129
if self.get_id() and other.get_id():
126130
return self.get_id() != other.get_id()
127131
return super(RESTObject, self) != other
@@ -144,7 +148,7 @@ def _create_managers(self) -> None:
144148
manager = cls(self.manager.gitlab, parent=self)
145149
self.__dict__[attr] = manager
146150

147-
def _update_attrs(self, new_attrs) -> None:
151+
def _update_attrs(self, new_attrs: Dict[str, Any]) -> None:
148152
self.__dict__["_updated_attrs"] = {}
149153
self.__dict__["_attrs"] = new_attrs
150154

gitlab/cli.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import functools
2222
import re
2323
import sys
24-
from typing import Any, Callable, Dict, Tuple
24+
from typing import Any, Callable, Dict, Optional, Tuple, Union
2525

2626
import gitlab.config
2727

@@ -32,21 +32,24 @@
3232
# action: (mandatory_args, optional_args, in_obj),
3333
# },
3434
# }
35-
custom_actions: Dict[str, Dict[str, Tuple[Tuple[Any, ...], Tuple[Any, ...], bool]]] = {}
35+
custom_actions: Dict[str, Dict[str, Tuple[Tuple[str, ...], Tuple[str, ...], bool]]] = {}
3636

3737

3838
def register_custom_action(
39-
cls_names, mandatory: Tuple[Any, ...] = tuple(), optional: Tuple[Any, ...] = tuple()
39+
cls_names: Union[str, Tuple[str, ...]],
40+
mandatory: Tuple[str, ...] = tuple(),
41+
optional: Tuple[str, ...] = tuple(),
4042
) -> Callable:
41-
def wrap(f) -> Callable:
43+
def wrap(f: Callable) -> Callable:
4244
@functools.wraps(f)
4345
def wrapped_f(*args, **kwargs):
4446
return f(*args, **kwargs)
4547

4648
# in_obj defines whether the method belongs to the obj or the manager
4749
in_obj = True
48-
classes = cls_names
49-
if type(cls_names) != tuple:
50+
if isinstance(cls_names, tuple):
51+
classes = cls_names
52+
else:
5053
classes = (cls_names,)
5154

5255
for cls_name in classes:
@@ -65,7 +68,7 @@ def wrapped_f(*args, **kwargs):
6568
return wrap
6669

6770

68-
def die(msg: str, e=None) -> None:
71+
def die(msg: str, e: Optional[Exception] = None) -> None:
6972
if e:
7073
msg = "%s (%s)" % (msg, e)
7174
sys.stderr.write(msg + "\n")
@@ -76,7 +79,7 @@ def what_to_cls(what: str) -> str:
7679
return "".join([s.capitalize() for s in what.split("-")])
7780

7881

79-
def cls_to_what(cls) -> str:
82+
def cls_to_what(cls: Any) -> str:
8083
return camel_re.sub(r"\1-\2", cls.__name__).lower()
8184

8285

gitlab/client.py

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ def __init__(
145145
def __enter__(self) -> "Gitlab":
146146
return self
147147

148-
def __exit__(self, *args) -> None:
148+
def __exit__(self, *args: Any) -> None:
149149
self.session.close()
150150

151151
def __getstate__(self) -> Dict[str, Any]:
@@ -180,7 +180,9 @@ def api_version(self) -> str:
180180
return self._api_version
181181

182182
@classmethod
183-
def from_config(cls, gitlab_id=None, config_files=None) -> "Gitlab":
183+
def from_config(
184+
cls, gitlab_id: Optional[str] = None, config_files: Optional[List[str]] = None
185+
) -> "Gitlab":
184186
"""Create a Gitlab connection from configuration files.
185187
186188
Args:
@@ -247,7 +249,7 @@ def version(self) -> Tuple[str, str]:
247249
return cast(str, self._server_version), cast(str, self._server_revision)
248250

249251
@gitlab.exceptions.on_http_error(gitlab.exceptions.GitlabVerifyError)
250-
def lint(self, content: str, **kwargs) -> Tuple[bool, List[str]]:
252+
def lint(self, content: str, **kwargs: Any) -> Tuple[bool, List[str]]:
251253
"""Validate a gitlab CI configuration.
252254
253255
Args:
@@ -269,7 +271,7 @@ def lint(self, content: str, **kwargs) -> Tuple[bool, List[str]]:
269271

270272
@gitlab.exceptions.on_http_error(gitlab.exceptions.GitlabMarkdownError)
271273
def markdown(
272-
self, text: str, gfm: bool = False, project: Optional[str] = None, **kwargs
274+
self, text: str, gfm: bool = False, project: Optional[str] = None, **kwargs: Any
273275
) -> str:
274276
"""Render an arbitrary Markdown document.
275277
@@ -296,7 +298,7 @@ def markdown(
296298
return data["html"]
297299

298300
@gitlab.exceptions.on_http_error(gitlab.exceptions.GitlabLicenseError)
299-
def get_license(self, **kwargs) -> Dict[str, Any]:
301+
def get_license(self, **kwargs: Any) -> Dict[str, Any]:
300302
"""Retrieve information about the current license.
301303
302304
Args:
@@ -315,7 +317,7 @@ def get_license(self, **kwargs) -> Dict[str, Any]:
315317
return {}
316318

317319
@gitlab.exceptions.on_http_error(gitlab.exceptions.GitlabLicenseError)
318-
def set_license(self, license: str, **kwargs) -> Dict[str, Any]:
320+
def set_license(self, license: str, **kwargs: Any) -> Dict[str, Any]:
319321
"""Add a new license.
320322
321323
Args:
@@ -446,7 +448,7 @@ def http_request(
446448
post_data: Optional[Dict[str, Any]] = None,
447449
streamed: bool = False,
448450
files: Optional[Dict[str, Any]] = None,
449-
**kwargs,
451+
**kwargs: Any,
450452
) -> requests.Response:
451453
"""Make an HTTP request to the Gitlab server.
452454
@@ -577,7 +579,7 @@ def http_get(
577579
query_data: Optional[Dict[str, Any]] = None,
578580
streamed: bool = False,
579581
raw: bool = False,
580-
**kwargs,
582+
**kwargs: Any,
581583
) -> Union[Dict[str, Any], requests.Response]:
582584
"""Make a GET request to the Gitlab server.
583585
@@ -621,8 +623,8 @@ def http_list(
621623
self,
622624
path: str,
623625
query_data: Optional[Dict[str, Any]] = None,
624-
as_list=None,
625-
**kwargs,
626+
as_list: Optional[bool] = None,
627+
**kwargs: Any,
626628
) -> Union["GitlabList", List[Dict[str, Any]]]:
627629
"""Make a GET request to the Gitlab server for list-oriented queries.
628630
@@ -670,7 +672,7 @@ def http_post(
670672
query_data: Optional[Dict[str, Any]] = None,
671673
post_data: Optional[Dict[str, Any]] = None,
672674
files: Optional[Dict[str, Any]] = None,
673-
**kwargs,
675+
**kwargs: Any,
674676
) -> Union[Dict[str, Any], requests.Response]:
675677
"""Make a POST request to the Gitlab server.
676678
@@ -717,7 +719,7 @@ def http_put(
717719
query_data: Optional[Dict[str, Any]] = None,
718720
post_data: Optional[Dict[str, Any]] = None,
719721
files: Optional[Dict[str, Any]] = None,
720-
**kwargs,
722+
**kwargs: Any,
721723
) -> Union[Dict[str, Any], requests.Response]:
722724
"""Make a PUT request to the Gitlab server.
723725
@@ -755,7 +757,7 @@ def http_put(
755757
error_message="Failed to parse the server message"
756758
) from e
757759

758-
def http_delete(self, path: str, **kwargs) -> requests.Response:
760+
def http_delete(self, path: str, **kwargs: Any) -> requests.Response:
759761
"""Make a PUT request to the Gitlab server.
760762
761763
Args:
@@ -773,7 +775,7 @@ def http_delete(self, path: str, **kwargs) -> requests.Response:
773775

774776
@gitlab.exceptions.on_http_error(gitlab.exceptions.GitlabSearchError)
775777
def search(
776-
self, scope: str, search: str, **kwargs
778+
self, scope: str, search: str, **kwargs: Any
777779
) -> Union["GitlabList", List[Dict[str, Any]]]:
778780
"""Search GitLab resources matching the provided string.'
779781
@@ -806,7 +808,7 @@ def __init__(
806808
url: str,
807809
query_data: Dict[str, Any],
808810
get_next: bool = True,
809-
**kwargs,
811+
**kwargs: Any,
810812
) -> None:
811813
self._gl = gl
812814

@@ -817,7 +819,7 @@ def __init__(
817819
self._get_next = get_next
818820

819821
def _query(
820-
self, url: str, query_data: Optional[Dict[str, Any]] = None, **kwargs
822+
self, url: str, query_data: Optional[Dict[str, Any]] = None, **kwargs: Any
821823
) -> None:
822824
query_data = query_data or {}
823825
result = self._gl.http_request("get", url, query_data=query_data, **kwargs)
@@ -842,7 +844,7 @@ def _query(
842844
self._total: Optional[Union[str, int]] = result.headers.get("X-Total")
843845

844846
try:
845-
self._data = result.json()
847+
self._data: List[Dict[str, Any]] = result.json()
846848
except Exception as e:
847849
raise gitlab.exceptions.GitlabParsingError(
848850
error_message="Failed to parse the server message"

gitlab/utils.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323

2424
class _StdoutStream(object):
25-
def __call__(self, chunk) -> None:
25+
def __call__(self, chunk: Any) -> None:
2626
print(chunk)
2727

2828

@@ -31,7 +31,7 @@ def response_content(
3131
streamed: bool,
3232
action: Optional[Callable],
3333
chunk_size: int,
34-
):
34+
) -> Optional[bytes]:
3535
if streamed is False:
3636
return response.content
3737

@@ -41,6 +41,7 @@ def response_content(
4141
for chunk in response.iter_content(chunk_size=chunk_size):
4242
if chunk:
4343
action(chunk)
44+
return None
4445

4546

4647
def copy_dict(dest: Dict[str, Any], src: Dict[str, Any]) -> None:

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy