From da6dec13f72f14a04a0a54182767849f591b8ea4 Mon Sep 17 00:00:00 2001 From: Byron Himes Date: Mon, 22 Jul 2024 10:42:29 +0200 Subject: [PATCH] Update to python 3.12 (GSI-912) (#25) * Bump version from 2.0.0 -> 2.0.1 Update template files Transition test fixtures to split container-client model Consolidate pytest asyncio markers where able and fix scope * Silence mypy * Be more specific with top-level dependencies * Update typer lower bound --- .devcontainer/Dockerfile | 4 +- .devcontainer/devcontainer.json | 8 +- .devcontainer/license_header.txt | 2 +- .github/workflows/check_config_docs.yaml | 15 +- .github/workflows/check_openapi_spec.yaml | 19 +- .github/workflows/check_pyproject.yaml | 15 +- .github/workflows/check_readme.yaml | 17 +- .github/workflows/check_template_files.yaml | 17 +- .github/workflows/ci_release.yaml | 3 + .github/workflows/ci_workflow_dispatch.yaml | 4 +- .github/workflows/static_code_analysis.yaml | 28 +- .github/workflows/tests.yaml | 21 +- .pre-commit-config.yaml | 6 +- .pyproject_generation/README.md | 2 +- .pyproject_generation/pyproject_custom.toml | 10 +- .pyproject_generation/pyproject_template.toml | 51 +- .readme_generation/README.md | 2 +- .template/README.md | 2 +- .template/deprecated_files.txt | 1 + .template/static_files.txt | 4 +- Dockerfile | 6 +- LICENSE | 2 +- README.md | 12 +- config_schema.json | 12 +- example_config.yaml | 3 +- lock/README.md | 2 +- lock/requirements-dev-template.in | 42 +- lock/requirements-dev.txt | 1465 ++++++++--------- lock/requirements.txt | 1117 +++++++------ openapi.yaml | 1 + pyproject.toml | 61 +- scripts/__init__.py | 2 +- .../{license_checker.py => check_license.py} | 132 +- scripts/get_package_name.py | 2 +- scripts/list_outdated_dependencies.py | 9 +- scripts/script_utils/__init__.py | 2 +- scripts/script_utils/cli.py | 9 +- scripts/script_utils/deps.py | 17 +- scripts/script_utils/fastapi_app_location.py | 3 +- scripts/script_utils/lock_deps.py | 6 +- scripts/update_all.py | 2 +- scripts/update_config_docs.py | 2 +- scripts/update_hook_revs.py | 5 +- scripts/update_lock.py | 37 +- scripts/update_openapi_docs.py | 2 +- scripts/update_pyproject.py | 34 +- scripts/update_readme.py | 6 +- scripts/update_template_files.py | 2 +- src/mass/__init__.py | 2 +- src/mass/__main__.py | 3 +- src/mass/adapters/__init__.py | 2 +- src/mass/adapters/inbound/__init__.py | 2 +- src/mass/adapters/inbound/event_sub.py | 6 +- .../adapters/inbound/fastapi_/__init__.py | 2 +- .../adapters/inbound/fastapi_/configure.py | 2 +- src/mass/adapters/inbound/fastapi_/dummies.py | 2 +- src/mass/adapters/inbound/fastapi_/models.py | 5 +- src/mass/adapters/inbound/fastapi_/routes.py | 6 +- src/mass/adapters/outbound/__init__.py | 2 +- src/mass/adapters/outbound/aggregator.py | 5 +- src/mass/adapters/outbound/dao.py | 3 +- src/mass/adapters/outbound/utils.py | 9 +- src/mass/cli.py | 2 +- src/mass/config.py | 2 +- src/mass/core/__init__.py | 2 +- src/mass/core/models.py | 3 +- src/mass/core/query_handler.py | 11 +- src/mass/inject.py | 10 +- src/mass/main.py | 3 +- src/mass/ports/__init__.py | 2 +- src/mass/ports/inbound/__init__.py | 2 +- src/mass/ports/inbound/query_handler.py | 7 +- src/mass/ports/outbound/__init__.py | 2 +- src/mass/ports/outbound/aggregator.py | 6 +- src/mass/ports/outbound/dao.py | 5 +- tests/__init__.py | 2 +- tests/conftest.py | 38 +- tests/fixtures/__init__.py | 2 +- tests/fixtures/config.py | 5 +- tests/fixtures/joint.py | 60 +- tests/fixtures/utils.py | 2 +- tests/test_api.py | 18 +- tests/test_consumer.py | 8 +- tests/test_index_creation.py | 5 +- tests/test_logging.py | 8 +- tests/test_relevance.py | 30 +- tests/test_resources.py | 19 +- tests/test_sorting.py | 16 +- 88 files changed, 1818 insertions(+), 1729 deletions(-) rename scripts/{license_checker.py => check_license.py} (88%) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index a3be419..b21af00 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,4 +1,4 @@ -FROM mcr.microsoft.com/vscode/devcontainers/python:3.9-bullseye +FROM mcr.microsoft.com/devcontainers/python:1-3.12-bookworm ENV PYTHONUNBUFFERED 1 @@ -8,7 +8,7 @@ ARG USER_GID=$USER_UID RUN if [ "$USER_GID" != "1000" ] || [ "$USER_UID" != "1000" ]; then groupmod --gid $USER_GID vscode && usermod --uid $USER_UID --gid $USER_GID vscode; fi # [Option] Install Node.js -ARG INSTALL_NODE="true" +ARG INSTALL_NODE="false" ARG NODE_VERSION="lts/*" RUN if [ "${INSTALL_NODE}" = "true" ]; then su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; fi diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index c49da2b..b9b990e 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,6 +1,5 @@ // For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: // https://github.com/microsoft/vscode-dev-containers/tree/v0.177.0/containers/python-3-postgres -// Update the VARIANT arg in docker-compose.yml to pick a Python version: 3, 3.8, 3.7, 3.6 { "name": "${localWorkspaceFolderBasename}", "dockerComposeFile": "docker-compose.yml", @@ -20,13 +19,10 @@ "python.languageServer": "Pylance", "python.analysis.typeCheckingMode": "basic", "python.testing.pytestPath": "/usr/local/py-utils/bin/pytest", - "python.testing.pytestArgs": [ - "--profile" - ], "python.testing.unittestEnabled": false, "python.testing.pytestEnabled": true, "editor.codeActionsOnSave": { - "source.organizeImports": true + "source.organizeImports": "explicit" }, "editor.formatOnSave": true, "editor.renderWhitespace": "all", @@ -75,4 +71,4 @@ // details can be found here: https://github.com/devcontainers/features/tree/main/src/docker-outside-of-docker "ghcr.io/devcontainers/features/docker-outside-of-docker:1": {} } -} +} \ No newline at end of file diff --git a/.devcontainer/license_header.txt b/.devcontainer/license_header.txt index 5757817..3e70646 100644 --- a/.devcontainer/license_header.txt +++ b/.devcontainer/license_header.txt @@ -1,4 +1,4 @@ -Copyright 2021 - 2023 Universität Tübingen, DKFZ, EMBL, and Universität zu Köln +Copyright 2021 - 2024 Universität Tübingen, DKFZ, EMBL, and Universität zu Köln for the German Human Genome-Phenome Archive (GHGA) Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/.github/workflows/check_config_docs.yaml b/.github/workflows/check_config_docs.yaml index bb88b57..b2d08c8 100644 --- a/.github/workflows/check_config_docs.yaml +++ b/.github/workflows/check_config_docs.yaml @@ -1,17 +1,24 @@ -name: Check if the config schema and the example are up to date. +name: Check if the config schema and the example are up to date on: push jobs: static-code-analysis: + name: Check config schema and example + runs-on: ubuntu-latest + steps: - - uses: actions/checkout@v3 + - name: Checkout repository + id: checkout + uses: actions/checkout@v4 - - id: common - uses: ghga-de/gh-action-common@v4 + - name: Common steps + id: common + uses: ghga-de/gh-action-common@v6 - name: Check config docs + id: check-config-docs run: | export ${{ steps.common.outputs.CONFIG_YAML_ENV_VAR_NAME }}="${{ steps.common.outputs.CONFIG_YAML }}" diff --git a/.github/workflows/check_openapi_spec.yaml b/.github/workflows/check_openapi_spec.yaml index f5db766..ba4b8e0 100644 --- a/.github/workflows/check_openapi_spec.yaml +++ b/.github/workflows/check_openapi_spec.yaml @@ -1,18 +1,25 @@ -# This file is only needed, if your repository uses FastAPI -name: Check if openapi.yaml is up to date +# This file is only needed if your repository uses FastAPI +name: Check if OpenAPI spec is up to date on: push jobs: static-code-analysis: + name: Check OpenAPI spec + runs-on: ubuntu-latest + steps: - - uses: actions/checkout@v3 + - name: Checkout repository + id: checkout + uses: actions/checkout@v4 - - id: common - uses: ghga-de/gh-action-common@v4 + - name: Common steps + id: common + uses: ghga-de/gh-action-common@v6 - - name: Check if openapi.yaml is up to date + - name: Check openapi.yaml + id: check-openapi-docs run: | export ${{ steps.common.outputs.CONFIG_YAML_ENV_VAR_NAME }}="${{ steps.common.outputs.CONFIG_YAML }}" diff --git a/.github/workflows/check_pyproject.yaml b/.github/workflows/check_pyproject.yaml index d929c79..0c7abdc 100644 --- a/.github/workflows/check_pyproject.yaml +++ b/.github/workflows/check_pyproject.yaml @@ -1,16 +1,23 @@ -name: Check if the config schema and the example are up to date. +name: Check if pyproject.toml file is up to date on: push jobs: static-code-analysis: + name: Check pyproject file + runs-on: ubuntu-latest + steps: - - uses: actions/checkout@v3 + - name: Checkout repository + id: checkout + uses: actions/checkout@v4 - - id: common - uses: ghga-de/gh-action-common@v4 + - name: Common steps + id: common + uses: ghga-de/gh-action-common@v6 - name: Check pyproject.toml + id: check-pyproject run: | ./scripts/update_pyproject.py --check diff --git a/.github/workflows/check_readme.yaml b/.github/workflows/check_readme.yaml index 7414554..5d06e3f 100644 --- a/.github/workflows/check_readme.yaml +++ b/.github/workflows/check_readme.yaml @@ -1,16 +1,23 @@ -name: Check if the readme is up to date. +name: Check if the README file is up to date on: push jobs: static-code-analysis: + name: Check README file + runs-on: ubuntu-latest + steps: - - uses: actions/checkout@v3 + - name: Checkout repository + id: checkout + uses: actions/checkout@v4 - - id: common - uses: ghga-de/gh-action-common@v4 + - name: Common steps + id: common + uses: ghga-de/gh-action-common@v6 - - name: Check readme + - name: Check README + id: check-readme run: | ./scripts/update_readme.py --check diff --git a/.github/workflows/check_template_files.yaml b/.github/workflows/check_template_files.yaml index 9fb5cbf..e6b7e60 100644 --- a/.github/workflows/check_template_files.yaml +++ b/.github/workflows/check_template_files.yaml @@ -4,14 +4,23 @@ on: push jobs: check-template-files: + name: Check template files + runs-on: ubuntu-latest + steps: - - uses: actions/checkout@v3 - - name: Set up Python 3.9 - uses: actions/setup-python@v4 + - name: Checkout repository + id: checkout + uses: actions/checkout@v4 + + - name: Set up Python 3.12 + id: setup-python + uses: actions/setup-python@v5 with: - python-version: 3.9 + python-version: '3.12' + - name: Check template files + id: check-template-files run: | if [ "${{ github.event.repository.name }}" == "microservice-repository-template" ] then diff --git a/.github/workflows/ci_release.yaml b/.github/workflows/ci_release.yaml index d8547b4..4a28624 100644 --- a/.github/workflows/ci_release.yaml +++ b/.github/workflows/ci_release.yaml @@ -6,7 +6,10 @@ on: jobs: push_to_docker_hub: + name: Push to Docker Hub + runs-on: ubuntu-latest + steps: - uses: ghga-de/gh-action-ci@v1 with: diff --git a/.github/workflows/ci_workflow_dispatch.yaml b/.github/workflows/ci_workflow_dispatch.yaml index 1452f7e..a49be97 100644 --- a/.github/workflows/ci_workflow_dispatch.yaml +++ b/.github/workflows/ci_workflow_dispatch.yaml @@ -11,8 +11,9 @@ on: jobs: fetch-tag: + name: Fetch Tag runs-on: ubuntu-latest - if: ( github.event.action == 'workflow_dispatch' || github.event.action != 'labeled' && contains(github.event.pull_request.labels.*.name, 'build') ) || ( github.event.action == 'labeled' && github.event.label.name == 'build' ) + if: github.event_name == 'workflow_dispatch' || ( github.event.action != 'labeled' && contains(github.event.pull_request.labels.*.name, 'build') ) || ( github.event.action == 'labeled' && github.event.label.name == 'build' ) steps: - id: fetch-tag uses: ghga-de/gh-action-fetch-tag@v1 @@ -20,6 +21,7 @@ jobs: latest_tag: ${{ steps.fetch-tag.outputs.latest_tag }} push_to_docker_hub: + name: Push to Docker Hub needs: fetch-tag runs-on: ubuntu-latest steps: diff --git a/.github/workflows/static_code_analysis.yaml b/.github/workflows/static_code_analysis.yaml index 86a014d..052dfdc 100644 --- a/.github/workflows/static_code_analysis.yaml +++ b/.github/workflows/static_code_analysis.yaml @@ -4,24 +4,36 @@ on: push jobs: static-code-analysis: - runs-on: ubuntu-latest name: Static Code Analysis + + runs-on: ubuntu-latest + steps: - - uses: actions/checkout@v3 + - name: Checkout repository + id: checkout + uses: actions/checkout@v4 - - id: common - uses: ghga-de/gh-action-common@v4 + - name: Common steps + id: common + uses: ghga-de/gh-action-common@v6 - - uses: pre-commit/action@v3.0.0 + - name: Run pre-commit + uses: pre-commit/action@v3.0.1 env: SKIP: no-commit-to-branch - - name: ruff + + - name: Run ruff + id: ruff run: | ruff check --output-format=github . ruff format --check . - - name: mypy + + - name: Run mypy + id: mypy run: | mypy . + - name: Check license header and file + id: license-checker run: | - ./scripts/license_checker.py + ./scripts/check_license.py diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index dacc9f5..56a9c19 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -1,19 +1,24 @@ -name: Tests +name: Run test suite and measure coverage on: push jobs: tests: + name: Run test suite + runs-on: ubuntu-latest - name: Tests steps: - - uses: actions/checkout@v3 + - name: Checkout repository + id: checkout + uses: actions/checkout@v4 - - id: common - uses: ghga-de/gh-action-common@v4 + - name: Common steps + id: common + uses: ghga-de/gh-action-common@v6 - - id: pytest + - name: Run tests + id: pytest run: | export ${{ steps.common.outputs.CONFIG_YAML_ENV_VAR_NAME }}="${{ steps.common.outputs.CONFIG_YAML }}" @@ -22,8 +27,8 @@ jobs: --cov-report=xml \ tests - - id: coveralls - name: Upload coverage to coveralls + - name: Upload coverage to coveralls + id: coveralls env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index bbbc031..22f94c5 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -2,7 +2,7 @@ # See https://pre-commit.com/hooks.html for more hooks default_language_version: - python: python3.9 + python: python3.12 minimum_pre_commit_version: 3.0.0 @@ -48,13 +48,13 @@ repos: - id: no-commit-to-branch args: [--branch, dev, --branch, int, --branch, main] - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.1.12 + rev: v0.5.3 hooks: - id: ruff args: [--fix, --exit-non-zero-on-fix] - id: ruff-format - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.8.0 + rev: v1.10.1 hooks: - id: mypy args: [--no-warn-unused-ignores] diff --git a/.pyproject_generation/README.md b/.pyproject_generation/README.md index 93b988f..4434a8f 100644 --- a/.pyproject_generation/README.md +++ b/.pyproject_generation/README.md @@ -1,5 +1,5 @@