Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bump software stack #1187

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 8 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,14 @@ jobs:
description: "Unit tests (Python 3.11)"
- toxenv: "py312"
description: "Unit tests (Python 3.12)"
- toxenv: "py313"
description: "Unit tests (Python 3.13)"
- toxenv: "linters"
description: "Linters (Python 3.12)"
description: "Linters (Python 3.13)"
- toxenv: "packaging"
description: "Packaging (Python 3.12)"
description: "Packaging (Python 3.13)"
- toxenv: "migrations"
description: "Migrations (Python 3.12)"
description: "Migrations (Python 3.13)"
name: ${{ matrix.description }}

services:
Expand Down Expand Up @@ -68,7 +70,7 @@ jobs:
uses: actions/checkout@v4

- name: Build communication container
if: matrix.toxenv == 'py311' || matrix.toxenv == 'py312'
if: matrix.toxenv == 'py311' || matrix.toxenv == 'py312' || matrix.toxenv == 'py313'
working-directory: ./resolwe/flow/docker_images
run: docker build -f Dockerfile.communication -t ${{ env.RESOLWE_COMMUNICATOR_IMAGE }} ../../

Expand All @@ -92,10 +94,10 @@ jobs:
- uses: actions/checkout@v4

- name: Install build
run: python3.12 -m pip install --user build
run: python3.13 -m pip install --user build

- name: Build a binary wheel and a source tarball
run: python3.12 -m build --sdist --wheel --outdir dist/ .
run: python3.13 -m build --sdist --wheel --outdir dist/ .

- name: Publish distribution to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
Expand Down
3 changes: 3 additions & 0 deletions docs/CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ Unreleased
Fixed
-----
- Fix error when deleting observer subscription
Added
-----
- Add support for ``Python 3.13``


===================
Expand Down
73 changes: 37 additions & 36 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[build-system]
requires = ["setuptools >= 70.0.0", "setuptools_scm >= 8.1.0"]
requires = ["setuptools >= 75.7.0", "setuptools_scm >= 8.1.0"]
build-backend = "setuptools.build_meta"

