]> git.ipfire.org Git - thirdparty/psycopg.git/log
thirdparty/psycopg.git
21 months agorefactor(pool): generate null pool module from async counterpart
Daniele Varrazzo [Thu, 5 Oct 2023 02:06:34 +0000 (04:06 +0200)] 
refactor(pool): generate null pool module from async counterpart

21 months agorefactor(pool): move null pool base to its own module
Daniele Varrazzo [Thu, 5 Oct 2023 01:58:57 +0000 (03:58 +0200)] 
refactor(pool): move null pool base to its own module

And some more light refactoring.

21 months agorefactor(pool): generate pool sync module from async counterpart
Daniele Varrazzo [Thu, 5 Oct 2023 01:40:28 +0000 (03:40 +0200)] 
refactor(pool): generate pool sync module from async counterpart

21 months agorefactor(pool): add Worker/AWorker type aliases
Daniele Varrazzo [Thu, 5 Oct 2023 00:57:08 +0000 (02:57 +0200)] 
refactor(pool): add Worker/AWorker type aliases

With these we don't have direct dependencies on the asyncio and
threading modules in the pool classes.

21 months agorefactor(pool): give sync attribute the same life cycle of the async one
Daniele Varrazzo [Thu, 5 Oct 2023 00:43:50 +0000 (02:43 +0200)] 
refactor(pool): give sync attribute the same life cycle of the async one

Create possibly async objects only after we are sure that a loop is
running.

21 months agorefactor(pool): use non-string typing annotations
Daniele Varrazzo [Thu, 5 Oct 2023 00:22:20 +0000 (02:22 +0200)] 
refactor(pool): use non-string typing annotations

21 months agorefactor(pool): add functions to get current thread/task name
Daniele Varrazzo [Thu, 5 Oct 2023 00:21:15 +0000 (02:21 +0200)] 
refactor(pool): add functions to get current thread/task name

The latter is only possible as we dropped support for Python 3.7.

21 months agorefactor(pool): add Queue/AQueue compatibility objects
Daniele Varrazzo [Wed, 4 Oct 2023 22:21:58 +0000 (00:21 +0200)] 
refactor(pool): add Queue/AQueue compatibility objects

21 months agorefactor(pool): add spawn/gather async compat functions
Daniele Varrazzo [Wed, 4 Oct 2023 22:01:24 +0000 (00:01 +0200)] 
refactor(pool): add spawn/gather async compat functions

21 months agorefactor(pool): add psycopg_pool._acompat to ease async/sync differences
Daniele Varrazzo [Wed, 4 Oct 2023 20:44:48 +0000 (22:44 +0200)] 
refactor(pool): add psycopg_pool._acompat to ease async/sync differences

21 months agorefactor(pool): add psycopg_pool.abc module
Daniele Varrazzo [Wed, 4 Oct 2023 20:02:58 +0000 (22:02 +0200)] 
refactor(pool): add psycopg_pool.abc module

21 months agochore: make ast-comments an ordinary dev dependency
Daniele Varrazzo [Wed, 4 Oct 2023 18:38:44 +0000 (20:38 +0200)] 
chore: make ast-comments an ordinary dev dependency

21 months agoci: pin ast-comments to work around bug, document other bug as submitted
Daniele Varrazzo [Mon, 2 Oct 2023 10:08:09 +0000 (12:08 +0200)] 
ci: pin ast-comments to work around bug, document other bug as submitted

21 months agorefactor(pool): light refactor to align async and sync pool
Daniele Varrazzo [Sun, 1 Oct 2023 01:59:37 +0000 (03:59 +0200)] 
refactor(pool): light refactor to align async and sync pool

21 months agorefactor(tests): generate null pool tests from async counterpart
Daniele Varrazzo [Tue, 12 Sep 2023 05:08:21 +0000 (07:08 +0200)] 
refactor(tests): generate null pool tests from async counterpart

21 months agorefactor(tests): generate most pool tests using parametric fixture
Daniele Varrazzo [Tue, 12 Sep 2023 04:48:10 +0000 (06:48 +0200)] 
refactor(tests): generate most pool tests using parametric fixture

21 months agorefactor(tests): rename cursor tests to keep them together
Daniele Varrazzo [Mon, 11 Sep 2023 22:19:22 +0000 (23:19 +0100)] 
refactor(tests): rename cursor tests to keep them together

