python-gitlab 4.5.0__py3-none-any.whl → 4.7.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.
Files changed (43) hide show
  1. gitlab/_version.py +1 -1
  2. gitlab/cli.py +44 -45
  3. gitlab/client.py +2 -2
  4. gitlab/mixins.py +22 -14
  5. gitlab/v4/cli.py +25 -12
  6. gitlab/v4/objects/__init__.py +1 -0
  7. gitlab/v4/objects/artifacts.py +5 -2
  8. gitlab/v4/objects/ci_lint.py +4 -4
  9. gitlab/v4/objects/commits.py +6 -6
  10. gitlab/v4/objects/container_registry.py +2 -2
  11. gitlab/v4/objects/deploy_keys.py +6 -1
  12. gitlab/v4/objects/deployments.py +2 -2
  13. gitlab/v4/objects/environments.py +1 -1
  14. gitlab/v4/objects/files.py +15 -7
  15. gitlab/v4/objects/geo_nodes.py +4 -4
  16. gitlab/v4/objects/groups.py +13 -7
  17. gitlab/v4/objects/integrations.py +3 -1
  18. gitlab/v4/objects/issues.py +6 -4
  19. gitlab/v4/objects/iterations.py +29 -2
  20. gitlab/v4/objects/jobs.py +11 -14
  21. gitlab/v4/objects/merge_request_approvals.py +8 -3
  22. gitlab/v4/objects/merge_requests.py +13 -12
  23. gitlab/v4/objects/milestones.py +4 -4
  24. gitlab/v4/objects/namespaces.py +3 -1
  25. gitlab/v4/objects/packages.py +4 -4
  26. gitlab/v4/objects/pipelines.py +25 -4
  27. gitlab/v4/objects/projects.py +21 -18
  28. gitlab/v4/objects/repositories.py +13 -9
  29. gitlab/v4/objects/runners.py +2 -2
  30. gitlab/v4/objects/secure_files.py +1 -1
  31. gitlab/v4/objects/service_accounts.py +18 -0
  32. gitlab/v4/objects/sidekiq.py +4 -4
  33. gitlab/v4/objects/snippets.py +3 -3
  34. gitlab/v4/objects/todos.py +2 -2
  35. gitlab/v4/objects/topics.py +2 -2
  36. gitlab/v4/objects/users.py +10 -10
  37. {python_gitlab-4.5.0.dist-info → python_gitlab-4.7.0.dist-info}/METADATA +3 -3
  38. {python_gitlab-4.5.0.dist-info → python_gitlab-4.7.0.dist-info}/RECORD +43 -42
  39. {python_gitlab-4.5.0.dist-info → python_gitlab-4.7.0.dist-info}/WHEEL +1 -1
  40. {python_gitlab-4.5.0.dist-info → python_gitlab-4.7.0.dist-info}/AUTHORS +0 -0
  41. {python_gitlab-4.5.0.dist-info → python_gitlab-4.7.0.dist-info}/COPYING +0 -0
  42. {python_gitlab-4.5.0.dist-info → python_gitlab-4.7.0.dist-info}/entry_points.txt +0 -0
  43. {python_gitlab-4.5.0.dist-info → python_gitlab-4.7.0.dist-info}/top_level.txt +0 -0
@@ -3,6 +3,7 @@ GitLab API:
3
3
  https://docs.gitlab.com/ee/api/projects.html
4
4
  """
5
5
 
6
+ import io
6
7
  from typing import (
7
8
  Any,
8
9
  Callable,
@@ -230,7 +231,7 @@ class Project(
230
231
  variables: ProjectVariableManager
231
232
  wikis: ProjectWikiManager
232
233
 
233
- @cli.register_custom_action("Project", ("forked_from_id",))
234
+ @cli.register_custom_action(cls_names="Project", required=("forked_from_id",))
234
235
  @exc.on_http_error(exc.GitlabCreateError)
235
236
  def create_fork_relation(self, forked_from_id: int, **kwargs: Any) -> None:
236
237
  """Create a forked from/to relation between existing projects.
