python-gitlab 5.4.0__tar.gz → 5.6.0__tar.gz

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 (359) hide show
  1. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/CHANGELOG.md +41 -0
  2. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/PKG-INFO +1 -1
  3. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/api-objects.rst +1 -0
  4. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/merge_request_approvals.rst +77 -16
  5. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/projects.rst +0 -8
  6. python_gitlab-5.6.0/docs/gl_objects/pull_mirror.rst +38 -0
  7. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/_version.py +1 -1
  8. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/mixins.py +2 -2
  9. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/utils.py +1 -1
  10. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/artifacts.py +4 -4
  11. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/files.py +1 -1
  12. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/groups.py +2 -0
  13. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/jobs.py +3 -3
  14. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/merge_request_approvals.py +22 -0
  15. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/packages.py +2 -2
  16. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/projects.py +78 -2
  17. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/repositories.py +2 -2
  18. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/secure_files.py +2 -2
  19. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/snippets.py +2 -2
  20. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/python_gitlab.egg-info/PKG-INFO +1 -1
  21. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/python_gitlab.egg-info/SOURCES.txt +3 -0
  22. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/api/test_import_export.py +1 -1
  23. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/api/test_projects.py +18 -0
  24. python_gitlab-5.6.0/tests/unit/objects/test_group_merge_request_approvals.py +253 -0
  25. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_projects.py +4 -2
  26. python_gitlab-5.6.0/tests/unit/objects/test_pull_mirror.py +67 -0
  27. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/AUTHORS +0 -0
  28. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/COPYING +0 -0
  29. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/MANIFEST.in +0 -0
  30. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/README.rst +0 -0
  31. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/Makefile +0 -0
  32. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/__init__.py +0 -0
  33. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/_static/js/gitter.js +0 -0
  34. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/api/gitlab.rst +0 -0
  35. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/api/gitlab.v4.rst +0 -0
  36. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/api-levels.rst +0 -0
  37. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/api-usage-advanced.rst +0 -0
  38. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/api-usage-graphql.rst +0 -0
  39. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/api-usage.rst +0 -0
  40. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/changelog.md +0 -0
  41. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/cli-examples.rst +0 -0
  42. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/cli-objects.rst +0 -0
  43. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/cli-usage.rst +0 -0
  44. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/conf.py +0 -0
  45. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/ext/__init__.py +0 -0
  46. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/ext/docstrings.py +0 -0
  47. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/ext/manager_tmpl.j2 +0 -0
  48. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/faq.rst +0 -0
  49. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/access_requests.rst +0 -0
  50. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/appearance.rst +0 -0
  51. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/applications.rst +0 -0
  52. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/badges.rst +0 -0
  53. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/boards.rst +0 -0
  54. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/branches.rst +0 -0
  55. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/bulk_imports.rst +0 -0
  56. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/ci_lint.rst +0 -0
  57. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/cluster_agents.rst +0 -0
  58. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/clusters.rst +0 -0
  59. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/commits.rst +0 -0
  60. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/deploy_keys.rst +0 -0
  61. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/deploy_tokens.rst +0 -0
  62. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/deployments.rst +0 -0
  63. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/discussions.rst +0 -0
  64. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/draft_notes.rst +0 -0
  65. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/emojis.rst +0 -0
  66. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/environments.rst +0 -0
  67. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/epics.rst +0 -0
  68. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/events.rst +0 -0
  69. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/features.rst +0 -0
  70. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/geo_nodes.rst +0 -0
  71. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/group_access_tokens.rst +0 -0
  72. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/groups.rst +0 -0
  73. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/invitations.rst +0 -0
  74. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/issues.rst +0 -0
  75. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/iterations.rst +0 -0
  76. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/job_token_scope.rst +0 -0
  77. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/keys.rst +0 -0
  78. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/labels.rst +0 -0
  79. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/merge_requests.rst +0 -0
  80. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/merge_trains.rst +0 -0
  81. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/messages.rst +0 -0
  82. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/milestones.rst +0 -0
  83. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/namespaces.rst +0 -0
  84. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/notes.rst +0 -0
  85. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/notifications.rst +0 -0
  86. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/packages.rst +0 -0
  87. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/pagesdomains.rst +0 -0
  88. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/personal_access_tokens.rst +0 -0
  89. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/pipelines_and_jobs.rst +0 -0
  90. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/project_access_tokens.rst +0 -0
  91. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/protected_branches.rst +0 -0
  92. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/protected_container_repositories.rst +0 -0
  93. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/protected_environments.rst +0 -0
  94. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/protected_packages.rst +0 -0
  95. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/releases.rst +0 -0
  96. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/remote_mirrors.rst +0 -0
  97. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/repositories.rst +0 -0
  98. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/repository_tags.rst +0 -0
  99. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/resource_groups.rst +0 -0
  100. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/runners.rst +0 -0
  101. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/search.rst +0 -0
  102. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/secure_files.rst +0 -0
  103. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/settings.rst +0 -0
  104. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/sidekiq.rst +0 -0
  105. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/snippets.rst +0 -0
  106. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/statistics.rst +0 -0
  107. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/status_checks.rst +0 -0
  108. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/system_hooks.rst +0 -0
  109. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/templates.rst +0 -0
  110. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/todos.rst +0 -0
  111. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/topics.rst +0 -0
  112. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/users.rst +0 -0
  113. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/variables.rst +0 -0
  114. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/gl_objects/wikis.rst +0 -0
  115. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/index.rst +0 -0
  116. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/make.bat +0 -0
  117. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/docs/release-notes.rst +0 -0
  118. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/__init__.py +0 -0
  119. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/__main__.py +0 -0
  120. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/_backends/__init__.py +0 -0
  121. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/_backends/graphql.py +0 -0
  122. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/_backends/protocol.py +0 -0
  123. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/_backends/requests_backend.py +0 -0
  124. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/base.py +0 -0
  125. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/cli.py +0 -0
  126. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/client.py +0 -0
  127. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/config.py +0 -0
  128. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/const.py +0 -0
  129. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/exceptions.py +0 -0
  130. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/py.typed +0 -0
  131. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/types.py +0 -0
  132. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/__init__.py +0 -0
  133. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/cli.py +0 -0
  134. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/__init__.py +0 -0
  135. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/access_requests.py +0 -0
  136. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/appearance.py +0 -0
  137. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/applications.py +0 -0
  138. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/audit_events.py +0 -0
  139. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/award_emojis.py +0 -0
  140. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/badges.py +0 -0
  141. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/boards.py +0 -0
  142. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/branches.py +0 -0
  143. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/broadcast_messages.py +0 -0
  144. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/bulk_imports.py +0 -0
  145. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/ci_lint.py +0 -0
  146. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/cluster_agents.py +0 -0
  147. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/clusters.py +0 -0
  148. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/commits.py +0 -0
  149. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/container_registry.py +0 -0
  150. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/custom_attributes.py +0 -0
  151. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/deploy_keys.py +0 -0
  152. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/deploy_tokens.py +0 -0
  153. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/deployments.py +0 -0
  154. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/discussions.py +0 -0
  155. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/draft_notes.py +0 -0
  156. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/environments.py +0 -0
  157. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/epics.py +0 -0
  158. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/events.py +0 -0
  159. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/export_import.py +0 -0
  160. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/features.py +0 -0
  161. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/geo_nodes.py +0 -0
  162. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/group_access_tokens.py +0 -0
  163. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/hooks.py +0 -0
  164. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/integrations.py +0 -0
  165. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/invitations.py +0 -0
  166. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/issues.py +0 -0
  167. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/iterations.py +0 -0
  168. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/job_token_scope.py +0 -0
  169. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/keys.py +0 -0
  170. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/labels.py +0 -0
  171. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/ldap.py +0 -0
  172. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/members.py +0 -0
  173. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/merge_requests.py +0 -0
  174. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/merge_trains.py +0 -0
  175. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/milestones.py +0 -0
  176. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/namespaces.py +0 -0
  177. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/notes.py +0 -0
  178. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/notification_settings.py +0 -0
  179. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/package_protection_rules.py +0 -0
  180. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/pages.py +0 -0
  181. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/personal_access_tokens.py +0 -0
  182. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/pipelines.py +0 -0
  183. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/project_access_tokens.py +0 -0
  184. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/push_rules.py +0 -0
  185. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/registry_protection_repository_rules.py +0 -0
  186. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/registry_protection_rules.py +0 -0
  187. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/releases.py +0 -0
  188. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/resource_groups.py +0 -0
  189. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/reviewers.py +0 -0
  190. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/runners.py +0 -0
  191. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/service_accounts.py +0 -0
  192. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/settings.py +0 -0
  193. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/sidekiq.py +0 -0
  194. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/statistics.py +0 -0
  195. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/status_checks.py +0 -0
  196. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/tags.py +0 -0
  197. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/templates.py +0 -0
  198. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/todos.py +0 -0
  199. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/topics.py +0 -0
  200. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/triggers.py +0 -0
  201. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/users.py +0 -0
  202. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/variables.py +0 -0
  203. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/gitlab/v4/objects/wikis.py +0 -0
  204. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/pyproject.toml +0 -0
  205. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/python_gitlab.egg-info/dependency_links.txt +0 -0
  206. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/python_gitlab.egg-info/entry_points.txt +0 -0
  207. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/python_gitlab.egg-info/requires.txt +0 -0
  208. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/python_gitlab.egg-info/top_level.txt +0 -0
  209. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/requirements-docker.txt +0 -0
  210. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/requirements-docs.txt +0 -0
  211. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/requirements-lint.txt +0 -0
  212. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/requirements-precommit.txt +0 -0
  213. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/requirements-test.txt +0 -0
  214. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/requirements.txt +0 -0
  215. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/setup.cfg +0 -0
  216. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/__init__.py +0 -0
  217. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/conftest.py +0 -0
  218. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/__init__.py +0 -0
  219. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/api/__init__.py +0 -0
  220. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/api/test_boards.py +0 -0
  221. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/api/test_branches.py +0 -0
  222. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/api/test_bulk_imports.py +0 -0
  223. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/api/test_current_user.py +0 -0
  224. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/api/test_deploy_keys.py +0 -0
  225. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/api/test_deploy_tokens.py +0 -0
  226. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/api/test_epics.py +0 -0
  227. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/api/test_gitlab.py +0 -0
  228. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/api/test_graphql.py +0 -0
  229. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/api/test_groups.py +0 -0
  230. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/api/test_issues.py +0 -0
  231. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/api/test_keys.py +0 -0
  232. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/api/test_lazy_objects.py +0 -0
  233. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/api/test_merge_requests.py +0 -0
  234. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/api/test_packages.py +0 -0
  235. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/api/test_project_job_token_scope.py +0 -0
  236. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/api/test_push_rules.py +0 -0
  237. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/api/test_registry.py +0 -0
  238. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/api/test_releases.py +0 -0
  239. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/api/test_repository.py +0 -0
  240. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/api/test_services.py +0 -0
  241. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/api/test_snippets.py +0 -0
  242. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/api/test_statistics.py +0 -0
  243. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/api/test_topics.py +0 -0
  244. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/api/test_users.py +0 -0
  245. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/api/test_variables.py +0 -0
  246. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/api/test_wikis.py +0 -0
  247. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/cli/__init__.py +0 -0
  248. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/cli/conftest.py +0 -0
  249. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/cli/test_cli.py +0 -0
  250. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/cli/test_cli_artifacts.py +0 -0
  251. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/cli/test_cli_files.py +0 -0
  252. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/cli/test_cli_packages.py +0 -0
  253. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/cli/test_cli_projects.py +0 -0
  254. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/cli/test_cli_repository.py +0 -0
  255. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/cli/test_cli_resource_access_tokens.py +0 -0
  256. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/cli/test_cli_users.py +0 -0
  257. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/cli/test_cli_v4.py +0 -0
  258. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/cli/test_cli_variables.py +0 -0
  259. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/conftest.py +0 -0
  260. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/ee-test.py +0 -0
  261. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/fixtures/.env +0 -0
  262. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/fixtures/__init__.py +0 -0
  263. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/fixtures/avatar.png +0 -0
  264. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/fixtures/create_license.rb +0 -0
  265. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/fixtures/docker-compose.yml +0 -0
  266. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/fixtures/docker.py +0 -0
  267. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/fixtures/invalid_auth.cfg +0 -0
  268. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/fixtures/invalid_version.cfg +0 -0
  269. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/fixtures/set_token.rb +0 -0
  270. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/functional/helpers.py +0 -0
  271. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/install/test_install.py +0 -0
  272. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/smoke/__init__.py +0 -0
  273. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/smoke/test_dists.py +0 -0
  274. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/__init__.py +0 -0
  275. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/_backends/__init__.py +0 -0
  276. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/_backends/test_requests_backend.py +0 -0
  277. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/base/test_rest_manager.py +0 -0
  278. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/base/test_rest_object.py +0 -0
  279. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/conftest.py +0 -0
  280. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/helpers.py +0 -0
  281. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/meta/__init__.py +0 -0
  282. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/meta/test_ensure_type_hints.py +0 -0
  283. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/meta/test_imports.py +0 -0
  284. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/meta/test_mro.py +0 -0
  285. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/mixins/__init__.py +0 -0
  286. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/mixins/test_meta_mixins.py +0 -0
  287. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/mixins/test_mixin_methods.py +0 -0
  288. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/mixins/test_object_mixins_attributes.py +0 -0
  289. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/__init__.py +0 -0
  290. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/conftest.py +0 -0
  291. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_appearance.py +0 -0
  292. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_applications.py +0 -0
  293. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_audit_events.py +0 -0
  294. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_badges.py +0 -0
  295. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_bridges.py +0 -0
  296. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_bulk_imports.py +0 -0
  297. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_ci_lint.py +0 -0
  298. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_cluster_agents.py +0 -0
  299. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_commits.py +0 -0
  300. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_deploy_tokens.py +0 -0
  301. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_deployments.py +0 -0
  302. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_draft_notes.py +0 -0
  303. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_environments.py +0 -0
  304. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_group_access_tokens.py +0 -0
  305. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_groups.py +0 -0
  306. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_hooks.py +0 -0
  307. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_invitations.py +0 -0
  308. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_issues.py +0 -0
  309. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_iterations.py +0 -0
  310. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_job_artifacts.py +0 -0
  311. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_job_token_scope.py +0 -0
  312. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_jobs.py +0 -0
  313. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_keys.py +0 -0
  314. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_members.py +0 -0
  315. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_merge_request_pipelines.py +0 -0
  316. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_merge_requests.py +0 -0
  317. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_merge_trains.py +0 -0
  318. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_package_protection_rules.py +0 -0
  319. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_packages.py +0 -0
  320. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_personal_access_tokens.py +0 -0
  321. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_pipeline_schedules.py +0 -0
  322. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_pipelines.py +0 -0
  323. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_project_access_tokens.py +0 -0
  324. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_project_import_export.py +0 -0
  325. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_project_merge_request_approvals.py +0 -0
  326. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_project_statistics.py +0 -0
  327. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_registry_protection_rules.py +0 -0
  328. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_registry_repositories.py +0 -0
  329. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_releases.py +0 -0
  330. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_remote_mirrors.py +0 -0
  331. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_repositories.py +0 -0
  332. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_resource_groups.py +0 -0
  333. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_resource_iteration_events.py +0 -0
  334. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_resource_label_events.py +0 -0
  335. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_resource_milestone_events.py +0 -0
  336. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_resource_state_events.py +0 -0
  337. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_runners.py +0 -0
  338. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_secure_files.py +0 -0
  339. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_services.py +0 -0
  340. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_snippets.py +0 -0
  341. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_statistics.py +0 -0
  342. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_status_checks.py +0 -0
  343. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_submodules.py +0 -0
  344. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_templates.py +0 -0
  345. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_todos.py +0 -0
  346. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_topics.py +0 -0
  347. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_users.py +0 -0
  348. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/objects/test_variables.py +0 -0
  349. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/test_cli.py +0 -0
  350. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/test_config.py +0 -0
  351. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/test_exceptions.py +0 -0
  352. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/test_gitlab.py +0 -0
  353. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/test_gitlab_auth.py +0 -0
  354. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/test_gitlab_http_methods.py +0 -0
  355. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/test_graphql.py +0 -0
  356. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/test_retry.py +0 -0
  357. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/test_types.py +0 -0
  358. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tests/unit/test_utils.py +0 -0
  359. {python_gitlab-5.4.0 → python_gitlab-5.6.0}/tox.ini +0 -0
