diracx 0.0.1a46__tar.gz → 0.0.1a48__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 (443) hide show
  1. {diracx-0.0.1a46 → diracx-0.0.1a48}/.github/workflows/integration.yml +10 -4
  2. {diracx-0.0.1a46 → diracx-0.0.1a48}/.github/workflows/main.yml +8 -8
  3. {diracx-0.0.1a46 → diracx-0.0.1a48}/.github/workflows/update_security_txt_expiry.yml +1 -1
  4. {diracx-0.0.1a46 → diracx-0.0.1a48}/.pre-commit-config.yaml +3 -2
  5. {diracx-0.0.1a46 → diracx-0.0.1a48}/PKG-INFO +1 -1
  6. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-api/pyproject.toml +1 -0
  7. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-api/src/diracx/api/jobs.py +39 -8
  8. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-cli/src/diracx/cli/internal/legacy.py +2 -3
  9. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/_generated/aio/operations/_operations.py +255 -112
  10. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/_generated/models/__init__.py +16 -8
  11. {diracx-0.0.1a46/extensions/gubbins/gubbins-client/src/gubbins → diracx-0.0.1a48/diracx-client/src/diracx}/client/_generated/models/_enums.py +3 -0
  12. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/_generated/models/_models.py +396 -77
  13. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/_generated/operations/_operations.py +265 -143
  14. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/patches/jobs/common.py +1 -1
  15. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-core/pyproject.toml +1 -1
  16. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-core/src/diracx/core/models.py +55 -2
  17. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/os/job_parameters.py +9 -3
  18. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/sql/dummy/db.py +3 -14
  19. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/sql/job/db.py +27 -74
  20. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/sql/job/schema.py +42 -15
  21. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/sql/pilot_agents/schema.py +5 -4
  22. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/sql/utils/__init__.py +2 -0
  23. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/sql/utils/base.py +94 -4
  24. diracx-0.0.1a48/diracx-db/src/diracx/db/sql/utils/types.py +137 -0
  25. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/tests/jobs/test_job_db.py +102 -0
  26. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/tests/test_dummy_db.py +1 -1
  27. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-logic/src/diracx/logic/jobs/query.py +14 -8
  28. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-logic/src/diracx/logic/jobs/status.py +35 -22
  29. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-logic/tests/logic/test_sandboxes.py +2 -2
  30. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/src/diracx/routers/auth/token.py +0 -19
  31. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/src/diracx/routers/factory.py +2 -0
  32. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/src/diracx/routers/jobs/access_policies.py +13 -2
  33. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/src/diracx/routers/jobs/query.py +131 -11
  34. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/src/diracx/routers/jobs/sandboxes.py +23 -4
  35. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/src/diracx/routers/jobs/status.py +137 -36
  36. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/tests/jobs/test_query.py +56 -2
  37. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/tests/jobs/test_sandboxes.py +2 -2
  38. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/tests/jobs/test_status.py +183 -132
  39. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-testing/pyproject.toml +1 -1
  40. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-testing/src/diracx/testing/client_generation.py +4 -0
  41. diracx-0.0.1a48/docs/SECURITY.md +3 -0
  42. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/admin/explanations/configuration.md +1 -1
  43. diracx-0.0.1a48/docs/admin/explanations/sandbox-store.md +5 -0
  44. diracx-0.0.1a48/docs/admin/how-to/install/convert-cs.md +139 -0
  45. diracx-0.0.1a48/docs/admin/how-to/install/register-a-vo.md +85 -0
  46. diracx-0.0.1a48/docs/admin/how-to/install/register-the-admin-vo.md +96 -0
  47. diracx-0.0.1a48/docs/admin/index.md +8 -0
  48. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/admin/reference/security_model.md +31 -31
  49. diracx-0.0.1a48/docs/assets/css/extra.css +11 -0
  50. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/assets/home.html +17 -55
  51. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/dev/explanations/components/cli.md +5 -5
  52. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/dev/explanations/components/db.md +9 -0
  53. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/dev/explanations/components/index.md +15 -14
  54. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/dev/explanations/components/routes.md +3 -2
  55. diracx-0.0.1a46/extensions/README.md → diracx-0.0.1a48/docs/dev/explanations/extensions.md +61 -71
  56. diracx-0.0.1a48/docs/dev/how-to/add-a-cli-command.md +3 -0
  57. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/dev/how-to/add-a-route.md +3 -2
  58. diracx-0.0.1a48/docs/dev/how-to/client-extension.md +3 -0
  59. diracx-0.0.1a48/docs/dev/how-to/contribute.md +54 -0
  60. diracx-0.0.1a48/docs/dev/how-to/develop-legacy-dirac.md +3 -0
  61. diracx-0.0.1a48/docs/dev/index.md +11 -0
  62. diracx-0.0.1a48/docs/dev/reference/dependency-injection.md +282 -0
  63. diracx-0.0.1a48/docs/dev/reference/pixi-tasks.md +3 -0
  64. diracx-0.0.1a48/docs/dev/tutorials/getting-started.md +308 -0
  65. diracx-0.0.1a48/docs/dev/tutorials/run-locally.md +109 -0
  66. diracx-0.0.1a48/docs/dev/tutorials/write-docs.md +80 -0
  67. diracx-0.0.1a48/docs/overrides/main.html +7 -0
  68. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/roadmap.md +3 -3
  69. diracx-0.0.1a48/docs/user/index.md +3 -0
  70. diracx-0.0.1a48/docs/user/reference/known-installations.md +39 -0
  71. diracx-0.0.1a48/docs/user/reference/programmatic-usage/command-line-interface.md +3 -0
  72. diracx-0.0.1a48/docs/user/reference/programmatic-usage/https-interface.md +1 -0
  73. diracx-0.0.1a48/docs/user/reference/programmatic-usage/index.md +8 -0
  74. diracx-0.0.1a48/docs/user/reference/programmatic-usage/python-interface.md +3 -0
  75. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/operations/_operations.py +255 -112
  76. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/models/__init__.py +16 -8
  77. {diracx-0.0.1a46/diracx-client/src/diracx → diracx-0.0.1a48/extensions/gubbins/gubbins-client/src/gubbins}/client/_generated/models/_enums.py +3 -0
  78. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/models/_models.py +396 -77
  79. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/operations/_operations.py +265 -143
  80. diracx-0.0.1a48/extensions/gubbins/gubbins-db/src/gubbins/db/sql/jobs/__init__.py +0 -0
  81. diracx-0.0.1a48/extensions/gubbins/gubbins-db/src/gubbins/db/sql/lollygag/__init__.py +0 -0
  82. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/lollygag/db.py +3 -14
  83. diracx-0.0.1a48/extensions/gubbins/gubbins-logic/README.md +0 -0
  84. diracx-0.0.1a48/extensions/gubbins/gubbins-logic/src/gubbins/logic/__init__.py +0 -0
  85. diracx-0.0.1a48/extensions/gubbins/gubbins-logic/src/gubbins/logic/auth/__init__.py +0 -0
  86. diracx-0.0.1a48/extensions/gubbins/gubbins-logic/src/gubbins/logic/lollygag/__init__.py +0 -0
  87. diracx-0.0.1a48/extensions/gubbins/gubbins-logic/src/gubbins/logic/py.typed +0 -0
  88. diracx-0.0.1a48/extensions/gubbins/gubbins-routers/README.md +0 -0
  89. diracx-0.0.1a48/extensions/gubbins/gubbins-routers/src/gubbins/routers/py.typed +0 -0
  90. diracx-0.0.1a48/extensions/gubbins/gubbins-testing/README.md +0 -0
  91. {diracx-0.0.1a46 → diracx-0.0.1a48}/mkdocs.yml +71 -41
  92. diracx-0.0.1a48/release.notes.new +9 -0
  93. diracx-0.0.1a48/tests/__init__.py +0 -0
  94. diracx-0.0.1a46/diracx-db/src/diracx/db/sql/utils/types.py +0 -43
  95. diracx-0.0.1a46/docs/SECURITY.md +0 -7
  96. diracx-0.0.1a46/docs/admin/how-to/convert-cs.md +0 -40
  97. diracx-0.0.1a46/docs/admin/how-to/register-a-vo.md +0 -83
  98. diracx-0.0.1a46/docs/admin/how-to/register-the-admin-vo.md +0 -96
  99. diracx-0.0.1a46/docs/assets/css/extra.css +0 -54
  100. diracx-0.0.1a46/docs/dev/explanations/extensions.md +0 -5
  101. diracx-0.0.1a46/docs/dev/reference/dependency-injection.md +0 -16
  102. diracx-0.0.1a46/docs/dev/tutorials/getting-started.md +0 -67
  103. diracx-0.0.1a46/docs/dev/tutorials/run-locally.md +0 -32
  104. diracx-0.0.1a46/docs/dev/tutorials/write-docs.md +0 -6
  105. diracx-0.0.1a46/docs/project/consortium.md +0 -24
  106. diracx-0.0.1a46/docs/project/index.md +0 -3
  107. diracx-0.0.1a46/release.notes.new +0 -30
  108. {diracx-0.0.1a46 → diracx-0.0.1a48}/.coveragerc +0 -0
  109. {diracx-0.0.1a46 → diracx-0.0.1a48}/.gitattributes +0 -0
  110. {diracx-0.0.1a46 → diracx-0.0.1a48}/.github/dependabot.yml +0 -0
  111. {diracx-0.0.1a46 → diracx-0.0.1a48}/.github/workflows/deployment.yml +0 -0
  112. {diracx-0.0.1a46 → diracx-0.0.1a48}/.github/workflows/make_release.py +0 -0
  113. {diracx-0.0.1a46 → diracx-0.0.1a48}/.github/workflows/vulnerabilities.yml +0 -0
  114. {diracx-0.0.1a46 → diracx-0.0.1a48}/.gitignore +0 -0
  115. {diracx-0.0.1a46 → diracx-0.0.1a48}/.readthedocs.yaml +0 -0
  116. {diracx-0.0.1a46 → diracx-0.0.1a48}/LICENSE +0 -0
  117. {diracx-0.0.1a46 → diracx-0.0.1a48}/MANIFEST.in +0 -0
  118. {diracx-0.0.1a46 → diracx-0.0.1a48}/README.md +0 -0
  119. {diracx-0.0.1a46 → diracx-0.0.1a48}/codecov.yml +0 -0
  120. {diracx-0.0.1a46 → diracx-0.0.1a48}/containers/client/Dockerfile +0 -0
  121. {diracx-0.0.1a46 → diracx-0.0.1a48}/containers/services/Dockerfile +0 -0
  122. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-api/README.md +0 -0
  123. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-api/src/diracx/api/__init__.py +0 -0
  124. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-api/src/diracx/api/py.typed +0 -0
  125. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-api/src/diracx/api/utils.py +0 -0
  126. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-api/tests/test_jobs.py +0 -0
  127. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-api/tests/test_utils.py +0 -0
  128. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-cli/README.md +0 -0
  129. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-cli/pyproject.toml +0 -0
  130. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-cli/src/diracx/cli/__init__.py +0 -0
  131. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-cli/src/diracx/cli/__main__.py +0 -0
  132. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-cli/src/diracx/cli/auth.py +0 -0
  133. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-cli/src/diracx/cli/config.py +0 -0
  134. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-cli/src/diracx/cli/internal/__init__.py +0 -0
  135. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-cli/src/diracx/cli/internal/config.py +0 -0
  136. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-cli/src/diracx/cli/jobs.py +0 -0
  137. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-cli/src/diracx/cli/py.typed +0 -0
  138. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-cli/src/diracx/cli/utils.py +0 -0
  139. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-cli/tests/legacy/cs_sync/integration_test.cfg +0 -0
  140. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-cli/tests/legacy/cs_sync/integration_test.yaml +0 -0
  141. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-cli/tests/legacy/cs_sync/integration_test_buggy.cfg +0 -0
  142. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-cli/tests/legacy/cs_sync/integration_test_secret.cfg +0 -0
  143. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-cli/tests/legacy/cs_sync/test_cssync.py +0 -0
  144. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-cli/tests/legacy/test_legacy.py +0 -0
  145. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-cli/tests/test_internal.py +0 -0
  146. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-cli/tests/test_jobs.py +0 -0
  147. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-cli/tests/test_login.py +0 -0
  148. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/README.md +0 -0
  149. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/pyproject.toml +0 -0
  150. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/_diracx_client_importer.pth +0 -0
  151. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/_client_importer.py +0 -0
  152. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/__init__.py +0 -0
  153. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/_generated/__init__.py +0 -0
  154. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/_generated/_client.py +0 -0
  155. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/_generated/_configuration.py +0 -0
  156. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/_generated/_patch.py +0 -0
  157. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/_generated/_serialization.py +0 -0
  158. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/_generated/_utils/__init__.py +0 -0
  159. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/_generated/_utils/serialization.py +0 -0
  160. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/_generated/_utils/utils.py +0 -0
  161. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/_generated/_vendor.py +0 -0
  162. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/_generated/aio/__init__.py +0 -0
  163. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/_generated/aio/_client.py +0 -0
  164. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/_generated/aio/_configuration.py +0 -0
  165. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/_generated/aio/_patch.py +0 -0
  166. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/_generated/aio/_vendor.py +0 -0
  167. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/_generated/aio/operations/__init__.py +0 -0
  168. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/_generated/aio/operations/_patch.py +0 -0
  169. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/_generated/models/_patch.py +0 -0
  170. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/_generated/operations/__init__.py +0 -0
  171. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/_generated/operations/_patch.py +0 -0
  172. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/_generated/py.typed +0 -0
  173. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/aio.py +0 -0
  174. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/models.py +0 -0
  175. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/patches/auth/aio.py +0 -0
  176. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/patches/auth/common.py +0 -0
  177. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/patches/auth/sync.py +0 -0
  178. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/patches/client/aio.py +0 -0
  179. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/patches/client/common.py +0 -0
  180. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/patches/client/sync.py +0 -0
  181. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/patches/jobs/aio.py +0 -0
  182. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/patches/jobs/sync.py +0 -0
  183. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/patches/utils.py +0 -0
  184. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/py.typed +0 -0
  185. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/src/diracx/client/sync.py +0 -0
  186. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-client/tests/test_auth.py +0 -0
  187. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-core/README.md +0 -0
  188. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-core/src/diracx/core/__init__.py +0 -0
  189. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-core/src/diracx/core/config/__init__.py +0 -0
  190. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-core/src/diracx/core/config/schema.py +0 -0
  191. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-core/src/diracx/core/config/sources.py +0 -0
  192. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-core/src/diracx/core/exceptions.py +0 -0
  193. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-core/src/diracx/core/extensions.py +0 -0
  194. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-core/src/diracx/core/preferences.py +0 -0
  195. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-core/src/diracx/core/properties.py +0 -0
  196. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-core/src/diracx/core/py.typed +0 -0
  197. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-core/src/diracx/core/s3.py +0 -0
  198. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-core/src/diracx/core/settings.py +0 -0
  199. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-core/src/diracx/core/utils.py +0 -0
  200. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-core/tests/test_config_source.py +0 -0
  201. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-core/tests/test_extensions.py +0 -0
  202. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-core/tests/test_s3.py +0 -0
  203. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-core/tests/test_secrets.py +0 -0
  204. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-core/tests/test_utils.py +0 -0
  205. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/README.md +0 -0
  206. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/pyproject.toml +0 -0
  207. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/__init__.py +0 -0
  208. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/__main__.py +0 -0
  209. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/exceptions.py +0 -0
  210. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/os/__init__.py +0 -0
  211. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/os/utils.py +0 -0
  212. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/py.typed +0 -0
  213. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/sql/__init__.py +0 -0
  214. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/sql/auth/__init__.py +0 -0
  215. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/sql/auth/db.py +0 -0
  216. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/sql/auth/schema.py +0 -0
  217. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/sql/dummy/__init__.py +0 -0
  218. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/sql/dummy/schema.py +0 -0
  219. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/sql/job/__init__.py +0 -0
  220. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/sql/job_logging/__init__.py +0 -0
  221. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/sql/job_logging/db.py +0 -0
  222. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/sql/job_logging/schema.py +0 -0
  223. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/sql/pilot_agents/__init__.py +0 -0
  224. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/sql/pilot_agents/db.py +0 -0
  225. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/sql/sandbox_metadata/__init__.py +0 -0
  226. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/sql/sandbox_metadata/db.py +0 -0
  227. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/sql/sandbox_metadata/schema.py +0 -0
  228. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/sql/task_queue/__init__.py +0 -0
  229. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/sql/task_queue/db.py +0 -0
  230. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/sql/task_queue/schema.py +0 -0
  231. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/src/diracx/db/sql/utils/functions.py +0 -0
  232. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/tests/auth/test_authorization_flow.py +0 -0
  233. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/tests/auth/test_device_flow.py +0 -0
  234. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/tests/auth/test_refresh_token.py +0 -0
  235. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/tests/jobs/test_job_logging_db.py +0 -0
  236. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/tests/jobs/test_sandbox_metadata.py +0 -0
  237. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/tests/opensearch/test_connection.py +0 -0
  238. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/tests/opensearch/test_index_template.py +0 -0
  239. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/tests/opensearch/test_search.py +0 -0
  240. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/tests/pilot_agents/__init__.py +0 -0
  241. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/tests/pilot_agents/test_pilot_agents_db.py +0 -0
  242. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-db/tests/test_freeze_time.py +0 -0
  243. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-logic/README.md +0 -0
  244. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-logic/pyproject.toml +0 -0
  245. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-logic/src/diracx/logic/__init__.py +0 -0
  246. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-logic/src/diracx/logic/__main__.py +0 -0
  247. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-logic/src/diracx/logic/auth/__init__.py +0 -0
  248. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-logic/src/diracx/logic/auth/authorize_code_flow.py +0 -0
  249. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-logic/src/diracx/logic/auth/device_flow.py +0 -0
  250. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-logic/src/diracx/logic/auth/management.py +0 -0
  251. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-logic/src/diracx/logic/auth/token.py +0 -0
  252. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-logic/src/diracx/logic/auth/utils.py +0 -0
  253. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-logic/src/diracx/logic/auth/well_known.py +0 -0
  254. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-logic/src/diracx/logic/jobs/__init__.py +0 -0
  255. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-logic/src/diracx/logic/jobs/sandboxes.py +0 -0
  256. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-logic/src/diracx/logic/jobs/submission.py +0 -0
  257. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-logic/src/diracx/logic/jobs/utils.py +0 -0
  258. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-logic/src/diracx/logic/py.typed +0 -0
  259. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-logic/src/diracx/logic/task_queues/__init__.py +0 -0
  260. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-logic/src/diracx/logic/task_queues/priority.py +0 -0
  261. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/README.md +0 -0
  262. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/pyproject.toml +0 -0
  263. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/src/diracx/routers/__init__.py +0 -0
  264. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/src/diracx/routers/access_policies.py +0 -0
  265. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/src/diracx/routers/auth/__init__.py +0 -0
  266. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/src/diracx/routers/auth/authorize_code_flow.py +0 -0
  267. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/src/diracx/routers/auth/device_flow.py +0 -0
  268. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/src/diracx/routers/auth/management.py +0 -0
  269. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/src/diracx/routers/auth/utils.py +0 -0
  270. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/src/diracx/routers/auth/well_known.py +0 -0
  271. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/src/diracx/routers/configuration.py +0 -0
  272. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/src/diracx/routers/dependencies.py +0 -0
  273. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/src/diracx/routers/fastapi_classes.py +0 -0
  274. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/src/diracx/routers/health/__init__.py +0 -0
  275. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/src/diracx/routers/health/probes.py +0 -0
  276. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/src/diracx/routers/jobs/__init__.py +0 -0
  277. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/src/diracx/routers/jobs/legacy.py +0 -0
  278. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/src/diracx/routers/jobs/submission.py +0 -0
  279. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/src/diracx/routers/otel.py +0 -0
  280. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/src/diracx/routers/py.typed +0 -0
  281. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/src/diracx/routers/utils/__init__.py +0 -0
  282. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/src/diracx/routers/utils/users.py +0 -0
  283. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/tests/auth/test_legacy_exchange.py +0 -0
  284. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/tests/auth/test_standard.py +0 -0
  285. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/tests/data/idp-server.invalid/.well-known/openid-configuration +0 -0
  286. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/tests/health/test_probes.py +0 -0
  287. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/tests/jobs/conftest.py +0 -0
  288. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/tests/jobs/test_wms_access_policy.py +0 -0
  289. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/tests/test_config_manager.py +0 -0
  290. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/tests/test_generic.py +0 -0
  291. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-routers/tests/test_policy.py +0 -0
  292. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-testing/README.md +0 -0
  293. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-testing/src/diracx/testing/__init__.py +0 -0
  294. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-testing/src/diracx/testing/__main__.py +0 -0
  295. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-testing/src/diracx/testing/client_generation_pytest.py +0 -0
  296. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-testing/src/diracx/testing/dummy_osdb.py +0 -0
  297. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-testing/src/diracx/testing/entrypoints.py +0 -0
  298. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-testing/src/diracx/testing/mock_osdb.py +0 -0
  299. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-testing/src/diracx/testing/osdb.py +0 -0
  300. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-testing/src/diracx/testing/routers.py +0 -0
  301. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-testing/src/diracx/testing/scripts/collect_demo_coverage.sh +0 -0
  302. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-testing/src/diracx/testing/time.py +0 -0
  303. {diracx-0.0.1a46 → diracx-0.0.1a48}/diracx-testing/src/diracx/testing/utils.py +0 -0
  304. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/admin/explanations/authentication.md +0 -0
  305. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/admin/explanations/opentelemetry.md +0 -0
  306. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/admin/explanations/user-management.md +0 -0
  307. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/admin/reference/settings-and-preferences.md +0 -0
  308. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/admin/tutorials/authentication.md +0 -0
  309. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/assets/css/fontawesome-all.min.css +0 -0
  310. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/assets/css/images/arrow.svg +0 -0
  311. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/assets/css/images/overlay.png +0 -0
  312. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/assets/css/main.css +0 -0
  313. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/assets/images/diracx-logo-square.svg +0 -0
  314. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/assets/images/logo.svg +0 -0
  315. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/assets/images/pic02.jpg +0 -0
  316. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/assets/styles/extra.css +0 -0
  317. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/assets/webfonts/fa-brands-400.woff2 +0 -0
  318. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/assets/webfonts/fa-solid-900.woff +0 -0
  319. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/dev/explanations/client.md +0 -0
  320. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/dev/explanations/components/api.md +0 -0
  321. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/dev/explanations/designing-functionality.md +0 -0
  322. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/dev/explanations/index.md +0 -0
  323. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/dev/explanations/testing.md +0 -0
  324. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/dev/how-to/add-a-db.md +0 -0
  325. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/dev/how-to/add-a-setting.md +0 -0
  326. /diracx-0.0.1a46/docs/dev/reference/client-metapathfinder.md → /diracx-0.0.1a48/docs/dev/how-to/add-a-task.md +0 -0
  327. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/dev/how-to/add-a-test.md +0 -0
  328. /diracx-0.0.1a46/docs/dev/reference/db-transaction-model.md → /diracx-0.0.1a48/docs/dev/how-to/add-functionality/index.md +0 -0
  329. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/dev/how-to/client-customization.md +0 -0
  330. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/dev/how-to/client-generation.md +0 -0
  331. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/dev/how-to/extend-diracx/index.md +0 -0
  332. /diracx-0.0.1a46/extensions/gubbins/gubbins-api/README.md → /diracx-0.0.1a48/docs/dev/how-to/use-the-demo/index.md +0 -0
  333. /diracx-0.0.1a46/extensions/gubbins/gubbins-api/src/gubbins/api/__init__.py → /diracx-0.0.1a48/docs/dev/how-to/use-the-demo/swagger.md +0 -0
  334. /diracx-0.0.1a46/extensions/gubbins/gubbins-api/src/gubbins/api/py.typed → /diracx-0.0.1a48/docs/dev/how-to/use-the-demo/web.md +0 -0
  335. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/dev/reference/application-state.md +0 -0
  336. /diracx-0.0.1a46/extensions/gubbins/gubbins-cli/README.md → /diracx-0.0.1a48/docs/dev/reference/client-metapathfinder.md +0 -0
  337. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/dev/reference/coding-conventions.md +0 -0
  338. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/dev/reference/configuration.md +0 -0
  339. /diracx-0.0.1a46/extensions/gubbins/gubbins-cli/src/gubbins/cli/__init__.py → /diracx-0.0.1a48/docs/dev/reference/db-transaction-model.md +0 -0
  340. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/dev/reference/entrypoints.md +0 -0
  341. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/dev/reference/security-policies.md +0 -0
  342. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/dev/reference/security-properties.md +0 -0
  343. /diracx-0.0.1a46/extensions/gubbins/gubbins-cli/src/gubbins/cli/py.typed → /diracx-0.0.1a48/docs/dev/reference/test-recipes.md +0 -0
  344. /diracx-0.0.1a46/extensions/gubbins/gubbins-client/README.md → /diracx-0.0.1a48/docs/dev/reference/writing-tests.md +0 -0
  345. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/dev/tutorials/advanced-tutorial.md +0 -0
  346. /diracx-0.0.1a46/extensions/gubbins/gubbins-core/README.md → /diracx-0.0.1a48/docs/dev/tutorials/develop-web.md +0 -0
  347. /diracx-0.0.1a46/extensions/gubbins/gubbins-core/src/gubbins/core/py.typed → /diracx-0.0.1a48/docs/dev/tutorials/larger-developments.md +0 -0
  348. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/dev/tutorials/making-changes.md +0 -0
  349. /diracx-0.0.1a46/extensions/gubbins/gubbins-db/README.md → /diracx-0.0.1a48/docs/dev/tutorials/play-with-auth.md +0 -0
  350. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/index.md +0 -0
  351. {diracx-0.0.1a46 → diracx-0.0.1a48}/docs/user/reference/client-configuration.md +0 -0
  352. /diracx-0.0.1a46/extensions/gubbins/gubbins-db/src/gubbins/db/py.typed → /diracx-0.0.1a48/docs/user/tutorials/getting-started.md +0 -0
  353. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/containers/client/Dockerfile +0 -0
  354. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/containers/services/Dockerfile +0 -0
  355. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/.github/workflows/main.yml +0 -0
  356. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/README.md +0 -0
  357. {diracx-0.0.1a46/extensions/gubbins/gubbins-logic → diracx-0.0.1a48/extensions/gubbins/gubbins-api}/README.md +0 -0
  358. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-api/pyproject.toml +0 -0
  359. {diracx-0.0.1a46/extensions/gubbins/gubbins-db/src/gubbins/db/sql/jobs → diracx-0.0.1a48/extensions/gubbins/gubbins-api/src/gubbins/api}/__init__.py +0 -0
  360. {diracx-0.0.1a46/extensions/gubbins/gubbins-logic/src/gubbins/logic → diracx-0.0.1a48/extensions/gubbins/gubbins-api/src/gubbins/api}/py.typed +0 -0
  361. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-api/tests/test_gubbins_api.py +0 -0
  362. {diracx-0.0.1a46/extensions/gubbins/gubbins-routers → diracx-0.0.1a48/extensions/gubbins/gubbins-cli}/README.md +0 -0
  363. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-cli/pyproject.toml +0 -0
  364. {diracx-0.0.1a46/extensions/gubbins/gubbins-db/src/gubbins/db/sql/lollygag → diracx-0.0.1a48/extensions/gubbins/gubbins-cli/src/gubbins/cli}/__init__.py +0 -0
  365. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-cli/src/gubbins/cli/config.py +0 -0
  366. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-cli/src/gubbins/cli/lollygag.py +0 -0
  367. {diracx-0.0.1a46/extensions/gubbins/gubbins-routers/src/gubbins/routers → diracx-0.0.1a48/extensions/gubbins/gubbins-cli/src/gubbins/cli}/py.typed +0 -0
  368. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-cli/tests/test_gubbins_cli.py +0 -0
  369. {diracx-0.0.1a46/extensions/gubbins/gubbins-testing → diracx-0.0.1a48/extensions/gubbins/gubbins-client}/README.md +0 -0
  370. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-client/pyproject.toml +0 -0
  371. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-client/src/gubbins/client/__init__.py +0 -0
  372. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/__init__.py +0 -0
  373. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_client.py +0 -0
  374. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_configuration.py +0 -0
  375. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_patch.py +0 -0
  376. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_serialization.py +0 -0
  377. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_utils/__init__.py +0 -0
  378. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_utils/serialization.py +0 -0
  379. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_utils/utils.py +0 -0
  380. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_vendor.py +0 -0
  381. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/__init__.py +0 -0
  382. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/_client.py +0 -0
  383. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/_configuration.py +0 -0
  384. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/_patch.py +0 -0
  385. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/_vendor.py +0 -0
  386. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/operations/__init__.py +0 -0
  387. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/operations/_patch.py +0 -0
  388. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/operations/__init__.py +0 -0
  389. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/operations/_patch.py +0 -0
  390. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/py.typed +0 -0
  391. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-client/src/gubbins/client/aio.py +0 -0
  392. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-client/src/gubbins/client/models.py +0 -0
  393. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-client/src/gubbins/client/py.typed +0 -0
  394. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-client/src/gubbins/client/sync.py +0 -0
  395. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-client/tests/test_gubbins_client.py +0 -0
  396. /diracx-0.0.1a46/extensions/gubbins/gubbins-logic/src/gubbins/logic/__init__.py → /diracx-0.0.1a48/extensions/gubbins/gubbins-core/README.md +0 -0
  397. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-core/pyproject.toml +0 -0
  398. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-core/src/gubbins/core/__init__.py +0 -0
  399. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-core/src/gubbins/core/config/__init__.py +0 -0
  400. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-core/src/gubbins/core/config/schema.py +0 -0
  401. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-core/src/gubbins/core/models.py +0 -0
  402. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-core/src/gubbins/core/properties.py +0 -0
  403. /diracx-0.0.1a46/extensions/gubbins/gubbins-logic/src/gubbins/logic/auth/__init__.py → /diracx-0.0.1a48/extensions/gubbins/gubbins-core/src/gubbins/core/py.typed +0 -0
  404. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-core/tests/test_config.py +0 -0
  405. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-core/tests/test_properties.py +0 -0
  406. /diracx-0.0.1a46/extensions/gubbins/gubbins-logic/src/gubbins/logic/lollygag/__init__.py → /diracx-0.0.1a48/extensions/gubbins/gubbins-db/README.md +0 -0
  407. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-db/pyproject.toml +0 -0
  408. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-db/src/gubbins/db/__init__.py +0 -0
  409. /diracx-0.0.1a46/tests/__init__.py → /diracx-0.0.1a48/extensions/gubbins/gubbins-db/src/gubbins/db/py.typed +0 -0
  410. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/__init__.py +0 -0
  411. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/jobs/db.py +0 -0
  412. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/jobs/schema.py +0 -0
  413. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/lollygag/schema.py +0 -0
  414. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-db/tests/test_gubbins_job_db.py +0 -0
  415. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-db/tests/test_lollygag_db.py +0 -0
  416. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-logic/pyproject.toml +0 -0
  417. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-logic/src/gubbins/logic/auth/well_known.py +0 -0
  418. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-logic/src/gubbins/logic/lollygag/lollygag.py +0 -0
  419. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-logic/tests/test_gubbins_logic.py +0 -0
  420. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-routers/pyproject.toml +0 -0
  421. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-routers/src/gubbins/routers/__init__.py +0 -0
  422. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-routers/src/gubbins/routers/dependencies.py +0 -0
  423. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-routers/src/gubbins/routers/lollygag/__init__.py +0 -0
  424. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-routers/src/gubbins/routers/lollygag/access_policy.py +0 -0
  425. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-routers/src/gubbins/routers/lollygag/lollygag.py +0 -0
  426. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-routers/src/gubbins/routers/well_known.py +0 -0
  427. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-routers/tests/data/idp-server.invalid/.well-known/openid-configuration +0 -0
  428. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-routers/tests/test_gubbins_job_manager.py +0 -0
  429. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-routers/tests/test_lollybag.py +0 -0
  430. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-routers/tests/test_wellknown.py +0 -0
  431. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-testing/pyproject.toml +0 -0
  432. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/gubbins-testing/src/gubbins/testing/__init__.py +0 -0
  433. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/pixi.toml +0 -0
  434. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/pyproject.toml +0 -0
  435. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins/release.notes +0 -0
  436. {diracx-0.0.1a46 → diracx-0.0.1a48}/extensions/gubbins_values.yaml +0 -0
  437. {diracx-0.0.1a46 → diracx-0.0.1a48}/pixi.toml +0 -0
  438. {diracx-0.0.1a46 → diracx-0.0.1a48}/pyproject.toml +0 -0
  439. {diracx-0.0.1a46 → diracx-0.0.1a48}/release.notes +0 -0
  440. {diracx-0.0.1a46 → diracx-0.0.1a48}/release.notes.old +0 -0
  441. {diracx-0.0.1a46 → diracx-0.0.1a48}/run_local.sh +0 -0
  442. {diracx-0.0.1a46 → diracx-0.0.1a48}/tests/make_token_local.py +0 -0
  443. {diracx-0.0.1a46 → diracx-0.0.1a48}/tests/test_generic.py +0 -0
