Changelog History
Page 1
-
v0.31.0 Changes
November 24, 2025Enable Python 3.14 with experimental subinterpreter/freethreading
👌 support.👌 Improvements
➕ Add Python 3.14 support, experimental subinterpreter/freethreading support (#1279)
(by @elprans in 9e42642)Avoid performing type introspection on known types (#1243)
(by @elprans in 5c9986c)0️⃣ Make
prepare()not use named statements by default when cache is disabled (#1245)
(by @elprans in 5b14653)Implement connection service file functionality (#1223)
(by @AndrewJackson2020 in 1d63bb1)
🛠 Fixes
🛠 Fix multi port connection string issue (#1222)
(by @AndrewJackson2020 in 01c0db7)Avoid leaking connections if _can_use_connection fails (#1269)
(by @yuliy-openai in e94302d)
Other
-
v0.30.0 Changes
October 20, 2024👌 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
sslnegotiationparameter
(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
fetchmanyto execute many and return rows
(by @rossmacarthur in 73f2209 for #1175)➕ Add
connectkwarg 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
Noneparameters incopy_from_query, returningNULL
(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)
-
v0.29.0 Changes
November 05, 2023🛠 Minor fixes and improvements.
👌 Improvements
👍 Python 3.12 and PostgreSQL 16 support (#1084)
(by @elprans in deea86c)➕ Add support for tuple-format custom codecs on composite types (#1061)
(by @elprans in 922fcd1)Support
target_session_attrsin URL format, add tests (#1073)
(by @elprans in 7cb4e70)👍 Infinity numeric support (#1067)
(by @krokoziabla in 0c3bf60 for #1020)➕ Add support for the
WHEREclause incopy_tomethods (#941)
(by @kaylynn234 in b7ffab6)➕ Add query logging callbacks and context manager (#1043)
(by @dcwatson in b2697ff)
🛠 Fixes
When prepared statements are disabled, avoid relying on them harder (#1065)
(by @elprans in cbf64e1)🖐 Handle environments with HOME set to a not-a-directory (#1063)
(by @elprans in af922bc)🛠 Fix handling of non-ASCII passwords (#1062)
(by @elprans in 89d5bd0)Disable JIT while doing type introspection (#1082)
(by @elprans in f21ebf6)✂ Remove connection parameter caching in
Pool(#1053)
(by @ermakov-oleg in 4ddb039)💅 Switch to Python 3.12-style
wait_for(#1086)
(by @elprans in 4bdd8a7)⚡️ Update automatic PostGIS type conversion for Shapely 2.0 (#1085)
(by @ChimneySwift in 8b45beb)⏱ Use the
timeoutcontext manager in the connection path (#1087)
(by @elprans in 313b2b2)📚 Small fix for documentation on using SSL in Connection (#995)
(by @ScottFred in ccc7baf)👉 Use cleanup_ctx in pool usage doc (#878)
(by @ir4y in 70c8bd8)Close cursor portals once the iterator is exhausted (#1088)
(by @elprans in ca9f03b)Cut BaseProtocol circular reference on close. (#1049)
(by @pteromys in 93a6f79)👍 Allow passing hosts as tuples to
connect()(in addition to lists) (#1021)
(by @lezram in d7faaff)
Other
- ⬇️ Drop support for Python 3.7 (#1064)
(by @bryanforbes in 87ab143)
-
v0.28.0 Changes
July 07, 2023🛠 Minor fixes and improvements.
🔄 Changes
Do not try to cleanup statements (#981)
(by @fvannee in d2e710f for #981)➕ Add Pool.is_closing() method (#973)
(by @singingwolfboy in 9cb2c1c for #973)Fix test_tls_version for LibreSSL (#974)
(by @CyberTailor in 7df9812 for #974)🖐 Handle environments without home dir (#1011)
(by @LeonardBesson in 172b8f6 for #1011)🛠 fix: salt and iterations parsing for scram (#1026)
(by @trigonometr in 7443a9e for #1026)Add support for target_session_attrs (#987)
(by @JesseDeLoore in bf74e88 for #987)➕ Add support for READ UNCOMMITTED (#1039)
(by @benwah in 2f20bae for #1039)⚡️ Update benchmarks, add psycopg3 (#1042)
(by @elprans in 7d4fcf0 for #1042)
-
v0.27.0 Changes
October 26, 2022👌 Support Python 3.11 and PostgreSQL 15. This release also drops support
for Python 3.6.🔄 Changes
➕ Add arm64 mac and linux wheels
(by @ddelange in 7bd6c49 for #954)➕ Add Python 3.11 to the test matrix
(by @elprans in 5f908e6 for #948)Exclude .venv from flake8 (#958)
(by @jparise in 40b16ea for #958)⬆️ Upgrade to flake8 5.0.4 (from 3.9.2) (#961)
(by @jparise in 0e73fec for #961)👉 Show an example of a custom Record class (#960)
(by @jparise in 84c99bf for #960)Use the exact type name in Record. repr (#959)
(by @jparise in eccdf61 for #959)⬇️ Drop Python 3.6 support (#940)
(by @bryanforbes in bb0cb39 for #940)✅ Test on Python 3.11 and PostgreSQL 15, fix workflow deprecations (#968)
(by @elprans in eab7fdf for #968)
-
v0.26.0 Changes
July 07, 2022🔄 Changes
➕ Add support to use awaitable object in password function. (#889)
(by @kwarunek in fb3b6bf for #889)👌 Support direct TLS connections (i.e. no STARTTLS) (#923)
(by @jackwotherspoon in f2a937d for #923)
🛠 Fixes
🛠 Fix invalid
pyproject.toml(#900)
(by @Rongronggg9 in eddb649 for #900)➕ Add
record_classparameter Pool.fetch and Pool.fetchrow (#896)
(by @baltitenger in 2519cf3 for #896)Domain basetypes are introspected (#886) (#887)
(by @QuantumTM in cca4a2d for #886)Properly handle exceptions raised while handling server auth messages (#862)
(by @elprans in bd19262 for #862)
-
v0.25.0 Changes
November 16, 2021🔄 Changes
👌 Improve SSL option compatibility in URIs
(by @fantix in 383c711 for #827)➕ Add
Poolmethods to determine its min, max, current and idle size
(by @elprans in 603e386 for #849)👉 Make it possible to specify a statement name in
Connection.prepare()
(by @elprans in 03a3d18 for #846)👍 Implement support for
multirangetypes
(by @elprans in d64a44a for #851)
🛠 Fixes
⏱ Make sure timeout callbacks always get cleaned up
(by @elprans in dad2691 for #831)Update
__all__statements to a simpler form that is better supported by typecheckers
(by @bschnurr in 0a3ae7f for #828)Fix
test_timetz_encodingon Python 3.10
(by @elprans in 3a90fef)🛠 Fix a bunch of
ResourceWarningsin the test suite
(by @elprans in 2f4fe53)🛠 Fix
SSLContextdeprecation warnings
(by @elprans in 4d39a05)🛠 Fix the description of the database argument to
connect()
(by @elprans in a2a9237 for #847)🛠 Fix parsing of IPv6 addresses in the connection URI
(by @elprans in f900b73 for #845)👌 Improve diagnostics of invalid
executemany()input
(by @elprans in a8fc21e for #848)
-
v0.24.0 Changes
August 10, 2021🔄 Changes
⬇️ Drop support for Python 3.5 (#777)
(by @and-semakin in da58cd2 for #777)➕ Add support for Python 3.10 (#795)
(by @elprans in abf5569 for #795)Add support for asynchronous iterables to
copy_records_to_table()(#713)
(by @elprans in 1d33ff6 for #713)➕ Add support for coroutine functions as listener callbacks (#802)
(by @elprans in 41da093 for #802)➕ Add support for sslcert, sslkey and sslrootcert parameters to DSN (#768)
(by @jdobes and @elprans in c674e86 for #768)➕ Add copy_ wrappers to Pool (#661)
(by @elprans in a6b0f28 for #661)➕ Add issubset and issuperset methods to the Range type (#563)
(by @kdorsel in de07d0a for #563)
🛠 Fixes
-
v0.23.0 Changes
May 17, 2021🛠 Fixes
Avoid TypeError in
Transaction. __repr__(#703)
(by @BeatButton in d6eea8e for #703)Feed memoryview to
writelines()(#715)
(by @fantix in 359a34c for #715)➕ Add sslmode=allow support and fix =prefer retry (#720)
(by @fantix in 075114c for #720)Loosen message test in
test_invalid_input(#751)
(by @musicinmybrain in bc4127f for #751)👌 Support readonly and deferrable for non-serializable transactions (#747)
(by @pauldraper in 5cf4089 for #747)🛠 Fix asyncpg with
Py_DEBUGmode (#719)
(by @shadchin in a113d90 for #719)Fix docs/Makefile and docs/_static/theme_overrides.css missing from PyPI package (#708)
(by @musicinmybrain in c306068 for #708)
-
v0.22.0 Changes
February 10, 2021🚀 A new asyncpg release is here.
👍 Notable additions include Python 3.9 support, support for recently added
PostgreSQL types likejsonpath, and last but not least, vastly
👌 improvedexecutemany()performance. Importantly,executemany()is
also now atomic, which means that either all iterations succeed, or
none at all, whereas previously partial results would have remained in
place, unlessexecutemany()was called in a transaction.🛠 There is also the usual assortment of improvements and bugfixes, see the
details below.🚀 This is the last release of asyncpg that supports Python 3.5, which has
reached EOL last September.👌 Improvements
Vastly speedup executemany by batching protocol messages (#295)
(by @fantix in 690048d for #295)👍 Allow using custom
Recordclass
(by @elprans in db4f1a6 for #577)➕ Add Python 3.9 support (#610)
(by @elprans in c05d726 for #610)0️⃣ Prefer SSL connections by default (#660)
(by @elprans in 16183aa for #660)➕ Add codecs for a bunch of new builtin types (#665)
(by @elprans in b53f038 for #665)🔦 Expose Pool as
asyncpg.Pool(#669)
(by @rugleb in 0e0eb8d for #669)Avoid unnecessary overhead during connection reset (#648)
(by @kitogo in ff5da5f for #648)
🛠 Fixes
➕ Add a workaround for bpo-37658
(by @elprans in 2bac166 for #21894)🛠 Fix wrong default transaction isolation level (#622)
(by @fantix in 4a627d5 for #622)Fix
set_type_codec()to accept standard SQL type names (#619)
(by @elprans in 68b40cb for #619)Ignore custom data codec for internal introspection (#618)
(by @fantix in e064f59 for #618)🛠 Fix null/NULL quoting in array text encoder (#627)
(by @fantix in 92aa806 for #627)🛠 Fix link in connect docstring (#653)
(by @samuelcolvin in 8b313bd for #653)👉 Make asyncpg work with pyinstaller (#651)
(by @Atem18 in 5ddabb1 for #651)🛠 Fix possible
AttributeErrorexception inConnectionSettings(#632)
(by @petriborg in 0d23182 for #632)Prohibit custom codecs on domains
(by @elprans in 50f964f for #457)Raise proper error on anonymous composite input (tuple arguments) (#664)
(by @elprans in 7252dbe for #664)🛠 Fix incorrect application of custom codecs in some cases (#662)
(by @elprans in 50f65fb for #662)