]>
git.ipfire.org Git - thirdparty/psycopg.git/log
Daniele Varrazzo [Thu, 5 Oct 2023 02:06:34 +0000 (04:06 +0200)]
refactor(pool): generate null pool module from async counterpart
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.
Daniele Varrazzo [Thu, 5 Oct 2023 01:40:28 +0000 (03:40 +0200)]
refactor(pool): generate pool sync module from async counterpart
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.
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.
Daniele Varrazzo [Thu, 5 Oct 2023 00:22:20 +0000 (02:22 +0200)]
refactor(pool): use non-string typing annotations
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.
Daniele Varrazzo [Wed, 4 Oct 2023 22:21:58 +0000 (00:21 +0200)]
refactor(pool): add Queue/AQueue compatibility objects
Daniele Varrazzo [Wed, 4 Oct 2023 22:01:24 +0000 (00:01 +0200)]
refactor(pool): add spawn/gather async compat functions
Daniele Varrazzo [Wed, 4 Oct 2023 20:44:48 +0000 (22:44 +0200)]
refactor(pool): add psycopg_pool._acompat to ease async/sync differences
Daniele Varrazzo [Wed, 4 Oct 2023 20:02:58 +0000 (22:02 +0200)]
refactor(pool): add psycopg_pool.abc module
Daniele Varrazzo [Wed, 4 Oct 2023 18:38:44 +0000 (20:38 +0200)]
chore: make ast-comments an ordinary dev dependency
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
Daniele Varrazzo [Sun, 1 Oct 2023 01:59:37 +0000 (03:59 +0200)]
refactor(pool): light refactor to align async and sync pool
Daniele Varrazzo [Tue, 12 Sep 2023 05:08:21 +0000 (07:08 +0200)]
refactor(tests): generate null pool tests from async counterpart
Daniele Varrazzo [Tue, 12 Sep 2023 04:48:10 +0000 (06:48 +0200)]
refactor(tests): generate most pool tests using parametric fixture
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.
Daniele Varrazzo [Mon, 11 Sep 2023 22:15:11 +0000 (23:15 +0100)]
refactor(tests): rename test_cursor to test_cursor_common
Daniele Varrazzo [Mon, 11 Sep 2023 21:57:44 +0000 (22:57 +0100)]
refactor(tests): generate test_pool from async counterpart
Daniele Varrazzo [Mon, 11 Sep 2023 17:50:44 +0000 (18:50 +0100)]
refactor(tests): generate test_sched from async counterpart
Daniele Varrazzo [Mon, 11 Sep 2023 16:10:17 +0000 (17:10 +0100)]
refactor(pool): generate Scheduler from AsyncScheduler
Daniele Varrazzo [Sat, 2 Sep 2023 21:22:09 +0000 (22:22 +0100)]
refactor: generate connection.py from connection_async
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.
Daniele Varrazzo [Sat, 2 Sep 2023 21:10:05 +0000 (22:10 +0100)]
refactor(connection): harmless manipulation to minimize async conversion diff
Daniele Varrazzo [Sat, 2 Sep 2023 21:05:28 +0000 (22:05 +0100)]
docs: copy connection docstrings to async class
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
Daniele Varrazzo [Sat, 2 Sep 2023 20:41:32 +0000 (21:41 +0100)]
feat(connection): add set_autocommit() and similar methods
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.
Daniele Varrazzo [Mon, 21 Aug 2023 17:10:25 +0000 (18:10 +0100)]
refactor: generate cursor.py from cursor_async
Daniele Varrazzo [Sat, 19 Aug 2023 17:19:48 +0000 (18:19 +0100)]
docs: add docstrings from sync cursor to async
Daniele Varrazzo [Sat, 19 Aug 2023 17:18:59 +0000 (18:18 +0100)]
refactor: move the BaseCursor class to its own module
Daniele Varrazzo [Tue, 15 Aug 2023 22:12:25 +0000 (23:12 +0100)]
ci: check for inconsistencies between sync and async code
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.
Daniele Varrazzo [Tue, 15 Aug 2023 18:49:12 +0000 (19:49 +0100)]
refactor(tests): generate tpc, transaction sync tests from async
Daniele Varrazzo [Tue, 15 Aug 2023 18:29:34 +0000 (19:29 +0100)]
refactor(tests): make transaction sync/async tests more uniform
Daniele Varrazzo [Tue, 15 Aug 2023 18:18:12 +0000 (19:18 +0100)]
refactor(tests): generate sync prepared statements tests from async side
Daniele Varrazzo [Tue, 15 Aug 2023 18:05:58 +0000 (19:05 +0100)]
refactor(tests): auto-generate sync version of cursor subclasses
Daniele Varrazzo [Thu, 10 Aug 2023 01:02:52 +0000 (02:02 +0100)]
refactor(tests): auto-generate test_copy from async counterpart
Daniele Varrazzo [Thu, 10 Aug 2023 00:33:41 +0000 (01:33 +0100)]
refactor(tests): make test_copy and async counterpart more similar
Daniele Varrazzo [Thu, 10 Aug 2023 00:16:31 +0000 (01:16 +0100)]
refactor(tests): auto-generate test_client_cursor from async counterpart
Daniele Varrazzo [Thu, 10 Aug 2023 00:07:08 +0000 (01:07 +0100)]
refactor(tests): generate test_pipeline from async counterpart
Daniele Varrazzo [Tue, 8 Aug 2023 22:18:23 +0000 (23:18 +0100)]
fix(async-to-sync): fold long strings as multiline
Daniele Varrazzo [Mon, 7 Aug 2023 23:16:19 +0000 (00:16 +0100)]
refactor(tests): auto-generate test_connection from async
Daniele Varrazzo [Mon, 7 Aug 2023 22:02:04 +0000 (23:02 +0100)]
refactor(tests): make sync and async connection tests more similar
Daniele Varrazzo [Mon, 7 Aug 2023 16:09:26 +0000 (17:09 +0100)]
test: fix use of aclosing in Python < 3.10
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.
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
Daniele Varrazzo [Wed, 11 Oct 2023 21:44:43 +0000 (23:44 +0200)]
docs: update requirements specifiers link
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.
Daniele Varrazzo [Tue, 10 Oct 2023 21:45:13 +0000 (23:45 +0200)]
docs: making fun of psycopg3
For small values of fun.
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
Daniele Varrazzo [Tue, 10 Oct 2023 14:11:52 +0000 (16:11 +0200)]
docs: clean up details and errors in type annotations, more pages
Daniele Varrazzo [Sun, 8 Oct 2023 09:31:29 +0000 (11:31 +0200)]
chore: drop 'set -x' (commented and not) from scripts
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.
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.
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.
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
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.
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.
Daniele Varrazzo [Tue, 3 Oct 2023 16:31:06 +0000 (18:31 +0200)]
Merge branch 'fix-652'
Daniele Varrazzo [Tue, 3 Oct 2023 16:09:11 +0000 (18:09 +0200)]
test: verify that time objects with failing utcoffset() are handled correctly
Daniele Varrazzo [Tue, 3 Oct 2023 16:08:19 +0000 (18:08 +0200)]
fix: raise DataError dumping a time with ambiguous timezone
Close #652
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.
Daniele Varrazzo [Tue, 3 Oct 2023 11:26:16 +0000 (13:26 +0200)]
ci: add PostgreSQL 16 to the test grid
Daniele Varrazzo [Tue, 3 Oct 2023 11:21:46 +0000 (13:21 +0200)]
test: test Python 3.12 on all platform with final image
Daniele Varrazzo [Tue, 3 Oct 2023 08:48:40 +0000 (10:48 +0200)]
ci: add Python 3.12 packages build
Daniele Varrazzo [Tue, 3 Oct 2023 08:53:29 +0000 (10:53 +0200)]
chore: fix 'adapers' typo
Daniele Varrazzo [Wed, 27 Sep 2023 21:59:12 +0000 (23:59 +0200)]
style: avoid a chained traceback on dns parsing error
Daniele Varrazzo [Wed, 27 Sep 2023 12:38:14 +0000 (14:38 +0200)]
docs: fix typo
Daniele Varrazzo [Wed, 27 Sep 2023 09:09:58 +0000 (11:09 +0200)]
Merge branch 'generic-connection-pool'
Daniele Varrazzo [Wed, 27 Sep 2023 00:38:44 +0000 (02:38 +0200)]
docs: add docs about generic pool
Daniele Varrazzo [Tue, 26 Sep 2023 23:16:55 +0000 (01:16 +0200)]
feat(pool): make pool generic on connection type
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.
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"
Daniele Varrazzo [Tue, 26 Sep 2023 21:25:55 +0000 (23:25 +0200)]
chore: bump psycopg package version to 3.1.12
Daniele Varrazzo [Tue, 26 Sep 2023 21:47:14 +0000 (23:47 +0200)]
Merge branch 'fix-608'
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).
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
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
Daniele Varrazzo [Tue, 26 Sep 2023 16:54:10 +0000 (18:54 +0200)]
chore(crdb): test 23.1 in CI
Daniele Varrazzo [Tue, 26 Sep 2023 10:48:29 +0000 (12:48 +0200)]
Merge branch 'fix-647'
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.
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
Daniele Varrazzo [Mon, 25 Sep 2023 15:16:02 +0000 (17:16 +0200)]
ci(scaleway_m1): add list command and jq pretty output
Daniele Varrazzo [Fri, 22 Sep 2023 22:08:43 +0000 (00:08 +0200)]
chore: bump psycopg_pool package version to 3.1.8
Daniele Varrazzo [Fri, 22 Sep 2023 22:08:01 +0000 (00:08 +0200)]
chore: bump psycopg package version to 3.1.11
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
Daniele Varrazzo [Fri, 22 Sep 2023 20:36:27 +0000 (22:36 +0200)]
ci: provision a M1 build server automatically, if needed
Daniele Varrazzo [Fri, 22 Sep 2023 23:07:03 +0000 (01:07 +0200)]
fix(bump_version): handle tagging without bumping version
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
Daniele Varrazzo [Fri, 22 Sep 2023 21:32:16 +0000 (23:32 +0200)]
chore: update cibuildwheel version
Daniele Varrazzo [Fri, 22 Sep 2023 21:31:46 +0000 (23:31 +0200)]
chore: upgrade libpq, OpenSSL versions
Daniele Varrazzo [Fri, 22 Sep 2023 21:23:47 +0000 (23:23 +0200)]
docs: refresh stale release information
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.
Daniele Varrazzo [Wed, 20 Sep 2023 09:04:22 +0000 (11:04 +0200)]
docs: add docs about connection pool logging
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.
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
Daniele Varrazzo [Fri, 15 Sep 2023 11:44:15 +0000 (13:44 +0200)]
chore: constrain importlib metadata to the version supporting Python 3.7
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.
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>.