diracx 0.0.6__tar.gz → 0.0.8__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 (462) hide show
  1. diracx-0.0.8/.github/scripts/collect-k8s-debug-info.sh +122 -0
  2. {diracx-0.0.6 → diracx-0.0.8}/.github/workflows/deployment.yml +2 -0
  3. {diracx-0.0.6 → diracx-0.0.8}/.github/workflows/generate_pixi_tasks_doc.py +2 -0
  4. {diracx-0.0.6 → diracx-0.0.8}/.github/workflows/integration.yml +2 -0
  5. {diracx-0.0.6 → diracx-0.0.8}/.github/workflows/main.yml +12 -25
  6. {diracx-0.0.6 → diracx-0.0.8}/.github/workflows/update_chart_version.py +1 -1
  7. {diracx-0.0.6 → diracx-0.0.8}/.gitignore +4 -0
  8. {diracx-0.0.6 → diracx-0.0.8}/.pre-commit-config.yaml +30 -15
  9. diracx-0.0.8/CHANGELOG.md +111 -0
  10. {diracx-0.0.6 → diracx-0.0.8}/PKG-INFO +1 -1
  11. diracx-0.0.8/diracx-cli/src/diracx/cli/__init__.py +36 -0
  12. {diracx-0.0.6 → diracx-0.0.8}/diracx-cli/src/diracx/cli/internal/legacy.py +6 -6
  13. {diracx-0.0.6 → diracx-0.0.8}/diracx-cli/src/diracx/cli/jobs.py +5 -1
  14. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/aio/operations/_operations.py +33 -18
  15. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/operations/_operations.py +33 -18
  16. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/patches/auth/aio.py +1 -1
  17. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/patches/client/common.py +1 -1
  18. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/patches/jobs/common.py +1 -1
  19. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/patches/utils.py +1 -1
  20. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/tests/test_auth.py +1 -1
  21. {diracx-0.0.6 → diracx-0.0.8}/diracx-core/src/diracx/core/config/schema.py +138 -9
  22. {diracx-0.0.6 → diracx-0.0.8}/diracx-core/src/diracx/core/config/sources.py +22 -21
  23. {diracx-0.0.6 → diracx-0.0.8}/diracx-core/src/diracx/core/extensions.py +20 -4
  24. diracx-0.0.8/diracx-core/src/diracx/core/models/__init__.py +12 -0
  25. diracx-0.0.8/diracx-core/src/diracx/core/models/auth.py +102 -0
  26. diracx-0.0.6/diracx-core/src/diracx/core/models.py → diracx-0.0.8/diracx-core/src/diracx/core/models/job.py +15 -197
  27. diracx-0.0.8/diracx-core/src/diracx/core/models/replica_map.py +211 -0
  28. diracx-0.0.8/diracx-core/src/diracx/core/models/sandbox.py +37 -0
  29. diracx-0.0.8/diracx-core/src/diracx/core/models/search.py +61 -0
  30. {diracx-0.0.6 → diracx-0.0.8}/diracx-core/src/diracx/core/preferences.py +1 -1
  31. {diracx-0.0.6 → diracx-0.0.8}/diracx-core/src/diracx/core/properties.py +1 -3
  32. {diracx-0.0.6 → diracx-0.0.8}/diracx-core/src/diracx/core/resources.py +2 -2
  33. {diracx-0.0.6 → diracx-0.0.8}/diracx-core/src/diracx/core/s3.py +1 -1
  34. {diracx-0.0.6 → diracx-0.0.8}/diracx-core/src/diracx/core/settings.py +99 -10
  35. {diracx-0.0.6 → diracx-0.0.8}/diracx-core/src/diracx/core/utils.py +38 -15
  36. {diracx-0.0.6 → diracx-0.0.8}/diracx-core/tests/test_config_source.py +28 -4
  37. {diracx-0.0.6 → diracx-0.0.8}/diracx-core/tests/test_entry_points.py +4 -2
  38. {diracx-0.0.6 → diracx-0.0.8}/diracx-core/tests/test_extensions.py +3 -2
  39. diracx-0.0.8/diracx-core/tests/test_replica_map.py +392 -0
  40. {diracx-0.0.6 → diracx-0.0.8}/diracx-core/tests/test_s3.py +3 -3
  41. {diracx-0.0.6 → diracx-0.0.8}/diracx-core/tests/test_utils.py +118 -1
  42. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/os/utils.py +12 -15
  43. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/auth/db.py +10 -6
  44. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/auth/schema.py +6 -6
  45. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/dummy/db.py +1 -2
  46. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/job/db.py +6 -4
  47. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/job_logging/db.py +6 -4
  48. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/job_logging/schema.py +7 -4
  49. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/sandbox_metadata/db.py +47 -49
  50. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/utils/base.py +7 -6
  51. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/tests/auth/test_refresh_token.py +9 -6
  52. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/tests/jobs/test_job_db.py +1 -1
  53. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/tests/jobs/test_job_logging_db.py +1 -1
  54. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/tests/jobs/test_sandbox_metadata.py +2 -1
  55. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/tests/opensearch/test_connection.py +1 -1
  56. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/tests/opensearch/test_search.py +87 -174
  57. {diracx-0.0.6 → diracx-0.0.8}/diracx-logic/src/diracx/logic/auth/authorize_code_flow.py +1 -1
  58. {diracx-0.0.6 → diracx-0.0.8}/diracx-logic/src/diracx/logic/auth/device_flow.py +3 -5
  59. {diracx-0.0.6 → diracx-0.0.8}/diracx-logic/src/diracx/logic/auth/management.py +5 -4
  60. {diracx-0.0.6 → diracx-0.0.8}/diracx-logic/src/diracx/logic/auth/token.py +2 -2
  61. {diracx-0.0.6 → diracx-0.0.8}/diracx-logic/src/diracx/logic/auth/utils.py +5 -3
  62. {diracx-0.0.6 → diracx-0.0.8}/diracx-logic/src/diracx/logic/auth/well_known.py +1 -1
  63. {diracx-0.0.6 → diracx-0.0.8}/diracx-logic/src/diracx/logic/jobs/query.py +1 -1
  64. {diracx-0.0.6 → diracx-0.0.8}/diracx-logic/src/diracx/logic/jobs/sandboxes.py +65 -32
  65. {diracx-0.0.6 → diracx-0.0.8}/diracx-logic/src/diracx/logic/jobs/status.py +3 -3
  66. {diracx-0.0.6 → diracx-0.0.8}/diracx-logic/src/diracx/logic/jobs/submission.py +2 -2
  67. {diracx-0.0.6 → diracx-0.0.8}/diracx-logic/src/diracx/logic/jobs/utils.py +2 -1
  68. {diracx-0.0.6 → diracx-0.0.8}/diracx-logic/src/diracx/logic/task_queues/priority.py +1 -1
  69. {diracx-0.0.6 → diracx-0.0.8}/diracx-logic/tests/jobs/test_sandboxes.py +4 -5
  70. {diracx-0.0.6 → diracx-0.0.8}/diracx-logic/tests/jobs/test_status.py +3 -2
  71. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/pyproject.toml +3 -3
  72. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/src/diracx/routers/access_policies.py +15 -13
  73. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/src/diracx/routers/auth/authorize_code_flow.py +1 -0
  74. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/src/diracx/routers/auth/device_flow.py +6 -5
  75. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/src/diracx/routers/auth/management.py +7 -3
  76. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/src/diracx/routers/auth/token.py +2 -1
  77. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/src/diracx/routers/auth/well_known.py +1 -1
  78. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/src/diracx/routers/factory.py +15 -14
  79. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/src/diracx/routers/health/probes.py +1 -1
  80. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/src/diracx/routers/jobs/access_policies.py +4 -2
  81. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/src/diracx/routers/jobs/query.py +7 -4
  82. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/src/diracx/routers/jobs/sandboxes.py +1 -1
  83. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/src/diracx/routers/jobs/status.py +2 -1
  84. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/src/diracx/routers/jobs/submission.py +1 -1
  85. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/src/diracx/routers/otel.py +1 -0
  86. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/src/diracx/routers/utils/users.py +3 -2
  87. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/tests/auth/test_standard.py +18 -6
  88. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/tests/jobs/test_query.py +1 -1
  89. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/tests/jobs/test_status.py +1 -1
  90. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/tests/test_policy.py +5 -4
  91. {diracx-0.0.6 → diracx-0.0.8}/diracx-testing/pyproject.toml +2 -1
  92. {diracx-0.0.6 → diracx-0.0.8}/diracx-testing/src/diracx/testing/entrypoints.py +3 -1
  93. {diracx-0.0.6 → diracx-0.0.8}/diracx-testing/src/diracx/testing/mock_osdb.py +1 -1
  94. {diracx-0.0.6 → diracx-0.0.8}/diracx-testing/src/diracx/testing/osdb.py +63 -0
  95. {diracx-0.0.6 → diracx-0.0.8}/diracx-testing/src/diracx/testing/utils.py +10 -10
  96. {diracx-0.0.6 → diracx-0.0.8}/docs/admin/explanations/configuration.md +7 -0
  97. diracx-0.0.8/docs/admin/reference/env-variables.md +173 -0
  98. diracx-0.0.8/docs/admin/reference/env-variables.md.j2 +11 -0
  99. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/explanations/components/api.md +2 -1
  100. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/explanations/components/cli.md +3 -2
  101. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/explanations/components/routes.md +22 -10
  102. diracx-0.0.8/docs/dev/explanations/documentation-system.md +115 -0
  103. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/reference/coding-conventions.md +4 -2
  104. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/reference/dependency-injection.md +1 -1
  105. diracx-0.0.8/docs/dev/reference/env-variables.md +16 -0
  106. diracx-0.0.8/docs/dev/reference/env-variables.md.j2 +7 -0
  107. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/reference/pixi-tasks.md +4 -0
  108. diracx-0.0.8/docs/templates/_render_class.jinja +40 -0
  109. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/operations/_operations.py +33 -18
  110. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/operations/_operations.py +33 -18
  111. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-core/src/gubbins/core/models.py +1 -1
  112. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-routers/pyproject.toml +1 -1
  113. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-routers/tests/test_gubbins_job_manager.py +1 -1
  114. {diracx-0.0.6 → diracx-0.0.8}/mkdocs.yml +1 -0
  115. {diracx-0.0.6 → diracx-0.0.8}/pixi.toml +18 -1
  116. diracx-0.0.8/pyproject.toml +174 -0
  117. diracx-0.0.8/scripts/generate_settings_docs.py +440 -0
  118. {diracx-0.0.6 → diracx-0.0.8}/tests/make_token_local.py +1 -1
  119. diracx-0.0.6/CHANGELOG.md +0 -70
  120. diracx-0.0.6/diracx-cli/src/diracx/cli/__init__.py +0 -31
  121. diracx-0.0.6/docs/admin/reference/env-variables.md +0 -39
  122. diracx-0.0.6/docs/dev/reference/env-variables.md +0 -5
  123. diracx-0.0.6/pyproject.toml +0 -182
  124. {diracx-0.0.6 → diracx-0.0.8}/.coveragerc +0 -0
  125. {diracx-0.0.6 → diracx-0.0.8}/.gitattributes +0 -0
  126. {diracx-0.0.6 → diracx-0.0.8}/.github/dependabot.yml +0 -0
  127. {diracx-0.0.6 → diracx-0.0.8}/.github/workflows/release-please.yml +0 -0
  128. {diracx-0.0.6 → diracx-0.0.8}/.github/workflows/update_security_txt_expiry.yml +0 -0
  129. {diracx-0.0.6 → diracx-0.0.8}/.github/workflows/vulnerabilities.yml +0 -0
  130. {diracx-0.0.6 → diracx-0.0.8}/.readthedocs.yaml +0 -0
  131. {diracx-0.0.6 → diracx-0.0.8}/LICENSE +0 -0
  132. {diracx-0.0.6 → diracx-0.0.8}/MANIFEST.in +0 -0
  133. {diracx-0.0.6 → diracx-0.0.8}/README.md +0 -0
  134. {diracx-0.0.6 → diracx-0.0.8}/codecov.yml +0 -0
  135. {diracx-0.0.6 → diracx-0.0.8}/containers/client/Dockerfile +0 -0
  136. {diracx-0.0.6 → diracx-0.0.8}/containers/services/Dockerfile +0 -0
  137. {diracx-0.0.6 → diracx-0.0.8}/diracx-api/README.md +0 -0
  138. {diracx-0.0.6 → diracx-0.0.8}/diracx-api/pyproject.toml +0 -0
  139. {diracx-0.0.6 → diracx-0.0.8}/diracx-api/src/diracx/api/__init__.py +0 -0
  140. {diracx-0.0.6 → diracx-0.0.8}/diracx-api/src/diracx/api/jobs.py +0 -0
  141. {diracx-0.0.6 → diracx-0.0.8}/diracx-api/src/diracx/api/py.typed +0 -0
  142. {diracx-0.0.6 → diracx-0.0.8}/diracx-api/src/diracx/api/utils.py +0 -0
  143. {diracx-0.0.6 → diracx-0.0.8}/diracx-api/tests/test_jobs.py +0 -0
  144. {diracx-0.0.6 → diracx-0.0.8}/diracx-api/tests/test_utils.py +0 -0
  145. {diracx-0.0.6 → diracx-0.0.8}/diracx-cli/README.md +0 -0
  146. {diracx-0.0.6 → diracx-0.0.8}/diracx-cli/pyproject.toml +0 -0
  147. {diracx-0.0.6 → diracx-0.0.8}/diracx-cli/src/diracx/cli/__main__.py +0 -0
  148. {diracx-0.0.6 → diracx-0.0.8}/diracx-cli/src/diracx/cli/auth.py +0 -0
  149. {diracx-0.0.6 → diracx-0.0.8}/diracx-cli/src/diracx/cli/config.py +0 -0
  150. {diracx-0.0.6 → diracx-0.0.8}/diracx-cli/src/diracx/cli/internal/__init__.py +0 -0
  151. {diracx-0.0.6 → diracx-0.0.8}/diracx-cli/src/diracx/cli/internal/config.py +0 -0
  152. {diracx-0.0.6 → diracx-0.0.8}/diracx-cli/src/diracx/cli/py.typed +0 -0
  153. {diracx-0.0.6 → diracx-0.0.8}/diracx-cli/src/diracx/cli/utils.py +0 -0
  154. {diracx-0.0.6 → diracx-0.0.8}/diracx-cli/tests/legacy/cs_sync/integration_test.cfg +0 -0
  155. {diracx-0.0.6 → diracx-0.0.8}/diracx-cli/tests/legacy/cs_sync/integration_test.yaml +0 -0
  156. {diracx-0.0.6 → diracx-0.0.8}/diracx-cli/tests/legacy/cs_sync/integration_test_buggy.cfg +0 -0
  157. {diracx-0.0.6 → diracx-0.0.8}/diracx-cli/tests/legacy/cs_sync/integration_test_secret.cfg +0 -0
  158. {diracx-0.0.6 → diracx-0.0.8}/diracx-cli/tests/legacy/cs_sync/test_cssync.py +0 -0
  159. {diracx-0.0.6 → diracx-0.0.8}/diracx-cli/tests/legacy/test_legacy.py +0 -0
  160. {diracx-0.0.6 → diracx-0.0.8}/diracx-cli/tests/test_internal.py +0 -0
  161. {diracx-0.0.6 → diracx-0.0.8}/diracx-cli/tests/test_jobs.py +0 -0
  162. {diracx-0.0.6 → diracx-0.0.8}/diracx-cli/tests/test_login.py +0 -0
  163. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/README.md +0 -0
  164. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/pyproject.toml +0 -0
  165. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/_diracx_client_importer.pth +0 -0
  166. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/_client_importer.py +0 -0
  167. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/__init__.py +0 -0
  168. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/__init__.py +0 -0
  169. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/_client.py +0 -0
  170. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/_configuration.py +0 -0
  171. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/_patch.py +0 -0
  172. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/_serialization.py +0 -0
  173. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/_utils/__init__.py +0 -0
  174. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/_utils/serialization.py +0 -0
  175. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/_utils/utils.py +0 -0
  176. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/_vendor.py +0 -0
  177. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/aio/__init__.py +0 -0
  178. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/aio/_client.py +0 -0
  179. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/aio/_configuration.py +0 -0
  180. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/aio/_patch.py +0 -0
  181. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/aio/_vendor.py +0 -0
  182. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/aio/operations/__init__.py +0 -0
  183. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/aio/operations/_patch.py +0 -0
  184. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/models/__init__.py +0 -0
  185. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/models/_enums.py +0 -0
  186. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/models/_models.py +0 -0
  187. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/models/_patch.py +0 -0
  188. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/operations/__init__.py +0 -0
  189. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/operations/_patch.py +0 -0
  190. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/_generated/py.typed +0 -0
  191. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/aio.py +0 -0
  192. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/models.py +0 -0
  193. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/patches/auth/common.py +0 -0
  194. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/patches/auth/sync.py +0 -0
  195. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/patches/client/aio.py +0 -0
  196. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/patches/client/sync.py +0 -0
  197. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/patches/jobs/aio.py +0 -0
  198. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/patches/jobs/sync.py +0 -0
  199. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/py.typed +0 -0
  200. {diracx-0.0.6 → diracx-0.0.8}/diracx-client/src/diracx/client/sync.py +0 -0
  201. {diracx-0.0.6 → diracx-0.0.8}/diracx-core/README.md +0 -0
  202. {diracx-0.0.6 → diracx-0.0.8}/diracx-core/pyproject.toml +0 -0
  203. {diracx-0.0.6 → diracx-0.0.8}/diracx-core/src/diracx/core/__init__.py +0 -0
  204. {diracx-0.0.6 → diracx-0.0.8}/diracx-core/src/diracx/core/config/__init__.py +0 -0
  205. {diracx-0.0.6 → diracx-0.0.8}/diracx-core/src/diracx/core/exceptions.py +0 -0
  206. {diracx-0.0.6 → diracx-0.0.8}/diracx-core/src/diracx/core/py.typed +0 -0
  207. {diracx-0.0.6 → diracx-0.0.8}/diracx-core/tests/test_resources.py +0 -0
  208. {diracx-0.0.6 → diracx-0.0.8}/diracx-core/tests/test_schema_legacy_adaptor.py +0 -0
  209. {diracx-0.0.6 → diracx-0.0.8}/diracx-core/tests/test_secrets.py +0 -0
  210. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/README.md +0 -0
  211. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/pyproject.toml +0 -0
  212. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/__init__.py +0 -0
  213. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/__main__.py +0 -0
  214. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/exceptions.py +0 -0
  215. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/os/__init__.py +0 -0
  216. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/os/job_parameters.py +0 -0
  217. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/py.typed +0 -0
  218. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/__init__.py +0 -0
  219. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/auth/__init__.py +0 -0
  220. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/dummy/__init__.py +0 -0
  221. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/dummy/schema.py +0 -0
  222. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/job/__init__.py +0 -0
  223. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/job/schema.py +0 -0
  224. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/job_logging/__init__.py +0 -0
  225. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/pilot_agents/__init__.py +0 -0
  226. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/pilot_agents/db.py +0 -0
  227. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/pilot_agents/schema.py +0 -0
  228. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/sandbox_metadata/__init__.py +0 -0
  229. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/sandbox_metadata/schema.py +0 -0
  230. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/task_queue/__init__.py +0 -0
  231. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/task_queue/db.py +0 -0
  232. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/task_queue/schema.py +0 -0
  233. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/utils/__init__.py +0 -0
  234. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/utils/functions.py +0 -0
  235. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/src/diracx/db/sql/utils/types.py +0 -0
  236. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/tests/auth/test_authorization_flow.py +0 -0
  237. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/tests/auth/test_device_flow.py +0 -0
  238. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/tests/opensearch/test_index_template.py +0 -0
  239. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/tests/pilot_agents/__init__.py +0 -0
  240. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/tests/pilot_agents/test_pilot_agents_db.py +0 -0
  241. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/tests/test_dummy_db.py +0 -0
  242. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/tests/test_freeze_time.py +0 -0
  243. {diracx-0.0.6 → diracx-0.0.8}/diracx-db/tests/utils/test_uuid.py +0 -0
  244. {diracx-0.0.6 → diracx-0.0.8}/diracx-logic/README.md +0 -0
  245. {diracx-0.0.6 → diracx-0.0.8}/diracx-logic/pyproject.toml +0 -0
  246. {diracx-0.0.6 → diracx-0.0.8}/diracx-logic/src/diracx/logic/__init__.py +0 -0
  247. {diracx-0.0.6 → diracx-0.0.8}/diracx-logic/src/diracx/logic/__main__.py +0 -0
  248. {diracx-0.0.6 → diracx-0.0.8}/diracx-logic/src/diracx/logic/auth/__init__.py +0 -0
  249. {diracx-0.0.6 → diracx-0.0.8}/diracx-logic/src/diracx/logic/jobs/__init__.py +0 -0
  250. {diracx-0.0.6 → diracx-0.0.8}/diracx-logic/src/diracx/logic/py.typed +0 -0
  251. {diracx-0.0.6 → diracx-0.0.8}/diracx-logic/src/diracx/logic/task_queues/__init__.py +0 -0
  252. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/README.md +0 -0
  253. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/src/diracx/routers/__init__.py +0 -0
  254. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/src/diracx/routers/auth/__init__.py +0 -0
  255. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/src/diracx/routers/auth/utils.py +0 -0
  256. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/src/diracx/routers/configuration.py +0 -0
  257. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/src/diracx/routers/dependencies.py +0 -0
  258. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/src/diracx/routers/fastapi_classes.py +0 -0
  259. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/src/diracx/routers/health/__init__.py +0 -0
  260. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/src/diracx/routers/jobs/__init__.py +0 -0
  261. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/src/diracx/routers/jobs/legacy.py +0 -0
  262. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/src/diracx/routers/py.typed +0 -0
  263. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/src/diracx/routers/utils/__init__.py +0 -0
  264. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/tests/auth/test_legacy_exchange.py +0 -0
  265. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/tests/data/idp-server.invalid/.well-known/openid-configuration +0 -0
  266. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/tests/health/test_probes.py +0 -0
  267. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/tests/jobs/conftest.py +0 -0
  268. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/tests/jobs/test_sandboxes.py +0 -0
  269. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/tests/jobs/test_wms_access_policy.py +0 -0
  270. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/tests/test_config_manager.py +0 -0
  271. {diracx-0.0.6 → diracx-0.0.8}/diracx-routers/tests/test_generic.py +0 -0
  272. {diracx-0.0.6 → diracx-0.0.8}/diracx-testing/README.md +0 -0
  273. {diracx-0.0.6 → diracx-0.0.8}/diracx-testing/src/diracx/testing/__init__.py +0 -0
  274. {diracx-0.0.6 → diracx-0.0.8}/diracx-testing/src/diracx/testing/__main__.py +0 -0
  275. {diracx-0.0.6 → diracx-0.0.8}/diracx-testing/src/diracx/testing/client_generation.py +0 -0
  276. {diracx-0.0.6 → diracx-0.0.8}/diracx-testing/src/diracx/testing/client_generation_pytest.py +0 -0
  277. {diracx-0.0.6 → diracx-0.0.8}/diracx-testing/src/diracx/testing/dummy_osdb.py +0 -0
  278. {diracx-0.0.6 → diracx-0.0.8}/diracx-testing/src/diracx/testing/routers.py +0 -0
  279. {diracx-0.0.6 → diracx-0.0.8}/diracx-testing/src/diracx/testing/scripts/collect_demo_coverage.sh +0 -0
  280. {diracx-0.0.6 → diracx-0.0.8}/diracx-testing/src/diracx/testing/time.py +0 -0
  281. {diracx-0.0.6 → diracx-0.0.8}/docs/SECURITY.md +0 -0
  282. {diracx-0.0.6 → diracx-0.0.8}/docs/admin/explanations/auth-with-diracx.md +0 -0
  283. {diracx-0.0.6 → diracx-0.0.8}/docs/admin/explanations/auth-with-external.md +0 -0
  284. {diracx-0.0.6 → diracx-0.0.8}/docs/admin/explanations/opentelemetry.md +0 -0
  285. {diracx-0.0.6 → diracx-0.0.8}/docs/admin/explanations/sandbox-store.md +0 -0
  286. {diracx-0.0.6 → diracx-0.0.8}/docs/admin/explanations/user-management.md +0 -0
  287. {diracx-0.0.6 → diracx-0.0.8}/docs/admin/how-to/install/connect.md +0 -0
  288. {diracx-0.0.6 → diracx-0.0.8}/docs/admin/how-to/install/convert-cs.md +0 -0
  289. {diracx-0.0.6 → diracx-0.0.8}/docs/admin/how-to/install/embracing.md +0 -0
  290. {diracx-0.0.6 → diracx-0.0.8}/docs/admin/how-to/install/index.md +0 -0
  291. {diracx-0.0.6 → diracx-0.0.8}/docs/admin/how-to/install/minimal-requirements.md +0 -0
  292. {diracx-0.0.6 → diracx-0.0.8}/docs/admin/how-to/install/register-a-vo.md +0 -0
  293. {diracx-0.0.6 → diracx-0.0.8}/docs/admin/how-to/install/register-the-admin-vo.md +0 -0
  294. {diracx-0.0.6 → diracx-0.0.8}/docs/admin/index.md +0 -0
  295. {diracx-0.0.6 → diracx-0.0.8}/docs/admin/reference/security_model.md +0 -0
  296. {diracx-0.0.6 → diracx-0.0.8}/docs/admin/reference/settings-and-preferences.md +0 -0
  297. {diracx-0.0.6 → diracx-0.0.8}/docs/admin/tutorials/authentication.md +0 -0
  298. {diracx-0.0.6 → diracx-0.0.8}/docs/assets/css/extra.css +0 -0
  299. {diracx-0.0.6 → diracx-0.0.8}/docs/assets/css/fontawesome-all.min.css +0 -0
  300. {diracx-0.0.6 → diracx-0.0.8}/docs/assets/css/images/arrow.svg +0 -0
  301. {diracx-0.0.6 → diracx-0.0.8}/docs/assets/css/images/overlay.png +0 -0
  302. {diracx-0.0.6 → diracx-0.0.8}/docs/assets/css/main.css +0 -0
  303. {diracx-0.0.6 → diracx-0.0.8}/docs/assets/home.html +0 -0
  304. {diracx-0.0.6 → diracx-0.0.8}/docs/assets/images/diracx-logo-square.svg +0 -0
  305. {diracx-0.0.6 → diracx-0.0.8}/docs/assets/images/logo.svg +0 -0
  306. {diracx-0.0.6 → diracx-0.0.8}/docs/assets/styles/extra.css +0 -0
  307. {diracx-0.0.6 → diracx-0.0.8}/docs/assets/webfonts/fa-brands-400.woff2 +0 -0
  308. {diracx-0.0.6 → diracx-0.0.8}/docs/assets/webfonts/fa-solid-900.woff +0 -0
  309. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/explanations/components/client.md +0 -0
  310. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/explanations/components/db.md +0 -0
  311. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/explanations/components/index.md +0 -0
  312. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/explanations/designing-functionality.md +0 -0
  313. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/explanations/extensions.md +0 -0
  314. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/explanations/index.md +0 -0
  315. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/explanations/testing.md +0 -0
  316. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/how-to/add-a-cli-command.md +0 -0
  317. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/how-to/add-a-db.md +0 -0
  318. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/how-to/add-a-route.md +0 -0
  319. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/how-to/add-a-setting.md +0 -0
  320. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/how-to/add-a-task.md +0 -0
  321. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/how-to/add-a-test.md +0 -0
  322. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/how-to/add-functionality/index.md +0 -0
  323. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/how-to/client-customization.md +0 -0
  324. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/how-to/client-extension.md +0 -0
  325. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/how-to/client-generation.md +0 -0
  326. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/how-to/contribute.md +0 -0
  327. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/how-to/develop-legacy-dirac.md +0 -0
  328. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/how-to/extend-diracx/index.md +0 -0
  329. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/how-to/use-the-demo/index.md +0 -0
  330. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/how-to/use-the-demo/swagger.md +0 -0
  331. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/how-to/use-the-demo/web.md +0 -0
  332. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/index.md +0 -0
  333. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/reference/application-state.md +0 -0
  334. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/reference/client-metapathfinder.md +0 -0
  335. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/reference/configuration.md +0 -0
  336. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/reference/db-transaction-model.md +0 -0
  337. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/reference/entrypoints.md +0 -0
  338. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/reference/security-policies.md +0 -0
  339. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/reference/security-properties.md +0 -0
  340. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/reference/test-recipes.md +0 -0
  341. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/reference/writing-tests.md +0 -0
  342. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/tutorials/advanced-tutorial.md +0 -0
  343. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/tutorials/develop-web.md +0 -0
  344. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/tutorials/getting-started.md +0 -0
  345. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/tutorials/larger-developments.md +0 -0
  346. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/tutorials/making-changes.md +0 -0
  347. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/tutorials/play-with-auth.md +0 -0
  348. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/tutorials/run-locally.md +0 -0
  349. {diracx-0.0.6 → diracx-0.0.8}/docs/dev/tutorials/write-docs.md +0 -0
  350. {diracx-0.0.6 → diracx-0.0.8}/docs/index.md +0 -0
  351. {diracx-0.0.6 → diracx-0.0.8}/docs/overrides/main.html +0 -0
  352. {diracx-0.0.6 → diracx-0.0.8}/docs/roadmap.md +0 -0
  353. {diracx-0.0.6 → diracx-0.0.8}/docs/user/index.md +0 -0
  354. {diracx-0.0.6 → diracx-0.0.8}/docs/user/reference/client-configuration.md +0 -0
  355. {diracx-0.0.6 → diracx-0.0.8}/docs/user/reference/known-installations.md +0 -0
  356. {diracx-0.0.6 → diracx-0.0.8}/docs/user/reference/programmatic-usage/command-line-interface.md +0 -0
  357. {diracx-0.0.6 → diracx-0.0.8}/docs/user/reference/programmatic-usage/https-interface.md +0 -0
  358. {diracx-0.0.6 → diracx-0.0.8}/docs/user/reference/programmatic-usage/index.md +0 -0
  359. {diracx-0.0.6 → diracx-0.0.8}/docs/user/reference/programmatic-usage/python-interface.md +0 -0
  360. {diracx-0.0.6 → diracx-0.0.8}/docs/user/tutorials/getting-started.md +0 -0
  361. {diracx-0.0.6 → diracx-0.0.8}/extensions/containers/client/Dockerfile +0 -0
  362. {diracx-0.0.6 → diracx-0.0.8}/extensions/containers/services/Dockerfile +0 -0
  363. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/.github/workflows/main.yml +0 -0
  364. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/README.md +0 -0
  365. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-api/README.md +0 -0
  366. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-api/pyproject.toml +0 -0
  367. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-api/src/gubbins/api/__init__.py +0 -0
  368. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-api/src/gubbins/api/py.typed +0 -0
  369. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-api/tests/test_gubbins_api.py +0 -0
  370. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-cli/README.md +0 -0
  371. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-cli/pyproject.toml +0 -0
  372. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-cli/src/gubbins/cli/__init__.py +0 -0
  373. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-cli/src/gubbins/cli/config.py +0 -0
  374. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-cli/src/gubbins/cli/lollygag.py +0 -0
  375. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-cli/src/gubbins/cli/py.typed +0 -0
  376. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-cli/tests/test_gubbins_cli.py +0 -0
  377. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/README.md +0 -0
  378. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/pyproject.toml +0 -0
  379. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/__init__.py +0 -0
  380. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/__init__.py +0 -0
  381. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_client.py +0 -0
  382. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_configuration.py +0 -0
  383. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_patch.py +0 -0
  384. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_serialization.py +0 -0
  385. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_utils/__init__.py +0 -0
  386. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_utils/serialization.py +0 -0
  387. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_utils/utils.py +0 -0
  388. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_vendor.py +0 -0
  389. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/__init__.py +0 -0
  390. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/_client.py +0 -0
  391. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/_configuration.py +0 -0
  392. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/_patch.py +0 -0
  393. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/_vendor.py +0 -0
  394. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/operations/__init__.py +0 -0
  395. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/operations/_patch.py +0 -0
  396. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/models/__init__.py +0 -0
  397. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/models/_enums.py +0 -0
  398. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/models/_models.py +0 -0
  399. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/operations/__init__.py +0 -0
  400. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/operations/_patch.py +0 -0
  401. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/py.typed +0 -0
  402. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/aio.py +0 -0
  403. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/models.py +0 -0
  404. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/py.typed +0 -0
  405. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/src/gubbins/client/sync.py +0 -0
  406. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-client/tests/test_gubbins_client.py +0 -0
  407. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-core/README.md +0 -0
  408. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-core/pyproject.toml +0 -0
  409. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-core/src/gubbins/core/__init__.py +0 -0
  410. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-core/src/gubbins/core/config/__init__.py +0 -0
  411. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-core/src/gubbins/core/config/schema.py +0 -0
  412. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-core/src/gubbins/core/properties.py +0 -0
  413. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-core/src/gubbins/core/py.typed +0 -0
  414. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-core/tests/test_config.py +0 -0
  415. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-core/tests/test_properties.py +0 -0
  416. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-db/README.md +0 -0
  417. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-db/pyproject.toml +0 -0
  418. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-db/src/gubbins/db/__init__.py +0 -0
  419. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-db/src/gubbins/db/py.typed +0 -0
  420. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/__init__.py +0 -0
  421. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/jobs/__init__.py +0 -0
  422. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/jobs/db.py +0 -0
  423. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/jobs/schema.py +0 -0
  424. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/lollygag/__init__.py +0 -0
  425. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/lollygag/db.py +0 -0
  426. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/lollygag/schema.py +0 -0
  427. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-db/tests/test_gubbins_job_db.py +0 -0
  428. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-db/tests/test_lollygag_db.py +0 -0
  429. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-logic/README.md +0 -0
  430. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-logic/pyproject.toml +0 -0
  431. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-logic/src/gubbins/logic/__init__.py +0 -0
  432. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-logic/src/gubbins/logic/auth/__init__.py +0 -0
  433. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-logic/src/gubbins/logic/auth/well_known.py +0 -0
  434. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-logic/src/gubbins/logic/lollygag/__init__.py +0 -0
  435. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-logic/src/gubbins/logic/lollygag/lollygag.py +0 -0
  436. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-logic/src/gubbins/logic/py.typed +0 -0
  437. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-logic/tests/test_gubbins_logic.py +0 -0
  438. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-routers/README.md +0 -0
  439. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-routers/src/gubbins/routers/__init__.py +0 -0
  440. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-routers/src/gubbins/routers/dependencies.py +0 -0
  441. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-routers/src/gubbins/routers/lollygag/__init__.py +0 -0
  442. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-routers/src/gubbins/routers/lollygag/access_policy.py +0 -0
  443. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-routers/src/gubbins/routers/lollygag/lollygag.py +0 -0
  444. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-routers/src/gubbins/routers/py.typed +0 -0
  445. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-routers/src/gubbins/routers/well_known.py +0 -0
  446. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-routers/tests/data/idp-server.invalid/.well-known/openid-configuration +0 -0
  447. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-routers/tests/test_lollybag.py +0 -0
  448. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-routers/tests/test_wellknown.py +0 -0
  449. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-testing/README.md +0 -0
  450. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-testing/pyproject.toml +0 -0
  451. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/gubbins-testing/src/gubbins/testing/__init__.py +0 -0
  452. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/pixi.toml +0 -0
  453. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/pyproject.toml +0 -0
  454. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins/release.notes +0 -0
  455. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins-charts/.gitignore +0 -0
  456. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins-charts/Chart.yaml +0 -0
  457. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins-charts/README.md +0 -0
  458. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins-charts/values.yaml +0 -0
  459. {diracx-0.0.6 → diracx-0.0.8}/extensions/gubbins_values.yaml +0 -0
  460. {diracx-0.0.6 → diracx-0.0.8}/run_local.sh +0 -0
  461. {diracx-0.0.6 → diracx-0.0.8}/tests/__init__.py +0 -0
  462. {diracx-0.0.6 → diracx-0.0.8}/tests/test_generic.py +0 -0
