gitlabform 5.3.0__tar.gz → 5.5.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 (274) hide show
  1. gitlabform-5.5.0/.coveragerc +15 -0
  2. gitlabform-5.5.0/.dockerignore +46 -0
  3. gitlabform-5.5.0/.git-blame-ignore-revs +4 -0
  4. gitlabform-5.5.0/.github/CODEOWNERS +1 -0
  5. gitlabform-5.5.0/.github/ISSUE_TEMPLATE/bug_report.md +20 -0
  6. gitlabform-5.5.0/.github/ISSUE_TEMPLATE/feature_request.md +10 -0
  7. gitlabform-5.5.0/.github/ISSUE_TEMPLATE/question-or-other-issue.md +10 -0
  8. gitlabform-5.5.0/.github/actions/setup-uv-local/README.md +42 -0
  9. gitlabform-5.5.0/.github/actions/setup-uv-local/action.yml +30 -0
  10. gitlabform-5.5.0/.github/dependabot.yml +52 -0
  11. gitlabform-5.5.0/.github/workflows/_main.yml +48 -0
  12. gitlabform-5.5.0/.github/workflows/_releases.yml +160 -0
  13. gitlabform-5.5.0/.github/workflows/docs.yml +28 -0
  14. gitlabform-5.5.0/.github/workflows/linters.yml +67 -0
  15. gitlabform-5.5.0/.github/workflows/pr_on_fork.yml +29 -0
  16. gitlabform-5.5.0/.github/workflows/pr_on_main_repo.yml +29 -0
  17. gitlabform-5.5.0/.github/workflows/prs.yml +144 -0
  18. gitlabform-5.5.0/.github/workflows/tests-premium.yml +56 -0
  19. gitlabform-5.5.0/.github/workflows/tests-standard.yml +176 -0
  20. gitlabform-5.5.0/.github/workflows/tests-ultimate.yml +59 -0
  21. gitlabform-5.5.0/.gitignore +74 -0
  22. gitlabform-5.5.0/.lgtm.yml +7 -0
  23. gitlabform-5.5.0/.mypy.ini +35 -0
  24. gitlabform-5.5.0/.overrides/gitlabform-logo-favicon.png +0 -0
  25. gitlabform-5.5.0/.overrides/gitlabform-logo-favicon.svg +208 -0
  26. gitlabform-5.5.0/.python-version +1 -0
  27. gitlabform-5.5.0/CONTRIBUTING.md +1 -0
  28. gitlabform-5.5.0/Dockerfile +35 -0
  29. {gitlabform-5.3.0 → gitlabform-5.5.0}/PKG-INFO +15 -32
  30. gitlabform-5.5.0/codecov.yml +29 -0
  31. gitlabform-5.5.0/dev/__init__.py +1 -0
  32. gitlabform-5.5.0/dev/common.py +70 -0
  33. gitlabform-5.5.0/dev/docs.py +23 -0
  34. gitlabform-5.5.0/dev/env.py +37 -0
  35. gitlabform-5.5.0/dev/gitlab/await-healthy.sh +16 -0
  36. gitlabform-5.5.0/dev/gitlab/gitlab.rb +41 -0
  37. gitlabform-5.5.0/dev/gitlab/healthcheck-and-setup.sh +42 -0
  38. gitlabform-5.5.0/dev/gitlab/run_gitlab_in_docker.sh +236 -0
  39. gitlabform-5.5.0/dev/gitlab/tests.Dockerfile +9 -0
  40. gitlabform-5.5.0/dev/infra.py +56 -0
  41. gitlabform-5.5.0/dev/main.py +316 -0
  42. gitlabform-5.5.0/dev/qa.py +77 -0
  43. gitlabform-5.5.0/dev/release.py +126 -0
  44. gitlabform-5.5.0/docs/automation.md +117 -0
  45. gitlabform-5.5.0/docs/changelog.md +1467 -0
  46. gitlabform-5.5.0/docs/contrib/coding_guidelines.md +14 -0
  47. gitlabform-5.5.0/docs/contrib/implementation_design.md +131 -0
  48. gitlabform-5.5.0/docs/contrib/index.md +45 -0
  49. gitlabform-5.5.0/docs/contrib/local_development.md +264 -0
  50. gitlabform-5.5.0/docs/contrib/releases.md +23 -0
  51. gitlabform-5.5.0/docs/contrib/workflows.md +21 -0
  52. gitlabform-5.5.0/docs/features.md +46 -0
  53. gitlabform-5.5.0/docs/images/egnyte-logo.svg +7 -0
  54. gitlabform-5.5.0/docs/images/elastic-path-logo.svg +20 -0
  55. gitlabform-5.5.0/docs/images/gitlabform-logo-square.png +0 -0
  56. gitlabform-5.5.0/docs/images/gitlabform-logo.png +0 -0
  57. gitlabform-5.5.0/docs/images/gitlabform-logo.svg +288 -0
  58. gitlabform-5.5.0/docs/images/group-ldap-links-provider.png +0 -0
  59. gitlabform-5.5.0/docs/images/liquidlight-logo.svg +1 -0
  60. gitlabform-5.5.0/docs/images/roche-logo.png +0 -0
  61. gitlabform-5.5.0/docs/images/stroeer-online-marketing-logo.svg +1 -0
  62. gitlabform-5.5.0/docs/index.md +126 -0
  63. gitlabform-5.5.0/docs/installation.md +44 -0
  64. gitlabform-5.5.0/docs/reference/archive_unarchive.md +18 -0
  65. gitlabform-5.5.0/docs/reference/avatar.md +43 -0
  66. gitlabform-5.5.0/docs/reference/badges.md +52 -0
  67. gitlabform-5.5.0/docs/reference/ci_cd_variables.md +119 -0
  68. gitlabform-5.5.0/docs/reference/deploy_keys.md +41 -0
  69. gitlabform-5.5.0/docs/reference/files.md +96 -0
  70. gitlabform-5.5.0/docs/reference/group_ldap_links.md +36 -0
  71. gitlabform-5.5.0/docs/reference/group_saml_links.md +33 -0
  72. gitlabform-5.5.0/docs/reference/index.md +336 -0
  73. gitlabform-5.5.0/docs/reference/integrations.md +24 -0
  74. gitlabform-5.5.0/docs/reference/job_token_scope.md +46 -0
  75. gitlabform-5.5.0/docs/reference/labels.md +66 -0
  76. gitlabform-5.5.0/docs/reference/members.md +138 -0
  77. gitlabform-5.5.0/docs/reference/merge_requests.md +124 -0
  78. gitlabform-5.5.0/docs/reference/pipeline_schedules.md +98 -0
  79. gitlabform-5.5.0/docs/reference/project_security_settings.md +21 -0
  80. gitlabform-5.5.0/docs/reference/project_transfer.md +95 -0
  81. gitlabform-5.5.0/docs/reference/protected_branches.md +151 -0
  82. gitlabform-5.5.0/docs/reference/protected_environments.md +32 -0
  83. gitlabform-5.5.0/docs/reference/push_mirrors.md +179 -0
  84. gitlabform-5.5.0/docs/reference/push_rules.md +45 -0
  85. gitlabform-5.5.0/docs/reference/resource_groups.md +32 -0
  86. gitlabform-5.5.0/docs/reference/settings.md +105 -0
  87. gitlabform-5.5.0/docs/reference/tags_protection.md +68 -0
  88. gitlabform-5.5.0/docs/reference/webhooks.md +81 -0
  89. gitlabform-5.5.0/docs/requirements.md +16 -0
  90. gitlabform-5.5.0/docs/running.md +75 -0
  91. gitlabform-5.5.0/docs/similar_apps.md +49 -0
  92. gitlabform-5.5.0/docs/upgrade.md +203 -0
  93. gitlabform-5.5.0/gitlab-config/config.yml +9 -0
  94. gitlabform-5.5.0/gitlab-config/gitlab-config.md +11 -0
  95. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/configuration/groups.py +1 -2
  96. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/group/__init__.py +4 -0
  97. gitlabform-5.5.0/gitlabform/processors/group/group_protected_branches_processor.py +146 -0
  98. gitlabform-5.5.0/gitlabform/processors/project/branches_processor.py +277 -0
  99. gitlabform-5.5.0/gitlabform/processors/util/branch_protection.py +263 -0
  100. gitlabform-5.5.0/mkdocs.yml +93 -0
  101. gitlabform-5.5.0/prek.toml +18 -0
  102. gitlabform-5.5.0/pyproject.toml +151 -0
  103. gitlabform-5.5.0/tbump.toml +45 -0
  104. gitlabform-5.5.0/tests/__init__.py +0 -0
  105. gitlabform-5.5.0/tests/acceptance/__init__.py +366 -0
  106. gitlabform-5.5.0/tests/acceptance/conftest.py +538 -0
  107. gitlabform-5.5.0/tests/acceptance/premium/test_branches.py +667 -0
  108. gitlabform-5.5.0/tests/acceptance/premium/test_branches_users_case_insensitive.py +63 -0
  109. gitlabform-5.5.0/tests/acceptance/premium/test_group_ldap_links.py +122 -0
  110. gitlabform-5.5.0/tests/acceptance/premium/test_group_protected_branches.py +152 -0
  111. gitlabform-5.5.0/tests/acceptance/premium/test_group_push_rules.py +44 -0
  112. gitlabform-5.5.0/tests/acceptance/premium/test_group_saml_links.py +85 -0
  113. gitlabform-5.5.0/tests/acceptance/premium/test_group_settings.py +22 -0
  114. gitlabform-5.5.0/tests/acceptance/premium/test_group_variables.py +383 -0
  115. gitlabform-5.5.0/tests/acceptance/premium/test_merge_request_approval_rules.py +548 -0
  116. gitlabform-5.5.0/tests/acceptance/premium/test_merge_request_approvals_settings.py +59 -0
  117. gitlabform-5.5.0/tests/acceptance/premium/test_protected_environments.py +231 -0
  118. gitlabform-5.5.0/tests/acceptance/premium/test_push_rules.py +90 -0
  119. gitlabform-5.5.0/tests/acceptance/premium/test_tags.py +238 -0
  120. gitlabform-5.5.0/tests/acceptance/standard/__init__.py +0 -0
  121. gitlabform-5.5.0/tests/acceptance/standard/test_application_settings.py +91 -0
  122. gitlabform-5.5.0/tests/acceptance/standard/test_archive_project.py +88 -0
  123. gitlabform-5.5.0/tests/acceptance/standard/test_badges.py +164 -0
  124. gitlabform-5.5.0/tests/acceptance/standard/test_branches.py +403 -0
  125. gitlabform-5.5.0/tests/acceptance/standard/test_deploy_keys.py +216 -0
  126. gitlabform-5.5.0/tests/acceptance/standard/test_deploy_keys_all_projects.py +37 -0
  127. gitlabform-5.5.0/tests/acceptance/standard/test_files.py +458 -0
  128. gitlabform-5.5.0/tests/acceptance/standard/test_files_templates.py +94 -0
  129. gitlabform-5.5.0/tests/acceptance/standard/test_group_avatar.py +294 -0
  130. gitlabform-5.5.0/tests/acceptance/standard/test_group_badges.py +125 -0
  131. gitlabform-5.5.0/tests/acceptance/standard/test_group_hooks.py +252 -0
  132. gitlabform-5.5.0/tests/acceptance/standard/test_group_labels.py +338 -0
  133. gitlabform-5.5.0/tests/acceptance/standard/test_group_members_case_insensitive.py +111 -0
  134. gitlabform-5.5.0/tests/acceptance/standard/test_group_members_groups.py +248 -0
  135. gitlabform-5.5.0/tests/acceptance/standard/test_group_members_users.py +284 -0
  136. gitlabform-5.5.0/tests/acceptance/standard/test_group_settings.py +33 -0
  137. gitlabform-5.5.0/tests/acceptance/standard/test_group_variables.py +423 -0
  138. gitlabform-5.5.0/tests/acceptance/standard/test_hooks.py +261 -0
  139. gitlabform-5.5.0/tests/acceptance/standard/test_integrations.py +278 -0
  140. gitlabform-5.5.0/tests/acceptance/standard/test_job_token_scope.py +446 -0
  141. gitlabform-5.5.0/tests/acceptance/standard/test_members.py +102 -0
  142. gitlabform-5.5.0/tests/acceptance/standard/test_members_add_group.py +59 -0
  143. gitlabform-5.5.0/tests/acceptance/standard/test_members_enforce.py +78 -0
  144. gitlabform-5.5.0/tests/acceptance/standard/test_project_avatar.py +296 -0
  145. gitlabform-5.5.0/tests/acceptance/standard/test_project_group_members_case_insensitive.py +60 -0
  146. gitlabform-5.5.0/tests/acceptance/standard/test_project_labels.py +167 -0
  147. gitlabform-5.5.0/tests/acceptance/standard/test_project_members_case_insensitve.py +114 -0
  148. gitlabform-5.5.0/tests/acceptance/standard/test_project_settings.py +142 -0
  149. gitlabform-5.5.0/tests/acceptance/standard/test_project_variables.py +525 -0
  150. gitlabform-5.5.0/tests/acceptance/standard/test_remote_mirrors.py +831 -0
  151. gitlabform-5.5.0/tests/acceptance/standard/test_resource_groups.py +116 -0
  152. gitlabform-5.5.0/tests/acceptance/standard/test_running.py +99 -0
  153. gitlabform-5.5.0/tests/acceptance/standard/test_scheduled_for_deletion_project.py +44 -0
  154. gitlabform-5.5.0/tests/acceptance/standard/test_schedules.py +428 -0
  155. gitlabform-5.5.0/tests/acceptance/standard/test_tags.py +175 -0
  156. gitlabform-5.5.0/tests/acceptance/standard/test_token_from_config.py +40 -0
  157. gitlabform-5.5.0/tests/acceptance/standard/test_transfer_project.py +349 -0
  158. gitlabform-5.5.0/tests/acceptance/ultimate/test_group_members.py +129 -0
  159. gitlabform-5.5.0/tests/acceptance/ultimate/test_group_settings.py +44 -0
  160. gitlabform-5.5.0/tests/acceptance/ultimate/test_members.py +201 -0
  161. gitlabform-5.5.0/tests/acceptance/ultimate/test_project_security_settings.py +32 -0
  162. gitlabform-5.5.0/tests/acceptance/ultimate/test_project_settings.py +70 -0
  163. gitlabform-5.5.0/tests/unit/__init__.py +0 -0
  164. gitlabform-5.5.0/tests/unit/configuration/__init__.py +0 -0
  165. gitlabform-5.5.0/tests/unit/configuration/test_case_sensitivity.py +94 -0
  166. gitlabform-5.5.0/tests/unit/configuration/test_inheritance_break_projects_and_groups.py +233 -0
  167. gitlabform-5.5.0/tests/unit/configuration/test_inheritance_break_subgroups.py +136 -0
  168. gitlabform-5.5.0/tests/unit/configuration/test_inheritance_break_validation.py +126 -0
  169. gitlabform-5.5.0/tests/unit/configuration/test_projects_and_groups.py +141 -0
  170. gitlabform-5.5.0/tests/unit/configuration/test_skip_groups_skip_projects.py +101 -0
  171. gitlabform-5.5.0/tests/unit/configuration/test_subgroups.py +116 -0
  172. gitlabform-5.5.0/tests/unit/configuration/test_yaml_version.py +36 -0
  173. gitlabform-5.5.0/tests/unit/configuration/transform/test_access_level_transformer.py +205 -0
  174. gitlabform-5.5.0/tests/unit/configuration/transform/test_group_transformer.py +50 -0
  175. gitlabform-5.5.0/tests/unit/configuration/transform/test_implicit_name_transformer.py +50 -0
  176. gitlabform-5.5.0/tests/unit/configuration/transform/test_user_and_group_transformers.py +80 -0
  177. gitlabform-5.5.0/tests/unit/configuration/transform/test_user_transformer.py +99 -0
  178. gitlabform-5.5.0/tests/unit/gitlab/test_core.py +130 -0
  179. gitlabform-5.5.0/tests/unit/gitlab/test_python_gitlab.py +234 -0
  180. gitlabform-5.5.0/tests/unit/processors/__init__.py +0 -0
  181. gitlabform-5.5.0/tests/unit/processors/test_abstract_processor.py +35 -0
  182. gitlabform-5.5.0/tests/unit/processors/test_abstract_processors.py +69 -0
  183. gitlabform-5.5.0/tests/unit/processors/test_branches_processor.py +213 -0
  184. gitlabform-5.5.0/tests/unit/processors/test_difference_logger.py +71 -0
  185. gitlabform-5.5.0/tests/unit/processors/test_group_protected_branches_processor.py +283 -0
  186. gitlabform-5.5.0/tests/unit/processors/test_schedules_processor_extended_cron_pattern.py +37 -0
  187. gitlabform-5.5.0/tests/unit/test_access_levels.py +19 -0
  188. gitlabform-5.5.0/tests/unit/test_non_empty_configs_provider.py +29 -0
  189. gitlabform-5.5.0/tests/unit/test_parse_args.py +43 -0
  190. gitlabform-5.5.0/tests/unit/test_projects_provider.py +309 -0
  191. gitlabform-5.5.0/tests/unit/test_utils.py +20 -0
  192. gitlabform-5.5.0/uv.lock +2357 -0
  193. gitlabform-5.3.0/gitlabform/processors/project/branches_processor.py +0 -514
  194. gitlabform-5.3.0/gitlabform.egg-info/PKG-INFO +0 -71
  195. gitlabform-5.3.0/gitlabform.egg-info/SOURCES.txt +0 -83
  196. gitlabform-5.3.0/gitlabform.egg-info/dependency_links.txt +0 -1
  197. gitlabform-5.3.0/gitlabform.egg-info/entry_points.txt +0 -2
  198. gitlabform-5.3.0/gitlabform.egg-info/requires.txt +0 -31
  199. gitlabform-5.3.0/gitlabform.egg-info/top_level.txt +0 -1
  200. gitlabform-5.3.0/pyproject.toml +0 -88
  201. gitlabform-5.3.0/setup.cfg +0 -4
  202. {gitlabform-5.3.0 → gitlabform-5.5.0}/LICENSE +0 -0
  203. {gitlabform-5.3.0 → gitlabform-5.5.0}/README.md +0 -0
  204. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/__init__.py +0 -0
  205. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/configuration/__init__.py +0 -0
  206. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/configuration/common.py +0 -0
  207. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/configuration/core.py +0 -0
  208. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/configuration/projects.py +0 -0
  209. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/configuration/transform.py +0 -0
  210. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/constants.py +0 -0
  211. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/gitlab/__init__.py +0 -0
  212. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/gitlab/commits.py +0 -0
  213. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/gitlab/core.py +0 -0
  214. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/gitlab/group_badges.py +0 -0
  215. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/gitlab/group_ldap_links.py +0 -0
  216. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/gitlab/groups.py +0 -0
  217. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/gitlab/merge_requests.py +0 -0
  218. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/gitlab/pipelines.py +0 -0
  219. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/gitlab/project_badges.py +0 -0
  220. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/gitlab/project_deploy_keys.py +0 -0
  221. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/gitlab/project_merge_requests_approvals.py +0 -0
  222. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/gitlab/project_protected_environments.py +0 -0
  223. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/gitlab/projects.py +0 -0
  224. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/gitlab/python_gitlab.py +0 -0
  225. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/gitlab/variables.py +0 -0
  226. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/lists/__init__.py +0 -0
  227. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/lists/filter.py +0 -0
  228. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/lists/groups.py +0 -0
  229. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/lists/projects.py +0 -0
  230. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/output.py +0 -0
  231. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/__init__.py +0 -0
  232. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/abstract_processor.py +0 -0
  233. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/application/__init__.py +0 -0
  234. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/application/application_settings_processor.py +0 -0
  235. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/defining_keys.py +0 -0
  236. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/group/group_badges_processor.py +0 -0
  237. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/group/group_hooks_processor.py +0 -0
  238. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/group/group_labels_processor.py +0 -0
  239. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/group/group_ldap_links_processor.py +0 -0
  240. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/group/group_members_processor.py +0 -0
  241. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/group/group_push_rules_processor.py +0 -0
  242. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/group/group_saml_links_processor.py +0 -0
  243. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/group/group_settings_processor.py +0 -0
  244. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/group/group_variables_processor.py +0 -0
  245. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/multiple_entities_processor.py +0 -0
  246. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/project/__init__.py +0 -0
  247. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/project/badges_processor.py +0 -0
  248. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/project/deploy_keys_processor.py +0 -0
  249. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/project/files_processor.py +0 -0
  250. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/project/hooks_processor.py +0 -0
  251. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/project/integrations_processor.py +0 -0
  252. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/project/job_token_scope_processor.py +0 -0
  253. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/project/members_processor.py +0 -0
  254. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/project/merge_requests_approval_rules.py +0 -0
  255. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/project/merge_requests_approvals.py +0 -0
  256. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/project/project_labels_processor.py +0 -0
  257. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/project/project_processor.py +0 -0
  258. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/project/project_push_rules_processor.py +0 -0
  259. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/project/project_security_settings.py +0 -0
  260. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/project/project_settings_processor.py +0 -0
  261. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/project/project_variables_processor.py +0 -0
  262. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/project/remote_mirrors_processor.py +0 -0
  263. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/project/resource_groups_processor.py +0 -0
  264. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/project/schedules_processor.py +0 -0
  265. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/project/tags_processor.py +0 -0
  266. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/shared/__init__.py +0 -0
  267. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/shared/protected_environments_processor.py +0 -0
  268. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/util/__init__.py +0 -0
  269. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/util/decorators.py +0 -0
  270. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/util/difference_logger.py +0 -0
  271. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/util/labels_processor.py +0 -0
  272. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/processors/util/variables_processor.py +0 -0
  273. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/run.py +0 -0
  274. {gitlabform-5.3.0 → gitlabform-5.5.0}/gitlabform/util.py +0 -0
