diracx 0.0.1a50__tar.gz → 0.0.3__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 (451) hide show
  1. {diracx-0.0.1a50 → diracx-0.0.3}/.github/workflows/deployment.yml +20 -78
  2. {diracx-0.0.1a50 → diracx-0.0.3}/.github/workflows/integration.yml +2 -2
  3. {diracx-0.0.1a50 → diracx-0.0.3}/.github/workflows/main.yml +50 -16
  4. diracx-0.0.3/.github/workflows/release-please.yml +20 -0
  5. {diracx-0.0.1a50 → diracx-0.0.3}/.github/workflows/update_security_txt_expiry.yml +2 -2
  6. {diracx-0.0.1a50 → diracx-0.0.3}/.github/workflows/vulnerabilities.yml +5 -5
  7. {diracx-0.0.1a50 → diracx-0.0.3}/.pre-commit-config.yaml +6 -4
  8. diracx-0.0.3/CHANGELOG.md +38 -0
  9. {diracx-0.0.1a50 → diracx-0.0.3}/PKG-INFO +1 -1
  10. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-cli/src/diracx/cli/auth.py +1 -1
  11. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/_generated/aio/operations/_operations.py +1 -54
  12. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/_generated/models/__init__.py +2 -0
  13. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/_generated/models/_models.py +40 -0
  14. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/_generated/operations/_operations.py +2 -75
  15. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/patches/auth/aio.py +27 -3
  16. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/patches/auth/common.py +37 -8
  17. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/patches/auth/sync.py +29 -4
  18. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-core/src/diracx/core/config/schema.py +18 -11
  19. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-core/src/diracx/core/models.py +7 -0
  20. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-core/src/diracx/core/settings.py +1 -1
  21. diracx-0.0.3/diracx-core/tests/test_schema_legacy_adaptor.py +179 -0
  22. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/pyproject.toml +2 -0
  23. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/__main__.py +1 -0
  24. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/sql/auth/db.py +69 -2
  25. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/sql/utils/base.py +5 -0
  26. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-logic/src/diracx/logic/auth/management.py +18 -3
  27. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-logic/src/diracx/logic/jobs/sandboxes.py +1 -3
  28. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/src/diracx/routers/auth/management.py +25 -13
  29. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/src/diracx/routers/auth/well_known.py +1 -1
  30. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/src/diracx/routers/dependencies.py +12 -7
  31. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/src/diracx/routers/jobs/sandboxes.py +1 -2
  32. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/tests/auth/test_standard.py +49 -7
  33. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-testing/src/diracx/testing/utils.py +6 -1
  34. {diracx-0.0.1a50 → diracx-0.0.3}/docs/admin/explanations/auth-with-diracx.md +3 -3
  35. diracx-0.0.3/docs/admin/how-to/install/connect.md +25 -0
  36. {diracx-0.0.1a50 → diracx-0.0.3}/docs/admin/how-to/install/convert-cs.md +4 -0
  37. {diracx-0.0.1a50 → diracx-0.0.3}/docs/admin/how-to/install/embracing.md +1 -1
  38. {diracx-0.0.1a50 → diracx-0.0.3}/docs/admin/how-to/install/minimal-requirements.md +5 -4
  39. {diracx-0.0.1a50 → diracx-0.0.3}/docs/admin/how-to/install/register-a-vo.md +14 -0
  40. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/explanations/components/client.md +2 -2
  41. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/explanations/extensions.md +1 -0
  42. diracx-0.0.3/docs/user/tutorials/getting-started.md +29 -0
  43. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/containers/services/Dockerfile +1 -1
  44. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/operations/_operations.py +1 -54
  45. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/models/__init__.py +2 -0
  46. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/models/_models.py +40 -0
  47. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/operations/_operations.py +2 -75
  48. diracx-0.0.3/extensions/gubbins-charts/.gitignore +16 -0
  49. diracx-0.0.3/extensions/gubbins-charts/Chart.yaml +25 -0
  50. diracx-0.0.3/extensions/gubbins-charts/README.md +74 -0
  51. diracx-0.0.3/extensions/gubbins-charts/values.yaml +12 -0
  52. diracx-0.0.3/extensions/gubbins_values.yaml +8 -0
  53. {diracx-0.0.1a50 → diracx-0.0.3}/mkdocs.yml +9 -5
  54. {diracx-0.0.1a50 → diracx-0.0.3}/pixi.toml +2 -0
  55. diracx-0.0.1a50/.github/workflows/make_release.py +0 -74
  56. diracx-0.0.1a50/docs/user/tutorials/getting-started.md +0 -0
  57. diracx-0.0.1a50/extensions/gubbins_values.yaml +0 -17
  58. diracx-0.0.1a50/release.notes +0 -2
  59. diracx-0.0.1a50/release.notes.new +0 -22
  60. diracx-0.0.1a50/release.notes.old +0 -2
  61. {diracx-0.0.1a50 → diracx-0.0.3}/.coveragerc +0 -0
  62. {diracx-0.0.1a50 → diracx-0.0.3}/.gitattributes +0 -0
  63. {diracx-0.0.1a50 → diracx-0.0.3}/.github/dependabot.yml +0 -0
  64. {diracx-0.0.1a50 → diracx-0.0.3}/.github/workflows/generate_pixi_tasks_doc.py +0 -0
  65. {diracx-0.0.1a50 → diracx-0.0.3}/.github/workflows/update_chart_version.py +0 -0
  66. {diracx-0.0.1a50 → diracx-0.0.3}/.gitignore +0 -0
  67. {diracx-0.0.1a50 → diracx-0.0.3}/.readthedocs.yaml +0 -0
  68. {diracx-0.0.1a50 → diracx-0.0.3}/LICENSE +0 -0
  69. {diracx-0.0.1a50 → diracx-0.0.3}/MANIFEST.in +0 -0
  70. {diracx-0.0.1a50 → diracx-0.0.3}/README.md +0 -0
  71. {diracx-0.0.1a50 → diracx-0.0.3}/codecov.yml +0 -0
  72. {diracx-0.0.1a50 → diracx-0.0.3}/containers/client/Dockerfile +0 -0
  73. {diracx-0.0.1a50 → diracx-0.0.3}/containers/services/Dockerfile +0 -0
  74. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-api/README.md +0 -0
  75. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-api/pyproject.toml +0 -0
  76. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-api/src/diracx/api/__init__.py +0 -0
  77. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-api/src/diracx/api/jobs.py +0 -0
  78. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-api/src/diracx/api/py.typed +0 -0
  79. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-api/src/diracx/api/utils.py +0 -0
  80. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-api/tests/test_jobs.py +0 -0
  81. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-api/tests/test_utils.py +0 -0
  82. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-cli/README.md +0 -0
  83. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-cli/pyproject.toml +0 -0
  84. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-cli/src/diracx/cli/__init__.py +0 -0
  85. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-cli/src/diracx/cli/__main__.py +0 -0
  86. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-cli/src/diracx/cli/config.py +0 -0
  87. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-cli/src/diracx/cli/internal/__init__.py +0 -0
  88. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-cli/src/diracx/cli/internal/config.py +0 -0
  89. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-cli/src/diracx/cli/internal/legacy.py +0 -0
  90. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-cli/src/diracx/cli/jobs.py +0 -0
  91. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-cli/src/diracx/cli/py.typed +0 -0
  92. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-cli/src/diracx/cli/utils.py +0 -0
  93. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-cli/tests/legacy/cs_sync/integration_test.cfg +0 -0
  94. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-cli/tests/legacy/cs_sync/integration_test.yaml +0 -0
  95. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-cli/tests/legacy/cs_sync/integration_test_buggy.cfg +0 -0
  96. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-cli/tests/legacy/cs_sync/integration_test_secret.cfg +0 -0
  97. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-cli/tests/legacy/cs_sync/test_cssync.py +0 -0
  98. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-cli/tests/legacy/test_legacy.py +0 -0
  99. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-cli/tests/test_internal.py +0 -0
  100. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-cli/tests/test_jobs.py +0 -0
  101. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-cli/tests/test_login.py +0 -0
  102. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/README.md +0 -0
  103. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/pyproject.toml +0 -0
  104. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/_diracx_client_importer.pth +0 -0
  105. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/_client_importer.py +0 -0
  106. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/__init__.py +0 -0
  107. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/_generated/__init__.py +0 -0
  108. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/_generated/_client.py +0 -0
  109. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/_generated/_configuration.py +0 -0
  110. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/_generated/_patch.py +0 -0
  111. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/_generated/_serialization.py +0 -0
  112. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/_generated/_utils/__init__.py +0 -0
  113. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/_generated/_utils/serialization.py +0 -0
  114. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/_generated/_utils/utils.py +0 -0
  115. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/_generated/_vendor.py +0 -0
  116. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/_generated/aio/__init__.py +0 -0
  117. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/_generated/aio/_client.py +0 -0
  118. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/_generated/aio/_configuration.py +0 -0
  119. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/_generated/aio/_patch.py +0 -0
  120. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/_generated/aio/_vendor.py +0 -0
  121. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/_generated/aio/operations/__init__.py +0 -0
  122. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/_generated/aio/operations/_patch.py +0 -0
  123. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/_generated/models/_enums.py +0 -0
  124. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/_generated/models/_patch.py +0 -0
  125. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/_generated/operations/__init__.py +0 -0
  126. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/_generated/operations/_patch.py +0 -0
  127. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/_generated/py.typed +0 -0
  128. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/aio.py +0 -0
  129. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/models.py +0 -0
  130. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/patches/client/aio.py +0 -0
  131. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/patches/client/common.py +0 -0
  132. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/patches/client/sync.py +0 -0
  133. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/patches/jobs/aio.py +0 -0
  134. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/patches/jobs/common.py +0 -0
  135. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/patches/jobs/sync.py +0 -0
  136. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/patches/utils.py +0 -0
  137. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/py.typed +0 -0
  138. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/src/diracx/client/sync.py +0 -0
  139. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-client/tests/test_auth.py +0 -0
  140. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-core/README.md +0 -0
  141. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-core/pyproject.toml +0 -0
  142. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-core/src/diracx/core/__init__.py +0 -0
  143. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-core/src/diracx/core/config/__init__.py +0 -0
  144. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-core/src/diracx/core/config/sources.py +0 -0
  145. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-core/src/diracx/core/exceptions.py +0 -0
  146. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-core/src/diracx/core/extensions.py +0 -0
  147. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-core/src/diracx/core/preferences.py +0 -0
  148. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-core/src/diracx/core/properties.py +0 -0
  149. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-core/src/diracx/core/py.typed +0 -0
  150. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-core/src/diracx/core/resources.py +0 -0
  151. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-core/src/diracx/core/s3.py +0 -0
  152. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-core/src/diracx/core/utils.py +0 -0
  153. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-core/tests/test_config_source.py +0 -0
  154. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-core/tests/test_entry_points.py +0 -0
  155. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-core/tests/test_extensions.py +0 -0
  156. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-core/tests/test_resources.py +0 -0
  157. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-core/tests/test_s3.py +0 -0
  158. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-core/tests/test_secrets.py +0 -0
  159. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-core/tests/test_utils.py +0 -0
  160. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/README.md +0 -0
  161. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/__init__.py +0 -0
  162. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/exceptions.py +0 -0
  163. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/os/__init__.py +0 -0
  164. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/os/job_parameters.py +0 -0
  165. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/os/utils.py +0 -0
  166. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/py.typed +0 -0
  167. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/sql/__init__.py +0 -0
  168. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/sql/auth/__init__.py +0 -0
  169. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/sql/auth/schema.py +0 -0
  170. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/sql/dummy/__init__.py +0 -0
  171. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/sql/dummy/db.py +0 -0
  172. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/sql/dummy/schema.py +0 -0
  173. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/sql/job/__init__.py +0 -0
  174. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/sql/job/db.py +0 -0
  175. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/sql/job/schema.py +0 -0
  176. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/sql/job_logging/__init__.py +0 -0
  177. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/sql/job_logging/db.py +0 -0
  178. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/sql/job_logging/schema.py +0 -0
  179. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/sql/pilot_agents/__init__.py +0 -0
  180. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/sql/pilot_agents/db.py +0 -0
  181. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/sql/pilot_agents/schema.py +0 -0
  182. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/sql/sandbox_metadata/__init__.py +0 -0
  183. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/sql/sandbox_metadata/db.py +0 -0
  184. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/sql/sandbox_metadata/schema.py +0 -0
  185. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/sql/task_queue/__init__.py +0 -0
  186. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/sql/task_queue/db.py +0 -0
  187. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/sql/task_queue/schema.py +0 -0
  188. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/sql/utils/__init__.py +0 -0
  189. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/sql/utils/functions.py +0 -0
  190. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/src/diracx/db/sql/utils/types.py +0 -0
  191. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/tests/auth/test_authorization_flow.py +0 -0
  192. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/tests/auth/test_device_flow.py +0 -0
  193. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/tests/auth/test_refresh_token.py +0 -0
  194. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/tests/jobs/test_job_db.py +0 -0
  195. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/tests/jobs/test_job_logging_db.py +0 -0
  196. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/tests/jobs/test_sandbox_metadata.py +0 -0
  197. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/tests/opensearch/test_connection.py +0 -0
  198. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/tests/opensearch/test_index_template.py +0 -0
  199. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/tests/opensearch/test_search.py +0 -0
  200. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/tests/pilot_agents/__init__.py +0 -0
  201. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/tests/pilot_agents/test_pilot_agents_db.py +0 -0
  202. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/tests/test_dummy_db.py +0 -0
  203. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/tests/test_freeze_time.py +0 -0
  204. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-db/tests/utils/test_uuid.py +0 -0
  205. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-logic/README.md +0 -0
  206. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-logic/pyproject.toml +0 -0
  207. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-logic/src/diracx/logic/__init__.py +0 -0
  208. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-logic/src/diracx/logic/__main__.py +0 -0
  209. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-logic/src/diracx/logic/auth/__init__.py +0 -0
  210. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-logic/src/diracx/logic/auth/authorize_code_flow.py +0 -0
  211. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-logic/src/diracx/logic/auth/device_flow.py +0 -0
  212. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-logic/src/diracx/logic/auth/token.py +0 -0
  213. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-logic/src/diracx/logic/auth/utils.py +0 -0
  214. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-logic/src/diracx/logic/auth/well_known.py +0 -0
  215. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-logic/src/diracx/logic/jobs/__init__.py +0 -0
  216. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-logic/src/diracx/logic/jobs/query.py +0 -0
  217. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-logic/src/diracx/logic/jobs/status.py +0 -0
  218. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-logic/src/diracx/logic/jobs/submission.py +0 -0
  219. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-logic/src/diracx/logic/jobs/utils.py +0 -0
  220. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-logic/src/diracx/logic/py.typed +0 -0
  221. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-logic/src/diracx/logic/task_queues/__init__.py +0 -0
  222. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-logic/src/diracx/logic/task_queues/priority.py +0 -0
  223. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-logic/tests/jobs/test_sandboxes.py +0 -0
  224. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-logic/tests/jobs/test_status.py +0 -0
  225. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/README.md +0 -0
  226. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/pyproject.toml +0 -0
  227. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/src/diracx/routers/__init__.py +0 -0
  228. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/src/diracx/routers/access_policies.py +0 -0
  229. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/src/diracx/routers/auth/__init__.py +0 -0
  230. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/src/diracx/routers/auth/authorize_code_flow.py +0 -0
  231. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/src/diracx/routers/auth/device_flow.py +0 -0
  232. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/src/diracx/routers/auth/token.py +0 -0
  233. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/src/diracx/routers/auth/utils.py +0 -0
  234. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/src/diracx/routers/configuration.py +0 -0
  235. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/src/diracx/routers/factory.py +0 -0
  236. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/src/diracx/routers/fastapi_classes.py +0 -0
  237. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/src/diracx/routers/health/__init__.py +0 -0
  238. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/src/diracx/routers/health/probes.py +0 -0
  239. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/src/diracx/routers/jobs/__init__.py +0 -0
  240. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/src/diracx/routers/jobs/access_policies.py +0 -0
  241. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/src/diracx/routers/jobs/legacy.py +0 -0
  242. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/src/diracx/routers/jobs/query.py +0 -0
  243. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/src/diracx/routers/jobs/status.py +0 -0
  244. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/src/diracx/routers/jobs/submission.py +0 -0
  245. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/src/diracx/routers/otel.py +0 -0
  246. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/src/diracx/routers/py.typed +0 -0
  247. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/src/diracx/routers/utils/__init__.py +0 -0
  248. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/src/diracx/routers/utils/users.py +0 -0
  249. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/tests/auth/test_legacy_exchange.py +0 -0
  250. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/tests/data/idp-server.invalid/.well-known/openid-configuration +0 -0
  251. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/tests/health/test_probes.py +0 -0
  252. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/tests/jobs/conftest.py +0 -0
  253. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/tests/jobs/test_query.py +0 -0
  254. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/tests/jobs/test_sandboxes.py +0 -0
  255. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/tests/jobs/test_status.py +0 -0
  256. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/tests/jobs/test_wms_access_policy.py +0 -0
  257. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/tests/test_config_manager.py +0 -0
  258. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/tests/test_generic.py +0 -0
  259. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-routers/tests/test_policy.py +0 -0
  260. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-testing/README.md +0 -0
  261. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-testing/pyproject.toml +0 -0
  262. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-testing/src/diracx/testing/__init__.py +0 -0
  263. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-testing/src/diracx/testing/__main__.py +0 -0
  264. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-testing/src/diracx/testing/client_generation.py +0 -0
  265. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-testing/src/diracx/testing/client_generation_pytest.py +0 -0
  266. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-testing/src/diracx/testing/dummy_osdb.py +0 -0
  267. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-testing/src/diracx/testing/entrypoints.py +0 -0
  268. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-testing/src/diracx/testing/mock_osdb.py +0 -0
  269. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-testing/src/diracx/testing/osdb.py +0 -0
  270. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-testing/src/diracx/testing/routers.py +0 -0
  271. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-testing/src/diracx/testing/scripts/collect_demo_coverage.sh +0 -0
  272. {diracx-0.0.1a50 → diracx-0.0.3}/diracx-testing/src/diracx/testing/time.py +0 -0
  273. {diracx-0.0.1a50 → diracx-0.0.3}/docs/SECURITY.md +0 -0
  274. {diracx-0.0.1a50 → diracx-0.0.3}/docs/admin/explanations/auth-with-external.md +0 -0
  275. {diracx-0.0.1a50 → diracx-0.0.3}/docs/admin/explanations/configuration.md +0 -0
  276. {diracx-0.0.1a50 → diracx-0.0.3}/docs/admin/explanations/opentelemetry.md +0 -0
  277. {diracx-0.0.1a50 → diracx-0.0.3}/docs/admin/explanations/sandbox-store.md +0 -0
  278. {diracx-0.0.1a50 → diracx-0.0.3}/docs/admin/explanations/user-management.md +0 -0
  279. {diracx-0.0.1a50 → diracx-0.0.3}/docs/admin/how-to/install/index.md +0 -0
  280. {diracx-0.0.1a50 → diracx-0.0.3}/docs/admin/how-to/install/register-the-admin-vo.md +0 -0
  281. {diracx-0.0.1a50 → diracx-0.0.3}/docs/admin/index.md +0 -0
  282. {diracx-0.0.1a50 → diracx-0.0.3}/docs/admin/reference/env-variables.md +0 -0
  283. {diracx-0.0.1a50 → diracx-0.0.3}/docs/admin/reference/security_model.md +0 -0
  284. {diracx-0.0.1a50 → diracx-0.0.3}/docs/admin/reference/settings-and-preferences.md +0 -0
  285. {diracx-0.0.1a50 → diracx-0.0.3}/docs/admin/tutorials/authentication.md +0 -0
  286. {diracx-0.0.1a50 → diracx-0.0.3}/docs/assets/css/extra.css +0 -0
  287. {diracx-0.0.1a50 → diracx-0.0.3}/docs/assets/css/fontawesome-all.min.css +0 -0
  288. {diracx-0.0.1a50 → diracx-0.0.3}/docs/assets/css/images/arrow.svg +0 -0
  289. {diracx-0.0.1a50 → diracx-0.0.3}/docs/assets/css/images/overlay.png +0 -0
  290. {diracx-0.0.1a50 → diracx-0.0.3}/docs/assets/css/main.css +0 -0
  291. {diracx-0.0.1a50 → diracx-0.0.3}/docs/assets/home.html +0 -0
  292. {diracx-0.0.1a50 → diracx-0.0.3}/docs/assets/images/diracx-logo-square.svg +0 -0
  293. {diracx-0.0.1a50 → diracx-0.0.3}/docs/assets/images/logo.svg +0 -0
  294. {diracx-0.0.1a50 → diracx-0.0.3}/docs/assets/styles/extra.css +0 -0
  295. {diracx-0.0.1a50 → diracx-0.0.3}/docs/assets/webfonts/fa-brands-400.woff2 +0 -0
  296. {diracx-0.0.1a50 → diracx-0.0.3}/docs/assets/webfonts/fa-solid-900.woff +0 -0
  297. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/explanations/components/api.md +0 -0
  298. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/explanations/components/cli.md +0 -0
  299. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/explanations/components/db.md +0 -0
  300. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/explanations/components/index.md +0 -0
  301. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/explanations/components/routes.md +0 -0
  302. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/explanations/designing-functionality.md +0 -0
  303. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/explanations/index.md +0 -0
  304. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/explanations/testing.md +0 -0
  305. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/how-to/add-a-cli-command.md +0 -0
  306. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/how-to/add-a-db.md +0 -0
  307. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/how-to/add-a-route.md +0 -0
  308. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/how-to/add-a-setting.md +0 -0
  309. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/how-to/add-a-task.md +0 -0
  310. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/how-to/add-a-test.md +0 -0
  311. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/how-to/add-functionality/index.md +0 -0
  312. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/how-to/client-customization.md +0 -0
  313. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/how-to/client-extension.md +0 -0
  314. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/how-to/client-generation.md +0 -0
  315. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/how-to/contribute.md +0 -0
  316. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/how-to/develop-legacy-dirac.md +0 -0
  317. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/how-to/extend-diracx/index.md +0 -0
  318. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/how-to/use-the-demo/index.md +0 -0
  319. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/how-to/use-the-demo/swagger.md +0 -0
  320. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/how-to/use-the-demo/web.md +0 -0
  321. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/index.md +0 -0
  322. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/reference/application-state.md +0 -0
  323. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/reference/client-metapathfinder.md +0 -0
  324. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/reference/coding-conventions.md +0 -0
  325. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/reference/configuration.md +0 -0
  326. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/reference/db-transaction-model.md +0 -0
  327. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/reference/dependency-injection.md +0 -0
  328. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/reference/entrypoints.md +0 -0
  329. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/reference/env-variables.md +0 -0
  330. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/reference/pixi-tasks.md +0 -0
  331. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/reference/security-policies.md +0 -0
  332. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/reference/security-properties.md +0 -0
  333. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/reference/test-recipes.md +0 -0
  334. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/reference/writing-tests.md +0 -0
  335. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/tutorials/advanced-tutorial.md +0 -0
  336. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/tutorials/develop-web.md +0 -0
  337. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/tutorials/getting-started.md +0 -0
  338. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/tutorials/larger-developments.md +0 -0
  339. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/tutorials/making-changes.md +0 -0
  340. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/tutorials/play-with-auth.md +0 -0
  341. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/tutorials/run-locally.md +0 -0
  342. {diracx-0.0.1a50 → diracx-0.0.3}/docs/dev/tutorials/write-docs.md +0 -0
  343. {diracx-0.0.1a50 → diracx-0.0.3}/docs/index.md +0 -0
  344. {diracx-0.0.1a50 → diracx-0.0.3}/docs/overrides/main.html +0 -0
  345. {diracx-0.0.1a50 → diracx-0.0.3}/docs/roadmap.md +0 -0
  346. {diracx-0.0.1a50 → diracx-0.0.3}/docs/user/index.md +0 -0
  347. {diracx-0.0.1a50 → diracx-0.0.3}/docs/user/reference/client-configuration.md +0 -0
  348. {diracx-0.0.1a50 → diracx-0.0.3}/docs/user/reference/known-installations.md +0 -0
  349. {diracx-0.0.1a50 → diracx-0.0.3}/docs/user/reference/programmatic-usage/command-line-interface.md +0 -0
  350. {diracx-0.0.1a50 → diracx-0.0.3}/docs/user/reference/programmatic-usage/https-interface.md +0 -0
  351. {diracx-0.0.1a50 → diracx-0.0.3}/docs/user/reference/programmatic-usage/index.md +0 -0
  352. {diracx-0.0.1a50 → diracx-0.0.3}/docs/user/reference/programmatic-usage/python-interface.md +0 -0
  353. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/containers/client/Dockerfile +0 -0
  354. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/.github/workflows/main.yml +0 -0
  355. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/README.md +0 -0
  356. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-api/README.md +0 -0
  357. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-api/pyproject.toml +0 -0
  358. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-api/src/gubbins/api/__init__.py +0 -0
  359. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-api/src/gubbins/api/py.typed +0 -0
  360. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-api/tests/test_gubbins_api.py +0 -0
  361. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-cli/README.md +0 -0
  362. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-cli/pyproject.toml +0 -0
  363. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-cli/src/gubbins/cli/__init__.py +0 -0
  364. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-cli/src/gubbins/cli/config.py +0 -0
  365. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-cli/src/gubbins/cli/lollygag.py +0 -0
  366. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-cli/src/gubbins/cli/py.typed +0 -0
  367. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-cli/tests/test_gubbins_cli.py +0 -0
  368. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/README.md +0 -0
  369. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/pyproject.toml +0 -0
  370. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/src/gubbins/client/__init__.py +0 -0
  371. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/__init__.py +0 -0
  372. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_client.py +0 -0
  373. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_configuration.py +0 -0
  374. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_patch.py +0 -0
  375. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_serialization.py +0 -0
  376. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_utils/__init__.py +0 -0
  377. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_utils/serialization.py +0 -0
  378. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_utils/utils.py +0 -0
  379. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_vendor.py +0 -0
  380. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/__init__.py +0 -0
  381. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/_client.py +0 -0
  382. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/_configuration.py +0 -0
  383. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/_patch.py +0 -0
  384. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/_vendor.py +0 -0
  385. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/operations/__init__.py +0 -0
  386. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/operations/_patch.py +0 -0
  387. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/models/_enums.py +0 -0
  388. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/operations/__init__.py +0 -0
  389. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/operations/_patch.py +0 -0
  390. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/py.typed +0 -0
  391. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/src/gubbins/client/aio.py +0 -0
  392. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/src/gubbins/client/models.py +0 -0
  393. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/src/gubbins/client/py.typed +0 -0
  394. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/src/gubbins/client/sync.py +0 -0
  395. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-client/tests/test_gubbins_client.py +0 -0
  396. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-core/README.md +0 -0
  397. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-core/pyproject.toml +0 -0
  398. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-core/src/gubbins/core/__init__.py +0 -0
  399. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-core/src/gubbins/core/config/__init__.py +0 -0
  400. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-core/src/gubbins/core/config/schema.py +0 -0
  401. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-core/src/gubbins/core/models.py +0 -0
  402. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-core/src/gubbins/core/properties.py +0 -0
  403. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-core/src/gubbins/core/py.typed +0 -0
  404. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-core/tests/test_config.py +0 -0
  405. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-core/tests/test_properties.py +0 -0
  406. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-db/README.md +0 -0
  407. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-db/pyproject.toml +0 -0
  408. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-db/src/gubbins/db/__init__.py +0 -0
  409. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-db/src/gubbins/db/py.typed +0 -0
  410. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/__init__.py +0 -0
  411. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/jobs/__init__.py +0 -0
  412. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/jobs/db.py +0 -0
  413. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/jobs/schema.py +0 -0
  414. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/lollygag/__init__.py +0 -0
  415. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/lollygag/db.py +0 -0
  416. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/lollygag/schema.py +0 -0
  417. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-db/tests/test_gubbins_job_db.py +0 -0
  418. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-db/tests/test_lollygag_db.py +0 -0
  419. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-logic/README.md +0 -0
  420. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-logic/pyproject.toml +0 -0
  421. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-logic/src/gubbins/logic/__init__.py +0 -0
  422. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-logic/src/gubbins/logic/auth/__init__.py +0 -0
  423. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-logic/src/gubbins/logic/auth/well_known.py +0 -0
  424. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-logic/src/gubbins/logic/lollygag/__init__.py +0 -0
  425. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-logic/src/gubbins/logic/lollygag/lollygag.py +0 -0
  426. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-logic/src/gubbins/logic/py.typed +0 -0
  427. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-logic/tests/test_gubbins_logic.py +0 -0
  428. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-routers/README.md +0 -0
  429. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-routers/pyproject.toml +0 -0
  430. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-routers/src/gubbins/routers/__init__.py +0 -0
  431. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-routers/src/gubbins/routers/dependencies.py +0 -0
  432. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-routers/src/gubbins/routers/lollygag/__init__.py +0 -0
  433. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-routers/src/gubbins/routers/lollygag/access_policy.py +0 -0
  434. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-routers/src/gubbins/routers/lollygag/lollygag.py +0 -0
  435. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-routers/src/gubbins/routers/py.typed +0 -0
  436. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-routers/src/gubbins/routers/well_known.py +0 -0
  437. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-routers/tests/data/idp-server.invalid/.well-known/openid-configuration +0 -0
  438. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-routers/tests/test_gubbins_job_manager.py +0 -0
  439. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-routers/tests/test_lollybag.py +0 -0
  440. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-routers/tests/test_wellknown.py +0 -0
  441. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-testing/README.md +0 -0
  442. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-testing/pyproject.toml +0 -0
  443. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/gubbins-testing/src/gubbins/testing/__init__.py +0 -0
  444. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/pixi.toml +0 -0
  445. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/pyproject.toml +0 -0
  446. {diracx-0.0.1a50 → diracx-0.0.3}/extensions/gubbins/release.notes +0 -0
  447. {diracx-0.0.1a50 → diracx-0.0.3}/pyproject.toml +0 -0
  448. {diracx-0.0.1a50 → diracx-0.0.3}/run_local.sh +0 -0
  449. {diracx-0.0.1a50 → diracx-0.0.3}/tests/__init__.py +0 -0
  450. {diracx-0.0.1a50 → diracx-0.0.3}/tests/make_token_local.py +0 -0
  451. {diracx-0.0.1a50 → diracx-0.0.3}/tests/test_generic.py +0 -0
