mirror of
https://github.com/psycopg/psycopg2.git
synced 2024-11-22 00:46:33 +03:00
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:
commit
eaeeb76944
|
@ -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
|
||||||
|
|
|
@ -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:
|
||||||
|
|
30
.github/workflows/packages.yml
vendored
30
.github/workflows/packages.yml
vendored
|
@ -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
|
||||||
|
|
16
.github/workflows/tests.yml
vendored
16
.github/workflows/tests.yml
vendored
|
@ -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
1
NEWS
|
@ -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
|
||||||
|
|
|
@ -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::
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
|
|
|
@ -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
|
||||||
|
|
3
setup.py
3
setup.py
|
@ -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],
|
||||||
|
|
Loading…
Reference in New Issue
Block a user