Merge pull request #1729 from edgarrmondragon/1692-py313-wheels

Build Python 3.13 wheels, drop support for Python 3.7
This commit is contained in:
Daniele Varrazzo 2024-10-11 00:17:47 +02:00 committed by GitHub
commit eaeeb76944
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 56 additions and 52 deletions

View File

@ -19,10 +19,6 @@ environment:
- {PY_VER: "310", PY_ARCH: "64", APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019} - {PY_VER: "310", PY_ARCH: "64", APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019}
- {PY_VER: "39", PY_ARCH: "32", APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019} - {PY_VER: "39", PY_ARCH: "32", APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019}
- {PY_VER: "39", PY_ARCH: "64", APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019} - {PY_VER: "39", PY_ARCH: "64", APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019}
- {PY_VER: "38", PY_ARCH: "32", APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015}
- {PY_VER: "38", PY_ARCH: "64", APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015}
- {PY_VER: "37", PY_ARCH: "32", APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015}
- {PY_VER: "37", PY_ARCH: "64", APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015}
WORKFLOW: packages WORKFLOW: packages
@ -41,17 +37,14 @@ environment:
PERL5LIB: . PERL5LIB: .
# Select according to the service enabled # Select according to the service enabled
POSTGRES_DIR: C:\Program Files\PostgreSQL\9.6\ POSTGRES_DIR: C:\Program Files\PostgreSQL\13\
# The python used in the build process, not the one packages are built for
PYEXE: C:\Python36\python.exe
matrix: matrix:
fast_finish: false fast_finish: false
services: services:
# Note: if you change this service also change POSTGRES_DIR # Note: if you change this service also change POSTGRES_DIR
- postgresql96 - postgresql13
cache: cache:
# Rebuild cache if following file changes # Rebuild cache if following file changes
@ -64,23 +57,23 @@ cache:
# Repository gets cloned, Cache is restored # Repository gets cloned, Cache is restored
install: install:
- "%PYEXE% scripts\\build\\appveyor.py install" - "py scripts\\build\\appveyor.py install"
# PostgreSQL server starts now # PostgreSQL server starts now
build: "off" build: "off"
build_script: build_script:
- "%PYEXE% scripts\\build\\appveyor.py build_script" - "py scripts\\build\\appveyor.py build_script"
after_build: after_build:
- "%PYEXE% scripts\\build\\appveyor.py after_build" - "py scripts\\build\\appveyor.py after_build"
before_test: before_test:
- "%PYEXE% scripts\\build\\appveyor.py before_test" - "py scripts\\build\\appveyor.py before_test"
test_script: test_script:
- "%PYEXE% scripts\\build\\appveyor.py test_script" - "py scripts\\build\\appveyor.py test_script"
artifacts: artifacts:
- path: dist\psycopg2-*\*.whl - path: dist\psycopg2-*\*.whl

View File

