python-gitlab 5.3.1__py3-none-any.whl → 5.4.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- gitlab/_version.py +1 -1
- gitlab/client.py +5 -0
- gitlab/const.py +52 -52
- gitlab/mixins.py +35 -0
- gitlab/v4/objects/__init__.py +1 -0
- gitlab/v4/objects/artifacts.py +91 -1
- gitlab/v4/objects/commits.py +7 -2
- gitlab/v4/objects/files.py +46 -4
- gitlab/v4/objects/issues.py +1 -1
- gitlab/v4/objects/jobs.py +114 -1
- gitlab/v4/objects/labels.py +2 -2
- gitlab/v4/objects/merge_requests.py +2 -0
- gitlab/v4/objects/packages.py +44 -0
- gitlab/v4/objects/projects.py +40 -0
- gitlab/v4/objects/repositories.py +84 -1
- gitlab/v4/objects/secure_files.py +44 -1
- gitlab/v4/objects/snippets.py +79 -2
- gitlab/v4/objects/status_checks.py +52 -0
- {python_gitlab-5.3.1.dist-info → python_gitlab-5.4.0.dist-info}/METADATA +2 -2
- {python_gitlab-5.3.1.dist-info → python_gitlab-5.4.0.dist-info}/RECORD +25 -24
- {python_gitlab-5.3.1.dist-info → python_gitlab-5.4.0.dist-info}/WHEEL +1 -1
- {python_gitlab-5.3.1.dist-info → python_gitlab-5.4.0.dist-info}/AUTHORS +0 -0
- {python_gitlab-5.3.1.dist-info → python_gitlab-5.4.0.dist-info}/COPYING +0 -0
- {python_gitlab-5.3.1.dist-info → python_gitlab-5.4.0.dist-info}/entry_points.txt +0 -0
- {python_gitlab-5.3.1.dist-info → python_gitlab-5.4.0.dist-info}/top_level.txt +0 -0
gitlab/_version.py
CHANGED
gitlab/client.py
CHANGED
@@ -654,6 +654,7 @@ class Gitlab:
|
|
654
654
|
obey_rate_limit: bool = True,
|
655
655
|
retry_transient_errors: Optional[bool] = None,
|
656
656
|
max_retries: int = 10,
|
657
|
+
extra_headers: Optional[Dict[str, Any]] = None,
|
657
658
|
**kwargs: Any,
|
658
659
|
) -> requests.Response:
|
659
660
|
"""Make an HTTP request to the Gitlab server.
|
@@ -675,6 +676,7 @@ class Gitlab:
|
|
675
676
|
or 52x responses. Defaults to False.
|
676
677
|
max_retries: Max retries after 429 or transient errors,
|
677
678
|
set to -1 to retry forever. Defaults to 10.
|
679
|
+
extra_headers: Add and override HTTP headers for the request.
|
678
680
|
**kwargs: Extra options to send to the server (e.g. sudo)
|
679
681
|
|
680
682
|
Returns:
|
@@ -721,6 +723,9 @@ class Gitlab:
|
|
721
723
|
send_data = self._backend.prepare_send_data(files, post_data, raw)
|
722
724
|
opts["headers"]["Content-type"] = send_data.content_type
|
723
725
|
|
726
|
+
if extra_headers is not None:
|
727
|
+
opts["headers"].update(extra_headers)
|
728
|
+
|
724
729
|
retry = utils.Retry(
|
725
730
|
max_retries=max_retries,
|
726
731
|
obey_rate_limit=obey_rate_limit,
|
gitlab/const.py
CHANGED
@@ -9,83 +9,83 @@ class GitlabEnum(str, Enum):
|
|
9
9
|
|
10
10
|
# https://gitlab.com/gitlab-org/gitlab/-/blob/e97357824bedf007e75f8782259fe07435b64fbb/lib/gitlab/access.rb#L12-18
|
11
11
|
class AccessLevel(IntEnum):
|
12
|
-
NO_ACCESS
|
13
|
-
MINIMAL_ACCESS
|
14
|
-
GUEST
|
15
|
-
PLANNER
|
16
|
-
REPORTER
|
17
|
-
DEVELOPER
|
18
|
-
MAINTAINER
|
19
|
-
OWNER
|
20
|
-
ADMIN
|
12
|
+
NO_ACCESS = 0
|
13
|
+
MINIMAL_ACCESS = 5
|
14
|
+
GUEST = 10
|
15
|
+
PLANNER = 15
|
16
|
+
REPORTER = 20
|
17
|
+
DEVELOPER = 30
|
18
|
+
MAINTAINER = 40
|
19
|
+
OWNER = 50
|
20
|
+
ADMIN = 60
|
21
21
|
|
22
22
|
|
23
23
|
# https://gitlab.com/gitlab-org/gitlab/-/blob/e97357824bedf007e75f8782259fe07435b64fbb/lib/gitlab/visibility_level.rb#L23-25
|
24
24
|
class Visibility(GitlabEnum):
|
25
|
-
PRIVATE
|
26
|
-
INTERNAL
|
27
|
-
PUBLIC
|
25
|
+
PRIVATE = "private"
|
26
|
+
INTERNAL = "internal"
|
27
|
+
PUBLIC = "public"
|
28
28
|
|
29
29
|
|
30
30
|
class NotificationLevel(GitlabEnum):
|
31
|
-
DISABLED
|
32
|
-
PARTICIPATING
|
33
|
-
WATCH
|
34
|
-
GLOBAL
|
35
|
-
MENTION
|
36
|
-
CUSTOM
|
31
|
+
DISABLED = "disabled"
|
32
|
+
PARTICIPATING = "participating"
|
33
|
+
WATCH = "watch"
|
34
|
+
GLOBAL = "global"
|
35
|
+
MENTION = "mention"
|
36
|
+
CUSTOM = "custom"
|
37
37
|
|
38
38
|
|
39
39
|
# https://gitlab.com/gitlab-org/gitlab/-/blob/e97357824bedf007e75f8782259fe07435b64fbb/app/views/search/_category.html.haml#L10-37
|
40
40
|
class SearchScope(GitlabEnum):
|
41
41
|
# all scopes (global, group and project)
|
42
|
-
PROJECTS
|
43
|
-
ISSUES
|
44
|
-
MERGE_REQUESTS
|
45
|
-
MILESTONES
|
46
|
-
WIKI_BLOBS
|
47
|
-
COMMITS
|
48
|
-
BLOBS
|
49
|
-
USERS
|
42
|
+
PROJECTS = "projects"
|
43
|
+
ISSUES = "issues"
|
44
|
+
MERGE_REQUESTS = "merge_requests"
|
45
|
+
MILESTONES = "milestones"
|
46
|
+
WIKI_BLOBS = "wiki_blobs"
|
47
|
+
COMMITS = "commits"
|
48
|
+
BLOBS = "blobs"
|
49
|
+
USERS = "users"
|
50
50
|
|
51
51
|
# specific global scope
|
52
|
-
GLOBAL_SNIPPET_TITLES
|
52
|
+
GLOBAL_SNIPPET_TITLES = "snippet_titles"
|
53
53
|
|
54
54
|
# specific project scope
|
55
|
-
PROJECT_NOTES
|
55
|
+
PROJECT_NOTES = "notes"
|
56
56
|
|
57
57
|
|
58
58
|
# https://docs.gitlab.com/ee/api/merge_requests.html#merge-status
|
59
59
|
class DetailedMergeStatus(GitlabEnum):
|
60
60
|
# possible values for the detailed_merge_status field of Merge Requests
|
61
|
-
BLOCKED_STATUS
|
62
|
-
BROKEN_STATUS
|
63
|
-
CHECKING
|
64
|
-
UNCHECKED
|
65
|
-
CI_MUST_PASS
|
66
|
-
CI_STILL_RUNNING
|
67
|
-
DISCUSSIONS_NOT_RESOLVED
|
68
|
-
DRAFT_STATUS
|
69
|
-
EXTERNAL_STATUS_CHECKS
|
70
|
-
MERGEABLE
|
71
|
-
NOT_APPROVED
|
72
|
-
NOT_OPEN
|
73
|
-
POLICIES_DENIED
|
61
|
+
BLOCKED_STATUS = "blocked_status"
|
62
|
+
BROKEN_STATUS = "broken_status"
|
63
|
+
CHECKING = "checking"
|
64
|
+
UNCHECKED = "unchecked"
|
65
|
+
CI_MUST_PASS = "ci_must_pass"
|
66
|
+
CI_STILL_RUNNING = "ci_still_running"
|
67
|
+
DISCUSSIONS_NOT_RESOLVED = "discussions_not_resolved"
|
68
|
+
DRAFT_STATUS = "draft_status"
|
69
|
+
EXTERNAL_STATUS_CHECKS = "external_status_checks"
|
70
|
+
MERGEABLE = "mergeable"
|
71
|
+
NOT_APPROVED = "not_approved"
|
72
|
+
NOT_OPEN = "not_open"
|
73
|
+
POLICIES_DENIED = "policies_denied"
|
74
74
|
|
75
75
|
|
76
76
|
# https://docs.gitlab.com/ee/api/pipelines.html
|
77
77
|
class PipelineStatus(GitlabEnum):
|
78
|
-
CREATED
|
79
|
-
WAITING_FOR_RESOURCE
|
80
|
-
PREPARING
|
81
|
-
PENDING
|
82
|
-
RUNNING
|
83
|
-
SUCCESS
|
84
|
-
FAILED
|
85
|
-
CANCELED
|
86
|
-
SKIPPED
|
87
|
-
MANUAL
|
88
|
-
SCHEDULED
|
78
|
+
CREATED = "created"
|
79
|
+
WAITING_FOR_RESOURCE = "waiting_for_resource"
|
80
|
+
PREPARING = "preparing"
|
81
|
+
PENDING = "pending"
|
82
|
+
RUNNING = "running"
|
83
|
+
SUCCESS = "success"
|
84
|
+
FAILED = "failed"
|
85
|
+
CANCELED = "canceled"
|
86
|
+
SKIPPED = "skipped"
|
87
|
+
MANUAL = "manual"
|
88
|
+
SCHEDULED = "scheduled"
|
89
89
|
|
90
90
|
|
91
91
|
DEFAULT_URL: str = "https://gitlab.com"
|
gitlab/mixins.py
CHANGED
@@ -6,7 +6,9 @@ from typing import (
|
|
6
6
|
Dict,
|
7
7
|
Iterator,
|
8
8
|
List,
|
9
|
+
Literal,
|
9
10
|
Optional,
|
11
|
+
overload,
|
10
12
|
Tuple,
|
11
13
|
Type,
|
12
14
|
TYPE_CHECKING,
|
@@ -612,6 +614,39 @@ class DownloadMixin(_RestObjectBase):
|
|
612
614
|
_updated_attrs: Dict[str, Any]
|
613
615
|
manager: base.RESTManager
|
614
616
|
|
617
|
+
@overload
|
618
|
+
def download(
|
619
|
+
self,
|
620
|
+
streamed: Literal[False] = False,
|
621
|
+
action: None = None,
|
622
|
+
chunk_size: int = 1024,
|
623
|
+
*,
|
624
|
+
iterator: Literal[False] = False,
|
625
|
+
**kwargs: Any,
|
626
|
+
) -> bytes: ...
|
627
|
+
|
628
|
+
@overload
|
629
|
+
def download(
|
630
|
+
self,
|
631
|
+
streamed: bool = False,
|
632
|
+
action: None = None,
|
633
|
+
chunk_size: int = 1024,
|
634
|
+
*,
|
635
|
+
iterator: Literal[True] = True,
|
636
|
+
**kwargs: Any,
|
637
|
+
) -> Iterator[Any]: ...
|
638
|
+
|
639
|
+
@overload
|
640
|
+
def download(
|
641
|
+
self,
|
642
|
+
streamed: Literal[True] = True,
|
643
|
+
action: Optional[Callable[[bytes], None]] = None,
|
644
|
+
chunk_size: int = 1024,
|
645
|
+
*,
|
646
|
+
iterator: Literal[False] = False,
|
647
|
+
**kwargs: Any,
|
648
|
+
) -> None: ...
|
649
|
+
|
615
650
|
@cli.register_custom_action(cls_names=("GroupExport", "ProjectExport"))
|
616
651
|
@exc.on_http_error(exc.GitlabGetError)
|
617
652
|
def download(
|
gitlab/v4/objects/__init__.py
CHANGED
gitlab/v4/objects/artifacts.py
CHANGED
@@ -3,7 +3,16 @@ GitLab API:
|
|
3
3
|
https://docs.gitlab.com/ee/api/job_artifacts.html
|
4
4
|
"""
|
5
5
|
|
6
|
-
from typing import
|
6
|
+
from typing import (
|
7
|
+
Any,
|
8
|
+
Callable,
|
9
|
+
Iterator,
|
10
|
+
Literal,
|
11
|
+
Optional,
|
12
|
+
overload,
|
13
|
+
TYPE_CHECKING,
|
14
|
+
Union,
|
15
|
+
)
|
7
16
|
|
8
17
|
import requests
|
9
18
|
|
@@ -43,6 +52,45 @@ class ProjectArtifactManager(RESTManager):
|
|
43
52
|
assert path is not None
|
44
53
|
self.gitlab.http_delete(path, **kwargs)
|
45
54
|
|
55
|
+
@overload
|
56
|
+
def download(
|
57
|
+
self,
|
58
|
+
ref_name: str,
|
59
|
+
job: str,
|
60
|
+
streamed: Literal[False] = False,
|
61
|
+
action: None = None,
|
62
|
+
chunk_size: int = 1024,
|
63
|
+
*,
|
64
|
+
iterator: Literal[False] = False,
|
65
|
+
**kwargs: Any,
|
66
|
+
) -> bytes: ...
|
67
|
+
|
68
|
+
@overload
|
69
|
+
def download(
|
70
|
+
self,
|
71
|
+
ref_name: str,
|
72
|
+
job: str,
|
73
|
+
streamed: bool = False,
|
74
|
+
action: None = None,
|
75
|
+
chunk_size: int = 1024,
|
76
|
+
*,
|
77
|
+
iterator: Literal[True] = True,
|
78
|
+
**kwargs: Any,
|
79
|
+
) -> Iterator[Any]: ...
|
80
|
+
|
81
|
+
@overload
|
82
|
+
def download(
|
83
|
+
self,
|
84
|
+
ref_name: str,
|
85
|
+
job: str,
|
86
|
+
streamed: Literal[True] = True,
|
87
|
+
action: Optional[Callable[[bytes], None]] = None,
|
88
|
+
chunk_size: int = 1024,
|
89
|
+
*,
|
90
|
+
iterator: Literal[False] = False,
|
91
|
+
**kwargs: Any,
|
92
|
+
) -> None: ...
|
93
|
+
|
46
94
|
@cli.register_custom_action(
|
47
95
|
cls_names="ProjectArtifactManager",
|
48
96
|
required=("ref_name", "job"),
|
@@ -94,6 +142,48 @@ class ProjectArtifactManager(RESTManager):
|
|
94
142
|
result, streamed, action, chunk_size, iterator=iterator
|
95
143
|
)
|
96
144
|
|
145
|
+
@overload
|
146
|
+
def raw(
|
147
|
+
self,
|
148
|
+
ref_name: str,
|
149
|
+
artifact_path: str,
|
150
|
+
job: str,
|
151
|
+
streamed: Literal[False] = False,
|
152
|
+
action: None = None,
|
153
|
+
chunk_size: int = 1024,
|
154
|
+
*,
|
155
|
+
iterator: Literal[False] = False,
|
156
|
+
**kwargs: Any,
|
157
|
+
) -> bytes: ...
|
158
|
+
|
159
|
+
@overload
|
160
|
+
def raw(
|
161
|
+
self,
|
162
|
+
ref_name: str,
|
163
|
+
artifact_path: str,
|
164
|
+
job: str,
|
165
|
+
streamed: bool = False,
|
166
|
+
action: None = None,
|
167
|
+
chunk_size: int = 1024,
|
168
|
+
*,
|
169
|
+
iterator: Literal[True] = True,
|
170
|
+
**kwargs: Any,
|
171
|
+
) -> Iterator[Any]: ...
|
172
|
+
|
173
|
+
@overload
|
174
|
+
def raw(
|
175
|
+
self,
|
176
|
+
ref_name: str,
|
177
|
+
artifact_path: str,
|
178
|
+
job: str,
|
179
|
+
streamed: Literal[True] = True,
|
180
|
+
action: Optional[Callable[[bytes], None]] = None,
|
181
|
+
chunk_size: int = 1024,
|
182
|
+
*,
|
183
|
+
iterator: Literal[False] = False,
|
184
|
+
**kwargs: Any,
|
185
|
+
) -> None: ...
|
186
|
+
|
97
187
|
@cli.register_custom_action(
|
98
188
|
cls_names="ProjectArtifactManager",
|
99
189
|
required=("ref_name", "artifact_path", "job"),
|
gitlab/v4/objects/commits.py
CHANGED
@@ -48,7 +48,9 @@ class ProjectCommit(RESTObject):
|
|
48
48
|
|
49
49
|
@cli.register_custom_action(cls_names="ProjectCommit", required=("branch",))
|
50
50
|
@exc.on_http_error(exc.GitlabCherryPickError)
|
51
|
-
def cherry_pick(
|
51
|
+
def cherry_pick(
|
52
|
+
self, branch: str, **kwargs: Any
|
53
|
+
) -> Union[Dict[str, Any], requests.Response]:
|
52
54
|
"""Cherry-pick a commit into a branch.
|
53
55
|
|
54
56
|
Args:
|
@@ -58,10 +60,13 @@ class ProjectCommit(RESTObject):
|
|
58
60
|
Raises:
|
59
61
|
GitlabAuthenticationError: If authentication is not correct
|
60
62
|
GitlabCherryPickError: If the cherry-pick could not be performed
|
63
|
+
|
64
|
+
Returns:
|
65
|
+
The new commit data (*not* a RESTObject)
|
61
66
|
"""
|
62
67
|
path = f"{self.manager.path}/{self.encoded_id}/cherry_pick"
|
63
68
|
post_data = {"branch": branch}
|
64
|
-
self.manager.gitlab.http_post(path, post_data=post_data, **kwargs)
|
69
|
+
return self.manager.gitlab.http_post(path, post_data=post_data, **kwargs)
|
65
70
|
|
66
71
|
@cli.register_custom_action(cls_names="ProjectCommit", optional=("type",))
|
67
72
|
@exc.on_http_error(exc.GitlabGetError)
|
gitlab/v4/objects/files.py
CHANGED
@@ -5,7 +5,9 @@ from typing import (
|
|
5
5
|
Dict,
|
6
6
|
Iterator,
|
7
7
|
List,
|
8
|
+
Literal,
|
8
9
|
Optional,
|
10
|
+
overload,
|
9
11
|
Tuple,
|
10
12
|
TYPE_CHECKING,
|
11
13
|
Union,
|
@@ -51,7 +53,7 @@ class ProjectFile(SaveMixin, ObjectDeleteMixin, RESTObject):
|
|
51
53
|
|
52
54
|
# NOTE(jlvillal): Signature doesn't match SaveMixin.save() so ignore
|
53
55
|
# type error
|
54
|
-
def save( # type: ignore
|
56
|
+
def save( # type: ignore[override]
|
55
57
|
self, branch: str, commit_message: str, **kwargs: Any
|
56
58
|
) -> None:
|
57
59
|
"""Save the changes made to the file to the server.
|
@@ -75,7 +77,7 @@ class ProjectFile(SaveMixin, ObjectDeleteMixin, RESTObject):
|
|
75
77
|
@exc.on_http_error(exc.GitlabDeleteError)
|
76
78
|
# NOTE(jlvillal): Signature doesn't match DeleteMixin.delete() so ignore
|
77
79
|
# type error
|
78
|
-
def delete( # type: ignore
|
80
|
+
def delete( # type: ignore[override]
|
79
81
|
self, branch: str, commit_message: str, **kwargs: Any
|
80
82
|
) -> None:
|
81
83
|
"""Delete the file from the server.
|
@@ -219,7 +221,7 @@ class ProjectFileManager(CreateMixin, UpdateMixin, DeleteMixin, RESTManager):
|
|
219
221
|
@exc.on_http_error(exc.GitlabUpdateError)
|
220
222
|
# NOTE(jlvillal): Signature doesn't match UpdateMixin.update() so ignore
|
221
223
|
# type error
|
222
|
-
def update( # type: ignore
|
224
|
+
def update( # type: ignore[override]
|
223
225
|
self, file_path: str, new_data: Optional[Dict[str, Any]] = None, **kwargs: Any
|
224
226
|
) -> Dict[str, Any]:
|
225
227
|
"""Update an object on the server.
|
@@ -254,7 +256,7 @@ class ProjectFileManager(CreateMixin, UpdateMixin, DeleteMixin, RESTManager):
|
|
254
256
|
@exc.on_http_error(exc.GitlabDeleteError)
|
255
257
|
# NOTE(jlvillal): Signature doesn't match DeleteMixin.delete() so ignore
|
256
258
|
# type error
|
257
|
-
def delete( # type: ignore
|
259
|
+
def delete( # type: ignore[override]
|
258
260
|
self, file_path: str, branch: str, commit_message: str, **kwargs: Any
|
259
261
|
) -> None:
|
260
262
|
"""Delete a file on the server.
|
@@ -274,9 +276,49 @@ class ProjectFileManager(CreateMixin, UpdateMixin, DeleteMixin, RESTManager):
|
|
274
276
|
data = {"branch": branch, "commit_message": commit_message}
|
275
277
|
self.gitlab.http_delete(path, query_data=data, **kwargs)
|
276
278
|
|
279
|
+
@overload
|
280
|
+
def raw(
|
281
|
+
self,
|
282
|
+
file_path: str,
|
283
|
+
ref: Optional[str] = None,
|
284
|
+
streamed: Literal[False] = False,
|
285
|
+
action: None = None,
|
286
|
+
chunk_size: int = 1024,
|
287
|
+
*,
|
288
|
+
iterator: Literal[False] = False,
|
289
|
+
**kwargs: Any,
|
290
|
+
) -> bytes: ...
|
291
|
+
|
292
|
+
@overload
|
293
|
+
def raw(
|
294
|
+
self,
|
295
|
+
file_path: str,
|
296
|
+
ref: Optional[str] = None,
|
297
|
+
streamed: bool = False,
|
298
|
+
action: None = None,
|
299
|
+
chunk_size: int = 1024,
|
300
|
+
*,
|
301
|
+
iterator: Literal[True] = True,
|
302
|
+
**kwargs: Any,
|
303
|
+
) -> Iterator[Any]: ...
|
304
|
+
|
305
|
+
@overload
|
306
|
+
def raw(
|
307
|
+
self,
|
308
|
+
file_path: str,
|
309
|
+
ref: Optional[str] = None,
|
310
|
+
streamed: Literal[True] = True,
|
311
|
+
action: Optional[Callable[[bytes], None]] = None,
|
312
|
+
chunk_size: int = 1024,
|
313
|
+
*,
|
314
|
+
iterator: Literal[False] = False,
|
315
|
+
**kwargs: Any,
|
316
|
+
) -> None: ...
|
317
|
+
|
277
318
|
@cli.register_custom_action(
|
278
319
|
cls_names="ProjectFileManager",
|
279
320
|
required=("file_path",),
|
321
|
+
optional=("ref",),
|
280
322
|
)
|
281
323
|
@exc.on_http_error(exc.GitlabGetError)
|
282
324
|
def raw(
|
gitlab/v4/objects/issues.py
CHANGED
@@ -302,7 +302,7 @@ class ProjectIssueLinkManager(ListMixin, CreateMixin, DeleteMixin, RESTManager):
|
|
302
302
|
@exc.on_http_error(exc.GitlabCreateError)
|
303
303
|
# NOTE(jlvillal): Signature doesn't match CreateMixin.create() so ignore
|
304
304
|
# type error
|
305
|
-
def create( # type: ignore
|
305
|
+
def create( # type: ignore[override]
|
306
306
|
self, data: Dict[str, Any], **kwargs: Any
|
307
307
|
) -> Tuple[RESTObject, RESTObject]:
|
308
308
|
"""Create a new object.
|
gitlab/v4/objects/jobs.py
CHANGED
@@ -1,4 +1,15 @@
|
|
1
|
-
from typing import
|
1
|
+
from typing import (
|
2
|
+
Any,
|
3
|
+
Callable,
|
4
|
+
cast,
|
5
|
+
Dict,
|
6
|
+
Iterator,
|
7
|
+
Literal,
|
8
|
+
Optional,
|
9
|
+
overload,
|
10
|
+
TYPE_CHECKING,
|
11
|
+
Union,
|
12
|
+
)
|
2
13
|
|
3
14
|
import requests
|
4
15
|
|
@@ -115,6 +126,39 @@ class ProjectJob(RefreshMixin, RESTObject):
|
|
115
126
|
path = f"{self.manager.path}/{self.encoded_id}/artifacts"
|
116
127
|
self.manager.gitlab.http_delete(path, **kwargs)
|
117
128
|
|
129
|
+
@overload
|
130
|
+
def artifacts(
|
131
|
+
self,
|
132
|
+
streamed: Literal[False] = False,
|
133
|
+
action: None = None,
|
134
|
+
chunk_size: int = 1024,
|
135
|
+
*,
|
136
|
+
iterator: Literal[False] = False,
|
137
|
+
**kwargs: Any,
|
138
|
+
) -> bytes: ...
|
139
|
+
|
140
|
+
@overload
|
141
|
+
def artifacts(
|
142
|
+
self,
|
143
|
+
streamed: bool = False,
|
144
|
+
action: None = None,
|
145
|
+
chunk_size: int = 1024,
|
146
|
+
*,
|
147
|
+
iterator: Literal[True] = True,
|
148
|
+
**kwargs: Any,
|
149
|
+
) -> Iterator[Any]: ...
|
150
|
+
|
151
|
+
@overload
|
152
|
+
def artifacts(
|
153
|
+
self,
|
154
|
+
streamed: Literal[True] = True,
|
155
|
+
action: Optional[Callable[[bytes], None]] = None,
|
156
|
+
chunk_size: int = 1024,
|
157
|
+
*,
|
158
|
+
iterator: Literal[False] = False,
|
159
|
+
**kwargs: Any,
|
160
|
+
) -> None: ...
|
161
|
+
|
118
162
|
@cli.register_custom_action(cls_names="ProjectJob")
|
119
163
|
@exc.on_http_error(exc.GitlabGetError)
|
120
164
|
def artifacts(
|
@@ -156,6 +200,42 @@ class ProjectJob(RefreshMixin, RESTObject):
|
|
156
200
|
result, streamed, action, chunk_size, iterator=iterator
|
157
201
|
)
|
158
202
|
|
203
|
+
@overload
|
204
|
+
def artifact(
|
205
|
+
self,
|
206
|
+
path: str,
|
207
|
+
streamed: Literal[False] = False,
|
208
|
+
action: None = None,
|
209
|
+
chunk_size: int = 1024,
|
210
|
+
*,
|
211
|
+
iterator: Literal[False] = False,
|
212
|
+
**kwargs: Any,
|
213
|
+
) -> bytes: ...
|
214
|
+
|
215
|
+
@overload
|
216
|
+
def artifact(
|
217
|
+
self,
|
218
|
+
path: str,
|
219
|
+
streamed: bool = False,
|
220
|
+
action: None = None,
|
221
|
+
chunk_size: int = 1024,
|
222
|
+
*,
|
223
|
+
iterator: Literal[True] = True,
|
224
|
+
**kwargs: Any,
|
225
|
+
) -> Iterator[Any]: ...
|
226
|
+
|
227
|
+
@overload
|
228
|
+
def artifact(
|
229
|
+
self,
|
230
|
+
path: str,
|
231
|
+
streamed: Literal[True] = True,
|
232
|
+
action: Optional[Callable[[bytes], None]] = None,
|
233
|
+
chunk_size: int = 1024,
|
234
|
+
*,
|
235
|
+
iterator: Literal[False] = False,
|
236
|
+
**kwargs: Any,
|
237
|
+
) -> None: ...
|
238
|
+
|
159
239
|
@cli.register_custom_action(cls_names="ProjectJob")
|
160
240
|
@exc.on_http_error(exc.GitlabGetError)
|
161
241
|
def artifact(
|
@@ -199,6 +279,39 @@ class ProjectJob(RefreshMixin, RESTObject):
|
|
199
279
|
result, streamed, action, chunk_size, iterator=iterator
|
200
280
|
)
|
201
281
|
|
282
|
+
@overload
|
283
|
+
def trace(
|
284
|
+
self,
|
285
|
+
streamed: Literal[False] = False,
|
286
|
+
action: None = None,
|
287
|
+
chunk_size: int = 1024,
|
288
|
+
*,
|
289
|
+
iterator: Literal[False] = False,
|
290
|
+
**kwargs: Any,
|
291
|
+
) -> bytes: ...
|
292
|
+
|
293
|
+
@overload
|
294
|
+
def trace(
|
295
|
+
self,
|
296
|
+
streamed: bool = False,
|
297
|
+
action: None = None,
|
298
|
+
chunk_size: int = 1024,
|
299
|
+
*,
|
300
|
+
iterator: Literal[True] = True,
|
301
|
+
**kwargs: Any,
|
302
|
+
) -> Iterator[Any]: ...
|
303
|
+
|
304
|
+
@overload
|
305
|
+
def trace(
|
306
|
+
self,
|
307
|
+
streamed: Literal[True] = True,
|
308
|
+
action: Optional[Callable[[bytes], None]] = None,
|
309
|
+
chunk_size: int = 1024,
|
310
|
+
*,
|
311
|
+
iterator: Literal[False] = False,
|
312
|
+
**kwargs: Any,
|
313
|
+
) -> None: ...
|
314
|
+
|
202
315
|
@cli.register_custom_action(cls_names="ProjectJob")
|
203
316
|
@exc.on_http_error(exc.GitlabGetError)
|
204
317
|
def trace(
|
gitlab/v4/objects/labels.py
CHANGED
@@ -66,7 +66,7 @@ class GroupLabelManager(
|
|
66
66
|
# Update without ID.
|
67
67
|
# NOTE(jlvillal): Signature doesn't match UpdateMixin.update() so ignore
|
68
68
|
# type error
|
69
|
-
def update( # type: ignore
|
69
|
+
def update( # type: ignore[override]
|
70
70
|
self,
|
71
71
|
name: Optional[str],
|
72
72
|
new_data: Optional[Dict[str, Any]] = None,
|
@@ -132,7 +132,7 @@ class ProjectLabelManager(
|
|
132
132
|
# Update without ID.
|
133
133
|
# NOTE(jlvillal): Signature doesn't match UpdateMixin.update() so ignore
|
134
134
|
# type error
|
135
|
-
def update( # type: ignore
|
135
|
+
def update( # type: ignore[override]
|
136
136
|
self,
|
137
137
|
name: Optional[str],
|
138
138
|
new_data: Optional[Dict[str, Any]] = None,
|
@@ -44,6 +44,7 @@ from .merge_request_approvals import ( # noqa: F401
|
|
44
44
|
from .notes import ProjectMergeRequestNoteManager # noqa: F401
|
45
45
|
from .pipelines import ProjectMergeRequestPipelineManager # noqa: F401
|
46
46
|
from .reviewers import ProjectMergeRequestReviewerDetailManager
|
47
|
+
from .status_checks import ProjectMergeRequestStatusCheckManager
|
47
48
|
|
48
49
|
__all__ = [
|
49
50
|
"MergeRequest",
|
@@ -167,6 +168,7 @@ class ProjectMergeRequest(
|
|
167
168
|
resourcemilestoneevents: ProjectMergeRequestResourceMilestoneEventManager
|
168
169
|
resourcestateevents: ProjectMergeRequestResourceStateEventManager
|
169
170
|
reviewer_details: ProjectMergeRequestReviewerDetailManager
|
171
|
+
status_checks: ProjectMergeRequestStatusCheckManager
|
170
172
|
|
171
173
|
@cli.register_custom_action(cls_names="ProjectMergeRequest")
|
172
174
|
@exc.on_http_error(exc.GitlabMROnBuildSuccessError)
|
gitlab/v4/objects/packages.py
CHANGED
@@ -11,7 +11,9 @@ from typing import (
|
|
11
11
|
Callable,
|
12
12
|
cast,
|
13
13
|
Iterator,
|
14
|
+
Literal,
|
14
15
|
Optional,
|
16
|
+
overload,
|
15
17
|
TYPE_CHECKING,
|
16
18
|
Union,
|
17
19
|
)
|
@@ -122,6 +124,48 @@ class GenericPackageManager(RESTManager):
|
|
122
124
|
attrs.update(server_data)
|
123
125
|
return self._obj_cls(self, attrs=attrs)
|
124
126
|
|
127
|
+
@overload
|
128
|
+
def download(
|
129
|
+
self,
|
130
|
+
package_name: str,
|
131
|
+
package_version: str,
|
132
|
+
file_name: str,
|
133
|
+
streamed: Literal[False] = False,
|
134
|
+
action: None = None,
|
135
|
+
chunk_size: int = 1024,
|
136
|
+
*,
|
137
|
+
iterator: Literal[False] = False,
|
138
|
+
**kwargs: Any,
|
139
|
+
) -> bytes: ...
|
140
|
+
|
141
|
+
@overload
|
142
|
+
def download(
|
143
|
+
self,
|
144
|
+
package_name: str,
|
145
|
+
package_version: str,
|
146
|
+
file_name: str,
|
147
|
+
streamed: bool = False,
|
148
|
+
action: None = None,
|
149
|
+
chunk_size: int = 1024,
|
150
|
+
*,
|
151
|
+
iterator: Literal[True] = True,
|
152
|
+
**kwargs: Any,
|
153
|
+
) -> Iterator[Any]: ...
|
154
|
+
|
155
|
+
@overload
|
156
|
+
def download(
|
157
|
+
self,
|
158
|
+
package_name: str,
|
159
|
+
package_version: str,
|
160
|
+
file_name: str,
|
161
|
+
streamed: Literal[True] = True,
|
162
|
+
action: Optional[Callable[[bytes], None]] = None,
|
163
|
+
chunk_size: int = 1024,
|
164
|
+
*,
|
165
|
+
iterator: Literal[False] = False,
|
166
|
+
**kwargs: Any,
|
167
|
+
) -> None: ...
|
168
|
+
|
125
169
|
@cli.register_custom_action(
|
126
170
|
cls_names="GenericPackageManager",
|
127
171
|
required=("package_name", "package_version", "file_name"),
|
gitlab/v4/objects/projects.py
CHANGED
@@ -11,7 +11,9 @@ from typing import (
|
|
11
11
|
Dict,
|
12
12
|
Iterator,
|
13
13
|
List,
|
14
|
+
Literal,
|
14
15
|
Optional,
|
16
|
+
overload,
|
15
17
|
TYPE_CHECKING,
|
16
18
|
Union,
|
17
19
|
)
|
@@ -102,6 +104,7 @@ from .statistics import ( # noqa: F401
|
|
102
104
|
ProjectAdditionalStatisticsManager,
|
103
105
|
ProjectIssuesStatisticsManager,
|
104
106
|
)
|
107
|
+
from .status_checks import ProjectExternalStatusCheckManager # noqa: F401
|
105
108
|
from .tags import ProjectProtectedTagManager, ProjectTagManager # noqa: F401
|
106
109
|
from .templates import ( # noqa: F401
|
107
110
|
ProjectDockerfileTemplateManager,
|
@@ -251,6 +254,7 @@ class Project(
|
|
251
254
|
secure_files: ProjectSecureFileManager
|
252
255
|
services: ProjectServiceManager
|
253
256
|
snippets: ProjectSnippetManager
|
257
|
+
external_status_checks: ProjectExternalStatusCheckManager
|
254
258
|
storage: "ProjectStorageManager"
|
255
259
|
tags: ProjectTagManager
|
256
260
|
triggers: ProjectTriggerManager
|
@@ -487,6 +491,42 @@ class Project(
|
|
487
491
|
path = f"/projects/{self.encoded_id}/restore"
|
488
492
|
self.manager.gitlab.http_post(path, **kwargs)
|
489
493
|
|
494
|
+
@overload
|
495
|
+
def snapshot(
|
496
|
+
self,
|
497
|
+
wiki: bool = False,
|
498
|
+
streamed: Literal[False] = False,
|
499
|
+
action: None = None,
|
500
|
+
chunk_size: int = 1024,
|
501
|
+
*,
|
502
|
+
iterator: Literal[False] = False,
|
503
|
+
**kwargs: Any,
|
504
|
+
) -> bytes: ...
|
505
|
+
|
506
|
+
@overload
|
507
|
+
def snapshot(
|
508
|
+
self,
|
509
|
+
wiki: bool = False,
|
510
|
+
streamed: bool = False,
|
511
|
+
action: None = None,
|
512
|
+
chunk_size: int = 1024,
|
513
|
+
*,
|
514
|
+
iterator: Literal[True] = True,
|
515
|
+
**kwargs: Any,
|
516
|
+
) -> Iterator[Any]: ...
|
517
|
+
|
518
|
+
@overload
|
519
|
+
def snapshot(
|
520
|
+
self,
|
521
|
+
wiki: bool = False,
|
522
|
+
streamed: Literal[True] = True,
|
523
|
+
action: Optional[Callable[[bytes], None]] = None,
|
524
|
+
chunk_size: int = 1024,
|
525
|
+
*,
|
526
|
+
iterator: Literal[False] = False,
|
527
|
+
**kwargs: Any,
|
528
|
+
) -> None: ...
|
529
|
+
|
490
530
|
@cli.register_custom_action(cls_names="Project", optional=("wiki",))
|
491
531
|
@exc.on_http_error(exc.GitlabGetError)
|
492
532
|
def snapshot(
|
@@ -4,7 +4,18 @@ GitLab API: https://docs.gitlab.com/ee/api/repositories.html
|
|
4
4
|
Currently this module only contains repository-related methods for projects.
|
5
5
|
"""
|
6
6
|
|
7
|
-
from typing import
|
7
|
+
from typing import (
|
8
|
+
Any,
|
9
|
+
Callable,
|
10
|
+
Dict,
|
11
|
+
Iterator,
|
12
|
+
List,
|
13
|
+
Literal,
|
14
|
+
Optional,
|
15
|
+
overload,
|
16
|
+
TYPE_CHECKING,
|
17
|
+
Union,
|
18
|
+
)
|
8
19
|
|
9
20
|
import requests
|
10
21
|
|
@@ -106,6 +117,42 @@ class RepositoryMixin(_RestObjectBase):
|
|
106
117
|
path = f"/projects/{self.encoded_id}/repository/blobs/{sha}"
|
107
118
|
return self.manager.gitlab.http_get(path, **kwargs)
|
108
119
|
|
120
|
+
@overload
|
121
|
+
def repository_raw_blob(
|
122
|
+
self,
|
123
|
+
sha: str,
|
124
|
+
streamed: Literal[False] = False,
|
125
|
+
action: None = None,
|
126
|
+
chunk_size: int = 1024,
|
127
|
+
*,
|
128
|
+
iterator: Literal[False] = False,
|
129
|
+
**kwargs: Any,
|
130
|
+
) -> bytes: ...
|
131
|
+
|
132
|
+
@overload
|
133
|
+
def repository_raw_blob(
|
134
|
+
self,
|
135
|
+
sha: str,
|
136
|
+
streamed: bool = False,
|
137
|
+
action: None = None,
|
138
|
+
chunk_size: int = 1024,
|
139
|
+
*,
|
140
|
+
iterator: Literal[True] = True,
|
141
|
+
**kwargs: Any,
|
142
|
+
) -> Iterator[Any]: ...
|
143
|
+
|
144
|
+
@overload
|
145
|
+
def repository_raw_blob(
|
146
|
+
self,
|
147
|
+
sha: str,
|
148
|
+
streamed: Literal[True] = True,
|
149
|
+
action: Optional[Callable[[bytes], None]] = None,
|
150
|
+
chunk_size: int = 1024,
|
151
|
+
*,
|
152
|
+
iterator: Literal[False] = False,
|
153
|
+
**kwargs: Any,
|
154
|
+
) -> None: ...
|
155
|
+
|
109
156
|
@cli.register_custom_action(cls_names="Project", required=("sha",))
|
110
157
|
@exc.on_http_error(exc.GitlabGetError)
|
111
158
|
def repository_raw_blob(
|
@@ -197,6 +244,42 @@ class RepositoryMixin(_RestObjectBase):
|
|
197
244
|
path = f"/projects/{self.encoded_id}/repository/contributors"
|
198
245
|
return self.manager.gitlab.http_list(path, **kwargs)
|
199
246
|
|
247
|
+
@overload
|
248
|
+
def repository_archive(
|
249
|
+
self,
|
250
|
+
sha: Optional[str] = None,
|
251
|
+
streamed: Literal[False] = False,
|
252
|
+
action: None = None,
|
253
|
+
chunk_size: int = 1024,
|
254
|
+
*,
|
255
|
+
iterator: Literal[False] = False,
|
256
|
+
**kwargs: Any,
|
257
|
+
) -> bytes: ...
|
258
|
+
|
259
|
+
@overload
|
260
|
+
def repository_archive(
|
261
|
+
self,
|
262
|
+
sha: Optional[str] = None,
|
263
|
+
streamed: bool = False,
|
264
|
+
action: None = None,
|
265
|
+
chunk_size: int = 1024,
|
266
|
+
*,
|
267
|
+
iterator: Literal[True] = True,
|
268
|
+
**kwargs: Any,
|
269
|
+
) -> Iterator[Any]: ...
|
270
|
+
|
271
|
+
@overload
|
272
|
+
def repository_archive(
|
273
|
+
self,
|
274
|
+
sha: Optional[str] = None,
|
275
|
+
streamed: Literal[True] = True,
|
276
|
+
action: Optional[Callable[[bytes], None]] = None,
|
277
|
+
chunk_size: int = 1024,
|
278
|
+
*,
|
279
|
+
iterator: Literal[False] = False,
|
280
|
+
**kwargs: Any,
|
281
|
+
) -> None: ...
|
282
|
+
|
200
283
|
@cli.register_custom_action(cls_names="Project", optional=("sha", "format"))
|
201
284
|
@exc.on_http_error(exc.GitlabListError)
|
202
285
|
def repository_archive(
|
@@ -3,7 +3,17 @@ GitLab API:
|
|
3
3
|
https://docs.gitlab.com/ee/api/secure_files.html
|
4
4
|
"""
|
5
5
|
|
6
|
-
from typing import
|
6
|
+
from typing import (
|
7
|
+
Any,
|
8
|
+
Callable,
|
9
|
+
cast,
|
10
|
+
Iterator,
|
11
|
+
Literal,
|
12
|
+
Optional,
|
13
|
+
overload,
|
14
|
+
TYPE_CHECKING,
|
15
|
+
Union,
|
16
|
+
)
|
7
17
|
|
8
18
|
import requests
|
9
19
|
|
@@ -18,6 +28,39 @@ __all__ = ["ProjectSecureFile", "ProjectSecureFileManager"]
|
|
18
28
|
|
19
29
|
|
20
30
|
class ProjectSecureFile(ObjectDeleteMixin, RESTObject):
|
31
|
+
@overload
|
32
|
+
def download(
|
33
|
+
self,
|
34
|
+
streamed: Literal[False] = False,
|
35
|
+
action: None = None,
|
36
|
+
chunk_size: int = 1024,
|
37
|
+
*,
|
38
|
+
iterator: Literal[False] = False,
|
39
|
+
**kwargs: Any,
|
40
|
+
) -> bytes: ...
|
41
|
+
|
42
|
+
@overload
|
43
|
+
def download(
|
44
|
+
self,
|
45
|
+
streamed: bool = False,
|
46
|
+
action: None = None,
|
47
|
+
chunk_size: int = 1024,
|
48
|
+
*,
|
49
|
+
iterator: Literal[True] = True,
|
50
|
+
**kwargs: Any,
|
51
|
+
) -> Iterator[Any]: ...
|
52
|
+
|
53
|
+
@overload
|
54
|
+
def download(
|
55
|
+
self,
|
56
|
+
streamed: Literal[True] = True,
|
57
|
+
action: Optional[Callable[[bytes], None]] = None,
|
58
|
+
chunk_size: int = 1024,
|
59
|
+
*,
|
60
|
+
iterator: Literal[False] = False,
|
61
|
+
**kwargs: Any,
|
62
|
+
) -> None: ...
|
63
|
+
|
21
64
|
@cli.register_custom_action(cls_names="ProjectSecureFile")
|
22
65
|
@exc.on_http_error(exc.GitlabGetError)
|
23
66
|
def download(
|
gitlab/v4/objects/snippets.py
CHANGED
@@ -1,4 +1,15 @@
|
|
1
|
-
from typing import
|
1
|
+
from typing import (
|
2
|
+
Any,
|
3
|
+
Callable,
|
4
|
+
cast,
|
5
|
+
Iterator,
|
6
|
+
List,
|
7
|
+
Literal,
|
8
|
+
Optional,
|
9
|
+
overload,
|
10
|
+
TYPE_CHECKING,
|
11
|
+
Union,
|
12
|
+
)
|
2
13
|
|
3
14
|
import requests
|
4
15
|
|
@@ -24,6 +35,39 @@ __all__ = [
|
|
24
35
|
class Snippet(UserAgentDetailMixin, SaveMixin, ObjectDeleteMixin, RESTObject):
|
25
36
|
_repr_attr = "title"
|
26
37
|
|
38
|
+
@overload
|
39
|
+
def content(
|
40
|
+
self,
|
41
|
+
streamed: Literal[False] = False,
|
42
|
+
action: None = None,
|
43
|
+
chunk_size: int = 1024,
|
44
|
+
*,
|
45
|
+
iterator: Literal[False] = False,
|
46
|
+
**kwargs: Any,
|
47
|
+
) -> bytes: ...
|
48
|
+
|
49
|
+
@overload
|
50
|
+
def content(
|
51
|
+
self,
|
52
|
+
streamed: bool = False,
|
53
|
+
action: None = None,
|
54
|
+
chunk_size: int = 1024,
|
55
|
+
*,
|
56
|
+
iterator: Literal[True] = True,
|
57
|
+
**kwargs: Any,
|
58
|
+
) -> Iterator[Any]: ...
|
59
|
+
|
60
|
+
@overload
|
61
|
+
def content(
|
62
|
+
self,
|
63
|
+
streamed: Literal[True] = True,
|
64
|
+
action: Optional[Callable[[bytes], None]] = None,
|
65
|
+
chunk_size: int = 1024,
|
66
|
+
*,
|
67
|
+
iterator: Literal[False] = False,
|
68
|
+
**kwargs: Any,
|
69
|
+
) -> None: ...
|
70
|
+
|
27
71
|
@cli.register_custom_action(cls_names="Snippet")
|
28
72
|
@exc.on_http_error(exc.GitlabGetError)
|
29
73
|
def content(
|
@@ -148,7 +192,7 @@ class SnippetManager(CRUDMixin, RESTManager):
|
|
148
192
|
"""
|
149
193
|
utils.warn(
|
150
194
|
message=(
|
151
|
-
"Gitlab.snippets.public() is deprecated and will be removed in a"
|
195
|
+
"Gitlab.snippets.public() is deprecated and will be removed in a "
|
152
196
|
"future major version. Use Gitlab.snippets.list_public() instead."
|
153
197
|
),
|
154
198
|
category=DeprecationWarning,
|
@@ -167,6 +211,39 @@ class ProjectSnippet(UserAgentDetailMixin, SaveMixin, ObjectDeleteMixin, RESTObj
|
|
167
211
|
discussions: ProjectSnippetDiscussionManager
|
168
212
|
notes: ProjectSnippetNoteManager
|
169
213
|
|
214
|
+
@overload
|
215
|
+
def content(
|
216
|
+
self,
|
217
|
+
streamed: Literal[False] = False,
|
218
|
+
action: None = None,
|
219
|
+
chunk_size: int = 1024,
|
220
|
+
*,
|
221
|
+
iterator: Literal[False] = False,
|
222
|
+
**kwargs: Any,
|
223
|
+
) -> bytes: ...
|
224
|
+
|
225
|
+
@overload
|
226
|
+
def content(
|
227
|
+
self,
|
228
|
+
streamed: bool = False,
|
229
|
+
action: None = None,
|
230
|
+
chunk_size: int = 1024,
|
231
|
+
*,
|
232
|
+
iterator: Literal[True] = True,
|
233
|
+
**kwargs: Any,
|
234
|
+
) -> Iterator[Any]: ...
|
235
|
+
|
236
|
+
@overload
|
237
|
+
def content(
|
238
|
+
self,
|
239
|
+
streamed: Literal[True] = True,
|
240
|
+
action: Optional[Callable[[bytes], None]] = None,
|
241
|
+
chunk_size: int = 1024,
|
242
|
+
*,
|
243
|
+
iterator: Literal[False] = False,
|
244
|
+
**kwargs: Any,
|
245
|
+
) -> None: ...
|
246
|
+
|
170
247
|
@cli.register_custom_action(cls_names="ProjectSnippet")
|
171
248
|
@exc.on_http_error(exc.GitlabGetError)
|
172
249
|
def content(
|
@@ -0,0 +1,52 @@
|
|
1
|
+
from gitlab.base import RESTManager, RESTObject
|
2
|
+
from gitlab.mixins import (
|
3
|
+
CreateMixin,
|
4
|
+
DeleteMixin,
|
5
|
+
ListMixin,
|
6
|
+
ObjectDeleteMixin,
|
7
|
+
SaveMixin,
|
8
|
+
UpdateMethod,
|
9
|
+
UpdateMixin,
|
10
|
+
)
|
11
|
+
from gitlab.types import ArrayAttribute, RequiredOptional
|
12
|
+
|
13
|
+
__all__ = [
|
14
|
+
"ProjectExternalStatusCheck",
|
15
|
+
"ProjectExternalStatusCheckManager",
|
16
|
+
"ProjectMergeRequestStatusCheck",
|
17
|
+
"ProjectMergeRequestStatusCheckManager",
|
18
|
+
]
|
19
|
+
|
20
|
+
|
21
|
+
class ProjectExternalStatusCheck(SaveMixin, ObjectDeleteMixin, RESTObject):
|
22
|
+
pass
|
23
|
+
|
24
|
+
|
25
|
+
class ProjectExternalStatusCheckManager(
|
26
|
+
ListMixin, CreateMixin, UpdateMixin, DeleteMixin, RESTManager
|
27
|
+
):
|
28
|
+
_path = "/projects/{project_id}/external_status_checks"
|
29
|
+
_obj_cls = ProjectExternalStatusCheck
|
30
|
+
_from_parent_attrs = {"project_id": "id"}
|
31
|
+
_create_attrs = RequiredOptional(
|
32
|
+
required=("name", "external_url"),
|
33
|
+
optional=("shared_secret", "protected_branch_ids"),
|
34
|
+
)
|
35
|
+
_update_attrs = RequiredOptional(
|
36
|
+
optional=("name", "external_url", "shared_secret", "protected_branch_ids")
|
37
|
+
)
|
38
|
+
_types = {"protected_branch_ids": ArrayAttribute}
|
39
|
+
|
40
|
+
|
41
|
+
class ProjectMergeRequestStatusCheck(SaveMixin, RESTObject):
|
42
|
+
pass
|
43
|
+
|
44
|
+
|
45
|
+
class ProjectMergeRequestStatusCheckManager(ListMixin, RESTManager):
|
46
|
+
_path = "/projects/{project_id}/merge_requests/{merge_request_iid}/status_checks"
|
47
|
+
_obj_cls = ProjectMergeRequestStatusCheck
|
48
|
+
_from_parent_attrs = {"project_id": "project_id", "merge_request_iid": "iid"}
|
49
|
+
_update_attrs = RequiredOptional(
|
50
|
+
required=("sha", "external_status_check_id", "status")
|
51
|
+
)
|
52
|
+
_update_method = UpdateMethod.POST
|
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.2
|
2
2
|
Name: python-gitlab
|
3
|
-
Version: 5.
|
3
|
+
Version: 5.4.0
|
4
4
|
Summary: The python wrapper for the GitLab REST and GraphQL APIs.
|
5
5
|
Author-email: Gauvain Pocentek <gauvain@pocentek.net>
|
6
6
|
Maintainer-email: John Villalovos <john@sodarock.com>, Max Wittig <max.wittig@siemens.com>, Nejc Habjan <nejc.habjan@siemens.com>, Roger Meier <r.meier@siemens.com>
|
@@ -1,13 +1,13 @@
|
|
1
1
|
gitlab/__init__.py,sha256=UP73h54550MIXpRt5OCLJJ-oBHIx1iHSdxmGARfhbO4,1440
|
2
2
|
gitlab/__main__.py,sha256=HTesNl0UAU6mPb9EXWkTKMy6Q6pAUxGi3iPnDHTE2uE,68
|
3
|
-
gitlab/_version.py,sha256=
|
3
|
+
gitlab/_version.py,sha256=6xIwpGFEjYiKx8Z_Hgds7jGVg68iRAssqFOl3-Mcgb4,249
|
4
4
|
gitlab/base.py,sha256=-4DNPEWtOB1sGmETTivrJVyl-DWtbmWTUIDTHpenF9Y,13810
|
5
5
|
gitlab/cli.py,sha256=d3-LtZuA1Fgon5wZWn4c3E70fTIu4mM4Juyhh3F8EBs,12416
|
6
|
-
gitlab/client.py,sha256=
|
6
|
+
gitlab/client.py,sha256=Mx1ANfIOpshgBg5saGReZsNbbK6TZmCg2iJUApAWL5Y,55065
|
7
7
|
gitlab/config.py,sha256=T1DgUXD0-MN2qNszrv-SO5d4uy0FITnNN0vWJgOt2yo,9088
|
8
|
-
gitlab/const.py,sha256=
|
8
|
+
gitlab/const.py,sha256=7SgYfngwRSwzpZMhYyT_Xko0KyGhMrAg8DiyX18DsxM,5114
|
9
9
|
gitlab/exceptions.py,sha256=VOQftPzEq5mpVj6vke7z6Xe4S7Yf_rDTab0lNHqf3AY,8390
|
10
|
-
gitlab/mixins.py,sha256=
|
10
|
+
gitlab/mixins.py,sha256=z543RVakuZI7YtKga-lFx4jcjxAUYcGxaRXj6uMZIFI,37899
|
11
11
|
gitlab/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
12
12
|
gitlab/types.py,sha256=lepiiI_YOr94B4koqIHuY70tszZC_X3YW4lDvbadbI8,3312
|
13
13
|
gitlab/utils.py,sha256=3OngV45Gb4UO2GR-6-kXax1Ghdw6bpyRdUC2cHpyCSw,9027
|
@@ -17,11 +17,11 @@ gitlab/_backends/protocol.py,sha256=m5qSz1o3i0H4XJCWnqx0wIFilOIU9cKxzFsYxLL6Big,
|
|
17
17
|
gitlab/_backends/requests_backend.py,sha256=CrSDTfkvi17dT4kTU8R3qQFBNCPJqEfBJq4gJ2GXleA,5534
|
18
18
|
gitlab/v4/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
19
19
|
gitlab/v4/cli.py,sha256=vVWbeOWUdIPagCRcR-myY6E5tPVmhomroT1y6r2HwsQ,22721
|
20
|
-
gitlab/v4/objects/__init__.py,sha256=
|
20
|
+
gitlab/v4/objects/__init__.py,sha256=rorXTLL7nVxZtwnqVtQPRRprBQplil_w-lp87HJ3W7Q,2182
|
21
21
|
gitlab/v4/objects/access_requests.py,sha256=pPYwB-b4fvKVdBoBRpzx2ensiMXbQwmBkN0XBh6ScaA,923
|
22
22
|
gitlab/v4/objects/appearance.py,sha256=uMt0bjo_KlxwKHItFzGMY9vXm5e489UG_o0EcFVJE8E,1932
|
23
23
|
gitlab/v4/objects/applications.py,sha256=FB1Se6Xa3CFLJlSeZ7lLoyAwY8cAF4DUDsuc59NGpcs,591
|
24
|
-
gitlab/v4/objects/artifacts.py,sha256=
|
24
|
+
gitlab/v4/objects/artifacts.py,sha256=osS5eeRKeNIHsJmYscaTp5HDWYCTWwphSv8HbAIho8Y,6989
|
25
25
|
gitlab/v4/objects/audit_events.py,sha256=OPhGt3br-pOyqMGUvXKAVuBvEz9_TQttBfOnjytAtJY,1910
|
26
26
|
gitlab/v4/objects/award_emojis.py,sha256=ASgIh4475tf1pq2xBHP2bYgKoQoP6UxgoZUHT65iYPM,5881
|
27
27
|
gitlab/v4/objects/badges.py,sha256=wtL7u7qQ01vwUIpA_9RsztAWsVSNLnPsov9VAYyagLQ,1464
|
@@ -32,7 +32,7 @@ gitlab/v4/objects/bulk_imports.py,sha256=rexiCZiZLRdzDlFqRjW4MN8JGfbaYV71s1BxKZx
|
|
32
32
|
gitlab/v4/objects/ci_lint.py,sha256=HhU-PJsQdymh3p0wFxB0ecf84Sd0UaiX0V3YEYQjMqg,2308
|
33
33
|
gitlab/v4/objects/cluster_agents.py,sha256=zN-CEZVomcGXQSh7mzJScd55LzQmVwbDcLKVgUKaLhU,817
|
34
34
|
gitlab/v4/objects/clusters.py,sha256=Gsz5Jf2L27gzdbQvb5gKY20gxFT4jZASAofy5qL5hxQ,3750
|
35
|
-
gitlab/v4/objects/commits.py,sha256=
|
35
|
+
gitlab/v4/objects/commits.py,sha256=mKHx9Xg32cSyzlCVMAAfydi3xdFF8U2U5tc2J40KK0Y,9100
|
36
36
|
gitlab/v4/objects/container_registry.py,sha256=w-t1nbjavJ18MEPmbIrEUcaOP2mXsr3Oc1Ub_1U95Y0,3360
|
37
37
|
gitlab/v4/objects/custom_attributes.py,sha256=48HKZ2C65UUU65FdvKrefFzRMVKRbG-rl58OE9FAuyI,1875
|
38
38
|
gitlab/v4/objects/deploy_keys.py,sha256=hv9WSzbE9TqRskVSfyNfATGxSw7-urId2tH6ag1hnq4,1947
|
@@ -45,49 +45,50 @@ gitlab/v4/objects/epics.py,sha256=HKLpEL7_K54M6prGjga3qw5VfI2ZGGxBbfz42Oumvr0,41
|
|
45
45
|
gitlab/v4/objects/events.py,sha256=20yCSlR9XB75AwMzatmAt4VdT9PL2nX0t1p1sAWbrvI,7067
|
46
46
|
gitlab/v4/objects/export_import.py,sha256=XVmrSq_qHwQr3XamFPfISEXnlBd-icJRm2CCa3V2puY,1909
|
47
47
|
gitlab/v4/objects/features.py,sha256=N7T52I2JyNIgD1JejrSr8fNa14ZlAUxrS2VceUekhj0,1973
|
48
|
-
gitlab/v4/objects/files.py,sha256=
|
48
|
+
gitlab/v4/objects/files.py,sha256=Vbz5mdcvmPR7QKvTufWxdnux2BRDG1dwhEPDqh8VQr0,13041
|
49
49
|
gitlab/v4/objects/geo_nodes.py,sha256=tD9piU7OIZgbNQRUeLTFPtAJ6PVL_SI6tR_zh6Tm2M8,3686
|
50
50
|
gitlab/v4/objects/group_access_tokens.py,sha256=EijY0sfsp0Gtx_q4JLBeLL3jphx5b_6-nTzKxV272jc,1023
|
51
51
|
gitlab/v4/objects/groups.py,sha256=YxOeaRYUjhu8PicCicVT7Eua04YuyOLAc8J13V7r9Gg,15958
|
52
52
|
gitlab/v4/objects/hooks.py,sha256=ig8qyC6ZWpZXqcGYCSS7LVvTpD1xnLkNNtfJAOXeYv8,4445
|
53
53
|
gitlab/v4/objects/integrations.py,sha256=QWl5ZnE1oivt4ho9qJa_o268ORdaW35D4klBRy1jUyQ,9229
|
54
54
|
gitlab/v4/objects/invitations.py,sha256=ya9x7xhL1oSbx-FLJud-lHKmbYQoTplZlAbjsZip2CI,2734
|
55
|
-
gitlab/v4/objects/issues.py,sha256=
|
55
|
+
gitlab/v4/objects/issues.py,sha256=RHvoE4aJgMAfeWp3md9Ekg29PaiTbPIlDAn99Pg_ap4,10403
|
56
56
|
gitlab/v4/objects/iterations.py,sha256=QsPOg0YB57ShQUdTQwa_wXtNfWAM2c53kWE6y5xjg6E,1561
|
57
57
|
gitlab/v4/objects/job_token_scope.py,sha256=J69VVjtRgnTYQrFHFxOWQv3T2s6XRxb7uz57IAhnsdU,2622
|
58
|
-
gitlab/v4/objects/jobs.py,sha256=
|
58
|
+
gitlab/v4/objects/jobs.py,sha256=tEaBf_PGxSiJQLe4HWAd3nSTmP40V_kqcjeL5lJ1juU,11535
|
59
59
|
gitlab/v4/objects/keys.py,sha256=IclYGSzcVEZPIhDdIz-p16rvb68FnBTgAf1cWCXWjkY,882
|
60
|
-
gitlab/v4/objects/labels.py,sha256=
|
60
|
+
gitlab/v4/objects/labels.py,sha256=4o0R9hfhsowLfPT_XGPu74R4o4Q4nOosajmf-s4Cncg,4756
|
61
61
|
gitlab/v4/objects/ldap.py,sha256=adpkdfk7VBjshuh8SpCsc77Pax4QgqCx1N12CuzitDE,1662
|
62
62
|
gitlab/v4/objects/members.py,sha256=YJO9MaqlCSUnozHIlI7MfSlcWTju4xRmW8QIlEiBmok,3902
|
63
63
|
gitlab/v4/objects/merge_request_approvals.py,sha256=XJWjThmc0dbKpYzMW7XB3iyz7G9qRerUNAyZMVw5it0,6627
|
64
|
-
gitlab/v4/objects/merge_requests.py,sha256=
|
64
|
+
gitlab/v4/objects/merge_requests.py,sha256=d2KpiITBzpamdpoGU-H2z1wJaPuZxjgYznHLT0HeKPo,18654
|
65
65
|
gitlab/v4/objects/merge_trains.py,sha256=e0Gp2Ri75elcG_r9w8qxdrcWW_YiebPRwUYIH5od8kc,422
|
66
66
|
gitlab/v4/objects/milestones.py,sha256=LHAGYJlTm2ed3eqv4mTO-QZ7vRbwGXRFpre_G4gHdKY,7073
|
67
67
|
gitlab/v4/objects/namespaces.py,sha256=5_km8RP_OLZoRm6u-p53S2AM5UsHyJ4j65fi5fGIoLo,1535
|
68
68
|
gitlab/v4/objects/notes.py,sha256=Y0wrSD2pwvzX1RfyzyeXMMBy0_jOsWsaIUpa6CYWprg,8588
|
69
69
|
gitlab/v4/objects/notification_settings.py,sha256=zhltGjuu1HiqdON2v9-uKu7Z6TOOBOgQ3GdWgfEAJ64,2061
|
70
70
|
gitlab/v4/objects/package_protection_rules.py,sha256=OVO9R_ePWjNFKK8LCuycGpCds6Yj6ZFtirZRSlzKa7Q,1129
|
71
|
-
gitlab/v4/objects/packages.py,sha256=
|
71
|
+
gitlab/v4/objects/packages.py,sha256=vVQmMSXunJeZxC0mvpUjsg9eatJqLpN0OxLn6nRSjNI,8255
|
72
72
|
gitlab/v4/objects/pages.py,sha256=Z9x9Sd21daSLmapkBLoV3bKmxQu-JFtrHgJMBjfNbg8,1868
|
73
73
|
gitlab/v4/objects/personal_access_tokens.py,sha256=vMsAytE5czai3fpyTCyV1sR3cZDZRhvI06u08L8O7mw,1315
|
74
74
|
gitlab/v4/objects/pipelines.py,sha256=nQrzNW6WCTcDCqz_nl8i7YYGpXfRaEVGGpeRdObjeW0,10664
|
75
75
|
gitlab/v4/objects/project_access_tokens.py,sha256=z_BCaBtXC7wzGVN6Ip0H72VwHID8XEBHDddCw0J8hO0,1043
|
76
|
-
gitlab/v4/objects/projects.py,sha256=
|
76
|
+
gitlab/v4/objects/projects.py,sha256=X5cznXiJe-mxKeKI6LpMP2XMqbjmBUmqs6P7ZCD81dE,46711
|
77
77
|
gitlab/v4/objects/push_rules.py,sha256=0dKMWEzF5h1zATh0_j_SvjQ7HKx9_5M7J9hzDGB66Rc,3041
|
78
78
|
gitlab/v4/objects/registry_protection_repository_rules.py,sha256=iu4ubqfh_sw0BCxRqqvXEUrPXspr8d0z3njQLwTatpo,1153
|
79
79
|
gitlab/v4/objects/registry_protection_rules.py,sha256=bZsUAjoxwQEHOfr4Bxz6FQA2MGHZpWOFz00o99hcfI4,1092
|
80
80
|
gitlab/v4/objects/releases.py,sha256=j4_45oOj2yaA2XZ3fwBcKhFJ6li4vQy_zyr013LKfvY,1972
|
81
|
-
gitlab/v4/objects/repositories.py,sha256=
|
81
|
+
gitlab/v4/objects/repositories.py,sha256=c3Tj6gbjhIsjrXCooeYZnrGcLAyeKV0ERcd7SzgjriE,13027
|
82
82
|
gitlab/v4/objects/resource_groups.py,sha256=fYYnA2YO9CSTzxwImVCVPSiPkIeNpKRrPj7dpzwati4,1427
|
83
83
|
gitlab/v4/objects/reviewers.py,sha256=HTU8hw09fRofvoj5V4kde1PLK3QSe1uY3BVUtxOvJ00,517
|
84
84
|
gitlab/v4/objects/runners.py,sha256=QFYiApMyBWs0rhw1drylutoltI2zdIwDeYP1oFJUGJ4,4917
|
85
|
-
gitlab/v4/objects/secure_files.py,sha256=
|
85
|
+
gitlab/v4/objects/secure_files.py,sha256=c7vZ2Ia3qCC6lJY-Rg5zsLgQ0NIVHQnVV8QNwFwoomM,3341
|
86
86
|
gitlab/v4/objects/service_accounts.py,sha256=r2s33LU9LLgzYtCiUwQEiqEB9o7YuzJRw0aaFXEJK6Q,603
|
87
87
|
gitlab/v4/objects/settings.py,sha256=LTkdyhhU2MTA15EJw2lZeqDKfK_Bg65CV1CchPljrqY,4295
|
88
88
|
gitlab/v4/objects/sidekiq.py,sha256=kIMgglIBJkbA_io9MXwkCEUs8mZPte6sFQYoWH1TXI4,2996
|
89
|
-
gitlab/v4/objects/snippets.py,sha256=
|
89
|
+
gitlab/v4/objects/snippets.py,sha256=bHGzCPBCVgYYb5X29G3IVjCQgy7Gn87Y5kbHeJOTlps,9755
|
90
90
|
gitlab/v4/objects/statistics.py,sha256=NPN8WpCwFJeWeLcn5zahwAgzpJl-Q6bJyoi5ff8XCRQ,2638
|
91
|
+
gitlab/v4/objects/status_checks.py,sha256=AV73nxwyKLWd5kCpQKB_Q-PBt2_4LeB0nM6Q3ATArm4,1609
|
91
92
|
gitlab/v4/objects/tags.py,sha256=LCvSzI44a1NlrUVi5A_2eOwFSOJjVBSkWe71QdXH_68,1453
|
92
93
|
gitlab/v4/objects/templates.py,sha256=IBu46OdUsYwAvozGwPoFLoQf61jdp3_VGcIPbL3ni6c,5092
|
93
94
|
gitlab/v4/objects/todos.py,sha256=HMqvK9CDyxj2jwSQKjnaTLmMztDhqIL_62CHh6Rh4lk,1846
|
@@ -96,10 +97,10 @@ gitlab/v4/objects/triggers.py,sha256=UAERq_C-QdPBbBQPHLh5IfhpkdDeIxdnVGPHfu9Qy5Y
|
|
96
97
|
gitlab/v4/objects/users.py,sha256=_gGrTwcE17jeoXIPgfFSv54jtF1_9C1R0Y0hhssTvXY,21381
|
97
98
|
gitlab/v4/objects/variables.py,sha256=S0Vz32jEpUbo4J2js8gMPPTVpcy1ge5FYVHLiPz9c-A,2627
|
98
99
|
gitlab/v4/objects/wikis.py,sha256=JtI1cQqZV1_PRfKVlQRMh4LZjdxEfi9T2VuFYv6PrV8,1775
|
99
|
-
python_gitlab-5.
|
100
|
-
python_gitlab-5.
|
101
|
-
python_gitlab-5.
|
102
|
-
python_gitlab-5.
|
103
|
-
python_gitlab-5.
|
104
|
-
python_gitlab-5.
|
105
|
-
python_gitlab-5.
|
100
|
+
python_gitlab-5.4.0.dist-info/AUTHORS,sha256=Z0P61GJSVnp7iFbRcMezhx3f4zMyPkVmG--TWaRo768,526
|
101
|
+
python_gitlab-5.4.0.dist-info/COPYING,sha256=2n6rt7r999OuXp8iOqW9we7ORaxWncIbOwN1ILRGR2g,7651
|
102
|
+
python_gitlab-5.4.0.dist-info/METADATA,sha256=m9b5jCa1hyOliDS_pOjD12zWD5DXsXOdUj0a8ZX3ApA,8478
|
103
|
+
python_gitlab-5.4.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
104
|
+
python_gitlab-5.4.0.dist-info/entry_points.txt,sha256=nhpKLLP_uQPFByn8UtE9zsvQQwa402t52o_Cw9IFXMo,43
|
105
|
+
python_gitlab-5.4.0.dist-info/top_level.txt,sha256=MvIaP8p_Oaf4gO_hXmHkX-5y2deHLp1pe6tJR3ukQ6o,7
|
106
|
+
python_gitlab-5.4.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|