@@ -1,6 +1,47 @@
1
1
  # CHANGELOG
2
2
 
3
3
 
4
+ ## v5.6.0 (2025-01-28)
5
+
6
+ ### Features
7
+
8
+ - **group**: Add support for group level MR approval rules
9
+ ([`304bdd0`](https://github.com/python-gitlab/python-gitlab/commit/304bdd09cd5e6526576c5ec58cb3acd7e1a783cb))
10
+
11
+
12
+ ## v5.5.0 (2025-01-28)
13
+
14
+ ### Chores
15
+
16
+ - Add deprecation warning for mirror_pull functions
17
+ ([`7f6fd5c`](https://github.com/python-gitlab/python-gitlab/commit/7f6fd5c3aac5e2f18adf212adbce0ac04c7150e1))
18
+
19
+ - Relax typing constraints for response action
20
+ ([`f430078`](https://github.com/python-gitlab/python-gitlab/commit/f4300782485ee6c38578fa3481061bd621656b0e))
21
+
22
+ - **tests**: Catch deprecation warnings
23
+ ([`0c1af08`](https://github.com/python-gitlab/python-gitlab/commit/0c1af08bc73611d288f1f67248cff9c32c685808))
24
+
25
+ ### Documentation
26
+
27
+ - Add usage of pull mirror
28
+ ([`9b374b2`](https://github.com/python-gitlab/python-gitlab/commit/9b374b2c051f71b8ef10e22209b8e90730af9d9b))
29
+
30
+ - Remove old pull mirror implementation
31
+ ([`9e18672`](https://github.com/python-gitlab/python-gitlab/commit/9e186726c8a5ae70ca49c56b2be09b34dbf5b642))
32
+
33
+ ### Features
34
+
35
+ - **functional**: Add pull mirror test
36
+ ([`3b31ade`](https://github.com/python-gitlab/python-gitlab/commit/3b31ade152eb61363a68cf0509867ff8738ccdaf))
37
+
38
+ - **projects**: Add pull mirror class
39
+ ([`2411bff`](https://github.com/python-gitlab/python-gitlab/commit/2411bff4fd1dab6a1dd70070441b52e9a2927a63))
40
+
41
+ - **unit**: Add pull mirror tests
42
+ ([`5c11203`](https://github.com/python-gitlab/python-gitlab/commit/5c11203a8b281f6ab34f7e85073fadcfc395503c))
43
+
44
+
4
45
  ## v5.4.0 (2025-01-28)
5
46
 
6
47
  ### Bug Fixes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: python-gitlab
3
- Version: 5.4.0
3
+ Version: 5.6.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>
@@ -52,6 +52,7 @@ API examples
52
52
  gl_objects/protected_container_repositories
53
53
  gl_objects/protected_environments
54
54
  gl_objects/protected_packages
55
+ gl_objects/pull_mirror
55
56
  gl_objects/releases
56
57
  gl_objects/runners
57
58
  gl_objects/remote_mirrors
@@ -2,8 +2,47 @@
2
2
  Merge request approvals settings
3
3
  ################################
4
4
 
5
- Merge request approvals can be defined at the project level or at the merge
6
- request level.
5
+ Merge request approvals can be defined at the group level, or the project level or at the merge request level.
6
+
7
+ Group approval rules
8
+ ====================
9
+
10
+ References
11
+ ----------
12
+
13
+ * v4 API:
14
+
15
+ + :class:`gitlab.v4.objects.GroupApprovalRule`
16
+ + :class:`gitlab.v4.objects.GroupApprovalRuleManager`
17
+
18
+ * GitLab API: https://docs.gitlab.com/ee/api/merge_request_approvals.html
19
+
20
+ Examples
21
+ --------
22
+
23
+ List group-level MR approval rules::
24
+
25
+ group_approval_rules = group.approval_rules.list()
26
+
27
+ Change group-level MR approval rule::
28
+
29
+ g_approval_rule = group.approval_rules.get(123)
30
+ g_approval_rule.user_ids = [234]
31
+ g_approval_rule.save()
32
+
33
+ Create new group-level MR approval rule::
34
+
35
+ group.approval_rules.create({
36
+ "name": "my new approval rule",
37
+ "approvals_required": 2,
38
+ "rule_type": "regular",
39
+ "user_ids": [105],
40
+ "group_ids": [653, 654],
41
+ })
42
+
43
+
44
+ Project approval rules
45
+ ======================
7
46
 
8
47
  References
9
48
  ----------
@@ -15,15 +54,6 @@ References
15
54
  + :class:`gitlab.v4.objects.ProjectApprovalRule`
16
55
  + :class:`gitlab.v4.objects.ProjectApprovalRuleManager`
17
56
  + :attr:`gitlab.v4.objects.Project.approvals`
18
- + :class:`gitlab.v4.objects.ProjectMergeRequestApproval`
19
- + :class:`gitlab.v4.objects.ProjectMergeRequestApprovalManager`
20
- + :attr:`gitlab.v4.objects.ProjectMergeRequest.approvals`
21
- + :class:`gitlab.v4.objects.ProjectMergeRequestApprovalRule`
22
- + :class:`gitlab.v4.objects.ProjectMergeRequestApprovalRuleManager`
23
- + :attr:`gitlab.v4.objects.ProjectMergeRequest.approval_rules`
24
- + :class:`gitlab.v4.objects.ProjectMergeRequestApprovalState`
25
- + :class:`gitlab.v4.objects.ProjectMergeRequestApprovalStateManager`
26
- + :attr:`gitlab.v4.objects.ProjectMergeRequest.approval_state`
27
57
 
28
58
  * GitLab API: https://docs.gitlab.com/ee/api/merge_request_approvals.html
29
59
 
@@ -43,7 +73,41 @@ Delete project-level MR approval rule::
43
73
 
44
74
  p_approvalrule.delete()
45
75
 
46
- Get project-level or MR-level MR approvals settings::
76
+ Get project-level MR approvals settings::
77
+
78
+ p_mras = project.approvals.get()
79
+
80
+ Change project-level MR approvals settings::
81
+
82
+ p_mras.approvals_before_merge = 2
83
+ p_mras.save()
84
+
85
+
86
+ Merge request approval rules
87
+ ============================
88
+
89
+ References
90
+ ----------
91
+
92
+ * v4 API:
93
+
94
+ + :class:`gitlab.v4.objects.ProjectMergeRequestApproval`
95
+ + :class:`gitlab.v4.objects.ProjectMergeRequestApprovalManager`
96
+ + :attr:`gitlab.v4.objects.ProjectMergeRequest.approvals`
97
+ + :class:`gitlab.v4.objects.ProjectMergeRequestApprovalRule`
98
+ + :class:`gitlab.v4.objects.ProjectMergeRequestApprovalRuleManager`
99
+ + :attr:`gitlab.v4.objects.ProjectMergeRequest.approval_rules`
100
+ + :class:`gitlab.v4.objects.ProjectMergeRequestApprovalState`
101
+ + :class:`gitlab.v4.objects.ProjectMergeRequestApprovalStateManager`
102
+ + :attr:`gitlab.v4.objects.ProjectMergeRequest.approval_state`
103
+
104
+ * GitLab API: https://docs.gitlab.com/ee/api/merge_request_approvals.html
105
+
106
+ Examples
107
+ --------
108
+
109
+
110
+ Get MR-level MR approvals settings::
47
111
 
48
112
  p_mras = project.approvals.get()
49
113
 
@@ -53,10 +117,7 @@ Get MR-level approval state::
53
117
 
54
118
  mr_approval_state = mr.approval_state.get()
55
119
 
56
- Change project-level or MR-level MR approvals settings::
57
-
58
- p_mras.approvals_before_merge = 2
59
- p_mras.save()
120
+ Change MR-level MR approvals settings::
60
121
 
61
122
  mr.approvals.set_approvers(approvals_required=1)
62
123
  # or
@@ -246,14 +246,6 @@ Get a list of users for the repository::
246
246
  # search for users
247
247
  users = p.users.list(search='pattern')
248
248
 
249
- Start the pull mirroring process (EE edition)::
250
-
251
- project.mirror_pull()
252
-
253
- Get a project’s pull mirror details (EE edition)::
254
-
255
- mirror_pull_details = project.mirror_pull_details()
256
-
257
249
  Import / Export
258
250
  ===============
259
251
 
@@ -0,0 +1,38 @@
1
+ ######################
2
+ Project Pull Mirror
3
+ ######################
4
+
5
+ Pull Mirror allow you to set up pull mirroring for a project.
6
+
7
+ References
8
+ ==========
9
+
10
+ * v4 API:
11
+
12
+ + :class:`gitlab.v4.objects.ProjectPullMirror`
13
+ + :class:`gitlab.v4.objects.ProjectPullMirrorManager`
14
+ + :attr:`gitlab.v4.objects.Project.pull_mirror`
15
+
16
+ * GitLab API: https://docs.gitlab.com/ce/api/pull_mirror.html
17
+
18
+ Examples
19
+ --------
20
+
21
+ Get the current pull mirror of a project::
22
+
23
+ mirrors = project.pull_mirror.get()
24
+
25
+ Create (and enable) a remote mirror for a project::
26
+
27
+ mirror = project.pull_mirror.create({'url': 'https://gitlab.com/example.git',
28
+ 'enabled': True})
29
+
30
+ Update an existing remote mirror's attributes::
31
+
32
+ mirror.enabled = False
33
+ mirror.only_protected_branches = True
34
+ mirror.save()
35
+
36
+ Start an sync of the pull mirror::
37
+
38
+ mirror.start()
@@ -3,4 +3,4 @@ __copyright__ = "Copyright 2013-2019 Gauvain Pocentek, 2019-2023 python-gitlab t
3
3
  __email__ = "gauvainpocentek@gmail.com"
4
4
  __license__ = "LGPL3"
5
5
  __title__ = "python-gitlab"
6
- __version__ = "5.4.0"
6
+ __version__ = "5.6.0"
@@ -640,7 +640,7 @@ class DownloadMixin(_RestObjectBase):
640
640
  def download(
641
641
  self,
642
642
  streamed: Literal[True] = True,
643
- action: Optional[Callable[[bytes], None]] = None,
643
+ action: Optional[Callable[[bytes], Any]] = None,
644
644
  chunk_size: int = 1024,
645
645
  *,
646
646
  iterator: Literal[False] = False,
@@ -652,7 +652,7 @@ class DownloadMixin(_RestObjectBase):
652
652
  def download(
653
653
  self,
654
654
  streamed: bool = False,
655
- action: Optional[Callable[[bytes], None]] = None,
655
+ action: Optional[Callable[[bytes], Any]] = None,
656
656
  chunk_size: int = 1024,
657
657
  *,
658
658
  iterator: bool = False,
@@ -77,7 +77,7 @@ class MaskingFormatter(logging.Formatter):
77
77
  def response_content(
78
78
  response: requests.Response,
79
79
  streamed: bool,
80
- action: Optional[Callable[[bytes], None]],
80
+ action: Optional[Callable[[bytes], Any]],
81
81
  chunk_size: int,
82
82
  *,
83
83
  iterator: bool,
@@ -84,7 +84,7 @@ class ProjectArtifactManager(RESTManager):
84
84
  ref_name: str,
85
85
  job: str,
86
86
  streamed: Literal[True] = True,
87
- action: Optional[Callable[[bytes], None]] = None,
87
+ action: Optional[Callable[[bytes], Any]] = None,
88
88
  chunk_size: int = 1024,
89
89
  *,
90
90
  iterator: Literal[False] = False,
@@ -102,7 +102,7 @@ class ProjectArtifactManager(RESTManager):
102
102
  ref_name: str,
103
103
  job: str,
104
104
  streamed: bool = False,
105
- action: Optional[Callable[[bytes], None]] = None,
105
+ action: Optional[Callable[[bytes], Any]] = None,
106
106
  chunk_size: int = 1024,
107
107
  *,
108
108
  iterator: bool = False,
@@ -177,7 +177,7 @@ class ProjectArtifactManager(RESTManager):
177
177
  artifact_path: str,
178
178
  job: str,
179
179
  streamed: Literal[True] = True,
180
- action: Optional[Callable[[bytes], None]] = None,
180
+ action: Optional[Callable[[bytes], Any]] = None,
181
181
  chunk_size: int = 1024,
182
182
  *,
183
183
  iterator: Literal[False] = False,
@@ -195,7 +195,7 @@ class ProjectArtifactManager(RESTManager):
195
195
  artifact_path: str,
196
196
  job: str,
197
197
  streamed: bool = False,
198
- action: Optional[Callable[[bytes], None]] = None,
198
+ action: Optional[Callable[[bytes], Any]] = None,
199
199
  chunk_size: int = 1024,
200
200
  *,
201
201
  iterator: bool = False,
@@ -308,7 +308,7 @@ class ProjectFileManager(CreateMixin, UpdateMixin, DeleteMixin, RESTManager):
308
308
  file_path: str,
309
309
  ref: Optional[str] = None,
310
310
  streamed: Literal[True] = True,
311
- action: Optional[Callable[[bytes], None]] = None,
311
+ action: Optional[Callable[[bytes], Any]] = None,
312
312
  chunk_size: int = 1024,
313
313
  *,
314
314
  iterator: Literal[False] = False,
@@ -39,6 +39,7 @@ from .members import ( # noqa: F401
39
39
  GroupMemberAllManager,
40
40
  GroupMemberManager,
41
41
  )
42
+ from .merge_request_approvals import GroupApprovalRuleManager
42
43
  from .merge_requests import GroupMergeRequestManager # noqa: F401
43
44
  from .milestones import GroupMilestoneManager # noqa: F401
44
45
  from .notification_settings import GroupNotificationSettingsManager # noqa: F401
@@ -70,6 +71,7 @@ class Group(SaveMixin, ObjectDeleteMixin, RESTObject):
70
71
 
71
72
  access_tokens: GroupAccessTokenManager
72
73
  accessrequests: GroupAccessRequestManager
74
+ approval_rules: GroupApprovalRuleManager
73
75
  audit_events: GroupAuditEventManager
74
76
  badges: GroupBadgeManager
75
77
  billable_members: GroupBillableMemberManager
@@ -152,7 +152,7 @@ class ProjectJob(RefreshMixin, RESTObject):
152
152
  def artifacts(
153
153
  self,
154
154
  streamed: Literal[True] = True,
155
- action: Optional[Callable[[bytes], None]] = None,
155
+ action: Optional[Callable[[bytes], Any]] = None,
156
156
  chunk_size: int = 1024,
157
157
  *,
158
158
  iterator: Literal[False] = False,
@@ -229,7 +229,7 @@ class ProjectJob(RefreshMixin, RESTObject):
229
229
  self,
230
230
  path: str,
231
231
  streamed: Literal[True] = True,
232
- action: Optional[Callable[[bytes], None]] = None,
232
+ action: Optional[Callable[[bytes], Any]] = None,
233
233
  chunk_size: int = 1024,
234
234
  *,
235
235
  iterator: Literal[False] = False,
@@ -305,7 +305,7 @@ class ProjectJob(RefreshMixin, RESTObject):
305
305
  def trace(
306
306
  self,
307
307
  streamed: Literal[True] = True,
308
- action: Optional[Callable[[bytes], None]] = None,
308
+ action: Optional[Callable[[bytes], Any]] = None,
309
309
  chunk_size: int = 1024,
310
310
  *,
311
311
  iterator: Literal[False] = False,
@@ -16,6 +16,8 @@ from gitlab.mixins import (
16
16
  from gitlab.types import RequiredOptional
17
17
 
18
18
  __all__ = [
19
+ "GroupApprovalRule",
20
+ "GroupApprovalRuleManager",
19
21
  "ProjectApproval",
20
22
  "ProjectApprovalManager",
21
23
  "ProjectApprovalRule",
@@ -29,6 +31,26 @@ __all__ = [
29
31
  ]
30
32
 
31
33
 
34
+ class GroupApprovalRule(SaveMixin, RESTObject):
35
+ _id_attr = "id"
36
+ _repr_attr = "name"
37
+
38
+
39
+ class GroupApprovalRuleManager(RetrieveMixin, CreateMixin, UpdateMixin, RESTManager):
40
+ _path = "/groups/{group_id}/approval_rules"
41
+ _obj_cls = GroupApprovalRule
42
+ _from_parent_attrs = {"group_id": "id"}
43
+ _create_attrs = RequiredOptional(
44
+ required=("name", "approvals_required"),
45
+ optional=("user_ids", "group_ids", "rule_type"),
46
+ )
47
+
48
+ def get(
49
+ self, id: Union[str, int], lazy: bool = False, **kwargs: Any
50
+ ) -> GroupApprovalRule:
51
+ return cast(GroupApprovalRule, super().get(id=id, lazy=lazy, **kwargs))
52
+
53
+
32
54
  class ProjectApproval(SaveMixin, RESTObject):
33
55
  _id_attr = None
34
56
 
@@ -159,7 +159,7 @@ class GenericPackageManager(RESTManager):
159
159
  package_version: str,
160
160
  file_name: str,
161
161
  streamed: Literal[True] = True,
162
- action: Optional[Callable[[bytes], None]] = None,
162
+ action: Optional[Callable[[bytes], Any]] = None,
163
163
  chunk_size: int = 1024,
164
164
  *,
165
165
  iterator: Literal[False] = False,
@@ -177,7 +177,7 @@ class GenericPackageManager(RESTManager):
177
177
  package_version: str,
178
178
  file_name: str,
179
179
  streamed: bool = False,
180
- action: Optional[Callable[[bytes], None]] = None,
180
+ action: Optional[Callable[[bytes], Any]] = None,
181
181
  chunk_size: int = 1024,
182
182
  *,
183
183
  iterator: bool = False,
@@ -128,6 +128,8 @@ __all__ = [
128
128
  "ProjectForkManager",
129
129
  "ProjectRemoteMirror",
130
130
  "ProjectRemoteMirrorManager",
131
+ "ProjectPullMirror",
132
+ "ProjectPullMirrorManager",
131
133
  "ProjectStorage",
132
134
  "ProjectStorageManager",
133
135
  "SharedProject",
@@ -249,6 +251,7 @@ class Project(
249
251
  releases: ProjectReleaseManager
250
252
  resource_groups: ProjectResourceGroupManager
251
253
  remote_mirrors: "ProjectRemoteMirrorManager"
254
+ pull_mirror: "ProjectPullMirrorManager"
252
255
  repositories: ProjectRegistryRepositoryManager
253
256
  runners: ProjectRunnerManager
254
257
  secure_files: ProjectSecureFileManager
@@ -520,7 +523,7 @@ class Project(
520
523
  self,
521
524
  wiki: bool = False,
522
525
  streamed: Literal[True] = True,
523
- action: Optional[Callable[[bytes], None]] = None,
526
+ action: Optional[Callable[[bytes], Any]] = None,
524
527
  chunk_size: int = 1024,
525
528
  *,
526
529
  iterator: Literal[False] = False,
@@ -533,7 +536,7 @@ class Project(
533
536
  self,
534
537
  wiki: bool = False,
535
538
  streamed: bool = False,
536
- action: Optional[Callable[[bytes], None]] = None,
539
+ action: Optional[Callable[[bytes], Any]] = None,
537
540
  chunk_size: int = 1024,
538
541
  *,
539
542
  iterator: bool = False,
@@ -605,6 +608,13 @@ class Project(
605
608
  GitlabAuthenticationError: If authentication is not correct
606
609
  GitlabCreateError: If the server failed to perform the request
607
610
  """
611
+ utils.warn(
612
+ message=(
613
+ "project.mirror_pull() is deprecated and will be removed in a "
614
+ "future major version. Use project.pull_mirror.start() instead."
615
+ ),
616
+ category=DeprecationWarning,
617
+ )
608
618
  path = f"/projects/{self.encoded_id}/mirror/pull"
609
619
  self.manager.gitlab.http_post(path, **kwargs)
610
620
 
@@ -625,6 +635,13 @@ class Project(
625
635
  Returns:
626
636
  dict of the parsed json returned by the server
627
637
  """
638
+ utils.warn(
639
+ message=(
640
+ "project.mirror_pull_details() is deprecated and will be removed in a "
641
+ "future major version. Use project.pull_mirror.get() instead."
642
+ ),
643
+ category=DeprecationWarning,
644
+ )
628
645
  path = f"/projects/{self.encoded_id}/mirror/pull"
629
646
  result = self.manager.gitlab.http_get(path, **kwargs)
630
647
  if TYPE_CHECKING:
@@ -1240,6 +1257,65 @@ class ProjectRemoteMirrorManager(
1240
1257
  _update_attrs = RequiredOptional(optional=("enabled", "only_protected_branches"))
1241
1258
 
1242
1259
 
1260
+ class ProjectPullMirror(SaveMixin, RESTObject):
1261
+ _id_attr = None
1262
+
1263
+
1264
+ class ProjectPullMirrorManager(GetWithoutIdMixin, UpdateMixin, RESTManager):
1265
+ _path = "/projects/{project_id}/mirror/pull"
1266
+ _obj_cls = ProjectPullMirror
1267
+ _from_parent_attrs = {"project_id": "id"}
1268
+ _update_attrs = RequiredOptional(optional=("url",))
1269
+
1270
+ def get(self, **kwargs: Any) -> ProjectPullMirror:
1271
+ return cast(ProjectPullMirror, super().get(**kwargs))
1272
+
1273
+ @exc.on_http_error(exc.GitlabCreateError)
1274
+ def create(self, data: Dict[str, Any], **kwargs: Any) -> ProjectPullMirror:
1275
+ """Create a new object.
1276
+
1277
+ Args:
1278
+ data: parameters to send to the server to create the
1279
+ resource
1280
+ **kwargs: Extra options to send to the server (e.g. sudo)
1281
+
1282
+ Returns:
1283
+ A new instance of the managed object class built with
1284
+ the data sent by the server
1285
+
1286
+ Raises:
1287
+ GitlabAuthenticationError: If authentication is not correct
1288
+ GitlabCreateError: If the server cannot perform the request
1289
+ """
1290
+ if TYPE_CHECKING:
1291
+ assert data is not None
1292
+ self._create_attrs.validate_attrs(data=data)
1293
+
1294
+ if TYPE_CHECKING:
1295
+ assert self.path is not None
1296
+ server_data = self.gitlab.http_put(self.path, post_data=data, **kwargs)
1297
+
1298
+ if TYPE_CHECKING:
1299
+ assert not isinstance(server_data, requests.Response)
1300
+ return self._obj_cls(self, server_data)
1301
+
1302
+ @cli.register_custom_action(cls_names="ProjectPullMirrorManager")
1303
+ @exc.on_http_error(exc.GitlabCreateError)
1304
+ def start(self, **kwargs: Any) -> None:
1305
+ """Start the pull mirroring process for the project.
1306
+
1307
+ Args:
1308
+ **kwargs: Extra options to send to the server (e.g. sudo)
1309
+
1310
+ Raises:
1311
+ GitlabAuthenticationError: If authentication is not correct
1312
+ GitlabCreateError: If the server failed to perform the request
1313
+ """
1314
+ if TYPE_CHECKING:
1315
+ assert self.path is not None
1316
+ self.gitlab.http_post(self.path, **kwargs)
1317
+
1318
+
1243
1319
  class ProjectStorage(RefreshMixin, RESTObject):
1244
1320
  pass
1245
1321
 
@@ -146,7 +146,7 @@ class RepositoryMixin(_RestObjectBase):
146
146
  self,
147
147
  sha: str,
148
148
  streamed: Literal[True] = True,
149
- action: Optional[Callable[[bytes], None]] = None,
149
+ action: Optional[Callable[[bytes], Any]] = None,
150
150
  chunk_size: int = 1024,
151
151
  *,
152
152
  iterator: Literal[False] = False,
@@ -273,7 +273,7 @@ class RepositoryMixin(_RestObjectBase):
273
273
  self,
274
274
  sha: Optional[str] = None,
275
275
  streamed: Literal[True] = True,
276
- action: Optional[Callable[[bytes], None]] = None,
276
+ action: Optional[Callable[[bytes], Any]] = None,
277
277
  chunk_size: int = 1024,
278
278
  *,
279
279
  iterator: Literal[False] = False,
@@ -54,7 +54,7 @@ class ProjectSecureFile(ObjectDeleteMixin, RESTObject):
54
54
  def download(
55
55
  self,
56
56
  streamed: Literal[True] = True,
57
- action: Optional[Callable[[bytes], None]] = None,
57
+ action: Optional[Callable[[bytes], Any]] = None,
58
58
  chunk_size: int = 1024,
59
59
  *,
60
60
  iterator: Literal[False] = False,
@@ -66,7 +66,7 @@ class ProjectSecureFile(ObjectDeleteMixin, RESTObject):
66
66
  def download(
67
67
  self,
68
68
  streamed: bool = False,
69
- action: Optional[Callable[[bytes], None]] = None,
69
+ action: Optional[Callable[[bytes], Any]] = None,
70
70
  chunk_size: int = 1024,
71
71
  *,
72
72
  iterator: bool = False,
@@ -61,7 +61,7 @@ class Snippet(UserAgentDetailMixin, SaveMixin, ObjectDeleteMixin, RESTObject):
61
61
  def content(
62
62
  self,
63
63
  streamed: Literal[True] = True,
64
- action: Optional[Callable[[bytes], None]] = None,
64
+ action: Optional[Callable[[bytes], Any]] = None,
65
65
  chunk_size: int = 1024,
66
66
  *,
67
67
  iterator: Literal[False] = False,
@@ -237,7 +237,7 @@ class ProjectSnippet(UserAgentDetailMixin, SaveMixin, ObjectDeleteMixin, RESTObj
237
237
  def content(
238
238
  self,
239
239
  streamed: Literal[True] = True,
240
- action: Optional[Callable[[bytes], None]] = None,
240
+ action: Optional[Callable[[bytes], Any]] = None,
241
241
  chunk_size: int = 1024,
242
242
  *,
243
243
  iterator: Literal[False] = False,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: python-gitlab
3
- Version: 5.4.0
3
+ Version: 5.6.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>
@@ -81,6 +81,7 @@ docs/gl_objects/protected_branches.rst
81
81
  docs/gl_objects/protected_container_repositories.rst
82
82
  docs/gl_objects/protected_environments.rst
83
83
  docs/gl_objects/protected_packages.rst
84
+ docs/gl_objects/pull_mirror.rst
84
85
  docs/gl_objects/releases.rst
85
86
  docs/gl_objects/remote_mirrors.rst
86
87
  docs/gl_objects/repositories.rst
@@ -307,6 +308,7 @@ tests/unit/objects/test_deployments.py
307
308
  tests/unit/objects/test_draft_notes.py
308
309
  tests/unit/objects/test_environments.py
309
310
  tests/unit/objects/test_group_access_tokens.py
311
+ tests/unit/objects/test_group_merge_request_approvals.py
310
312
  tests/unit/objects/test_groups.py
311
313
  tests/unit/objects/test_hooks.py
312
314
  tests/unit/objects/test_invitations.py
@@ -330,6 +332,7 @@ tests/unit/objects/test_project_import_export.py
330
332
  tests/unit/objects/test_project_merge_request_approvals.py
331
333
  tests/unit/objects/test_project_statistics.py
332
334
  tests/unit/objects/test_projects.py
335
+ tests/unit/objects/test_pull_mirror.py
333
336
  tests/unit/objects/test_registry_protection_rules.py
334
337
  tests/unit/objects/test_registry_repositories.py
335
338
  tests/unit/objects/test_releases.py
@@ -50,7 +50,7 @@ def test_project_import_export(gl, project, temp_dir):
50
50
  raise Exception("Project export taking too much time")
51
51
 
52
52
  with open(temp_dir / "gitlab-export.tgz", "wb") as f:
53
- export.download(streamed=True, action=f.write) # type: ignore[call-overload]
53
+ export.download(streamed=True, action=f.write)
54
54
 
55
55
  output = gl.projects.import_project(
56
56
  open(temp_dir / "gitlab-export.tgz", "rb"),
@@ -310,6 +310,24 @@ def test_project_remote_mirrors(project):
310
310
  mirror.delete()
311
311
 
312
312
 
313
+ def test_project_pull_mirrors(project):
314
+ mirror_url = "https://gitlab.example.com/root/mirror.git"
315
+
316
+ mirror = project.pull_mirror.create({"url": mirror_url})
317
+ assert mirror.url == mirror_url
318
+
319
+ mirror.enabled = True
320
+ mirror.save()
321
+
322
+ mirror = project.pull_mirror.get()
323
+ assert isinstance(mirror, gitlab.v4.objects.ProjectPullMirror)
324
+ assert mirror.url == mirror_url
325
+ assert mirror.enabled is True
326
+
327
+ mirror.enabled = False
328
+ mirror.save()
329
+
330
+
313
331
  def test_project_services(project):
314
332
  # Use 'update' to create a service as we don't have a 'create' method and
315
333
  # to add one is somewhat complicated so it hasn't been done yet.