diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6d5d84a71..e06a0e4e6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ["3.10", "3.11", "3.12"] + python-version: ["3.11", "3.12", "3.13", "3.14"] services: mariadb: image: mariadb:12.2.2 # released 2024-05-06 diff --git a/.github/workflows/publish-version.yml b/.github/workflows/publish-version.yml index 520996828..c19816cd6 100644 --- a/.github/workflows/publish-version.yml +++ b/.github/workflows/publish-version.yml @@ -17,10 +17,10 @@ jobs: newVersion: ${{ steps.checkTag.outputs.newVersion }} steps: - uses: actions/checkout@v6 - - name: Use Python 3.10 + - name: Use Python 3.14 uses: actions/setup-python@v6 with: - python-version: "3.10" + python-version: "3.14" - name: Check current tag id: checkTag run: | @@ -65,10 +65,10 @@ jobs: if: ${{ needs.get-current-version.outputs.doTag == 'true' }} steps: - uses: actions/checkout@v6 - - name: Set up Python 3.10 + - name: Set up Python 3.14 uses: actions/setup-python@v6 with: - python-version: "3.10" + python-version: "3.14" - name: Install pypa/build run: >- python3 -m diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index bcf26da33..bd87bc69d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -21,10 +21,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - - name: Set up Python 3.10 + - name: Set up Python 3.14 uses: actions/setup-python@v6 with: - python-version: "3.10" + python-version: "3.14" - name: Syntax validation run: | python .github/workflows/scripts/syntax-validation.py @@ -38,10 +38,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - - name: Set up Python 3.10 + - name: Set up Python 3.14 uses: actions/setup-python@v6 with: - python-version: "3.10" + python-version: "3.14" - name: Install pypa/build run: >- python3 -m diff --git a/.github/workflows/version-bump.yml b/.github/workflows/version-bump.yml index aeef9c2d9..2e751dacb 100644 --- a/.github/workflows/version-bump.yml +++ b/.github/workflows/version-bump.yml @@ -35,10 +35,10 @@ jobs: pull-requests: write steps: - uses: actions/checkout@v6 - - name: Set up Python 3.10 + - name: Set up Python 3.14 uses: actions/setup-python@v6 with: - python-version: "3.10" + python-version: "3.14" - name: Install package run: | set -eux diff --git a/Dockerfiles/murfey-instrument-server b/Dockerfiles/murfey-instrument-server index b3c50b894..1196889a4 100644 --- a/Dockerfiles/murfey-instrument-server +++ b/Dockerfiles/murfey-instrument-server @@ -38,7 +38,7 @@ RUN \ /venv/bin/python -m pip install --upgrade \ pip \ build \ - importlib-metadata && \ + && \ /venv/bin/python -m pip install /tmp/python-murfey[sxt] diff --git a/Dockerfiles/murfey-server b/Dockerfiles/murfey-server index 2cbf18a5d..b5abcbb7b 100644 --- a/Dockerfiles/murfey-server +++ b/Dockerfiles/murfey-server @@ -37,8 +37,7 @@ RUN \ /venv/bin/python -m pip install --upgrade \ pip \ build \ - importlib-metadata \ - psycopg2-binary && \ + && \ /venv/bin/python -m pip install /tmp/python-murfey[server] && \ echo "Installing IMOD..." && \ mkdir /imod && \ diff --git a/pyproject.toml b/pyproject.toml index 375438c22..e2742a176 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,7 +16,7 @@ keywords = [ license = {file = "LICENSE"} maintainers = [] authors = [] -requires-python = ">=3.10" +requires-python = ">=3.11" classifiers = [ "Development Status :: 3 - Alpha", "Environment :: Console", @@ -24,9 +24,10 @@ classifiers = [ "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", ] dependencies = [ "aiohttp", @@ -64,7 +65,7 @@ server = [ "passlib", "pillow", "prometheus_client", - "sqlalchemy[postgresql]", # Add as explicit dependency + "sqlalchemy[postgresql]>=2.1.0", "sqlmodel", "stomp-py>8.1.1", # 8.1.1 (released 2024-04-06) doesn't work with our project "zocalo>=1", @@ -168,7 +169,7 @@ inputs = "pyproject.toml" check = false indent = 4 keep_full_version = true -max-supported-python = "3.12" +max_supported_python = "3.14" [tool.pytest.ini_options] addopts = "-ra" diff --git a/src/murfey/server/murfey_db.py b/src/murfey/server/murfey_db.py index 3efd156f3..0a52f794a 100644 --- a/src/murfey/server/murfey_db.py +++ b/src/murfey/server/murfey_db.py @@ -41,7 +41,7 @@ def url(security_config: Security | None = None) -> str: return f"sqlite:///{creds['database']}" f = Fernet(security_config.crypto_key.encode("ascii")) p = f.decrypt(creds["password"].encode("ascii")) - return f"postgresql+psycopg2://{creds['username']}:{p.decode()}@{creds['host']}:{creds['port']}/{creds['database']}" + return f"postgresql://{creds['username']}:{p.decode()}@{creds['host']}:{creds['port']}/{creds['database']}" def get_murfey_db_session( diff --git a/tests/conftest.py b/tests/conftest.py index 69cbd8363..74cc4bbfa 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -306,7 +306,7 @@ def ispyb_db_session( def murfey_db_url(): try: return ( - f"postgresql+psycopg2://{os.environ['POSTGRES_USER']}:{os.environ['POSTGRES_PASSWORD']}" + f"postgresql://{os.environ['POSTGRES_USER']}:{os.environ['POSTGRES_PASSWORD']}" f"@{os.environ['POSTGRES_HOST']}:{os.environ['POSTGRES_PORT']}/{os.environ['POSTGRES_DB']}" ) # Skip Murfey database-related tests if the environment for it hasn't been set up