Also rename test_default_cursor to just test_cursor as we renamed the
common tests in the previous commit.

21 months agorefactor(tests): rename test_cursor to test_cursor_common
Daniele Varrazzo [Mon, 11 Sep 2023 22:15:11 +0000 (23:15 +0100)] 
refactor(tests): rename test_cursor to test_cursor_common

21 months agorefactor(tests): generate test_pool from async counterpart
Daniele Varrazzo [Mon, 11 Sep 2023 21:57:44 +0000 (22:57 +0100)] 
refactor(tests): generate test_pool from async counterpart

21 months agorefactor(tests): generate test_sched from async counterpart
Daniele Varrazzo [Mon, 11 Sep 2023 17:50:44 +0000 (18:50 +0100)] 
refactor(tests): generate test_sched from async counterpart

21 months agorefactor(pool): generate Scheduler from AsyncScheduler
Daniele Varrazzo [Mon, 11 Sep 2023 16:10:17 +0000 (17:10 +0100)] 
refactor(pool): generate Scheduler from AsyncScheduler

21 months agorefactor: generate connection.py from connection_async
Daniele Varrazzo [Sat, 2 Sep 2023 21:22:09 +0000 (22:22 +0100)] 
refactor: generate connection.py from connection_async

21 months agorefactor(async_to_sync): finally solved the Tuple mystery
Daniele Varrazzo [Sat, 2 Sep 2023 21:18:30 +0000 (22:18 +0100)] 
refactor(async_to_sync): finally solved the Tuple mystery

The problem came from names shadowing in the ast_comment module. To be
reported upstream.

21 months agorefactor(connection): harmless manipulation to minimize async conversion diff
Daniele Varrazzo [Sat, 2 Sep 2023 21:10:05 +0000 (22:10 +0100)] 
refactor(connection): harmless manipulation to minimize async conversion diff

21 months agodocs: copy connection docstrings to async class
Daniele Varrazzo [Sat, 2 Sep 2023 21:05:28 +0000 (22:05 +0100)] 
docs: copy connection docstrings to async class

21 months agoperf(waiting): drop unneeded wait_for in wait_conn_async if no timeout is set
Daniele Varrazzo [Sat, 2 Sep 2023 20:47:20 +0000 (21:47 +0100)] 
perf(waiting): drop unneeded wait_for in wait_conn_async if no timeout is set

21 months agofeat(connection): add set_autocommit() and similar methods
Daniele Varrazzo [Sat, 2 Sep 2023 20:41:32 +0000 (21:41 +0100)] 
feat(connection): add set_autocommit() and similar methods

21 months agorefactor: move BaseConnetion in its own module
Daniele Varrazzo [Sat, 2 Sep 2023 16:31:18 +0000 (17:31 +0100)] 
refactor: move BaseConnetion in its own module

This commit is brought you by: flight delayed 6 hours for technical failure.

21 months agorefactor: generate cursor.py from cursor_async
Daniele Varrazzo [Mon, 21 Aug 2023 17:10:25 +0000 (18:10 +0100)] 
refactor: generate cursor.py from cursor_async

21 months agodocs: add docstrings from sync cursor to async
Daniele Varrazzo [Sat, 19 Aug 2023 17:19:48 +0000 (18:19 +0100)] 
docs: add docstrings from sync cursor to async

21 months agorefactor: move the BaseCursor class to its own module
Daniele Varrazzo [Sat, 19 Aug 2023 17:18:59 +0000 (18:18 +0100)] 
refactor: move the BaseCursor class to its own module

21 months agoci: check for inconsistencies between sync and async code
Daniele Varrazzo [Tue, 15 Aug 2023 22:12:25 +0000 (23:12 +0100)] 
ci: check for inconsistencies between sync and async code

21 months agofeat: add --check mode to sync-to-async script
Daniele Varrazzo [Tue, 15 Aug 2023 22:08:48 +0000 (23:08 +0100)] 
feat: add --check mode to sync-to-async script

It will be useful to set up a pipeline to check for inconsistencies.

21 months agorefactor(tests): generate tpc, transaction sync tests from async
Daniele Varrazzo [Tue, 15 Aug 2023 18:49:12 +0000 (19:49 +0100)] 
refactor(tests): generate tpc, transaction sync tests from async