@@ -58,11 +58,17 @@ jobs:
58
58
  run: |
59
59
  has_error=0
60
60
  # TODO: set has_error=1 when we are ready to really run the tests
61
- if [ -f server-tests-failed ]; then has_error=0; echo "Server tests failed"; fi
62
- if [ -f client-tests-failed ]; then has_error=0; echo "Client tests failed"; fi
63
- if [ -f pilot-tests-failed ]; then has_error=0; echo "Pilot tests failed"; fi
61
+ if [ -f server-tests-failed ]; then has_error=1; echo "Server tests failed"; fi
62
+ if [ -f client-tests-failed ]; then has_error=1; echo "Client tests failed"; fi
63
+ if [ -f pilot-tests-failed ]; then has_error=1; echo "Pilot tests failed"; fi
64
64
  if [ ${has_error} = 1 ]; then exit 1; fi
65
- - name: diracx logs
65
+ - name: diracx filtered requests logs
66
+ run: |
67
+ docker logs diracx 2>/dev/null | grep '/api/' \
68
+ | awk -F\" '{print $2, $3}' \
69
+ | awk '{print $1, $2, $4}' \
70
+ | sort | uniq -c | sort
71
+ - name: diracx error logs
66
72
  if: ${{ failure() }}
67
73
  run: |
