python-gitlab 4.4.0__py3-none-any.whl → 4.5.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/_backends/protocol.py +2 -4
- gitlab/_version.py +1 -1
- gitlab/cli.py +13 -1
- gitlab/client.py +0 -1
- gitlab/utils.py +3 -3
- gitlab/v4/cli.py +9 -0
- gitlab/v4/objects/artifacts.py +2 -1
- gitlab/v4/objects/audit_events.py +1 -0
- gitlab/v4/objects/branches.py +10 -3
- gitlab/v4/objects/deployments.py +1 -0
- gitlab/v4/objects/features.py +1 -0
- gitlab/v4/objects/job_token_scope.py +48 -0
- gitlab/v4/objects/jobs.py +4 -1
- gitlab/v4/objects/merge_request_approvals.py +4 -56
- gitlab/v4/objects/merge_requests.py +1 -0
- gitlab/v4/objects/pipelines.py +2 -1
- gitlab/v4/objects/projects.py +1 -0
- gitlab/v4/objects/repositories.py +1 -0
- gitlab/v4/objects/secure_files.py +1 -0
- gitlab/v4/objects/users.py +1 -0
- gitlab/v4/objects/variables.py +1 -0
- {python_gitlab-4.4.0.dist-info → python_gitlab-4.5.0.dist-info}/METADATA +18 -1
- {python_gitlab-4.4.0.dist-info → python_gitlab-4.5.0.dist-info}/RECORD +28 -28
- {python_gitlab-4.4.0.dist-info → python_gitlab-4.5.0.dist-info}/WHEEL +1 -1
- {python_gitlab-4.4.0.dist-info → python_gitlab-4.5.0.dist-info}/AUTHORS +0 -0
- {python_gitlab-4.4.0.dist-info → python_gitlab-4.5.0.dist-info}/COPYING +0 -0
- {python_gitlab-4.4.0.dist-info → python_gitlab-4.5.0.dist-info}/entry_points.txt +0 -0
- {python_gitlab-4.4.0.dist-info → python_gitlab-4.5.0.dist-info}/top_level.txt +0 -0
gitlab/_backends/protocol.py
CHANGED
@@ -13,8 +13,7 @@ else:
|
|
13
13
|
|
14
14
|
class BackendResponse(Protocol):
|
15
15
|
@abc.abstractmethod
|
16
|
-
def __init__(self, response: requests.Response) -> None:
|
17
|
-
...
|
16
|
+
def __init__(self, response: requests.Response) -> None: ...
|
18
17
|
|
19
18
|
|
20
19
|
class Backend(Protocol):
|
@@ -30,5 +29,4 @@ class Backend(Protocol):
|
|
30
29
|
verify: Optional[Union[bool, str]],
|
31
30
|
stream: Optional[bool],
|
32
31
|
**kwargs: Any,
|
33
|
-
) -> BackendResponse:
|
34
|
-
...
|
32
|
+
) -> BackendResponse: ...
|
gitlab/_version.py
CHANGED
gitlab/cli.py
CHANGED
@@ -282,6 +282,16 @@ def _get_base_parser(add_help: bool = True) -> argparse.ArgumentParser:
|
|
282
282
|
help=("GitLab CI job token [env var: CI_JOB_TOKEN]"),
|
283
283
|
required=False,
|
284
284
|
)
|
285
|
+
parser.add_argument(
|
286
|
+
"--skip-login",
|
287
|
+
help=(
|
288
|
+
"Skip initial authenticated API call to the current user endpoint. "
|
289
|
+
"This may be useful when invoking the CLI in scripts. "
|
290
|
+
"[env var: GITLAB_SKIP_LOGIN]"
|
291
|
+
),
|
292
|
+
action="store_true",
|
293
|
+
default=os.getenv("GITLAB_SKIP_LOGIN"),
|
294
|
+
)
|
285
295
|
return parser
|
286
296
|
|
287
297
|
|
@@ -368,6 +378,7 @@ def main() -> None:
|
|
368
378
|
debug = args.debug
|
369
379
|
gitlab_resource = args.gitlab_resource
|
370
380
|
resource_action = args.resource_action
|
381
|
+
skip_login = args.skip_login
|
371
382
|
|
372
383
|
args_dict = vars(args)
|
373
384
|
# Remove CLI behavior-related args
|
@@ -390,6 +401,7 @@ def main() -> None:
|
|
390
401
|
"private_token",
|
391
402
|
"oauth_token",
|
392
403
|
"job_token",
|
404
|
+
"skip_login",
|
393
405
|
):
|
394
406
|
args_dict.pop(item)
|
395
407
|
args_dict = {k: _parse_value(v) for k, v in args_dict.items() if v is not None}
|
@@ -398,7 +410,7 @@ def main() -> None:
|
|
398
410
|
gl = gitlab.Gitlab.merge_config(vars(options), gitlab_id, config_files)
|
399
411
|
if debug:
|
400
412
|
gl.enable_debug()
|
401
|
-
if gl.private_token or gl.oauth_token:
|
413
|
+
if not skip_login and (gl.private_token or gl.oauth_token):
|
402
414
|
gl.auth()
|
403
415
|
except Exception as e:
|
404
416
|
die(str(e))
|
gitlab/client.py
CHANGED
gitlab/utils.py
CHANGED
@@ -18,7 +18,8 @@ class _StdoutStream:
|
|
18
18
|
|
19
19
|
def get_content_type(content_type: Optional[str]) -> str:
|
20
20
|
message = email.message.Message()
|
21
|
-
|
21
|
+
if content_type is not None:
|
22
|
+
message["content-type"] = content_type
|
22
23
|
|
23
24
|
return message.get_content_type()
|
24
25
|
|
@@ -191,8 +192,7 @@ def warn(
|
|
191
192
|
stacklevel = 1
|
192
193
|
warning_from = ""
|
193
194
|
for stacklevel, frame in enumerate(reversed(stack), start=1):
|
194
|
-
|
195
|
-
warning_from = f" (python-gitlab: {frame.filename}:{frame.lineno})"
|
195
|
+
warning_from = f" (python-gitlab: {frame.filename}:{frame.lineno})"
|
196
196
|
frame_dir = str(pathlib.Path(frame.filename).parent.resolve())
|
197
197
|
if not frame_dir.startswith(str(pg_dir)):
|
198
198
|
break
|
gitlab/v4/cli.py
CHANGED
@@ -262,6 +262,10 @@ def _populate_sub_parser_by_class(
|
|
262
262
|
sub_parser_action.add_argument(
|
263
263
|
f"--{x.replace('_', '-')}", required=False
|
264
264
|
)
|
265
|
+
if mgr_cls._create_attrs.exclusive:
|
266
|
+
group = sub_parser_action.add_mutually_exclusive_group()
|
267
|
+
for x in mgr_cls._create_attrs.exclusive:
|
268
|
+
group.add_argument(f"--{x.replace('_', '-')}")
|
265
269
|
|
266
270
|
if action_name == "update":
|
267
271
|
if cls._id_attr is not None:
|
@@ -280,6 +284,11 @@ def _populate_sub_parser_by_class(
|
|
280
284
|
f"--{x.replace('_', '-')}", required=False
|
281
285
|
)
|
282
286
|
|
287
|
+
if mgr_cls._update_attrs.exclusive:
|
288
|
+
group = sub_parser_action.add_mutually_exclusive_group()
|
289
|
+
for x in mgr_cls._update_attrs.exclusive:
|
290
|
+
group.add_argument(f"--{x.replace('_', '-')}")
|
291
|
+
|
283
292
|
if cls.__name__ in cli.custom_actions:
|
284
293
|
name = cls.__name__
|
285
294
|
for action_name in cli.custom_actions[name]:
|
gitlab/v4/objects/artifacts.py
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
GitLab API:
|
3
3
|
https://docs.gitlab.com/ee/api/job_artifacts.html
|
4
4
|
"""
|
5
|
+
|
5
6
|
from typing import Any, Callable, Iterator, Optional, TYPE_CHECKING, Union
|
6
7
|
|
7
8
|
import requests
|
@@ -61,7 +62,7 @@ class ProjectArtifactManager(RESTManager):
|
|
61
62
|
|
62
63
|
Args:
|
63
64
|
ref_name: Branch or tag name in repository. HEAD or SHA references
|
64
|
-
|
65
|
+
are not supported.
|
65
66
|
job: The name of the job.
|
66
67
|
job_token: Job token for multi-project pipeline triggers.
|
67
68
|
streamed: If True the data will be processed by chunks of
|
gitlab/v4/objects/branches.py
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
from typing import Any, cast, Union
|
2
2
|
|
3
3
|
from gitlab.base import RESTManager, RESTObject
|
4
|
-
from gitlab.mixins import
|
4
|
+
from gitlab.mixins import (
|
5
|
+
CRUDMixin,
|
6
|
+
NoUpdateMixin,
|
7
|
+
ObjectDeleteMixin,
|
8
|
+
SaveMixin,
|
9
|
+
UpdateMethod,
|
10
|
+
)
|
5
11
|
from gitlab.types import RequiredOptional
|
6
12
|
|
7
13
|
__all__ = [
|
@@ -28,11 +34,11 @@ class ProjectBranchManager(NoUpdateMixin, RESTManager):
|
|
28
34
|
return cast(ProjectBranch, super().get(id=id, lazy=lazy, **kwargs))
|
29
35
|
|
30
36
|
|
31
|
-
class ProjectProtectedBranch(ObjectDeleteMixin, RESTObject):
|
37
|
+
class ProjectProtectedBranch(SaveMixin, ObjectDeleteMixin, RESTObject):
|
32
38
|
_id_attr = "name"
|
33
39
|
|
34
40
|
|
35
|
-
class ProjectProtectedBranchManager(
|
41
|
+
class ProjectProtectedBranchManager(CRUDMixin, RESTManager):
|
36
42
|
_path = "/projects/{project_id}/protected_branches"
|
37
43
|
_obj_cls = ProjectProtectedBranch
|
38
44
|
_from_parent_attrs = {"project_id": "id"}
|
@@ -49,6 +55,7 @@ class ProjectProtectedBranchManager(NoUpdateMixin, RESTManager):
|
|
49
55
|
"code_owner_approval_required",
|
50
56
|
),
|
51
57
|
)
|
58
|
+
_update_method = UpdateMethod.PATCH
|
52
59
|
|
53
60
|
def get(
|
54
61
|
self, id: Union[str, int], lazy: bool = False, **kwargs: Any
|
gitlab/v4/objects/deployments.py
CHANGED
gitlab/v4/objects/features.py
CHANGED
@@ -2,12 +2,17 @@ from typing import Any, cast
|
|
2
2
|
|
3
3
|
from gitlab.base import RESTManager, RESTObject
|
4
4
|
from gitlab.mixins import (
|
5
|
+
CreateMixin,
|
6
|
+
DeleteMixin,
|
5
7
|
GetWithoutIdMixin,
|
8
|
+
ListMixin,
|
9
|
+
ObjectDeleteMixin,
|
6
10
|
RefreshMixin,
|
7
11
|
SaveMixin,
|
8
12
|
UpdateMethod,
|
9
13
|
UpdateMixin,
|
10
14
|
)
|
15
|
+
from gitlab.types import RequiredOptional
|
11
16
|
|
12
17
|
__all__ = [
|
13
18
|
"ProjectJobTokenScope",
|
@@ -18,6 +23,9 @@ __all__ = [
|
|
18
23
|
class ProjectJobTokenScope(RefreshMixin, SaveMixin, RESTObject):
|
19
24
|
_id_attr = None
|
20
25
|
|
26
|
+
allowlist: "AllowlistProjectManager"
|
27
|
+
groups_allowlist: "AllowlistGroupManager"
|
28
|
+
|
21
29
|
|
22
30
|
class ProjectJobTokenScopeManager(GetWithoutIdMixin, UpdateMixin, RESTManager):
|
23
31
|
_path = "/projects/{project_id}/job_token_scope"
|
@@ -27,3 +35,43 @@ class ProjectJobTokenScopeManager(GetWithoutIdMixin, UpdateMixin, RESTManager):
|
|
27
35
|
|
28
36
|
def get(self, **kwargs: Any) -> ProjectJobTokenScope:
|
29
37
|
return cast(ProjectJobTokenScope, super().get(**kwargs))
|
38
|
+
|
39
|
+
|
40
|
+
class AllowlistProject(ObjectDeleteMixin, RESTObject):
|
41
|
+
_id_attr = "target_project_id" # note: only true for create endpoint
|
42
|
+
|
43
|
+
def get_id(self) -> int:
|
44
|
+
"""Returns the id of the resource. This override deals with
|
45
|
+
the fact that either an `id` or a `target_project_id` attribute
|
46
|
+
is returned by the server depending on the endpoint called."""
|
47
|
+
target_project_id = cast(int, super().get_id())
|
48
|
+
if target_project_id is not None:
|
49
|
+
return target_project_id
|
50
|
+
return cast(int, self.id)
|
51
|
+
|
52
|
+
|
53
|
+
class AllowlistProjectManager(ListMixin, CreateMixin, DeleteMixin, RESTManager):
|
54
|
+
_path = "/projects/{project_id}/job_token_scope/allowlist"
|
55
|
+
_obj_cls = AllowlistProject
|
56
|
+
_from_parent_attrs = {"project_id": "project_id"}
|
57
|
+
_create_attrs = RequiredOptional(required=("target_project_id",))
|
58
|
+
|
59
|
+
|
60
|
+
class AllowlistGroup(ObjectDeleteMixin, RESTObject):
|
61
|
+
_id_attr = "target_group_id" # note: only true for create endpoint
|
62
|
+
|
63
|
+
def get_id(self) -> int:
|
64
|
+
"""Returns the id of the resource. This override deals with
|
65
|
+
the fact that either an `id` or a `target_group_id` attribute
|
66
|
+
is returned by the server depending on the endpoint called."""
|
67
|
+
target_group_id = cast(int, super().get_id())
|
68
|
+
if target_group_id is not None:
|
69
|
+
return target_group_id
|
70
|
+
return cast(int, self.id)
|
71
|
+
|
72
|
+
|
73
|
+
class AllowlistGroupManager(ListMixin, CreateMixin, DeleteMixin, RESTManager):
|
74
|
+
_path = "/projects/{project_id}/job_token_scope/groups_allowlist"
|
75
|
+
_obj_cls = AllowlistGroup
|
76
|
+
_from_parent_attrs = {"project_id": "project_id"}
|
77
|
+
_create_attrs = RequiredOptional(required=("target_group_id",))
|
gitlab/v4/objects/jobs.py
CHANGED
@@ -65,7 +65,10 @@ class ProjectJob(RefreshMixin, RESTObject):
|
|
65
65
|
GitlabJobPlayError: If the job could not be triggered
|
66
66
|
"""
|
67
67
|
path = f"{self.manager.path}/{self.encoded_id}/play"
|
68
|
-
self.manager.gitlab.http_post(path, **kwargs)
|
68
|
+
result = self.manager.gitlab.http_post(path, **kwargs)
|
69
|
+
if TYPE_CHECKING:
|
70
|
+
assert isinstance(result, dict)
|
71
|
+
self._update_attrs(result)
|
69
72
|
|
70
73
|
@cli.register_custom_action("ProjectJob")
|
71
74
|
@exc.on_http_error(exc.GitlabJobEraseError)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from typing import Any, cast,
|
1
|
+
from typing import Any, cast, List, Optional, TYPE_CHECKING, Union
|
2
2
|
|
3
3
|
from gitlab import exceptions as exc
|
4
4
|
from gitlab.base import RESTManager, RESTObject
|
@@ -132,42 +132,16 @@ class ProjectMergeRequestApprovalManager(GetWithoutIdMixin, UpdateMixin, RESTMan
|
|
132
132
|
|
133
133
|
class ProjectMergeRequestApprovalRule(SaveMixin, ObjectDeleteMixin, RESTObject):
|
134
134
|
_repr_attr = "name"
|
135
|
-
id: int
|
136
|
-
approval_rule_id: int
|
137
|
-
merge_request_iid: int
|
138
|
-
|
139
|
-
@exc.on_http_error(exc.GitlabUpdateError)
|
140
|
-
def save(self, **kwargs: Any) -> None:
|
141
|
-
"""Save the changes made to the object to the server.
|
142
|
-
|
143
|
-
The object is updated to match what the server returns.
|
144
|
-
|
145
|
-
Args:
|
146
|
-
**kwargs: Extra options to send to the server (e.g. sudo)
|
147
|
-
|
148
|
-
Raise:
|
149
|
-
GitlabAuthenticationError: If authentication is not correct
|
150
|
-
GitlabUpdateError: If the server cannot perform the request
|
151
|
-
"""
|
152
|
-
# There is a mismatch between the name of our id attribute and the put
|
153
|
-
# REST API name for the project_id, so we override it here.
|
154
|
-
self.approval_rule_id = self.id
|
155
|
-
self.merge_request_iid = self._parent_attrs["mr_iid"]
|
156
|
-
self.id = self._parent_attrs["project_id"]
|
157
|
-
# save will update self.id with the result from the server, so no need
|
158
|
-
# to overwrite with what it was before we overwrote it.
|
159
|
-
SaveMixin.save(self, **kwargs)
|
160
135
|
|
161
136
|
|
162
137
|
class ProjectMergeRequestApprovalRuleManager(CRUDMixin, RESTManager):
|
163
|
-
_path = "/projects/{project_id}/merge_requests/{
|
138
|
+
_path = "/projects/{project_id}/merge_requests/{merge_request_iid}/approval_rules"
|
164
139
|
_obj_cls = ProjectMergeRequestApprovalRule
|
165
|
-
_from_parent_attrs = {"project_id": "project_id", "
|
140
|
+
_from_parent_attrs = {"project_id": "project_id", "merge_request_iid": "iid"}
|
166
141
|
_update_attrs = RequiredOptional(
|
167
142
|
required=(
|
168
143
|
"id",
|
169
144
|
"merge_request_iid",
|
170
|
-
"approval_rule_id",
|
171
145
|
"name",
|
172
146
|
"approvals_required",
|
173
147
|
),
|
@@ -177,7 +151,7 @@ class ProjectMergeRequestApprovalRuleManager(CRUDMixin, RESTManager):
|
|
177
151
|
# groups of project-level rule will be copied. The approvals_required
|
178
152
|
# specified will be used.
|
179
153
|
_create_attrs = RequiredOptional(
|
180
|
-
required=("
|
154
|
+
required=("name", "approvals_required"),
|
181
155
|
optional=("approval_project_rule_id", "user_ids", "group_ids"),
|
182
156
|
)
|
183
157
|
|
@@ -188,32 +162,6 @@ class ProjectMergeRequestApprovalRuleManager(CRUDMixin, RESTManager):
|
|
188
162
|
ProjectMergeRequestApprovalRule, super().get(id=id, lazy=lazy, **kwargs)
|
189
163
|
)
|
190
164
|
|
191
|
-
def create(
|
192
|
-
self, data: Optional[Dict[str, Any]] = None, **kwargs: Any
|
193
|
-
) -> RESTObject:
|
194
|
-
"""Create a new object.
|
195
|
-
|
196
|
-
Args:
|
197
|
-
data: Parameters to send to the server to create the
|
198
|
-
resource
|
199
|
-
**kwargs: Extra options to send to the server (e.g. sudo or
|
200
|
-
'ref_name', 'stage', 'name', 'all')
|
201
|
-
|
202
|
-
Raises:
|
203
|
-
GitlabAuthenticationError: If authentication is not correct
|
204
|
-
GitlabCreateError: If the server cannot perform the request
|
205
|
-
|
206
|
-
Returns:
|
207
|
-
A new instance of the manage object class build with
|
208
|
-
the data sent by the server
|
209
|
-
"""
|
210
|
-
if TYPE_CHECKING:
|
211
|
-
assert data is not None
|
212
|
-
new_data = data.copy()
|
213
|
-
new_data["id"] = self._from_parent_attrs["project_id"]
|
214
|
-
new_data["merge_request_iid"] = self._from_parent_attrs["mr_iid"]
|
215
|
-
return CreateMixin.create(self, new_data, **kwargs)
|
216
|
-
|
217
165
|
|
218
166
|
class ProjectMergeRequestApprovalState(RESTObject):
|
219
167
|
pass
|
gitlab/v4/objects/pipelines.py
CHANGED
@@ -17,7 +17,7 @@ from gitlab.mixins import (
|
|
17
17
|
SaveMixin,
|
18
18
|
UpdateMixin,
|
19
19
|
)
|
20
|
-
from gitlab.types import RequiredOptional
|
20
|
+
from gitlab.types import ArrayAttribute, RequiredOptional
|
21
21
|
|
22
22
|
__all__ = [
|
23
23
|
"ProjectMergeRequestPipeline",
|
@@ -149,6 +149,7 @@ class ProjectPipelineJobManager(ListMixin, RESTManager):
|
|
149
149
|
_obj_cls = ProjectPipelineJob
|
150
150
|
_from_parent_attrs = {"project_id": "project_id", "pipeline_id": "id"}
|
151
151
|
_list_filters = ("scope", "include_retried")
|
152
|
+
_types = {"scope": ArrayAttribute}
|
152
153
|
|
153
154
|
|
154
155
|
class ProjectPipelineBridge(RESTObject):
|
gitlab/v4/objects/projects.py
CHANGED
gitlab/v4/objects/users.py
CHANGED
gitlab/v4/objects/variables.py
CHANGED
@@ -4,6 +4,7 @@ https://docs.gitlab.com/ee/api/instance_level_ci_variables.html
|
|
4
4
|
https://docs.gitlab.com/ee/api/project_level_variables.html
|
5
5
|
https://docs.gitlab.com/ee/api/group_level_variables.html
|
6
6
|
"""
|
7
|
+
|
7
8
|
from typing import Any, cast, Union
|
8
9
|
|
9
10
|
from gitlab.base import RESTManager, RESTObject
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: python-gitlab
|
3
|
-
Version: 4.
|
3
|
+
Version: 4.5.0
|
4
4
|
Summary: A python wrapper for the GitLab API
|
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>
|
@@ -149,6 +149,23 @@ You can also mount your own config file:
|
|
149
149
|
|
150
150
|
$ docker run -it --rm -v /path/to/python-gitlab.cfg:/etc/python-gitlab.cfg registry.gitlab.com/python-gitlab/python-gitlab:latest <command> ...
|
151
151
|
|
152
|
+
Usage inside GitLab CI
|
153
|
+
~~~~~~~~~~~~~~~~~~~~~~
|
154
|
+
|
155
|
+
If you want to use the Docker image directly inside your GitLab CI as an ``image``, you will need to override
|
156
|
+
the ``entrypoint``, `as noted in the official GitLab documentation <https://docs.gitlab.com/ee/ci/docker/using_docker_images.html#override-the-entrypoint-of-an-image>`__:
|
157
|
+
|
158
|
+
.. code-block:: yaml
|
159
|
+
|
160
|
+
Job Name:
|
161
|
+
image:
|
162
|
+
name: registry.gitlab.com/python-gitlab/python-gitlab:latest
|
163
|
+
entrypoint: [""]
|
164
|
+
before_script:
|
165
|
+
gitlab --version
|
166
|
+
script:
|
167
|
+
gitlab <command>
|
168
|
+
|
152
169
|
Building the image
|
153
170
|
~~~~~~~~~~~~~~~~~~
|
154
171
|
|
@@ -1,31 +1,31 @@
|
|
1
1
|
gitlab/__init__.py,sha256=bd8BSLyUUjtHMKtzmf-T5855W6FUHcuhIwx2hNu0w2o,1382
|
2
2
|
gitlab/__main__.py,sha256=HTesNl0UAU6mPb9EXWkTKMy6Q6pAUxGi3iPnDHTE2uE,68
|
3
|
-
gitlab/_version.py,sha256=
|
3
|
+
gitlab/_version.py,sha256=IKQR7Eu8OdIn6KAmeOAIMU63Gvw3qzz4NlpqABZihBw,249
|
4
4
|
gitlab/base.py,sha256=5cotawlHD01Vw88aN4o7wNIhDyk_bmcwubX4mbOpnVo,13780
|
5
|
-
gitlab/cli.py,sha256=
|
6
|
-
gitlab/client.py,sha256=
|
5
|
+
gitlab/cli.py,sha256=ddb3GPxOmxzaXahtvPKLw_mdgvXZWXNECyAMjgtjhwE,12870
|
6
|
+
gitlab/client.py,sha256=U5Q7yzapLyaDxxVvv5KCGlnYG9_K7YfD1senumyDh1Y,48755
|
7
7
|
gitlab/config.py,sha256=T1DgUXD0-MN2qNszrv-SO5d4uy0FITnNN0vWJgOt2yo,9088
|
8
8
|
gitlab/const.py,sha256=rtPU-fxVSOvgpueoQVTvZGQp6iAZ-aa3nsY4RcSs_M4,5352
|
9
9
|
gitlab/exceptions.py,sha256=Ruz9LusKMRu6SyV1vXpOu_UTCi3XU64A9BeHsqKASOw,8303
|
10
10
|
gitlab/mixins.py,sha256=whh6_Wq2Y9xWuyhIczfT9EdFVXIeA88LmAH0nsLNQ6A,36350
|
11
11
|
gitlab/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
12
12
|
gitlab/types.py,sha256=lepiiI_YOr94B4koqIHuY70tszZC_X3YW4lDvbadbI8,3312
|
13
|
-
gitlab/utils.py,sha256=
|
13
|
+
gitlab/utils.py,sha256=PNf4GT25MzgFIYa3e9_7FxleUYPqkt8DRPe4tYc0vUI,6396
|
14
14
|
gitlab/_backends/__init__.py,sha256=WalQZRIDzw19FuNxraG7fvck6ddg4cdNd3bi53QKvZM,392
|
15
|
-
gitlab/_backends/protocol.py,sha256=
|
15
|
+
gitlab/_backends/protocol.py,sha256=m5qSz1o3i0H4XJCWnqx0wIFilOIU9cKxzFsYxLL6Big,842
|
16
16
|
gitlab/_backends/requests_backend.py,sha256=CrSDTfkvi17dT4kTU8R3qQFBNCPJqEfBJq4gJ2GXleA,5534
|
17
17
|
gitlab/v4/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
18
|
-
gitlab/v4/cli.py,sha256=
|
18
|
+
gitlab/v4/cli.py,sha256=IIc9wwRluD0Bo1KWRA7ZhwbWQvYBIhGy3fOYI7vYAKY,21455
|
19
19
|
gitlab/v4/objects/__init__.py,sha256=GvOZZN1lAA3FLSKbqf6nCKWVfdLqcYF_OFPql5ylPJI,1958
|
20
20
|
gitlab/v4/objects/access_requests.py,sha256=pPYwB-b4fvKVdBoBRpzx2ensiMXbQwmBkN0XBh6ScaA,923
|
21
21
|
gitlab/v4/objects/appearance.py,sha256=uMt0bjo_KlxwKHItFzGMY9vXm5e489UG_o0EcFVJE8E,1932
|
22
22
|
gitlab/v4/objects/applications.py,sha256=FB1Se6Xa3CFLJlSeZ7lLoyAwY8cAF4DUDsuc59NGpcs,591
|
23
|
-
gitlab/v4/objects/artifacts.py,sha256=
|
24
|
-
gitlab/v4/objects/audit_events.py,sha256=
|
23
|
+
gitlab/v4/objects/artifacts.py,sha256=M-HQRqvnHcnyhrT7mPQMQ0WChVjQ2wQtTq_hJpKlKb8,5025
|
24
|
+
gitlab/v4/objects/audit_events.py,sha256=OPhGt3br-pOyqMGUvXKAVuBvEz9_TQttBfOnjytAtJY,1910
|
25
25
|
gitlab/v4/objects/award_emojis.py,sha256=ASgIh4475tf1pq2xBHP2bYgKoQoP6UxgoZUHT65iYPM,5881
|
26
26
|
gitlab/v4/objects/badges.py,sha256=wtL7u7qQ01vwUIpA_9RsztAWsVSNLnPsov9VAYyagLQ,1464
|
27
27
|
gitlab/v4/objects/boards.py,sha256=J6ZeMELZXPzhd0obVZozTkAKXm-ivyQkLCjktwUDEkw,2680
|
28
|
-
gitlab/v4/objects/branches.py,sha256=
|
28
|
+
gitlab/v4/objects/branches.py,sha256=DgVwmi5CK9hW2ocGSdd-c71oDrq4WrOVEp0421S_iuY,1814
|
29
29
|
gitlab/v4/objects/broadcast_messages.py,sha256=EtjzOFwIsjqZe5jaPwYMdUa1QjNcWfoCl6-M363HJbI,1103
|
30
30
|
gitlab/v4/objects/bulk_imports.py,sha256=rexiCZiZLRdzDlFqRjW4MN8JGfbaYV71s1BxKZx3JQs,1573
|
31
31
|
gitlab/v4/objects/ci_lint.py,sha256=h5z9gONn1iRTNR85GrLgPMTlp-3vY7g4mqecG4IF_WQ,2270
|
@@ -35,14 +35,14 @@ gitlab/v4/objects/container_registry.py,sha256=O6_fsdf0y8EG9fSeeDiazwenZbRlqlR2d
|
|
35
35
|
gitlab/v4/objects/custom_attributes.py,sha256=48HKZ2C65UUU65FdvKrefFzRMVKRbG-rl58OE9FAuyI,1875
|
36
36
|
gitlab/v4/objects/deploy_keys.py,sha256=muym5Y-s60kdft06MUbfPoNE9M8Isees1oR4t3_vl4c,1826
|
37
37
|
gitlab/v4/objects/deploy_tokens.py,sha256=SEVSCr9D7LBj7qoE_D1-wK4pr2daFsVwBbhpm4m1Ey0,2110
|
38
|
-
gitlab/v4/objects/deployments.py,sha256=
|
38
|
+
gitlab/v4/objects/deployments.py,sha256=u4i3xf6utOqSuyaJ7HaHG-xrQ_T-ybB4hFZpI57HLY0,2880
|
39
39
|
gitlab/v4/objects/discussions.py,sha256=LK-nyJx0ncevYXehiI4gyUQCrY3feZ5mUK6HpqhCeDU,3457
|
40
40
|
gitlab/v4/objects/draft_notes.py,sha256=wMHm5eIgv-KlHlXf14s4mMKxZRi82WelAQ7HRHKtrIA,1450
|
41
41
|
gitlab/v4/objects/environments.py,sha256=R5emAaZJkWnpqgb2ZR6BRxvI6RigRJKZtwc74-dYU_o,2726
|
42
42
|
gitlab/v4/objects/epics.py,sha256=HKLpEL7_K54M6prGjga3qw5VfI2ZGGxBbfz42Oumvr0,4150
|
43
43
|
gitlab/v4/objects/events.py,sha256=20yCSlR9XB75AwMzatmAt4VdT9PL2nX0t1p1sAWbrvI,7067
|
44
44
|
gitlab/v4/objects/export_import.py,sha256=XVmrSq_qHwQr3XamFPfISEXnlBd-icJRm2CCa3V2puY,1909
|
45
|
-
gitlab/v4/objects/features.py,sha256=
|
45
|
+
gitlab/v4/objects/features.py,sha256=N7T52I2JyNIgD1JejrSr8fNa14ZlAUxrS2VceUekhj0,1973
|
46
46
|
gitlab/v4/objects/files.py,sha256=kFSc2wNPgFxoheHO2tcrLn63v1GfNUagUvQhMSdW458,10283
|
47
47
|
gitlab/v4/objects/geo_nodes.py,sha256=AWLZUMLR-rxqGz9pM_ysIEPeJUT8Zmser0hBbXj11CA,3646
|
48
48
|
gitlab/v4/objects/group_access_tokens.py,sha256=EijY0sfsp0Gtx_q4JLBeLL3jphx5b_6-nTzKxV272jc,1023
|
@@ -52,14 +52,14 @@ gitlab/v4/objects/integrations.py,sha256=26lk0pgwijhvaHfVPkLV_gTgRTuKVQh1Ji8Ndyf
|
|
52
52
|
gitlab/v4/objects/invitations.py,sha256=ya9x7xhL1oSbx-FLJud-lHKmbYQoTplZlAbjsZip2CI,2734
|
53
53
|
gitlab/v4/objects/issues.py,sha256=GnvwNEk5Egsb18wtjnfkLPYTcYce4oefZkJOEFjNIpo,10162
|
54
54
|
gitlab/v4/objects/iterations.py,sha256=vtxrq8uFRTKvhUzJIyVi2TV2wod52I1JMejLCPXp3CI,718
|
55
|
-
gitlab/v4/objects/job_token_scope.py,sha256=
|
56
|
-
gitlab/v4/objects/jobs.py,sha256=
|
55
|
+
gitlab/v4/objects/job_token_scope.py,sha256=J69VVjtRgnTYQrFHFxOWQv3T2s6XRxb7uz57IAhnsdU,2622
|
56
|
+
gitlab/v4/objects/jobs.py,sha256=85i68QXwfUOQ-lrqQaH1Q0Ksujz-QLZh0-7zYBZIstU,9139
|
57
57
|
gitlab/v4/objects/keys.py,sha256=IclYGSzcVEZPIhDdIz-p16rvb68FnBTgAf1cWCXWjkY,882
|
58
58
|
gitlab/v4/objects/labels.py,sha256=JvOciJ6V76pF9HuJp5OT_Ykq8oqaa6ItxvpKf3hiEzs,4736
|
59
59
|
gitlab/v4/objects/ldap.py,sha256=adpkdfk7VBjshuh8SpCsc77Pax4QgqCx1N12CuzitDE,1662
|
60
60
|
gitlab/v4/objects/members.py,sha256=knzhMYLqaKWAUbTX4QAowMmtMirU2Kizt85zZRcpgmA,3836
|
61
|
-
gitlab/v4/objects/merge_request_approvals.py,sha256=
|
62
|
-
gitlab/v4/objects/merge_requests.py,sha256=
|
61
|
+
gitlab/v4/objects/merge_request_approvals.py,sha256=eI5Qll2JYBqaIj9v1nrhSbVyF_NEVk9_wLFv0bZlc1U,6146
|
62
|
+
gitlab/v4/objects/merge_requests.py,sha256=vNjC5fn3bJeIWJTUGlXF_CAtGJWbuA348LQpLzetE4o,17306
|
63
63
|
gitlab/v4/objects/merge_trains.py,sha256=e0Gp2Ri75elcG_r9w8qxdrcWW_YiebPRwUYIH5od8kc,422
|
64
64
|
gitlab/v4/objects/milestones.py,sha256=NhondaCyl7_UmaZYv--IpFADHz5hDHYhcK1EKdl3pII,7033
|
65
65
|
gitlab/v4/objects/namespaces.py,sha256=FhxumYKpw6OKte7nEkN6EQxIVQggdhQ546nD93LYAiE,1502
|
@@ -68,16 +68,16 @@ gitlab/v4/objects/notification_settings.py,sha256=zhltGjuu1HiqdON2v9-uKu7Z6TOOBO
|
|
68
68
|
gitlab/v4/objects/packages.py,sha256=ZI0H6omYNtffGqWOO3RzxQnRyjUlvynQ8rYNyfzXVBw,7187
|
69
69
|
gitlab/v4/objects/pages.py,sha256=o6EHYJa-4qo8-IolppZk5Y5o64CAIlLceW2LPNR3nM4,1141
|
70
70
|
gitlab/v4/objects/personal_access_tokens.py,sha256=vMsAytE5czai3fpyTCyV1sR3cZDZRhvI06u08L8O7mw,1315
|
71
|
-
gitlab/v4/objects/pipelines.py,sha256=
|
71
|
+
gitlab/v4/objects/pipelines.py,sha256=A2sbneq5IDS_huHDPQuplloRLZpQV9mTzsmpouwrR8Q,9778
|
72
72
|
gitlab/v4/objects/project_access_tokens.py,sha256=z_BCaBtXC7wzGVN6Ip0H72VwHID8XEBHDddCw0J8hO0,1043
|
73
|
-
gitlab/v4/objects/projects.py,sha256=
|
73
|
+
gitlab/v4/objects/projects.py,sha256=S6M6bmXf1CATRMHlD2chpuJG_nnwDTMZ-Gv6Hwm0IMM,44127
|
74
74
|
gitlab/v4/objects/push_rules.py,sha256=0dKMWEzF5h1zATh0_j_SvjQ7HKx9_5M7J9hzDGB66Rc,3041
|
75
75
|
gitlab/v4/objects/releases.py,sha256=j4_45oOj2yaA2XZ3fwBcKhFJ6li4vQy_zyr013LKfvY,1972
|
76
|
-
gitlab/v4/objects/repositories.py,sha256=
|
76
|
+
gitlab/v4/objects/repositories.py,sha256=td4wMPMEpdJAS_4maQ1zBXf23Luv0hOBsChpzTPY-D0,11048
|
77
77
|
gitlab/v4/objects/resource_groups.py,sha256=fYYnA2YO9CSTzxwImVCVPSiPkIeNpKRrPj7dpzwati4,1427
|
78
78
|
gitlab/v4/objects/reviewers.py,sha256=HTU8hw09fRofvoj5V4kde1PLK3QSe1uY3BVUtxOvJ00,517
|
79
79
|
gitlab/v4/objects/runners.py,sha256=y20HG1l3h6o5rPyPWdyeBfWPrfbpBZ_B2FEbBRYxvws,4883
|
80
|
-
gitlab/v4/objects/secure_files.py,sha256=
|
80
|
+
gitlab/v4/objects/secure_files.py,sha256=UAjPmjwGiCxkzTXXr2dxSaCCMbHab_pPGYPM2Vx3pzA,2511
|
81
81
|
gitlab/v4/objects/settings.py,sha256=LTkdyhhU2MTA15EJw2lZeqDKfK_Bg65CV1CchPljrqY,4295
|
82
82
|
gitlab/v4/objects/sidekiq.py,sha256=DD1XKrV5uaZIcWpwxRAsfVhn3NR9MPEnWbgwG-hBWMw,2956
|
83
83
|
gitlab/v4/objects/snippets.py,sha256=rNpHJXBLa8bEC-lHuMhC56lt8IfRNl8BqPG_4RTCV_M,6018
|
@@ -87,13 +87,13 @@ gitlab/v4/objects/templates.py,sha256=DWbb46-SiusrbW7OuMfBJLrH0rqpRV0G6gzFLbaLpO
|
|
87
87
|
gitlab/v4/objects/todos.py,sha256=WOLycLoNlRcwxczpLiUjTowGFcndXe20OQsAV0cEV00,1826
|
88
88
|
gitlab/v4/objects/topics.py,sha256=24QtZfMcTjFZacLF6GVhdvb267n_ScXQjYfa3Ru_sd4,2199
|
89
89
|
gitlab/v4/objects/triggers.py,sha256=UAERq_C-QdPBbBQPHLh5IfhpkdDeIxdnVGPHfu9Qy5Y,824
|
90
|
-
gitlab/v4/objects/users.py,sha256=
|
91
|
-
gitlab/v4/objects/variables.py,sha256=
|
90
|
+
gitlab/v4/objects/users.py,sha256=jzT21VVGK3YCRKXEAGZ8HD2pOfeqX17AH4U3S1_H0fM,21281
|
91
|
+
gitlab/v4/objects/variables.py,sha256=S0Vz32jEpUbo4J2js8gMPPTVpcy1ge5FYVHLiPz9c-A,2627
|
92
92
|
gitlab/v4/objects/wikis.py,sha256=JtI1cQqZV1_PRfKVlQRMh4LZjdxEfi9T2VuFYv6PrV8,1775
|
93
|
-
python_gitlab-4.
|
94
|
-
python_gitlab-4.
|
95
|
-
python_gitlab-4.
|
96
|
-
python_gitlab-4.
|
97
|
-
python_gitlab-4.
|
98
|
-
python_gitlab-4.
|
99
|
-
python_gitlab-4.
|
93
|
+
python_gitlab-4.5.0.dist-info/AUTHORS,sha256=Z0P61GJSVnp7iFbRcMezhx3f4zMyPkVmG--TWaRo768,526
|
94
|
+
python_gitlab-4.5.0.dist-info/COPYING,sha256=2n6rt7r999OuXp8iOqW9we7ORaxWncIbOwN1ILRGR2g,7651
|
95
|
+
python_gitlab-4.5.0.dist-info/METADATA,sha256=9UqlvS3C-cqrBkI6PzdG4RJfd6dsQ_lWdc-W_N9Q0fc,8229
|
96
|
+
python_gitlab-4.5.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
97
|
+
python_gitlab-4.5.0.dist-info/entry_points.txt,sha256=nhpKLLP_uQPFByn8UtE9zsvQQwa402t52o_Cw9IFXMo,43
|
98
|
+
python_gitlab-4.5.0.dist-info/top_level.txt,sha256=MvIaP8p_Oaf4gO_hXmHkX-5y2deHLp1pe6tJR3ukQ6o,7
|
99
|
+
python_gitlab-4.5.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|