Skip to content

Commit a29cd6c

Browse files
chore: enable mypy check strict_equality
Enable the `mypy` `strict_equality` check.
1 parent ed110bd commit a29cd6c

File tree

3 files changed

+29
-9
lines changed

3 files changed

+29
-9
lines changed

gitlab/v4/objects/users.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
https://docs.gitlab.com/ee/api/users.html
44
https://docs.gitlab.com/ee/api/projects.html#list-projects-starred-by-a-user
55
"""
6-
from typing import Any, cast, Dict, List, Union
6+
from typing import Any, cast, Dict, List, Optional, Union
77

88
import requests
99

@@ -163,7 +163,7 @@ class User(SaveMixin, ObjectDeleteMixin, RESTObject):
163163

164164
@cli.register_custom_action("User")
165165
@exc.on_http_error(exc.GitlabBlockError)
166-
def block(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]:
166+
def block(self, **kwargs: Any) -> Optional[bool]:
167167
"""Block the user.
168168
169169
Args:
@@ -177,7 +177,11 @@ def block(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]:
177177
Whether the user status has been changed
178178
"""
179179
path = f"/users/{self.encoded_id}/block"
180-
server_data = self.manager.gitlab.http_post(path, **kwargs)
180+
# NOTE: Undocumented behavior of the GitLab API is that it returns a
181+
# boolean or None
182+
server_data = cast(
183+
Optional[bool], self.manager.gitlab.http_post(path, **kwargs)
184+
)
181185
if server_data is True:
182186
self._attrs["state"] = "blocked"
183187
return server_data
@@ -220,7 +224,7 @@ def unfollow(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]:
220224

221225
@cli.register_custom_action("User")
222226
@exc.on_http_error(exc.GitlabUnblockError)
223-
def unblock(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]:
227+
def unblock(self, **kwargs: Any) -> Optional[bool]:
224228
"""Unblock the user.
225229
226230
Args:
@@ -234,7 +238,11 @@ def unblock(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]:
234238
Whether the user status has been changed
235239
"""
236240
path = f"/users/{self.encoded_id}/unblock"
237-
server_data = self.manager.gitlab.http_post(path, **kwargs)
241+
# NOTE: Undocumented behavior of the GitLab API is that it returns a
242+
# boolean or None
243+
server_data = cast(
244+
Optional[bool], self.manager.gitlab.http_post(path, **kwargs)
245+
)
238246
if server_data is True:
239247
self._attrs["state"] = "active"
240248
return server_data

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ disallow_incomplete_defs = true
1313
disallow_subclassing_any = true
1414
disallow_untyped_decorators = true
1515
disallow_untyped_defs = true
16+
no_implicit_reexport = true
17+
strict_equality = true
1618
warn_redundant_casts = true
1719
warn_unused_configs = true
1820
warn_unused_ignores = true
@@ -21,8 +23,6 @@ warn_unused_ignores = true
2123
# disallow_any_generics = true
2224
# disallow_untyped_calls = true
2325
# no_implicit_optional = true
24-
no_implicit_reexport = true
25-
# strict_equality = true
2626
# warn_return_any = true
2727

2828
[[tool.mypy.overrides]] # Overrides for currently untyped modules

tests/functional/api/test_users.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,26 @@ def test_create_user(gl, fixture_dir):
2828

2929

3030
def test_block_user(gl, user):
31-
user.block()
31+
result = user.block()
32+
assert result is True
3233
users = gl.users.list(blocked=True)
3334
assert user in users
3435

35-
user.unblock()
36+
# block again
37+
result = user.block()
38+
# Trying to block an already blocked user returns None
39+
assert result is None
40+
41+
result = user.unblock()
42+
assert result is True
3643
users = gl.users.list(blocked=False)
3744
assert user in users
3845

46+
# unblock again
47+
result = user.unblock()
48+
# Trying to unblock an already blocked user returns False
49+
assert result is False
50+
3951

4052
def test_ban_user(gl, user):
4153
user.ban()

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