68
74
  mkdir -p /tmp/service-logs
@@ -19,7 +19,7 @@ jobs:
19
19
  steps:
20
20
  - name: Checkout code
21
21
  uses: actions/checkout@v4
22
- - uses: prefix-dev/setup-pixi@v0.8.11
22
+ - uses: prefix-dev/setup-pixi@v0.8.12
23
23
  with:
24
24
  run-install: false
25
25
  post-cleanup: false
@@ -32,7 +32,7 @@ jobs:
32
32
  pixi add --no-install --pypi --feature diracx-core pytest-github-actions-annotate-failures
33
33
  # Show any changes
34
34
  git diff
35
- - uses: prefix-dev/setup-pixi@v0.8.11
35
+ - uses: prefix-dev/setup-pixi@v0.8.12
36
36
  with:
37
37
  cache: false
38
38
  environments: shellcheck
@@ -63,7 +63,7 @@ jobs:
63
63
  steps:
64
64
  - name: Checkout code
65
65
  uses: actions/checkout@v4
66
- - uses: prefix-dev/setup-pixi@v0.8.11
66
+ - uses: prefix-dev/setup-pixi@v0.8.12
67
67
  with:
68
68
  run-install: false
69
69
  post-cleanup: false
@@ -76,7 +76,7 @@ jobs:
76
76
  pixi add --no-install --pypi --feature diracx-core pytest-github-actions-annotate-failures
