Psycopg 2.8 released

From: Daniele Varrazzo <daniele(dot)varrazzo(at)gmail(dot)com>
To: pgsql-announce(at)postgresql(dot)org
Subject: Psycopg 2.8 released
Date: 2019-04-04 13:06:11
Message-ID: CA+mi_8biopjUvGBcRtE9zdVdo8X0Kd1w_AZ=3S3D_ci-acpXFg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-announce

After about two years from the previous major release, Psycopg 2.8 is
finally here!

Among the highlights, PostgreSQL errors are now mapped to Python
exceptions for a more idiomatic way to handle them. Several additions
allow a better insight of the connection status and query results.

Behind the scene, asynchronous communication and concurrency received
several improvements, and dropping support for older versions of
Python gave the chance to refactor and modernise the codebase (with
the especial help from Jon Dufresne who ruthlessly butchered our code
into a streamlined pulp).

Thank you very much to everyone contributing so far. Happy hacking!

---

New features:

- Added 'errors' module. Every PostgreSQL error is converted into a specific
exception class (ticket #682).
- Added 'encrypt_password()' function (ticket #576).
- Added 'BYTES' adapter to manage databases with mixed encodings on
Python 3 (ticket #835).
- Added 'table_oid' and 'table_column' attributes on 'cursor.description' items
(ticket #661).
- Added 'connection.info' object to retrieve various PostgreSQL
connection information (ticket #726).
- Added 'get_native_connection()' to expose the raw 'PGconn' structure
to C extensions via Capsule (ticket #782).
- Added 'pgconn_ptr' and 'pgresult_ptr' to expose raw C structures to
Python and interact with libpq via ctypes (ticket #782).
- 'sql.Identifier' can represent qualified names in SQL composition
(ticket #732).
- Added 'ReplicationCursor.wal_end' attribute (ticket #800).
- Added 'fetch' parameter to 'execute_values()' function (ticket #813).
- 'str()' on 'Range' produces a human-readable representation (ticket #773).
- 'DictCursor' and 'RealDictCursor' rows maintain columns order (ticket #177).
- Added 'severity_nonlocalized' attribute on the 'Diagnostics' object
(ticket #783).
- More efficient 'NamedTupleCursor' (ticket #838).

Bug fixes:

- Fixed connections occasionally broken by the unrelated use of the
multiprocessing module (ticket #829).
- Fixed async communication blocking if results are returned in
different chunks, e.g. with notices interspersed to the results
(ticket #856).
- Fixed adaptation of numeric subclasses such as 'IntEnum' (ticket #591).

Other changes:

- Dropped support for Python 2.6, 3.2, 3.3.
- Dropped 'psycopg1' module.
- Dropped deprecated 'register_tstz_w_secs()' (was previously a no-op).
- Dropped deprecated 'PersistentConnectionPool'. This pool class was mostly
designed to interact with Zope. Use 'ZPsycopgDA.pool' instead.
- Binary packages no longer installed by default. The
'psycopg2-binary' package must be used explicitly.
- Dropped 'PSYCOPG_DISPLAY_SIZE' build parameter.
- Dropped support for mxDateTime as the default date and time adapter.
mxDatetime support continues to be available as an alternative to
Python's builtin datetime.
- No longer use 2to3 during installation for Python 2 & 3
compatibility. All source files are now compatible with Python 2 & 3
as is.
- The 'psycopg2.test' package is no longer installed by 'python
setup.py install'.
- Wheel package compiled against OpenSSL 1.0.2r and PostgreSQL 11.2 libpq.

Browse pgsql-announce by date

  From Date Subject
Next Message Tom Lane 2019-04-04 15:25:35 CVE-2019-9193: Not a Security Vulnerability
Previous Message Akshay Joshi 2019-04-04 11:12:55 pgAdmin 4 v4.4 released