@@ -0,0 +1,15 @@
1
+ [run]
2
+ source =
3
+ gitlabform
4
+
5
+ omit =
6
+ # don't check the test themselves, obviously
7
+ tests/*
8
+
9
+ # no point in checking this
10
+ setup.py
11
+
12
+ [report]
13
+ exclude_also =
14
+ \s*debug\(.*\)
15
+ \s*fatal\(.*\)
@@ -0,0 +1,46 @@
1
+ # Git
2
+ .git
3
+ .gitignore
4
+ .git-blame-ignore-revs
5
+
6
+ # Docker
7
+ .dockerignore
8
+ Dockerfile
9
+
10
+ # Python cache and artifacts
11
+ *.pyc
12
+ __pycache__/
13
+ *.egg-info
14
+ .mypy_cache/
15
+ .pytest_cache/
16
+
17
+ # Test, dev, and local environments
18
+ tests/
19
+ dev/
20
+ venv/
21
+ .venv/
22
+
23
+ # Documentation
24
+ docs/
25
+ .overrides/
26
+ mkdocs.yml
27
+ *.txt
28
+ *.md
29
+
30
+ # CI/CD and project config
31
+ .github/
32
+ .pre-commit-config.yaml
33
+ .coveragerc
34
+ codecov.yml
35
+ .lgtm.yml
36
+ .mypy.ini
37
+ coverage.xml
38
+ tbump.toml
39
+
40
+ # Editor/IDE config
41
+ .idea/
42
+ .vscode/
43
+ .cursor/
44
+
45
+ # Exceptions
46
+ !README.md
@@ -0,0 +1,4 @@
1
+ # Migrate code style to Black
2
+ c4ee3944829eda31699d63f55afc2d1a174fc12c
3
+ # Reformat to the latest version of Black with 120 chars per line
4
+ 7915da0bee431bdbddbcb47bde947161adb95148
@@ -0,0 +1 @@
1
+ * @amimas @gdubicki @jimisola @TimKnight-DWP
@@ -0,0 +1,20 @@
1
+ ---
2
+ name: Bug report
3
+ about: Create a report to help us improve
4
+ title: ''
5
+ labels: bug
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ **Describe the bug**
11
+
12
+ A clear and concise description of what the bug is.
13
+
14
+ **GitLabForm version**
15
+
16
+ Output of `gitlabform -V`
17
+
18
+ **GitLab version**
19
+
20
+ F.e. `13.12.4-ee`
@@ -0,0 +1,10 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest an idea for this project
4
+ title: ''
5
+ labels: enhancement
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ A clear and concise description of what you want to happen.
@@ -0,0 +1,10 @@
1
+ ---
2
+ name: Question or other issue
3
+ about: Non-bug and non-feature requests go here :)
4
+ title: ''
5
+ labels: ''
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ Write whatever you like :)
@@ -0,0 +1,42 @@
1
+ # Setup uv Local
2
+
3
+ This internal composite action centrally manages the installation of `uv` and configures the environment variables required for the project's toolchain.
4
+
5
+ ## Purpose
6
+
7
+ Instead of repeating installation scripts and version pinning in every workflow file, this action provides a single source of truth for:
8
+ - The pinned `uv` version (currently `0.11.7`).
9
+ - Option to set the Python version used in CI job.
10
+ - Cross-platform installation logic (handling both Unix and Windows runners).
11
+
12
+ ## Inputs
13
+
14
+ | Name | Description | Default | Required |
15
+ | :--- | :--- | :--- | :--- |
16
+ | `python-version` | The Python version to use (e.g., `3.12`, `3.14`). | `3.14` | No |
17
+
18
+ ## Environment Variables Set
19
+
20
+ This action exports the following variables to the `$GITHUB_ENV`, making them available to all subsequent steps in the job:
21
+ - `UV_PYTHON`: The version of Python `uv` should use for toolchain management.
22
+ - `UV_VERSION`: The pinned version of `uv` installed.
23
+
24
+ ## Usage
25
+
26
+ To use this action in a workflow, reference it by its local path:
27
+
28
+ ```yaml
29
+ jobs:
30
+ my-job:
31
+ runs-on: ubuntu-latest
32
+ steps:
33
+ - uses: actions/checkout@v6
34
+
35
+ - name: Configure uv environment
36
+ uses: ./.github/actions/setup-uv-local
37
+ with:
38
+ python-version: '3.12'
39
+
40
+ - name: Install dependencies
41
+ run: uv sync
42
+ ```
@@ -0,0 +1,30 @@
1
+ name: 'Setup uv Local'
2
+ description: 'Centrally manages uv installation and versioning'
3
+ inputs:
4
+ python-version:
5
+ description: 'Python version to use. Defaults to 3.14 if not provided.'
6
+ required: false
7
+ default: '3.14'
8
+ runs:
9
+ using: 'composite'
10
+ steps:
11
+ - name: Export UV_PYTHON to environment
12
+ shell: bash
13
+ run: |
14
+ echo "UV_PYTHON=${{ inputs.python-version }}" >> $GITHUB_ENV
15
+ echo "UV_VERSION=0.11.7" >> $GITHUB_ENV
16
+
17
+ - name: Install uv (Unix)
18
+ if: runner.os != 'Windows'
19
+ shell: bash
20
+ run: |
21
+ curl -LsSf https://astral.sh/uv/${{ env.UV_VERSION }}/install.sh | sh
22
+ echo "$HOME/.local/bin" >> $GITHUB_PATH
23
+
24
+ - name: Install uv (Windows)
25
+ if: runner.os == 'Windows'
26
+ shell: pwsh
27
+ run: |
28
+ $env:UV_VERSION = "${{ env.UV_VERSION }}"
29
+ irm https://astral.sh/uv/install.ps1 | iex
30
+ echo "$HOME\.local\bin" >> $env:GITHUB_PATH
@@ -0,0 +1,52 @@
1
+ # To get started with Dependabot version updates, you'll need to specify which
2
+ # package ecosystems to update and where the package manifests are located.
3
+ # Please see the documentation for all configuration options:
4
+ # https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
5
+
6
+ version: 2
7
+ updates:
8
+ - package-ecosystem: "docker"
9
+ directory: "/"
10
+ schedule:
11
+ interval: "weekly"
12
+ - package-ecosystem: "github-actions"
13
+ directory: "/"
14
+ schedule:
15
+ interval: "monthly"
16
+ - package-ecosystem: "uv"
17
+ directory: "/"
18
+ schedule:
19
+ interval: "weekly"
20
+ groups:
21
+ # Group dependencies by their type (testing, linting, documentation, release tools)
22
+ # to avoid overwhelming PRs and to allow for more focused updates.
23
+ # The patterns are based on the names of the dependencies as they appear in the pyproject.toml file
24
+ # and how they are grouped in the uv configuration.
25
+ # Dependencies that match the patterns will be grouped together in the same PR.
26
+ testing:
27
+ patterns:
28
+ - "pytest*"
29
+ - "coverage"
30
+ - "cryptography"
31
+ - "deepdiff"
32
+ - "xkcdpass"
33
+ linting:
34
+ patterns:
35
+ - "bandit"
36
+ - "black"
37
+ - "codespell"
38
+ - "mypy*"
39
+ - "ruff"
40
+ - "types-*"
41
+ documentation:
42
+ patterns:
43
+ - "markdown*"
44
+ - "mkdocs*"
45
+ - "pygments"
46
+ - "pymdown-extensions"
47
+ release-tools:
48
+ patterns:
49
+ - "check-wheel-contents"
50
+ - "twine"
51
+ - "commitizen"
52
+ - "prek"
@@ -0,0 +1,48 @@
1
+ name: Main branch
2
+
3
+ permissions:
4
+ actions: read
5
+ checks: read
6
+ contents: read
7
+ discussions: write
8
+ statuses: write
9
+
10
+ concurrency:
11
+ group: ${{github.workflow}}-${{ github.ref }}
12
+ cancel-in-progress: true
13
+
14
+ on:
15
+ push:
16
+ branches:
17
+ - main
18
+
19
+ jobs:
20
+
21
+ build-docs:
22
+ uses: ./.github/workflows/docs.yml
23
+ with:
24
+ BRANCH_REF: ${{ github.ref }}
25
+
26
+ linters:
27
+ uses: ./.github/workflows/linters.yml
28
+ with:
29
+ BRANCH_REF: ${{ github.ref }}
30
+
31
+ tests-standard:
32
+ uses: ./.github/workflows/tests-standard.yml
33
+ with:
34
+ BRANCH_REF: ${{ github.ref }}
35
+
36
+ tests-premium:
37
+ uses: ./.github/workflows/tests-premium.yml
38
+ with:
39
+ BRANCH_REF: ${{ github.ref }}
40
+ environment: Main Tests
41
+ secrets: inherit
42
+
43
+ tests-ultimate:
44
+ uses: ./.github/workflows/tests-ultimate.yml
45
+ with:
46
+ BRANCH_REF: ${{ github.ref }}
47
+ environment: Main Tests
48
+ secrets: inherit
@@ -0,0 +1,160 @@
1
+ name: Releases
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*'
7
+
8
+ permissions:
9
+ contents: write
10
+ packages: write
11
+
12
+ jobs:
13
+
14
+ linters:
15
+ uses: ./.github/workflows/linters.yml
16
+ with:
17
+ BRANCH_REF: ${{ github.ref }}
18
+
19
+ tests-standard:
20
+ uses: ./.github/workflows/tests-standard.yml
21
+ with:
22
+ BRANCH_REF: ${{ github.ref }}
23
+
24
+ tests-premium:
25
+ uses: ./.github/workflows/tests-premium.yml
26
+ with:
27
+ BRANCH_REF: ${{ github.ref }}
28
+ environment: Main Tests
29
+ secrets: inherit
30
+
31
+ tests-ultimate:
32
+ uses: ./.github/workflows/tests-ultimate.yml
33
+ with:
34
+ BRANCH_REF: ${{ github.ref }}
35
+ environment: Main Tests
36
+ secrets: inherit
37
+
38
+ publish-docs:
39
+ needs:
40
+ - linters
41
+ - tests-standard
42
+ - tests-premium
43
+ - tests-ultimate
44
+ runs-on: ubuntu-latest
45
+ steps:
46
+ - uses: actions/checkout@v6
47
+ with:
48
+ ref: ${{ github.ref }}
49
+ fetch-depth: 2
50
+ - name: Configure uv environment
51
+ uses: ./.github/actions/setup-uv-local
52
+ - name: Setup Python ${{ env.UV_PYTHON }} and install dependencies
53
+ run: |
54
+ uv sync --frozen --no-dev --group docs
55
+ - name: Build docs
56
+ run: |
57
+ uv run --no-sync docs build
58
+ - name: Deploy 🚀
59
+ uses: JamesIves/github-pages-deploy-action@v4.8.0
60
+ with:
61
+ branch: gh-pages
62
+ folder: site
63
+
64
+ publish-to-github:
65
+ needs:
66
+ - linters
67
+ - tests-standard
68
+ - tests-premium
69
+ - tests-ultimate
70
+ runs-on: ubuntu-latest
71
+ steps:
72
+ - name: Create release in GitHub
73
+ uses: ncipollo/release-action@v1
74
+ with:
75
+ name: ${{ github.ref }}
76
+ body: "(this is a placeholder, it will be replaced with a changelog contents)"
77
+ # This token is provided by Actions, you do not need to create your own token
78
+ token: ${{ secrets.GITHUB_TOKEN }}
79
+
80
+ publish-to-pypi:
81
+ needs:
82
+ - linters
83
+ - tests-standard
84
+ - tests-premium
85
+ - tests-ultimate
86
+ runs-on: ubuntu-latest
87
+ environment:
88
+ name: pypi
89
+ url: https://pypi.org/p/gitlabform
90
+ permissions:
91
+ id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
92
+ steps:
93
+ - uses: actions/checkout@v6
94
+ with:
95
+ ref: ${{ github.ref }}
96
+ fetch-depth: 2
97
+ - name: Configure uv environment
98
+ uses: ./.github/actions/setup-uv-local
99
+ - name: Setup Python ${{ env.UV_PYTHON }} and install dependencies
100
+ run: |
101
+ uv sync --frozen --no-dev --group release
102
+ - name: Build and verify the package
103
+ run: |
104
+ uv run --no-sync package build
105
+ uv run --no-sync package verify
106
+ - name: Publish to PyPI
107
+ run: |
108
+ uv run --no-sync package publish
109
+
110
+ publish-to-ghcr:
111
+ needs:
112
+ - linters
113
+ - tests-standard
114
+ - tests-premium
115
+ - tests-ultimate
116
+ runs-on: ubuntu-latest
117
+ steps:
118
+ - uses: actions/checkout@v6
119
+ - name: Configure uv environment
120
+ uses: ./.github/actions/setup-uv-local
121
+ - name: Get the version from the tag
122
+ run: echo "VERSION=${GITHUB_REF/refs\/tags\/v/}" >> $GITHUB_ENV
123
+ - name: Wait for PyPI release
124
+ run: |
125
+ uv pip download gitlabform==${{ env.VERSION }} > /dev/null
126
+ while [ $? -ne 0 ]; do sleep 10; uv pip download gitlabform==${{ env.VERSION }} > /dev/null ; done
127
+ shell: bash {0}
128
+ - name: Docker metadata
129
+ id: metadata
130
+ uses: docker/metadata-action@v6
131
+ with:
132
+ images: |
133
+ ghcr.io/gitlabform/gitlabform
134
+ flavor: |
135
+ latest=auto
136
+ tags: |
137
+ type=pep440,pattern={{version}}
138
+ type=pep440,pattern={{major}}.{{minor}}
139
+ type=pep440,pattern={{major}}
140
+ - name: Set up QEMU
141
+ uses: docker/setup-qemu-action@v4
142
+ - name: Set up Docker Buildx
143
+ uses: docker/setup-buildx-action@v4
144
+ # gitlabform/gitlabform image is going to be here
145
+ - name: Login to GitHub Container Registry
146
+ uses: docker/login-action@v4
147
+ with:
148
+ registry: ghcr.io
149
+ username: ${{ github.repository_owner }}
150
+ # This token is provided by Actions, you do not need to create your own token
151
+ password: ${{ secrets.GITHUB_TOKEN }}
152
+ - name: Publish image to registries
153
+ uses: docker/build-push-action@v7
154
+ with:
155
+ push: true
156
+ context: .
157
+ file: Dockerfile
158
+ platforms: linux/amd64,linux/arm64
159
+ tags: ${{ steps.metadata.outputs.tags }}
160
+ labels: ${{ steps.metadata.outputs.labels }}
@@ -0,0 +1,28 @@
1
+ name: Docs
2
+
3
+ on:
4
+ workflow_call:
5
+ inputs:
6
+ BRANCH_REF:
7
+ type: string
8
+ required: true
9
+
10
+ permissions:
11
+ contents: read
12
+
13
+ jobs:
14
+ build-docs:
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - uses: actions/checkout@v6
18
+ with:
19
+ ref: ${{ inputs.BRANCH_REF }}
20
+ fetch-depth: 2
21
+ - name: Configure uv environment
22
+ uses: ./.github/actions/setup-uv-local
23
+ - name: Setup Python ${{ env.UV_PYTHON }} and install dependencies
24
+ run: |
25
+ uv sync --frozen --no-dev --group docs
26
+ - name: Build documentation
27
+ run: |
28
+ uv run --no-sync docs build
@@ -0,0 +1,67 @@
1
+ name: Linters
2
+
3
+ on:
4
+ workflow_call:
5
+ inputs:
6
+ BRANCH_REF:
7
+ type: string
8
+ required: true
9
+
10
+ permissions:
11
+ contents: read
12
+
13
+ jobs:
14
+ black-formatting:
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - uses: actions/checkout@v6
18
+ with:
19
+ ref: ${{ inputs.BRANCH_REF }}
20
+ fetch-depth: 2
21
+ - name: Configure uv environment
22
+ uses: ./.github/actions/setup-uv-local
23
+ - name: Setup Python ${{ env.UV_PYTHON }} and install dependencies
24
+ run: |
25
+ uv sync --frozen --no-dev --group lint
26
+ - name: Run black formatting check
27
+ run: |
28
+ uv run --no-sync qa lint black --check .
29
+
30
+ types:
31
+ runs-on: ubuntu-latest
32
+ strategy:
33
+ max-parallel: 1
34
+ matrix:
35
+ python-version: [3.14]
36
+ fail-fast: false
37
+ steps:
38
+ - uses: actions/checkout@v6
39
+ with:
40
+ ref: ${{ inputs.BRANCH_REF }}
41
+ fetch-depth: 2
42
+ - name: Configure uv environment
43
+ uses: ./.github/actions/setup-uv-local
44
+ with:
45
+ python-version: ${{ matrix.python-version }}
46
+ - name: Setup Python ${{ matrix.python-version }} and install dependencies
47
+ run: |
48
+ uv sync --frozen --no-dev --group lint
49
+ - name: Run mypy
50
+ run: |
51
+ uv run --no-sync qa lint mypy .
52
+
53
+ bandit:
54
+ runs-on: ubuntu-latest
55
+ steps:
56
+ - uses: actions/checkout@v6
57
+ with:
58
+ ref: ${{ inputs.BRANCH_REF }}
59
+ fetch-depth: 2
60
+ - name: Configure uv environment
61
+ uses: ./.github/actions/setup-uv-local
62
+ - name: Setup Python ${{ env.UV_PYTHON }} and install dependencies
63
+ run: |
64
+ uv sync --frozen --no-dev --group lint
65
+ - name: Run bandit
66
+ run: |
67
+ uv run --no-sync qa lint bandit .
@@ -0,0 +1,29 @@
1
+ name: Linter and tests (PRs raised from Forks)
2
+
3
+ permissions:
4
+ actions: read
5
+ contents: read
6
+ pull-requests: write
7
+ concurrency:
8
+ group: ${{github.workflow}}-${{ github.event.pull_request.number }}
9
+ cancel-in-progress: true
10
+
11
+ on:
12
+ pull_request_target:
13
+ branches:
14
+ - main
15
+
16
+ jobs:
17
+ pr_jobs:
18
+ # github.event.pull_request object defined here: https://docs.github.com/en/rest/pulls/pulls?apiVersion=2026-03-10#get-a-pull-request
19
+ if: ${{ github.event.pull_request.head.repo.full_name != 'gitlabform/gitlabform' }}
20
+ uses: ./.github/workflows/prs.yml
21
+ permissions:
22
+ actions: read
23
+ contents: read
24
+ packages: read
25
+ pull-requests: write
26
+ security-events: write
27
+ with:
28
+ branch_ref: ${{ github.event.pull_request.head.sha }}
29
+ secrets: inherit
@@ -0,0 +1,29 @@
1
+ name: Linter and tests (PRs raised on main repo)
2
+
3
+ permissions:
4
+ actions: read
5
+ contents: read
6
+ pull-requests: write
7
+ concurrency:
8
+ group: ${{github.workflow}}-${{ github.event.pull_request.number }}
9
+ cancel-in-progress: true
10
+
11
+ on:
12
+ pull_request:
13
+ branches:
14
+ - main
15
+
16
+ jobs:
17
+ pr_jobs:
18
+ # github.event.pull_request object defined here: https://docs.github.com/en/rest/pulls/pulls?apiVersion=2026-03-10#get-a-pull-request
19
+ if: ${{ github.event.pull_request.head.repo.full_name == 'gitlabform/gitlabform' }}
20
+ uses: ./.github/workflows/prs.yml
21
+ permissions:
22
+ actions: read
23
+ contents: read
24
+ packages: read
25
+ pull-requests: write
26
+ security-events: write
27
+ with:
28
+ branch_ref: ${{ github.event.pull_request.head.sha }}
29
+ secrets: inherit