77
77
  # Show any changes
78
78
  git diff
79
- - uses: prefix-dev/setup-pixi@v0.8.11
79
+ - uses: prefix-dev/setup-pixi@v0.8.12
80
80
  with:
81
81
  cache: false
82
82
  environments: ${{ matrix.package }}
@@ -96,7 +96,7 @@ jobs:
96
96
  steps:
97
97
  - name: Checkout code
98
98
  uses: actions/checkout@v4
99
- - uses: prefix-dev/setup-pixi@v0.8.11
99
+ - uses: prefix-dev/setup-pixi@v0.8.12
100
100
  with:
101
101
  run-install: false
102
102
  post-cleanup: false
@@ -109,7 +109,7 @@ jobs:
109
109
  pixi add --no-install --pypi --feature diracx-core pytest-github-actions-annotate-failures
110
110
  # Show any changes
111
111
  git diff
112
- - uses: prefix-dev/setup-pixi@v0.8.11
112
+ - uses: prefix-dev/setup-pixi@v0.8.12
113
113
  with:
114
114
  cache: false
115
115
  environments: ${{ matrix.extension == 'diracx' && 'default' || 'default-gubbins' }}
@@ -222,7 +222,7 @@ jobs:
222
222
  steps:
223
223
  - name: Checkout code