@ -14,10 +14,6 @@ environment:
- {PY_VER: "310", PY_ARCH: "64", APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019} - {PY_VER: "310", PY_ARCH: "64", APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019}
- {PY_VER: "39", PY_ARCH: "32", APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019} - {PY_VER: "39", PY_ARCH: "32", APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019}
- {PY_VER: "39", PY_ARCH: "64", APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019} - {PY_VER: "39", PY_ARCH: "64", APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019}
- {PY_VER: "38", PY_ARCH: "32", APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015}
- {PY_VER: "38", PY_ARCH: "64", APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015}
- {PY_VER: "37", PY_ARCH: "32", APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015}
- {PY_VER: "37", PY_ARCH: "64", APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015}
WORKFLOW: tests WORKFLOW: tests
@ -36,17 +32,14 @@ environment:
PERL5LIB: . PERL5LIB: .
# Select according to the service enabled # Select according to the service enabled
POSTGRES_DIR: C:\Program Files\PostgreSQL\9.6\ POSTGRES_DIR: C:\Program Files\PostgreSQL\13\
# The python used in the build process, not the one packages are built for
PYEXE: C:\Python36\python.exe
matrix: matrix:
fast_finish: false fast_finish: false
services: services:
# Note: if you change this service also change POSTGRES_DIR # Note: if you change this service also change POSTGRES_DIR
- postgresql96 - postgresql13
cache: cache:
# Rebuild cache if following file changes # Rebuild cache if following file changes
@ -59,23 +52,23 @@ cache:
# Repository gets cloned, Cache is restored # Repository gets cloned, Cache is restored
install: install:
- "%PYEXE% scripts\\build\\appveyor.py install" - py scripts\\build\\appveyor.py install"
# PostgreSQL server starts now # PostgreSQL server starts now
build: "off" build: "off"
build_script: build_script:
- "%PYEXE% scripts\\build\\appveyor.py build_script" - py scripts\\build\\appveyor.py build_script"
after_build: after_build:
- "%PYEXE% scripts\\build\\appveyor.py after_build" - py scripts\\build\\appveyor.py after_build"
before_test: before_test:
- "%PYEXE% scripts\\build\\appveyor.py before_test" - py scripts\\build\\appveyor.py before_test"
test_script: test_script:
- "%PYEXE% scripts\\build\\appveyor.py test_script" - py scripts\\build\\appveyor.py test_script"
# vim: set ts=4 sts=4 sw=4: # vim: set ts=4 sts=4 sw=4:

View File

