diff --git a/.github/workflows/dependabot-auto-merge.yml b/.github/workflows/dependabot-auto-merge.yml index ae539537..842ba6bd 100644 --- a/.github/workflows/dependabot-auto-merge.yml +++ b/.github/workflows/dependabot-auto-merge.yml @@ -12,7 +12,7 @@ jobs: steps: - name: Dependabot metadata id: metadata - uses: dependabot/fetch-metadata@v1.3.5 + uses: dependabot/fetch-metadata@v1.5.1 with: github-token: "${{ secrets.GITHUB_TOKEN }}" - name: Wait other jobs are passed or failed diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 6925a9c3..913f6970 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -13,7 +13,7 @@ jobs: steps: - uses: actions/checkout@v3 - - uses: rojopolis/spellcheck-github-actions@0.29.0 + - uses: rojopolis/spellcheck-github-actions@0.33.0 name: Spellcheck code_docs: @@ -21,7 +21,7 @@ jobs: max-parallel: 4 matrix: os: [ubuntu-latest] - python-version: [3.8] + python-version: ["3.10"] runs-on: ${{ matrix.os }} diff --git a/.github/workflows/int.yml b/.github/workflows/int.yml index d8da464c..de5dc79a 100644 --- a/.github/workflows/int.yml +++ b/.github/workflows/int.yml @@ -9,7 +9,7 @@ jobs: max-parallel: 4 matrix: os: [ubuntu-latest] - python-version: [3.8] + python-version: ["3.10"] runs-on: ${{ matrix.os }} @@ -39,7 +39,7 @@ jobs: driver-opts: network=host - name: Build - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v4 with: context: . push: true diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 64a62ef2..7dd68814 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -37,7 +37,7 @@ jobs: type=ref,event=tag - name: Build and push - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v4 with: context: . file: ./Dockerfile @@ -51,7 +51,7 @@ jobs: org.opencontainers.image.revision=${{ github.sha }} - name: Build and push dataloader - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v4 with: run: | pushd deploy/dataloader diff --git a/.github/workflows/style.yml b/.github/workflows/style.yml index 78942b73..3b2095f3 100644 --- a/.github/workflows/style.yml +++ b/.github/workflows/style.yml @@ -8,7 +8,7 @@ jobs: max-parallel: 4 matrix: os: [ubuntu-latest] - python-version: [3.8] + python-version: ["3.10"] runs-on: ${{ matrix.os }} diff --git a/.github/workflows/unit.yml b/.github/workflows/unit.yml index 5ff1cb57..a691ae58 100644 --- a/.github/workflows/unit.yml +++ b/.github/workflows/unit.yml @@ -11,7 +11,7 @@ jobs: max-parallel: 4 matrix: os: [ubuntu-latest] - python-version: [3.8] + python-version: ["3.10"] runs-on: ${{ matrix.os }} @@ -29,7 +29,7 @@ jobs: run: | python -m pip install --upgrade pip pip install tox tox-gh-actions coverage - - name: Run unit tests for python 3.8 + - name: Run unit tests for python 3.10 run: | tox -e unit_tests coverage lcov -o lcov.info diff --git a/Dockerfile b/Dockerfile index 0e4f4057..e54d10aa 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.8-alpine3.15 as BUILD +FROM python:3.10.12-alpine3.18 as BUILD RUN apk add --update \ && apk add --no-cache build-base curl-dev linux-headers bash git musl-dev\ @@ -18,7 +18,7 @@ COPY setup.py /root/beacon/setup.py COPY beacon_api /root/beacon/beacon_api RUN pip install /root/beacon -FROM python:3.8-alpine3.15 +FROM python:3.10.12-alpine3.18 RUN apk add --no-cache --update bash @@ -29,7 +29,7 @@ LABEL org.label-schema.vcs-url="https://github.com/CSCFI/beacon-python" RUN apk add --update \ && apk add --no-cache curl bzip2 xz -COPY --from=BUILD usr/local/lib/python3.8/ usr/local/lib/python3.8/ +COPY --from=BUILD usr/local/lib/python3.10/ usr/local/lib/python3.10/ COPY --from=BUILD /usr/local/bin/gunicorn /usr/local/bin/ diff --git a/README.md b/README.md index 2f86b872..6130dd38 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Documentation: https://beacon-python.readthedocs.io ### Quick start `beacon-python` Web Server requires: -* Python 3.8+; +* Python 3.10+; * running DB [PostgreSQL Server](https://www.postgresql.org/) 9.6+ (recommended 13). ```shell diff --git a/beacon_api/app.py b/beacon_api/app.py index 357e5179..977448b1 100644 --- a/beacon_api/app.py +++ b/beacon_api/app.py @@ -135,7 +135,7 @@ def main(): if __name__ == "__main__": - if sys.version_info < (3, 8): - LOG.error("beacon-python requires python 3.8") + if sys.version_info < (3, 10): + LOG.error("beacon-python requires python 3.10") sys.exit(1) main() diff --git a/beacon_api/extensions/mate_name.py b/beacon_api/extensions/mate_name.py index 149a4d81..83fceb62 100644 --- a/beacon_api/extensions/mate_name.py +++ b/beacon_api/extensions/mate_name.py @@ -45,7 +45,6 @@ async def fetch_fusion_dataset(db_pool, assembly_id, position, chromosome, refer db_response = await statement.fetch(datasets_query, access_query, assembly_id, chromosome) else: - # UBER QUERY - TBD if it is what we need # referenceBases, alternateBases and variantType fields are NOT part of beacon's specification response query = """SELECT a.datasetId as "datasetId", b.accessType as "accessType", a.chromosome as "referenceName", diff --git a/docs/instructions.rst b/docs/instructions.rst index 54e5f8fa..7e829c65 100644 --- a/docs/instructions.rst +++ b/docs/instructions.rst @@ -3,7 +3,7 @@ Instructions .. note:: In order to run ``beacon-python`` Web Server requirements are as specified below: - * Python 3.8+; + * Python 3.10+; * running DB `PostgreSQL Server `_ 9.6+ (recommended 13). .. _env-setup: diff --git a/docs/optionals.rst b/docs/optionals.rst index 6bb8e927..011d407e 100644 --- a/docs/optionals.rst +++ b/docs/optionals.rst @@ -10,7 +10,7 @@ Handover Protocol The handover protocol is a feature comparable to `HATEOAS and HAL `_. It can be used to convey extra information regarding the Beacon service, or the dataset response. -More information about the handover protocol can be read from the `Beacon Project page `_ and +More information about the handover protocol can be read from the `Beacon Project page `_ and Beacon Specification's `handover issue `_ at Github. The handover protocol can be configured in ``config.ini`` as follows: diff --git a/readthedocs.yml b/readthedocs.yml index 1773a400..0413e75c 100644 --- a/readthedocs.yml +++ b/readthedocs.yml @@ -4,7 +4,7 @@ build: image: latest requirements_file: docs/docs.txt python: - version: 3.8 + version: 3.10 use_system_site_packages: true setup_py_install: true extra_requirements: diff --git a/requirements.txt b/requirements.txt index 4b8e87eb..9e375527 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,11 +1,11 @@ -aiohttp==3.8.3 +aiohttp==3.8.4 aiohttp-cors==0.7.0 asyncpg==0.27.0 jsonschema==4.17.3 -Cython==0.29.33 +Cython==0.29.35 cyvcf2==0.30.18 uvloop==0.17.0 aiocache==0.11.1 -ujson==5.7.0 +ujson==5.8.0 Authlib==1.2.0 gunicorn==20.1.0 diff --git a/setup.py b/setup.py index 297700ee..2dea20f9 100644 --- a/setup.py +++ b/setup.py @@ -33,12 +33,11 @@ "Topic :: Internet :: WWW/HTTP :: HTTP Servers", "Topic :: Scientific/Engineering :: Bio-Informatics", "License :: OSI Approved :: Apache Software License", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.10", ], install_requires=[ "asyncpg==0.27.0", - "aiohttp==3.8.3", + "aiohttp==3.8.4", "Authlib==1.2.0", "aiohttp-cors==0.7.0", "jsonschema==4.17.3", @@ -46,25 +45,25 @@ "uvloop==0.17.0", "cyvcf2==0.30.18", "aiocache==0.11.1", - "ujson==5.7.0", + "ujson==5.8.0", ], extras_require={ "vcf": [ - "numpy==1.24.1", + "numpy==1.25.0", "cyvcf2==0.30.18", - "Cython==0.29.33", + "Cython==0.29.35", ], "test": [ - "coverage==7.0.4", - "pytest<7.3", - "pytest-cov==4.0.0", - "testfixtures==7.0.4", - "tox==4.2.6", + "coverage==7.2.7", + "pytest<7.4", + "pytest-cov==4.1.0", + "testfixtures==7.1.0", + "tox==4.6.2", "flake8==6.0.0", - "flake8-docstrings==1.6.0", + "flake8-docstrings==1.7.0", "aioresponses==0.7.4", - "black==22.12.0", + "black==23.3.0", ], - "docs": ["sphinx >= 1.4", "sphinx_rtd_theme==1.1.1"], + "docs": ["sphinx >= 1.4", "sphinx_rtd_theme==1.2.2"], }, ) diff --git a/tests/test_app.py b/tests/test_app.py index 8a1f0d7d..575c51bc 100644 --- a/tests/test_app.py +++ b/tests/test_app.py @@ -5,7 +5,7 @@ import json from authlib.jose import jwt import os -from test.support import EnvironmentVarGuard +from test.support.os_helper import EnvironmentVarGuard from aiocache import caches diff --git a/tests/test_basic.py b/tests/test_basic.py index 575e9e9f..ce100aa4 100644 --- a/tests/test_basic.py +++ b/tests/test_basic.py @@ -8,7 +8,7 @@ from beacon_api.permissions.ga4gh import check_ga4gh_token, decode_passport, get_ga4gh_permissions from .test_app import PARAMS, generate_token from testfixtures import TempDirectory -from test.support import EnvironmentVarGuard +from test.support.os_helper import EnvironmentVarGuard def mock_token(bona_fide, permissions, auth): diff --git a/tox.ini b/tox.ini index 2abdedb1..e3f0069d 100644 --- a/tox.ini +++ b/tox.ini @@ -56,4 +56,4 @@ commands = py.test -x --cov=beacon_api tests/ --cov-fail-under=80 [gh-actions] python = - 3.8: flake8, unit_tests, docs, bandit, mypy + 3.10: flake8, unit_tests, docs, bandit, mypy