224
224
  uses: actions/checkout@v4
225
- - uses: prefix-dev/setup-pixi@v0.8.11
225
+ - uses: prefix-dev/setup-pixi@v0.8.12
226
226
  with:
227
227
  run-install: false
228
228
  post-cleanup: false
@@ -232,7 +232,7 @@ jobs:
232
232
  pixi add --no-install --pypi --feature diracx-core pytest-github-actions-annotate-failures
233
233
  # Show any changes
234
234
  git diff
235
- - uses: prefix-dev/setup-pixi@v0.8.11
235
+ - uses: prefix-dev/setup-pixi@v0.8.12
236
236
  with:
237
237
  cache: false
238
238
  locked: false
@@ -19,7 +19,7 @@ jobs:
19
19
  uses: actions/checkout@v4
20
20
 
21
21
  - name: Set up Python
22
- uses: actions/setup-python@v4
22
+ uses: actions/setup-python@v5
23
23
  with:
24
24
  python-version: '3.x'
25
25
 
@@ -27,14 +27,14 @@ repos:
27
27
  - id: check-added-large-files
28
28
 
29
29
  - repo: https://github.com/astral-sh/ruff-pre-commit
30
- rev: 'v0.12.3'
30
+ rev: 'v0.12.7'
31
31
  hooks:
32
32
  - id: ruff
33
33
  args: ["--fix", "--show-fixes"]
34
34
  - id: ruff-format
35
35
 
36
36
  - repo: https://github.com/pre-commit/mirrors-mypy
37
- rev: v1.16.1
37
+ rev: v1.17.1
38
38
  hooks:
39
39
  - id: mypy
40
40
  additional_dependencies:
@@ -53,6 +53,7 @@ repos:
53
53
  - id: mdformat
54
54
  args: ["--number"]
55
55
  additional_dependencies:
56
+ - mdformat-mkdocs
56
57
  - mdformat-gfm
57
58
  - mdformat-black
58
59
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: diracx
3
- Version: 0.0.1a46
3
+ Version: 0.0.1a48
4
4
  Summary: Client installation for users of DiracX installations
5
5
  License: GPL-3.0-only
6
6
  License-File: LICENSE
@@ -16,6 +16,7 @@ dependencies = [
16
16
  "diracx-client",
17
17
  "diracx-core",
18
18
  "httpx",
19
+ "zstandard",
19
20
  ]
20
21
  dynamic = ["version"]
21
22
 
@@ -7,10 +7,12 @@ import logging
7
7
  import os
8
8
  import tarfile
9
9
  import tempfile
10
+ from contextlib import contextmanager
10
11
  from pathlib import Path
