From 45c0e7491da85ed754a86358bffa2260f96c240f Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Wed, 21 Aug 2024 07:19:07 -0500 Subject: [PATCH] feat: python 3.13 support (#291) --- .github/workflows/ci.yml | 12 +++++++----- pyproject.toml | 5 +++++ tests/client/test_methods.py | 2 +- tests/client/test_properties.py | 3 ++- tests/test_big_message.py | 3 ++- tests/test_glib_low_level.py | 9 ++++++--- tests/test_request_name.py | 3 ++- 7 files changed, 25 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a848467..1d98206 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: actions/setup-python@v3 + - uses: actions/setup-python@v5 with: python-version: "3.9" - uses: pre-commit/action@v2.0.3 @@ -41,6 +41,7 @@ jobs: - "3.10" - "3.11" - "3.12" + - "3.13" os: - ubuntu-latest extension: @@ -56,10 +57,11 @@ jobs: - name: Install poetry run: pipx install poetry - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} cache: "poetry" + allow-prereleases: true - name: Install Dependencies run: | if [ "${{ matrix.extension }}" = "skip_cython" ]; then @@ -107,7 +109,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-20.04] + os: [ubuntu-latest] arch: - "x86_64" - "aarch64" @@ -126,7 +128,7 @@ jobs: # Used to host cibuildwheel - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 - name: Install python-semantic-release run: python -m pip install python-semantic-release==7.34.6 @@ -143,7 +145,7 @@ jobs: fetch-depth: 0 - name: Install cibuildwheel - run: python -m pip install cibuildwheel==2.19.1 + run: python -m pip install cibuildwheel==2.20.0 - name: Build wheels run: python -m cibuildwheel --output-dir wheelhouse diff --git a/pyproject.toml b/pyproject.toml index c0e1fff..b6041fe 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,6 +13,11 @@ classifiers = [ "Natural Language :: English", "Operating System :: OS Independent", "Topic :: Software Development :: Libraries", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", ] packages = [ { include = "dbus_fast", from = "src" }, diff --git a/tests/client/test_methods.py b/tests/client/test_methods.py index 2ea9dff..ffade23 100644 --- a/tests/client/test_methods.py +++ b/tests/client/test_methods.py @@ -126,7 +126,7 @@ async def test_aio_proxy_object(): @pytest.mark.skipif( - sys.version_info[:3][1] in (10, 11, 12), reason="segfaults on py3.10/py3.11" + sys.version_info[:3][1] in (10, 11, 12, 13), reason="segfaults on py3.10/py3.11" ) @pytest.mark.skipif(not has_gi, reason=skip_reason_no_gi) def test_glib_proxy_object(): diff --git a/tests/client/test_properties.py b/tests/client/test_properties.py index 7b6776d..c628903 100644 --- a/tests/client/test_properties.py +++ b/tests/client/test_properties.py @@ -97,7 +97,8 @@ async def test_aio_properties(): @pytest.mark.skipif( - sys.version_info[:3][1] in (10, 11, 12), reason="segfaults on py3.10,py3.11,py3.12" + sys.version_info[:3][1] in (10, 11, 12, 13), + reason="segfaults on py3.10,py3.11,py3.12,py3.13", ) @pytest.mark.skipif(not has_gi, reason=skip_reason_no_gi) def test_glib_properties(): diff --git a/tests/test_big_message.py b/tests/test_big_message.py index 0cca9ee..9dea47a 100644 --- a/tests/test_big_message.py +++ b/tests/test_big_message.py @@ -47,7 +47,8 @@ async def test_aio_big_message(): @pytest.mark.skipif(not has_gi, reason=skip_reason_no_gi) @pytest.mark.skipif( - sys.version_info[:3][1] in (10, 11, 12), reason="segfaults on py3.10,py3.11,py3.12" + sys.version_info[:3][1] in (10, 11, 12, 13), + reason="segfaults on py3.10,py3.11,py3.12,py3.13", ) def test_glib_big_message(): "this tests that nonblocking reads and writes actually work for glib" diff --git a/tests/test_glib_low_level.py b/tests/test_glib_low_level.py index 7b65745..4121133 100644 --- a/tests/test_glib_low_level.py +++ b/tests/test_glib_low_level.py @@ -14,7 +14,8 @@ if has_gi: @pytest.mark.skipif(not has_gi, reason=skip_reason_no_gi) @pytest.mark.skipif( - sys.version_info[:3][1] in (10, 11, 12), reason="segfaults on py3.10,py3.11,py3.12" + sys.version_info[:3][1] in (10, 11, 12, 13), + reason="segfaults on py3.10,py3.11,py3.12,py3.13", ) def test_standard_interfaces(): bus = MessageBus().connect_sync() @@ -57,7 +58,8 @@ def test_standard_interfaces(): @pytest.mark.skipif(not has_gi, reason=skip_reason_no_gi) @pytest.mark.skipif( - sys.version_info[:3][1] in (10, 11, 12), reason="segfaults on py3.10,py3.11,py3.12" + sys.version_info[:3][1] in (10, 11, 12, 13), + reason="segfaults on py3.10,py3.11,py3.12,py3.13", ) def test_sending_messages_between_buses(): bus1 = MessageBus().connect_sync() @@ -127,7 +129,8 @@ def test_sending_messages_between_buses(): @pytest.mark.skipif(not has_gi, reason=skip_reason_no_gi) @pytest.mark.skipif( - sys.version_info[:3][1] in (10, 11, 12), reason="segfaults on py3.10,py3.11,py3.12" + sys.version_info[:3][1] in (10, 11, 12, 13), + reason="segfaults on py3.10,py3.11,py3.12,py3.13", ) def test_sending_signals_between_buses(): bus1 = MessageBus().connect_sync() diff --git a/tests/test_request_name.py b/tests/test_request_name.py index 02d1051..57758f8 100644 --- a/tests/test_request_name.py +++ b/tests/test_request_name.py @@ -71,7 +71,8 @@ async def test_name_requests(): @pytest.mark.skipif( - sys.version_info[:3][1] in (10, 11, 12), reason="segfaults on py3.10,py3.11,py3.12" + sys.version_info[:3][1] in (10, 11, 12, 13), + reason="segfaults on py3.10,py3.11,py3.12,py3.13", ) @pytest.mark.skipif(not has_gi, reason=skip_reason_no_gi) def test_request_name_glib():