21 months agorefactor(tests): make transaction sync/async tests more uniform
Daniele Varrazzo [Tue, 15 Aug 2023 18:29:34 +0000 (19:29 +0100)] 
refactor(tests): make transaction sync/async tests more uniform

21 months agorefactor(tests): generate sync prepared statements tests from async side
Daniele Varrazzo [Tue, 15 Aug 2023 18:18:12 +0000 (19:18 +0100)] 
refactor(tests): generate sync prepared statements tests from async side

21 months agorefactor(tests): auto-generate sync version of cursor subclasses
Daniele Varrazzo [Tue, 15 Aug 2023 18:05:58 +0000 (19:05 +0100)] 
refactor(tests): auto-generate sync version of cursor subclasses

21 months agorefactor(tests): auto-generate test_copy from async counterpart
Daniele Varrazzo [Thu, 10 Aug 2023 01:02:52 +0000 (02:02 +0100)] 
refactor(tests): auto-generate test_copy from async counterpart

21 months agorefactor(tests): make test_copy and async counterpart more similar
Daniele Varrazzo [Thu, 10 Aug 2023 00:33:41 +0000 (01:33 +0100)] 
refactor(tests): make test_copy and async counterpart more similar

21 months agorefactor(tests): auto-generate test_client_cursor from async counterpart
Daniele Varrazzo [Thu, 10 Aug 2023 00:16:31 +0000 (01:16 +0100)] 
refactor(tests): auto-generate test_client_cursor from async counterpart

21 months agorefactor(tests): generate test_pipeline from async counterpart
Daniele Varrazzo [Thu, 10 Aug 2023 00:07:08 +0000 (01:07 +0100)] 
refactor(tests): generate test_pipeline from async counterpart

21 months agofix(async-to-sync): fold long strings as multiline
Daniele Varrazzo [Tue, 8 Aug 2023 22:18:23 +0000 (23:18 +0100)] 
fix(async-to-sync): fold long strings as multiline

21 months agorefactor(tests): auto-generate test_connection from async
Daniele Varrazzo [Mon, 7 Aug 2023 23:16:19 +0000 (00:16 +0100)] 
refactor(tests): auto-generate test_connection from async

21 months agorefactor(tests): make sync and async connection tests more similar
Daniele Varrazzo [Mon, 7 Aug 2023 22:02:04 +0000 (23:02 +0100)] 
refactor(tests): make sync and async connection tests more similar

21 months agotest: fix use of aclosing in Python < 3.10
Daniele Varrazzo [Mon, 7 Aug 2023 16:09:26 +0000 (17:09 +0100)] 
test: fix use of aclosing in Python < 3.10

21 months agorefactor(tests): auto-generate the test_cursor module from async_test_cursor
Daniele Varrazzo [Mon, 7 Aug 2023 09:11:24 +0000 (10:11 +0100)] 
refactor(tests): auto-generate the test_cursor module from async_test_cursor

Use a script to translate an async module to sync. The module is to be
extended to cover the entire test suite and then possibly the rest of
the code.

21 months agorefactor(tests): tweak test_cursor to make it more similar to the async version
Daniele Varrazzo [Mon, 7 Aug 2023 08:58:05 +0000 (09:58 +0100)] 
refactor(tests): tweak test_cursor to make it more similar to the async version

21 months agodocs: update requirements specifiers link
Daniele Varrazzo [Wed, 11 Oct 2023 21:44:43 +0000 (23:44 +0200)] 
docs: update requirements specifiers link

21 months agodocs: adjust list of supported systems.
Daniele Varrazzo [Tue, 10 Oct 2023 21:45:35 +0000 (23:45 +0200)] 
docs: adjust list of supported systems.

- Mention Solaris/BSD as not officially supported.
- Drop non-GitHub macOS reference: we are now distributing Apple M1
  packages too, so that's a lie.

21 months agodocs: making fun of psycopg3
Daniele Varrazzo [Tue, 10 Oct 2023 21:45:13 +0000 (23:45 +0200)] 
docs: making fun of psycopg3

For small values of fun.

21 months agodocs: link together readme files on PyPI and add reference to psycopg2
Daniele Varrazzo [Tue, 10 Oct 2023 21:21:57 +0000 (23:21 +0200)] 
docs: link together readme files on PyPI and add reference to psycopg2

