Skip to content

Commit e5da73f

Browse files
author
gaetano-guerriero
authored
Merge pull request #3154 from athenianco/DEV-5521-metrics-controller-typing-fixes
[DEV-5521] metrics controller typing fixes
2 parents 25f480f + feb301f commit e5da73f

File tree

1 file changed

+54
-53
lines changed

1 file changed

+54
-53
lines changed

server/athenian/api/controllers/metrics_controller.py

Lines changed: 54 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from collections import defaultdict
22
from dataclasses import dataclass
33
from itertools import chain
4-
from typing import Any, Collection, Dict, List, Optional, Sequence, Set, Tuple
4+
from typing import Any, Collection, Optional, Sequence
55

66
from aiohttp import web
77

@@ -69,8 +69,8 @@ class FilterPRs:
6969
"""Compiled pull requests filter."""
7070

7171
service: str
72-
repogroups: List[Set[str]]
73-
participants: List[Dict[PRParticipationKind, Set[str]]]
72+
repogroups: list[set[str]]
73+
participants: list[dict[PRParticipationKind, set[str]]]
7474
labels: LabelFilter
7575
jira: JIRAFilter
7676
for_set_index: int
@@ -84,8 +84,8 @@ class FilterDevs:
8484
"""Compiled developers filter."""
8585

8686
service: str
87-
repogroups: List[Set[str]]
88-
developers: List[PRParticipants]
87+
repogroups: list[set[str]]
88+
developers: list[PRParticipants]
8989
labels: LabelFilter
9090
jira: JIRAFilter
9191
for_set: ForSetDevelopers
@@ -97,8 +97,8 @@ class FilterChecks:
9797
"""Compiled checks filter."""
9898

9999
service: str
100-
repogroups: List[Set[str]]
101-
pusher_groups: List[Sequence[str]]
100+
repogroups: list[set[str]]
101+
pusher_groups: list[Sequence[str]]
102102
labels: LabelFilter
103103
jira: JIRAFilter
104104
for_set: ForSetCodeChecks
@@ -110,11 +110,11 @@ class FilterDeployments:
110110
"""Compiled deployments filter."""
111111

112112
service: str
113-
repogroups: List[Set[str]]
114-
participant_groups: List[Dict[ReleaseParticipationKind, List[int]]]
115-
envgroups: List[List[str]]
116-
with_labels: Dict[str, Any]
117-
without_labels: Dict[str, Any]
113+
repogroups: list[set[str]]
114+
participant_groups: list[dict[ReleaseParticipationKind, list[int]]]
115+
envgroups: list[list[str]]
116+
with_labels: dict[str, Any]
117+
without_labels: dict[str, Any]
118118
pr_labels: LabelFilter
119119
jira: JIRAFilter
120120
for_set: ForSetDeployments
@@ -247,13 +247,13 @@ async def calculate_for_set_metrics(filter_prs: FilterPRs):
247247

248248