11
- from typing import Literal
12
+ from typing import BinaryIO, Literal
12
13
 
13
14
  import httpx
15
+ import zstandard
14
16
 
15
17
  from diracx.client.aio import AsyncDiracClient
16
18
  from diracx.client.models import SandboxInfo
@@ -20,8 +22,29 @@ from .utils import with_client
20
22
  logger = logging.getLogger(__name__)
21
23
 
22
24
  SANDBOX_CHECKSUM_ALGORITHM = "sha256"
23
- SANDBOX_COMPRESSION: Literal["bz2"] = "bz2"
24
- SANDBOX_OPEN_MODE: Literal["w|bz2"] = "w|bz2"
25
+ SANDBOX_COMPRESSION: Literal["zst"] = "zst"
26
+
27
+
28
+ @contextmanager
29
+ def tarfile_open(fileobj: BinaryIO):
30
+ """Context manager to extend tarfile.open to support reading zstd compressed files.
31
+
32
+ This is only needed for Python <=3.13.
33
+ """
34
+ # Save current position and read magic bytes
35
+ current_pos = fileobj.tell()
36
+ magic = fileobj.read(4)
37
+ fileobj.seek(current_pos)
38
+
39
+ # Read magic bytes to determine compression format
40
+ if magic.startswith(b"\x28\xb5\x2f\xfd"): # zstd magic number
41
+ dctx = zstandard.ZstdDecompressor()
42
+ with dctx.stream_reader(fileobj) as decompressor:
43
+ with tarfile.open(fileobj=decompressor, mode="r|") as tf:
44
+ yield tf
45
+ else:
46
+ with tarfile.open(fileobj=fileobj, mode="r") as tf:
47
+ yield tf
25
48
 