See https://github.com/psycopg/psycopg2/issues/1632

21 months agodocs: clean up details and errors in type annotations, more pages
Daniele Varrazzo [Tue, 10 Oct 2023 14:11:52 +0000 (16:11 +0200)] 
docs: clean up details and errors in type annotations, more pages

21 months agochore: drop 'set -x' (commented and not) from scripts
Daniele Varrazzo [Sun, 8 Oct 2023 09:31:29 +0000 (11:31 +0200)] 
chore: drop 'set -x' (commented and not) from scripts

21 months agodocs(pool): simpler, less detailed, more opinionated pool docs page
Daniele Varrazzo [Sat, 7 Oct 2023 01:49:46 +0000 (03:49 +0200)] 
docs(pool): simpler, less detailed, more opinionated pool docs page

Show a very basic usage example, then give a more detailed connection
life cycle illustration. Push lower and keep shorter the alternative
creation methods.

21 months agotest: mark array leak test slow
Daniele Varrazzo [Fri, 6 Oct 2023 19:37:17 +0000 (21:37 +0200)] 
test: mark array leak test slow

It takes 300ms, but it's still a blip when other tests run.

Add notes in the tests readme about repeating finding slow tests.

21 months agorefactor(pool): don't use a no-op function as reconnect callback
Daniele Varrazzo [Fri, 6 Oct 2023 15:04:42 +0000 (17:04 +0200)] 
refactor(pool): don't use a no-op function as reconnect callback

Just check for None.

21 months agostyle(pool): don't report too many decimals in timeout error message
Daniele Varrazzo [Fri, 6 Oct 2023 12:38:44 +0000 (14:38 +0200)] 
style(pool): don't report too many decimals in timeout error message

21 months agofix(pool): trade off usage timing precision for robustness
Daniele Varrazzo [Fri, 6 Oct 2023 12:36:43 +0000 (14:36 +0200)] 
fix(pool): trade off usage timing precision for robustness

It is unlikely that the statements we shuffled around will fail;
however, let's do the right thing and make sure that, if they do, the
getconn/putconn pair remains matched.

21 months agodocs(pool): fix changelog entry
Daniele Varrazzo [Fri, 6 Oct 2023 09:43:23 +0000 (11:43 +0200)] 
docs(pool): fix changelog entry

Attributing Generic pool feature entry to 3.2.0, not to 3.1.9.

21 months agoMerge branch 'fix-652'
Daniele Varrazzo [Tue, 3 Oct 2023 16:31:06 +0000 (18:31 +0200)] 
Merge branch 'fix-652'

21 months agotest: verify that time objects with failing utcoffset() are handled correctly
Daniele Varrazzo [Tue, 3 Oct 2023 16:09:11 +0000 (18:09 +0200)] 
test: verify that time objects with failing utcoffset() are handled correctly

21 months agofix: raise DataError dumping a time with ambiguous timezone
Daniele Varrazzo [Tue, 3 Oct 2023 16:08:19 +0000 (18:08 +0200)] 
fix: raise DataError dumping a time with ambiguous timezone

Close #652

21 months agochore: drop Python 3.7 support
Daniele Varrazzo [Sun, 1 Oct 2023 02:25:05 +0000 (04:25 +0200)] 
chore: drop Python 3.7 support

Also drop from the test grid PostgreSQL 10, now unsupported.

21 months agoci: add PostgreSQL 16 to the test grid
Daniele Varrazzo [Tue, 3 Oct 2023 11:26:16 +0000 (13:26 +0200)] 
ci: add PostgreSQL 16 to the test grid

21 months agotest: test Python 3.12 on all platform with final image
Daniele Varrazzo [Tue, 3 Oct 2023 11:21:46 +0000 (13:21 +0200)] 
test: test Python 3.12 on all platform with final image

21 months agoci: add Python 3.12 packages build
Daniele Varrazzo [Tue, 3 Oct 2023 08:48:40 +0000 (10:48 +0200)] 
ci: add Python 3.12 packages build

21 months agochore: fix 'adapers' typo
Daniele Varrazzo [Tue, 3 Oct 2023 08:53:29 +0000 (10:53 +0200)] 
chore: fix 'adapers' typo

