From 28b535e905e9b7dd4195c928ed02bbf186235f91 Mon Sep 17 00:00:00 2001 From: Adrian Rumpold Date: Fri, 27 Sep 2024 12:51:11 +0200 Subject: [PATCH 1/5] chore: Rename client project to aai-jobq --- client/pyproject.toml | 2 +- client/requirements-dev.txt | 50 ++++++++++++++++++------------------- client/requirements.txt | 4 +-- 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/client/pyproject.toml b/client/pyproject.toml index 8689f85..af07683 100644 --- a/client/pyproject.toml +++ b/client/pyproject.toml @@ -3,7 +3,7 @@ requires = ["setuptools>=62", "setuptools-scm[toml]", "wheel"] build-backend = "setuptools.build_meta" [project] -name = "jobq" +name = "aai-jobq" description = "" version = "0.1.0" readme = "README.md" diff --git a/client/requirements-dev.txt b/client/requirements-dev.txt index 775812f..1ee2b3b 100644 --- a/client/requirements-dev.txt +++ b/client/requirements-dev.txt @@ -3,13 +3,13 @@ annotated-types==0.7.0 # via pydantic appnope==0.1.4 - # via jobq (pyproject.toml) + # via aai-jobq (pyproject.toml) babel==2.16.0 # via mkdocs-material black==24.8.0 - # via jobq (pyproject.toml) + # via aai-jobq (pyproject.toml) build==1.2.1 - # via jobq (pyproject.toml) + # via aai-jobq (pyproject.toml) certifi==2024.8.30 # via requests cfgv==3.4.0 @@ -18,7 +18,7 @@ charset-normalizer==3.3.2 # via requests click==8.1.7 # via - # jobq (pyproject.toml) + # aai-jobq (pyproject.toml) # black # mkdocs # mkdocstrings @@ -31,9 +31,9 @@ coverage==7.6.1 distlib==0.3.8 # via virtualenv docker==7.1.0 - # via jobq (pyproject.toml) + # via aai-jobq (pyproject.toml) docstring-parser==0.16 - # via jobq (pyproject.toml) + # via aai-jobq (pyproject.toml) filelock==3.15.4 # via virtualenv ghp-import==2.1.0 @@ -41,7 +41,7 @@ ghp-import==2.1.0 griffe==1.2.0 # via mkdocstrings-python humanize==4.10.0 - # via jobq (pyproject.toml) + # via aai-jobq (pyproject.toml) identify==2.6.0 # via pre-commit idna==3.8 @@ -80,10 +80,10 @@ mergedeep==1.3.4 # mkdocs # mkdocs-get-deps mike==2.1.3 - # via jobq (pyproject.toml) + # via aai-jobq (pyproject.toml) mkdocs==1.6.1 # via - # jobq (pyproject.toml) + # aai-jobq (pyproject.toml) # mike # mkdocs-autorefs # mkdocs-callouts @@ -98,24 +98,24 @@ mkdocs-autorefs==1.2.0 # mkdocstrings # mkdocstrings-python mkdocs-callouts==1.14.0 - # via jobq (pyproject.toml) + # via aai-jobq (pyproject.toml) mkdocs-gen-files==0.5.0 - # via jobq (pyproject.toml) + # via aai-jobq (pyproject.toml) mkdocs-get-deps==0.2.0 # via mkdocs mkdocs-include-dir-to-nav==1.2.0 - # via jobq (pyproject.toml) + # via aai-jobq (pyproject.toml) mkdocs-literate-nav==0.6.1 - # via jobq (pyproject.toml) + # via aai-jobq (pyproject.toml) mkdocs-material==9.5.34 - # via jobq (pyproject.toml) + # via aai-jobq (pyproject.toml) mkdocs-material-extensions==1.3.1 # via mkdocs-material mkdocs-section-index==0.3.9 - # via jobq (pyproject.toml) + # via aai-jobq (pyproject.toml) mkdocstrings==0.26.0 # via - # jobq (pyproject.toml) + # aai-jobq (pyproject.toml) # mkdocstrings-python mkdocstrings-python==1.11.1 # via mkdocstrings @@ -144,15 +144,15 @@ platformdirs==4.2.2 pluggy==1.5.0 # via pytest pre-commit==3.8.0 - # via jobq (pyproject.toml) + # via aai-jobq (pyproject.toml) pydantic==2.9.0 # via - # jobq (pyproject.toml) + # aai-jobq (pyproject.toml) # pydantic-settings pydantic-core==2.23.2 # via pydantic pydantic-settings==2.5.2 - # via jobq (pyproject.toml) + # via aai-jobq (pyproject.toml) pygments==2.18.0 # via # mkdocs-material @@ -167,19 +167,19 @@ pyproject-hooks==1.1.0 # via build pytest==8.3.2 # via - # jobq (pyproject.toml) + # aai-jobq (pyproject.toml) # pytest-cov pytest-cov==5.0.0 - # via jobq (pyproject.toml) + # via aai-jobq (pyproject.toml) python-dateutil==2.9.0.post0 # via - # jobq (pyproject.toml) + # aai-jobq (pyproject.toml) # ghp-import python-dotenv==1.0.1 # via pydantic-settings pyyaml==6.0.2 # via - # jobq (pyproject.toml) + # aai-jobq (pyproject.toml) # mike # mkdocs # mkdocs-get-deps @@ -197,9 +197,9 @@ requests==2.32.3 # docker # mkdocs-material rich==13.8.0 - # via jobq (pyproject.toml) + # via aai-jobq (pyproject.toml) ruff==0.6.4 - # via jobq (pyproject.toml) + # via aai-jobq (pyproject.toml) six==1.16.0 # via python-dateutil typing-extensions==4.12.2 diff --git a/client/requirements.txt b/client/requirements.txt index c18e01d..46e9232 100644 --- a/client/requirements.txt +++ b/client/requirements.txt @@ -3,11 +3,11 @@ annotated-types==0.7.0 # via pydantic pydantic==2.9.0 - # via jobq (pyproject.toml) + # via aai-jobq (pyproject.toml) pydantic-core==2.23.2 # via pydantic pyyaml==6.0.2 - # via jobq (pyproject.toml) + # via aai-jobq (pyproject.toml) typing-extensions==4.12.2 # via # pydantic From 46610f6e718d0fe3a65b4ede59d146925315f370 Mon Sep 17 00:00:00 2001 From: Adrian Rumpold Date: Fri, 27 Sep 2024 12:52:11 +0200 Subject: [PATCH 2/5] chore: Reflect name change in backend project --- backend/pyproject.toml | 5 +++-- backend/requirements-dev.txt | 30 +++++++++++++++--------------- backend/requirements.txt | 16 ++++++++-------- 3 files changed, 26 insertions(+), 25 deletions(-) diff --git a/backend/pyproject.toml b/backend/pyproject.toml index 7c9f8e0..6e57db7 100644 --- a/backend/pyproject.toml +++ b/backend/pyproject.toml @@ -3,7 +3,7 @@ requires = ["setuptools>=62", "setuptools-scm[toml]", "wheel"] build-backend = "setuptools.build_meta" [project] -name = "jobq-server" +name = "aai-jobq-server" description = "" version = "0.1.0" readme = "README.md" @@ -21,7 +21,8 @@ dependencies = [ "uvicorn", "docker", "kubernetes", - "jobq @ git+https://github.com/aai-institute/jobq.git@main#subdirectory=client", + # FIXME: Revert to main branch once PR is merged + "aai-jobq @ git+https://github.com/aai-institute/jobq.git@28b535e905e9b7dd4195c928ed02bbf186235f91#subdirectory=client", ] [project.optional-dependencies] diff --git a/backend/requirements-dev.txt b/backend/requirements-dev.txt index 00f0e49..8953f67 100644 --- a/backend/requirements-dev.txt +++ b/backend/requirements-dev.txt @@ -1,5 +1,7 @@ # This file was autogenerated by uv via the following command: # uv pip compile --all-extras -o requirements-dev.txt pyproject.toml +aai-jobq @ git+https://github.com/aai-institute/jobq.git@28b535e905e9b7dd4195c928ed02bbf186235f91#subdirectory=client + # via aai-jobq-server (pyproject.toml) annotated-types==0.7.0 # via pydantic anyio==4.4.0 @@ -8,7 +10,7 @@ anyio==4.4.0 # starlette # watchfiles build==1.2.1 - # via jobq-server (pyproject.toml) + # via aai-jobq-server (pyproject.toml) cachetools==5.4.0 # via google-auth certifi==2024.7.4 @@ -33,12 +35,12 @@ dnspython==2.6.1 # via email-validator docker==7.1.0 # via - # jobq-server (pyproject.toml) + # aai-jobq-server (pyproject.toml) # testcontainers email-validator==2.2.0 # via fastapi fastapi==0.112.0 - # via jobq-server (pyproject.toml) + # via aai-jobq-server (pyproject.toml) fastapi-cli==0.0.5 # via fastapi filelock==3.15.4 @@ -67,10 +69,8 @@ iniconfig==2.0.0 # via pytest jinja2==3.1.4 # via fastapi -jobq @ git+https://github.com/aai-institute/jobq.git@3c3f339cac979bfa8b54a0019ce6a78045f2a33a#subdirectory=client - # via jobq-server (pyproject.toml) kubernetes==30.1.0 - # via jobq-server (pyproject.toml) + # via aai-jobq-server (pyproject.toml) markdown-it-py==3.0.0 # via rich markupsafe==2.1.5 @@ -92,7 +92,7 @@ platformdirs==4.2.2 pluggy==1.5.0 # via pytest pre-commit==3.8.0 - # via jobq-server (pyproject.toml) + # via aai-jobq-server (pyproject.toml) pyasn1==0.6.0 # via # pyasn1-modules @@ -101,8 +101,8 @@ pyasn1-modules==0.4.0 # via google-auth pydantic==2.8.2 # via + # aai-jobq # fastapi - # jobq pydantic-core==2.20.1 # via pydantic pygments==2.18.0 @@ -111,13 +111,13 @@ pyproject-hooks==1.1.0 # via build pytest==8.3.2 # via - # jobq-server (pyproject.toml) + # aai-jobq-server (pyproject.toml) # pytest-cov # pytest-mock pytest-cov==5.0.0 - # via jobq-server (pyproject.toml) + # via aai-jobq-server (pyproject.toml) pytest-mock==3.14.0 - # via jobq-server (pyproject.toml) + # via aai-jobq-server (pyproject.toml) python-dateutil==2.9.0.post0 # via kubernetes python-dotenv==1.0.1 @@ -126,7 +126,7 @@ python-multipart==0.0.9 # via fastapi pyyaml==6.0.2 # via - # jobq + # aai-jobq # kubernetes # pre-commit # uvicorn @@ -142,7 +142,7 @@ rich==13.7.1 rsa==4.9 # via google-auth ruff==0.5.6 - # via jobq-server (pyproject.toml) + # via aai-jobq-server (pyproject.toml) shellingham==1.5.4 # via typer six==1.16.0 @@ -156,7 +156,7 @@ sniffio==1.3.1 starlette==0.37.2 # via fastapi testcontainers==4.8.0 - # via jobq-server (pyproject.toml) + # via aai-jobq-server (pyproject.toml) typer==0.12.3 # via fastapi-cli typing-extensions==4.12.2 @@ -174,7 +174,7 @@ urllib3==2.2.2 # testcontainers uvicorn==0.30.5 # via - # jobq-server (pyproject.toml) + # aai-jobq-server (pyproject.toml) # fastapi # fastapi-cli uvloop==0.19.0 diff --git a/backend/requirements.txt b/backend/requirements.txt index d88a5c4..53370c2 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -1,5 +1,7 @@ # This file was autogenerated by uv via the following command: # uv pip compile --strip-extras -o requirements.txt pyproject.toml +aai-jobq @ git+https://github.com/aai-institute/jobq.git@28b535e905e9b7dd4195c928ed02bbf186235f91#subdirectory=client + # via aai-jobq-server (pyproject.toml) annotated-types==0.7.0 # via pydantic anyio==4.4.0 @@ -15,9 +17,9 @@ charset-normalizer==3.3.2 click==8.1.7 # via uvicorn docker==7.1.0 - # via jobq-server (pyproject.toml) + # via aai-jobq-server (pyproject.toml) fastapi==0.112.0 - # via jobq-server (pyproject.toml) + # via aai-jobq-server (pyproject.toml) google-auth==2.33.0 # via kubernetes h11==0.14.0 @@ -26,10 +28,8 @@ idna==3.7 # via # anyio # requests -jobq @ git+https://github.com/aai-institute/jobq.git@3c3f339cac979bfa8b54a0019ce6a78045f2a33a#subdirectory=client - # via jobq-server (pyproject.toml) kubernetes==30.1.0 - # via jobq-server (pyproject.toml) + # via aai-jobq-server (pyproject.toml) oauthlib==3.2.2 # via # kubernetes @@ -42,15 +42,15 @@ pyasn1-modules==0.4.0 # via google-auth pydantic==2.8.2 # via + # aai-jobq # fastapi - # jobq pydantic-core==2.20.1 # via pydantic python-dateutil==2.9.0.post0 # via kubernetes pyyaml==6.0.2 # via - # jobq + # aai-jobq # kubernetes requests==2.32.3 # via @@ -80,6 +80,6 @@ urllib3==2.2.2 # kubernetes # requests uvicorn==0.30.6 - # via jobq-server (pyproject.toml) + # via aai-jobq-server (pyproject.toml) websocket-client==1.8.0 # via kubernetes From 4db1b266976d8123d066d42d57c1603e12d559e1 Mon Sep 17 00:00:00 2001 From: Adrian Rumpold Date: Fri, 27 Sep 2024 12:52:22 +0200 Subject: [PATCH 3/5] feat(ci): Add PyPI release pipeline --- .github/workflows/release.yaml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 1e50c98..8019a5e 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -70,3 +70,24 @@ jobs: alias: latest push: true workingDirectory: client + publish-pypi: + runs-on: ubuntu-latest + needs: build-release + permissions: + # required for trusted publishing + id-token: write + steps: + - name: Download build artifacts + uses: actions/download-artifact@v4 + with: + name: dist + path: dist + - name: Publish distribution 📦 to Test PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + skip-existing: true # tolerate release package file duplicates + repository-url: https://test.pypi.org/legacy/ + - name: Publish distribution 📦 to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + attestations: true From dc41ce289e8286af17b0d51313ce2620ff590ace Mon Sep 17 00:00:00 2001 From: Adrian Rumpold Date: Fri, 27 Sep 2024 13:00:46 +0200 Subject: [PATCH 4/5] fix(ci): Capture stdout in pytest --- .github/workflows/client-python.yaml | 2 +- client/tests/integration/test_cli.py | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/client-python.yaml b/.github/workflows/client-python.yaml index 815e399..239c545 100644 --- a/.github/workflows/client-python.yaml +++ b/.github/workflows/client-python.yaml @@ -45,7 +45,7 @@ jobs: - name: Execute python tests run: | uv pip install . # need to install without --no-deps to work around non-portable dependency resolution in `uv pip compile` - uv run pytest --cov=src --cov-report=xml --junitxml=junit.xml + uv run pytest -s --cov=src --cov-report=xml --junitxml=junit.xml - name: Upload results to Codecov uses: codecov/codecov-action@v4 with: diff --git a/client/tests/integration/test_cli.py b/client/tests/integration/test_cli.py index 7f21893..63a1ca0 100644 --- a/client/tests/integration/test_cli.py +++ b/client/tests/integration/test_cli.py @@ -15,5 +15,9 @@ def test_help(runner: CliRunner, command: str, flag: str) -> None: """Test that the help message is displayed correctly for all commands.""" result = runner.invoke(cli, [command, flag] if command else [flag]) + + if result.exit_code != 0: + print(result.output) # aid debugging in CI + assert result.exit_code == 0 assert "usage" in result.output From a49d2600dcd86d32d80cb628125de0c3fa94bd52 Mon Sep 17 00:00:00 2001 From: Adrian Rumpold Date: Fri, 27 Sep 2024 13:06:05 +0200 Subject: [PATCH 5/5] fix(client): Fix version lookup --- client/src/cli/parser.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cli/parser.py b/client/src/cli/parser.py index fe94b9d..1427843 100644 --- a/client/src/cli/parser.py +++ b/client/src/cli/parser.py @@ -7,7 +7,7 @@ from .commands import logs, status, stop, submit try: - __version__ = version("jobq") + __version__ = version("aai-jobq") except PackageNotFoundError: pass