diff --git a/.github/workflows/packages.yml b/.github/workflows/packages.yml index 1375a4b61..51ad13c7f 100644 --- a/.github/workflows/packages.yml +++ b/.github/workflows/packages.yml @@ -66,7 +66,7 @@ jobs: matrix: platform: [manylinux, musllinux] arch: [x86_64, aarch64, ppc64le] - pyver: [cp39, cp310, cp311, cp312, cp313] + pyver: [cp39, cp310, cp311, cp312, cp313, cp314] runs-on: ubuntu-latest steps: @@ -83,8 +83,9 @@ jobs: key: libpq-${{ env.LIBPQ_VERSION }}-${{ matrix.platform }}-${{ matrix.arch }} - name: Build wheels - uses: pypa/cibuildwheel@v2.23.3 + uses: pypa/cibuildwheel@v3.2.0 env: + CIBW_SKIP: "cp31?t-*" CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014 CIBW_MANYLINUX_I686_IMAGE: manylinux2014 CIBW_MANYLINUX_AARCH64_IMAGE: manylinux2014 @@ -140,7 +141,7 @@ jobs: matrix: # These archs require an Apple M1 runner: [arm64, universal2] arch: [x86_64, arm64] - pyver: [cp39, cp310, cp311, cp312, cp313] + pyver: [cp39, cp310, cp311, cp312, cp313, cp314] steps: - name: Checkout repos @@ -153,8 +154,9 @@ jobs: key: libpq-${{ env.LIBPQ_VERSION }}-macos-${{ matrix.arch }} - name: Build wheels - uses: pypa/cibuildwheel@v2.23.3 + uses: pypa/cibuildwheel@v3.2.0 env: + CIBW_SKIP: "cp31?t-*" CIBW_BUILD: ${{matrix.pyver}}-macosx_${{matrix.arch}} CIBW_ARCHS_MACOS: ${{matrix.arch}} MACOSX_ARCHITECTURE: ${{matrix.arch}} @@ -184,7 +186,7 @@ jobs: fail-fast: false matrix: arch: [win_amd64] - pyver: [cp39, cp310, cp311, cp312, cp313] + pyver: [cp39, cp310, cp311, cp312, cp313, cp314] package_name: [psycopg2, psycopg2-binary] defaults: @@ -223,8 +225,9 @@ jobs: if: ${{ matrix.package_name != 'psycopg2' }} - name: Build wheels - uses: pypa/cibuildwheel@v2.23.3 + uses: pypa/cibuildwheel@v3.2.0 env: + CIBW_SKIP: "cp31?t-*" VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite" # cache vcpkg CIBW_BUILD: ${{matrix.pyver}}-${{matrix.arch}} CIBW_ARCHS_WINDOWS: AMD64 x86 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index a62a7556a..a4d2bbde8 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -16,18 +16,20 @@ jobs: fail-fast: false matrix: include: - - {python: "3.9", postgres: "14"} - - {python: "3.10", postgres: "15"} - - {python: "3.11", postgres: "16"} - - {python: "3.12", postgres: "17"} - - {python: "3.13", postgres: "18"} + - {python: "3.9", postgres: "13"} + - {python: "3.10", postgres: "14"} + - {python: "3.11", postgres: "15"} + - {python: "3.12", postgres: "16"} + - {python: "3.13", postgres: "17"} + - {python: "3.14", postgres: "18"} # Opposite extremes of the supported Py/PG range, other architecture - {python: "3.9", postgres: "18", architecture: "x86"} - {python: "3.10", postgres: "17", architecture: "x86"} - {python: "3.11", postgres: "16", architecture: "x86"} - {python: "3.12", postgres: "15", architecture: "x86"} - - {python: "3.13", postgres: "13", architecture: "x86"} + - {python: "3.13", postgres: "14", architecture: "x86"} + - {python: "3.14", postgres: "13", architecture: "x86"} env: PSYCOPG2_TESTDB: postgres @@ -70,6 +72,7 @@ jobs: - uses: actions/setup-python@v5 with: python-version: ${{ matrix.python }} + allow-prereleases: true - name: Run tests env: MATRIX_PYTHON: ${{ matrix.python }} diff --git a/NEWS b/NEWS index 6659585aa..f31a1f9ab 100644 --- a/NEWS +++ b/NEWS @@ -4,6 +4,7 @@ Current release What's new in psycopg 2.9.11 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +- Add support for Python 3.14. - `~psycopg2.errorcodes` map and `~psycopg2.errors` classes updated to PostgreSQL 18. - Drop support for Python 3.8. diff --git a/doc/src/install.rst b/doc/src/install.rst index f32bb02dd..17e475bff 100644 --- a/doc/src/install.rst +++ b/doc/src/install.rst @@ -131,7 +131,7 @@ The current `!psycopg2` implementation supports: .. NOTE: keep consistent with setup.py and the /features/ page. -- Python versions from 3.9 to 3.13 +- Python versions from 3.9 to 3.14 - PostgreSQL server versions from 7.4 to 18 - PostgreSQL client library version from 9.1 diff --git a/setup.py b/setup.py index 0ed11d764..ee3b8d91e 100644 --- a/setup.py +++ b/setup.py @@ -56,6 +56,7 @@ Programming Language :: Python :: 3.11 Programming Language :: Python :: 3.12 Programming Language :: Python :: 3.13 +Programming Language :: Python :: 3.14 Programming Language :: Python :: 3 :: Only Programming Language :: Python :: Implementation :: CPython Programming Language :: C diff --git a/tox.ini b/tox.ini index 5b5905e6e..b18c3d628 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = {3.9,3.10,3.11,3.12,3.13} +envlist = {3.9,3.10,3.11,3.12,3.13,3.14} [testenv] commands = make check