22 months agostyle: avoid a chained traceback on dns parsing error
Daniele Varrazzo [Wed, 27 Sep 2023 21:59:12 +0000 (23:59 +0200)] 
style: avoid a chained traceback on dns parsing error

22 months agodocs: fix typo
Daniele Varrazzo [Wed, 27 Sep 2023 12:38:14 +0000 (14:38 +0200)] 
docs: fix typo

22 months agoMerge branch 'generic-connection-pool'
Daniele Varrazzo [Wed, 27 Sep 2023 09:09:58 +0000 (11:09 +0200)] 
Merge branch 'generic-connection-pool'

22 months agodocs: add docs about generic pool 559/head
Daniele Varrazzo [Wed, 27 Sep 2023 00:38:44 +0000 (02:38 +0200)] 
docs: add docs about generic pool

22 months agofeat(pool): make pool generic on connection type
Daniele Varrazzo [Tue, 26 Sep 2023 23:16:55 +0000 (01:16 +0200)] 
feat(pool): make pool generic on connection type

22 months agochore: add typing.assert_type() to the _compat module
Denis Laxalde [Mon, 3 Apr 2023 09:53:54 +0000 (11:53 +0200)] 
chore: add typing.assert_type() to the _compat module

This requires typing_extensions >= 4.2.

22 months agofix: use Self type for connection pool in __*enter__()
Denis Laxalde [Wed, 5 Apr 2023 11:39:53 +0000 (13:39 +0200)] 
fix: use Self type for connection pool in __*enter__()

This makes inheritance, e.g. for *NullConnectionPool, work correctly:

    with psycopg_pool.NullConnectionPool() as p:
        pass
    reveal_type(p)
    # Revealed type is "psycopg_pool.null_pool.NullConnectionPool"

22 months agochore: bump psycopg package version to 3.1.12
Daniele Varrazzo [Tue, 26 Sep 2023 21:25:55 +0000 (23:25 +0200)] 
chore: bump psycopg package version to 3.1.12

22 months agoMerge branch 'fix-608'
Daniele Varrazzo [Tue, 26 Sep 2023 21:47:14 +0000 (23:47 +0200)] 
Merge branch 'fix-608'

22 months agofix: use poll() instead of epoll() for waiting
Daniele Varrazzo [Tue, 26 Sep 2023 17:24:44 +0000 (19:24 +0200)] 
fix: use poll() instead of epoll() for waiting

epoll() hangs when the fd it listens to is closed. poll() doesn't have
this problem (as a consequence, hanging only happened in the Python
code, as wait_c is poll-based).

22 months agofix: don't hang forever if async connection is closed while querying
Daniele Varrazzo [Tue, 26 Sep 2023 16:29:47 +0000 (18:29 +0200)] 
fix: don't hang forever if async connection is closed while querying

Fix #608

22 months agofix: don't raise spurious errors on cancel if the connection is closed
Daniele Varrazzo [Tue, 26 Sep 2023 16:27:25 +0000 (18:27 +0200)] 
fix: don't raise spurious errors on cancel if the connection is closed

22 months agochore(crdb): test 23.1 in CI
Daniele Varrazzo [Tue, 26 Sep 2023 16:54:10 +0000 (18:54 +0200)] 
chore(crdb): test 23.1 in CI

22 months agoMerge branch 'fix-647'
Daniele Varrazzo [Tue, 26 Sep 2023 10:48:29 +0000 (12:48 +0200)] 
Merge branch 'fix-647'

22 months agofix: cache all dynamically generated adapter types
Daniele Varrazzo [Mon, 25 Sep 2023 15:19:53 +0000 (17:19 +0200)] 
fix: cache all dynamically generated adapter types

These are not currently a leak in cPython, but I don't think it's
guaranteed anywhere, and it might well not be the case in other Python
implementations. So, as a matter of hygiene, make sure that calling
register_*() in a loop doesn't create an unbound number of new types.

22 months agofix: cache dynamic adapters created in register_array()
Daniele Varrazzo [Mon, 25 Sep 2023 22:26:56 +0000 (00:26 +0200)] 
fix: cache dynamic adapters created in register_array()

If the base class is a C extension, the subclasses cannot be GC'd. This
results in a leak if register_array() is called in a loop.

Close #647

