summaryrefslogtreecommitdiff
path: root/gitlab/v4/objects/statistics.py
blob: ce4dc3a259097fee7458f8a2d224b89da9035b93 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
from typing import Any, cast

from gitlab.base import RESTManager, RESTObject
from gitlab.mixins import GetWithoutIdMixin, RefreshMixin
from gitlab.types import ArrayAttribute

__all__ = [
    "GroupIssuesStatistics",
    "GroupIssuesStatisticsManager",
    "ProjectAdditionalStatistics",
    "ProjectAdditionalStatisticsManager",
    "IssuesStatistics",
    "IssuesStatisticsManager",
    "ProjectIssuesStatistics",
    "ProjectIssuesStatisticsManager",
    "ApplicationStatistics",
    "ApplicationStatisticsManager",
]


class ProjectAdditionalStatistics(RefreshMixin, RESTObject):
    _id_attr = None


class ProjectAdditionalStatisticsManager(GetWithoutIdMixin, RESTManager):
    _path = "/projects/{project_id}/statistics"
    _obj_cls = ProjectAdditionalStatistics
    _from_parent_attrs = {"project_id": "id"}

    def get(self, **kwargs: Any) -> ProjectAdditionalStatistics:
        return cast(ProjectAdditionalStatistics, super().get(**kwargs))


class IssuesStatistics(RefreshMixin, RESTObject):
    _id_attr = None


class IssuesStatisticsManager(GetWithoutIdMixin, RESTManager):
    _path = "/issues_statistics"
    _obj_cls = IssuesStatistics
    _list_filters = ("iids",)
    _types = {"iids": ArrayAttribute}

    def get(self, **kwargs: Any) -> IssuesStatistics:
        return cast(IssuesStatistics, super().get(**kwargs))


class GroupIssuesStatistics(RefreshMixin, RESTObject):
    _id_attr = None


class GroupIssuesStatisticsManager(GetWithoutIdMixin, RESTManager):
    _path = "/groups/{group_id}/issues_statistics"
    _obj_cls = GroupIssuesStatistics
    _from_parent_attrs = {"group_id": "id"}
    _list_filters = ("iids",)
    _types = {"iids": ArrayAttribute}

    def get(self, **kwargs: Any) -> GroupIssuesStatistics:
        return cast(GroupIssuesStatistics, super().get(**kwargs))


class ProjectIssuesStatistics(RefreshMixin, RESTObject):
    _id_attr = None


class ProjectIssuesStatisticsManager(GetWithoutIdMixin, RESTManager):
    _path = "/projects/{project_id}/issues_statistics"
    _obj_cls = ProjectIssuesStatistics
    _from_parent_attrs = {"project_id": "id"}
    _list_filters = ("iids",)
    _types = {"iids": ArrayAttribute}

    def get(self, **kwargs: Any) -> ProjectIssuesStatistics:
        return cast(ProjectIssuesStatistics, super().get(**kwargs))


class ApplicationStatistics(RESTObject):
    _id_attr = None


class ApplicationStatisticsManager(GetWithoutIdMixin, RESTManager):
    _path = "/application/statistics"
    _obj_cls = ApplicationStatistics

    def get(self, **kwargs: Any) -> ApplicationStatistics:
        return cast(ApplicationStatistics, super().get(**kwargs))