gitlabform 6.2.0__tar.gz → 6.2.2__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 (290) hide show
  1. gitlabform-6.2.2/.github/CODEOWNERS +1 -0
  2. {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/dependabot.yml +28 -9
  3. {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/workflows/_releases.yml +10 -22
  4. {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/workflows/build.yml +3 -3
  5. {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/workflows/pr-ci-workflow.yml +2 -2
  6. {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/workflows/static-analysis.yml +3 -3
  7. {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/workflows/tests-acceptance.yml +4 -4
  8. {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/workflows/tests-unit.yml +1 -1
  9. gitlabform-6.2.2/.python-version +1 -0
  10. {gitlabform-6.2.0 → gitlabform-6.2.2}/PKG-INFO +5 -5
  11. {gitlabform-6.2.0 → gitlabform-6.2.2}/dev/docs.py +5 -5
  12. {gitlabform-6.2.0 → gitlabform-6.2.2}/dev/gitlab/run_gitlab_in_docker.sh +2 -2
  13. {gitlabform-6.2.0 → gitlabform-6.2.2}/dev/main.py +19 -66
  14. {gitlabform-6.2.0 → gitlabform-6.2.2}/dev/package.py +1 -1
  15. {gitlabform-6.2.0 → gitlabform-6.2.2}/dev/release.py +2 -2
  16. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/changelog.md +49 -0
  17. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/contrib/coding_guidelines.md +7 -0
  18. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/contrib/local_development.md +53 -64
  19. gitlabform-6.2.2/docs/images/ti8m-logo.png +0 -0
  20. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/index.md +2 -1
  21. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/project_security_settings.md +2 -2
  22. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/running.md +3 -1
  23. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/__init__.py +41 -11
  24. gitlabform-6.2.2/gitlabform/constants.py +16 -0
  25. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/gitlab/__init__.py +0 -6
  26. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/output.py +5 -4
  27. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/abstract_processor.py +28 -2
  28. gitlabform-6.2.2/gitlabform/processors/group/group_badges_processor.py +27 -0
  29. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/__init__.py +2 -2
  30. gitlabform-6.2.2/gitlabform/processors/project/badges_processor.py +27 -0
  31. gitlabform-6.2.2/gitlabform/processors/project/deploy_keys_processor.py +106 -0
  32. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/files_processor.py +3 -5
  33. gitlabform-6.2.2/gitlabform/processors/project/merge_requests_approval_rules.py +38 -0
  34. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/merge_requests_approvals.py +3 -17
  35. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/project_security_settings.py +6 -15
  36. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/project_settings_processor.py +4 -17
  37. gitlabform-6.2.2/gitlabform/processors/project/project_variables_processor.py +76 -0
  38. gitlabform-6.2.2/gitlabform/processors/util/badges_processor.py +78 -0
  39. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/util/difference_logger.py +14 -5
  40. {gitlabform-6.2.0 → gitlabform-6.2.2}/mkdocs.yml +5 -8
  41. {gitlabform-6.2.0 → gitlabform-6.2.2}/pyproject.toml +21 -37
  42. {gitlabform-6.2.0 → gitlabform-6.2.2}/tbump.toml +2 -1
  43. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/premium/test_merge_request_approval_rules.py +53 -0
  44. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_deploy_keys.py +31 -0
  45. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_files.py +95 -0
  46. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_remote_mirrors.py +3 -3
  47. gitlabform-6.2.2/tests/unit/processors/test_abstract_processor.py +116 -0
  48. gitlabform-6.2.2/tests/unit/processors/test_deploy_keys_processor.py +195 -0
  49. gitlabform-6.2.2/tests/unit/processors/test_difference_logger.py +146 -0
  50. gitlabform-6.2.2/tests/unit/processors/test_merge_requests_approval_rules_processor.py +120 -0
  51. gitlabform-6.2.2/tests/unit/processors/test_util_badges_processor.py +226 -0
  52. gitlabform-6.2.2/tests/unit/test_output.py +19 -0
  53. gitlabform-6.2.2/tests/unit/test_show_summary.py +35 -0
  54. {gitlabform-6.2.0 → gitlabform-6.2.2}/uv.lock +351 -396
  55. gitlabform-6.2.0/.github/CODEOWNERS +0 -1
  56. gitlabform-6.2.0/.python-version +0 -1
  57. gitlabform-6.2.0/gitlabform/constants.py +0 -7
  58. gitlabform-6.2.0/gitlabform/gitlab/group_badges.py +0 -50
  59. gitlabform-6.2.0/gitlabform/gitlab/project_badges.py +0 -52
  60. gitlabform-6.2.0/gitlabform/gitlab/project_deploy_keys.py +0 -102
  61. gitlabform-6.2.0/gitlabform/processors/group/group_badges_processor.py +0 -17
  62. gitlabform-6.2.0/gitlabform/processors/project/badges_processor.py +0 -17
  63. gitlabform-6.2.0/gitlabform/processors/project/deploy_keys_processor.py +0 -18
  64. gitlabform-6.2.0/gitlabform/processors/project/merge_requests_approval_rules.py +0 -17
  65. gitlabform-6.2.0/gitlabform/processors/project/project_variables_processor.py +0 -100
  66. gitlabform-6.2.0/tests/unit/processors/test_abstract_processor.py +0 -35
  67. gitlabform-6.2.0/tests/unit/processors/test_difference_logger.py +0 -71
  68. {gitlabform-6.2.0 → gitlabform-6.2.2}/.coveragerc +0 -0
  69. {gitlabform-6.2.0 → gitlabform-6.2.2}/.dockerignore +0 -0
  70. {gitlabform-6.2.0 → gitlabform-6.2.2}/.git-blame-ignore-revs +0 -0
  71. {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  72. {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  73. {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/ISSUE_TEMPLATE/question-or-other-issue.md +0 -0
  74. {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/actions/setup-uv-local/README.md +0 -0
  75. {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/actions/setup-uv-local/action.yml +0 -0
  76. {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/workflows/_main.yml +0 -0
  77. {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/workflows/codecov-upload.yml +0 -0
  78. {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/workflows/prs-entrypoint-forks.yml +0 -0
  79. {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/workflows/prs-entrypoint-main.yml +0 -0
  80. {gitlabform-6.2.0 → gitlabform-6.2.2}/.gitignore +0 -0
  81. {gitlabform-6.2.0 → gitlabform-6.2.2}/.lgtm.yml +0 -0
  82. {gitlabform-6.2.0 → gitlabform-6.2.2}/.mypy.ini +0 -0
  83. {gitlabform-6.2.0 → gitlabform-6.2.2}/.overrides/gitlabform-logo-favicon.png +0 -0
  84. {gitlabform-6.2.0 → gitlabform-6.2.2}/.overrides/gitlabform-logo-favicon.svg +0 -0
  85. {gitlabform-6.2.0 → gitlabform-6.2.2}/CONTRIBUTING.md +0 -0
  86. {gitlabform-6.2.0 → gitlabform-6.2.2}/Dockerfile +0 -0
  87. {gitlabform-6.2.0 → gitlabform-6.2.2}/LICENSE +0 -0
  88. {gitlabform-6.2.0 → gitlabform-6.2.2}/README.md +0 -0
  89. {gitlabform-6.2.0 → gitlabform-6.2.2}/codecov.yml +0 -0
  90. {gitlabform-6.2.0 → gitlabform-6.2.2}/dev/__init__.py +0 -0
  91. {gitlabform-6.2.0 → gitlabform-6.2.2}/dev/common.py +0 -0
  92. {gitlabform-6.2.0 → gitlabform-6.2.2}/dev/docker.py +0 -0
  93. {gitlabform-6.2.0 → gitlabform-6.2.2}/dev/env.py +0 -0
  94. {gitlabform-6.2.0 → gitlabform-6.2.2}/dev/gitlab/await-healthy.sh +0 -0
  95. {gitlabform-6.2.0 → gitlabform-6.2.2}/dev/gitlab/gitlab.rb +0 -0
  96. {gitlabform-6.2.0 → gitlabform-6.2.2}/dev/gitlab/healthcheck-and-setup.sh +0 -0
  97. {gitlabform-6.2.0 → gitlabform-6.2.2}/dev/gitlab/tests.Dockerfile +0 -0
  98. {gitlabform-6.2.0 → gitlabform-6.2.2}/dev/infra.py +0 -0
  99. {gitlabform-6.2.0 → gitlabform-6.2.2}/dev/qa.py +0 -0
  100. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/automation.md +0 -0
  101. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/contrib/implementation_design.md +0 -0
  102. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/contrib/index.md +0 -0
  103. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/contrib/releases.md +0 -0
  104. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/contrib/workflows.md +0 -0
  105. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/features.md +0 -0
  106. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/images/Opencast-logo.png +0 -0
  107. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/images/egnyte-logo.svg +0 -0
  108. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/images/elastic-path-logo.svg +0 -0
  109. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/images/gitlabform-logo-square.png +0 -0
  110. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/images/gitlabform-logo.png +0 -0
  111. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/images/gitlabform-logo.svg +0 -0
  112. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/images/group-ldap-links-provider.png +0 -0
  113. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/images/liquidlight-logo.svg +0 -0
  114. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/images/roche-logo.png +0 -0
  115. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/images/stroeer-online-marketing-logo.svg +0 -0
  116. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/installation.md +0 -0
  117. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/archive_unarchive.md +0 -0
  118. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/avatar.md +0 -0
  119. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/badges.md +0 -0
  120. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/ci_cd_variables.md +0 -0
  121. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/deploy_keys.md +0 -0
  122. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/files.md +0 -0
  123. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/group_ldap_links.md +0 -0
  124. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/group_saml_links.md +0 -0
  125. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/index.md +0 -0
  126. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/integrations.md +0 -0
  127. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/job_token_scope.md +0 -0
  128. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/labels.md +0 -0
  129. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/members.md +0 -0
  130. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/merge_requests.md +0 -0
  131. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/pipeline_schedules.md +0 -0
  132. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/project_transfer.md +0 -0
  133. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/protected_branches.md +0 -0
  134. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/protected_environments.md +0 -0
  135. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/push_mirrors.md +0 -0
  136. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/push_rules.md +0 -0
  137. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/resource_groups.md +0 -0
  138. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/settings.md +0 -0
  139. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/tags_protection.md +0 -0
  140. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/webhooks.md +0 -0
  141. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/requirements.md +0 -0
  142. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/similar_apps.md +0 -0
  143. {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/upgrade.md +0 -0
  144. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlab-config/config.yml +0 -0
  145. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlab-config/gitlab-config.md +0 -0
  146. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/configuration/__init__.py +0 -0
  147. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/configuration/common.py +0 -0
  148. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/configuration/core.py +0 -0
  149. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/configuration/groups.py +0 -0
  150. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/configuration/projects.py +0 -0
  151. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/configuration/transform.py +0 -0
  152. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/gitlab/commits.py +0 -0
  153. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/gitlab/core.py +0 -0
  154. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/gitlab/group_ldap_links.py +0 -0
  155. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/gitlab/groups.py +0 -0
  156. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/gitlab/merge_requests.py +0 -0
  157. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/gitlab/pipelines.py +0 -0
  158. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/gitlab/project_merge_requests_approvals.py +0 -0
  159. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/gitlab/project_protected_environments.py +0 -0
  160. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/gitlab/projects.py +0 -0
  161. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/gitlab/python_gitlab.py +0 -0
  162. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/gitlab/variables.py +0 -0
  163. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/lists/__init__.py +0 -0
  164. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/lists/filter.py +0 -0
  165. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/lists/groups.py +0 -0
  166. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/lists/projects.py +0 -0
  167. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/__init__.py +0 -0
  168. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/application/__init__.py +0 -0
  169. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/application/application_settings_processor.py +0 -0
  170. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/defining_keys.py +0 -0
  171. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/group/__init__.py +0 -0
  172. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/group/group_hooks_processor.py +0 -0
  173. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/group/group_labels_processor.py +0 -0
  174. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/group/group_ldap_links_processor.py +0 -0
  175. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/group/group_members_processor.py +0 -0
  176. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/group/group_protected_branches_processor.py +0 -0
  177. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/group/group_push_rules_processor.py +0 -0
  178. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/group/group_saml_links_processor.py +0 -0
  179. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/group/group_settings_processor.py +0 -0
  180. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/group/group_variables_processor.py +0 -0
  181. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/multiple_entities_processor.py +0 -0
  182. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/branches_processor.py +0 -0
  183. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/hooks_processor.py +0 -0
  184. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/integrations_processor.py +0 -0
  185. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/job_token_scope_processor.py +0 -0
  186. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/members_processor.py +0 -0
  187. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/project_labels_processor.py +0 -0
  188. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/project_processor.py +0 -0
  189. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/project_push_rules_processor.py +0 -0
  190. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/remote_mirrors_processor.py +0 -0
  191. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/resource_groups_processor.py +0 -0
  192. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/schedules_processor.py +0 -0
  193. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/tags_processor.py +0 -0
  194. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/shared/__init__.py +0 -0
  195. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/shared/protected_environments_processor.py +0 -0
  196. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/util/__init__.py +0 -0
  197. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/util/branch_protection.py +0 -0
  198. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/util/decorators.py +0 -0
  199. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/util/labels_processor.py +0 -0
  200. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/util/variables_processor.py +0 -0
  201. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/run.py +0 -0
  202. {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/util.py +0 -0
  203. {gitlabform-6.2.0 → gitlabform-6.2.2}/prek.toml +0 -0
  204. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/__init__.py +0 -0
  205. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/__init__.py +0 -0
  206. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/conftest.py +0 -0
  207. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/premium/test_branches.py +0 -0
  208. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/premium/test_branches_users_case_insensitive.py +0 -0
  209. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/premium/test_group_ldap_links.py +0 -0
  210. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/premium/test_group_protected_branches.py +0 -0
  211. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/premium/test_group_push_rules.py +0 -0
  212. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/premium/test_group_saml_links.py +0 -0
  213. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/premium/test_group_settings.py +0 -0
  214. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/premium/test_group_variables.py +0 -0
  215. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/premium/test_merge_request_approvals_settings.py +0 -0
  216. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/premium/test_protected_environments.py +0 -0
  217. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/premium/test_push_rules.py +0 -0
  218. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/premium/test_tags.py +0 -0
  219. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/__init__.py +0 -0
  220. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_application_settings.py +0 -0
  221. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_archive_project.py +0 -0
  222. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_badges.py +0 -0
  223. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_branches.py +0 -0
  224. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_deploy_keys_all_projects.py +0 -0
  225. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_files_templates.py +0 -0
  226. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_group_avatar.py +0 -0
  227. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_group_badges.py +0 -0
  228. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_group_hooks.py +0 -0
  229. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_group_labels.py +0 -0
  230. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_group_members_case_insensitive.py +0 -0
  231. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_group_members_groups.py +0 -0
  232. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_group_members_users.py +0 -0
  233. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_group_settings.py +0 -0
  234. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_group_variables.py +0 -0
  235. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_hooks.py +0 -0
  236. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_integrations.py +0 -0
  237. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_job_token_scope.py +0 -0
  238. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_members.py +0 -0
  239. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_members_add_group.py +0 -0
  240. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_members_enforce.py +0 -0
  241. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_project_avatar.py +0 -0
  242. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_project_group_members_case_insensitive.py +0 -0
  243. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_project_labels.py +0 -0
  244. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_project_members_case_insensitve.py +0 -0
  245. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_project_settings.py +0 -0
  246. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_project_variables.py +0 -0
  247. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_resource_groups.py +0 -0
  248. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_running.py +0 -0
  249. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_scheduled_for_deletion_project.py +0 -0
  250. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_schedules.py +0 -0
  251. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_tags.py +0 -0
  252. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_token_from_config.py +0 -0
  253. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_transfer_project.py +0 -0
  254. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_wildcard_patterns.py +0 -0
  255. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/ultimate/test_group_members.py +0 -0
  256. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/ultimate/test_group_settings.py +0 -0
  257. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/ultimate/test_members.py +0 -0
  258. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/ultimate/test_project_security_settings.py +0 -0
  259. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/ultimate/test_project_settings.py +0 -0
  260. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/__init__.py +0 -0
  261. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/configuration/__init__.py +0 -0
  262. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/configuration/test_case_sensitivity.py +0 -0
  263. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/configuration/test_inheritance_break_projects_and_groups.py +0 -0
  264. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/configuration/test_inheritance_break_subgroups.py +0 -0
  265. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/configuration/test_inheritance_break_validation.py +0 -0
  266. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/configuration/test_projects_and_groups.py +0 -0
  267. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/configuration/test_skip_groups_skip_projects.py +0 -0
  268. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/configuration/test_subgroups.py +0 -0
  269. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/configuration/test_wildcard_patterns.py +0 -0
  270. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/configuration/test_yaml_version.py +0 -0
  271. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/configuration/transform/test_access_level_transformer.py +0 -0
  272. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/configuration/transform/test_group_transformer.py +0 -0
  273. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/configuration/transform/test_implicit_name_transformer.py +0 -0
  274. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/configuration/transform/test_user_and_group_transformers.py +0 -0
  275. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/configuration/transform/test_user_transformer.py +0 -0
  276. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/gitlab/test_core.py +0 -0
  277. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/gitlab/test_python_gitlab.py +0 -0
  278. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/processors/__init__.py +0 -0
  279. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/processors/test_abstract_processors.py +0 -0
  280. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/processors/test_branches_processor.py +0 -0
  281. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/processors/test_files_processor.py +0 -0
  282. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/processors/test_group_members_processor.py +0 -0
  283. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/processors/test_group_protected_branches_processor.py +0 -0
  284. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/processors/test_group_saml_links_processor.py +0 -0
  285. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/processors/test_schedules_processor_extended_cron_pattern.py +0 -0
  286. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/test_access_levels.py +0 -0
  287. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/test_non_empty_configs_provider.py +0 -0
  288. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/test_parse_args.py +0 -0
  289. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/test_projects_provider.py +0 -0
  290. {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/test_utils.py +0 -0
@@ -0,0 +1 @@
1
+ * @amimas @gdubicki @rickbrouwer @TimKnight01
@@ -9,29 +9,48 @@ updates:
9
9
  directory: "/"
10
10
  schedule:
11
11
  interval: "weekly"
12
+
12
13
  - package-ecosystem: "github-actions"
13
14
  directory: "/"
14
15
  schedule:
15
16
  interval: "monthly"
17
+
16
18
  - package-ecosystem: "uv"
17
19
  directory: "/"
18
20
  schedule:
19
21
  interval: "weekly"
22
+ cooldown:
23
+ default-days: 30
24
+ include:
25
+ - "pytest*"
26
+ - "coverage"
27
+ - "cryptography"
28
+ - "deepdiff"
29
+ - "xkcdpass"
30
+ - "bandit"
31
+ - "black"
32
+ - "codespell"
33
+ - "mypy*"
34
+ - "ruff"
35
+ - "types-*"
36
+ - "markdown*"
37
+ - "zensical*"
38
+ - "pygments"
39
+ - "pymdown-extensions"
40
+ - "check-wheel-contents"
41
+ - "twine"
42
+ - "commitizen"
43
+ - "prek"
20
44
  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:
45
+ # Keep the dev-only dependency update churn lower by checking it monthly,
46
+ # while still keeping the largest dev tool groups focused.
47
+ dev-tooling:
27
48
  patterns:
28
49
  - "pytest*"
29
50
  - "coverage"
30
51
  - "cryptography"
31
52
  - "deepdiff"
32
53
  - "xkcdpass"
33
- linting:
34
- patterns:
35
54
  - "bandit"
36
55
  - "black"
37
56
  - "codespell"
@@ -41,7 +60,7 @@ updates:
41
60
  documentation:
42
61
  patterns:
43
62
  - "markdown*"
44
- - "mkdocs*"
63
+ - "zensical*"
45
64
  - "pygments"
46
65
  - "pymdown-extensions"
47
66
  release-tools:
@@ -62,18 +62,7 @@ jobs:
62
62
  # Manual Trigger Inputs (from workflow_dispatch)
63
63
  MANUAL_RELEASE_TAG: ${{ inputs.manual_tag }}
64
64
  MANUAL_UPSTREAM_RUN_ID: ${{ inputs.override_run_id }}
65
- run: uv run release gh-workflow-check
66
-
67
- # TODO: Remove this job when all the release jobs have been migrated
68
- # to consume build artifacts from Main workflow instead of rebuilding.
69
- build-release-artifacts:
70
- name: Build release artifacts
71
- if: ${{ needs.prep-release.outputs.is_valid_release == 'true' }}
72
- needs:
73
- - prep-release
74
- uses: ./.github/workflows/build.yml
75
- with:
76
- BRANCH_REF: ${{ needs.prep-release.outputs.semver_tag }}
65
+ run: uv run glf-dev release gh-workflow-check
77
66
 
78
67
  publish-docs:
79
68
  name: Publish Docs
@@ -95,7 +84,7 @@ jobs:
95
84
  name: docs-site
96
85
  path: site
97
86
  - name: Deploy 🚀
98
- uses: JamesIves/github-pages-deploy-action@v4.8.0
87
+ uses: JamesIves/github-pages-deploy-action@v4.9.0
99
88
  with:
100
89
  branch: gh-pages
101
90
  folder: site
@@ -120,7 +109,6 @@ jobs:
120
109
  if: ${{ needs.prep-release.outputs.is_valid_release == 'true' }}
121
110
  needs:
122
111
  - prep-release
123
- - build-release-artifacts
124
112
  runs-on: ubuntu-latest
125
113
  environment:
126
114
  name: pypi
@@ -140,22 +128,22 @@ jobs:
140
128
  - name: Setup Python ${{ env.UV_PYTHON }} and install dependencies
141
129
  run: |
142
130
  uv sync --frozen --no-dev --group release
143
- # TODO: In a separate PR, consume the build artifact (package-dist) uploaded
144
- # in build-release-artifacts instead of rebuilding and verifying the package here.
145
- - name: Build and verify the package
146
- run: |
147
- uv run --no-sync package build
148
- uv run --no-sync package verify
131
+ - name: Download built package
132
+ uses: actions/download-artifact@v8
133
+ with:
134
+ run-id: ${{ needs.prep-release.outputs.target_run_id }}
135
+ github-token: ${{ secrets.GITHUB_TOKEN }}
136
+ name: package-dist
137
+ path: dist
149
138
  - name: Publish to PyPI
150
139
  run: |
151
- uv run --no-sync release pypi
140
+ uv run --no-sync glf-dev release pypi
152
141
 
153
142
  publish-to-ghcr:
154
143
  name: Publish GHCR
155
144
  if: ${{ needs.prep-release.outputs.is_valid_release == 'true' }}
156
145
  needs:
157
146
  - prep-release
158
- - build-release-artifacts
159
147
  - publish-to-pypi
160
148
  runs-on: ubuntu-latest
161
149
  steps:
@@ -28,8 +28,8 @@ jobs:
28
28
  run: uv sync --frozen --no-dev --group release
29
29
  - name: Build and verify the package
30
30
  run: |
31
- uv run --no-sync package build
32
- uv run --no-sync package verify
31
+ uv run --no-sync glf-dev package build
32
+ uv run --no-sync glf-dev package verify
33
33
  - name: Upload package distribution
34
34
  uses: actions/upload-artifact@v7
35
35
  with:
@@ -52,7 +52,7 @@ jobs:
52
52
  - name: Install dependencies
53
53
  run: uv sync --frozen --no-dev --group docs
54
54
  - name: Build documentation
55
- run: uv run --no-sync docs build
55
+ run: uv run --no-sync glf-dev docs build
56
56
  - name: Upload docs site
57
57
  uses: actions/upload-artifact@v7
58
58
  with:
@@ -77,7 +77,7 @@ jobs:
77
77
  # uses: actions/setup-example@v1
78
78
 
79
79
  - name: Initialize CodeQL
80
- uses: github/codeql-action/init@v4
80
+ uses: github/codeql-action/init@v4.38.0
81
81
  with:
82
82
  languages: ${{ matrix.language }}
83
83
  build-mode: ${{ matrix.build-mode }}
@@ -89,6 +89,6 @@ jobs:
89
89
  # queries: security-extended,security-and-quality
90
90
 
91
91
  - name: Perform CodeQL Analysis
92
- uses: github/codeql-action/analyze@v4
92
+ uses: github/codeql-action/analyze@v4.38.0
93
93
  with:
94
94
  category: "/language:${{matrix.language}}"
@@ -48,9 +48,9 @@ jobs:
48
48
  - name: Run ${{ matrix.check }}
49
49
  run: |
50
50
  if [ "${{ matrix.check }}" == "black" ]; then
51
- uv run --no-sync qa lint black --check .
51
+ uv run --no-sync glf-dev qa lint black --check .
52
52
  elif [ "${{ matrix.check }}" == "mypy" ]; then
53
- uv run --no-sync qa lint mypy .
53
+ uv run --no-sync glf-dev qa lint mypy .
54
54
  elif [ "${{ matrix.check }}" == "bandit" ]; then
55
- uv run --no-sync qa lint bandit .
55
+ uv run --no-sync glf-dev qa lint bandit .
56
56
  fi
@@ -39,9 +39,9 @@ jobs:
39
39
  - name: Install dependencies
40
40
  run: uv sync --frozen --no-dev --group test
41
41
  - name: Start GitLab (${{ matrix.flavor }}) in docker
42
- run: uv run --no-sync gitlab-local up --gitlab-flavor ${{ matrix.flavor }}
42
+ run: uv run --no-sync glf-dev gitlab-local up --gitlab-flavor ${{ matrix.flavor }}
43
43
  - name: Run Standard acceptance tests for ${{ matrix.flavor }} flavor
44
- run: uv run --no-sync qa test tests/acceptance/standard --cov=. --cov-report=xml --durations=0 --reruns 3 --reruns-delay 10 --log-cli-level=WARNING
44
+ run: uv run --no-sync glf-dev qa test tests/acceptance/standard --cov=. --cov-report=xml --durations=0 --reruns 3 --reruns-delay 10 --log-cli-level=WARNING
45
45
  - name: Save PR metadata
46
46
  env:
47
47
  PR_NUMBER: ${{ github.event.pull_request.number }}
@@ -80,9 +80,9 @@ jobs:
80
80
  - name: Start GitLab (${{ matrix.tier }}) in docker
81
81
  env:
82
82
  GITLAB_EE_LICENSE: "${{ matrix.tier == 'premium' && secrets.GITLAB_EE_LICENSE || secrets.GITLAB_EE_ULTIMATE_LICENSE }}"
83
- run: uv run --no-sync gitlab-local up
83
+ run: uv run --no-sync glf-dev gitlab-local up
84
84
  - name: Run acceptance Tests for ${{ matrix.tier }} features
85
- run: uv run --no-sync qa test tests/acceptance/${{ matrix.tier }} --cov=. --cov-report=xml --durations=0 --reruns 3 --reruns-delay 10 --log-cli-level=WARNING
85
+ run: uv run --no-sync glf-dev qa test tests/acceptance/${{ matrix.tier }} --cov=. --cov-report=xml --durations=0 --reruns 3 --reruns-delay 10 --log-cli-level=WARNING
86
86
  - name: Save PR metadata
87
87
  env:
88
88
  PR_NUMBER: ${{ github.event.pull_request.number }}
@@ -32,7 +32,7 @@ jobs:
32
32
  - name: Install dependencies
33
33
  run: uv sync --frozen --no-dev --group test
34
34
  - name: Run unit tests
35
- run: uv run --no-sync qa test tests/unit --cov=. --cov-report=xml --log-cli-level=WARNING
35
+ run: uv run --no-sync glf-dev qa test tests/unit --cov=. --cov-report=xml --log-cli-level=WARNING
36
36
  - name: Save PR metadata
37
37
  env:
38
38
  PR_NUMBER: ${{ github.event.pull_request.number }}
@@ -0,0 +1 @@
1
+ 3.14.6
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: gitlabform
3
- Version: 6.2.0
3
+ Version: 6.2.2
4
4
  Summary: 🏗 Specialized configuration as a code tool for GitLab projects, groups and more using hierarchical configuration written in YAML
5
5
  Project-URL: Homepage, https://gitlabform.github.io/gitlabform/
6
6
  Project-URL: Repository, https://github.com/gitlabform/gitlabform.git
@@ -19,14 +19,14 @@ Classifier: Operating System :: POSIX :: Linux
19
19
  Classifier: Programming Language :: Python :: 3.14
20
20
  Classifier: Topic :: Software Development :: Version Control :: Git
21
21
  Requires-Python: >=3.12.0
22
- Requires-Dist: certifi==2026.6.17
22
+ Requires-Dist: certifi==2026.7.22
23
23
  Requires-Dist: cli-ui==0.19.0
24
24
  Requires-Dist: jinja2==3.1.6
25
25
  Requires-Dist: luddite==1.0.4
26
26
  Requires-Dist: markupsafe==3.0.3
27
27
  Requires-Dist: mergedeep==1.3.4
28
- Requires-Dist: packaging==26.2
29
- Requires-Dist: python-gitlab[graphql]==8.4.0
28
+ Requires-Dist: packaging==26.3
29
+ Requires-Dist: python-gitlab[graphql]==8.5.0
30
30
  Requires-Dist: requests==2.34.2
31
31
  Requires-Dist: rich==15.0.0
32
32
  Requires-Dist: ruamel-yaml==0.19.1
@@ -7,17 +7,17 @@ def docs_serve(extra_args: list[str] | None = None):
7
7
  """Starts the local documentation development server with live-reloading.
8
8
 
9
9
  Args:
10
- extra_args: Additional arguments for mkdocs serve.
10
+ extra_args: Additional arguments for zensical serve.
11
11
  """
12
- cmd = ["uv", "run", "mkdocs", "serve", "--livereload"] + (extra_args or [])
13
- run_command(cmd, "Starting MkDocs development server")
12
+ cmd = ["uv", "run", "zensical", "serve"] + (extra_args or [])
13
+ run_command(cmd, "Starting Zensical development server")
14
14
 
15
15
 
16
16
  def docs_build(extra_args: list[str] | None = None):
17
17
  """Generates the static documentation site.
18
18
 
19
19
  Args:
20
- extra_args: Additional arguments for mkdocs build.
20
+ extra_args: Additional arguments for zensical build.
21
21
  """
22
- cmd = ["uv", "run", "mkdocs", "build"] + (extra_args or [])
22
+ cmd = ["uv", "run", "zensical", "build", "--clean", "--strict"] + (extra_args or [])
23
23
  run_command(cmd, "Building static documentation site")
@@ -219,7 +219,7 @@ echo ''
219
219
 
220
220
  # Provide instructions for stopping and starting GitLab
221
221
  cecho b 'To stop and delete the GitLab container, run:'
222
- cecho y 'uv run gitlab-local down'
222
+ cecho y 'uv run glf-dev gitlab-local down'
223
223
  echo ''
224
224
  cecho b 'Alternatively to do it manually, you can run:'
225
225
  cecho r "docker stop --time=30 gitlab"
@@ -232,5 +232,5 @@ cecho b '(This is the only way to make GitLab in Docker stable.)'
232
232
  echo ''
233
233
 
234
234
  cecho b 'To start the acceptance tests, run:'
235
- cecho y 'uv run qa test tests/acceptance'
235
+ cecho y 'uv run glf-dev qa test tests/acceptance'
236
236
  echo ''
@@ -2,12 +2,23 @@
2
2
  """Central entry point and CLI facade for the GitLabForm development toolkit."""
3
3
 
4
4
  import argparse
5
- import os
6
5
  import sys
7
6
  from pathlib import Path
7
+ from dev.common import REPO_ROOT
8
+
9
+
10
+ def _ensure_repo_context() -> None:
11
+ """Fail fast unless the command is being run from inside the gitlabform repo."""
12
+ cwd = Path.cwd().resolve()
13
+ repo_root = REPO_ROOT.resolve()
14
+ if cwd == repo_root or repo_root in cwd.parents:
15
+ return
16
+
17
+ print("glf-dev: this command must be run from inside the gitlabform repository.", file=sys.stderr)
18
+ print(f"Current directory: {cwd}", file=sys.stderr)
19
+ print(f"Expected repo root: {repo_root}", file=sys.stderr)
20
+ raise SystemExit(2)
8
21
 
9
- # Add the project root to sys.path to allow running this script directly
10
- sys.path.append(str(Path(__file__).resolve().parent.parent))
11
22
 
12
23
  from dev.docs import docs_build, docs_serve
13
24
  from dev.env import clean as run_clean_logic, setup as run_setup_logic
@@ -67,16 +78,16 @@ def _add_docs_subcommands(subparsers):
67
78
  serve = subparsers.add_parser(
68
79
  "serve",
69
80
  help="Start the documentation server with live-reload",
70
- description="Start the MkDocs live-reload server. Provides an interactive preview of the documentation at http://localhost:8000.",
81
+ description="Start the Zensical live-reload server. Provides an interactive preview of the documentation at http://localhost:8000.",
71
82
  )
72
- serve.add_argument("extra_args", nargs=argparse.REMAINDER, help="Additional arguments for mkdocs serve")
83
+ serve.add_argument("extra_args", nargs=argparse.REMAINDER, help="Additional arguments for zensical serve")
73
84
 
74
85
  build_p = subparsers.add_parser(
75
86
  "build",
76
87
  help="Generate the static documentation site",
77
88
  description="Compile the markdown documentation into a static HTML site ready for deployment.",
78
89
  )
79
- build_p.add_argument("extra_args", nargs=argparse.REMAINDER, help="Additional arguments for mkdocs build")
90
+ build_p.add_argument("extra_args", nargs=argparse.REMAINDER, help="Additional arguments for zensical build")
80
91
 
81
92
 
82
93
  def _dispatch_docs(args):
@@ -246,67 +257,9 @@ def _dispatch_qa(args):
246
257
  run_test_logic(args.extra_args)
247
258
 
248
259
 
249
- # --- Domain Shortcut Entry Points ---
250
-
251
-
252
- def _domain_entrypoint(prog, description, setup_fn, dispatch_fn):
253
- """Generic helper for domain-specific entry points."""
254
- parser = argparse.ArgumentParser(prog=prog, description=description)
255
- setup_fn(parser.add_subparsers(dest="command"))
256
- args, extra = parser.parse_known_args()
257
-
258
- # Combine unknown arguments (like flags) with the 'extra_args' list if it exists.
259
- # This allows passthrough commands like 'up' to receive flags like --help.
260
- if hasattr(args, "extra_args") and extra:
261
- if args.extra_args is None:
262
- args.extra_args = extra
263
- else:
264
- args.extra_args = extra + args.extra_args
265
-
266
- if not args.command:
267
- parser.print_help()
268
- sys.exit(0)
269
-
270
- dispatch_fn(args)
271
-
272
-
273
- def workspace():
274
- """Shortcut for 'uv run workspace'."""
275
- _domain_entrypoint("workspace", DESC_WORKSPACE, _add_workspace_subcommands, _dispatch_workspace)
276
-
277
-
278
- def qa():
279
- """Shortcut for 'uv run qa'."""
280
- _domain_entrypoint("qa", DESC_QA, _add_qa_subcommands, _dispatch_qa)
281
-
282
-
283
- def docs():
284
- """Shortcut for 'uv run docs'."""
285
- _domain_entrypoint("docs", DESC_DOCS, _add_docs_subcommands, _dispatch_docs)
286
-
287
-
288
- def package():
289
- """Shortcut for 'uv run package'."""
290
- _domain_entrypoint("package", DESC_PACKAGE, _add_package_subcommands, _dispatch_package)
291
-
292
-
293
- def docker():
294
- """Shortcut for 'uv run docker'."""
295
- _domain_entrypoint("docker", DESC_DOCKER, _add_docker_subcommands, _dispatch_docker)
296
-
297
-
298
- def release():
299
- """Shortcut for 'uv run release'."""
300
- _domain_entrypoint("release", DESC_RELEASE, _add_release_subcommands, _dispatch_release)
301
-
302
-
303
- def gitlab_local():
304
- """Shortcut for 'uv run gitlab-local'. Provides orchestration for the local GitLab instance."""
305
- _domain_entrypoint("gitlab-local", DESC_INFRA, _add_infra_subcommands, _dispatch_infra)
306
-
307
-
308
260
  def main():
309
261
  """Main entry point for direct script execution."""
262
+ _ensure_repo_context()
310
263
  parser = argparse.ArgumentParser(description="GitLabForm Development Toolkit")
311
264
  subparsers = parser.add_subparsers(dest="domain", help="Task domains")
312
265
 
@@ -335,7 +288,7 @@ def main():
335
288
  args, extra = parser.parse_known_args()
336
289
 
337
290
  # Combine unknown arguments (flags) with the 'extra_args' list if it exists.
338
- # This applies when running via the main 'dev' entrypoint.
291
+ # This applies when running via the main 'glf-dev' entrypoint.
339
292
  if hasattr(args, "extra_args") and extra:
340
293
  if args.extra_args is None:
341
294
  args.extra_args = extra
@@ -29,7 +29,7 @@ def python_verify(extra_args: list[str] | None = None):
29
29
  # 1. Ensure build artifacts exist
30
30
  if not dist_path.exists() or not any(dist_path.iterdir()):
31
31
  logger.error(f"[bold red]❌ Build directory '{dist_path}/' is missing or empty.[/bold red]")
32
- logger.info("Hint: Run [bold cyan]uv run package build[/bold cyan] first.")
32
+ logger.info("Hint: Run [bold cyan]uv run glf-dev package build[/bold cyan] first.")
33
33
  sys.exit(1)
34
34
 
35
35
  wheels = [str(p) for p in dist_path.glob("*.whl")]
@@ -143,11 +143,11 @@ def gh_workflow_check(extra_args: list[str] | None = None):
143
143
 
144
144
  LOCAL TESTING:
145
145
  1. Manual Trigger:
146
- GH_TOKEN="your_pat" EVENT="workflow_dispatch" REPO="owner/repo" MANUAL_RELEASE_TAG="v1.0.0" MANUAL_UPSTREAM_RUN_ID="12345" uv run release gh-workflow-check
146
+ GH_TOKEN="your_pat" EVENT="workflow_dispatch" REPO="owner/repo" MANUAL_RELEASE_TAG="v1.0.0" MANUAL_UPSTREAM_RUN_ID="12345" uv run glf-dev release gh-workflow-check
147
147
 
148
148
  2. Automated Trigger:
149
149
  GH_TOKEN="your_pat" EVENT="workflow_run" REPO="owner/repo" CONCLUSION="success" \
150
- SHA="$(git rev-parse HEAD)" AUTOMATED_UPSTREAM_RUN_ID="67890" uv run release gh-workflow-check
150
+ SHA="$(git rev-parse HEAD)" AUTOMATED_UPSTREAM_RUN_ID="67890" uv run glf-dev release gh-workflow-check
151
151
  """
152
152
  event_name = os.environ.get("EVENT")
153
153
  repo = os.environ.get("REPO")
@@ -6,6 +6,55 @@ For details on how to migrate between major versions, please refer to the [upgra
6
6
 
7
7
  ---
8
8
 
9
+ ## 6.2.2
10
+
11
+ ### Bug Fixes
12
+
13
+ * prevent KeyError when using --output with application settings [#1384](https://github.com/gitlabform/gitlabform/pull/1384). ([rickbrouwer](https://github.com/rickbrouwer))
14
+
15
+ ### Documentation
16
+
17
+ * use renamed secret_push_protection_enabled setting [#1395](https://github.com/gitlabform/gitlabform/pull/1395). ([rickbrouwer](https://github.com/rickbrouwer))
18
+ * fix Snyk badge and add ti&m logo [#1371](https://github.com/gitlabform/gitlabform/pull/1371). ([marcelstoer](https://github.com/marcelstoer))
19
+
20
+ ### Refactors
21
+
22
+ * migrate badges processor to python-gitlab [#1388](https://github.com/gitlabform/gitlabform/pull/1388). ([rickbrouwer](https://github.com/rickbrouwer))
23
+ * centralize dry-run diff in AbstractProcessor [#1353](https://github.com/gitlabform/gitlabform/pull/1353). ([rickbrouwer](https://github.com/rickbrouwer))
24
+
25
+ ### Build
26
+
27
+ * migrate documentation from MkDocs Material to Zensical [#1372](https://github.com/gitlabform/gitlabform/pull/1372). ([rickbrouwer](https://github.com/rickbrouwer))
28
+ * replace gitlabform development toolkit shortcuts with one entrypoint [#1409](https://github.com/gitlabform/gitlabform/pull/1409). ([amimas](https://github.com/amimas))
29
+
30
+ ### Chores
31
+
32
+ * update default PR reviewers [#1375](https://github.com/gitlabform/gitlabform/pull/1375). ([rickbrouwer](https://github.com/rickbrouwer))
33
+
34
+ ### Dependencies
35
+
36
+ * Update various dependencies to newer versions.
37
+
38
+ Thanks to all the contributors of this release!
39
+
40
+ ## 6.2.1
41
+
42
+ ### Bug Fixes
43
+
44
+ * catch GitlabCreateError and GitlabDeleteError when modifying files on protected branches [#1361](https://github.com/gitlabform/gitlabform/pull/1361). ([haijeploeg](https://github.com/haijeploeg))
45
+ * fix merge_request_approval_rules to stop redundant edit calls on unchanged rules [#1350](https://github.com/gitlabform/gitlabform/pull/1350). ([rickbrouwer](https://github.com/rickbrouwer))
46
+ * use add instead of delete in commit message for new files to reflect what actually happened in commit history [#1363](https://github.com/gitlabform/gitlabform/pull/1363). ([rickbrouwer](https://github.com/rickbrouwer))
47
+
48
+ ### Build
49
+
50
+ * consume package artifact from main workflow in pypi release [#1327](https://github.com/gitlabform/gitlabform/pull/1327). ([amimas](https://github.com/amimas))
51
+
52
+ ### Dependencies
53
+
54
+ * Update various dependencies to newer versions.
55
+
56
+ Thanks to all the contributors of this release!
57
+
9
58
  ## 6.2.0
10
59
 
11
60
  ### Features
@@ -6,6 +6,13 @@ Please do:
6
6
  * add tests along with the new code that prove that it works:
7
7
  * when adding/changing non-trivial logic please add unit tests,
8
8
  * for all bug fixes and new features using GitLab API please add acceptance tests
9
+ * use INFO as the base log level, DEBUG only if you might expose sensitive information (such as raw API request/responses)
10
+ * [Logging levels information](https://docs.python.org/3/howto/logging.html#logging-levels)
11
+ * by default we log WARNING and above issues; INFO is logged when specifying the `--verbose` argument in CLI
12
+ * diff output is emitted via a dedicated `DIFF` log level and does not require `--verbose`
13
+ * use the `logging` module for logging, do not use `print` statements
14
+ * we have a custom log level for "diff" messages, used only in the `difference_logger`
15
+ * we have a custom log level "notice" used only in `gitlabform.__init__` in order to output version information and the total numbers of Projects/Groups processed
9
16
  * add or update the docs for new features,
10
17
  * use [pre-commit](https://pre-commit.com) to automatically reformat your code and run linters before committing,
11
18
  * squash your commits (unless there is a reason not to),