[project]
Expand All @@ -9,7 +9,7 @@ readme = "README.rst"
dynamic = ["version"]
authors = [{ name = "Genialis, Inc", email = "[email protected]" }]
license = { text = "Apache License (2.0)" }
requires-python = ">=3.10, <3.13"
requires-python = ">=3.10, <3.14"
keywords = ["resolwe", "dataflow", "django"]
classifiers = [
"Development Status :: 5 - Production/Stable",
Expand All @@ -27,40 +27,40 @@ classifiers = [
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
]
dependencies = [
"asgiref~=3.8.1",
"asteval==0.9.33",
"async-timeout~=4.0.3",
"channels~=4.1.0",
"channels_redis~=4.2.0",
"asteval==1.0.5",
"beautifulsoup4~=4.12.3",
"channels~=4.2.0",
"channels_redis~=4.2.1",
# Storage requirement for computing hashes.
"crcmod",
"kubernetes~=30.1.0",
"docker~=7.1.0",
"Django~=4.2",
"djangorestframework~=3.15.2",
"django-filter~=24.2",
"django-versionfield~=1.0.3",
"Django~=5.1",
"django-fernet-fields-v2~=0.9",
"drf-spectacular~=0.27.2",
"Jinja2~=3.1.4",
"jsonschema~=4.22.0",
"opentelemetry-api~=1.25.0",
"opentelemetry-exporter-otlp~=1.25.0",
"opentelemetry-sdk~=1.25.0",
"plumbum~=1.8.3",
"psycopg[binary]~=3.1.19",
"django-filter~=24.3",
"django-versionfield~=1.0.3",
"djangorestframework~=3.15.2",
"docker~=7.1.0",
"drf-spectacular~=0.28.0",
"Jinja2~=3.1.5",
"jsonschema~=4.23.0",
"kubernetes~=31.0.0",
"opentelemetry-api~=1.29.0",
"opentelemetry-exporter-otlp~=1.29.0",
"opentelemetry-sdk~=1.29.0",
"plumbum~=1.9.0",
"psycopg[binary]~=3.2.3",
"python-decouple~=3.8",
"PyYAML~=6.0.1",
"redis~=5.0.6",
"pytz~=2024.2",
"PyYAML~=6.0.2",
"pyzmq~=26.2.0",
"redis~=5.2.1",
"shellescape~=3.8.1",
"beautifulsoup4~=4.12.3",
"Sphinx~=7.3.7",
"wrapt~=1.16.0",
"pyzmq~=26.0.3",
"uvloop~=0.19.0",
"pytz~=2024.1",
"Sphinx~=8.1.3",
"uvloop~=0.21.0",
"wrapt~=1.17.0",
]


Expand All @@ -70,23 +70,24 @@ storage-gcs = ["crcmod", "google-cloud-storage~=2.16.0"]
docs = ["sphinx_rtd_theme", "pyasn1>=0.6.0", "daphne>=4.1.2"]
package = ["twine", "wheel"]
test = [
"black==24.4.2",
"check-manifest>=0.49",
"coverage>=7.5.3",
"black==24.10.0",
"check-manifest>=0.50",
"coverage>=7.6.10",
"daphne>=4.1.2",
"django-filter-stubs>=0.1.3",
"django-stubs>=4.2.7",
"djangorestframework-stubs[compatible-mypy]>=3.15.0",
"flake8>=7.1.0",
"django-stubs>=5.1.1",
# Temporary disable due to compatibility issues with mypy.
#"djangorestframework-stubs[compatible-mypy]>=3.15.2",
"flake8>=7.1.1",
"isort>=5.13.2",
"mypy>=1.10.0",
"mypy>=1.14.1",
"pydocstyle>=6.3.0",
"readme_renderer",
"setuptools_scm",
"tblib>=3.0.0",
"testfixtures>=8.3.0",
"twine~=6.0.1",
"types-setuptools",
"twine~=5.1.1",
]

[project.urls]
Expand Down
7 changes: 3 additions & 4 deletions resolwe/observers/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import json
import uuid

import async_timeout
from channels.db import database_sync_to_async
from channels.routing import URLRouter
from channels.testing import WebsocketCommunicator
Expand Down Expand Up @@ -68,7 +67,7 @@ def setUp(self):
async def assert_no_more_messages(self, client):
"""Assert there are no messages queued by a websocket client."""
with self.assertRaises(asyncio.TimeoutError):
async with async_timeout.timeout(0.01):
async with asyncio.timeout(0.01):
raise ValueError("Unexpected message:", await client.receive_from())

async def await_subscription_observer_count(self, count):
Expand All @@ -83,7 +82,7 @@ def get_subscription_count():
return total

try:
async with async_timeout.timeout(1):
async with asyncio.timeout(1):
while await get_subscription_count() != count:
await asyncio.sleep(0.01)
except asyncio.TimeoutError:
Expand All @@ -101,7 +100,7 @@ def get_count():
return object.objects.count()

try:
async with async_timeout.timeout(1):
async with asyncio.timeout(1):
while await get_count() != count:
await asyncio.sleep(0.01)
except asyncio.TimeoutError:
Expand Down
11 changes: 6 additions & 5 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
envlist =
py311{,-storage-credentials},
py312{,-storage-credentials},
py313{,-storage-credentials},
docs,
linters,
packaging,
Expand All @@ -12,13 +13,13 @@ minversion = 4.16
ignore_base_python_conflict = true

[testenv]
# Use python 3.12 if it cannot be infered from the environment.
# Use python 3.13 if it cannot be infered from the environment.
# See https://tox.wiki/en/latest/user_guide.html#test-environments for rules
# how basepython is selected from the environment name.
basepython = python3.12
basepython = python3.13
extras =
# Always include storage extras or connectors related tests will fail.
py3{11,12}{,-storage-credentials}:
py3{11,12,13}{,-storage-credentials}:
storage_s3
storage_gcs
test
Expand All @@ -30,7 +31,7 @@ extras =
test
passenv =
# Pass environment variables controlling project's tests.
py{11,12}{,-storage-credentials},migrations:
py{11,12,13}{,-storage-credentials},migrations:
RESOLWE_*
DOCKER_*
DJANGO_TEST_PROCESSES
Expand All @@ -45,7 +46,7 @@ ignore_errors =
# Run all linters to see their output even if one of them fails.
linters: true

[testenv:py3{11,12}{,-storage-credentials}]
[testenv:py3{11,12,13}{,-storage-credentials}]
commands =
# General tests commands:
# Print the environment and run tests.
Expand Down
Loading