@@ -0,0 +1,122 @@
1
+ #!/usr/bin/env bash
2
+ # Collect Kubernetes debug information with GitHub Actions formatting
3
+ # Usage: collect-k8s-debug-info.sh <demo_dir> [service_prefix]
4
+ # demo_dir: Path to demo directory containing kube.conf
5
+ # service_prefix: Pod name prefix for main services (default: diracx)
6
+
7
+ set -euo pipefail
8
+
9
+ DEMO_DIR="${1:?Usage: $0 <demo_dir> [service_prefix]}"
10
+ SERVICE_PREFIX="${2:-diracx}"
11
+
12
+ export KUBECONFIG="${DEMO_DIR}/kube.conf"
13
+ export PATH="${DEMO_DIR}:$PATH"
14
+
15
+ INFRA_PODS="(dex|minio|mysql|rabbitmq|opensearch)"
16
+
17
+ # Function to output all info for a single pod
18
+ output_pod_info() {
19
+ local pod_name="$1"
20
+ local tail_arg=("${@:2}")
21
+
22
+ echo "=== Pod Description ==="
23
+ kubectl describe pod/"${pod_name}" 2>&1 || true
24
+
25
+ # Init containers
26
+ init_containers=$(kubectl get pods "$pod_name" -o jsonpath='{.spec.initContainers[*].name}' 2>/dev/null || true)
27
+ if [ -n "$init_containers" ]; then
28
+ echo ""
29
+ echo "=== Init Container Logs ==="
30
+ for container_name in $init_containers; do
31
+ echo "--- $container_name ---"
32
+ kubectl logs "${pod_name}" -c "${container_name}" "${tail_arg[@]}" 2>&1 || true
33
+ done
34
+ fi
35
+
36
+ # Main containers
37
+ echo ""
38
+ echo "=== Container Logs ==="
39
+ for container_name in $(kubectl get pods "$pod_name" -o jsonpath='{.spec.containers[*].name}'); do
40
+ echo "--- $container_name ---"
41
+ kubectl logs "${pod_name}" -c "${container_name}" "${tail_arg[@]}" 2>&1 || true
42
+ done
43
+ }
44
+
45
+ # === JOB SUMMARY ===
46
+ {
47
+ echo "## 🔍 Integration Test Debug Summary"
48
+ echo ""
49
+ echo "### Pod Status"
50
+ echo '```'
51
+ kubectl get pods -o wide
52
+ echo '```'
53
+ echo ""
54
+ } >> "${GITHUB_STEP_SUMMARY:-/dev/null}"
55
+
56
+ # === POD STATUS OVERVIEW ===
57
+ echo "::group::📋 Pod Status Overview"
58
+ kubectl get pods -o wide
59
+ echo "::endgroup::"
60
+
61
+ # === MAIN SERVICE PODS (shown first) ===
62
+ for pod_name in $(kubectl get pods -o json | jq -r '.items[] | .metadata.name' | grep -E "^${SERVICE_PREFIX}-" || true); do
63
+ echo "::group::🚀 ${pod_name}"
64
+ output_pod_info "$pod_name"
65
+ echo "::endgroup::"
66
+ done
67
+
68
+ # === OTHER APPLICATION PODS ===
69
+ for pod_name in $(kubectl get pods -o json | jq -r '.items[] | .metadata.name' | grep -vE "$INFRA_PODS" | grep -vE "^${SERVICE_PREFIX}-" || true); do
70
+ if [ -n "$pod_name" ]; then
71
+ echo "::group::📦 ${pod_name}"
72
+ output_pod_info "$pod_name"
73
+ echo "::endgroup::"
74
+ fi
75
+ done
76
+
77
+ # === INFRASTRUCTURE PODS ===
78
+ for pod_name in $(kubectl get pods -o json | jq -r '.items[] | .metadata.name' | grep -E "$INFRA_PODS" || true); do
79
+ echo "::group::🏗️ ${pod_name}"
80
+ output_pod_info "$pod_name" --tail=100
81
+ echo "::endgroup::"
82
+ done
83
+
84
+ # === ERROR SUMMARY WITH ANNOTATIONS ===
85
+ echo "::group::⚠️ Error Summary"
86
+ error_count=0
87
+ for pod_name in $(kubectl get pods -o json | jq -r '.items[] | .metadata.name' | grep -E "^${SERVICE_PREFIX}-" || true); do
88
+ for container_name in $(kubectl get pods "$pod_name" -o jsonpath='{.spec.containers[*].name}'); do
89
+ errors=$(kubectl logs "${pod_name}" -c "${container_name}" 2>&1 | grep -iE "(ERROR|CRITICAL|Exception|Traceback)" | head -5 || true)
90
+ if [ -n "$errors" ]; then
91
+ echo "Errors in ${pod_name}/${container_name}:"
92
+ echo "$errors"
93
+ echo ""
94
+ # Add annotation (limited to avoid exceeding quota)
95
+ if [ $error_count -lt 8 ]; then
96
+ first_error=$(echo "$errors" | head -1 | cut -c1-200)
97
+ echo "::warning title=Error in ${pod_name}/${container_name}::${first_error}"
98
+ ((error_count++)) || true
99
+ fi
100
+ fi
101
+ done
102
+ done
103
+ if [ $error_count -eq 0 ]; then
104
+ echo "No errors found in ${SERVICE_PREFIX} service logs"
105
+ fi
106
+ echo "::endgroup::"
107
+
108
+ # === CHECK FOR DEMO SUCCESS ===
109
+ if [ ! -f "${DEMO_DIR}/.success" ]; then
110
+ echo "::error title=Demo Failed::Demo did not complete successfully"
111
+ {
112
+ echo ""
113
+ echo "## ❌ Demo Failed"
114
+ echo '```'
115
+ cat "${DEMO_DIR}/.failed" 2>/dev/null || echo "No failure details available"
116
+ echo '```'
117
+ } >> "${GITHUB_STEP_SUMMARY:-/dev/null}"
118
+ cat "${DEMO_DIR}/.failed" 2>/dev/null || true
119
+ exit 1
120
+ fi
121
+
122
+ echo "✅ Demo completed successfully"
@@ -5,6 +5,8 @@ on:
5
5
  tags:
