]> git.ipfire.org Git - thirdparty/psycopg.git/log
thirdparty/psycopg.git
2 years agorefactor: replace 'git ls-files' + 'grep' by a single 'git grep'
Denis Laxalde [Fri, 13 Oct 2023 06:54:01 +0000 (08:54 +0200)] 
refactor: replace 'git ls-files' + 'grep' by a single 'git grep'

2 years agochore: use Python 3.11 to conver async to sync
Daniele Varrazzo [Fri, 13 Oct 2023 01:35:26 +0000 (03:35 +0200)] 
chore: use Python 3.11 to conver async to sync

2 years agochore: add option to run async_to_sync in a docker image
Daniele Varrazzo [Fri, 13 Oct 2023 01:22:04 +0000 (03:22 +0200)] 
chore: add option to run async_to_sync in a docker image

This allows to specify which Python version to use for the conversion
(even when it's not installed on the machine).

2 years agorefactor: drop 'convert_async_to_sync.sh' script
Daniele Varrazzo [Fri, 13 Oct 2023 00:19:03 +0000 (02:19 +0200)] 
refactor: drop 'convert_async_to_sync.sh' script

Do all in 'async_to_sync.py:' added --all and --check options.

2 years agotest: drop unneeded raise on pytest.skip()
Daniele Varrazzo [Wed, 11 Oct 2023 11:30:46 +0000 (13:30 +0200)] 
test: drop unneeded raise on pytest.skip()

2 years agorefactor(test): uniform the way sync/async-only tests are skipped
Daniele Varrazzo [Sun, 8 Oct 2023 13:55:31 +0000 (15:55 +0200)] 
refactor(test): uniform the way sync/async-only tests are skipped

Add @skip_sync, @skip_async markers to mark the functions to skip.

2 years agotest: add check to verify the completeness of convert_async_to_sync
Daniele Varrazzo [Sun, 8 Oct 2023 10:33:47 +0000 (12:33 +0200)] 
test: add check to verify the completeness of convert_async_to_sync

Verify that all the files commented as having been automatically
converted are actually included in the script converting them.

2 years agostyle: more care in the docstring mentioning sync/async versions of the code
Daniele Varrazzo [Sun, 8 Oct 2023 09:55:58 +0000 (11:55 +0200)] 
style: more care in the docstring mentioning sync/async versions of the code

2 years agorefactor(pool): define scheduler task as dataclass
Daniele Varrazzo [Sun, 8 Oct 2023 09:45:28 +0000 (11:45 +0200)] 
refactor(pool): define scheduler task as dataclass

2 years agorefactor(async_to_sync): create new object without listing all the attributes
Daniele Varrazzo [Sun, 8 Oct 2023 09:02:23 +0000 (11:02 +0200)] 
refactor(async_to_sync): create new object without listing all the attributes

2 years agostyle(pool): use `pass` instead of `return` for empty methods
Daniele Varrazzo [Sun, 8 Oct 2023 08:32:29 +0000 (10:32 +0200)] 
style(pool): use `pass` instead of `return` for empty methods

2 years agodocs: fix typos/grammar
Daniele Varrazzo [Sun, 8 Oct 2023 08:30:26 +0000 (09:30 +0100)] 
docs: fix typos/grammar

Co-authored-by: Daniel Fortunov <asqui@users.noreply.github.com>
2 years agorefactor(copy): generate sync code from async
Daniele Varrazzo [Fri, 6 Oct 2023 10:58:49 +0000 (12:58 +0200)] 
refactor(copy): generate sync code from async

2 years agorefactor(test): add acompat module
Daniele Varrazzo [Thu, 5 Oct 2023 23:58:54 +0000 (01:58 +0200)] 
refactor(test): add acompat module

2 years agofeat(tools): allow to specify the files to convert async to sync
Daniele Varrazzo [Fri, 6 Oct 2023 13:02:50 +0000 (15:02 +0200)] 
feat(tools): allow to specify the files to convert async to sync

2 years agofix: fix type annotation problems on Python 3.8, 3.9
Daniele Varrazzo [Thu, 5 Oct 2023 03:10:00 +0000 (05:10 +0200)] 
fix: fix type annotation problems on Python 3.8, 3.9

2 years 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

2 years 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.

2 years 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

2 years 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.

2 years 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.

2 years 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

2 years 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.

2 years 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

2 years 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

2 years 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

2 years 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

2 years 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

2 years 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

2 years 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

2 years 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

2 years 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

2 years 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.

2 years 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

2 years 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

2 years 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

2 years 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

2 years 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

2 years 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.

2 years 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

2 years 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

2 years 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

2 years 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

2 years 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.

2 years 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

2 years 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

2 years 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

2 years 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

2 years 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.

2 years 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

2 years 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

2 years 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

2 years 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

2 years 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

2 years 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

2 years 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

2 years 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

2 years 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

2 years 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

2 years 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

2 years 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

2 years 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.

2 years 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

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

2 years 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.

2 years 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.

2 years 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

2 years 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

2 years 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

2 years 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.

2 years 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.

2 years 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.

2 years 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

2 years 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.

2 years 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.

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

2 years 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

2 years 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

2 years 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.

2 years 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

2 years 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

2 years 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

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

2 years 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

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

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

2 years 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

2 years 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

2 years 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.

2 years 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"

2 years 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

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

2 years 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).

2 years 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

2 years 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

2 years 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

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

2 years 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.

2 years 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

2 years 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