diracx 0.0.1a47__tar.gz → 0.0.1a49__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.
- {diracx-0.0.1a47 → diracx-0.0.1a49}/.github/workflows/deployment.yml +89 -8
- {diracx-0.0.1a47 → diracx-0.0.1a49}/.github/workflows/integration.yml +2 -2
- {diracx-0.0.1a47 → diracx-0.0.1a49}/.github/workflows/main.yml +14 -33
- diracx-0.0.1a49/.github/workflows/update_chart_version.py +158 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/.github/workflows/update_security_txt_expiry.yml +2 -2
- {diracx-0.0.1a47 → diracx-0.0.1a49}/.github/workflows/vulnerabilities.yml +5 -5
- {diracx-0.0.1a47 → diracx-0.0.1a49}/.pre-commit-config.yaml +11 -2
- {diracx-0.0.1a47 → diracx-0.0.1a49}/.readthedocs.yaml +1 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/PKG-INFO +1 -1
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-cli/tests/legacy/cs_sync/integration_test.yaml +6 -94
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-cli/tests/legacy/cs_sync/test_cssync.py +6 -1
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/_generated/models/_models.py +9 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/patches/jobs/aio.py +20 -2
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/patches/jobs/common.py +51 -2
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/patches/jobs/sync.py +20 -2
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-core/pyproject.toml +4 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-core/src/diracx/core/config/schema.py +86 -7
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-core/src/diracx/core/extensions.py +38 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-core/src/diracx/core/models.py +23 -6
- diracx-0.0.1a49/diracx-core/src/diracx/core/resources.py +30 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-core/src/diracx/core/utils.py +37 -2
- diracx-0.0.1a49/diracx-core/tests/test_entry_points.py +71 -0
- diracx-0.0.1a49/diracx-core/tests/test_extensions.py +138 -0
- diracx-0.0.1a49/diracx-core/tests/test_resources.py +93 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-core/tests/test_utils.py +14 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/sql/job/db.py +13 -21
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/sql/job/schema.py +42 -15
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/sql/pilot_agents/schema.py +5 -4
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/sql/utils/base.py +2 -1
- diracx-0.0.1a49/diracx-db/src/diracx/db/sql/utils/types.py +137 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/tests/jobs/test_job_db.py +53 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-logic/pyproject.toml +1 -1
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-logic/src/diracx/logic/jobs/query.py +7 -9
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-logic/src/diracx/logic/jobs/status.py +23 -24
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-logic/src/diracx/logic/jobs/submission.py +18 -7
- diracx-0.0.1a49/diracx-logic/src/diracx/logic/jobs/utils.py +80 -0
- diracx-0.0.1a49/diracx-logic/tests/jobs/test_status.py +160 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/pyproject.toml +1 -1
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/src/diracx/routers/factory.py +2 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/src/diracx/routers/jobs/query.py +7 -1
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/src/diracx/routers/jobs/submission.py +3 -1
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/tests/auth/test_standard.py +1 -2
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/tests/jobs/test_query.py +20 -4
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/tests/jobs/test_sandboxes.py +1 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/tests/jobs/test_status.py +8 -55
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-testing/pyproject.toml +1 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-testing/src/diracx/testing/utils.py +1 -1
- diracx-0.0.1a49/docs/admin/how-to/install/embracing.md +13 -0
- diracx-0.0.1a49/docs/admin/how-to/install/index.md +15 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/admin/how-to/install/register-a-vo.md +39 -34
- diracx-0.0.1a49/docs/admin/how-to/install/register-the-admin-vo.md +158 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/explanations/components/db.md +8 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/explanations/extensions.md +8 -8
- diracx-0.0.1a49/docs/dev/how-to/client-generation.md +2 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/how-to/contribute.md +2 -2
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/reference/dependency-injection.md +1 -1
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/tutorials/getting-started.md +2 -2
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/tutorials/run-locally.md +1 -1
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/.github/workflows/main.yml +0 -8
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/models/_models.py +9 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/pyproject.toml +1 -1
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins_values.yaml +1 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/mkdocs.yml +55 -6
- {diracx-0.0.1a47 → diracx-0.0.1a49}/pixi.toml +4 -1
- {diracx-0.0.1a47 → diracx-0.0.1a49}/pyproject.toml +1 -1
- diracx-0.0.1a49/release.notes.new +43 -0
- diracx-0.0.1a47/diracx-core/tests/test_extensions.py +0 -8
- diracx-0.0.1a47/diracx-db/src/diracx/db/sql/utils/types.py +0 -43
- diracx-0.0.1a47/diracx-logic/src/diracx/logic/jobs/utils.py +0 -40
- diracx-0.0.1a47/docs/admin/how-to/install/register-the-admin-vo.md +0 -96
- diracx-0.0.1a47/docs/dev/how-to/client-generation.md +0 -2
- diracx-0.0.1a47/release.notes.new +0 -31
- {diracx-0.0.1a47 → diracx-0.0.1a49}/.coveragerc +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/.gitattributes +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/.github/dependabot.yml +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/.github/workflows/make_release.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/.gitignore +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/LICENSE +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/MANIFEST.in +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/README.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/codecov.yml +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/containers/client/Dockerfile +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/containers/services/Dockerfile +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-api/README.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-api/pyproject.toml +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-api/src/diracx/api/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-api/src/diracx/api/jobs.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-api/src/diracx/api/py.typed +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-api/src/diracx/api/utils.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-api/tests/test_jobs.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-api/tests/test_utils.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-cli/README.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-cli/pyproject.toml +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-cli/src/diracx/cli/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-cli/src/diracx/cli/__main__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-cli/src/diracx/cli/auth.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-cli/src/diracx/cli/config.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-cli/src/diracx/cli/internal/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-cli/src/diracx/cli/internal/config.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-cli/src/diracx/cli/internal/legacy.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-cli/src/diracx/cli/jobs.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-cli/src/diracx/cli/py.typed +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-cli/src/diracx/cli/utils.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-cli/tests/legacy/cs_sync/integration_test.cfg +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-cli/tests/legacy/cs_sync/integration_test_buggy.cfg +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-cli/tests/legacy/cs_sync/integration_test_secret.cfg +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-cli/tests/legacy/test_legacy.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-cli/tests/test_internal.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-cli/tests/test_jobs.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-cli/tests/test_login.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/README.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/pyproject.toml +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/_diracx_client_importer.pth +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/_client_importer.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/_generated/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/_generated/_client.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/_generated/_configuration.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/_generated/_patch.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/_generated/_serialization.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/_generated/_utils/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/_generated/_utils/serialization.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/_generated/_utils/utils.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/_generated/_vendor.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/_generated/aio/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/_generated/aio/_client.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/_generated/aio/_configuration.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/_generated/aio/_patch.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/_generated/aio/_vendor.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/_generated/aio/operations/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/_generated/aio/operations/_operations.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/_generated/aio/operations/_patch.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/_generated/models/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/_generated/models/_enums.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/_generated/models/_patch.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/_generated/operations/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/_generated/operations/_operations.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/_generated/operations/_patch.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/_generated/py.typed +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/aio.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/models.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/patches/auth/aio.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/patches/auth/common.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/patches/auth/sync.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/patches/client/aio.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/patches/client/common.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/patches/client/sync.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/patches/utils.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/py.typed +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/src/diracx/client/sync.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-client/tests/test_auth.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-core/README.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-core/src/diracx/core/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-core/src/diracx/core/config/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-core/src/diracx/core/config/sources.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-core/src/diracx/core/exceptions.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-core/src/diracx/core/preferences.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-core/src/diracx/core/properties.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-core/src/diracx/core/py.typed +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-core/src/diracx/core/s3.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-core/src/diracx/core/settings.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-core/tests/test_config_source.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-core/tests/test_s3.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-core/tests/test_secrets.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/README.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/pyproject.toml +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/__main__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/exceptions.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/os/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/os/job_parameters.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/os/utils.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/py.typed +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/sql/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/sql/auth/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/sql/auth/db.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/sql/auth/schema.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/sql/dummy/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/sql/dummy/db.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/sql/dummy/schema.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/sql/job/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/sql/job_logging/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/sql/job_logging/db.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/sql/job_logging/schema.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/sql/pilot_agents/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/sql/pilot_agents/db.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/sql/sandbox_metadata/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/sql/sandbox_metadata/db.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/sql/sandbox_metadata/schema.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/sql/task_queue/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/sql/task_queue/db.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/sql/task_queue/schema.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/sql/utils/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/src/diracx/db/sql/utils/functions.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/tests/auth/test_authorization_flow.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/tests/auth/test_device_flow.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/tests/auth/test_refresh_token.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/tests/jobs/test_job_logging_db.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/tests/jobs/test_sandbox_metadata.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/tests/opensearch/test_connection.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/tests/opensearch/test_index_template.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/tests/opensearch/test_search.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/tests/pilot_agents/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/tests/pilot_agents/test_pilot_agents_db.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/tests/test_dummy_db.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-db/tests/test_freeze_time.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-logic/README.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-logic/src/diracx/logic/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-logic/src/diracx/logic/__main__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-logic/src/diracx/logic/auth/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-logic/src/diracx/logic/auth/authorize_code_flow.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-logic/src/diracx/logic/auth/device_flow.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-logic/src/diracx/logic/auth/management.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-logic/src/diracx/logic/auth/token.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-logic/src/diracx/logic/auth/utils.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-logic/src/diracx/logic/auth/well_known.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-logic/src/diracx/logic/jobs/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-logic/src/diracx/logic/jobs/sandboxes.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-logic/src/diracx/logic/py.typed +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-logic/src/diracx/logic/task_queues/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-logic/src/diracx/logic/task_queues/priority.py +0 -0
- {diracx-0.0.1a47/diracx-logic/tests/logic → diracx-0.0.1a49/diracx-logic/tests/jobs}/test_sandboxes.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/README.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/src/diracx/routers/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/src/diracx/routers/access_policies.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/src/diracx/routers/auth/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/src/diracx/routers/auth/authorize_code_flow.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/src/diracx/routers/auth/device_flow.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/src/diracx/routers/auth/management.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/src/diracx/routers/auth/token.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/src/diracx/routers/auth/utils.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/src/diracx/routers/auth/well_known.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/src/diracx/routers/configuration.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/src/diracx/routers/dependencies.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/src/diracx/routers/fastapi_classes.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/src/diracx/routers/health/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/src/diracx/routers/health/probes.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/src/diracx/routers/jobs/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/src/diracx/routers/jobs/access_policies.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/src/diracx/routers/jobs/legacy.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/src/diracx/routers/jobs/sandboxes.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/src/diracx/routers/jobs/status.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/src/diracx/routers/otel.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/src/diracx/routers/py.typed +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/src/diracx/routers/utils/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/src/diracx/routers/utils/users.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/tests/auth/test_legacy_exchange.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/tests/data/idp-server.invalid/.well-known/openid-configuration +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/tests/health/test_probes.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/tests/jobs/conftest.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/tests/jobs/test_wms_access_policy.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/tests/test_config_manager.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/tests/test_generic.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-routers/tests/test_policy.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-testing/README.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-testing/src/diracx/testing/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-testing/src/diracx/testing/__main__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-testing/src/diracx/testing/client_generation.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-testing/src/diracx/testing/client_generation_pytest.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-testing/src/diracx/testing/dummy_osdb.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-testing/src/diracx/testing/entrypoints.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-testing/src/diracx/testing/mock_osdb.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-testing/src/diracx/testing/osdb.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-testing/src/diracx/testing/routers.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-testing/src/diracx/testing/scripts/collect_demo_coverage.sh +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/diracx-testing/src/diracx/testing/time.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/SECURITY.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/admin/explanations/authentication.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/admin/explanations/configuration.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/admin/explanations/opentelemetry.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/admin/explanations/sandbox-store.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/admin/explanations/user-management.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/admin/how-to/install/convert-cs.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/admin/index.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/admin/reference/security_model.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/admin/reference/settings-and-preferences.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/admin/tutorials/authentication.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/assets/css/extra.css +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/assets/css/fontawesome-all.min.css +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/assets/css/images/arrow.svg +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/assets/css/images/overlay.png +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/assets/css/main.css +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/assets/home.html +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/assets/images/diracx-logo-square.svg +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/assets/images/logo.svg +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/assets/images/pic02.jpg +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/assets/styles/extra.css +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/assets/webfonts/fa-brands-400.woff2 +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/assets/webfonts/fa-solid-900.woff +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/explanations/client.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/explanations/components/api.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/explanations/components/cli.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/explanations/components/index.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/explanations/components/routes.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/explanations/designing-functionality.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/explanations/index.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/explanations/testing.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/how-to/add-a-cli-command.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/how-to/add-a-db.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/how-to/add-a-route.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/how-to/add-a-setting.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/how-to/add-a-task.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/how-to/add-a-test.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/how-to/add-functionality/index.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/how-to/client-customization.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/how-to/client-extension.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/how-to/develop-legacy-dirac.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/how-to/extend-diracx/index.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/how-to/use-the-demo/index.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/how-to/use-the-demo/swagger.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/how-to/use-the-demo/web.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/index.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/reference/application-state.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/reference/client-metapathfinder.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/reference/coding-conventions.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/reference/configuration.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/reference/db-transaction-model.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/reference/entrypoints.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/reference/pixi-tasks.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/reference/security-policies.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/reference/security-properties.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/reference/test-recipes.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/reference/writing-tests.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/tutorials/advanced-tutorial.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/tutorials/develop-web.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/tutorials/larger-developments.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/tutorials/making-changes.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/tutorials/play-with-auth.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/dev/tutorials/write-docs.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/index.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/overrides/main.html +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/roadmap.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/user/index.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/user/reference/client-configuration.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/user/reference/known-installations.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/user/reference/programmatic-usage/command-line-interface.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/user/reference/programmatic-usage/https-interface.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/user/reference/programmatic-usage/index.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/user/reference/programmatic-usage/python-interface.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/docs/user/tutorials/getting-started.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/containers/client/Dockerfile +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/containers/services/Dockerfile +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/README.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-api/README.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-api/pyproject.toml +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-api/src/gubbins/api/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-api/src/gubbins/api/py.typed +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-api/tests/test_gubbins_api.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-cli/README.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-cli/pyproject.toml +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-cli/src/gubbins/cli/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-cli/src/gubbins/cli/config.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-cli/src/gubbins/cli/lollygag.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-cli/src/gubbins/cli/py.typed +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-cli/tests/test_gubbins_cli.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/README.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/pyproject.toml +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/src/gubbins/client/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_client.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_configuration.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_patch.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_serialization.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_utils/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_utils/serialization.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_utils/utils.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/_vendor.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/_client.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/_configuration.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/_patch.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/_vendor.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/operations/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/operations/_operations.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/aio/operations/_patch.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/models/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/models/_enums.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/operations/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/operations/_operations.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/operations/_patch.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/src/gubbins/client/_generated/py.typed +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/src/gubbins/client/aio.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/src/gubbins/client/models.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/src/gubbins/client/py.typed +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/src/gubbins/client/sync.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-client/tests/test_gubbins_client.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-core/README.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-core/pyproject.toml +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-core/src/gubbins/core/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-core/src/gubbins/core/config/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-core/src/gubbins/core/config/schema.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-core/src/gubbins/core/models.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-core/src/gubbins/core/properties.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-core/src/gubbins/core/py.typed +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-core/tests/test_config.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-core/tests/test_properties.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-db/README.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-db/pyproject.toml +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-db/src/gubbins/db/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-db/src/gubbins/db/py.typed +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/jobs/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/jobs/db.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/jobs/schema.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/lollygag/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/lollygag/db.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-db/src/gubbins/db/sql/lollygag/schema.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-db/tests/test_gubbins_job_db.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-db/tests/test_lollygag_db.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-logic/README.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-logic/pyproject.toml +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-logic/src/gubbins/logic/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-logic/src/gubbins/logic/auth/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-logic/src/gubbins/logic/auth/well_known.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-logic/src/gubbins/logic/lollygag/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-logic/src/gubbins/logic/lollygag/lollygag.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-logic/src/gubbins/logic/py.typed +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-logic/tests/test_gubbins_logic.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-routers/README.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-routers/pyproject.toml +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-routers/src/gubbins/routers/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-routers/src/gubbins/routers/dependencies.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-routers/src/gubbins/routers/lollygag/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-routers/src/gubbins/routers/lollygag/access_policy.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-routers/src/gubbins/routers/lollygag/lollygag.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-routers/src/gubbins/routers/py.typed +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-routers/src/gubbins/routers/well_known.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-routers/tests/data/idp-server.invalid/.well-known/openid-configuration +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-routers/tests/test_gubbins_job_manager.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-routers/tests/test_lollybag.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-routers/tests/test_wellknown.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-testing/README.md +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-testing/pyproject.toml +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/gubbins-testing/src/gubbins/testing/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/pixi.toml +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/extensions/gubbins/release.notes +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/release.notes +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/release.notes.old +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/run_local.sh +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/tests/__init__.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/tests/make_token_local.py +0 -0
- {diracx-0.0.1a47 → diracx-0.0.1a49}/tests/test_generic.py +0 -0
|
@@ -41,14 +41,14 @@ jobs:
|
|
|
41
41
|
# We need extglob for REFERENCE_BRANCH substitution
|
|
42
42
|
shell: bash -l -O extglob {0}
|
|
43
43
|
steps:
|
|
44
|
-
- uses: actions/checkout@
|
|
44
|
+
- uses: actions/checkout@v5
|
|
45
45
|
with:
|
|
46
46
|
token: ${{ github.token }}
|
|
47
47
|
- run: |
|
|
48
48
|
git fetch --prune --unshallow
|
|
49
49
|
git config --global user.email "ci@diracgrid.org"
|
|
50
50
|
git config --global user.name "DIRACGrid CI"
|
|
51
|
-
- uses: actions/setup-python@
|
|
51
|
+
- uses: actions/setup-python@v6
|
|
52
52
|
with:
|
|
53
53
|
python-version: '3.11'
|
|
54
54
|
- name: Installing dependencies
|
|
@@ -156,7 +156,7 @@ jobs:
|
|
|
156
156
|
runs-on: ubuntu-latest
|
|
157
157
|
steps:
|
|
158
158
|
- name: Checkout
|
|
159
|
-
uses: actions/checkout@
|
|
159
|
+
uses: actions/checkout@v5
|
|
160
160
|
- name: Set up QEMU
|
|
161
161
|
uses: docker/setup-qemu-action@v3
|
|
162
162
|
- name: Set up Docker Buildx
|
|
@@ -168,7 +168,7 @@ jobs:
|
|
|
168
168
|
username: ${{ github.actor }}
|
|
169
169
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
170
170
|
- name: Download diracx wheels
|
|
171
|
-
uses: actions/download-artifact@
|
|
171
|
+
uses: actions/download-artifact@v5
|
|
172
172
|
with:
|
|
173
173
|
name: diracx-whl
|
|
174
174
|
- name: "Find wheels"
|
|
@@ -190,7 +190,7 @@ jobs:
|
|
|
190
190
|
push: ${{ needs.deploy-pypi.outputs.create-release == 'true' }}
|
|
191
191
|
tags: "ghcr.io/diracgrid/diracx/client:${{ needs.deploy-pypi.outputs.new-version }}"
|
|
192
192
|
platforms: linux/amd64,linux/arm64
|
|
193
|
-
build-args: EXTRA_PACKAGES_TO_INSTALL=
|
|
193
|
+
build-args: EXTRA_PACKAGES_TO_INSTALL=DIRACCommon~=9.0.0a1
|
|
194
194
|
- name: Build and push services (release)
|
|
195
195
|
uses: docker/build-push-action@v6
|
|
196
196
|
if: ${{ needs.deploy-pypi.outputs.create-release == 'true' }}
|
|
@@ -199,7 +199,7 @@ jobs:
|
|
|
199
199
|
push: ${{ needs.deploy-pypi.outputs.create-release == 'true' }}
|
|
200
200
|
tags: "ghcr.io/diracgrid/diracx/services:${{ needs.deploy-pypi.outputs.new-version }}"
|
|
201
201
|
platforms: linux/amd64,linux/arm64
|
|
202
|
-
build-args: EXTRA_PACKAGES_TO_INSTALL=
|
|
202
|
+
build-args: EXTRA_PACKAGES_TO_INSTALL=DIRACCommon~=9.0.0a1
|
|
203
203
|
|
|
204
204
|
- name: Build and push client (dev)
|
|
205
205
|
uses: docker/build-push-action@v6
|
|
@@ -209,7 +209,7 @@ jobs:
|
|
|
209
209
|
tags: ghcr.io/diracgrid/diracx/client:dev
|
|
210
210
|
platforms: linux/amd64,linux/arm64
|
|
211
211
|
build-args: |
|
|
212
|
-
EXTRA_PACKAGES_TO_INSTALL=git+https://github.com/DIRACGrid/DIRAC.git@integration
|
|
212
|
+
EXTRA_PACKAGES_TO_INSTALL=git+https://github.com/DIRACGrid/DIRAC.git@integration#egg=diraccommon\&subdirectory=dirac-common
|
|
213
213
|
- name: Build and push services (dev)
|
|
214
214
|
uses: docker/build-push-action@v6
|
|
215
215
|
with:
|
|
@@ -218,4 +218,85 @@ jobs:
|
|
|
218
218
|
tags: ghcr.io/diracgrid/diracx/services:dev
|
|
219
219
|
platforms: linux/amd64,linux/arm64
|
|
220
220
|
build-args: |
|
|
221
|
-
EXTRA_PACKAGES_TO_INSTALL=git+https://github.com/DIRACGrid/DIRAC.git@integration
|
|
221
|
+
EXTRA_PACKAGES_TO_INSTALL=git+https://github.com/DIRACGrid/DIRAC.git@integration#egg=diraccommon\&subdirectory=dirac-common
|
|
222
|
+
|
|
223
|
+
update-charts:
|
|
224
|
+
name: Update Helm charts
|
|
225
|
+
needs:
|
|
226
|
+
- deploy-pypi
|
|
227
|
+
- docker
|
|
228
|
+
runs-on: ubuntu-latest
|
|
229
|
+
if: ${{ needs.deploy-pypi.outputs.create-release == 'true' }}
|
|
230
|
+
steps:
|
|
231
|
+
- name: Checkout diracx
|
|
232
|
+
uses: actions/checkout@v5
|
|
233
|
+
with:
|
|
234
|
+
path: diracx
|
|
235
|
+
|
|
236
|
+
- name: Checkout diracx-charts
|
|
237
|
+
uses: actions/checkout@v5
|
|
238
|
+
with:
|
|
239
|
+
repository: DIRACGrid/diracx-charts
|
|
240
|
+
token: ${{ secrets.CHARTS_UPDATE_TOKEN }}
|
|
241
|
+
path: diracx-charts
|
|
242
|
+
|
|
243
|
+
- name: Configure Git
|
|
244
|
+
run: |
|
|
245
|
+
cd diracx-charts
|
|
246
|
+
git config user.name "github-actions[bot]"
|
|
247
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
248
|
+
|
|
249
|
+
- name: Update chart versions
|
|
250
|
+
id: update-versions
|
|
251
|
+
run: |
|
|
252
|
+
cd diracx-charts
|
|
253
|
+
VERSION="${{ needs.deploy-pypi.outputs.new-version }}"
|
|
254
|
+
|
|
255
|
+
# Get current chart version before updating
|
|
256
|
+
CURRENT_CHART_VERSION=$(grep '^version:' diracx/Chart.yaml | sed 's/version: //' | tr -d '"')
|
|
257
|
+
|
|
258
|
+
# Use Python script to update versions
|
|
259
|
+
python ../diracx/.github/workflows/update_chart_version.py \
|
|
260
|
+
--charts-dir . \
|
|
261
|
+
--diracx-version "$VERSION"
|
|
262
|
+
|
|
263
|
+
# Get new chart version after update
|
|
264
|
+
NEW_CHART_VERSION=$(grep '^version:' diracx/Chart.yaml | sed 's/version: //' | tr -d '"')
|
|
265
|
+
|
|
266
|
+
echo "current_chart_version=$CURRENT_CHART_VERSION" >> $GITHUB_OUTPUT
|
|
267
|
+
echo "new_chart_version=$NEW_CHART_VERSION" >> $GITHUB_OUTPUT
|
|
268
|
+
echo "diracx_version=$VERSION" >> $GITHUB_OUTPUT
|
|
269
|
+
|
|
270
|
+
- name: Install pre-commit
|
|
271
|
+
run: |
|
|
272
|
+
pip install pre-commit
|
|
273
|
+
|
|
274
|
+
- name: Run pre-commit to update README
|
|
275
|
+
run: |
|
|
276
|
+
cd diracx-charts
|
|
277
|
+
pre-commit run --all-files || true
|
|
278
|
+
|
|
279
|
+
- name: Commit and push changes
|
|
280
|
+
if: success()
|
|
281
|
+
run: |
|
|
282
|
+
cd diracx-charts
|
|
283
|
+
|
|
284
|
+
# Stage all changes
|
|
285
|
+
git add -A
|
|
286
|
+
|
|
287
|
+
# Check if there are changes to commit
|
|
288
|
+
if ! git diff --cached --quiet; then
|
|
289
|
+
# Commit the changes
|
|
290
|
+
git commit -m "chore: bump chart to ${{ steps.update-versions.outputs.new_chart_version }} for DiracX ${{ steps.update-versions.outputs.diracx_version }}
|
|
291
|
+
|
|
292
|
+
- Update appVersion to ${{ steps.update-versions.outputs.diracx_version }}
|
|
293
|
+
- Update image tag to ${{ steps.update-versions.outputs.diracx_version }}
|
|
294
|
+
- Bump chart version from ${{ steps.update-versions.outputs.current_chart_version }} to ${{ steps.update-versions.outputs.new_chart_version }}"
|
|
295
|
+
|
|
296
|
+
# Push the commit to main branch
|
|
297
|
+
git push origin main
|
|
298
|
+
|
|
299
|
+
echo "✅ Successfully pushed chart version ${{ steps.update-versions.outputs.new_chart_version }} and tag ${TAG_NAME}"
|
|
300
|
+
else
|
|
301
|
+
echo "No changes to commit"
|
|
302
|
+
fi
|
|
@@ -18,21 +18,12 @@ jobs:
|
|
|
18
18
|
runs-on: ubuntu-latest
|
|
19
19
|
steps:
|
|
20
20
|
- name: Checkout code
|
|
21
|
-
uses: actions/checkout@
|
|
22
|
-
- uses: prefix-dev/setup-pixi@v0.
|
|
21
|
+
uses: actions/checkout@v5
|
|
22
|
+
- uses: prefix-dev/setup-pixi@v0.9.0
|
|
23
23
|
with:
|
|
24
24
|
run-install: false
|
|
25
25
|
post-cleanup: false
|
|
26
|
-
-
|
|
27
|
-
run: |
|
|
28
|
-
# Workaround for https://github.com/prefix-dev/pixi/issues/3762
|
|
29
|
-
sed -i.bak 's@editable = true@editable = false@g' pixi.toml
|
|
30
|
-
rm pixi.toml.bak
|
|
31
|
-
# Add annotations to github actions
|
|
32
|
-
pixi add --no-install --pypi --feature diracx-core pytest-github-actions-annotate-failures
|
|
33
|
-
# Show any changes
|
|
34
|
-
git diff
|
|
35
|
-
- uses: prefix-dev/setup-pixi@v0.8.12
|
|
26
|
+
- uses: prefix-dev/setup-pixi@v0.9.0
|
|
36
27
|
with:
|
|
37
28
|
cache: false
|
|
38
29
|
environments: shellcheck
|
|
@@ -62,8 +53,8 @@ jobs:
|
|
|
62
53
|
- gubbins-cli
|
|
63
54
|
steps:
|
|
64
55
|
- name: Checkout code
|
|
65
|
-
uses: actions/checkout@
|
|
66
|
-
- uses: prefix-dev/setup-pixi@v0.
|
|
56
|
+
uses: actions/checkout@v5
|
|
57
|
+
- uses: prefix-dev/setup-pixi@v0.9.0
|
|
67
58
|
with:
|
|
68
59
|
run-install: false
|
|
69
60
|
post-cleanup: false
|
|
@@ -72,18 +63,16 @@ jobs:
|
|
|
72
63
|
# Workaround for https://github.com/prefix-dev/pixi/issues/3762
|
|
73
64
|
sed -i.bak 's@editable = true@editable = false@g' pixi.toml
|
|
74
65
|
rm pixi.toml.bak
|
|
75
|
-
# Add annotations to github actions
|
|
76
|
-
pixi add --no-install --pypi --feature diracx-core pytest-github-actions-annotate-failures
|
|
77
66
|
# Show any changes
|
|
78
67
|
git diff
|
|
79
|
-
- uses: prefix-dev/setup-pixi@v0.
|
|
68
|
+
- uses: prefix-dev/setup-pixi@v0.9.0
|
|
80
69
|
with:
|
|
81
70
|
cache: false
|
|
82
71
|
environments: ${{ matrix.package }}
|
|
83
72
|
- name: Run pytest
|
|
84
73
|
run: pixi run pytest-${{ matrix.package }} --cov-report=xml:coverage.xml --junitxml=report.xml
|
|
85
74
|
- name: Upload coverage report
|
|
86
|
-
uses: codecov/codecov-action@v5.
|
|
75
|
+
uses: codecov/codecov-action@v5.5.1
|
|
87
76
|
|
|
88
77
|
pytest-integration:
|
|
89
78
|
runs-on: ubuntu-latest
|
|
@@ -95,8 +84,8 @@ jobs:
|
|
|
95
84
|
- gubbins
|
|
96
85
|
steps:
|
|
97
86
|
- name: Checkout code
|
|
98
|
-
uses: actions/checkout@
|
|
99
|
-
- uses: prefix-dev/setup-pixi@v0.
|
|
87
|
+
uses: actions/checkout@v5
|
|
88
|
+
- uses: prefix-dev/setup-pixi@v0.9.0
|
|
100
89
|
with:
|
|
101
90
|
run-install: false
|
|
102
91
|
post-cleanup: false
|
|
@@ -105,11 +94,9 @@ jobs:
|
|
|
105
94
|
# Workaround for https://github.com/prefix-dev/pixi/issues/3762
|
|
106
95
|
sed -i.bak 's@editable = true@editable = false@g' pixi.toml
|
|
107
96
|
rm pixi.toml.bak
|
|
108
|
-
# Add annotations to github actions
|
|
109
|
-
pixi add --no-install --pypi --feature diracx-core pytest-github-actions-annotate-failures
|
|
110
97
|
# Show any changes
|
|
111
98
|
git diff
|
|
112
|
-
- uses: prefix-dev/setup-pixi@v0.
|
|
99
|
+
- uses: prefix-dev/setup-pixi@v0.9.0
|
|
113
100
|
with:
|
|
114
101
|
cache: false
|
|
115
102
|
environments: ${{ matrix.extension == 'diracx' && 'default' || 'default-gubbins' }}
|
|
@@ -209,7 +196,7 @@ jobs:
|
|
|
209
196
|
run: |
|
|
210
197
|
pixi run -e ${{ matrix.extension == 'diracx' && 'default' || 'default-gubbins' }} python -m diracx.testing coverage collect-demo --demo-dir=../diracx-charts/.demo
|
|
211
198
|
- name: Upload coverage report
|
|
212
|
-
uses: codecov/codecov-action@v5.
|
|
199
|
+
uses: codecov/codecov-action@v5.5.1
|
|
213
200
|
with:
|
|
214
201
|
files: ./coverage-pytest.xml,./coverage-demo.xml
|
|
215
202
|
|
|
@@ -221,18 +208,12 @@ jobs:
|
|
|
221
208
|
package: [diracx, gubbins]
|
|
222
209
|
steps:
|
|
223
210
|
- name: Checkout code
|
|
224
|
-
uses: actions/checkout@
|
|
225
|
-
- uses: prefix-dev/setup-pixi@v0.
|
|
211
|
+
uses: actions/checkout@v5
|
|
212
|
+
- uses: prefix-dev/setup-pixi@v0.9.0
|
|
226
213
|
with:
|
|
227
214
|
run-install: false
|
|
228
215
|
post-cleanup: false
|
|
229
|
-
-
|
|
230
|
-
run: |
|
|
231
|
-
# Add annotations to github actions
|
|
232
|
-
pixi add --no-install --pypi --feature diracx-core pytest-github-actions-annotate-failures
|
|
233
|
-
# Show any changes
|
|
234
|
-
git diff
|
|
235
|
-
- uses: prefix-dev/setup-pixi@v0.8.12
|
|
216
|
+
- uses: prefix-dev/setup-pixi@v0.9.0
|
|
236
217
|
with:
|
|
237
218
|
cache: false
|
|
238
219
|
locked: false
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Script to update chart versions based on DiracX releases."""
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
import argparse
|
|
7
|
+
import re
|
|
8
|
+
import sys
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def parse_version(version_str: str) -> tuple[int, int, int, str | None]:
|
|
13
|
+
"""Parse a semantic version string into components.
|
|
14
|
+
|
|
15
|
+
Args:
|
|
16
|
+
version_str: Version string like "1.0.0-alpha.1"
|
|
17
|
+
|
|
18
|
+
Returns:
|
|
19
|
+
Tuple of (major, minor, patch, pre_release_suffix)
|
|
20
|
+
|
|
21
|
+
"""
|
|
22
|
+
# Remove leading 'v' if present
|
|
23
|
+
version_str = version_str.lstrip("v")
|
|
24
|
+
|
|
25
|
+
# Pattern for semver with optional pre-release
|
|
26
|
+
pattern = r"^(\d+)\.(\d+)\.(\d+)(?:-(.+))?$"
|
|
27
|
+
match = re.match(pattern, version_str)
|
|
28
|
+
|
|
29
|
+
if not match:
|
|
30
|
+
raise ValueError(f"Invalid version format: {version_str}")
|
|
31
|
+
|
|
32
|
+
major, minor, patch, pre_release = match.groups()
|
|
33
|
+
return int(major), int(minor), int(patch), pre_release
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def bump_version(current_version: str) -> str:
|
|
37
|
+
"""Bump a version automatically - alpha if present, else patch.
|
|
38
|
+
|
|
39
|
+
Args:
|
|
40
|
+
current_version: Current version string
|
|
41
|
+
|
|
42
|
+
Returns:
|
|
43
|
+
New version string
|
|
44
|
+
|
|
45
|
+
"""
|
|
46
|
+
major, minor, patch, pre_release = parse_version(current_version)
|
|
47
|
+
|
|
48
|
+
if pre_release and pre_release.startswith("alpha."):
|
|
49
|
+
# Increment alpha number
|
|
50
|
+
alpha_match = re.match(r"alpha\.(\d+)", pre_release)
|
|
51
|
+
if alpha_match:
|
|
52
|
+
alpha_num = int(alpha_match.group(1)) + 1
|
|
53
|
+
return f"{major}.{minor}.{patch}-alpha.{alpha_num}"
|
|
54
|
+
else:
|
|
55
|
+
# Invalid alpha format, start with alpha.1
|
|
56
|
+
return f"{major}.{minor}.{patch}-alpha.1"
|
|
57
|
+
else:
|
|
58
|
+
# No alpha suffix, bump patch version
|
|
59
|
+
return f"{major}.{minor}.{patch + 1}"
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def update_chart_yaml(
|
|
63
|
+
chart_path: Path, diracx_version: str, new_chart_version: str
|
|
64
|
+
) -> None:
|
|
65
|
+
"""Update Chart.yaml with new versions."""
|
|
66
|
+
content = chart_path.read_text()
|
|
67
|
+
|
|
68
|
+
# Update appVersion
|
|
69
|
+
content = re.sub(
|
|
70
|
+
r"^appVersion:\s*.*$",
|
|
71
|
+
f"appVersion: {diracx_version}",
|
|
72
|
+
content,
|
|
73
|
+
flags=re.MULTILINE,
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
# Update version
|
|
77
|
+
content = re.sub(
|
|
78
|
+
r"^version:\s*.*$",
|
|
79
|
+
f'version: "{new_chart_version}"',
|
|
80
|
+
content,
|
|
81
|
+
flags=re.MULTILINE,
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
chart_path.write_text(content)
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def update_values_yaml(values_path: Path, diracx_version: str) -> None:
|
|
88
|
+
"""Update values.yaml with new image tag."""
|
|
89
|
+
content = values_path.read_text()
|
|
90
|
+
|
|
91
|
+
# Update only the main services image tag under global.images.tag
|
|
92
|
+
# This pattern looks for the first occurrence of 'tag:' after 'images:' section
|
|
93
|
+
content = re.sub(
|
|
94
|
+
r"(global:\s*[\s\S]*?images:\s*[\s\S]*?tag:\s*).*?(\s)",
|
|
95
|
+
f"\\1{diracx_version}\\2",
|
|
96
|
+
content,
|
|
97
|
+
count=1,
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
values_path.write_text(content)
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def main() -> None:
|
|
104
|
+
"""Main function."""
|
|
105
|
+
parser = argparse.ArgumentParser(
|
|
106
|
+
description="Update chart versions for DiracX release"
|
|
107
|
+
)
|
|
108
|
+
parser.add_argument(
|
|
109
|
+
"--charts-dir", type=Path, default=".", help="Path to charts directory"
|
|
110
|
+
)
|
|
111
|
+
parser.add_argument(
|
|
112
|
+
"--diracx-version", required=True, help="DiracX version (e.g., v0.0.1a49)"
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
args = parser.parse_args()
|
|
116
|
+
|
|
117
|
+
# Define paths
|
|
118
|
+
chart_yaml = args.charts_dir / "diracx" / "Chart.yaml"
|
|
119
|
+
values_yaml = args.charts_dir / "diracx" / "values.yaml"
|
|
120
|
+
|
|
121
|
+
if not chart_yaml.exists():
|
|
122
|
+
print(f"Error: Chart.yaml not found at {chart_yaml}")
|
|
123
|
+
sys.exit(1)
|
|
124
|
+
|
|
125
|
+
if not values_yaml.exists():
|
|
126
|
+
print(f"Error: values.yaml not found at {values_yaml}")
|
|
127
|
+
sys.exit(1)
|
|
128
|
+
|
|
129
|
+
# Get current chart version
|
|
130
|
+
chart_content = chart_yaml.read_text()
|
|
131
|
+
version_match = re.search(
|
|
132
|
+
r'^version:\s*["\']?([^"\']+)["\']?$', chart_content, re.MULTILINE
|
|
133
|
+
)
|
|
134
|
+
|
|
135
|
+
if not version_match:
|
|
136
|
+
print("Error: Could not find version in Chart.yaml")
|
|
137
|
+
sys.exit(1)
|
|
138
|
+
|
|
139
|
+
current_chart_version = version_match.group(1)
|
|
140
|
+
print(f"Current chart version: {current_chart_version}")
|
|
141
|
+
|
|
142
|
+
# Calculate new chart version (alpha if present, else patch)
|
|
143
|
+
new_chart_version = bump_version(current_chart_version)
|
|
144
|
+
print(f"New chart version: {new_chart_version}")
|
|
145
|
+
|
|
146
|
+
# Update files
|
|
147
|
+
print("Updating Chart.yaml...")
|
|
148
|
+
update_chart_yaml(chart_yaml, args.diracx_version, new_chart_version)
|
|
149
|
+
|
|
150
|
+
print("Updating values.yaml...")
|
|
151
|
+
update_values_yaml(values_yaml, args.diracx_version)
|
|
152
|
+
|
|
153
|
+
print(f"Successfully updated charts for DiracX {args.diracx_version}")
|
|
154
|
+
print(f"Chart version: {current_chart_version} -> {new_chart_version}")
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
if __name__ == "__main__":
|
|
158
|
+
main()
|
|
@@ -16,13 +16,13 @@ jobs:
|
|
|
16
16
|
runs-on: ubuntu-latest
|
|
17
17
|
steps:
|
|
18
18
|
- name: Checkout
|
|
19
|
-
uses: actions/checkout@
|
|
19
|
+
uses: actions/checkout@v5
|
|
20
20
|
with:
|
|
21
21
|
fetch-depth: 0
|
|
22
22
|
tags: true
|
|
23
23
|
|
|
24
24
|
- name: Run Trivy (client:dev)
|
|
25
|
-
uses: aquasecurity/trivy-action@0.
|
|
25
|
+
uses: aquasecurity/trivy-action@0.33.1
|
|
26
26
|
with:
|
|
27
27
|
image-ref: "ghcr.io/diracgrid/diracx/client:dev"
|
|
28
28
|
format: "sarif"
|
|
@@ -35,7 +35,7 @@ jobs:
|
|
|
35
35
|
category: "client-dev"
|
|
36
36
|
|
|
37
37
|
- name: Run Trivy (services:dev)
|
|
38
|
-
uses: aquasecurity/trivy-action@0.
|
|
38
|
+
uses: aquasecurity/trivy-action@0.33.1
|
|
39
39
|
with:
|
|
40
40
|
image-ref: "ghcr.io/diracgrid/diracx/services:dev"
|
|
41
41
|
format: "sarif"
|
|
@@ -61,7 +61,7 @@ jobs:
|
|
|
61
61
|
|
|
62
62
|
- name: Run Trivy (client:release)
|
|
63
63
|
if: ${{ steps.get-latest-tag.outputs.latest_tag != '' }}
|
|
64
|
-
uses: aquasecurity/trivy-action@0.
|
|
64
|
+
uses: aquasecurity/trivy-action@0.33.1
|
|
65
65
|
with:
|
|
66
66
|
image-ref: "ghcr.io/diracgrid/diracx/client:${{ steps.get-latest-tag.outputs.latest_tag }}"
|
|
67
67
|
format: "sarif"
|
|
@@ -77,7 +77,7 @@ jobs:
|
|
|
77
77
|
|
|
78
78
|
- name: Run Trivy (services:release)
|
|
79
79
|
if: ${{ steps.get-latest-tag.outputs.latest_tag != '' }}
|
|
80
|
-
uses: aquasecurity/trivy-action@0.
|
|
80
|
+
uses: aquasecurity/trivy-action@0.33.1
|
|
81
81
|
with:
|
|
82
82
|
image-ref: "ghcr.io/diracgrid/diracx/services:${{ steps.get-latest-tag.outputs.latest_tag }}"
|
|
83
83
|
format: "sarif"
|
|
@@ -18,7 +18,7 @@ repos:
|
|
|
18
18
|
args: ["--verbose"]
|
|
19
19
|
|
|
20
20
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
21
|
-
rev:
|
|
21
|
+
rev: v6.0.0
|
|
22
22
|
hooks:
|
|
23
23
|
- id: trailing-whitespace
|
|
24
24
|
- id: end-of-file-fixer
|
|
@@ -27,7 +27,7 @@ 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.
|
|
30
|
+
rev: 'v0.12.11'
|
|
31
31
|
hooks:
|
|
32
32
|
- id: ruff
|
|
33
33
|
args: ["--fix", "--show-fixes"]
|
|
@@ -62,3 +62,12 @@ repos:
|
|
|
62
62
|
hooks:
|
|
63
63
|
- id: codespell
|
|
64
64
|
args: ["-w"]
|
|
65
|
+
|
|
66
|
+
- repo: local
|
|
67
|
+
hooks:
|
|
68
|
+
- id: check-lollygag
|
|
69
|
+
name: check for lollygag
|
|
70
|
+
types: [python]
|
|
71
|
+
entry: '(?i)lollygag'
|
|
72
|
+
language: pygrep
|
|
73
|
+
files: ^diracx
|
|
@@ -33,6 +33,7 @@ Operations:
|
|
|
33
33
|
CatalogList: FileCatalog, TSCatalog, MultiVOFileCatalog
|
|
34
34
|
Transformations:
|
|
35
35
|
DataProcessing: MCSimulation, Merge, DataReprocessing
|
|
36
|
+
Jenkins: {}
|
|
36
37
|
vo:
|
|
37
38
|
Shifter:
|
|
38
39
|
DataManager:
|
|
@@ -131,94 +132,7 @@ Registry:
|
|
|
131
132
|
- /C=ch/O=DIRAC/OU=DIRAC CI/CN=trialUser
|
|
132
133
|
Email: lhcb-dirac-ci@cern.ch
|
|
133
134
|
PreferedUsername: trialUser
|
|
134
|
-
Resources:
|
|
135
|
-
FTSEndpoints:
|
|
136
|
-
FTS3:
|
|
137
|
-
JENKINS-FTS3: https://jenkins-fts3.cern.ch:8446
|
|
138
|
-
FileCatalogs:
|
|
139
|
-
FileCatalog:
|
|
140
|
-
AccessType: Read-Write
|
|
141
|
-
Master: 'True'
|
|
142
|
-
Status: Active
|
|
143
|
-
MultiVOFileCatalog:
|
|
144
|
-
AccessType: Read-Write
|
|
145
|
-
CatalogType: FileCatalog
|
|
146
|
-
CatalogURL: DataManagement/MultiVOFileCatalog
|
|
147
|
-
Status: Active
|
|
148
|
-
TSCatalog:
|
|
149
|
-
AccessType: Write
|
|
150
|
-
CatalogType: TSCatalog
|
|
151
|
-
CatalogURL: Transformation/TransformationManager
|
|
152
|
-
Status: Active
|
|
153
|
-
Sites:
|
|
154
|
-
DIRAC:
|
|
155
|
-
DIRAC.Jenkins.ch:
|
|
156
|
-
CEs:
|
|
157
|
-
jenkins.cern.ch:
|
|
158
|
-
CEType: Test
|
|
159
|
-
Queues:
|
|
160
|
-
jenkins-queue_not_important:
|
|
161
|
-
SI00: '2400'
|
|
162
|
-
maxCPUTime: '200000'
|
|
163
|
-
Name: aNameWhatSoEver
|
|
164
|
-
SE: SE-1
|
|
165
|
-
jenkins.cern.ch:
|
|
166
|
-
QueuesResources:
|
|
167
|
-
Sites:
|
|
168
|
-
DIRAC:
|
|
169
|
-
DIRAC.Jenkins.ch:
|
|
170
|
-
jenkins.cern.ch:
|
|
171
|
-
Queues:
|
|
172
|
-
jenkins-queue_not_important: {}
|
|
173
|
-
StorageElements:
|
|
174
|
-
ProductionSandboxSE:
|
|
175
|
-
AccessProtocol: dips
|
|
176
|
-
BackendType: DISET
|
|
177
|
-
DIP:
|
|
178
|
-
Access: remote
|
|
179
|
-
Host: localhost
|
|
180
|
-
Path: sandboxes
|
|
181
|
-
Port: '9196'
|
|
182
|
-
Protocol: dips
|
|
183
|
-
ProtocolName: DIP
|
|
184
|
-
S3-DIRECT:
|
|
185
|
-
AccessProtocols: s3
|
|
186
|
-
S3:
|
|
187
|
-
Access: remote
|
|
188
|
-
Aws_access_key_id: FakeId
|
|
189
|
-
Aws_secret_access_key: 'True'
|
|
190
|
-
Host: s3-direct
|
|
191
|
-
Path: my-first-bucket
|
|
192
|
-
Port: '9090'
|
|
193
|
-
Protocol: s3
|
|
194
|
-
SecureConnection: 'False'
|
|
195
|
-
WriteProtocols: s3
|
|
196
|
-
S3-INDIRECT:
|
|
197
|
-
AccessProtocols: s3
|
|
198
|
-
S3:
|
|
199
|
-
Access: remote
|
|
200
|
-
Host: s3-direct
|
|
201
|
-
Path: my-first-bucket
|
|
202
|
-
Port: '9090'
|
|
203
|
-
Protocol: s3
|
|
204
|
-
SecureConnection: 'False'
|
|
205
|
-
WriteProtocols: s3
|
|
206
|
-
SE-1:
|
|
207
|
-
AccessProtocol: dips
|
|
208
|
-
DIP:
|
|
209
|
-
Access: remote
|
|
210
|
-
Host: server
|
|
211
|
-
Path: /DataManagement/SE-1
|
|
212
|
-
Port: '9148'
|
|
213
|
-
Protocol: dips
|
|
214
|
-
SE-2:
|
|
215
|
-
AccessProtocol: dips
|
|
216
|
-
DIP:
|
|
217
|
-
Access: remote
|
|
218
|
-
Host: server
|
|
219
|
-
Path: /DataManagement/SE-2
|
|
220
|
-
Port: '9147'
|
|
221
|
-
Protocol: dips
|
|
135
|
+
Resources: {}
|
|
222
136
|
Systems:
|
|
223
137
|
Accounting:
|
|
224
138
|
Databases:
|
|
@@ -690,9 +604,8 @@ Systems:
|
|
|
690
604
|
SubmitStatus: Active, Completing
|
|
691
605
|
SubmitTasks: 'yes'
|
|
692
606
|
TaskUpdateChunkSize: '0'
|
|
693
|
-
TaskUpdateStatus: Checking, Deleted, Killed, Staging, Stalled, Matched,
|
|
694
|
-
|
|
695
|
-
Running
|
|
607
|
+
TaskUpdateStatus: Checking, Deleted, Killed, Staging, Stalled, Matched, Scheduled,
|
|
608
|
+
Rescheduled, Completed, Submitted, Assigned, Received, Waiting, Running
|
|
696
609
|
TasksPerLoop: '50'
|
|
697
610
|
TransType: ''
|
|
698
611
|
UpdateFilesStatus: Active, Completing, Stopped
|
|
@@ -726,8 +639,7 @@ Systems:
|
|
|
726
639
|
TaskUpdateStatus: Submitted, Received, Waiting, Running, Matched, Completed,
|
|
727
640
|
Failed
|
|
728
641
|
TasksPerLoop: '50'
|
|
729
|
-
TransType: MCSimulation, DataReconstruction, DataStripping, MCStripping,
|
|
730
|
-
Merge
|
|
642
|
+
TransType: MCSimulation, DataReconstruction, DataStripping, MCStripping, Merge
|
|
731
643
|
UpdateFilesStatus: Active, Completing, Stopped
|
|
732
644
|
UpdateTasksStatus: Active, Completing, Stopped
|
|
733
645
|
maxNumberOfThreads: '15'
|
|
@@ -787,8 +699,8 @@ Systems:
|
|
|
787
699
|
Executors:
|
|
788
700
|
Optimizers:
|
|
789
701
|
JobScheduling:
|
|
790
|
-
RescheduleDelays: '0'
|
|
791
702
|
MaxRescheduling: '3'
|
|
703
|
+
RescheduleDelays: '0'
|
|
792
704
|
FailoverURLs: {}
|
|
793
705
|
Services:
|
|
794
706
|
Matcher:
|
|
@@ -31,7 +31,12 @@ def test_cs_sync(tmp_path, monkeypatch):
|
|
|
31
31
|
assert result.exit_code == 0
|
|
32
32
|
assert output_file.is_file()
|
|
33
33
|
actual_output = yaml.safe_load(output_file.read_text())
|
|
34
|
-
|
|
34
|
+
expected_output_file = file_path / "integration_test.yaml"
|
|
35
|
+
expected_output = yaml.safe_load(expected_output_file.read_text())
|
|
36
|
+
# If you need to update the expected output, you can do so by running pytest --pdb
|
|
37
|
+
# and then running the following command:
|
|
38
|
+
# expected_output_file.write_text(yaml.dump(actual_output, sort_keys=True))
|
|
39
|
+
# And then carefully(!) review the diff
|
|
35
40
|
assert actual_output == expected_output
|
|
36
41
|
Config.model_validate(actual_output)
|
|
37
42
|
|