6
6
  - 'v*'
7
7
  pull_request:
8
+ paths-ignore:
9
+ - 'CHANGELOG.md'
8
10
  schedule:
9
11
  - cron: '0 10 * * *'
10
12
 
@@ -18,6 +18,8 @@ def get_task_group(task_name):
18
18
  return "Client Generation"
19
19
  if task_name == "shellcheck":
20
20
  return "Shellcheck"
21
+ if task_name.startswith("generate-settings-"):
22
+ return "Settings"
21
23
  return "Default"
22
24
 
23
25
 
@@ -7,6 +7,8 @@ on:
7
7
  pull_request:
8
8
  branches:
9
9
  - main
10
+ paths-ignore:
11
+ - 'CHANGELOG.md'
10
12
 
11
13
  defaults:
12
14
  run:
@@ -7,6 +7,8 @@ on:
7
7
  pull_request:
8
8
  branches:
9
9
  - main
10
+ paths-ignore:
11
+ - 'CHANGELOG.md'
10
12
 
11
13
  concurrency:
12
14
  group: ${{ github.workflow }}-${{ github.ref }}
@@ -18,11 +20,11 @@ jobs:
18
20
  steps:
19
21
  - name: Checkout code
20
22
  uses: actions/checkout@v6
21
- - uses: prefix-dev/setup-pixi@v0.9.3
23
+ - uses: prefix-dev/setup-pixi@v0.9.4
22
24
  with:
23
25
  run-install: false
24
26
  post-cleanup: false
25
- - uses: prefix-dev/setup-pixi@v0.9.3
27
+ - uses: prefix-dev/setup-pixi@v0.9.4
26
28
  with:
27
29
  cache: false
28
30
  environments: shellcheck
@@ -53,7 +55,7 @@ jobs:
53
55
  steps:
54
56
  - name: Checkout code
55
57
  uses: actions/checkout@v6
56
- - uses: prefix-dev/setup-pixi@v0.9.3
58
+ - uses: prefix-dev/setup-pixi@v0.9.4
57
59
  with:
58
60
  run-install: false
59
61
  post-cleanup: false
@@ -64,7 +66,7 @@ jobs:
64
66
  rm pixi.toml.bak
65
67
  # Show any changes
66
68
  git diff
67
- - uses: prefix-dev/setup-pixi@v0.9.3
69
+ - uses: prefix-dev/setup-pixi@v0.9.4
68
70
  with:
69
71
  cache: false
70
72
  environments: ${{ matrix.package }}
@@ -104,7 +106,7 @@ jobs:
104
106
  df -h
105
107
  - name: Checkout code
106
108
  uses: actions/checkout@v6
107
- - uses: prefix-dev/setup-pixi@v0.9.3
109
+ - uses: prefix-dev/setup-pixi@v0.9.4
108
110
  with:
109
111
  run-install: false
110
112
  post-cleanup: false
@@ -115,7 +117,7 @@ jobs:
115
117
  rm pixi.toml.bak
116
118
  # Show any changes
117
119
  git diff
118
- - uses: prefix-dev/setup-pixi@v0.9.3
120
+ - uses: prefix-dev/setup-pixi@v0.9.4
119
121
  with:
120
122
  cache: false
121
123
  environments: ${{ matrix.extension == 'diracx' && 'default' || 'default-gubbins' }}
@@ -205,23 +207,8 @@ jobs:
205
207
  set -x
206
208
  ../diracx-charts/run_demo.sh "${demo_args[@]}" "${demo_source_dirs[@]}"
207
209
  - name: Debugging information
208
- run: |
209
- DIRACX_DEMO_DIR=$PWD/../diracx-charts/.demo
210
- export KUBECONFIG=${DIRACX_DEMO_DIR}/kube.conf
211
- export PATH=${DIRACX_DEMO_DIR}:$PATH
212
- kubectl get pods
213
- for pod_name in $(kubectl get pods -o json | jq -r '.items[] | .metadata.name' | grep -vE '(dex|minio|mysql|rabbitmq|opensearch)'); do
214
- echo "${pod_name}"
215
- kubectl describe pod/"${pod_name}" || true
216
- for container_name in $(kubectl get pods $pod_name -o jsonpath='{.spec.initContainers[*].name} {.spec.containers[*].name}'); do
217
- echo $pod_name $container_name
218
- kubectl logs "${pod_name}" -c "${container_name}" || true
219
- done
220
- done
221
- if [ ! -f "${DIRACX_DEMO_DIR}/.success" ]; then
222
- cat "${DIRACX_DEMO_DIR}/.failed"
223
- exit 1
224
- fi
210
+ if: always()
211
+ run: .github/scripts/collect-k8s-debug-info.sh "$PWD/../diracx-charts/.demo" "${{ matrix.extension == 'gubbins' && 'gubbins' || 'diracx' }}"
225
212
  - name: Run pytest