@@ -246,7 +247,7 @@ class Project(
246
247
  path = f"/projects/{self.encoded_id}/fork/{forked_from_id}"
247
248
  self.manager.gitlab.http_post(path, **kwargs)
248
249
 
249
- @cli.register_custom_action("Project")
250
+ @cli.register_custom_action(cls_names="Project")
250
251
  @exc.on_http_error(exc.GitlabDeleteError)
251
252
  def delete_fork_relation(self, **kwargs: Any) -> None:
252
253
  """Delete a forked relation between existing projects.
@@ -261,7 +262,7 @@ class Project(
261
262
  path = f"/projects/{self.encoded_id}/fork"
262
263
  self.manager.gitlab.http_delete(path, **kwargs)
263
264
 
264
- @cli.register_custom_action("Project")
265
+ @cli.register_custom_action(cls_names="Project")
265
266
  @exc.on_http_error(exc.GitlabGetError)
266
267
  def languages(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]:
267
268
  """Get languages used in the project with percentage value.
@@ -276,7 +277,7 @@ class Project(
276
277
  path = f"/projects/{self.encoded_id}/languages"
277
278
  return self.manager.gitlab.http_get(path, **kwargs)
278
279
 
279
- @cli.register_custom_action("Project")
280
+ @cli.register_custom_action(cls_names="Project")
280
281
  @exc.on_http_error(exc.GitlabCreateError)
281
282
  def star(self, **kwargs: Any) -> None:
282
283
  """Star a project.
@@ -294,7 +295,7 @@ class Project(
294
295
  assert isinstance(server_data, dict)
295
296
  self._update_attrs(server_data)
296
297
 
297
- @cli.register_custom_action("Project")
298
+ @cli.register_custom_action(cls_names="Project")
298
299
  @exc.on_http_error(exc.GitlabDeleteError)
299
300
  def unstar(self, **kwargs: Any) -> None:
300
301
  """Unstar a project.
@@ -312,7 +313,7 @@ class Project(
312
313
  assert isinstance(server_data, dict)
313
314
  self._update_attrs(server_data)
314
315
 
315
- @cli.register_custom_action("Project")
316
+ @cli.register_custom_action(cls_names="Project")
316
317
  @exc.on_http_error(exc.GitlabCreateError)
317
318
  def archive(self, **kwargs: Any) -> None:
318
319
  """Archive a project.
@@ -330,7 +331,7 @@ class Project(
330
331
  assert isinstance(server_data, dict)
331
332
  self._update_attrs(server_data)
332
333
 
333
- @cli.register_custom_action("Project")
334
+ @cli.register_custom_action(cls_names="Project")
334
335
  @exc.on_http_error(exc.GitlabDeleteError)
335
336
  def unarchive(self, **kwargs: Any) -> None:
336
337
  """Unarchive a project.
@@ -349,7 +350,9 @@ class Project(
349
350
  self._update_attrs(server_data)
350
351
 
351
352
  @cli.register_custom_action(
352
- "Project", ("group_id", "group_access"), ("expires_at",)
353
+ cls_names="Project",
354
+ required=("group_id", "group_access"),
355
+ optional=("expires_at",),
353
356
  )
354
357
  @exc.on_http_error(exc.GitlabCreateError)
355
358
  def share(
@@ -378,7 +381,7 @@ class Project(
378
381
  }
379
382
  self.manager.gitlab.http_post(path, post_data=data, **kwargs)
380
383
 
381
- @cli.register_custom_action("Project", ("group_id",))
384
+ @cli.register_custom_action(cls_names="Project", required=("group_id",))
382
385
  @exc.on_http_error(exc.GitlabDeleteError)
383
386
  def unshare(self, group_id: int, **kwargs: Any) -> None:
384
387
  """Delete a shared project link within a group.
@@ -395,7 +398,7 @@ class Project(
395
398
  self.manager.gitlab.http_delete(path, **kwargs)
396
399
 
397
400
  # variables not supported in CLI
398
- @cli.register_custom_action("Project", ("ref", "token"))
401
+ @cli.register_custom_action(cls_names="Project", required=("ref", "token"))
399
402
  @exc.on_http_error(exc.GitlabCreateError)
400
403
  def trigger_pipeline(
401
404
  self,
@@ -426,7 +429,7 @@ class Project(
426
429
  assert isinstance(attrs, dict)
427
430
  return ProjectPipeline(self.pipelines, attrs)
428
431
 
429
- @cli.register_custom_action("Project")
432
+ @cli.register_custom_action(cls_names="Project")
430
433
  @exc.on_http_error(exc.GitlabHousekeepingError)
431
434
  def housekeeping(self, **kwargs: Any) -> None:
432
435
  """Start the housekeeping task.
@@ -442,7 +445,7 @@ class Project(
442
445
  path = f"/projects/{self.encoded_id}/housekeeping"
443
446
  self.manager.gitlab.http_post(path, **kwargs)
444
447
 
445
- @cli.register_custom_action("Project")
448
+ @cli.register_custom_action(cls_names="Project")
446
449
  @exc.on_http_error(exc.GitlabRestoreError)
447
450
  def restore(self, **kwargs: Any) -> None:
448
451
  """Restore a project marked for deletion.
@@ -457,7 +460,7 @@ class Project(
457
460
  path = f"/projects/{self.encoded_id}/restore"
458
461
  self.manager.gitlab.http_post(path, **kwargs)
459
462
 
460
- @cli.register_custom_action("Project", optional=("wiki",))
463
+ @cli.register_custom_action(cls_names="Project", optional=("wiki",))
461
464
  @exc.on_http_error(exc.GitlabGetError)
462
465
  def snapshot(
463
466
  self,
@@ -500,7 +503,7 @@ class Project(
500
503
  result, streamed, action, chunk_size, iterator=iterator
501
504
  )
502
505
 
503
- @cli.register_custom_action("Project", ("scope", "search"))
506
+ @cli.register_custom_action(cls_names="Project", required=("scope", "search"))
504
507
  @exc.on_http_error(exc.GitlabSearchError)
505
508
  def search(
506
509
  self, scope: str, search: str, **kwargs: Any
@@ -523,7 +526,7 @@ class Project(
523
526
  path = f"/projects/{self.encoded_id}/search"
524
527
  return self.manager.gitlab.http_list(path, query_data=data, **kwargs)
525
528
 
526
- @cli.register_custom_action("Project")
529
+ @cli.register_custom_action(cls_names="Project")
527
530
  @exc.on_http_error(exc.GitlabCreateError)
528
531
  def mirror_pull(self, **kwargs: Any) -> None:
529
532
  """Start the pull mirroring process for the project.
@@ -538,7 +541,7 @@ class Project(
538
541
  path = f"/projects/{self.encoded_id}/mirror/pull"
539
542
  self.manager.gitlab.http_post(path, **kwargs)
540
543
 
541
- @cli.register_custom_action("Project")
544
+ @cli.register_custom_action(cls_names="Project")
542
545
  @exc.on_http_error(exc.GitlabGetError)
543
546
  def mirror_pull_details(self, **kwargs: Any) -> Dict[str, Any]:
544
547
  """Get a project's pull mirror details.
@@ -561,7 +564,7 @@ class Project(
561
564
  assert isinstance(result, dict)
562
565
  return result
563
566
 
564
- @cli.register_custom_action("Project", ("to_namespace",))
567
+ @cli.register_custom_action(cls_names="Project", required=("to_namespace",))
565
568
  @exc.on_http_error(exc.GitlabTransferProjectError)
566
569
  def transfer(self, to_namespace: Union[int, str], **kwargs: Any) -> None:
567
570
  """Transfer a project to the given namespace ID
@@ -786,7 +789,7 @@ class ProjectManager(CRUDMixin, RESTManager):
786
789
  @exc.on_http_error(exc.GitlabImportError)
787
790
  def import_project(
788
791
  self,
789
- file: str,
792
+ file: io.BufferedReader,
790
793
  path: str,
791
794
  name: Optional[str] = None,
792
795
  namespace: Optional[str] = None,
@@ -21,7 +21,9 @@ else:
21
21
 
22
22
 
23
23
  class RepositoryMixin(_RestObjectBase):
24
- @cli.register_custom_action("Project", ("submodule", "branch", "commit_sha"))
24
+ @cli.register_custom_action(
25
+ cls_names="Project", required=("submodule", "branch", "commit_sha")
26
+ )
25
27
  @exc.on_http_error(exc.GitlabUpdateError)
26
28
  def update_submodule(
27
29
  self, submodule: str, branch: str, commit_sha: str, **kwargs: Any
@@ -47,7 +49,9 @@ class RepositoryMixin(_RestObjectBase):
47
49
  data["commit_message"] = kwargs["commit_message"]
48
50
  return self.manager.gitlab.http_put(path, post_data=data)
49
51
 
50
- @cli.register_custom_action("Project", (), ("path", "ref", "recursive"))
52
+ @cli.register_custom_action(
53
+ cls_names="Project", optional=("path", "ref", "recursive")
54
+ )
51
55
  @exc.on_http_error(exc.GitlabGetError)
52
56
  def repository_tree(
53
57
  self, path: str = "", ref: str = "", recursive: bool = False, **kwargs: Any
@@ -80,7 +84,7 @@ class RepositoryMixin(_RestObjectBase):
80
84
  query_data["ref"] = ref
81
85
  return self.manager.gitlab.http_list(gl_path, query_data=query_data, **kwargs)
82
86
 
83
- @cli.register_custom_action("Project", ("sha",))
87
+ @cli.register_custom_action(cls_names="Project", required=("sha",))
84
88
  @exc.on_http_error(exc.GitlabGetError)
85
89
  def repository_blob(
86
90
  self, sha: str, **kwargs: Any
@@ -102,7 +106,7 @@ class RepositoryMixin(_RestObjectBase):
102
106
  path = f"/projects/{self.encoded_id}/repository/blobs/{sha}"
103
107
  return self.manager.gitlab.http_get(path, **kwargs)
104
108
 
105
- @cli.register_custom_action("Project", ("sha",))
109
+ @cli.register_custom_action(cls_names="Project", required=("sha",))
106
110
  @exc.on_http_error(exc.GitlabGetError)
107
111
  def repository_raw_blob(
108
112
  self,
@@ -145,7 +149,7 @@ class RepositoryMixin(_RestObjectBase):
145
149
  result, streamed, action, chunk_size, iterator=iterator
146
150
  )
147
151
 
148
- @cli.register_custom_action("Project", ("from_", "to"))
152
+ @cli.register_custom_action(cls_names="Project", required=("from_", "to"))
149
153
  @exc.on_http_error(exc.GitlabGetError)
150
154
  def repository_compare(
151
155
  self, from_: str, to: str, **kwargs: Any
@@ -168,7 +172,7 @@ class RepositoryMixin(_RestObjectBase):
168
172
  query_data = {"from": from_, "to": to}
169
173
  return self.manager.gitlab.http_get(path, query_data=query_data, **kwargs)
170
174
 
171
- @cli.register_custom_action("Project")
175
+ @cli.register_custom_action(cls_names="Project")
172
176
  @exc.on_http_error(exc.GitlabGetError)
173
177
  def repository_contributors(
174
178
  self, **kwargs: Any
@@ -193,7 +197,7 @@ class RepositoryMixin(_RestObjectBase):
193
197
  path = f"/projects/{self.encoded_id}/repository/contributors"
194
198
  return self.manager.gitlab.http_list(path, **kwargs)
195
199
 
196
- @cli.register_custom_action("Project", (), ("sha", "format"))
200
+ @cli.register_custom_action(cls_names="Project", optional=("sha", "format"))
197
201
  @exc.on_http_error(exc.GitlabListError)
198
202
  def repository_archive(
199
203
  self,
@@ -247,7 +251,7 @@ class RepositoryMixin(_RestObjectBase):
247
251
  result, streamed, action, chunk_size, iterator=iterator
248
252
  )
249
253
 
250
- @cli.register_custom_action("Project", ("refs",))
254
+ @cli.register_custom_action(cls_names="Project", required=("refs",))
251
255
  @exc.on_http_error(exc.GitlabGetError)
252
256
  def repository_merge_base(
253
257
  self, refs: List[str], **kwargs: Any
@@ -273,7 +277,7 @@ class RepositoryMixin(_RestObjectBase):
273
277
  )
274
278
  return self.manager.gitlab.http_get(path, query_data=query_data, **kwargs)
275
279
 
276
- @cli.register_custom_action("Project")
280
+ @cli.register_custom_action(cls_names="Project")
277
281
  @exc.on_http_error(exc.GitlabDeleteError)
278
282
  def delete_merged_branches(self, **kwargs: Any) -> None:
279
283
  """Delete merged branches.
@@ -74,7 +74,7 @@ class RunnerManager(CRUDMixin, RESTManager):
74
74
  _list_filters = ("scope", "type", "status", "paused", "tag_list")
75
75
  _types = {"tag_list": types.CommaSeparatedListAttribute}
76
76
 
77
- @cli.register_custom_action("RunnerManager", (), ("scope",))
77
+ @cli.register_custom_action(cls_names="RunnerManager", optional=("scope",))
78
78
  @exc.on_http_error(exc.GitlabListError)
79
79
  def all(self, scope: Optional[str] = None, **kwargs: Any) -> List[Runner]:
80
80
  """List all the runners.
@@ -103,7 +103,7 @@ class RunnerManager(CRUDMixin, RESTManager):
103
103
  obj = self.gitlab.http_list(path, query_data, **kwargs)
104
104
  return [self._obj_cls(self, item) for item in obj]
105
105
 
106
- @cli.register_custom_action("RunnerManager", ("token",))
106
+ @cli.register_custom_action(cls_names="RunnerManager", required=("token",))
107
107
  @exc.on_http_error(exc.GitlabVerifyError)
108
108
  def verify(self, token: str, **kwargs: Any) -> None:
109
109
  """Validates authentication credentials for a registered Runner.
@@ -18,7 +18,7 @@ __all__ = ["ProjectSecureFile", "ProjectSecureFileManager"]
18
18
 
19
19
 
20
20
  class ProjectSecureFile(ObjectDeleteMixin, RESTObject):
21
- @cli.register_custom_action("ProjectSecureFile")
21
+ @cli.register_custom_action(cls_names="ProjectSecureFile")
22
22
  @exc.on_http_error(exc.GitlabGetError)
23
23
  def download(
24
24
  self,
@@ -0,0 +1,18 @@
1
+ from gitlab.base import RESTManager, RESTObject
2
+ from gitlab.mixins import CreateMixin
3
+ from gitlab.types import RequiredOptional
4
+
5
+ __all__ = ["GroupServiceAccount", "GroupServiceAccountManager"]
6
+
7
+
8
+ class GroupServiceAccount(RESTObject):
9
+ pass
10
+
11
+
12
+ class GroupServiceAccountManager(CreateMixin, RESTManager):
13
+ _path = "/groups/{group_id}/service_accounts"
14
+ _obj_cls = GroupServiceAccount
15
+ _from_parent_attrs = {"group_id": "id"}
16
+ _create_attrs = RequiredOptional(
17
+ optional=("name", "username"),
18
+ )
@@ -18,7 +18,7 @@ class SidekiqManager(RESTManager):
18
18
  for the sidekiq metrics API.
19
19
  """
20
20
 
21
- @cli.register_custom_action("SidekiqManager")
21
+ @cli.register_custom_action(cls_names="SidekiqManager")
22
22
  @exc.on_http_error(exc.GitlabGetError)
23
23
  def queue_metrics(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]:
24
24
  """Return the registered queues information.
@@ -35,7 +35,7 @@ class SidekiqManager(RESTManager):
35
35
  """
36
36
  return self.gitlab.http_get("/sidekiq/queue_metrics", **kwargs)
37
37
 
38
- @cli.register_custom_action("SidekiqManager")
38
+ @cli.register_custom_action(cls_names="SidekiqManager")
39
39
  @exc.on_http_error(exc.GitlabGetError)
40
40
  def process_metrics(
41
41
  self, **kwargs: Any
@@ -54,7 +54,7 @@ class SidekiqManager(RESTManager):
54
54
  """
55
55
  return self.gitlab.http_get("/sidekiq/process_metrics", **kwargs)
56
56
 
57
- @cli.register_custom_action("SidekiqManager")
57
+ @cli.register_custom_action(cls_names="SidekiqManager")
58
58
  @exc.on_http_error(exc.GitlabGetError)
59
59
  def job_stats(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]:
60
60
  """Return statistics about the jobs performed.
@@ -71,7 +71,7 @@ class SidekiqManager(RESTManager):
71
71
  """
72
72
  return self.gitlab.http_get("/sidekiq/job_stats", **kwargs)
73
73
 
74
- @cli.register_custom_action("SidekiqManager")
74
+ @cli.register_custom_action(cls_names="SidekiqManager")
75
75
  @exc.on_http_error(exc.GitlabGetError)
76
76
  def compound_metrics(
77
77
  self, **kwargs: Any
@@ -24,7 +24,7 @@ __all__ = [
24
24
  class Snippet(UserAgentDetailMixin, SaveMixin, ObjectDeleteMixin, RESTObject):
25
25
  _repr_attr = "title"
26
26
 
27
- @cli.register_custom_action("Snippet")
27
+ @cli.register_custom_action(cls_names="Snippet")
28
28
  @exc.on_http_error(exc.GitlabGetError)
29
29
  def content(
30
30
  self,
@@ -89,7 +89,7 @@ class SnippetManager(CRUDMixin, RESTManager):
89
89
  ),
90
90
  )
91
91
 
92
- @cli.register_custom_action("SnippetManager")
92
+ @cli.register_custom_action(cls_names="SnippetManager")
93
93
  def public(self, **kwargs: Any) -> Union[RESTObjectList, List[RESTObject]]:
94
94
  """List all the public snippets.
95
95
 
@@ -117,7 +117,7 @@ class ProjectSnippet(UserAgentDetailMixin, SaveMixin, ObjectDeleteMixin, RESTObj
117
117
  discussions: ProjectSnippetDiscussionManager
118
118
  notes: ProjectSnippetNoteManager
119
119
 
120
- @cli.register_custom_action("ProjectSnippet")
120
+ @cli.register_custom_action(cls_names="ProjectSnippet")
121
121
  @exc.on_http_error(exc.GitlabGetError)
122
122
  def content(
123
123
  self,
@@ -12,7 +12,7 @@ __all__ = [
12
12
 
13
13
 
14
14
  class Todo(ObjectDeleteMixin, RESTObject):
15
- @cli.register_custom_action("Todo")
15
+ @cli.register_custom_action(cls_names="Todo")
16
16
  @exc.on_http_error(exc.GitlabTodoError)
17
17
  def mark_as_done(self, **kwargs: Any) -> Dict[str, Any]:
18
18
  """Mark the todo as done.
@@ -40,7 +40,7 @@ class TodoManager(ListMixin, DeleteMixin, RESTManager):
40
40
  _obj_cls = Todo
41
41
  _list_filters = ("action", "author_id", "project_id", "state", "type")
42
42
 
43
- @cli.register_custom_action("TodoManager")
43
+ @cli.register_custom_action(cls_names="TodoManager")
44
44
  @exc.on_http_error(exc.GitlabTodoError)
45
45
  def mark_all_as_done(self, **kwargs: Any) -> None:
46
46
  """Mark all the todos as done.
@@ -33,8 +33,8 @@ class TopicManager(CRUDMixin, RESTManager):
33
33
  return cast(Topic, super().get(id=id, lazy=lazy, **kwargs))
34
34
 
35
35
  @cli.register_custom_action(
36
- "TopicManager",
37
- mandatory=("source_topic_id", "target_topic_id"),
36
+ cls_names="TopicManager",
37
+ required=("source_topic_id", "target_topic_id"),
38
38
  )
39
39
  @exc.on_http_error(exc.GitlabMRClosedError)
40
40
  def merge(
@@ -190,7 +190,7 @@ class User(SaveMixin, ObjectDeleteMixin, RESTObject):
190
190
  starred_projects: "StarredProjectManager"
191
191
  status: "UserStatusManager"
192
192
 
193
- @cli.register_custom_action("User")
193
+ @cli.register_custom_action(cls_names="User")
194
194
  @exc.on_http_error(exc.GitlabBlockError)
195
195
  def block(self, **kwargs: Any) -> Optional[bool]:
196
196
  """Block the user.
@@ -215,7 +215,7 @@ class User(SaveMixin, ObjectDeleteMixin, RESTObject):
215
215
  self._attrs["state"] = "blocked"
216
216
  return server_data
217
217
 
218
- @cli.register_custom_action("User")
218
+ @cli.register_custom_action(cls_names="User")
219
219
  @exc.on_http_error(exc.GitlabFollowError)
220
220
  def follow(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]:
221
221
  """Follow the user.
@@ -233,7 +233,7 @@ class User(SaveMixin, ObjectDeleteMixin, RESTObject):
233
233
  path = f"/users/{self.encoded_id}/follow"
234
234
  return self.manager.gitlab.http_post(path, **kwargs)
235
235
 
236
- @cli.register_custom_action("User")
236
+ @cli.register_custom_action(cls_names="User")
237
237
  @exc.on_http_error(exc.GitlabUnfollowError)
238
238
  def unfollow(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]:
239
239
  """Unfollow the user.
@@ -251,7 +251,7 @@ class User(SaveMixin, ObjectDeleteMixin, RESTObject):
251
251
  path = f"/users/{self.encoded_id}/unfollow"
252
252
  return self.manager.gitlab.http_post(path, **kwargs)
253
253
 
254
- @cli.register_custom_action("User")
254
+ @cli.register_custom_action(cls_names="User")
255
255
  @exc.on_http_error(exc.GitlabUnblockError)
256
256
  def unblock(self, **kwargs: Any) -> Optional[bool]:
257
257
  """Unblock the user.
@@ -276,7 +276,7 @@ class User(SaveMixin, ObjectDeleteMixin, RESTObject):
276
276
  self._attrs["state"] = "active"
277
277
  return server_data
278
278
 
279
- @cli.register_custom_action("User")
279
+ @cli.register_custom_action(cls_names="User")
280
280
  @exc.on_http_error(exc.GitlabDeactivateError)
281
281
  def deactivate(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]:
282
282
  """Deactivate the user.
@@ -297,7 +297,7 @@ class User(SaveMixin, ObjectDeleteMixin, RESTObject):
297
297
  self._attrs["state"] = "deactivated"
298
298
  return server_data
299
299
 
300
- @cli.register_custom_action("User")
300
+ @cli.register_custom_action(cls_names="User")
301
301
  @exc.on_http_error(exc.GitlabActivateError)
302
302
  def activate(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]:
303
303
  """Activate the user.
@@ -318,7 +318,7 @@ class User(SaveMixin, ObjectDeleteMixin, RESTObject):
318
318
  self._attrs["state"] = "active"
319
319
  return server_data
320
320
 
321
- @cli.register_custom_action("User")
321
+ @cli.register_custom_action(cls_names="User")
322
322
  @exc.on_http_error(exc.GitlabUserApproveError)
323
323
  def approve(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]:
324
324
  """Approve a user creation request.
@@ -336,7 +336,7 @@ class User(SaveMixin, ObjectDeleteMixin, RESTObject):
336
336
  path = f"/users/{self.encoded_id}/approve"
337
337
  return self.manager.gitlab.http_post(path, **kwargs)
338
338
 
339
- @cli.register_custom_action("User")
339
+ @cli.register_custom_action(cls_names="User")
340
340
  @exc.on_http_error(exc.GitlabUserRejectError)
341
341
  def reject(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]:
342
342
  """Reject a user creation request.
@@ -354,7 +354,7 @@ class User(SaveMixin, ObjectDeleteMixin, RESTObject):
354
354
  path = f"/users/{self.encoded_id}/reject"
355
355
  return self.manager.gitlab.http_post(path, **kwargs)
356
356
 
357
- @cli.register_custom_action("User")
357
+ @cli.register_custom_action(cls_names="User")
358
358
  @exc.on_http_error(exc.GitlabBanError)
359
359
  def ban(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]:
360
360
  """Ban the user.
@@ -375,7 +375,7 @@ class User(SaveMixin, ObjectDeleteMixin, RESTObject):
375
375
  self._attrs["state"] = "banned"
376
376
  return server_data
377
377
 
378
- @cli.register_custom_action("User")
378
+ @cli.register_custom_action(cls_names="User")
379
379
  @exc.on_http_error(exc.GitlabUnbanError)
380
380
  def unban(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]:
381
381
  """Unban the user.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: python-gitlab
3
- Version: 4.5.0
3
+ Version: 4.7.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>
@@ -28,8 +28,8 @@ Requires-Python: >=3.8.0
28
28
  Description-Content-Type: text/x-rst
29
29
  License-File: COPYING
30
30
  License-File: AUTHORS
31
- Requires-Dist: requests >=2.25.0
32
- Requires-Dist: requests-toolbelt >=0.10.1
31
+ Requires-Dist: requests >=2.32.0
32
+ Requires-Dist: requests-toolbelt >=1.0.0
33
33
  Provides-Extra: autocompletion
34
34
  Requires-Dist: argcomplete <3,>=1.10.0 ; extra == 'autocompletion'
35
35
  Provides-Extra: yaml
@@ -1,13 +1,13 @@
1
1
  gitlab/__init__.py,sha256=bd8BSLyUUjtHMKtzmf-T5855W6FUHcuhIwx2hNu0w2o,1382
2
2
  gitlab/__main__.py,sha256=HTesNl0UAU6mPb9EXWkTKMy6Q6pAUxGi3iPnDHTE2uE,68
3
- gitlab/_version.py,sha256=IKQR7Eu8OdIn6KAmeOAIMU63Gvw3qzz4NlpqABZihBw,249
3
+ gitlab/_version.py,sha256=2XwMSTXxEohDD4fNho1dzd8yyFVV3HBXblItCGXqEJg,249
4
4
  gitlab/base.py,sha256=5cotawlHD01Vw88aN4o7wNIhDyk_bmcwubX4mbOpnVo,13780
5
- gitlab/cli.py,sha256=ddb3GPxOmxzaXahtvPKLw_mdgvXZWXNECyAMjgtjhwE,12870
6
- gitlab/client.py,sha256=U5Q7yzapLyaDxxVvv5KCGlnYG9_K7YfD1senumyDh1Y,48755
5
+ gitlab/cli.py,sha256=CdL1wVZ9npun7sj_kE717hdmf_-A0eF9LH_-PUZOwC4,12398
6
+ gitlab/client.py,sha256=7HHsmoP4UZgznapb-0_M3Z7ZJx0NJzzoF8ChcwNDzdY,48774
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
- gitlab/mixins.py,sha256=whh6_Wq2Y9xWuyhIczfT9EdFVXIeA88LmAH0nsLNQ6A,36350
10
+ gitlab/mixins.py,sha256=O2qb7qH7T_dHd6_c9QOaBAYNdzLgyffF7DIezndT8nQ,36591
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=PNf4GT25MzgFIYa3e9_7FxleUYPqkt8DRPe4tYc0vUI,6396
@@ -15,12 +15,12 @@ gitlab/_backends/__init__.py,sha256=WalQZRIDzw19FuNxraG7fvck6ddg4cdNd3bi53QKvZM,
15
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=IIc9wwRluD0Bo1KWRA7ZhwbWQvYBIhGy3fOYI7vYAKY,21455
19
- gitlab/v4/objects/__init__.py,sha256=GvOZZN1lAA3FLSKbqf6nCKWVfdLqcYF_OFPql5ylPJI,1958
18
+ gitlab/v4/cli.py,sha256=RtD34J52T3O5CspQnuIZkY_jTTZX-Xt6ikwhifxjJGw,21950
19
+ gitlab/v4/objects/__init__.py,sha256=F_ff0QyakRXOdUzAcIuJCdpLXFvPxW8ZTouYErBQjC4,1990
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=M-HQRqvnHcnyhrT7mPQMQ0WChVjQ2wQtTq_hJpKlKb8,5025
23
+ gitlab/v4/objects/artifacts.py,sha256=_oJbZrtK4058ZYd_nn0D1DT8I-c0f6XzgkgMcEa6ykQ,5098
24
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
@@ -28,72 +28,73 @@ gitlab/v4/objects/boards.py,sha256=J6ZeMELZXPzhd0obVZozTkAKXm-ivyQkLCjktwUDEkw,2
28
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
- gitlab/v4/objects/ci_lint.py,sha256=h5z9gONn1iRTNR85GrLgPMTlp-3vY7g4mqecG4IF_WQ,2270
31
+ gitlab/v4/objects/ci_lint.py,sha256=HhU-PJsQdymh3p0wFxB0ecf84Sd0UaiX0V3YEYQjMqg,2308
32
32
  gitlab/v4/objects/clusters.py,sha256=Gsz5Jf2L27gzdbQvb5gKY20gxFT4jZASAofy5qL5hxQ,3750
33
- gitlab/v4/objects/commits.py,sha256=6VS28YEROXpsQ4ckU3U9I_bjPNBXkHvEudLUEng_ZLo,8214
34
- gitlab/v4/objects/container_registry.py,sha256=O6_fsdf0y8EG9fSeeDiazwenZbRlqlR2dnMP1VBILkA,3341
33
+ gitlab/v4/objects/commits.py,sha256=ya4hglN4IFVTpa7BLAjMf-xty5E6bLbpzp5vthQdzUk,8292
34
+ gitlab/v4/objects/container_registry.py,sha256=w-t1nbjavJ18MEPmbIrEUcaOP2mXsr3Oc1Ub_1U95Y0,3360
35
35
  gitlab/v4/objects/custom_attributes.py,sha256=48HKZ2C65UUU65FdvKrefFzRMVKRbG-rl58OE9FAuyI,1875
36
- gitlab/v4/objects/deploy_keys.py,sha256=muym5Y-s60kdft06MUbfPoNE9M8Isees1oR4t3_vl4c,1826
36
+ gitlab/v4/objects/deploy_keys.py,sha256=hv9WSzbE9TqRskVSfyNfATGxSw7-urId2tH6ag1hnq4,1947
37
37
  gitlab/v4/objects/deploy_tokens.py,sha256=SEVSCr9D7LBj7qoE_D1-wK4pr2daFsVwBbhpm4m1Ey0,2110
38
- gitlab/v4/objects/deployments.py,sha256=u4i3xf6utOqSuyaJ7HaHG-xrQ_T-ybB4hFZpI57HLY0,2880
38
+ gitlab/v4/objects/deployments.py,sha256=xN7FXcjpHxq25OD4ywhZkbq_5EqlU5dQp-DbWYe1NR0,2889
39
39
  gitlab/v4/objects/discussions.py,sha256=LK-nyJx0ncevYXehiI4gyUQCrY3feZ5mUK6HpqhCeDU,3457
40
40
  gitlab/v4/objects/draft_notes.py,sha256=wMHm5eIgv-KlHlXf14s4mMKxZRi82WelAQ7HRHKtrIA,1450
41
- gitlab/v4/objects/environments.py,sha256=R5emAaZJkWnpqgb2ZR6BRxvI6RigRJKZtwc74-dYU_o,2726
41
+ gitlab/v4/objects/environments.py,sha256=eZl6w9uvBJswU3bSJbDtQVGtV6dUlDVGz61UN1nUWL4,2736
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
45
  gitlab/v4/objects/features.py,sha256=N7T52I2JyNIgD1JejrSr8fNa14ZlAUxrS2VceUekhj0,1973
46
- gitlab/v4/objects/files.py,sha256=kFSc2wNPgFxoheHO2tcrLn63v1GfNUagUvQhMSdW458,10283
47
- gitlab/v4/objects/geo_nodes.py,sha256=AWLZUMLR-rxqGz9pM_ysIEPeJUT8Zmser0hBbXj11CA,3646
46
+ gitlab/v4/objects/files.py,sha256=9-cGDO3EdNA5xJ-MmVl8oMSLNkzRbnHAEV68_CPBwOQ,10506
47
+ gitlab/v4/objects/geo_nodes.py,sha256=tD9piU7OIZgbNQRUeLTFPtAJ6PVL_SI6tR_zh6Tm2M8,3686
48
48
  gitlab/v4/objects/group_access_tokens.py,sha256=EijY0sfsp0Gtx_q4JLBeLL3jphx5b_6-nTzKxV272jc,1023
49
- gitlab/v4/objects/groups.py,sha256=tyEcWa60OAnfp-rr8pLbokKgPXVRZduexWUVnCdNN-I,15672
49
+ gitlab/v4/objects/groups.py,sha256=YxOeaRYUjhu8PicCicVT7Eua04YuyOLAc8J13V7r9Gg,15958
50
50
  gitlab/v4/objects/hooks.py,sha256=1uDYi09GOmgR6t7gVT06CeMGL0ZZ1N5swz1KMtsybDk,3598
51
- gitlab/v4/objects/integrations.py,sha256=26lk0pgwijhvaHfVPkLV_gTgRTuKVQh1Ji8NdyfV9_w,9205
51
+ gitlab/v4/objects/integrations.py,sha256=QWl5ZnE1oivt4ho9qJa_o268ORdaW35D4klBRy1jUyQ,9229
52
52
  gitlab/v4/objects/invitations.py,sha256=ya9x7xhL1oSbx-FLJud-lHKmbYQoTplZlAbjsZip2CI,2734
53
- gitlab/v4/objects/issues.py,sha256=GnvwNEk5Egsb18wtjnfkLPYTcYce4oefZkJOEFjNIpo,10162
54
- gitlab/v4/objects/iterations.py,sha256=vtxrq8uFRTKvhUzJIyVi2TV2wod52I1JMejLCPXp3CI,718
53
+ gitlab/v4/objects/issues.py,sha256=FToUg3rm-nrcHPwwrx5SQCyNSNBOC7xNJmHa2S5szdI,10234
54
+ gitlab/v4/objects/iterations.py,sha256=QsPOg0YB57ShQUdTQwa_wXtNfWAM2c53kWE6y5xjg6E,1561
55
55
  gitlab/v4/objects/job_token_scope.py,sha256=J69VVjtRgnTYQrFHFxOWQv3T2s6XRxb7uz57IAhnsdU,2622
56
- gitlab/v4/objects/jobs.py,sha256=85i68QXwfUOQ-lrqQaH1Q0Ksujz-QLZh0-7zYBZIstU,9139
56
+ gitlab/v4/objects/jobs.py,sha256=g7l5dA6-99tyLDoohjJ_xZvGyMbeytn4L9T-h78NQaE,9140
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=eI5Qll2JYBqaIj9v1nrhSbVyF_NEVk9_wLFv0bZlc1U,6146
62
- gitlab/v4/objects/merge_requests.py,sha256=vNjC5fn3bJeIWJTUGlXF_CAtGJWbuA348LQpLzetE4o,17306
61
+ gitlab/v4/objects/merge_request_approvals.py,sha256=oPZFd4AUtrAVhBTa0iM4krNkk2UTNOTw_MWlEWo2HAQ,6400
62
+ gitlab/v4/objects/merge_requests.py,sha256=tpFCMmTVWyL9X7HtUoZuHJP4MVZUz1kk9-Bv-SbnwfU,17422
63
63
  gitlab/v4/objects/merge_trains.py,sha256=e0Gp2Ri75elcG_r9w8qxdrcWW_YiebPRwUYIH5od8kc,422
64
- gitlab/v4/objects/milestones.py,sha256=NhondaCyl7_UmaZYv--IpFADHz5hDHYhcK1EKdl3pII,7033
65
- gitlab/v4/objects/namespaces.py,sha256=FhxumYKpw6OKte7nEkN6EQxIVQggdhQ546nD93LYAiE,1502
64
+ gitlab/v4/objects/milestones.py,sha256=LHAGYJlTm2ed3eqv4mTO-QZ7vRbwGXRFpre_G4gHdKY,7073
65
+ gitlab/v4/objects/namespaces.py,sha256=5_km8RP_OLZoRm6u-p53S2AM5UsHyJ4j65fi5fGIoLo,1535
66
66
  gitlab/v4/objects/notes.py,sha256=Y0wrSD2pwvzX1RfyzyeXMMBy0_jOsWsaIUpa6CYWprg,8588
67
67
  gitlab/v4/objects/notification_settings.py,sha256=zhltGjuu1HiqdON2v9-uKu7Z6TOOBOgQ3GdWgfEAJ64,2061
68
- gitlab/v4/objects/packages.py,sha256=ZI0H6omYNtffGqWOO3RzxQnRyjUlvynQ8rYNyfzXVBw,7187
68
+ gitlab/v4/objects/packages.py,sha256=4tEocanjw1GlFvfOncCY0Z-jJfjiFLhZeUiBIjLz9_g,7225
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=A2sbneq5IDS_huHDPQuplloRLZpQV9mTzsmpouwrR8Q,9778
71
+ gitlab/v4/objects/pipelines.py,sha256=nQrzNW6WCTcDCqz_nl8i7YYGpXfRaEVGGpeRdObjeW0,10664
72
72
  gitlab/v4/objects/project_access_tokens.py,sha256=z_BCaBtXC7wzGVN6Ip0H72VwHID8XEBHDddCw0J8hO0,1043
73
- gitlab/v4/objects/projects.py,sha256=S6M6bmXf1CATRMHlD2chpuJG_nnwDTMZ-Gv6Hwm0IMM,44127
73
+ gitlab/v4/objects/projects.py,sha256=IS9QARQ36DU1B6S8XvmpxjqciWOygqSC9_wQRFDuoBg,44401
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=td4wMPMEpdJAS_4maQ1zBXf23Luv0hOBsChpzTPY-D0,11048
76
+ gitlab/v4/objects/repositories.py,sha256=RfOzuEvq_dBY1t6KaHG939tfsto9PiyMi-y_ikXSqkU,11221
77
77
  gitlab/v4/objects/resource_groups.py,sha256=fYYnA2YO9CSTzxwImVCVPSiPkIeNpKRrPj7dpzwati4,1427
78
78
  gitlab/v4/objects/reviewers.py,sha256=HTU8hw09fRofvoj5V4kde1PLK3QSe1uY3BVUtxOvJ00,517
79
- gitlab/v4/objects/runners.py,sha256=y20HG1l3h6o5rPyPWdyeBfWPrfbpBZ_B2FEbBRYxvws,4883
80
- gitlab/v4/objects/secure_files.py,sha256=UAjPmjwGiCxkzTXXr2dxSaCCMbHab_pPGYPM2Vx3pzA,2511
79
+ gitlab/v4/objects/runners.py,sha256=QFYiApMyBWs0rhw1drylutoltI2zdIwDeYP1oFJUGJ4,4917
80
+ gitlab/v4/objects/secure_files.py,sha256=KC5jGC79Qd_IeHx1EhjobMZrJPPIA-4jUYZny_o3cCE,2521
81
+ gitlab/v4/objects/service_accounts.py,sha256=MPy-xk2ObEwohscBK7jcsVUYjhEM48c8_7jK6wB0PYM,517
81
82
  gitlab/v4/objects/settings.py,sha256=LTkdyhhU2MTA15EJw2lZeqDKfK_Bg65CV1CchPljrqY,4295
82
- gitlab/v4/objects/sidekiq.py,sha256=DD1XKrV5uaZIcWpwxRAsfVhn3NR9MPEnWbgwG-hBWMw,2956
83
- gitlab/v4/objects/snippets.py,sha256=rNpHJXBLa8bEC-lHuMhC56lt8IfRNl8BqPG_4RTCV_M,6018
83
+ gitlab/v4/objects/sidekiq.py,sha256=kIMgglIBJkbA_io9MXwkCEUs8mZPte6sFQYoWH1TXI4,2996
84
+ gitlab/v4/objects/snippets.py,sha256=uOWD275Ck8wc9lWiKdryzJeYZaGCCnVtWRhzmQ6OL5g,6048
84
85
  gitlab/v4/objects/statistics.py,sha256=NPN8WpCwFJeWeLcn5zahwAgzpJl-Q6bJyoi5ff8XCRQ,2638
85
86
  gitlab/v4/objects/tags.py,sha256=LCvSzI44a1NlrUVi5A_2eOwFSOJjVBSkWe71QdXH_68,1453
86
87
  gitlab/v4/objects/templates.py,sha256=DWbb46-SiusrbW7OuMfBJLrH0rqpRV0G6gzFLbaLpOc,1726
87
- gitlab/v4/objects/todos.py,sha256=WOLycLoNlRcwxczpLiUjTowGFcndXe20OQsAV0cEV00,1826
88
- gitlab/v4/objects/topics.py,sha256=24QtZfMcTjFZacLF6GVhdvb267n_ScXQjYfa3Ru_sd4,2199
88
+ gitlab/v4/objects/todos.py,sha256=HMqvK9CDyxj2jwSQKjnaTLmMztDhqIL_62CHh6Rh4lk,1846
89
+ gitlab/v4/objects/topics.py,sha256=rJU4q2gH8caaJXgBV81x9docr5XobZBaI-9vPmgCvXQ,2208
89
90
  gitlab/v4/objects/triggers.py,sha256=UAERq_C-QdPBbBQPHLh5IfhpkdDeIxdnVGPHfu9Qy5Y,824
90
- gitlab/v4/objects/users.py,sha256=jzT21VVGK3YCRKXEAGZ8HD2pOfeqX17AH4U3S1_H0fM,21281
91
+ gitlab/v4/objects/users.py,sha256=_gGrTwcE17jeoXIPgfFSv54jtF1_9C1R0Y0hhssTvXY,21381
91
92
  gitlab/v4/objects/variables.py,sha256=S0Vz32jEpUbo4J2js8gMPPTVpcy1ge5FYVHLiPz9c-A,2627
92
93
  gitlab/v4/objects/wikis.py,sha256=JtI1cQqZV1_PRfKVlQRMh4LZjdxEfi9T2VuFYv6PrV8,1775
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,,
94
+ python_gitlab-4.7.0.dist-info/AUTHORS,sha256=Z0P61GJSVnp7iFbRcMezhx3f4zMyPkVmG--TWaRo768,526
95
+ python_gitlab-4.7.0.dist-info/COPYING,sha256=2n6rt7r999OuXp8iOqW9we7ORaxWncIbOwN1ILRGR2g,7651
96
+ python_gitlab-4.7.0.dist-info/METADATA,sha256=DykK7oYZjqQLJO3GPX9tvurTvHEWqyE9zlGE6YlThvI,8228
97
+ python_gitlab-4.7.0.dist-info/WHEEL,sha256=mguMlWGMX-VHnMpKOjjQidIo1ssRlCFu4a4mBpz1s2M,91
98
+ python_gitlab-4.7.0.dist-info/entry_points.txt,sha256=nhpKLLP_uQPFByn8UtE9zsvQQwa402t52o_Cw9IFXMo,43
99
+ python_gitlab-4.7.0.dist-info/top_level.txt,sha256=MvIaP8p_Oaf4gO_hXmHkX-5y2deHLp1pe6tJR3ukQ6o,7
100
+ python_gitlab-4.7.0.dist-info/RECORD,,