Changelog
### 2.8
```
-------------------------
New features:
- Added `~psycopg2.errors` module. Every PostgreSQL error is converted into
a specific exception class (:ticket:`682`).
- Added `~psycopg2.extensions.encrypt_password()` function (:ticket:`576`).
- Added `~psycopg2.extensions.BYTES` adapter to manage databases with mixed
encodings on Python 3 (:ticket:`835`).
- Added `~psycopg2.extensions.Column.table_oid` and
`~psycopg2.extensions.Column.table_column` attributes on `cursor.description`
items (:ticket:`661`).
- Added `connection.info` object to retrieve various PostgreSQL connection
information (:ticket:`726`).
- Added `~connection.get_native_connection()` to expose the raw ``PGconn``
structure to C extensions via Capsule (:ticket:`782`).
- Added `~connection.pgconn_ptr` and `~cursor.pgresult_ptr` to expose raw
C structures to Python and interact with libpq via ctypes (:ticket:`782`).
- `~psycopg2.sql.Identifier` can represent qualified names in SQL composition
(:ticket:`732`).
- Added `!ReplicationCursor`.\ `~psycopg2.extras.ReplicationCursor.wal_end`
attribute (:ticket:`800`).
- Added *fetch* parameter to `~psycopg2.extras.execute_values()` function
(:ticket:`813`).
- `!str()` on `~psycopg2.extras.Range` produces a human-readable representation
(:ticket:`773`).
- `~psycopg2.extras.DictCursor` and `~psycopg2.extras.RealDictCursor` rows
maintain columns order (:ticket:`177`).
- Added `~psycopg2.extensions.Diagnostics.severity_nonlocalized` attribute on
the `~psycopg2.extensions.Diagnostics` object (:ticket:`783`).
- More efficient `~psycopg2.extras.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 `~enum.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.
```
### 2.7.7
```
^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Cleanup of the cursor results assignment code, which might have solved
double free and inconsistencies in concurrent usage (:tickets:`346, 384`).
- Wheel package compiled against OpenSSL 1.0.2q.
```
### 2.7.6.1
```
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Fixed binary package broken on OS X 10.12 (:ticket:`807`).
- Wheel package compiled against PostgreSQL 11.1 libpq.
```
### 2.7.6
```
^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Close named cursors if exist, even if `~cursor.execute()` wasn't called
(:ticket:`746`).
- Fixed building on modern FreeBSD versions with Python 3.7 (:ticket:`755`).
- Fixed hang trying to :sql:`COPY` via `~cursor.execute()` in asynchronous
connections (:ticket:`781`).
- Fixed adaptation of arrays of empty arrays (:ticket:`788`).
- Fixed segfault accessing the connection's `~connection.readonly` and
`~connection.deferrable` attributes repeatedly (:ticket:`790`).
- `~psycopg2.extras.execute_values()` accepts `~psycopg2.sql.Composable`
objects (:ticket:`794`).
- `~psycopg2.errorcodes` map updated to PostgreSQL 11.
- Wheel package compiled against PostgreSQL 10.5 libpq and OpenSSL 1.0.2p.
```
### 2.7.5
```
^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Allow non-ascii chars in namedtuple fields (regression introduced fixing
:ticket:`211`).
- Fixed adaptation of arrays of arrays of nulls (:ticket:`325`).
- Fixed building on Solaris 11 and derivatives such as SmartOS and illumos
(:ticket:`677`).
- Maybe fixed building on MSYS2 (as reported in :ticket:`658`).
- Allow string subclasses in connection and other places (:ticket:`679`).
- Don't raise an exception closing an unused named cursor (:ticket:`716`).
- Wheel package compiled against PostgreSQL 10.4 libpq and OpenSSL 1.0.2o.
```
### 2.7.4
```
^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Moving away from installing the wheel package by default.
Packages installed from wheel raise a warning on import. Added package
``psycopg2-binary`` to install from wheel instead (:ticket:`543`).
- Convert fields names into valid Python identifiers in
`~psycopg2.extras.NamedTupleCursor` (:ticket:`211`).
- Fixed Solaris 10 support (:ticket:`532`).
- `cursor.mogrify()` can be called on closed cursors (:ticket:`579`).
- Fixed setting session characteristics in corner cases on autocommit
connections (:ticket:`580`).
- Fixed `~psycopg2.extras.MinTimeLoggingCursor` on Python 3 (:ticket:`609`).
- Fixed parsing of array of points as floats (:ticket:`613`).
- Fixed `~psycopg2.__libpq_version__` building with libpq >= 10.1
(:ticket:`632`).
- Fixed `~cursor.rowcount` after `~cursor.executemany()` with :sql:`RETURNING`
statements (:ticket:`633`).
- Fixed compatibility problem with pypy3 (:ticket:`649`).
- Wheel packages compiled against PostgreSQL 10.1 libpq and OpenSSL 1.0.2n.
- Wheel packages for Python 2.6 no more available (support dropped from
wheel building infrastructure).
```
### 2.7.3.2
```
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Wheel package compiled against PostgreSQL 10.0 libpq and OpenSSL 1.0.2l
(:tickets:`601, 602`).
```
### 2.7.3.1
```
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Dropped libresolv from wheel package to avoid incompatibility with
glibc 2.26 (wheels ticket 2).
```
### 2.7.3
```
^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Restored default :sql:`timestamptz[]` typecasting to Python `!datetime`.
Regression introduced in Psycopg 2.7.2 (:ticket:`578`).
```
### 2.7.2
```
^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Fixed inconsistent state in externally closed connections
(:tickets:`263, 311, 443`). Was fixed in 2.6.2 but not included in
2.7 by mistake.
- Fixed Python exceptions propagation in green callback (:ticket:`410`).
- Don't display the password in `connection.dsn` when the connection
string is specified as an URI (:ticket:`528`).
- Return objects with timezone parsing "infinity" :sql:`timestamptz`
(:ticket:`536`).
- Dropped dependency on VC9 runtime on Windows binary packages
(:ticket:`541`).
- Fixed segfault in `~connection.lobject()` when *mode*\=\ `!None`
(:ticket:`544`).
- Fixed `~connection.lobject()` keyword argument *lobject_factory*
(:ticket:`545`).
- Fixed `~psycopg2.extras.ReplicationCursor.consume_stream()`
*keepalive_interval* argument (:ticket:`547`).
- Maybe fixed random import error on Python 3.6 in multiprocess
environment (:ticket:`550`).
- Fixed random `!SystemError` upon receiving abort signal (:ticket:`551`).
- Accept `~psycopg2.sql.Composable` objects in
`~psycopg2.extras.ReplicationCursor.start_replication_expert()`
(:ticket:`554`).
- Parse intervals returned as microseconds from Redshift (:ticket:`558`).
- Added `~psycopg2.extras.Json` `!prepare()` method to consider connection
params when adapting (:ticket:`562`).
- `~psycopg2.errorcodes` map updated to PostgreSQL 10 beta 1.
```
Links
- PyPI: https://pypi.org/project/psycopg2
- Changelog: https://pyup.io/changelogs/psycopg2/
- Homepage: http://initd.org/psycopg/
This PR updates psycopg2 from 2.7.1 to 2.8.
Changelog
### 2.8 ``` ------------------------- New features: - Added `~psycopg2.errors` module. Every PostgreSQL error is converted into a specific exception class (:ticket:`682`). - Added `~psycopg2.extensions.encrypt_password()` function (:ticket:`576`). - Added `~psycopg2.extensions.BYTES` adapter to manage databases with mixed encodings on Python 3 (:ticket:`835`). - Added `~psycopg2.extensions.Column.table_oid` and `~psycopg2.extensions.Column.table_column` attributes on `cursor.description` items (:ticket:`661`). - Added `connection.info` object to retrieve various PostgreSQL connection information (:ticket:`726`). - Added `~connection.get_native_connection()` to expose the raw ``PGconn`` structure to C extensions via Capsule (:ticket:`782`). - Added `~connection.pgconn_ptr` and `~cursor.pgresult_ptr` to expose raw C structures to Python and interact with libpq via ctypes (:ticket:`782`). - `~psycopg2.sql.Identifier` can represent qualified names in SQL composition (:ticket:`732`). - Added `!ReplicationCursor`.\ `~psycopg2.extras.ReplicationCursor.wal_end` attribute (:ticket:`800`). - Added *fetch* parameter to `~psycopg2.extras.execute_values()` function (:ticket:`813`). - `!str()` on `~psycopg2.extras.Range` produces a human-readable representation (:ticket:`773`). - `~psycopg2.extras.DictCursor` and `~psycopg2.extras.RealDictCursor` rows maintain columns order (:ticket:`177`). - Added `~psycopg2.extensions.Diagnostics.severity_nonlocalized` attribute on the `~psycopg2.extensions.Diagnostics` object (:ticket:`783`). - More efficient `~psycopg2.extras.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 `~enum.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. ``` ### 2.7.7 ``` ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - Cleanup of the cursor results assignment code, which might have solved double free and inconsistencies in concurrent usage (:tickets:`346, 384`). - Wheel package compiled against OpenSSL 1.0.2q. ``` ### 2.7.6.1 ``` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - Fixed binary package broken on OS X 10.12 (:ticket:`807`). - Wheel package compiled against PostgreSQL 11.1 libpq. ``` ### 2.7.6 ``` ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - Close named cursors if exist, even if `~cursor.execute()` wasn't called (:ticket:`746`). - Fixed building on modern FreeBSD versions with Python 3.7 (:ticket:`755`). - Fixed hang trying to :sql:`COPY` via `~cursor.execute()` in asynchronous connections (:ticket:`781`). - Fixed adaptation of arrays of empty arrays (:ticket:`788`). - Fixed segfault accessing the connection's `~connection.readonly` and `~connection.deferrable` attributes repeatedly (:ticket:`790`). - `~psycopg2.extras.execute_values()` accepts `~psycopg2.sql.Composable` objects (:ticket:`794`). - `~psycopg2.errorcodes` map updated to PostgreSQL 11. - Wheel package compiled against PostgreSQL 10.5 libpq and OpenSSL 1.0.2p. ``` ### 2.7.5 ``` ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - Allow non-ascii chars in namedtuple fields (regression introduced fixing :ticket:`211`). - Fixed adaptation of arrays of arrays of nulls (:ticket:`325`). - Fixed building on Solaris 11 and derivatives such as SmartOS and illumos (:ticket:`677`). - Maybe fixed building on MSYS2 (as reported in :ticket:`658`). - Allow string subclasses in connection and other places (:ticket:`679`). - Don't raise an exception closing an unused named cursor (:ticket:`716`). - Wheel package compiled against PostgreSQL 10.4 libpq and OpenSSL 1.0.2o. ``` ### 2.7.4 ``` ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - Moving away from installing the wheel package by default. Packages installed from wheel raise a warning on import. Added package ``psycopg2-binary`` to install from wheel instead (:ticket:`543`). - Convert fields names into valid Python identifiers in `~psycopg2.extras.NamedTupleCursor` (:ticket:`211`). - Fixed Solaris 10 support (:ticket:`532`). - `cursor.mogrify()` can be called on closed cursors (:ticket:`579`). - Fixed setting session characteristics in corner cases on autocommit connections (:ticket:`580`). - Fixed `~psycopg2.extras.MinTimeLoggingCursor` on Python 3 (:ticket:`609`). - Fixed parsing of array of points as floats (:ticket:`613`). - Fixed `~psycopg2.__libpq_version__` building with libpq >= 10.1 (:ticket:`632`). - Fixed `~cursor.rowcount` after `~cursor.executemany()` with :sql:`RETURNING` statements (:ticket:`633`). - Fixed compatibility problem with pypy3 (:ticket:`649`). - Wheel packages compiled against PostgreSQL 10.1 libpq and OpenSSL 1.0.2n. - Wheel packages for Python 2.6 no more available (support dropped from wheel building infrastructure). ``` ### 2.7.3.2 ``` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - Wheel package compiled against PostgreSQL 10.0 libpq and OpenSSL 1.0.2l (:tickets:`601, 602`). ``` ### 2.7.3.1 ``` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - Dropped libresolv from wheel package to avoid incompatibility with glibc 2.26 (wheels ticket 2). ``` ### 2.7.3 ``` ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - Restored default :sql:`timestamptz[]` typecasting to Python `!datetime`. Regression introduced in Psycopg 2.7.2 (:ticket:`578`). ``` ### 2.7.2 ``` ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - Fixed inconsistent state in externally closed connections (:tickets:`263, 311, 443`). Was fixed in 2.6.2 but not included in 2.7 by mistake. - Fixed Python exceptions propagation in green callback (:ticket:`410`). - Don't display the password in `connection.dsn` when the connection string is specified as an URI (:ticket:`528`). - Return objects with timezone parsing "infinity" :sql:`timestamptz` (:ticket:`536`). - Dropped dependency on VC9 runtime on Windows binary packages (:ticket:`541`). - Fixed segfault in `~connection.lobject()` when *mode*\=\ `!None` (:ticket:`544`). - Fixed `~connection.lobject()` keyword argument *lobject_factory* (:ticket:`545`). - Fixed `~psycopg2.extras.ReplicationCursor.consume_stream()` *keepalive_interval* argument (:ticket:`547`). - Maybe fixed random import error on Python 3.6 in multiprocess environment (:ticket:`550`). - Fixed random `!SystemError` upon receiving abort signal (:ticket:`551`). - Accept `~psycopg2.sql.Composable` objects in `~psycopg2.extras.ReplicationCursor.start_replication_expert()` (:ticket:`554`). - Parse intervals returned as microseconds from Redshift (:ticket:`558`). - Added `~psycopg2.extras.Json` `!prepare()` method to consider connection params when adapting (:ticket:`562`). - `~psycopg2.errorcodes` map updated to PostgreSQL 10 beta 1. ```Links
- PyPI: https://pypi.org/project/psycopg2 - Changelog: https://pyup.io/changelogs/psycopg2/ - Homepage: http://initd.org/psycopg/