22 months agoci(scaleway_m1): add list command and jq pretty output
Daniele Varrazzo [Mon, 25 Sep 2023 15:16:02 +0000 (17:16 +0200)] 
ci(scaleway_m1): add list command and jq pretty output

22 months agochore: bump psycopg_pool package version to 3.1.8
Daniele Varrazzo [Fri, 22 Sep 2023 22:08:43 +0000 (00:08 +0200)] 
chore: bump psycopg_pool package version to 3.1.8

22 months agochore: bump psycopg package version to 3.1.11
Daniele Varrazzo [Fri, 22 Sep 2023 22:08:01 +0000 (00:08 +0200)] 
chore: bump psycopg package version to 3.1.11

22 months agodocs: Document what to do when a new major version of Postgres is released
Daniele Varrazzo [Fri, 22 Sep 2023 21:44:42 +0000 (23:44 +0200)] 
docs: Document what to do when a new major version of Postgres is released

22 months agoci: provision a M1 build server automatically, if needed
Daniele Varrazzo [Fri, 22 Sep 2023 20:36:27 +0000 (22:36 +0200)] 
ci: provision a M1 build server automatically, if needed

22 months agofix(bump_version): handle tagging without bumping version
Daniele Varrazzo [Fri, 22 Sep 2023 23:07:03 +0000 (01:07 +0200)] 
fix(bump_version): handle tagging without bumping version

22 months agoci: run 3rd party integration tests on commit on maint-3.1 branch
Daniele Varrazzo [Fri, 22 Sep 2023 22:23:07 +0000 (00:23 +0200)] 
ci: run 3rd party integration tests on commit on maint-3.1 branch

22 months agochore: update cibuildwheel version
Daniele Varrazzo [Fri, 22 Sep 2023 21:32:16 +0000 (23:32 +0200)] 
chore: update cibuildwheel version

22 months agochore: upgrade libpq, OpenSSL versions
Daniele Varrazzo [Fri, 22 Sep 2023 21:31:46 +0000 (23:31 +0200)] 
chore: upgrade libpq, OpenSSL versions

22 months agodocs: refresh stale release information
Daniele Varrazzo [Fri, 22 Sep 2023 21:23:47 +0000 (23:23 +0200)] 
docs: refresh stale release information

22 months agoperf(windows): don't use wait_c.
Daniele Varrazzo [Tue, 19 Sep 2023 20:38:03 +0000 (22:38 +0200)] 
perf(windows): don't use wait_c.

The function was reported to use excessive CPU. Need to investigate,
however, for the moment, suspend its usage on Windows.

See #645.

22 months agodocs: add docs about connection pool logging
Daniele Varrazzo [Wed, 20 Sep 2023 09:04:22 +0000 (11:04 +0200)] 
docs: add docs about connection pool logging

22 months agofix(c): fix loading of intervals with days and months or years
Daniele Varrazzo [Tue, 19 Sep 2023 19:07:20 +0000 (21:07 +0200)] 
fix(c): fix loading of intervals with days and months or years

Close #643.

22 months agoci: fix building Python 3.7 extension on windows using delvewheel 1.5.1
Daniele Varrazzo [Fri, 15 Sep 2023 15:35:58 +0000 (17:35 +0200)] 
ci: fix building Python 3.7 extension on windows using delvewheel 1.5.1

See https://github.com/adang1345/delvewheel/issues/39

22 months agochore: constrain importlib metadata to the version supporting Python 3.7
Daniele Varrazzo [Fri, 15 Sep 2023 11:44:15 +0000 (13:44 +0200)] 
chore: constrain importlib metadata to the version supporting Python 3.7

22 months agorefactor: convert back query2pg from static method to regular function
Daniele Varrazzo [Mon, 11 Sep 2023 00:36:26 +0000 (01:36 +0100)] 
refactor: convert back query2pg from static method to regular function

On Python < 3.10, a static method doesn't seem callable, at least during
class building, so applying lru_cache on it fails.

22 months agofix: avoid caching the parsing of large queries
Daniele Varrazzo [Mon, 4 Sep 2023 13:42:00 +0000 (14:42 +0100)] 
fix: avoid caching the parsing of large queries

These queries are typically generated by ORMs and have poor
cacheability, but can result in a lot of memory being used.

Close #628.

See also <https://github.com/sqlalchemy/sqlalchemy/discussions/10270>.