249249
async def compile_filters_prs(
250-
for_sets: List[ForSetPullRequests],
250+
for_sets: list[ForSetPullRequests],
251251
request: AthenianWebRequest,
252252
account: int,
253-
meta_ids: Tuple[int, ...],
253+
meta_ids: tuple[int, ...],
254254
prefixer: Prefixer,
255255
logical_settings: LogicalRepositorySettings,
256-
) -> Tuple[List[FilterPRs], Set[str]]:
256+
) -> tuple[list[FilterPRs], set[str]]:
257257
"""
258258
Build the list of filters for a given list of ForSetPullRequests-s.
259259
@@ -266,8 +266,8 @@ async def compile_filters_prs(
266266
2. The set of all repositories after dereferencing, with service prefixes.
267267
"""
268268
filters = []
269-
checkers = {}
270-
all_repos = set()
269+
checkers: dict[str, AccessChecker] = {}
270+
all_repos: set[str] = set()
271271
for i, for_set in enumerate(for_sets):
272272
repos, prefix, service = await _extract_repos(
273273
request,
@@ -322,13 +322,13 @@ def check_environments(
322322

323323

324324
async def _compile_filters_devs(
325-
for_sets: List[ForSetDevelopers],
325+
for_sets: list[ForSetDevelopers],
326326
request: AthenianWebRequest,
327327
account: int,
328-
meta_ids: Tuple[int, ...],
328+
meta_ids: tuple[int, ...],
329329
prefixer: Prefixer,
330330
logical_settings: LogicalRepositorySettings,
331-
) -> Tuple[List[FilterDevs], Set[str]]:
331+
) -> tuple[list[FilterDevs], set[str]]:
332332
"""
333333
Build the list of filters for a given list of ForSetDevelopers'.
334334
@@ -342,8 +342,8 @@ async def _compile_filters_devs(
342342
with service prefixes.
343343
"""
344344
filters = []
345-
checkers = {}
346-
all_repos = set()
345+
checkers: dict[str, AccessChecker] = {}
346+
all_repos: set[str] = set()
347347
for i, for_set in enumerate(for_sets):
348348
repos, prefix, service = await _extract_repos(
349349
request,
@@ -370,13 +370,13 @@ async def _compile_filters_devs(
370370

371371

372372
async def compile_filters_checks(
373-
for_sets: List[ForSetCodeChecks],
373+
for_sets: list[ForSetCodeChecks],
374374
request: AthenianWebRequest,
375375
account: int,
376-
meta_ids: Tuple[int, ...],
376+
meta_ids: tuple[int, ...],
377377
prefixer: Prefixer,
378378
logical_settings: LogicalRepositorySettings,
379-
) -> List[FilterChecks]:
379+
) -> list[FilterChecks]:
380380
"""
381381
Build the list of filters for a given list of ForSetCodeChecks'.
382382
@@ -388,8 +388,8 @@ async def compile_filters_checks(
388388
:return: Resulting list of filters.
389389
"""
390390
filters = []
391-
checkers = {}
392-
all_repos = set()
391+
checkers: dict[str, AccessChecker] = {}
392+
all_repos: set[str] = set()
393393
for i, for_set in enumerate(for_sets):
394394
repos, prefix, service = await _extract_repos(
395395
request,
@@ -409,7 +409,7 @@ async def compile_filters_checks(
409409
pusher_groups = (for_set.pusher_groups or []) + (
410410
[for_set.pushers] if for_set.pushers else []
411411
)
412-
teams = set()
412+
teams: set[int] = set()
413413

414414
def ptr(j: int) -> str:
415415
return ".for[%d].%s" % (
@@ -420,7 +420,7 @@ def ptr(j: int) -> str:
420420
for j, pushers in enumerate(pusher_groups):
421421
scan_for_teams(pushers, teams, ptr(j))
422422
teams_map = await fetch_teams_map(teams, account, request.sdb)
423-
commit_author_groups = []
423+
commit_author_groups: list[Sequence[str]] = []
424424
for j, pushers in enumerate(pusher_groups):
425425
if len(
426426
ca_group := compile_developers(
@@ -437,16 +437,16 @@ def ptr(j: int) -> str:
437437

438438

439439
async def _compile_filters_deployments(
440-
for_sets: List[ForSetDeployments],
440+
for_sets: list[ForSetDeployments],
441441
request: AthenianWebRequest,
442442
account: int,
443-
meta_ids: Tuple[int, ...],
443+
meta_ids: tuple[int, ...],
444444
prefixer: Prefixer,
445445
logical_settings: LogicalRepositorySettings,
446-
) -> List[FilterDeployments]:
446+
) -> list[FilterDeployments]:
447447
filters = []
448-
checkers = {}
449-
all_repos = set()
448+
checkers: dict[str, AccessChecker] = {}
449+
all_repos: set[str] = set()
450450
for i, for_set in enumerate(for_sets):
451451
repos, prefix, service = await _extract_repos(
452452
request,
@@ -513,12 +513,12 @@ async def _compile_jira(for_set, account: int, request: AthenianWebRequest) -> J
513513
async def _extract_repos(
514514
request: AthenianWebRequest,
515515
account: int,
516-
meta_ids: Tuple[int, ...],
517-
for_set: List[str],
516+
meta_ids: tuple[int, ...],
517+
for_set: list[str],
518518
for_set_index: int,
519-
all_repos: Set[str],
520-
checkers: Dict[str, AccessChecker],
521-
) -> Tuple[List[Set[str]], str, str]:
519+
all_repos: set[str],
520+
checkers: dict[str, AccessChecker],
521+
) -> tuple[list[set[str]], str, str]:
522522
pointer = ".for[%d].repositories" % for_set_index
523523
resolved, prefix = await resolve_repos_with_request(
524524
for_set,
@@ -566,7 +566,7 @@ async def calc_code_bypassing_prs(request: AthenianWebRequest, body: dict) -> we
566566
with_committer,
567567
filt.only_default_branch,
568568
prefixer,
569-
) # type: List[CodeStats]
569+
) # type: list[CodeStats]
570570
model = [
571571
CodeBypassingPRsMeasurement(
572572
date=(d - tzoffset).date(),
@@ -653,14 +653,15 @@ async def calc_metrics_developers(request: AthenianWebRequest, body: dict) -> we
653653
for granularity, ts, dev_metrics in zip(
654654
filt.granularities, time_intervals, repogroup_metrics,
655655
):
656-
values = []
656+
values: list[list[CalculatedLinearMetricValues]] = []
657657
for ts_metrics in dev_metrics:
658658
values.append(ts_values := [])
659659
for date, metrics in zip(ts, ts_metrics):
660660
metrics = [metrics[i] for i in topic_order]
661-
confidence_mins = [m.confidence_min for m in metrics]
662-
if any(confidence_mins):
663-
confidence_maxs = [m.confidence_max for m in metrics]
661+
metrics_confidence_mins: list = [m.confidence_min for m in metrics]
662+
if any(metrics_confidence_mins):
663+
confidence_mins: list | None = metrics_confidence_mins
664+
confidence_maxs: list | None = [m.confidence_max for m in metrics]
664665
confidence_scores = [m.confidence_score() for m in metrics]
665666
else:
666667
confidence_mins = confidence_maxs = confidence_scores = None
@@ -685,20 +686,20 @@ async def calc_metrics_developers(request: AthenianWebRequest, body: dict) -> we
685686

686687
async def _compile_filters_releases(
687688
request: AthenianWebRequest,
688-
for_sets: List[List[str]],
689-
with_: Optional[List[ReleaseWith]],
689+
for_sets: list[list[str]],
690+
with_: Optional[list[ReleaseWith]],
690691
account: int,
691-
meta_ids: Tuple[int, ...],
692-
) -> Tuple[
693-
List[Tuple[str, str, Tuple[Set[str], List[str]]]],
694-
Set[str],
692+
meta_ids: tuple[int, ...],
693+
) -> tuple[
694+
list[tuple[str, str, tuple[set[str], list[str]]]],
695+
set[str],
695696
Prefixer,
696697
LogicalRepositorySettings,
697-
List[ReleaseParticipants],
698+
list[ReleaseParticipants],
698699
]:
699700
filters = []
700-
checkers = {}
701-
all_repos = set()
701+
checkers: dict[str, AccessChecker] = {}
702+
all_repos: set[str] = set()
702703
prefixer = await Prefixer.load(meta_ids, request.mdb, request.cache)
703704
settings = Settings.from_request(request, account, prefixer)
704705
logical_settings = await settings.list_logical_repositories()

0 commit comments

Comments
 (0)