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