Asyncpg Versions Save

A fast PostgreSQL Database Client Library for Python/asyncio.

v0.29.0

5 months ago

Minor fixes and improvements.

Improvements

  • Python 3.12 and PostgreSQL 16 support (#1084) (by @elprans in deea86ce)

  • Add support for tuple-format custom codecs on composite types (#1061) (by @elprans in 922fcd10)

  • Support target_session_attrs in URL format, add tests (#1073) (by @elprans in 7cb4e70d)

  • Infinity numeric support (#1067) (by @krokoziabla in 0c3bf600 for #1020)

  • Add support for the WHERE clause in copy_to methods (#941) (by @kaylynn234 in b7ffab6c)

  • Add query logging callbacks and context manager (#1043) (by @dcwatson in b2697ffd)

Fixes

  • When prepared statements are disabled, avoid relying on them harder (#1065) (by @elprans in cbf64e18)

  • Handle environments with HOME set to a not-a-directory (#1063) (by @elprans in af922bcf)

  • Fix handling of non-ASCII passwords (#1062) (by @elprans in 89d5bd03)

  • Disable JIT while doing type introspection (#1082) (by @elprans in f21ebf64)

  • Remove connection parameter caching in Pool (#1053) (by @ermakov-oleg in 4ddb0397)

  • Switch to Python 3.12-style wait_for (#1086) (by @elprans in 4bdd8a7e)

  • Update automatic PostGIS type conversion for Shapely 2.0 (#1085) (by @ChimneySwift in 8b45beb4)

  • Use the timeout context manager in the connection path (#1087) (by @elprans in 313b2b2b)

  • Small fix for documentation on using SSL in Connection (#995) (by @ScottFred in ccc7baf9)

  • Use cleanup_ctx in pool usage doc (#878) (by @ir4y in 70c8bd81)

  • Close cursor portals once the iterator is exhausted (#1088) (by @elprans in ca9f03be)

  • Cut BaseProtocol circular reference on close. (#1049) (by @pteromys in 93a6f79a)

  • Allow passing hosts as tuples to connect() (in addition to lists) (#1021) (by @lezram in d7faaff5)

Other

  • Drop support for Python 3.7 (#1064) (by @bryanforbes in 87ab1431)

v0.28.0

9 months ago

Minor fixes and improvements.

Changes

  • Do not try to cleanup statements (#981) (by @fvannee in d2e710fe for #981)

  • Add Pool.is_closing() method (#973) (by @singingwolfboy in 9cb2c1ce for #973)

  • Fix test_tls_version for LibreSSL (#974) (by @CyberTailor in 7df9812a for #974)

  • Handle environments without home dir (#1011) (by @LeonardBesson in 172b8f69 for #1011)

  • fix: salt and iterations parsing for scram (#1026) (by @trigonometr in 7443a9e7 for #1026)

  • Add support for target_session_attrs (#987) (by @JesseDeLoore in bf74e88b for #987)

  • Add support for READ UNCOMMITTED (#1039) (by @benwah in 2f20bae7 for #1039)

  • Update benchmarks, add psycopg3 (#1042) (by @elprans in 7d4fcf04 for #1042)

v0.27.0

1 year ago

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 7bd6c49f for #954)

  • Add Python 3.11 to the test matrix (by @elprans in 5f908e67 for #948)

  • Exclude .venv from flake8 (#958) (by @jparise in 40b16ea6 for #958)

  • Upgrade to flake8 5.0.4 (from 3.9.2) (#961) (by @jparise in 0e73fec2 for #961)

  • Show an example of a custom Record class (#960) (by @jparise in 84c99bfd for #960)

  • Use the exact type name in Record.repr (#959) (by @jparise in eccdf61a for #959)

  • Drop Python 3.6 support (#940) (by @bryanforbes in bb0cb39d for #940)

  • Test on Python 3.11 and PostgreSQL 15, fix workflow deprecations (#968) (by @elprans in eab7fdf2 for #968)

v0.26.0

1 year ago

Changes

  • Add support to use awaitable object in password function. (#889) (by @kwarunek in fb3b6bf7 for #889)

  • Support direct TLS connections (i.e. no STARTTLS) (#923) (by @jackwotherspoon in f2a937d2 for #923)

Fixes

  • Fix invalid pyproject.toml (#900) (by @Rongronggg9 in eddb649c for #900)

  • Add record_class parameter Pool.fetch and Pool.fetchrow (#896) (by @baltitenger in 2519cf38 for #896)

  • Domain basetypes are introspected (#886) (#887) (by @QuantumTM in cca4a2d3 for #886)

  • Properly handle exceptions raised while handling server auth messages (#862) (by @elprans in bd192623 for #862)

v0.25.0

2 years ago

Changes

  • Improve SSL option compatibility in URIs (by @fantix in 383c711e for #827)

  • Add Pool methods to determine its min, max, current and idle size (by @elprans in 603e3868 for #849)

  • Make it possible to specify a statement name in Connection.prepare() (by @elprans in 03a3d18f for #846)

  • Implement support for multirange types (by @elprans in d64a44a1 for #851)

Fixes

  • Make sure timeout callbacks always get cleaned up (by @elprans in dad26913 for #831)

  • Update __all__ statements to a simpler form that is better supported by typecheckers (by @bschnurr in 0a3ae7f5 for #828)

  • Fix test_timetz_encoding on Python 3.10 (by @elprans in 3a90fef0)

  • Fix a bunch of ResourceWarnings in the test suite (by @elprans in 2f4fe539)

  • Fix SSLContext deprecation warnings (by @elprans in 4d39a052)

  • Fix the description of the database argument to connect() (by @elprans in a2a92374 for #847)

  • Fix parsing of IPv6 addresses in the connection URI (by @elprans in f900b737 for #845)

  • Improve diagnostics of invalid executemany() input (by @elprans in a8fc21e0 for #848)

v0.24.0

2 years ago

Changes

  • Drop support for Python 3.5 (#777) (by @and-semakin in da58cd26 for #777)

  • Add support for Python 3.10 (#795) (by @elprans in abf55699 for #795)

  • Add support for asynchronous iterables to copy_records_to_table() (#713) (by @elprans in 1d33ff62 for #713)

  • Add support for coroutine functions as listener callbacks (#802) (by @elprans in 41da093e for #802)

  • Add support for sslcert, sslkey and sslrootcert parameters to DSN (#768) (by @jdobes and @elprans in c674e86a for #768)

  • Add copy_ wrappers to Pool (#661) (by @elprans in a6b0f283 for #661)

  • Add issubset and issuperset methods to the Range type (#563) (by @kdorsel in de07d0ab for #563)

Fixes

  • Break connection internal circular reference (#774) (by @fantix in d08a9b8b for #774)

  • Make Server Version Extraction More Flexible (#778) (by @Natrinicle in d0761694 for #778)

v0.23.0

2 years ago

Fixes

  • Avoid TypeError in Transaction.__repr__ (#703) (by @BeatButton in d6eea8ed for #703)

  • Feed memoryview to writelines() (#715) (by @fantix in 359a34c4 for #715)

  • Add sslmode=allow support and fix =prefer retry (#720) (by @fantix in 075114c1 for #720)

  • Loosen message test in test_invalid_input (#751) (by @musicinmybrain in bc4127f4 for #751)

  • Support readonly and deferrable for non-serializable transactions (#747) (by @pauldraper in 5cf4089a for #747)

  • Fix asyncpg with Py_DEBUG mode (#719) (by @shadchin in a113d908 for #719)

  • Fix docs/Makefile and docs/_static/theme_overrides.css missing from PyPI package (#708) (by @musicinmybrain in c3060680 for #708)

v0.22.0

3 years ago

A new asyncpg release is here.

Notable additions include Python 3.9 support, support for recently added PostgreSQL types like jsonpath, and last but not least, vastly improved executemany() 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, unless executemany() 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 690048db for #295)

  • Allow using custom Record class (by @elprans in db4f1a6c for #577)

  • Add Python 3.9 support (#610) (by @elprans in c05d7260 for #610)

  • Prefer SSL connections by default (#660) (by @elprans in 16183aa0 for #660)

  • Add codecs for a bunch of new builtin types (#665) (by @elprans in b53f0384 for #665)

  • Expose Pool as asyncpg.Pool (#669) (by @rugleb in 0e0eb8d3 for #669)

  • Avoid unnecessary overhead during connection reset (#648) (by @kitogo in ff5da5f9 for #648)

Fixes

  • Add a workaround for bpo-37658 (by @elprans in 2bac166c for #21894)

  • Fix wrong default transaction isolation level (#622) (by @fantix in 4a627d55 for #622)

  • Fix set_type_codec() to accept standard SQL type names (#619) (by @elprans in 68b40cbf for #619)

  • Ignore custom data codec for internal introspection (#618) (by @fantix in e064f59e for #618)

  • Fix null/NULL quoting in array text encoder (#627) (by @fantix in 92aa8062 for #627)

  • Fix link in connect docstring (#653) (by @samuelcolvin in 8b313bde for #653)

  • Make asyncpg work with pyinstaller (#651) (by @Atem18 in 5ddabb19 for #651)

  • Fix possible AttributeError exception in ConnectionSettings (#632) (by @petriborg in 0d231820 for #632)

  • Prohibit custom codecs on domains (by @elprans in 50f964fc for #457)

  • Raise proper error on anonymous composite input (tuple arguments) (#664) (by @elprans in 7252dbeb for #664)

  • Fix incorrect application of custom codecs in some cases (#662) (by @elprans in 50f65fbb for #662)

v0.21.0

3 years ago

Improvements

  • Add support for password functions (useful for RDS IAM auth) (#554) (by Harvey Frye in 1d9457f0 for #554)

  • Add support for connection termination listeners (#525) (by @iomintz in 8141b93c for #525)

  • Update CI matrix, aarch64 builds (#595) (by @Gelbpunkt in ac6a2fcf for #595)

Fixes

  • Fix possible uninitalized pointer access on unexpected array message data (CVE-2020-17446, by @elprans in 69bcdf5b, reported by @risicle)

  • Fix Connection class _copy_in private method (by @ABCDeath in 7f5c2a24 for #555)

  • Bump pgproto to fix compilation issues (by @elprans in aa67d61b for #565)

  • Improve pool documentation examples (#491) (by @nyurik in 745f8f81 for #491)

  • Update usage.rst (#572) (by @xuedong09 in f5b425ae for #572)

  • Fix links in connection documentation (#584) (by @samuelcolvin in b0813204 for #584)

  • Fix usage documentation for hstore (#515) (by @aaliddell in 39040b3c for #515)

  • Fix compiler warnings (by @elprans in 6cb5ba19)

v0.20.0

4 years ago

Improvements

  • Support Python 3.8 (by @1st1 in #504)

  • Support PgBouncer by sending only a single SYNC message per query (by @fvannee in b043fbd3)

Bug Fixes

  • Handle IP values with prefix in "inet" type as ipaddress.IPvXInterface (by @elprans in 5a4daf71 for #497)

  • Close transport if connection times out (by @hexrain in 926f4833 for #468)

  • Use faster UUID codecs; make UUID decoding/encoding/operations 2-7x faster (by @1st1 in edde3ff4)

  • Use loop.start_tls() to upgrade connections to SSL (by @1st1 in bdba7ce7)

Build

  • Bump Cython to 0.29.14 (by @1st1 in 7cb31bc6)