@ -27,6 +27,7 @@ jobs:
- name: Upload artifacts - name: Upload artifacts
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: sdist-${{ matrix.package_name }}
path: | path: |
dist/*.tar.gz dist/*.tar.gz
@ -64,7 +65,7 @@ jobs:
matrix: matrix:
platform: [manylinux, musllinux] platform: [manylinux, musllinux]
arch: [x86_64, i686, aarch64, ppc64le] arch: [x86_64, i686, aarch64, ppc64le]
pyver: [cp37, cp38, cp39, cp310, cp311, cp312] pyver: [cp38, cp39, cp310, cp311, cp312, cp313]
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
@ -81,7 +82,7 @@ jobs:
key: libpq-${{ env.LIBPQ_VERSION }}-${{ matrix.platform }}-${{ matrix.arch }} key: libpq-${{ env.LIBPQ_VERSION }}-${{ matrix.platform }}-${{ matrix.arch }}
- name: Build wheels - name: Build wheels
uses: pypa/cibuildwheel@v2.16.2 uses: pypa/cibuildwheel@v2.21.2
env: env:
CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014 CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014
CIBW_MANYLINUX_I686_IMAGE: manylinux2014 CIBW_MANYLINUX_I686_IMAGE: manylinux2014
@ -110,6 +111,7 @@ jobs:
- uses: actions/upload-artifact@v4 - uses: actions/upload-artifact@v4
with: with:
name: linux-${{matrix.pyver}}-${{matrix.platform}}_${{matrix.arch}}
path: ./wheelhouse/*.whl path: ./wheelhouse/*.whl
services: services:
@ -128,7 +130,7 @@ jobs:
build-macos: build-macos:
runs-on: macos-latest runs-on: macos-${{ matrix.macver }}
if: true if: true
strategy: strategy:
@ -136,22 +138,37 @@ jobs:
matrix: matrix:
# These archs require an Apple M1 runner: [arm64, universal2] # These archs require an Apple M1 runner: [arm64, universal2]
arch: [x86_64] arch: [x86_64]
pyver: [cp37, cp38, cp39, cp310, cp311, cp312] pyver: [cp38, cp39, cp310, cp311, cp312, cp313]
macver: ["12"]
include:
- arch: arm64
pyver: cp310
macver: "14"
- arch: arm64
pyver: cp311
macver: "14"
- arch: arm64
pyver: cp312
macver: "14"
- arch: arm64
pyver: cp313
macver: "14"
steps: steps:
- name: Checkout repos - name: Checkout repos
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Build wheels - name: Build wheels
uses: pypa/cibuildwheel@v2.16.2 uses: pypa/cibuildwheel@v2.21.2
env: env:
CIBW_BUILD: ${{matrix.pyver}}-macosx_${{matrix.arch}} CIBW_BUILD: ${{matrix.pyver}}-macosx_${{matrix.arch}}
CIBW_ARCHS_MACOS: x86_64 CIBW_ARCHS_MACOS: ${{matrix.arch}}
CIBW_BEFORE_ALL_MACOS: ./scripts/build/wheel_macos_before_all.sh CIBW_BEFORE_ALL_MACOS: ./scripts/build/wheel_macos_before_all.sh
CIBW_TEST_COMMAND: >- CIBW_TEST_COMMAND: >-
export PYTHONPATH={project} && export PYTHONPATH={project} &&
python -c "import tests; tests.unittest.main(defaultTest='tests.test_suite')" python -c "import tests; tests.unittest.main(defaultTest='tests.test_suite')"
CIBW_ENVIRONMENT: >- CIBW_ENVIRONMENT: >-
MACOSX_DEPLOYMENT_TARGET=${{ matrix.macver }}.0
PG_VERSION=16 PG_VERSION=16
PACKAGE_NAME=psycopg2-binary PACKAGE_NAME=psycopg2-binary
PSYCOPG2_TESTDB=postgres PSYCOPG2_TESTDB=postgres
@ -161,4 +178,5 @@ jobs:
- name: Upload artifacts - name: Upload artifacts
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: macos-${{matrix.pyver}}-macos-${{matrix.macver}}_${{matrix.arch}}
path: ./wheelhouse/*.whl path: ./wheelhouse/*.whl

View File

@ -13,22 +13,20 @@ jobs:
fail-fast: false fail-fast: false
matrix: matrix:
include: include:
- {python: "3.7", postgres: "10"}
- {python: "3.8", postgres: "12"} - {python: "3.8", postgres: "12"}
- {python: "3.9", postgres: "13"} - {python: "3.9", postgres: "13"}
- {python: "3.10", postgres: "14"} - {python: "3.10", postgres: "14"}
- {python: "3.11", postgres: "15"} - {python: "3.11", postgres: "15"}
- {python: "3.12", postgres: "16"} - {python: "3.12", postgres: "16"}
- {python: "3.13-dev", postgres: "16"} - {python: "3.13-dev", postgres: "17"}
# Opposite extremes of the supported Py/PG range, other architecture # Opposite extremes of the supported Py/PG range, other architecture
- {python: "3.7", postgres: "16", architecture: "x86"} - {python: "3.8", postgres: "17", architecture: "x86"}
- {python: "3.8", postgres: "15", architecture: "x86"} - {python: "3.9", postgres: "16", architecture: "x86"}
- {python: "3.9", postgres: "14", architecture: "x86"} - {python: "3.10", postgres: "15", architecture: "x86"}
- {python: "3.10", postgres: "13", architecture: "x86"} - {python: "3.11", postgres: "14", architecture: "x86"}
- {python: "3.11", postgres: "11", architecture: "x86"} - {python: "3.12", postgres: "13", architecture: "x86"}
- {python: "3.12", postgres: "10", architecture: "x86"} - {python: "3.13-dev", postgres: "12", architecture: "x86"}
- {python: "3.13-dev", postgres: "10", architecture: "x86"}
env: env:
PSYCOPG2_TESTDB: postgres PSYCOPG2_TESTDB: postgres

1
NEWS
View File

@ -5,6 +5,7 @@ What's new in psycopg 2.9.10 (unreleased)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Add support for Python 3.13. - Add support for Python 3.13.
- Drop support for Python 3.7.
What's new in psycopg 2.9.9 What's new in psycopg 2.9.9

View File

@ -131,8 +131,8 @@ The current `!psycopg2` implementation supports:
.. ..
NOTE: keep consistent with setup.py and the /features/ page. NOTE: keep consistent with setup.py and the /features/ page.
- Python versions from 3.7 to 3.12 - Python versions from 3.8 to 3.13
- PostgreSQL server versions from 7.4 to 16 - PostgreSQL server versions from 7.4 to 17
- PostgreSQL client library version from 9.1 - PostgreSQL client library version from 9.1
.. note:: .. note::

View File

@ -27,8 +27,8 @@
#ifndef PSYCOPG_PYTHON_H #ifndef PSYCOPG_PYTHON_H
#define PSYCOPG_PYTHON_H 1 #define PSYCOPG_PYTHON_H 1
#if PY_VERSION_HEX < 0x03070000 #if PY_VERSION_HEX < 0x03080000
#error "psycopg requires Python 3.7" #error "psycopg requires Python 3.8"
#endif #endif
#include <structmember.h> #include <structmember.h>

View File

@ -99,6 +99,7 @@ def configure_postgres():
Set up PostgreSQL config before the service starts. Set up PostgreSQL config before the service starts.
""" """
logger.info("Configuring Postgres") logger.info("Configuring Postgres")
opt.pg_data_dir.mkdir(parents=True, exist_ok=True)
with (opt.pg_data_dir / 'postgresql.conf').open('a') as f: with (opt.pg_data_dir / 'postgresql.conf').open('a') as f:
# allow > 1 prepared transactions for test cases # allow > 1 prepared transactions for test cases
print("max_prepared_transactions = 10", file=f) print("max_prepared_transactions = 10", file=f)

View File

@ -35,7 +35,7 @@ case "$ID" in
alpine) alpine)
apk upgrade apk upgrade
apk add --no-cache zlib-dev krb5-dev linux-pam-dev openldap-dev apk add --no-cache zlib-dev krb5-dev linux-pam-dev openldap-dev openssl-dev
;; ;;
*) *)

View File

@ -12,9 +12,10 @@ dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
prjdir="$( cd "${dir}/../.." && pwd )" prjdir="$( cd "${dir}/../.." && pwd )"
brew install gnu-sed postgresql@${PG_VERSION} brew install gnu-sed postgresql@${PG_VERSION}
brew link --overwrite postgresql@${PG_VERSION}
# Start the database for testing # Start the database for testing
brew services start postgresql brew services start postgresql@${PG_VERSION}
# Wait for postgres to come up # Wait for postgres to come up
for i in $(seq 10 -1 0); do for i in $(seq 10 -1 0); do

View File

@ -52,7 +52,6 @@ Intended Audience :: Developers
License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL) License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)
Programming Language :: Python Programming Language :: Python
Programming Language :: Python :: 3 Programming Language :: Python :: 3
Programming Language :: Python :: 3.7
Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9 Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10 Programming Language :: Python :: 3.10
@ -552,7 +551,7 @@ setup(name="psycopg2",
url="https://psycopg.org/", url="https://psycopg.org/",
license="LGPL with exceptions", license="LGPL with exceptions",
platforms=["any"], platforms=["any"],
python_requires='>=3.7', python_requires='>=3.8',
description=readme.split("\n")[0], description=readme.split("\n")[0],
long_description="\n".join(readme.split("\n")[2:]).lstrip(), long_description="\n".join(readme.split("\n")[2:]).lstrip(),
classifiers=[x for x in classifiers.split("\n") if x], classifiers=[x for x in classifiers.split("\n") if x],

View File

@ -1,5 +1,5 @@
[tox] [tox]
envlist = {3.7,3.8,3.9,3.10,3.11,3.12,3.13} envlist = {3.8,3.9,3.10,3.11,3.12,3.13}
[testenv] [testenv]
commands = make check commands = make check