forked from bartvdbraak/blender
Cleanup: quiet mypy warnings in gitea_inactive_developers
Also add to the list of scripts to check with "make check_mypy".
This commit is contained in:
parent
b827c8cd1e
commit
6722f90734
@ -58,6 +58,7 @@ PATHS_EXCLUDE = set(
|
|||||||
"tools/utils/git_log.py",
|
"tools/utils/git_log.py",
|
||||||
"tools/utils/git_log_review_commits.py",
|
"tools/utils/git_log_review_commits.py",
|
||||||
"tools/utils/git_log_review_commits_advanced.py",
|
"tools/utils/git_log_review_commits_advanced.py",
|
||||||
|
"tools/utils/gitea_inactive_developers.py",
|
||||||
"tools/utils/make_cursor_gui.py",
|
"tools/utils/make_cursor_gui.py",
|
||||||
"tools/utils/make_gl_stipple_from_xpm.py",
|
"tools/utils/make_gl_stipple_from_xpm.py",
|
||||||
"tools/utils/make_shape_2d_from_blend.py",
|
"tools/utils/make_shape_2d_from_blend.py",
|
||||||
|
@ -31,7 +31,9 @@ from typing import (
|
|||||||
Tuple,
|
Tuple,
|
||||||
Type,
|
Type,
|
||||||
TypeVar,
|
TypeVar,
|
||||||
|
Union,
|
||||||
)
|
)
|
||||||
|
from requests.structures import CaseInsensitiveDict
|
||||||
|
|
||||||
logger = logging.getLogger(__file__)
|
logger = logging.getLogger(__file__)
|
||||||
|
|
||||||
@ -43,7 +45,7 @@ class TeamMember():
|
|||||||
full_name: str
|
full_name: str
|
||||||
last_login: datetime.datetime
|
last_login: datetime.datetime
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self) -> str:
|
||||||
return "{id};{login};{full_name};{last_login};{url}\n".format(
|
return "{id};{login};{full_name};{last_login};{url}\n".format(
|
||||||
id=self.id,
|
id=self.id,
|
||||||
login=self.login,
|
login=self.login,
|
||||||
@ -64,22 +66,25 @@ retry: Callable[[F], F] = retry_decorator(
|
|||||||
|
|
||||||
def assert_cast(typ: Type[T], obj: object) -> T:
|
def assert_cast(typ: Type[T], obj: object) -> T:
|
||||||
assert isinstance(obj, typ), f'object is not of type {typ}: {obj}'
|
assert isinstance(obj, typ), f'object is not of type {typ}: {obj}'
|
||||||
return cast(T, obj)
|
# NOTE: MYPY warns the cast is redundant, we might consider removing it.
|
||||||
|
return cast(T, obj) # type: ignore
|
||||||
|
|
||||||
|
|
||||||
def get_date_object(date_string: str) -> datetime.datetime:
|
def get_date_object(date_string: str) -> datetime.datetime:
|
||||||
return iso8601.parse_date(date_string)
|
result = iso8601.parse_date(date_string)
|
||||||
|
assert isinstance(result, datetime.datetime)
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
results_per_page = 25
|
results_per_page = 25
|
||||||
|
|
||||||
|
|
||||||
def get_next_page(headers: Dict, page: int) -> int:
|
def get_next_page(headers: CaseInsensitiveDict[str], page: Optional[Page]) -> Optional[Page]:
|
||||||
"""
|
"""
|
||||||
Parse the header looking for reference to next.
|
Parse the header looking for reference to next.
|
||||||
"""
|
"""
|
||||||
total_count = int(assert_cast(str, headers.get('X-Total-Count')))
|
total_count = int(assert_cast(str, headers.get('X-Total-Count')))
|
||||||
next_page = page + 1 if page else 1
|
next_page = Page(page + 1 if page else 1)
|
||||||
|
|
||||||
if next_page * results_per_page > total_count:
|
if next_page * results_per_page > total_count:
|
||||||
return None
|
return None
|
||||||
@ -105,7 +110,7 @@ def fetch_single(
|
|||||||
'Authorization': 'token ' + api_token,
|
'Authorization': 'token ' + api_token,
|
||||||
}
|
}
|
||||||
|
|
||||||
params = {
|
params: Dict[str, Union[str, int]] = {
|
||||||
'limit': results_per_page,
|
'limit': results_per_page,
|
||||||
**data,
|
**data,
|
||||||
}
|
}
|
||||||
@ -119,7 +124,7 @@ def fetch_single(
|
|||||||
response_json = response.json()
|
response_json = response.json()
|
||||||
|
|
||||||
next_page = get_next_page(response.headers, page)
|
next_page = get_next_page(response.headers, page)
|
||||||
return response_json, None if next_page is None else Page(next_page)
|
return response_json, None if next_page is None else next_page
|
||||||
|
|
||||||
|
|
||||||
def fetch_all(
|
def fetch_all(
|
||||||
@ -226,7 +231,7 @@ api_url = yarl.URL(gitea_domain + 'api/v1/')
|
|||||||
organization_name = "blender"
|
organization_name = "blender"
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main() -> None:
|
||||||
for team_name in teams:
|
for team_name in teams:
|
||||||
logger.warning(team_name)
|
logger.warning(team_name)
|
||||||
members = fetch_team_members(
|
members = fetch_team_members(
|
||||||
|
Loading…
Reference in New Issue
Block a user