]> git.ipfire.org Git - thirdparty/psycopg.git/log
thirdparty/psycopg.git
2 days agofix: don't call str(self) or imported objects in __del__ master
Daniele Varrazzo [Wed, 30 Apr 2025 00:37:23 +0000 (02:37 +0200)] 
fix: don't call str(self) or imported objects in __del__

We easily end up trying to access resources already unavailable in the
objects representation. In Python 3.14 this seems to happen aggressively
(or maybe it's just more visible because testing a dev version).

2 days agofix: change signature of SQL.join() to allow a sequence of Any
Daniele Varrazzo [Tue, 20 May 2025 15:06:06 +0000 (17:06 +0200)] 
fix: change signature of SQL.join() to allow a sequence of Any

We declared accepting a sequence of Composable, but, because we passed
the joined values to `Composite`, actually non-composable were
interpreted as `Literal`.

Make this behaviour explicit by testing it and fixing the signature.

2 days agochore: run isort before other hooks
Daniele Varrazzo [Mon, 12 May 2025 15:13:57 +0000 (17:13 +0200)] 
chore: run isort before other hooks

It's quicker to fail than mypy.

2 days agoMerge branch 'fix-jsonb-function-caching-master'
Daniele Varrazzo [Sat, 5 Jul 2025 17:07:52 +0000 (19:07 +0200)] 
Merge branch 'fix-jsonb-function-caching-master'

2 days agofix(json): don't leak when lambdas are used as dumps/loads function
Daniele Varrazzo [Fri, 4 Jul 2025 18:00:43 +0000 (20:00 +0200)] 
fix(json): don't leak when lambdas are used as dumps/loads function

Cache functions on the code, not on the function identity itself:
different lambdas or local functions are different objects but he
underlying code object is the same.

Avoid caching if the function is a closure because it then becomes a can
of worms (if the argument is not hashable etc). Throw a warning in that
case.

Fix #1108

fix(json): don't leak when lambdas are used as loads function

2 days agofix: add missing interface for PGconn.protocol_version
Daniele Varrazzo [Sat, 5 Jul 2025 13:22:12 +0000 (15:22 +0200)] 
fix: add missing interface for PGconn.protocol_version

4 weeks agoMerge branch 'fix-1088'
Daniele Varrazzo [Wed, 4 Jun 2025 19:09:09 +0000 (20:09 +0100)] 
Merge branch 'fix-1088'

4 weeks agoci: cancel concurrent binary build jobs
Daniele Varrazzo [Wed, 4 Jun 2025 15:40:29 +0000 (16:40 +0100)] 
ci: cancel concurrent binary build jobs

4 weeks agodocs: mention fix in version 3.2.9
Daniele Varrazzo [Tue, 13 May 2025 14:07:47 +0000 (16:07 +0200)] 
docs: mention fix in version 3.2.9

4 weeks agoRevert "ci: install win32 libpq from conda force"
Daniele Varrazzo [Wed, 4 Jun 2025 15:38:36 +0000 (16:38 +0100)] 
Revert "ci: install win32 libpq from conda force"

This reverts commit a05131ded8f1ec1816528341c5453fd586e70a4b.

Fix #1088

5 weeks agotest: skip tests connecting to non-existing dbs for CRDB
Daniele Varrazzo [Mon, 2 Jun 2025 12:43:38 +0000 (13:43 +0100)] 
test: skip tests connecting to non-existing dbs for CRDB

For CRDB, every database exists.

5 weeks agotest: make sure tests don't hang if default connection points to a closed port
Daniele Varrazzo [Mon, 2 Jun 2025 10:37:26 +0000 (11:37 +0100)] 
test: make sure tests don't hang if default connection points to a closed port

They might hang is the server doesn't accept connections on the standard
port.

Tested by forcing the default connection to go to an unresponsive port,
using:

    export PGHOST=192.0.2.1
    export PSYCOPG_TEST_DSN="host=localhost dbname=psycopg_test"

and fixing all the tests hanging because they try to connect to the
unroutable hostname, not taking into account the test dsn.

5 weeks agochore: bump mypy version
Daniele Varrazzo [Fri, 30 May 2025 21:30:45 +0000 (22:30 +0100)] 
chore: bump mypy version

5 weeks agodocs(pool): fix random connection lifetime reduction: 5%, not 10%
Daniele Varrazzo [Thu, 29 May 2025 18:32:40 +0000 (19:32 +0100)] 
docs(pool): fix random connection lifetime reduction: 5%, not 10%

Close #1100.

5 weeks agodocs: fix errors in template strings docs
Daniele Varrazzo [Tue, 27 May 2025 16:34:29 +0000 (17:34 +0100)] 
docs: fix errors in template strings docs

6 weeks agodocs: fix typo
Daniele Varrazzo [Mon, 26 May 2025 01:43:00 +0000 (02:43 +0100)] 
docs: fix typo

6 weeks agodocs: add preview of template strings query documentation
Daniele Varrazzo [Sun, 25 May 2025 22:22:13 +0000 (23:22 +0100)] 
docs: add preview of template strings query documentation

6 weeks agochore: bump Cython version
Daniele Varrazzo [Wed, 21 May 2025 16:54:43 +0000 (18:54 +0200)] 
chore: bump Cython version

Skip version 3.1.0 because of https://github.com/cython/cython/issues/6850
I understand that >= 3.1.0 is required for the free threading support (#1096).

6 weeks agofix(test): wait for thread end before reading process stdout
Daniele Varrazzo [Wed, 21 May 2025 09:34:50 +0000 (11:34 +0200)] 
fix(test): wait for thread end before reading process stdout

Should solve what seems a race condition on PyPy and free-threaded
Python (see #1096).

8 weeks agodocs: cleanup logging section
Daniele Varrazzo [Mon, 12 May 2025 08:10:41 +0000 (10:10 +0200)] 
docs: cleanup logging section

As per kind dive-by review in #1085.

8 weeks agorefactor(pool): add function wrapper to call either async/sync version
Daniele Varrazzo [Sun, 11 May 2025 19:09:06 +0000 (21:09 +0200)] 
refactor(pool): add function wrapper to call either async/sync version

8 weeks agochore: use the github url in update_errors
Daniele Varrazzo [Sun, 11 May 2025 20:33:29 +0000 (22:33 +0200)] 
chore: use the github url in update_errors

The official repo raises a 429 and doesn't allow to download blobs
anymore.

8 weeks agochore: bump psycopg package version to 3.2.8
Daniele Varrazzo [Sun, 11 May 2025 11:35:06 +0000 (13:35 +0200)] 
chore: bump psycopg package version to 3.2.8

8 weeks agoci: avoid running jobs on pull requests
Daniele Varrazzo [Sun, 11 May 2025 12:06:55 +0000 (14:06 +0200)] 
ci: avoid running jobs on pull requests

Jobs run anyway on push. This setting results in duplicate runs.

8 weeks agoci: make sure versions are strings, not floats
Daniele Varrazzo [Sun, 11 May 2025 10:45:56 +0000 (12:45 +0200)] 
ci: make sure versions are strings, not floats

8 weeks agochore: add funding link to project metadata
Daniele Varrazzo [Sat, 10 May 2025 19:58:27 +0000 (21:58 +0200)] 
chore: add funding link to project metadata

8 weeks agofix(c): fix building on 32 bit with libpq 18
Daniele Varrazzo [Sat, 10 May 2025 16:27:50 +0000 (18:27 +0200)] 
fix(c): fix building on 32 bit with libpq 18

The previous code was protected by a HAVE_LONG_INT_64 macro.

8 weeks agochore(binary): bump OpenSSL to 3.5.0
Daniele Varrazzo [Sat, 10 May 2025 15:55:05 +0000 (17:55 +0200)] 
chore(binary): bump OpenSSL to 3.5.0

On Windows the libpq 17.5 package depends on it.

8 weeks agochore(binary): bump libpq to 17.5 in binary packages
Daniele Varrazzo [Sat, 10 May 2025 13:30:00 +0000 (15:30 +0200)] 
chore(binary): bump libpq to 17.5 in binary packages

8 weeks agoMerge pull request #1085 from psycopg/better-logging
Daniele Varrazzo [Sat, 10 May 2025 13:13:41 +0000 (14:13 +0100)] 
Merge pull request #1085 from psycopg/better-logging

Better logging

8 weeks agodocs: add section about connection logging 1085/head
Daniele Varrazzo [Sat, 10 May 2025 02:55:45 +0000 (04:55 +0200)] 
docs: add section about connection logging

8 weeks agorefactor: more succinct expression for multiple attempts error
Daniele Varrazzo [Fri, 9 May 2025 01:14:16 +0000 (03:14 +0200)] 
refactor: more succinct expression for multiple attempts error

8 weeks agofeat: restore connection attempts logging
Daniele Varrazzo [Fri, 9 May 2025 00:48:25 +0000 (02:48 +0200)] 
feat: restore connection attempts logging

It was deleted in #1076, with the introduction of the multi-message
exception but it is still useful, looking at #888.

8 weeks agoci: add Django LTS 5.2 3rd party integration test
Daniele Varrazzo [Sat, 10 May 2025 02:22:26 +0000 (04:22 +0200)] 
ci: add Django LTS 5.2 3rd party integration test

8 weeks agoci: fix 3rd party test after the pip django package went lowercase
Daniele Varrazzo [Sat, 10 May 2025 02:11:29 +0000 (04:11 +0200)] 
ci: fix 3rd party test after the pip django package went lowercase

8 weeks agoMerge branch 'libpq-v18'
Daniele Varrazzo [Fri, 9 May 2025 23:27:42 +0000 (01:27 +0200)] 
Merge branch 'libpq-v18'

8 weeks agoci: include PostgreSQL 18 libpq in tests
Daniele Varrazzo [Fri, 9 May 2025 22:00:52 +0000 (00:00 +0200)] 
ci: include PostgreSQL 18 libpq in tests

8 weeks agofix: fix building with PostgreSQL v18 libpq
Daniele Varrazzo [Fri, 9 May 2025 13:00:34 +0000 (15:00 +0200)] 
fix: fix building with PostgreSQL v18 libpq

Use 64 bits support from C99 types.

Fix #1082

8 weeks agochore(tests): import module only locally as it won't be imported/used in C
Daniele Varrazzo [Fri, 9 May 2025 14:36:55 +0000 (16:36 +0200)] 
chore(tests): import module only locally as it won't be imported/used in C

8 weeks agochore: import module to avoid confusing mypy situations
Daniele Varrazzo [Fri, 9 May 2025 14:34:37 +0000 (16:34 +0200)] 
chore: import module to avoid confusing mypy situations

8 weeks agoMerge pull request #1078 from psycopg/port-may-be-none
Daniele Varrazzo [Fri, 9 May 2025 13:10:33 +0000 (14:10 +0100)] 
Merge pull request #1078 from psycopg/port-may-be-none

Fix port upon empty return from the libpq

8 weeks agofix: avoid a blank "port=" in the repr() of object with connection 1078/head
Daniele Varrazzo [Thu, 8 May 2025 20:47:50 +0000 (22:47 +0200)] 
fix: avoid a blank "port=" in the repr() of object with connection

8 weeks agofix: return the compiled port if PQport returns an empty string
Daniele Varrazzo [Thu, 8 May 2025 17:09:08 +0000 (19:09 +0200)] 
fix: return the compiled port if PQport returns an empty string

Looking at the docs this seems the default value when an empty string is
specified, as opposite as the value in the PGPORT env var. See
<https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNECT-PORT>.

This change is an improvement on top of 40dfa0b, where we allowed PGport
to return NULL. This is likely a libpq bug (reported in
<https://www.postgresql.org/message-id/CA%2Bmi_8YTS8WPZPO0PAb2aaGLwHuQ0DEQRF0ZMnvWss4y9FwDYQ%40mail.gmail.com>)
but now it's in the wild so we better support it rather than dying of
assert or by int()'ing an empty string.

8 weeks agotest: actually test server cursors when row makers return None
Daniele Varrazzo [Fri, 9 May 2025 11:10:46 +0000 (13:10 +0200)] 
test: actually test server cursors when row makers return None

8 weeks agofix(c): don't use Cython 3.1 or following to build the extension
Daniele Varrazzo [Thu, 8 May 2025 23:47:26 +0000 (01:47 +0200)] 
fix(c): don't use Cython 3.1 or following to build the extension

The resulting module seems affected by a memory leak.

https://github.com/cython/cython/issues/6850

8 weeks agoMerge pull request #1074 from embecka/master
Daniele Varrazzo [Thu, 8 May 2025 21:06:05 +0000 (22:06 +0100)] 
Merge pull request #1074 from embecka/master

Fix loading of rows when row maker returns None

8 weeks agodocs: add release notes entry about row maker returning none fixed 1074/head
Martin Baláž [Thu, 8 May 2025 00:03:01 +0000 (02:03 +0200)] 
docs: add release notes entry about row maker returning none fixed

8 weeks agotest: test behaviour of cursors with a row maker returning None
Martin Baláž [Wed, 7 May 2025 20:10:06 +0000 (22:10 +0200)] 
test: test behaviour of cursors with a row maker returning None

8 weeks agofix: fix loading of rows when row maker returns None
Martin Baláž [Wed, 7 May 2025 15:25:13 +0000 (17:25 +0200)] 
fix: fix loading of rows when row maker returns None

Close #1073

8 weeks agoMerge pull request #1076 from danielfrankcom/dev/danielfrankcom/show-all-connection...
Daniele Varrazzo [Thu, 8 May 2025 05:10:48 +0000 (06:10 +0100)] 
Merge pull request #1076 from danielfrankcom/dev/danielfrankcom/show-all-connection-errors

fix: show all messages associated with connection failures

8 weeks agofix: show all connection errors on attempt failure 1076/head
Daniel Frankcom [Wed, 7 May 2025 23:20:43 +0000 (16:20 -0700)] 
fix: show all connection errors on attempt failure

2 months agoci: test integration of pool package with previous psycopg version
Daniele Varrazzo [Wed, 7 May 2025 02:45:14 +0000 (04:45 +0200)] 
ci: test integration of pool package with previous psycopg version

2 months agotest: allow running tests with old psycopg versions
Daniele Varrazzo [Wed, 7 May 2025 22:50:31 +0000 (00:50 +0200)] 
test: allow running tests with old psycopg versions

2 months agoMerge pull request #1077 from psycopg/no-attempts-after-ctrl-c
Daniele Varrazzo [Wed, 7 May 2025 23:13:04 +0000 (00:13 +0100)] 
Merge pull request #1077 from psycopg/no-attempts-after-ctrl-c

Stop processing connection attempts after pressing Ctrl-C

2 months agofix: don't process further attempt if ctrl-c is pressed during connection 1077/head
Daniele Varrazzo [Wed, 7 May 2025 21:39:20 +0000 (23:39 +0200)] 
fix: don't process further attempt if ctrl-c is pressed during connection

See for example #1055 where this behaviour is reported, #1076 where it
is further discussed.

2 months agofix: remove assert calling informative libpq function
Daniele Varrazzo [Wed, 7 May 2025 21:40:23 +0000 (23:40 +0200)] 
fix: remove assert calling informative libpq function

At least calling PQport on a connection with multiple attempts ends up
returning a NULL instead of an empty string (libpq from Postgres 17.4).

2 months agoMerge branch 'fix-1071'
Daniele Varrazzo [Wed, 7 May 2025 18:21:14 +0000 (20:21 +0200)] 
Merge branch 'fix-1071'

2 months agofix[c]: fix interval parsing with day/month/year and negative time
Daniele Varrazzo [Wed, 7 May 2025 14:01:01 +0000 (16:01 +0200)] 
fix[c]: fix interval parsing with day/month/year and negative time

Close #1071

2 months agoMerge branch 'cleanup-py310'
Daniele Varrazzo [Wed, 7 May 2025 18:19:10 +0000 (20:19 +0200)] 
Merge branch 'cleanup-py310'

2 months agochore: bump build packages versions
Daniele Varrazzo [Wed, 7 May 2025 11:05:49 +0000 (13:05 +0200)] 
chore: bump build packages versions

Update packages metadata following PEP 639 license documentation.

2 months agofix(test): work around error with issubclass(collections.ablc.Callable)
Daniele Varrazzo [Wed, 7 May 2025 10:43:23 +0000 (12:43 +0200)] 
fix(test): work around error with issubclass(collections.ablc.Callable)

Reproduced only on Python 3.10

2 months agostyle: drop string type aliases
Daniele Varrazzo [Wed, 7 May 2025 01:59:05 +0000 (03:59 +0200)] 
style: drop string type aliases

2 months agochore: drop redundant brackets
Daniele Varrazzo [Wed, 7 May 2025 01:55:12 +0000 (03:55 +0200)] 
chore: drop redundant brackets

2 months agochore: drop use of deprecated aliases
Daniele Varrazzo [Wed, 7 May 2025 01:54:21 +0000 (03:54 +0200)] 
chore: drop use of deprecated aliases

2 months agochore: drop pre-3.10 compatibility hacks
Daniele Varrazzo [Wed, 7 May 2025 01:44:46 +0000 (03:44 +0200)] 
chore: drop pre-3.10 compatibility hacks

2 months agoMerge pull request #1064 from psycopg/cursor-next
Daniele Varrazzo [Sun, 4 May 2025 21:33:29 +0000 (22:33 +0100)] 
Merge pull request #1064 from psycopg/cursor-next

Add support for `next(cursor)`

2 months agofeat: make cursors iterators 1064/head
Daniele Varrazzo [Sat, 3 May 2025 02:07:37 +0000 (04:07 +0200)] 
feat: make cursors iterators

This allows to call `next(cursor)`, which is guaranteed to never return
None, making type checking simpler.

2 months agoMerge branch 'fix-server-cursor-rownumber'
Daniele Varrazzo [Sun, 4 May 2025 18:54:58 +0000 (20:54 +0200)] 
Merge branch 'fix-server-cursor-rownumber'

2 months agofix: fix AsyncClientCursor.rownumber after scroll()
Daniele Varrazzo [Sun, 4 May 2025 17:03:38 +0000 (19:03 +0200)] 
fix: fix AsyncClientCursor.rownumber after scroll()

2 months agorefactor: auto-generate sync server cursor from async
Daniele Varrazzo [Sun, 4 May 2025 16:44:29 +0000 (18:44 +0200)] 
refactor: auto-generate sync server cursor from async

2 months agorefactor: split async/sync server cursor in two modules
Daniele Varrazzo [Sun, 4 May 2025 16:30:34 +0000 (18:30 +0200)] 
refactor: split async/sync server cursor in two modules

2 months agorefactor(test): better parametrization of fetch type tests
Daniele Varrazzo [Sat, 3 May 2025 01:31:27 +0000 (03:31 +0200)] 
refactor(test): better parametrization of fetch type tests

2 months agodocs: reword unclear news entry
Daniele Varrazzo [Sun, 4 May 2025 16:17:17 +0000 (18:17 +0200)] 
docs: reword unclear news entry

2 months agofix: improve error message trying to fetch from a no recordset result
Daniele Varrazzo [Fri, 2 May 2025 22:18:10 +0000 (00:18 +0200)] 
fix: improve error message trying to fetch from a no recordset result

Print the last command status with the error. For example:

    the last operation didn't produce records (command status: NOTIFY)

or, if the result doesn't even have a command status:

    the last operation didn't produce records (result status: EMPTY_QUERY)

2 months agochore: drop support for Python 3.9
Jero Bado [Thu, 1 May 2025 05:09:19 +0000 (13:09 +0800)] 
chore: drop support for Python 3.9

Close #1056.

2 months agochore: test support for PyPY 3.11
Daniele Varrazzo [Sun, 4 May 2025 11:27:49 +0000 (13:27 +0200)] 
chore: test support for PyPY 3.11

2 months agoMerge branch 'fix-from-ticks-functions'
Daniele Varrazzo [Sun, 4 May 2025 10:59:08 +0000 (12:59 +0200)] 
Merge branch 'fix-from-ticks-functions'

2 months agofix: fix return value of `DateFromTicks` and `TimeFromTicks` 1061/head
Daniele Varrazzo [Thu, 1 May 2025 17:38:18 +0000 (19:38 +0200)] 
fix: fix return value of `DateFromTicks` and `TimeFromTicks`

These function are based on the return value of `TimestampFromTicks`.
Because this value returned by this function is timezone-aware and
localized to the current timezone, truncating the value (and implicitly
losing the timezone) might return the wrong result.

For example, at tick 0, in NY, it was 1969-12-31T19:00-05:00. By
truncating the timestamp on the date, the date would be the 1969-12-31
instead of the expected 1970-01-01.

This changeset actually changes `TimestampFromTicks` to return an UTC
timestamp instead of a local timestamp. We believe that this change is
not a problem because we don't change neither the type (tz-aware
datetime) nor the value of the returned object (old and new values
compare equal). An alternative would have been to decouple the Timestamp
function from the Date/Time functions, but I think it would be confusing
if the Timestamp function returned a datetime with the date in 1969 but the
Date function returned a date in 1970.

Adjust the tests to be *stricter* than before, making use of the fact
that now the output is not affected by the local timezone.

Close #1058.

2 months agodocs: use "result set" consistently
Fedor Kobak [Sun, 4 May 2025 10:52:23 +0000 (13:52 +0300)] 
docs: use "result set" consistently

fix `statusmessage` docs to reflect the fact that it refers to the current result, not the last one, as it was in psycopg2. Improve docs consistency about other attributes which might be affected by current result.

See #1062.

2 months agochore(deps): bump the actions group with 2 updates
dependabot[bot] [Thu, 1 May 2025 07:13:04 +0000 (07:13 +0000)] 
chore(deps): bump the actions group with 2 updates

Bumps the actions group with 2 updates: [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) and [prefix-dev/setup-pixi](https://github.com/prefix-dev/setup-pixi).

Updates `pypa/cibuildwheel` from 2.23.2 to 2.23.3
- [Release notes](https://github.com/pypa/cibuildwheel/releases)
- [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md)
- [Commits](https://github.com/pypa/cibuildwheel/compare/v2.23.2...v2.23.3)

Updates `prefix-dev/setup-pixi` from 0.8.4 to 0.8.8
- [Release notes](https://github.com/prefix-dev/setup-pixi/releases)
- [Commits](https://github.com/prefix-dev/setup-pixi/compare/v0.8.4...v0.8.8)

---
updated-dependencies:
- dependency-name: pypa/cibuildwheel
  dependency-version: 2.23.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: prefix-dev/setup-pixi
  dependency-version: 0.8.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2 months agoMerge branch 'connection-log'
Daniele Varrazzo [Wed, 30 Apr 2025 13:05:26 +0000 (15:05 +0200)] 
Merge branch 'connection-log'

2 months agochore: add connection debugging log in the C extension too
Daniele Varrazzo [Tue, 29 Apr 2025 16:15:19 +0000 (18:15 +0200)] 
chore: add connection debugging log in the C extension too

2 months agochore: add debug logging at connection time
Daniele Varrazzo [Tue, 29 Apr 2025 14:14:40 +0000 (16:14 +0200)] 
chore: add debug logging at connection time

Only added to the Python implementation for the moment.

See #888

2 months agofix: guard from unexpected connection status on repr
Daniele Varrazzo [Tue, 29 Apr 2025 14:16:10 +0000 (16:16 +0200)] 
fix: guard from unexpected connection status on repr

2 months agodocs: add link to pre-commit project in readme.
Daniele Varrazzo [Wed, 30 Apr 2025 13:03:47 +0000 (15:03 +0200)] 
docs: add link to pre-commit project in readme.

Also reflow a paragraph because it seems that the `-e` at the beginning of
the line introduces a line break in the Github rendering of the readme.

2 months agodocs: drop references to Scaleway build scripts
Daniele Varrazzo [Tue, 29 Apr 2025 12:39:29 +0000 (14:39 +0200)] 
docs: drop references to Scaleway build scripts

2 months agochore: drop scaleway build support
Daniele Varrazzo [Tue, 29 Apr 2025 12:37:14 +0000 (14:37 +0200)] 
chore: drop scaleway build support

We are now building arm64 packages on Github Action runners

2 months agochore: bump psycopg package version to 3.2.7
Daniele Varrazzo [Tue, 29 Apr 2025 12:14:59 +0000 (14:14 +0200)] 
chore: bump psycopg package version to 3.2.7

2 months agotest(pool): verify the overriding of `close()` to act as `putconn()`
Daniele Varrazzo [Wed, 16 Apr 2025 18:57:37 +0000 (20:57 +0200)] 
test(pool): verify the overriding of `close()` to act as `putconn()`

We would like to maintain this possibility on a best-effort basis. The
hack has been mentioned in #1046 and upstream in
https://github.com/sqlalchemy/sqlalchemy/discussions/12522 and is useful
to integrate psycopg pool with the SQLAlchemy NullPool.

2 months agodocs: document multiple statements limitations
Daniele Varrazzo [Wed, 9 Apr 2025 14:38:17 +0000 (15:38 +0100)] 
docs: document multiple statements limitations

Close #1020.

2 months agoMerge pull request #1031 from Zaczero/binary-hstore
Daniele Varrazzo [Wed, 9 Apr 2025 14:16:33 +0000 (15:16 +0100)] 
Merge pull request #1031 from Zaczero/binary-hstore

Support binary protocol for hstore

2 months agofeat: implement binary hstore protocol 1031/head
Kamil Monicz [Fri, 21 Mar 2025 16:47:02 +0000 (16:47 +0000)] 
feat: implement binary hstore protocol

2 months agotest(crdb): add test reproducing failure with prepared create statement
Daniele Varrazzo [Tue, 18 Mar 2025 14:46:35 +0000 (15:46 +0100)] 
test(crdb): add test reproducing failure with prepared create statement

See #1009

2 months agoci(crdb): pull stable crdb images from crdb docker repository
Daniele Varrazzo [Tue, 18 Mar 2025 15:21:04 +0000 (16:21 +0100)] 
ci(crdb): pull stable crdb images from crdb docker repository

2 months agostyle: define a symbolic const for null values in array
Daniele Varrazzo [Sat, 5 Apr 2025 09:41:21 +0000 (10:41 +0100)] 
style: define a symbolic const for null values in array

3 months agochore: drop unneeded nonlocal declarations
Daniele Varrazzo [Thu, 3 Apr 2025 11:07:46 +0000 (12:07 +0100)] 
chore: drop unneeded nonlocal declarations

Flagged by flake8 7.2

3 months agoMerge branch 'walrusify'
Daniele Varrazzo [Thu, 3 Apr 2025 10:56:27 +0000 (11:56 +0100)] 
Merge branch 'walrusify'

3 months agorefactor: use assignment expressions in loops with assignment and break 1035/head
Daniele Varrazzo [Thu, 27 Mar 2025 16:36:29 +0000 (17:36 +0100)] 
refactor: use assignment expressions in loops with assignment and break

3 months agorefactor: use the assignment operator in assignments followed by an if
Daniele Varrazzo [Thu, 27 Mar 2025 00:25:49 +0000 (01:25 +0100)] 
refactor: use the assignment operator in assignments followed by an if

3 months agochore(deps): bump the actions group with 2 updates
dependabot[bot] [Tue, 1 Apr 2025 07:17:44 +0000 (07:17 +0000)] 
chore(deps): bump the actions group with 2 updates

Bumps the actions group with 2 updates: [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) and [prefix-dev/setup-pixi](https://github.com/prefix-dev/setup-pixi).

Updates `pypa/cibuildwheel` from 2.22.0 to 2.23.2
- [Release notes](https://github.com/pypa/cibuildwheel/releases)
- [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md)
- [Commits](https://github.com/pypa/cibuildwheel/compare/v2.22.0...v2.23.2)

Updates `prefix-dev/setup-pixi` from 0.8.3 to 0.8.4
- [Release notes](https://github.com/prefix-dev/setup-pixi/releases)
- [Commits](https://github.com/prefix-dev/setup-pixi/compare/v0.8.3...v0.8.4)

---
updated-dependencies:
- dependency-name: pypa/cibuildwheel
  dependency-version: 2.23.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
- dependency-name: prefix-dev/setup-pixi
  dependency-version: 0.8.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>