@@ -2,17 +2,11 @@ name: Deployment
2
2
 
3
3
  on:
4
4
  push:
5
+ tags:
6
+ - 'v*'
5
7
  pull_request:
6
8
  schedule:
7
9
  - cron: '0 10 * * *'
8
- workflow_dispatch:
9
- inputs:
10
- check-ci:
11
- description: "Require the CI to have passed for this commit"
12
- required: true
13
- default: "yes"
14
- version:
15
- description: "Override the release version number (e.g. 8.0.0a5)"
16
10
 
17
11
  jobs:
18
12
  deploy-pypi:
@@ -41,7 +35,7 @@ jobs:
41
35
  # We need extglob for REFERENCE_BRANCH substitution
42
36
  shell: bash -l -O extglob {0}
43
37
  steps:
44
- - uses: actions/checkout@v5
38
+ - uses: actions/checkout@v6
45
39
  with:
46
40
  token: ${{ github.token }}
47
41
  - run: |
@@ -63,57 +57,21 @@ jobs:
63
57
  - name: Validate README for PyPI
64
58
  run: |
65
59
  python -m readme_renderer README.md -o /tmp/README.html
66
- - name: Prepare release notes
67
- run: |
68
- set -xeuo pipefail
69
- IFS=$'\n\t'
70
- # Needed for the advanced pattern matching used in REFERENCE_BRANCH
71
- PREV_VERSION=$(git describe --tags --abbrev=0)
72
- # In case of manual trigger,
73
- # GITHUB_REF is of the form refs/heads/main -> we want main
74
- # In case of PR it is of the form refs/pull/59/merge -> we want pull/59/merge
75
- REFERENCE_BRANCH=${GITHUB_REF##refs*(/heads)/}
76
- echo "Making release notes for ${REFERENCE_BRANCH} since ${PREV_VERSION}"
77
- (git log ${PREV_VERSION}...${REFERENCE_BRANCH} --oneline --no-merges --) > release.notes.new
78
- cat release.notes.new
79
- - name: Create tag if required
60
+ - name: Extract version from tag
80
61
  id: check-tag
81
62
  run: |
82
63
  set -xeuo pipefail
83
64
  IFS=$'\n\t'
84
- # Only do a real release for workflow_dispatch events
85
- if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
86
- echo "Will create a real release"
87
- export NEW_VERSION="v${{ github.event.inputs.version }}"
88
- if [[ "${NEW_VERSION}" == "v" ]]; then
89
- # If version wasn't given as an input to the workflow, use setuptools_scm to guess while removing "dev" portion of the version number
90
- NEW_VERSION=v$(python -m setuptools_scm | sed 's@Guessed Version @@g' | sed -E 's@(\.dev|\+g).+@@g')
91
- export NEW_VERSION
92
- fi
93
- echo "Release will be named $NEW_VERSION"
94
- # Validate the version
95
- # Ensure the version doesn't look like a PEP-440 "dev release" (which might happen if the automatic version bump has issues)
96
- python -c $'from packaging.version import Version; v = Version('"'$NEW_VERSION'"$')\nif v.is_devrelease:\n raise ValueError(v)'
97
- # Make sure we always only create pre-releases
98
- python -c $'from packaging.version import Version; v = Version('"'$NEW_VERSION'"$')\nif not v.is_prerelease:\n raise ValueError("integration should only be used for pre-releases")'
99
- # Commit the release notes
100
- mv release.notes release.notes.old
101
- cat release.notes.old
102
- (echo -e "[${NEW_VERSION}]" && cat release.notes.new release.notes.old) > release.notes
103
- ###################3
104
- # TODO: we should add the release notes somewhere at some point
105
- # now we just don't do it because main branch is protected
106
- # and we can't push directly from the CI
107
- #git add release.notes
108
- #git commit -m "docs: Add release notes for $NEW_VERSION"
109
- # Stash is mandatory not to leave the repo dirty
110
- git stash
111
- ########################
112
- git show
113
- # Create the tag
114
- git tag "$NEW_VERSION"
65
+ # Check if this is a tag push
66
+ if [[ "${{ github.ref }}" == refs/tags/* ]]; then
67
+ # Extract version from the tag
68
+ export NEW_VERSION="${GITHUB_REF#refs/tags/}"
69
+ echo "Deploying release $NEW_VERSION"
115
70
  echo "create-release=true" >> $GITHUB_OUTPUT
116
71
  echo "new-version=$NEW_VERSION" >> $GITHUB_OUTPUT
72
+ else
73
+ echo "Not a tag push, skipping release"
74
+ echo "create-release=false" >> $GITHUB_OUTPUT
117
75
  fi
118
76
  - name: Build distributions
119
77
  run: |
@@ -124,26 +82,11 @@ jobs:
124
82
  # Also build the diracx metapackage
125
83
  python -m build --outdir $PWD/dist .
126
84
  - name: 'Upload Artifact'
127
- uses: actions/upload-artifact@v4
85
+ uses: actions/upload-artifact@v6
128
86
  with:
129
87
  name: diracx-whl
130
88
  path: dist/diracx*.whl
131
89
  retention-days: 5
132
- - name: Make release on GitHub
133
- if: steps.check-tag.outputs.create-release == 'true'
134
- run: |
135
- set -e
136
- export NEW_VERSION=${{ steps.check-tag.outputs.new-version }}
137
- REFERENCE_BRANCH=${GITHUB_REF##refs*(/heads)/}
138
- echo "Pushing tagged release notes to ${REFERENCE_BRANCH}"
139
- git push "origin" "${REFERENCE_BRANCH}"
140
- echo "Making GitHub release for ${NEW_VERSION}"
141
- .github/workflows/make_release.py \
142
- --repo="${{ github.repository }}" \
143
- --token="${{ secrets.GITHUB_TOKEN }}" \
144
- --version="${NEW_VERSION}" \
145
- --rev="$(git rev-parse HEAD)" \
146
- --release-notes-fn="release.notes.new"
147
90
  # Use trusted publisher for pypi
148
91
  # https://docs.pypi.org/trusted-publishers/
149
92
  - name: Publish package on PyPI
@@ -156,7 +99,7 @@ jobs:
156
99
  runs-on: ubuntu-latest
157
100
  steps:
158
101
  - name: Checkout
159
- uses: actions/checkout@v5
102
+ uses: actions/checkout@v6
160
103
  - name: Set up QEMU
161
104
  uses: docker/setup-qemu-action@v3
162
105
  - name: Set up Docker Buildx
@@ -168,7 +111,7 @@ jobs:
168
111
  username: ${{ github.actor }}
169
112
  password: ${{ secrets.GITHUB_TOKEN }}
170
113
  - name: Download diracx wheels
171
- uses: actions/download-artifact@v5
114
+ uses: actions/download-artifact@v7
172
115
  with:
173
116
  name: diracx-whl
174
117
  - name: "Find wheels"
@@ -190,7 +133,7 @@ jobs:
190
133
  push: ${{ needs.deploy-pypi.outputs.create-release == 'true' }}
191
134
  tags: "ghcr.io/diracgrid/diracx/client:${{ needs.deploy-pypi.outputs.new-version }}"
192
135
  platforms: linux/amd64,linux/arm64
193
- build-args: EXTRA_PACKAGES_TO_INSTALL=DIRACCommon~=9.0.0a1
136
+ build-args: EXTRA_PACKAGES_TO_INSTALL=DIRACCommon~=9.0.0
194
137
  - name: Build and push services (release)
195
138
  uses: docker/build-push-action@v6
196
139
  if: ${{ needs.deploy-pypi.outputs.create-release == 'true' }}
@@ -199,7 +142,7 @@ jobs:
199
142
  push: ${{ needs.deploy-pypi.outputs.create-release == 'true' }}
200
143
  tags: "ghcr.io/diracgrid/diracx/services:${{ needs.deploy-pypi.outputs.new-version }}"
201
144
  platforms: linux/amd64,linux/arm64
202
- build-args: EXTRA_PACKAGES_TO_INSTALL=DIRACCommon~=9.0.0a1
145
+ build-args: EXTRA_PACKAGES_TO_INSTALL=DIRACCommon~=9.0.0
203
146
 
204
147
  - name: Build and push client (dev)
205
148
  uses: docker/build-push-action@v6
@@ -229,12 +172,12 @@ jobs:
229
172
  if: ${{ needs.deploy-pypi.outputs.create-release == 'true' }}
230
173
  steps:
231
174
  - name: Checkout diracx
232
- uses: actions/checkout@v5
175
+ uses: actions/checkout@v6
233
176
  with:
234
177
  path: diracx
235
178
 
236
179
  - name: Checkout diracx-charts
237
- uses: actions/checkout@v5
180
+ uses: actions/checkout@v6
238
181
  with:
239
182
  repository: DIRACGrid/diracx-charts
240
183
  token: ${{ secrets.CHARTS_UPDATE_TOKEN }}
@@ -293,8 +236,7 @@ jobs:
293
236
  - Update image tag to ${{ steps.update-versions.outputs.diracx_version }}
294
237
  - Bump chart version from ${{ steps.update-versions.outputs.current_chart_version }} to ${{ steps.update-versions.outputs.new_chart_version }}"
295
238
 
296
- # Push the commit to main branch
297
- git push origin main
239
+ git push origin master
298
240
 
299
241
  echo "✅ Successfully pushed chart version ${{ steps.update-versions.outputs.new_chart_version }} and tag ${TAG_NAME}"
300
242
  else
@@ -23,7 +23,7 @@ jobs:
23
23
  dirac-branch:
24
24
  - integration
25
25
  steps:
26
- - uses: actions/checkout@v5
26
+ - uses: actions/checkout@v6
27
27
  - uses: actions/setup-python@v6
28
28
  with:
29
29
  python-version: '3.11'
@@ -75,7 +75,7 @@ jobs:
75
75
  docker logs diracx 2>&1 | tee /tmp/service-logs/diracx.log
76
76
  cd /tmp/DIRACRepo
77
77
  ./integration_tests.py logs --no-follow --lines 1000 2>&1 | tee /tmp/service-logs/dirac.log
78
- - uses: actions/upload-artifact@v4
78
+ - uses: actions/upload-artifact@v6
79
79
  if: ${{ failure() }}
80
80
  with:
81
81
  name: service-logs-${{ github.job }}
@@ -17,12 +17,12 @@ jobs:
17
17
  runs-on: ubuntu-latest
18
18
  steps:
19
19
  - name: Checkout code
20
- uses: actions/checkout@v5
21
- - uses: prefix-dev/setup-pixi@v0.9.0
20
+ uses: actions/checkout@v6
21
+ - uses: prefix-dev/setup-pixi@v0.9.3
22
22
  with:
23
23
  run-install: false
24
24
  post-cleanup: false
25
- - uses: prefix-dev/setup-pixi@v0.9.0
25
+ - uses: prefix-dev/setup-pixi@v0.9.3
26
26
  with:
27
27
  cache: false
28
28
  environments: shellcheck
@@ -52,8 +52,8 @@ jobs:
52
52
  - gubbins-cli
53
53
  steps:
54
54
  - name: Checkout code
55
- uses: actions/checkout@v5
56
- - uses: prefix-dev/setup-pixi@v0.9.0
55
+ uses: actions/checkout@v6
56
+ - uses: prefix-dev/setup-pixi@v0.9.3
57
57
  with:
58
58
  run-install: false
59
59
  post-cleanup: false
@@ -64,14 +64,14 @@ jobs:
64
64
  rm pixi.toml.bak
65
65
  # Show any changes
66
66
  git diff
67
- - uses: prefix-dev/setup-pixi@v0.9.0
67
+ - uses: prefix-dev/setup-pixi@v0.9.3
68
68
  with:
69
69
  cache: false
70
70
  environments: ${{ matrix.package }}
71
71
  - name: Run pytest
72
72
  run: pixi run pytest-${{ matrix.package }} --cov-report=xml:coverage.xml --junitxml=report.xml
73
73
  - name: Upload coverage report
74
- uses: codecov/codecov-action@v5.5.1
74
+ uses: codecov/codecov-action@v5.5.2
75
75
 
76
76
  pytest-integration:
77
77
  runs-on: ubuntu-latest
@@ -82,9 +82,29 @@ jobs:
82
82
  - diracx
83
83
  - gubbins
84
84
  steps:
85
+ - name: Free disk space
86
+ run: |
87
+ echo "Before cleanup:"
88
+ df -h
89
+
90
+ # remove .NET SDKs
91
+ sudo rm -rf /usr/share/dotnet || true
92
+ # remove Android SDK
93
+ sudo rm -rf usr/local/lib/android || true
94
+ # remove Haskell Compiler
95
+ sudo rm -rf /opt/ghc || true
96
+ sudo rm -rf /usr/local/.ghcup || true
97
+
98
+ sudo apt-get clean || echo "::warning::The command [sudo apt-get clean] failed to complete successfully. Proceeding..."
99
+
100
+ # prune docker
101
+ docker system prune -af || true
102
+
103
+ echo "After cleanup:"
104
+ df -h
85
105
  - name: Checkout code
86
- uses: actions/checkout@v5
87
- - uses: prefix-dev/setup-pixi@v0.9.0
106
+ uses: actions/checkout@v6
107
+ - uses: prefix-dev/setup-pixi@v0.9.3
88
108
  with:
89
109
  run-install: false
90
110
  post-cleanup: false
@@ -95,7 +115,7 @@ jobs:
95
115
  rm pixi.toml.bak
96
116
  # Show any changes
97
117
  git diff
98
- - uses: prefix-dev/setup-pixi@v0.9.0
118
+ - uses: prefix-dev/setup-pixi@v0.9.3
99
119
  with:
100
120
  cache: false
101
121
  environments: ${{ matrix.extension == 'diracx' && 'default' || 'default-gubbins' }}
@@ -135,6 +155,9 @@ jobs:
135
155
  if: ${{ matrix.extension == 'gubbins' }}
136
156
  run: |
137
157
  docker load --input /tmp/gubbins_services_image.tar
158
+ # Free up disk space by removing the tarball after loading the image
159
+ rm -Rf /tmp/gubbins_services_image.tar
160
+ docker builder prune -af || true
138
161
  docker image ls -a
139
162
  - name: Start demo
140
163
  run: |
@@ -144,27 +167,38 @@ jobs:
144
167
  demo_args+=("--enable-open-telemetry")
145
168
  demo_args+=("--enable-coverage")
146
169
  demo_args+=("--exit-when-done")
147
- demo_args+=("--set-value" "developer.autoReload=false")
148
170
  demo_args+=("--ci-values" "../diracx-charts/demo/ci_values.yaml")
149
171
 
150
172
  declare -a demo_source_dirs=("$PWD")
151
173
 
174
+ # Download helm/kubectl/kind first
175
+ ../diracx-charts/run_demo.sh --only-download-deps
176
+
152
177
  if [ ${{ matrix.extension }} == 'gubbins' ]; then
178
+ demo_args+=("--set-value" "diracx.developer.autoReload=false")
179
+
153
180
  # We have to copy the code to another directory
154
181
  # and make it a git repository by itself because otherwise the
155
- # root in the pyproject to do not make sense once mounted
182
+ # root in the pyproject do not make sense once mounted
156
183
  # in the containers.
157
184
  cp -r ./extensions/gubbins /tmp/
158
185
  sed -i 's@../..@.@g' /tmp/gubbins/pyproject.toml
159
186
  sed -i 's@../../@@g' /tmp/gubbins/gubbins-*/pyproject.toml
160
187
  git init /tmp/gubbins/
161
188
 
189
+ # Copy gubbins-charts to a temporary location and build dependencies
190
+ cp -r ./extensions/gubbins-charts /tmp/
191
+ ../diracx-charts/.demo/helm dependency build /tmp/gubbins-charts
192
+
193
+ demo_args+=("--extension-chart-path" "/tmp/gubbins-charts")
162
194
  demo_args+=("--ci-values" "./extensions/gubbins_values.yaml")
163
195
  demo_args+=("--load-docker-image" "gubbins/services:dev")
164
196
  demo_source_dirs+=("/tmp/gubbins/")
165
197
  elif [ ${{ matrix.extension }} != 'diracx' ]; then
166
198
  echo "Unknown extension: ${{ matrix.extension }}"
167
199
  exit 1
200
+ else
201
+ demo_args+=("--set-value" "developer.autoReload=false")
168
202
  fi
169
203
 
170
204
  # Run the demo with the provided arguments
@@ -195,7 +229,7 @@ jobs:
195
229
  run: |
196
230
  pixi run -e ${{ matrix.extension == 'diracx' && 'default' || 'default-gubbins' }} python -m diracx.testing coverage collect-demo --demo-dir=../diracx-charts/.demo
197
231
  - name: Upload coverage report
198
- uses: codecov/codecov-action@v5.5.1
232
+ uses: codecov/codecov-action@v5.5.2
199
233
  with:
200
234
  files: ./coverage-pytest.xml,./coverage-demo.xml
201
235
 
@@ -207,12 +241,12 @@ jobs:
207
241
  package: [diracx, gubbins]
208
242
  steps:
209
243
  - name: Checkout code
210
- uses: actions/checkout@v5
211
- - uses: prefix-dev/setup-pixi@v0.9.0
244
+ uses: actions/checkout@v6
245
+ - uses: prefix-dev/setup-pixi@v0.9.3
212
246
  with:
213
247
  run-install: false
214
248
  post-cleanup: false
215
- - uses: prefix-dev/setup-pixi@v0.9.0
249
+ - uses: prefix-dev/setup-pixi@v0.9.3
216
250
  with:
217
251
  cache: false
218
252
  locked: false
@@ -0,0 +1,20 @@
1
+ on:
2
+ push:
3
+ branches:
4
+ - main
5
+
6
+ permissions:
7
+ contents: write
8
+ issues: write
9
+ pull-requests: write
10
+
11
+ name: release-please
12
+
13
+ jobs:
14
+ release-please:
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - uses: googleapis/release-please-action@v4
18
+ with:
19
+ token: ${{ secrets.MY_RELEASE_PLEASE_TOKEN }}
20
+ release-type: simple
@@ -16,7 +16,7 @@ jobs:
16
16
 
17
17
  steps:
18
18
  - name: Checkout repository
19
- uses: actions/checkout@v5
19
+ uses: actions/checkout@v6
20
20
 
21
21
  - name: Set up Python
22
22
  uses: actions/setup-python@v6
@@ -74,7 +74,7 @@ jobs:
74
74
 
75
75
  - name: Create Pull Request
76
76
  if: steps.update_script.outputs.changes_made == 'true'
77
- uses: peter-evans/create-pull-request@v7
77
+ uses: peter-evans/create-pull-request@v8
78
78
  with:
79
79
  token: ${{ secrets.GITHUB_TOKEN }}
80
80
  commit-message: "chore(security): Update security.txt expiry date"
@@ -16,7 +16,7 @@ jobs:
16
16
  runs-on: ubuntu-latest
17
17
  steps:
18
18
  - name: Checkout
19
- uses: actions/checkout@v5
19
+ uses: actions/checkout@v6
20
20
  with:
21
21
  fetch-depth: 0
22
22
  tags: true
@@ -29,7 +29,7 @@ jobs:
29
29
  output: "client-dev-vulnerability-report.sarif"
30
30
 
31
31
  - name: Upload SARIF to GitHub Security (client:dev)
32
- uses: github/codeql-action/upload-sarif@v3
32
+ uses: github/codeql-action/upload-sarif@v4
33
33
  with:
34
34
  sarif_file: "client-dev-vulnerability-report.sarif"
35
35
  category: "client-dev"
@@ -43,7 +43,7 @@ jobs:
43
43
  skip-setup-trivy: true
44
44
 
45
45
  - name: Upload SARIF to GitHub Security (services:dev)
46
- uses: github/codeql-action/upload-sarif@v3
46
+ uses: github/codeql-action/upload-sarif@v4
47
47
  with:
48
48
  sarif_file: "services-dev-vulnerability-report.sarif"
49
49
  category: "services-dev"
@@ -70,7 +70,7 @@ jobs:
70
70
 
71
71
  - name: Upload SARIF to GitHub Security (client:rel)
72
72
  if: ${{ steps.get-latest-tag.outputs.latest_tag != '' }}
73
- uses: github/codeql-action/upload-sarif@v3
73
+ uses: github/codeql-action/upload-sarif@v4
74
74
  with:
75
75
  sarif_file: "client-rel-vulnerability-report.sarif"
76
76
  category: "client-rel"
@@ -86,7 +86,7 @@ jobs:
86
86
 
87
87
  - name: Upload SARIF to GitHub Security (services:rel)
88
88
  if: ${{ steps.get-latest-tag.outputs.latest_tag != '' }}
89
- uses: github/codeql-action/upload-sarif@v3
89
+ uses: github/codeql-action/upload-sarif@v4
90
90
  with:
91
91
  sarif_file: "services-rel-vulnerability-report.sarif"
92
92
  category: "services-rel"
@@ -14,7 +14,7 @@ default_stages: [pre-commit]
14
14
 
15
15
  repos:
16
16
  - repo: https://github.com/compilerla/conventional-pre-commit
17
- rev: v4.2.0
17
+ rev: v4.3.0
18
18
  hooks:
19
19
  - id: conventional-pre-commit
20
20
  stages: [commit-msg]
@@ -30,14 +30,14 @@ repos:
30
30
  - id: check-added-large-files
31
31
 
32
32
  - repo: https://github.com/astral-sh/ruff-pre-commit
33
- rev: 'v0.13.0'
33
+ rev: 'v0.14.11'
34
34
  hooks:
35
35
  - id: ruff
36
36
  args: ["--fix", "--show-fixes"]
37
37
  - id: ruff-format
38
38
 
39
39
  - repo: https://github.com/pre-commit/mirrors-mypy
40
- rev: v1.18.1
40
+ rev: v1.19.1
41
41
  hooks:
42
42
  - id: mypy
43
43
  additional_dependencies:
@@ -46,15 +46,17 @@ repos:
46
46
  - types-PyYAML
47
47
  - types-cachetools
48
48
  - types-requests
49
+ - types-python-dateutil
49
50
  - types-aiobotocore[essential]
50
51
  - boto3-stubs[essential]
51
52
  exclude: ^(diracx-client/src/diracx/client/_generated|diracx-[a-z]+/tests/|diracx-testing/|build|extensions/gubbins/gubbins-client/src/gubbins/client/_generated)
52
53
 
53
54
  - repo: https://github.com/executablebooks/mdformat
54
- rev: 0.7.22
55
+ rev: 1.0.0
55
56
  hooks:
56
57
  - id: mdformat
57
58
  args: ["--number"]
59
+ exclude: ^CHANGELOG\.md$
58
60
  additional_dependencies:
59
61
  - mdformat-mkdocs
60
62
  - mdformat-gfm
@@ -0,0 +1,38 @@
1
+ # Changelog
2
+
3
+ ## [0.0.3](https://github.com/DIRACGrid/diracx/compare/v0.0.2...v0.0.3) (2026-01-19)
4
+
5
+
6
+ ### Features
7
+
8
+ * add gubbins-charts Helm chart for gubbins extension ([#691](https://github.com/DIRACGrid/diracx/issues/691)) ([649f318](https://github.com/DIRACGrid/diracx/commit/649f318daa8eeaec177cfde4bc2830a2a89a9058))
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * do not use Any from pyparsing ([#725](https://github.com/DIRACGrid/diracx/issues/725)) ([b3873a1](https://github.com/DIRACGrid/diracx/commit/b3873a1d8859b670ac61e4d124a91a38f2e9c807))
14
+ * ensure database commits complete before HTTP responses ([#722](https://github.com/DIRACGrid/diracx/issues/722)) ([4685790](https://github.com/DIRACGrid/diracx/commit/46857909b9259c13e8603b2cbaecb212d3229784))
15
+ * exclude CHANGELOG.md from mdformat ([639026a](https://github.com/DIRACGrid/diracx/commit/639026a19605afd8ae94c67f36bd90b5c381b45b))
16
+ * move cern-specific config option from diracx to lhcbdiracx ([#694](https://github.com/DIRACGrid/diracx/issues/694)) ([927d51b](https://github.com/DIRACGrid/diracx/commit/927d51bb8cf21b5e4f82c53b7e04bf0e72435806))
17
+ * support additional config hints ([#690](https://github.com/DIRACGrid/diracx/issues/690)) ([c265a47](https://github.com/DIRACGrid/diracx/commit/c265a47363850662502bb7f0fb8ebbbe94893e85))
18
+
19
+
20
+ ### Miscellaneous Chores
21
+
22
+ * release 0.0.3 ([dbc726c](https://github.com/DIRACGrid/diracx/commit/dbc726c2e6ac1ed5555b8144b01fea71b5e897ba))
23
+
24
+ ## [0.0.2](https://github.com/DIRACGrid/diracx/compare/v0.0.1...v0.0.2) (2025-10-22)
25
+
26
+ ### Bug Fixes
27
+
28
+ - correct release-please integration in deployment workflow ([#683](https://github.com/DIRACGrid/diracx/issues/683)) ([0084328](https://github.com/DIRACGrid/diracx/commit/00843286b49a2a075226ad47af746d03b9413d60))
29
+
30
+ ## [0.0.1](https://github.com/DIRACGrid/diracx/compare/v0.0.1...v0.0.1) (2025-10-22)
31
+
32
+ ### Features
33
+
34
+ - DiracX is here! This is the companion release of DIRAC v9 and the first non-prerelease version of DiracX.
35
+
36
+ ### Miscellaneous Chores
37
+
38
+ - release 0.0.1 ([615014d](https://github.com/DIRACGrid/diracx/commit/615014dcf87d985c7b286b1c8d94e4c4520d8463))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: diracx
3
- Version: 0.0.1a50
3
+ Version: 0.0.3
4
4
  Summary: Client installation for users of DiracX installations
5
5
  License: GPL-3.0-only
6
6
  License-File: LICENSE
@@ -129,7 +129,7 @@ async def logout():
129
129
  # Revoke refresh token
130
130
  try:
131
131
  await api.auth.revoke_refresh_token_by_refresh_token(
132
- client_id=api.client_id, refresh_token=credentials.refresh_token
132
+ client_id=api.client_id, token=credentials.refresh_token
133
133
  )
134
134
  except Exception as e:
135
135
  print(f"Error revoking the refresh token {e!r}")
@@ -35,7 +35,6 @@ from ...operations._operations import (
35
35
  build_auth_initiate_authorization_flow_request,
36
36
  build_auth_initiate_device_flow_request,
37
37
  build_auth_revoke_refresh_token_by_jti_request,
38
- build_auth_revoke_refresh_token_by_refresh_token_request,
39
38
  build_auth_userinfo_request,
40
39
  build_config_serve_config_request,
41
40
  build_jobs_add_heartbeat_request,
@@ -293,6 +292,7 @@ class AuthOperations: # pylint: disable=abstract-class-instantiated
293
292
  raise_if_not_implemented(
294
293
  self.__class__,
295
294
  [
295
+ "revoke_refresh_token_by_refresh_token",
296
296
  "get_oidc_token",
297
297
  ],
298
298
  )
@@ -583,59 +583,6 @@ class AuthOperations: # pylint: disable=abstract-class-instantiated
583
583
 
584
584
  return deserialized # type: ignore
585
585
 
586
- @distributed_trace_async
587
- async def revoke_refresh_token_by_refresh_token(self, *, refresh_token: str, client_id: str, **kwargs: Any) -> str:
588
- """Revoke Refresh Token By Refresh Token.
589
-
590
- Revoke a refresh token.
591
-
592
- :keyword refresh_token: Required.
593
- :paramtype refresh_token: str
594
- :keyword client_id: Required.
595
- :paramtype client_id: str
596
- :return: str
597
- :rtype: str
598
- :raises ~azure.core.exceptions.HttpResponseError:
599
- """
600
- error_map: MutableMapping = {
601
- 401: ClientAuthenticationError,
602
- 404: ResourceNotFoundError,
603
- 409: ResourceExistsError,
604
- 304: ResourceNotModifiedError,
605
- }
606
- error_map.update(kwargs.pop("error_map", {}) or {})
607
-
608
- _headers = kwargs.pop("headers", {}) or {}
609
- _params = kwargs.pop("params", {}) or {}
610
-
611
- cls: ClsType[str] = kwargs.pop("cls", None)
612
-
613
- _request = build_auth_revoke_refresh_token_by_refresh_token_request(
614
- refresh_token=refresh_token,
615
- client_id=client_id,
616
- headers=_headers,
617
- params=_params,
618
- )
619
- _request.url = self._client.format_url(_request.url)
620
-
621
- _stream = False
622
- pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access
623
- _request, stream=_stream, **kwargs
624
- )
625
-
626
- response = pipeline_response.http_response
627
-
628
- if response.status_code not in [200]:
629
- map_error(status_code=response.status_code, response=response, error_map=error_map)
630
- raise HttpResponseError(response=response)
631
-
632
- deserialized = self._deserialize("str", pipeline_response.http_response)
633
-
634
- if cls:
635
- return cls(pipeline_response, deserialized, {}) # type: ignore
636
-
637
- return deserialized # type: ignore
638
-
639
586
  @distributed_trace_async
640
587
  async def revoke_refresh_token_by_jti(self, jti: str, **kwargs: Any) -> str:
641
588
  """Revoke Refresh Token By Jti.
@@ -14,6 +14,7 @@ if TYPE_CHECKING:
14
14
  from ._models import ( # type: ignore
15
15
  BodyAuthGetOidcToken,
16
16
  BodyAuthGetOidcTokenGrantType,
17
+ BodyAuthRevokeRefreshTokenByRefreshToken,
17
18
  BodyJobsRescheduleJobs,
18
19
  BodyJobsUnassignBulkJobsSandboxes,
19
20
  GroupInfo,
@@ -65,6 +66,7 @@ from ._patch import patch_sdk as _patch_sdk
65
66
  __all__ = [
66
67
  "BodyAuthGetOidcToken",
67
68
  "BodyAuthGetOidcTokenGrantType",
69
+ "BodyAuthRevokeRefreshTokenByRefreshToken",
68
70
  "BodyJobsRescheduleJobs",
69
71
  "BodyJobsUnassignBulkJobsSandboxes",
70
72
  "GroupInfo",