226
213
  run: |
227
214
  pixi run pytest-${{ matrix.extension }} --demo-dir="$PWD/../diracx-charts/" --cov-report=xml:coverage-pytest.xml --junitxml=report.xml
@@ -242,11 +229,11 @@ jobs:
242
229
  steps:
243
230
  - name: Checkout code
244
231
  uses: actions/checkout@v6
245
- - uses: prefix-dev/setup-pixi@v0.9.3
232
+ - uses: prefix-dev/setup-pixi@v0.9.4
246
233
  with:
247
234
  run-install: false
248
235
  post-cleanup: false
249
- - uses: prefix-dev/setup-pixi@v0.9.3
236
+ - uses: prefix-dev/setup-pixi@v0.9.4
250
237
  with:
251
238
  cache: false
252
239
  locked: false
@@ -221,7 +221,7 @@ def lookup_dependency_chart_version(
221
221
 
222
222
 
223
223
  def main() -> None:
224
- """Main function."""
224
+ """Run the Main."""
225
225
  parser = argparse.ArgumentParser(
226
226
  description="Update chart versions for DiracX release"
227
227
  )
@@ -96,3 +96,7 @@ docs/source/_build
96
96
  .pixi
97
97
  pixi.lock
98
98
  *.egg-info
99
+ docs/templates/_builtin_markdown.jinja
100
+
101
+ # docs site
102
+ site
@@ -8,7 +8,7 @@ default_language_version:
8
8
  python: python3
9
9
 
10
10
  ci:
11
- skip: [generate-pixi-docs]
11
+ skip: [generate-pixi-docs, settings-doc-check]
12
12
 
13
13
  default_stages: [pre-commit]
14
14
 
@@ -30,9 +30,9 @@ repos:
30
30
  - id: check-added-large-files
31
31
 
32
32
  - repo: https://github.com/astral-sh/ruff-pre-commit
33
- rev: 'v0.14.13'
33
+ rev: "v0.14.14"
34
34
  hooks:
35
- - id: ruff
35
+ - id: ruff-check
36
36
  args: ["--fix", "--show-fixes"]
37
37
  - id: ruff-format
38
38
 
@@ -51,29 +51,35 @@ repos:
51
51
  - boto3-stubs[essential]
52
52
  exclude: ^(diracx-client/src/diracx/client/_generated|diracx-[a-z]+/tests/|diracx-testing/|build|extensions/gubbins/gubbins-client/src/gubbins/client/_generated)
53
53
 
54
- - repo: https://github.com/executablebooks/mdformat
54
+ - repo: https://github.com/hukkin/mdformat
55
55
  rev: 1.0.0
56
56
  hooks:
57
- - id: mdformat
58
- args: ["--number"]
59
- exclude: ^CHANGELOG\.md$
60
- additional_dependencies:
61
- - mdformat-mkdocs
62
- - mdformat-gfm
63
- - mdformat-black
57
+ - id: mdformat
58
+ args: ["--number"]
59
+ exclude: ^CHANGELOG\.md$
60
+ additional_dependencies:
61
+ - mdformat-mkdocs
62
+ - mdformat-gfm
64
63
 
65
64
  - repo: https://github.com/codespell-project/codespell
66
65
  rev: v2.4.1
67
66
  hooks:
68
- - id: codespell
69
- args: ["-w"]
67
+ - id: codespell
68
+ args: ["-w"]
69
+
70
+ - repo: https://github.com/adamchainz/blacken-docs
71
+ rev: 1.20.0
72
+ hooks:
73
+ - id: blacken-docs
74
+ additional_dependencies:
75
+ - black==22.12.0
70
76
 
71
77
  - repo: local
72
78
  hooks:
73
79
  - id: check-lollygag
74
80
  name: check for lollygag
75
81
  types: [python]
76
- entry: '(?i)lollygag'
82
+ entry: "(?i)lollygag"
77
83
  language: pygrep
78
84
  files: ^diracx
79
85
 
@@ -84,4 +90,13 @@ repos:
84
90
  entry: pixi run -e default python .github/workflows/generate_pixi_tasks_doc.py
85
91
  language: system
86
92
  pass_filenames: false
87
- files: ^pixi\.toml$|^pixi\.lock$ # only run if pixi files change
93
+ files: ^pixi\.toml$|^pixi\.lock$ # only run if pixi files change
94
+
95
+ - repo: local
96
+ hooks:
97
+ - id: settings-doc-check
98
+ name: Generate settings documentation
99
+ entry: pixi run -e default python scripts/generate_settings_docs.py
100
+ language: system
101
+ pass_filenames: false
102
+ files: ^(diracx-.*/src/diracx/.*/settings\.py|docs/.*\.j2|docs/templates/.*\.jinja|scripts/generate_settings_docs\.py)$
@@ -0,0 +1,111 @@
1
+ # Changelog
2
+
3
+ ## [0.0.8](https://github.com/DIRACGrid/diracx/compare/v0.0.7...v0.0.8) (2026-02-02)
4
+
5
+
6
+ ### Features
7
+
8
+ * allow git commit hash usage in config source revision ([#726](https://github.com/DIRACGrid/diracx/issues/726)) ([8b8b687](https://github.com/DIRACGrid/diracx/commit/8b8b687dc7a72a5a3bb904a338969351e64e6173))
9
+ * disallow relative paths with any depth other than zero ([82e7d15](https://github.com/DIRACGrid/diracx/commit/82e7d15effdf3b7d6807b9d287ca7f0549402f6e))
10
+
11
+
12
+ ### Bug Fixes
13
+
14
+ * add ci skip settings-doc-check ([ccb1f48](https://github.com/DIRACGrid/diracx/commit/ccb1f489902a45ceea2524ec3213968641db5e2e))
15
+ * added a StrEnum for Entrypoints to avoid spelling mistakes ([#744](https://github.com/DIRACGrid/diracx/issues/744)) ([19bfadc](https://github.com/DIRACGrid/diracx/commit/19bfadc1c473626dfe9f3a6489248c098056186e))
16
+ * annoying wrapper script ([ccb1f48](https://github.com/DIRACGrid/diracx/commit/ccb1f489902a45ceea2524ec3213968641db5e2e))
17
+ * cleanups ([ccb1f48](https://github.com/DIRACGrid/diracx/commit/ccb1f489902a45ceea2524ec3213968641db5e2e))
18
+ * cs conversion takes into account all the parent classes ([#753](https://github.com/DIRACGrid/diracx/issues/753)) ([b742a34](https://github.com/DIRACGrid/diracx/commit/b742a34150d9d925460de4db2c5eba0cb5eafd49))
19
+ * format ([0440a9c](https://github.com/DIRACGrid/diracx/commit/0440a9cecba1b2302630b5aae707b6162954332d))
20
+ * format settings doc files ([ccb1f48](https://github.com/DIRACGrid/diracx/commit/ccb1f489902a45ceea2524ec3213968641db5e2e))
21
+ * formatting ([0440a9c](https://github.com/DIRACGrid/diracx/commit/0440a9cecba1b2302630b5aae707b6162954332d))
22
+ * formatting and remove caching ([4ed2709](https://github.com/DIRACGrid/diracx/commit/4ed2709980338cb0e423ef5630bdf6796e4c7250))
23
+ * improve pytest-integration debugging output ([#740](https://github.com/DIRACGrid/diracx/issues/740)) ([d691175](https://github.com/DIRACGrid/diracx/commit/d691175438db532bd833ceecf1ad36ea3de29a5d))
24
+ * reorder imports ([4ed2709](https://github.com/DIRACGrid/diracx/commit/4ed2709980338cb0e423ef5630bdf6796e4c7250))
25
+ * set exclude=True on computed field ([4ed2709](https://github.com/DIRACGrid/diracx/commit/4ed2709980338cb0e423ef5630bdf6796e4c7250))
26
+ * skip CI on release-please PRs ([#759](https://github.com/DIRACGrid/diracx/issues/759)) ([f236f61](https://github.com/DIRACGrid/diracx/commit/f236f6185db30c0a7faa7fce7f280697484087eb)), closes [#685](https://github.com/DIRACGrid/diracx/issues/685)
27
+ * update tasks ([ccb1f48](https://github.com/DIRACGrid/diracx/commit/ccb1f489902a45ceea2524ec3213968641db5e2e))
28
+ * use batched DB deletes with SKIP LOCKED for sandbox cleanup ([#739](https://github.com/DIRACGrid/diracx/issues/739)) ([584d4e6](https://github.com/DIRACGrid/diracx/commit/584d4e62a87d1b2ffbf739e80fe44f9c0fb92c9a))
29
+ * well that didn't work ([ccb1f48](https://github.com/DIRACGrid/diracx/commit/ccb1f489902a45ceea2524ec3213968641db5e2e))
30
+
31
+
32
+ ### Miscellaneous Chores
33
+
34
+ * release 0.0.8 ([80f1a37](https://github.com/DIRACGrid/diracx/commit/80f1a376d8e9e51fab4f6b45d1e5bf66e73f8d4e))
35
+
36
+ ## [0.0.7](https://github.com/DIRACGrid/diracx/compare/v0.0.6...v0.0.7) (2026-01-20)
37
+
38
+
39
+ ### Bug Fixes
40
+
41
+ * add logging and retry for cache population failures ([#736](https://github.com/DIRACGrid/diracx/issues/736)) ([b899a8d](https://github.com/DIRACGrid/diracx/commit/b899a8d207a42b232fbe4062f329a32d64c37ec3))
42
+ * require fastapi&gt;=0.121.0 for Depends scope parameter ([#737](https://github.com/DIRACGrid/diracx/issues/737)) ([fb15f9c](https://github.com/DIRACGrid/diracx/commit/fb15f9c5bb9d36568e37f0fae7a2a78995f02d51))
43
+
44
+ ## [0.0.6](https://github.com/DIRACGrid/diracx/compare/v0.0.5...v0.0.6) (2026-01-20)
45
+
46
+
47
+ ### Bug Fixes
48
+
49
+ * use correct argument name for update_chart_version.py ([84390f0](https://github.com/DIRACGrid/diracx/commit/84390f0ec66bae4db342864da52810b26955c4bd))
50
+
51
+ ## [0.0.5](https://github.com/DIRACGrid/diracx/compare/v0.0.4...v0.0.5) (2026-01-20)
52
+
53
+
54
+ ### Features
55
+
56
+ * add logging for error conditions and edge cases ([#734](https://github.com/DIRACGrid/diracx/issues/734)) ([2c8b5c6](https://github.com/DIRACGrid/diracx/commit/2c8b5c682f17270e341deaf23cd4a7b4b7c4dd0a))
57
+ * extend update_chart_version.py for downstream charts ([#731](https://github.com/DIRACGrid/diracx/issues/731)) ([b1a293b](https://github.com/DIRACGrid/diracx/commit/b1a293b01ad062d162afdfb5377a76c95eb09913))
58
+
59
+
60
+ ### Bug Fixes
61
+
62
+ * use YAML parser for chart version to handle comments ([9516971](https://github.com/DIRACGrid/diracx/commit/95169716206bb476f450fff8fd228ada649fef5b))
63
+
64
+
65
+ ### Miscellaneous Chores
66
+
67
+ * release 0.0.5 ([c0f166b](https://github.com/DIRACGrid/diracx/commit/c0f166bf29e1ed0ac2b5aa89ebb39ac60cfe23d3))
68
+
69
+ ## [0.0.4](https://github.com/DIRACGrid/diracx/compare/v0.0.3...v0.0.4) (2026-01-19)
70
+
71
+
72
+ ### Bug Fixes
73
+
74
+ * use extension-aware Config discovery in testing fixture ([#727](https://github.com/DIRACGrid/diracx/issues/727)) ([49d0fb8](https://github.com/DIRACGrid/diracx/commit/49d0fb8c2718a5668f330219025832365119d15d))
75
+
76
+ ## [0.0.3](https://github.com/DIRACGrid/diracx/compare/v0.0.2...v0.0.3) (2026-01-19)
77
+
78
+
79
+ ### Features
80
+
81
+ * add gubbins-charts Helm chart for gubbins extension ([#691](https://github.com/DIRACGrid/diracx/issues/691)) ([649f318](https://github.com/DIRACGrid/diracx/commit/649f318daa8eeaec177cfde4bc2830a2a89a9058))
82
+
83
+
84
+ ### Bug Fixes
85
+
86
+ * do not use Any from pyparsing ([#725](https://github.com/DIRACGrid/diracx/issues/725)) ([b3873a1](https://github.com/DIRACGrid/diracx/commit/b3873a1d8859b670ac61e4d124a91a38f2e9c807))
87
+ * ensure database commits complete before HTTP responses ([#722](https://github.com/DIRACGrid/diracx/issues/722)) ([4685790](https://github.com/DIRACGrid/diracx/commit/46857909b9259c13e8603b2cbaecb212d3229784))
88
+ * exclude CHANGELOG.md from mdformat ([639026a](https://github.com/DIRACGrid/diracx/commit/639026a19605afd8ae94c67f36bd90b5c381b45b))
89
+ * 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))
90
+ * support additional config hints ([#690](https://github.com/DIRACGrid/diracx/issues/690)) ([c265a47](https://github.com/DIRACGrid/diracx/commit/c265a47363850662502bb7f0fb8ebbbe94893e85))
91
+
92
+
93
+ ### Miscellaneous Chores
94
+
95
+ * release 0.0.3 ([dbc726c](https://github.com/DIRACGrid/diracx/commit/dbc726c2e6ac1ed5555b8144b01fea71b5e897ba))
96
+
97
+ ## [0.0.2](https://github.com/DIRACGrid/diracx/compare/v0.0.1...v0.0.2) (2025-10-22)
98
+
99
+ ### Bug Fixes
100
+
101
+ - correct release-please integration in deployment workflow ([#683](https://github.com/DIRACGrid/diracx/issues/683)) ([0084328](https://github.com/DIRACGrid/diracx/commit/00843286b49a2a075226ad47af746d03b9413d60))
102
+
103
+ ## [0.0.1](https://github.com/DIRACGrid/diracx/compare/v0.0.1...v0.0.1) (2025-10-22)
104
+
105
+ ### Features
106
+
107
+ - DiracX is here! This is the companion release of DIRAC v9 and the first non-prerelease version of DiracX.
108
+
109
+ ### Miscellaneous Chores
110
+
111
+ - 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.6
3
+ Version: 0.0.8
4
4
  Summary: Client installation for users of DiracX installations
5
5
  License: GPL-3.0-only
6
6
  License-File: LICENSE
@@ -0,0 +1,36 @@
1
+ from __future__ import annotations
2
+
3
+ from diracx.core.extensions import DiracEntryPoint, select_from_extension
4
+
5
+ from .auth import app
6
+
7
+ __all__ = ("app",)
8
+
9
+
10
+ # Load all the sub commands
11
+ cli_names = set(
12
+ [
13
+ entry_point.name
14
+ for entry_point in select_from_extension(group=DiracEntryPoint.CLI)
15
+ ]
16
+ )
17
+ for cli_name in cli_names:
18
+ entry_point = select_from_extension(group=DiracEntryPoint.CLI, name=cli_name)[0]
19
+ app.add_typer(entry_point.load(), name=entry_point.name)
20
+
21
+
22
+ cli_hidden_names = set(
23
+ [
24
+ entry_point.name
25
+ for entry_point in select_from_extension(group=DiracEntryPoint.HIDDEN_CLI)
26
+ ]
27
+ )
28
+ for cli_name in cli_hidden_names:
29
+ entry_point = select_from_extension(
30
+ group=DiracEntryPoint.HIDDEN_CLI, name=cli_name
31
+ )[0]
32
+ app.add_typer(entry_point.load(), name=entry_point.name, hidden=True)
33
+
34
+
35
+ if __name__ == "__main__":
36
+ app()
@@ -21,7 +21,7 @@ from typer import Option
21
21
 
22
22
  from diracx.core.config import Config
23
23
  from diracx.core.config.schema import Field, SupportInfo
24
- from diracx.core.extensions import select_from_extension
24
+ from diracx.core.extensions import DiracEntryPoint, select_from_extension
25
25
 
26
26
  from ..utils import AsyncTyper
27
27
 
@@ -77,9 +77,9 @@ def cs_sync(old_file: Path, new_file: Path):
77
77
  )
78
78
 
79
79
  _apply_fixes(raw)
80
- config_class: Config = select_from_extension(group="diracx", name="config")[
81
- 0
82
- ].load()
80
+ config_class: Config = select_from_extension(
81
+ group=DiracEntryPoint.CORE, name="config"
82
+ )[0].load()
83
83
  config = config_class.model_validate(raw)
84
84
  new_file.write_text(
85
85
  yaml.safe_dump(config.model_dump(exclude_unset=True, mode="json"))
@@ -264,7 +264,7 @@ def generate_helm_values(
264
264
 
265
265
  from diracx.core.extensions import select_from_extension
266
266
 
267
- for entry_point in select_from_extension(group="diracx.dbs.sql"):
267
+ for entry_point in select_from_extension(group=DiracEntryPoint.SQL_DB):
268
268
  db_name = entry_point.name
269
269
  db_config = all_db_configs.get(db_name, {})
270
270
 
@@ -310,7 +310,7 @@ def generate_helm_values(
310
310
  },
311
311
  }
312
312
 
313
- for entry_point in select_from_extension(group="diracx.dbs.os"):
313
+ for entry_point in select_from_extension(group=DiracEntryPoint.OS_DB):
314
314
  db_name = entry_point.name
315
315
  db_config = all_db_configs.get(db_name, {})
316
316
 
@@ -13,7 +13,11 @@ from rich.table import Table
13
13
  from typer import FileText, Option
14
14
 
15
15
  from diracx.client.aio import AsyncDiracClient
16
- from diracx.core.models import ScalarSearchOperator, SearchSpec, VectorSearchOperator
16
+ from diracx.core.models.search import (
17
+ ScalarSearchOperator,
18
+ SearchSpec,
19
+ VectorSearchOperator,
20
+ )
17
21
  from diracx.core.preferences import OutputFormats, get_diracx_preferences
18
22
 
19
23
  from .utils import AsyncTyper