26
49
 
27
50
  @with_client
@@ -33,10 +56,18 @@ async def create_sandbox(paths: list[Path], *, client: AsyncDiracClient) -> str:
33
56
  be used to submit jobs.
34
57
  """
35
58
  with tempfile.TemporaryFile(mode="w+b") as tar_fh:
36
- with tarfile.open(fileobj=tar_fh, mode=SANDBOX_OPEN_MODE) as tf:
37
- for path in paths:
38
- logger.debug("Adding %s to sandbox as %s", path.resolve(), path.name)
39
- tf.add(path.resolve(), path.name, recursive=True)
59
+ # Create zstd compressed tar with level 18 and long matching enabled
60
+ compression_params = zstandard.ZstdCompressionParameters.from_level(
61
+ 18, enable_ldm=1
62
+ )
63
+ cctx = zstandard.ZstdCompressor(compression_params=compression_params)
64
+ with cctx.stream_writer(tar_fh, closefd=False) as compressor:
65
+ with tarfile.open(fileobj=compressor, mode="w|") as tf:
66
+ for path in paths:
67
+ logger.debug(
68
+ "Adding %s to sandbox as %s", path.resolve(), path.name
69
+ )
70
+ tf.add(path.resolve(), path.name, recursive=True)
40
71
  tar_fh.seek(0)
41
72
 
42
73
  hasher = getattr(hashlib, SANDBOX_CHECKSUM_ALGORITHM)()
@@ -89,6 +120,6 @@ async def download_sandbox(pfn: str, destination: Path, *, client: AsyncDiracCli
89
120
  fh.seek(0)
90
121
  logger.debug("Sandbox downloaded for %s", pfn)
91
122
 
92
- with tarfile.open(fileobj=fh) as tf:
123
+ with tarfile_open(fh) as tf:
93
124
  tf.extractall(path=destination, filter="data")
94
125
  logger.debug("Extracted %s to %s", pfn, destination)
@@ -211,7 +211,6 @@ def generate_helm_values(
211
211
  },
212
212
  "rabbitmq": {"enabled": False},
213
213
  "mysql": {"enabled": False},
214
- "global": {"images": {"services": "FILL ME"}, "storageClassName": "FILL ME"},
215
214
  }
216
215
 
217
216
  cfg = diraccfg.CFG().loadFromBuffer(public_cfg.read_text())
@@ -265,7 +264,7 @@ def generate_helm_values(
265
264
 
266
265
  from diracx.core.extensions import select_from_extension
267
266
 
268
- for entry_point in select_from_extension(group="diracx.db.sql"):
267
+ for entry_point in select_from_extension(group="diracx.dbs.sql"):
269
268
  db_name = entry_point.name
270
269
  db_config = all_db_configs.get(db_name, {})
271
270
 
@@ -311,7 +310,7 @@ def generate_helm_values(
311
310
  },
312
311
  }
313
312
 
314
- for entry_point in select_from_extension(group="diracx.db.os"):
313
+ for entry_point in select_from_extension(group="diracx.dbs.os"):
315
314
  db_name = entry_point.name
316
315
  db_config = all_db_configs.get(db_name, {})
317
316