Support Python 3.13 and PostgreSQL 17.
Improvements
============
* Implement GSSAPI authentication
(by @eltoder in 1d4e568 for #1122)
* Implement SSPI authentication
(by @eltoder in 1aab209 for #1128)
* Add initial typings
(by @bryanforbes in d42432b for #1127)
* Allow building with Cython 3
(by @musicinmybrain in 258d8a9 for #1101)
* docs: fix connection pool close call (#1125)
(by @paulovitorweb in e848814 for #1125)
* Add support for the `sslnegotiation` parameter
(by @elprans in afdb05c for #1187)
* Test and build on Python 3.13
(by @elprans in 3aa9894 for #1188)
* Support PostgreSQL 17
(by @elprans in cee97e1 for #1189)
(by @MeggyCal in aa2d0e6 for #1185)
* Add `fetchmany` to execute many *and* return rows
(by @rossmacarthur in 73f2209 for #1175)
* Add `connect` kwarg to Pool to better support GCP's CloudSQL
(by @d1manson in 3ee19ba for #1170)
* Allow customizing connection state reset (#1191)
(by @elprans in f6ec755 for #1191)
Fixes
=====
* s/quote/quote_plus/ in the note about DSN part quoting
(by @elprans in 1194a8a for #1151)
* Use asyncio.run() instead of run_until_complete()
(by @eltoder in 9fcddfc for #1140)
* Require async_timeout for python < 3.11 (#1177)
(by @Pliner in 327f2a7 for #1177)
* Allow testing with uvloop on Python 3.12 (#1182)
(by @musicinmybrain in 597fe54 for #1182)
* Mark pool-wrapped connection coroutine methods as coroutines
(by @elprans in 636420b for #1134)
* handle `None` parameters in `copy_from_query`, returning `NULL`
(by @fobispotc in 259d16e for #1180)
* fix: return the pool from _async_init__ if it's already initialized (#1104)
(by @guacs in 7dc5872 for #1104)
* Replace obsolete, unsafe `Py_TRASHCAN_SAFE_BEGIN/END` (#1150)
(by @musicinmybrain in 11101c6 for #1150)
Support Python 3.13 and PostgreSQL 17.
Improvements
Implement GSSAPI authentication
(by @eltoder in 1d4e568 for Implement GSSAPI authentication #1122)
Implement SSPI authentication
(by @eltoder in 1aab209 for Implement SSPI authentication #1128)
Add initial typings
(by @bryanforbes in d42432b for Add initial typings #1127)
Allow building with Cython 3
(by @musicinmybrain in 258d8a9 for Allow Cython 3 (fix #1083) #1101)
docs: fix connection pool close call (docs: fix connection pool close call #1125)
(by @paulovitorweb in e848814 for docs: fix connection pool close call #1125)
Add support for the sslnegotiation parameter
(by @elprans in afdb05c for Add support for the sslnegotiation parameter #1187)
Test and build on Python 3.13
(by @elprans in 3aa9894 for Test and build on Python 3.13 #1188)
Support PostgreSQL 17
(by @elprans in cee97e1 for Test on PostgreSQL 17 #1189)
(by @MeggyCal in aa2d0e6 for notice also the MERGE command #1185)
Add fetchmany to execute many and return rows
(by @rossmacarthur in 73f2209 for Add fetchmany to execute many *and* return rows #1175)
Add connect kwarg to Pool to better support GCP's CloudSQL
(by @d1manson in 3ee19ba for Add connect kwarg to Pool to better support GCP's CloudSQL #1170)
Allow customizing connection state reset (Allow customizing connection state reset #1191)
(by @elprans in f6ec755 for Allow customizing connection state reset #1191)
Fixes
s/quote/quote_plus/ in the note about DSN part quoting
(by @elprans in 1194a8a for asyncpg.connect: ValueError: invalid literal for int() with base 10 #1151)
Use asyncio.run() instead of run_until_complete()
(by @eltoder in 9fcddfc for Use asyncio.run() instead of run_until_complete() #1140)
Require async_timeout for python < 3.11 (Require async_timeout for python < 3.11 #1177)
(by @Pliner in 327f2a7 for Require async_timeout for python < 3.11 #1177)
Allow testing with uvloop on Python 3.12 (Allow testing with uvloop on Python 3.12 #1182)
(by @musicinmybrain in 597fe54 for Allow testing with uvloop on Python 3.12 #1182)
Mark pool-wrapped connection coroutine methods as coroutines
(by @elprans in 636420b for Mark pool-wrapped connection coroutine methods as coroutines #1134)
handle None parameters in copy_from_query, returning NULL
(by @fobispotc in 259d16e for handle None parameters in query, returning NULL #1180)
fix: return the pool from async_init_ if it's already initialized (fix: return the pool from _async_init__ if it's already initialized #1104)
(by @guacs in 7dc5872 for fix: return the pool from _async_init__ if it's already initialized #1104)
Replace obsolete, unsafe Py_TRASHCAN_SAFE_BEGIN/END (Replace obsolete, unsafe Py_TRASHCAN_SAFE_BEGIN/END #1150)
(by @musicinmybrain in 11101c6 for Replace obsolete, unsafe Py_TRASHCAN_SAFE_BEGIN/END #1150)