Add raw query support with PostgreSQL native placeholders#560
Add raw query support with PostgreSQL native placeholders#560dvarrazzo merged 5 commits intopsycopg:masterfrom
Conversation
|
Hello, I have been thinking about providing such feature sometimes. I am not convinced about the interface, with the need to create a subclass. I would have said that we should just provide a class, but then they would need to be at least 4 different other ones (server and client cursor, sync and async), so I don't know about that. It's also worth noticing that Other option to evaluate:
Implementation details: maybe there should be a |
|
(this is not a proper code review, more throwing there some discussion hints) |
Hello dvarrazo, nice to e-meet and thanks for all your work, very much appreciated.
Glad to hear you also see some potential value!
Right... I understand and agree.
Thanks for some great ideas! I've pushed a new version with changes. I also added the option of passing it via connect() i.e.
That sounds like a good idea. Not implemented yet though. |
|
I see mypy complains on type signatures due to the passing a closure as cursor_factory: I guess the fix would be something like a Union[] to also accept a Callable[], something like this, in connection.py: - cursor_factory: Type[Cursor[Row]]
+ cursor_factory: Union[Type[Cursor[Row]], Callable[[Any, RowFactory[Row]], Cursor[Row]]]Seems like there are quite a lot of such places that needs to be fixed. I wonder if it perhaps isn't worth the added complexity of a Union[] type, and might be simpler/cleaner to just go for the raw_queries=True input param to connect() and possibly also cursor(). Toughts? |
docs/api/connections.rst
Outdated
|
|
||
| .. versionadded:: 3.1 | ||
|
|
||
| Setting `raw_queries` to `!True` during connection allows users to use |
There was a problem hiding this comment.
I think that raw_query should be at most a cursor property, not so much a connection property. The cursors are in charge of making queries and return results, the connections are in charge of keeping connection and transaction state.
We don't have concepts such as server-side vs. client-side querying, server- vs. client- side binding, binary parameters etc. in the connection. So I think raw_query should be at most at conn.cursor() level, not higher than that.
There was a problem hiding this comment.
Thanks for your feedback! I understand your perspective on classifying raw_query as a cursor property. However, I think raw_query has a relational context with both cursors and connections - you might want to enable it for all or just one cursor in a connection, so I think from a relational point of view, it makes sense to talk about "raw_query" for a connection.
My main need is a simple way to enable raw_query for all queries in a connection without altering all cursor() or execute() calls.
The changes to _queries.py shouldn't be affected by the interface design, perhaps that could be reviewed first, to see if it's a viable approach.
There was a problem hiding this comment.
The use case of having all the cursors the same way should be covered by the cursor_factory property.
There was a problem hiding this comment.
Thanks for guidance! I like the cursor_factory approach. Pushed a new commit with implementation and updated docs. Btw, sorry for all the mypy/black noise, I didn't have them installed locally, but now I'm checking they pass before pushing to the branch.
There was a problem hiding this comment.
I'm not sure about the user-facing interface, i.e. the raw_queries property on Cursor, because:
- the term "raw queries" does not feel familiar to me,
- this would not scale if/when someone will want another parameter-style, e.g.
?,:nameor{}
Therefore, how about a param_style property with values from an enum?
class ParamStyle(enum.Enum):
percent = enum.auto() # psycopg style
numeric_dollar = enum.auto() # postgresql "native" style(The "param style" term comes from https://peps.python.org/pep-0249/#paramstyle.)
psycopg/psycopg/_queries.py
Outdated
| """.split() | ||
|
|
||
| def __init__(self, transformer: "Transformer"): | ||
| def __init__(self, transformer: "Transformer", raw_queries: Optional[bool] = False): |
There was a problem hiding this comment.
Shouldn't this be:
| def __init__(self, transformer: "Transformer", raw_queries: Optional[bool] = False): | |
| def __init__(self, transformer: "Transformer", raw_queries: bool = False): |
?
I mean, how is the None value different from False?
There was a problem hiding this comment.
Yes, I agree, better to fix all users of PostgresQuery so they all pass raw_queries explicitly, perhaps then also the default can be skipped there, to only have one place where the default (= False) is specified.
|
@dlax unfortunately the dbapi doesn't make provision for placeholders $1 so it's hard to give them a name that makes sense for the specs. @joelonsql adding an attribute to the cursor doesn't go in the right direction. You should use the client-side-binding cursors as an example, because they solve exactly the same problem that you have to solve (changing the way the Python query and arguments are manipulated) and they do in the OOP way the codebase is organised, not if'ing every step. I also predict that your implementation will be much smaller because what you are doing doesn't have to interact with prepared queries and pipeline mode in a way different than its base class. So, in short, your cursor will have only to replace If any, the _queries module could be refactored:
At this point you have the blueprint of your code: you can make a The way clients would use them should be similar to the how client-binding cursors are documented to be used:
The |
|
@dlax <https://github.com/dlax> unfortunately the dbapi doesn't make
provision for placeholders $1 so it's hard to give them a name that
makes sense for the specs.
Sqlalchemy defines some names we could reuse:
https://github.com/sqlalchemy/sqlalchemy/blob/f71c73696ac7a664391513ae4c21a56d18a3c3bf/lib/sqlalchemy/engine/interfaces.py#L262
|
|
@dvarrazzo That's a great idea, that completely eliminates the added complexity to cursor.py, which is now completely unchanged. New commit pushed. |
| @staticmethod | ||
| def query2pg( | ||
| query: bytes, encoding: str, vars: Params | ||
| ) -> Tuple[bytes, Optional[List[PyFormat]], Optional[List[str]], List[QueryPart]]: |
There was a problem hiding this comment.
This has now lost the @lru_cache, which is very important.
The need to have the cache was the reason why the function doesn't take the vars. They are unused in this method, but they make it impossible to cache.
There was a problem hiding this comment.
Sorry I should have mentioned I left that out because I couldn't figure out the unhashability of list error, but now I've fixed it, which is a better solution anyway, since passing the number of parameters is all we need. See new commit.
psycopg/psycopg/__init__.py
Outdated
| # so that function signatures are consistent with the documentation. | ||
| __all__ = [ | ||
| "AsyncClientCursor", | ||
| "AsyncRawCursor", |
docs/advanced/cursors.rst
Outdated
| Raw Query Cursors | ||
| ------------------ | ||
|
|
||
| .. versionadded:: 3.1 |
| on PostgreSQL's placeholder functionality, such as when dealing with a very | ||
| complex query containing %s inside strings, dollar-quoted strings or elsewhere. | ||
|
|
||
| There are two ways to use raw query cursors: |
There was a problem hiding this comment.
You should also document that the raw cursor only takes positional arguments.
There was a problem hiding this comment.
Nice catch, that's very important to point out. Fixed in pushed commit.
psycopg/psycopg/raw_cursor.py
Outdated
| """ | ||
| Don't convert Python raw query since it's already in a format Postgres understands. | ||
| """ | ||
| return query, [PyFormat.AUTO] * len(vars), None, [] |
There was a problem hiding this comment.
I see: if you don't have vars here you can't work out the want_formats vector.
What you can do is to return None here, and augment dump() to set the formats if None (or complain if it's not None, but they are a different length).
There was a problem hiding this comment.
Smart! Fixed in pushed commit.
|
Thank you @joelonsql, that looks much better! I've left you a few comments. There will be the need for many more tests. Pretty much copying the whole |
Thanks, glad to hear!
Roger! Would you like only tests that make use of placeholders, or all of them, even those without use of placeholders? |
|
I would like also tests of the cursor functionality that don't involve the placeholder, because I don't have guarantees that there aren't regressions with e.g. prepared statements or the many other features interacting with the cursor. For instance, as I'm writing this, and thinking about things happened in the past, #484 is a bug that will come and bite on the raw cursors too. In that case, we were smart enough to add a test so we would have noticed if you copied all the tests for raw cursors too. The fix for that problem was wrong, or at least it didn't consider that a cursor would have come, in the future, for which diff --git a/psycopg/psycopg/_typeinfo.py b/psycopg/psycopg/_typeinfo.py
index f3386617..dda14bb4 100644
--- a/psycopg/psycopg/_typeinfo.py
+++ b/psycopg/psycopg/_typeinfo.py
@@ -16,6 +16,8 @@ from . import errors as e
from .abc import AdaptContext, Query
from .rows import dict_row
from ._encodings import conn_encoding
+from .cursor import Cursor
+from .cursor_async import AsyncCursor
if TYPE_CHECKING:
from .connection import BaseConnection, Connection
@@ -96,7 +98,7 @@ class TypeInfo:
with conn.transaction():
if conn_encoding(conn) == "ascii":
conn.execute("set local client_encoding to utf8")
- with conn.cursor(row_factory=dict_row) as cur:
+ with Cursor(conn, row_factory=dict_row) as cur:
cur.execute(cls._get_info_query(conn), {"name": name})
recs = cur.fetchall()
except e.UndefinedObject:
@@ -112,7 +114,7 @@ class TypeInfo:
async with conn.transaction():
if conn_encoding(conn) == "ascii":
await conn.execute("set local client_encoding to utf8")
- async with conn.cursor(row_factory=dict_row) as cur:
+ async with AsyncCursor(conn, row_factory=dict_row) as cur:
await cur.execute(cls._get_info_query(conn), {"name": name})
recs = await cur.fetchall()
except e.UndefinedObject:and the same care should be taken for every other use of Yes, there's a lot of duplication, that I see for instance diffing test_cursor with test_client_cursor. Maybe it would be possible to reduce it with a parametrized fixture rather than with pytest.mark: the client cursor has this private fixture redefinition: @pytest.fixture
def conn(conn):
conn.cursor_factory = psycopg.ClientCursor
return connIf, instead, |
|
As a start, I'm working on porting the tests with placeholders from I cannot wrap my head around this one: def test_query_params_execute(conn):
cur = conn.cursor()
assert cur._query is None
cur.execute("select %t, %s::text", [1, None])
assert cur._query is not None
assert cur._query.query == b"select $1, $2::text"
assert cur._query.params == [b"1", None]So %t is a "text placeholder"? I assume that means it will threat the param value as text, even if it's some other non-text type? So in this case it will implicitly cast the integer 1 to the text string "1"? Is it relevant to port these %t tests to the raw queries tests? def test_query_params_execute(conn):
with RawCursor(conn) as cur:
assert cur._query is None
cur.execute("select $1::text, $2::text", [1, None])
assert cur._query is not None
assert cur._query.query == b"select $1::text, $2::text"
assert cur._query.params == [bytearray(b'\x00\x01'), None]
cur.execute("select 1")
assert cur._query.query == b"select 1"
assert not cur._query.params
with pytest.raises(DataError):
cur.execute("select $1::int", ["wat"])
assert cur._query.query == b"select $1::int"
assert cur._query.params == [b"wat"] |
|
I've now added all the tests with placeholders from test_cursor.py.
Line 82-84 seen below: assert cur.pgresult.get_value(0, 0) == b"1"
assert cur.pgresult.get_value(0, 1) == b"foo"
assert cur.pgresult.get_value(0, 2) is None |
"text" here doesn't refer to the text data type. It refers to the parameter format - see documentation. Normal psycopg queries support placeholders %t, %b to force an argument to be passed as text or as binary. Using %s, psycopg will try to make the best choice (usually binary is more performing, but for some data types there are problems, so text is preferred). Using the raw query I don't see the possibility to give the user a choice of format. We could use auto (as you are doing) or text (which is always present). My preference is auto, because it would keep the behaviours of raw and normal cursor more similar and so far we had no report that our "auto" choices are wrong.
It's the binary representation of 1 as 16 bits.
It is complaining that |
SGTM.
But why 16 bits? The int 1 conveniently fit in just one byte (8 bits), I would assume it to be encoded as b'\x01'. Why are 2 bytes needed?
OK, I see, that silenced mypy, thanks. But why isn't def test_execute_sequence(conn):
cur = conn.cursor()
rv = cur.execute("select %s::int, %s::text, %s::text", [1, "foo", None])
assert rv is cur
assert len(cur._results) == 1
assert cur.pgresult.get_value(0, 0) == b"1"
assert cur.pgresult.get_value(0, 1) == b"foo"
assert cur.pgresult.get_value(0, 2) is None
assert cur.nextset() is None |
It's not our decision, it is what the database expects.
No idea. You should investigate that. |
Ah, right. Now I get it, thanks.
Feels like a mypy limitation. I don't think it's necessary to investigate further, we understand the idea of the error reported, and how to fix it. I just think it's not "smart enough" to realise the assert on the line before ( |
|
@dvarrazzo I've pushed a new commit which parametrizes the existing test_cursor.py to avoid code duplication. Here is the approach I went for: @pytest.mark.parametrize("cursor_factory, query", [
(None, "select %s::int, %s::text, %s::text"),
(psycopg.RawCursor, "select $1::int, $2::text, $3::text"),
])
def test_execute_sequence(conn, cursor_factory, query):
if cursor_factory:
conn.cursor_factory=cursor_factory
cur = conn.cursor()
rv = cur.execute(query, [1, "foo", None])
assert rv is cur
assert len(cur._results) == 1
assert cur.pgresult.get_value(0, 0) == b"1"
assert cur.pgresult.get_value(0, 1) == b"foo"
assert cur.pgresult.get_value(0, 2) is None
assert cur.nextset() is NoneI wanted the existing test to be functionally unmodified, hence the Maybe would have been cleaner to pass I hope you'll like this approach! But, if you see an even better way, I'm of course eager to know how it should be done instead! Thanks for guidance. |
|
@dvarrazzo Just to confirm, I know the async equivalent test remains to be fixed. Just wanted your feedback before proceeding. |
|
I went ahead and made test_cursor_async.py parametrized as well. |
Hello, thank you for this. I'll take a look today. At first glance, it's not parametrized the way I expected. I'll try to massage the cursor+client-cursor together and then see if the raw cursor flows well in the same pattern, or if instead your approach works better. Cheers! |
|
@joelonsql I have started to refactor cursor tests in the tests-refactoring branch. Most tests actually use the same code now. I think your tests could also use the same codebase, although many will need the query rewritten. Maybe we can use a support function to rewrite the placeholders, so that ph("select %s, %s") would be no-op for Cursor and BaseCursor but would return "select $1, $2" for RawCursor. |
Looks good!
I like the ph() idea. I guess it would probably just call the default _query2pg() method behind the scenes, and turn a %s,%s,%s-query into a $1,$2,$3-query. This wouldn't allow us to test more complex raw queries, but that's OK since we can have a separate much smaller test_raw_cursor.py test that cover complex cases. Once you've implemented the ph() idea, I can then add a very advanced complex test_raw_cursor.py test, unless you want me to look at the ph() idea as well? |
|
Implementing |
eebf81d to
1116bce
Compare
|
I have worked a bit on this feature, after making the tests less repetitive (first I unified the Cursor and ClientCursor tests into the same module, then added RawCursor to the same module as well). Fixed some issue, cleaned up docs... I think it's ready to merge now. Thank you very much! |
Bumps [psycopg](https://github.com/psycopg/psycopg) from 3.1.10 to 3.1.12. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/psycopg/psycopg/blob/master/docs/news.rst">psycopg's changelog</a>.</em></p> <blockquote> <p>.. currentmodule:: psycopg</p> <p>.. index:: single: Release notes single: News</p> <h1><code>psycopg</code> release notes</h1> <h2>Future releases</h2> <p>Psycopg 3.2 (unreleased) ^^^^^^^^^^^^^^^^^^^^^^^^</p> <ul> <li>Add support for integer, floating point, boolean <code>NumPy scalar types</code>__ (:ticket:<code>[#332](https://github.com/psycopg/psycopg/issues/332)</code>).</li> <li>Add :ref:<code>raw-query-cursors</code> to execute queries using placeholders in PostgreSQL format (<code>$1</code>, <code>$2</code>...) (🎫<code>[#560](https://github.com/psycopg/psycopg/issues/560)</code>).</li> <li>Add support for libpq functions to close prepared statements and portals introduced in libpq v17 (:ticket:<code>[#603](https://github.com/psycopg/psycopg/issues/603)</code>).</li> <li>Disable receiving more than one result on the same cursor in pipeline mode, to iterate through <code>~Cursor.nextset()</code>. The behaviour was different than in non-pipeline mode and not totally reliable (:ticket:<code>[#604](https://github.com/psycopg/psycopg/issues/604)</code>). The <code>Cursor</code> now only preserves the results set of the last <code>~Cursor.execute()</code>, consistently with non-pipeline mode.</li> </ul> <p>.. __: <a href="https://numpy.org/doc/stable/reference/arrays.scalars.html#built-in-scalar-types">https://numpy.org/doc/stable/reference/arrays.scalars.html#built-in-scalar-types</a></p> <h2>Current release</h2> <p>Psycopg 3.1.12 ^^^^^^^^^^^^^^</p> <ul> <li>Fix possible hanging if a connection is closed while querying (:ticket:<code>[#608](https://github.com/psycopg/psycopg/issues/608)</code>).</li> <li>Fix memory leak when <code>~register_*()</code> functions are called repeatedly (:ticket:<code>[#647](https://github.com/psycopg/psycopg/issues/647)</code>).</li> </ul> <p>Psycopg 3.1.11 ^^^^^^^^^^^^^^</p> <ul> <li>Avoid caching the parsing results of large queries to avoid excessive memory usage (:ticket:<code>[#628](https://github.com/psycopg/psycopg/issues/628)</code>).</li> <li>Fix integer overflow in C/binary extension with OID > 2^31 (:ticket:<code>[#630](https://github.com/psycopg/psycopg/issues/630)</code>).</li> <li>Fix loading of intervals with days and months or years (:ticket:<code>[#643](https://github.com/psycopg/psycopg/issues/643)</code>).</li> <li>Work around excessive CPU usage on Windows (reported in :ticket:<code>[#645](https://github.com/psycopg/psycopg/issues/645)</code>).</li> <li>Fix building on Solaris and derivatives (:ticket:<code>[#632](https://github.com/psycopg/psycopg/issues/632)</code>).</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/psycopg/psycopg/commit/5498bb85c62cbe71da16731e9f25e8727a098c80"><code>5498bb8</code></a> chore: bump psycopg package version to 3.1.12</li> <li><a href="https://github.com/psycopg/psycopg/commit/b4b8ceb32da7f182ba0e3e0e81d692ce604b15cb"><code>b4b8ceb</code></a> Merge branch 'fix-608' into maint-3.1</li> <li><a href="https://github.com/psycopg/psycopg/commit/ae43e63400dc7366dde1e26d689cff69238c7d2c"><code>ae43e63</code></a> fix: use poll() instead of epoll() for waiting</li> <li><a href="https://github.com/psycopg/psycopg/commit/8b564e8f2539e6accaa853ec80636ab0d2d53de1"><code>8b564e8</code></a> fix: don't hang forever if async connection is closed while querying</li> <li><a href="https://github.com/psycopg/psycopg/commit/b3e0be9869257cfa9602608caee4ebe96148f63f"><code>b3e0be9</code></a> fix: don't raise spurious errors on cancel if the connection is closed</li> <li><a href="https://github.com/psycopg/psycopg/commit/125f93c852cf9a0c4158fe45f162b3b420568a8e"><code>125f93c</code></a> ci(scaleway_m1): add list command and jq pretty output</li> <li><a href="https://github.com/psycopg/psycopg/commit/87dc783af3e744fb6dc411794f9efb627b9a7d1e"><code>87dc783</code></a> chore(crdb): test 23.1 in CI</li> <li><a href="https://github.com/psycopg/psycopg/commit/dbddfc5d3f567cb291b6f98868a97de9ec40d153"><code>dbddfc5</code></a> Merge branch 'fix-647' into maint-3.1</li> <li><a href="https://github.com/psycopg/psycopg/commit/4137dedad1e2e9078562bbb1ad5fff1b7ef640ed"><code>4137ded</code></a> fix: cache all dynamically generated adapter types</li> <li><a href="https://github.com/psycopg/psycopg/commit/d7eea4989766ea92b0d7d51559ff11779ff3b872"><code>d7eea49</code></a> fix: cache dynamic adapters created in register_array()</li> <li>Additional commits viewable in <a href="https://github.com/psycopg/psycopg/compare/3.1.10...3.1.12">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
Bumps [psycopg](https://github.com/psycopg/psycopg) from 3.1.10 to 3.1.12. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/psycopg/psycopg/blob/master/docs/news.rst">psycopg's changelog</a>.</em></p> <blockquote> <p>.. currentmodule:: psycopg</p> <p>.. index:: single: Release notes single: News</p> <h1><code>psycopg</code> release notes</h1> <h2>Future releases</h2> <p>Psycopg 3.2 (unreleased) ^^^^^^^^^^^^^^^^^^^^^^^^</p> <ul> <li>Add support for integer, floating point, boolean <code>NumPy scalar types</code>__ (:ticket:<code>[#332](https://github.com/psycopg/psycopg/issues/332)</code>).</li> <li>Add :ref:<code>raw-query-cursors</code> to execute queries using placeholders in PostgreSQL format (<code>$1</code>, <code>$2</code>...) (🎫<code>[#560](https://github.com/psycopg/psycopg/issues/560)</code>).</li> <li>Add support for libpq functions to close prepared statements and portals introduced in libpq v17 (:ticket:<code>[#603](https://github.com/psycopg/psycopg/issues/603)</code>).</li> <li>Disable receiving more than one result on the same cursor in pipeline mode, to iterate through <code>~Cursor.nextset()</code>. The behaviour was different than in non-pipeline mode and not totally reliable (:ticket:<code>[#604](https://github.com/psycopg/psycopg/issues/604)</code>). The <code>Cursor</code> now only preserves the results set of the last <code>~Cursor.execute()</code>, consistently with non-pipeline mode.</li> </ul> <p>.. __: <a href="https://numpy.org/doc/stable/reference/arrays.scalars.html#built-in-scalar-types">https://numpy.org/doc/stable/reference/arrays.scalars.html#built-in-scalar-types</a></p> <h2>Current release</h2> <p>Psycopg 3.1.12 ^^^^^^^^^^^^^^</p> <ul> <li>Fix possible hanging if a connection is closed while querying (:ticket:<code>[#608](https://github.com/psycopg/psycopg/issues/608)</code>).</li> <li>Fix memory leak when <code>~register_*()</code> functions are called repeatedly (:ticket:<code>[#647](https://github.com/psycopg/psycopg/issues/647)</code>).</li> </ul> <p>Psycopg 3.1.11 ^^^^^^^^^^^^^^</p> <ul> <li>Avoid caching the parsing results of large queries to avoid excessive memory usage (:ticket:<code>[#628](https://github.com/psycopg/psycopg/issues/628)</code>).</li> <li>Fix integer overflow in C/binary extension with OID > 2^31 (:ticket:<code>[#630](https://github.com/psycopg/psycopg/issues/630)</code>).</li> <li>Fix loading of intervals with days and months or years (:ticket:<code>[#643](https://github.com/psycopg/psycopg/issues/643)</code>).</li> <li>Work around excessive CPU usage on Windows (reported in :ticket:<code>[#645](https://github.com/psycopg/psycopg/issues/645)</code>).</li> <li>Fix building on Solaris and derivatives (:ticket:<code>[#632](https://github.com/psycopg/psycopg/issues/632)</code>).</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/psycopg/psycopg/commit/5498bb85c62cbe71da16731e9f25e8727a098c80"><code>5498bb8</code></a> chore: bump psycopg package version to 3.1.12</li> <li><a href="https://github.com/psycopg/psycopg/commit/b4b8ceb32da7f182ba0e3e0e81d692ce604b15cb"><code>b4b8ceb</code></a> Merge branch 'fix-608' into maint-3.1</li> <li><a href="https://github.com/psycopg/psycopg/commit/ae43e63400dc7366dde1e26d689cff69238c7d2c"><code>ae43e63</code></a> fix: use poll() instead of epoll() for waiting</li> <li><a href="https://github.com/psycopg/psycopg/commit/8b564e8f2539e6accaa853ec80636ab0d2d53de1"><code>8b564e8</code></a> fix: don't hang forever if async connection is closed while querying</li> <li><a href="https://github.com/psycopg/psycopg/commit/b3e0be9869257cfa9602608caee4ebe96148f63f"><code>b3e0be9</code></a> fix: don't raise spurious errors on cancel if the connection is closed</li> <li><a href="https://github.com/psycopg/psycopg/commit/125f93c852cf9a0c4158fe45f162b3b420568a8e"><code>125f93c</code></a> ci(scaleway_m1): add list command and jq pretty output</li> <li><a href="https://github.com/psycopg/psycopg/commit/87dc783af3e744fb6dc411794f9efb627b9a7d1e"><code>87dc783</code></a> chore(crdb): test 23.1 in CI</li> <li><a href="https://github.com/psycopg/psycopg/commit/dbddfc5d3f567cb291b6f98868a97de9ec40d153"><code>dbddfc5</code></a> Merge branch 'fix-647' into maint-3.1</li> <li><a href="https://github.com/psycopg/psycopg/commit/4137dedad1e2e9078562bbb1ad5fff1b7ef640ed"><code>4137ded</code></a> fix: cache all dynamically generated adapter types</li> <li><a href="https://github.com/psycopg/psycopg/commit/d7eea4989766ea92b0d7d51559ff11779ff3b872"><code>d7eea49</code></a> fix: cache dynamic adapters created in register_array()</li> <li>Additional commits viewable in <a href="https://github.com/psycopg/psycopg/compare/3.1.10...3.1.12">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
Bumps [psycopg](https://github.com/psycopg/psycopg) from 3.1.10 to 3.1.12. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/psycopg/psycopg/blob/master/docs/news.rst">psycopg's changelog</a>.</em></p> <blockquote> <p>.. currentmodule:: psycopg</p> <p>.. index:: single: Release notes single: News</p> <h1><code>psycopg</code> release notes</h1> <h2>Future releases</h2> <p>Psycopg 3.2 (unreleased) ^^^^^^^^^^^^^^^^^^^^^^^^</p> <ul> <li>Add support for integer, floating point, boolean <code>NumPy scalar types</code>__ (:ticket:<code>[microsoft#332](https://github.com/psycopg/psycopg/issues/332)</code>).</li> <li>Add :ref:<code>raw-query-cursors</code> to execute queries using placeholders in PostgreSQL format (<code>$1</code>, <code>$2</code>...) (🎫<code>[microsoft#560](https://github.com/psycopg/psycopg/issues/560)</code>).</li> <li>Add support for libpq functions to close prepared statements and portals introduced in libpq v17 (:ticket:<code>[microsoft#603](https://github.com/psycopg/psycopg/issues/603)</code>).</li> <li>Disable receiving more than one result on the same cursor in pipeline mode, to iterate through <code>~Cursor.nextset()</code>. The behaviour was different than in non-pipeline mode and not totally reliable (:ticket:<code>[microsoft#604](https://github.com/psycopg/psycopg/issues/604)</code>). The <code>Cursor</code> now only preserves the results set of the last <code>~Cursor.execute()</code>, consistently with non-pipeline mode.</li> </ul> <p>.. __: <a href="https://numpy.org/doc/stable/reference/arrays.scalars.html#built-in-scalar-types">https://numpy.org/doc/stable/reference/arrays.scalars.html#built-in-scalar-types</a></p> <h2>Current release</h2> <p>Psycopg 3.1.12 ^^^^^^^^^^^^^^</p> <ul> <li>Fix possible hanging if a connection is closed while querying (:ticket:<code>[microsoft#608](https://github.com/psycopg/psycopg/issues/608)</code>).</li> <li>Fix memory leak when <code>~register_*()</code> functions are called repeatedly (:ticket:<code>[microsoft#647](https://github.com/psycopg/psycopg/issues/647)</code>).</li> </ul> <p>Psycopg 3.1.11 ^^^^^^^^^^^^^^</p> <ul> <li>Avoid caching the parsing results of large queries to avoid excessive memory usage (:ticket:<code>[microsoft#628](https://github.com/psycopg/psycopg/issues/628)</code>).</li> <li>Fix integer overflow in C/binary extension with OID > 2^31 (:ticket:<code>[microsoft#630](https://github.com/psycopg/psycopg/issues/630)</code>).</li> <li>Fix loading of intervals with days and months or years (:ticket:<code>[microsoft#643](https://github.com/psycopg/psycopg/issues/643)</code>).</li> <li>Work around excessive CPU usage on Windows (reported in :ticket:<code>[microsoft#645](https://github.com/psycopg/psycopg/issues/645)</code>).</li> <li>Fix building on Solaris and derivatives (:ticket:<code>[microsoft#632](https://github.com/psycopg/psycopg/issues/632)</code>).</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/psycopg/psycopg/commit/5498bb85c62cbe71da16731e9f25e8727a098c80"><code>5498bb8</code></a> chore: bump psycopg package version to 3.1.12</li> <li><a href="https://github.com/psycopg/psycopg/commit/b4b8ceb32da7f182ba0e3e0e81d692ce604b15cb"><code>b4b8ceb</code></a> Merge branch 'fix-608' into maint-3.1</li> <li><a href="https://github.com/psycopg/psycopg/commit/ae43e63400dc7366dde1e26d689cff69238c7d2c"><code>ae43e63</code></a> fix: use poll() instead of epoll() for waiting</li> <li><a href="https://github.com/psycopg/psycopg/commit/8b564e8f2539e6accaa853ec80636ab0d2d53de1"><code>8b564e8</code></a> fix: don't hang forever if async connection is closed while querying</li> <li><a href="https://github.com/psycopg/psycopg/commit/b3e0be9869257cfa9602608caee4ebe96148f63f"><code>b3e0be9</code></a> fix: don't raise spurious errors on cancel if the connection is closed</li> <li><a href="https://github.com/psycopg/psycopg/commit/125f93c852cf9a0c4158fe45f162b3b420568a8e"><code>125f93c</code></a> ci(scaleway_m1): add list command and jq pretty output</li> <li><a href="https://github.com/psycopg/psycopg/commit/87dc783af3e744fb6dc411794f9efb627b9a7d1e"><code>87dc783</code></a> chore(crdb): test 23.1 in CI</li> <li><a href="https://github.com/psycopg/psycopg/commit/dbddfc5d3f567cb291b6f98868a97de9ec40d153"><code>dbddfc5</code></a> Merge branch 'fix-647' into maint-3.1</li> <li><a href="https://github.com/psycopg/psycopg/commit/4137dedad1e2e9078562bbb1ad5fff1b7ef640ed"><code>4137ded</code></a> fix: cache all dynamically generated adapter types</li> <li><a href="https://github.com/psycopg/psycopg/commit/d7eea4989766ea92b0d7d51559ff11779ff3b872"><code>d7eea49</code></a> fix: cache dynamic adapters created in register_array()</li> <li>Additional commits viewable in <a href="https://github.com/psycopg/psycopg/compare/3.1.10...3.1.12">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
Bumps [psycopg](https://github.com/psycopg/psycopg) from 3.1.15 to 3.1.18. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/psycopg/psycopg/blob/master/docs/news.rst">psycopg's changelog</a>.</em></p> <blockquote> <p>.. currentmodule:: psycopg</p> <p>.. index:: single: Release notes single: News</p> <h1><code>psycopg</code> release notes</h1> <h2>Future releases</h2> <p>Psycopg 3.2 (unreleased) ^^^^^^^^^^^^^^^^^^^^^^^^</p> <ul> <li>Add support for integer, floating point, boolean <code>NumPy scalar types</code>__ (:ticket:<code>[#332](https://github.com/psycopg/psycopg/issues/332)</code>).</li> <li>Add <code>!timeout</code> and <code>!stop_after</code> parameters to <code>Connection.notifies()</code> (:ticket:<code>340</code>).</li> <li>Add :ref:<code>raw-query-cursors</code> to execute queries using placeholders in PostgreSQL format (<code>$1</code>, <code>$2</code>...) (:ticket:<code>[#560](https://github.com/psycopg/psycopg/issues/560)</code>).</li> <li>Add <code>~rows.scalar_row</code> to return scalar values from a query (:ticket:<code>[#723](https://github.com/psycopg/psycopg/issues/723)</code>).</li> <li>Add <code>~Connection.set_autocommit()</code> on sync connections, and similar transaction control methods available on the async connections.</li> <li>Add support for libpq functions to close prepared statements and portals introduced in libpq v17 (:ticket:<code>[#603](https://github.com/psycopg/psycopg/issues/603)</code>).</li> <li>The <code>!context</code> parameter of <code>sql</code> objects <code>~sql.Composable.as_string()</code> and <code>~sql.Composable.as_bytes()</code> methods is now optional (:ticket:<code>[#716](https://github.com/psycopg/psycopg/issues/716)</code>).</li> <li>Disable receiving more than one result on the same cursor in pipeline mode, to iterate through <code>~Cursor.nextset()</code>. The behaviour was different than in non-pipeline mode and not totally reliable (:ticket:<code>[#604](https://github.com/psycopg/psycopg/issues/604)</code>). The <code>Cursor</code> now only preserves the results set of the last <code>~Cursor.execute()</code>, consistently with non-pipeline mode.</li> </ul> <p>.. __: <a href="https://numpy.org/doc/stable/reference/arrays.scalars.html#built-in-scalar-types">https://numpy.org/doc/stable/reference/arrays.scalars.html#built-in-scalar-types</a></p> <h2>Current release</h2> <p>Psycopg 3.1.18 ^^^^^^^^^^^^^^</p> <ul> <li>Fix possible deadlock on pipeline exit (:ticket:<code>[#685](https://github.com/psycopg/psycopg/issues/685)</code>).</li> <li>Fix overflow loading large intervals in C module (:ticket:<code>[#719](https://github.com/psycopg/psycopg/issues/719)</code>).</li> <li>Fix compatibility with musl libc distributions affected by <code>CPython issue [#65821](https://github.com/psycopg/psycopg/issues/65821)</code>__ (:ticket:<code>[#725](https://github.com/psycopg/psycopg/issues/725)</code>).</li> </ul> <p>.. __: <a href="https://redirect.github.com/python/cpython/issues/65821">python/cpython#65821</a></p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/psycopg/psycopg/commit/8585a23fcd7bcf75193adbc10d3005752ba8f15f"><code>8585a23</code></a> chore: bump psycopg package version to 3.1.18</li> <li><a href="https://github.com/psycopg/psycopg/commit/ab646b70c82aafe6004064a40a3ba358142999a3"><code>ab646b7</code></a> fix(c): drop spurious loop break in pipeline_communicate</li> <li><a href="https://github.com/psycopg/psycopg/commit/bebfe97f934c9136e4db52709ac0fb4dd9cae64d"><code>bebfe97</code></a> chore: bump cibuildwheel version</li> <li><a href="https://github.com/psycopg/psycopg/commit/89394a6f36d42d308a8e672e9b5deef8e76254ae"><code>89394a6</code></a> chore: bump checkout action to v4</li> <li><a href="https://github.com/psycopg/psycopg/commit/ed579e51ca9b44af148e55d345e312f58ce12a6f"><code>ed579e5</code></a> docs: fix tickets format</li> <li><a href="https://github.com/psycopg/psycopg/commit/d4a4e8e1447de3446f614a29a8274ef7c4d03d64"><code>d4a4e8e</code></a> Merge branch 'musl-ctypes' into maint-3.1</li> <li><a href="https://github.com/psycopg/psycopg/commit/8bc51e6812cfaedebdd7afff7c86be301d5fbf66"><code>8bc51e6</code></a> docs: mention musl-ctypes workaround in news file</li> <li><a href="https://github.com/psycopg/psycopg/commit/afb040a800b2667a07dc441e8cdb94e55a0dcf65"><code>afb040a</code></a> fix: add <code>libc.so</code> fallback for musl systems to the ctypes impl</li> <li><a href="https://github.com/psycopg/psycopg/commit/06ef0d92109a63fa1a7630804a3a26af0e0a39c9"><code>06ef0d9</code></a> test: drop ineffective marker on fixture</li> <li><a href="https://github.com/psycopg/psycopg/commit/b955118e523c84f5f702d93fd74288ce51ff61db"><code>b955118</code></a> Merge branch 'fix-interval-overflow' into maint-3.1</li> <li>Additional commits viewable in <a href="https://github.com/psycopg/psycopg/compare/3.1.15...3.1.18">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com> Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
Bumps the patch-dependencies group with 5 updates: | Package | From | To | | --- | --- | --- | | [bcrypt](https://github.com/pyca/bcrypt) | `4.1.2` | `4.1.3` | | [icalendar](https://github.com/collective/icalendar) | `5.0.11` | `5.0.12` | | [pymupdf](https://github.com/pymupdf/pymupdf) | `1.24.2` | `1.24.3` | | [psycopg[c]](https://github.com/psycopg/psycopg) | `3.1.18` | `3.1.19` | | [psycopg[binary]](https://github.com/psycopg/psycopg) | `3.1.18` | `3.1.19` | Updates `bcrypt` from 4.1.2 to 4.1.3 <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pyca/bcrypt/commit/35e5a6f5a5131bef22f04dcc9bf401b6eab79642"><code>35e5a6f</code></a> Bump version for 4.1.3 release (<a href="https://redirect.github.com/pyca/bcrypt/issues/791">#791</a>)</li> <li><a href="https://github.com/pyca/bcrypt/commit/d99d1e568d41c7248269bfd37295f65c74fb12bd"><code>d99d1e5</code></a> Bump autocfg from 1.2.0 to 1.3.0 in /src/_bcrypt (<a href="https://redirect.github.com/pyca/bcrypt/issues/790">#790</a>)</li> <li><a href="https://github.com/pyca/bcrypt/commit/0775d47c9a1436706932b1bf8911735881aec8e2"><code>0775d47</code></a> allow testing with pytest 8.2.0 (<a href="https://redirect.github.com/pyca/bcrypt/issues/786">#786</a>)</li> <li><a href="https://github.com/pyca/bcrypt/commit/97d09ac5c190de343af145b61d0b4356950281c0"><code>97d09ac</code></a> Bump base64 from 0.22.0 to 0.22.1 in /src/_bcrypt (<a href="https://redirect.github.com/pyca/bcrypt/issues/787">#787</a>)</li> <li><a href="https://github.com/pyca/bcrypt/commit/ee4a9a8dd1b23d33da931022f2acbf156316f2fb"><code>ee4a9a8</code></a> use ubuntu rolling in arm64 CI (<a href="https://redirect.github.com/pyca/bcrypt/issues/784">#784</a>)</li> <li><a href="https://github.com/pyca/bcrypt/commit/7d2474faa546a1a9daae5cac282977d34fe8aedd"><code>7d2474f</code></a> Bump libc from 0.2.153 to 0.2.154 in /src/_bcrypt (<a href="https://redirect.github.com/pyca/bcrypt/issues/783">#783</a>)</li> <li><a href="https://github.com/pyca/bcrypt/commit/7a252dde4d84dedfc9d8e04308234fea18c6fa45"><code>7a252dd</code></a> Try blocking pytest 8.2.0 (<a href="https://redirect.github.com/pyca/bcrypt/issues/785">#785</a>)</li> <li><a href="https://github.com/pyca/bcrypt/commit/297a915720a64c15274cd927a2b6f0fef2e28772"><code>297a915</code></a> Remove brew install rust from macOS CI (<a href="https://redirect.github.com/pyca/bcrypt/issues/782">#782</a>)</li> <li><a href="https://github.com/pyca/bcrypt/commit/6b3f99eff2447cc7cf9b0cd7bffb3e31871c3648"><code>6b3f99e</code></a> Bump parking_lot_core from 0.9.9 to 0.9.10 in /src/_bcrypt (<a href="https://redirect.github.com/pyca/bcrypt/issues/778">#778</a>)</li> <li><a href="https://github.com/pyca/bcrypt/commit/c88b31007dfada537b9594540a4e12d49e08eca0"><code>c88b310</code></a> Bump parking_lot from 0.12.1 to 0.12.2 in /src/_bcrypt (<a href="https://redirect.github.com/pyca/bcrypt/issues/780">#780</a>)</li> <li>Additional commits viewable in <a href="https://github.com/pyca/bcrypt/compare/4.1.2...4.1.3">compare view</a></li> </ul> </details> <br /> Updates `icalendar` from 5.0.11 to 5.0.12 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/collective/icalendar/blob/master/CHANGES.rst">icalendar's changelog</a>.</em></p> <blockquote> <h2>5.0.12 (2024-03-19)</h2> <p>Minor changes:</p> <ul> <li>Analyse code coverage of test files</li> <li>Added corpus to fuzzing directory</li> <li>Added exclusion of fuzzing corpus in MANIFEST.in</li> <li>Augmented fuzzer to optionally convert multiple calendars from a source string</li> <li>Add script to convert OSS FUZZ test cases to Python/pytest test cases</li> <li>Added additional exception handling of defined errors to fuzzer, to allow fuzzer to explore deeper</li> <li>Added more instrumentation to fuzz-harness</li> <li>Rename "contributor" to "collaborator" in documentation</li> <li>Correct the outdated "icalendar view myfile.ics" command in documentation. <a href="https://redirect.github.com/collective/icalendar/issues/588">#588</a></li> <li>Update GitHub Actions steps versions</li> <li>Keep GitHub Actions up to date with GitHub's Dependabot</li> </ul> <p>Breaking changes:</p> <ul> <li>...</li> </ul> <p>New features:</p> <ul> <li>...</li> </ul> <p>Bug fixes:</p> <ul> <li>...</li> <li>Fixed index error in cal.py when attempting to pop from an empty stack</li> <li>Fixed type error in prop.py when attempting to join strings into a byte-string</li> <li>Caught Wrong Date Format in ical_fuzzer to resolve fuzzing coverage blocker</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/collective/icalendar/commit/72966e7610416cf718f6ad9575db4dab4c2d7d96"><code>72966e7</code></a> try to set a body text of the release</li> <li><a href="https://github.com/collective/icalendar/commit/38fcd16a78c835ed0fb268ba5ba4302c28be2f27"><code>38fcd16</code></a> modify release</li> <li><a href="https://github.com/collective/icalendar/commit/679ecab15fdd104ded84f6775c3f13cc895a99e5"><code>679ecab</code></a> use different release action</li> <li><a href="https://github.com/collective/icalendar/commit/216452c616c983549ce5bd88be6f3f3cb14a7c9d"><code>216452c</code></a> use github.token</li> <li><a href="https://github.com/collective/icalendar/commit/72c0d6daecf552f90d9a1bdca78d23c06e906b3f"><code>72c0d6d</code></a> try other tag release method</li> <li><a href="https://github.com/collective/icalendar/commit/5551ad90619e9d06d76e12555212efdea85733a3"><code>5551ad9</code></a> version 5.0.12</li> <li><a href="https://github.com/collective/icalendar/commit/f41772059a67007a5e394df23887bb294d6fbe83"><code>f417720</code></a> Merge pull request <a href="https://redirect.github.com/collective/icalendar/issues/602">#602</a> from niccokunzmann/refactor-test-6</li> <li><a href="https://github.com/collective/icalendar/commit/b51fef6e9ad74c7990d872ded333db9ffa87f47c"><code>b51fef6</code></a> Merge pull request <a href="https://redirect.github.com/collective/icalendar/issues/599">#599</a> from niccokunzmann/refactor-test-3</li> <li><a href="https://github.com/collective/icalendar/commit/fb0baf40648522336a6997119429baf08dcdf8da"><code>fb0baf4</code></a> Merge pull request <a href="https://redirect.github.com/collective/icalendar/issues/598">#598</a> from niccokunzmann/refactor-test-2</li> <li><a href="https://github.com/collective/icalendar/commit/00a2d56f2e36413a035a498c8822471d96cca480"><code>00a2d56</code></a> Merge pull request <a href="https://redirect.github.com/collective/icalendar/issues/597">#597</a> from niccokunzmann/refactor-test-1</li> <li>Additional commits viewable in <a href="https://github.com/collective/icalendar/compare/v5.0.11...v5.0.12">compare view</a></li> </ul> </details> <br /> Updates `pymupdf` from 1.24.2 to 1.24.3 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/pymupdf/pymupdf/releases">pymupdf's releases</a>.</em></p> <blockquote> <h2>PyMuPDF-1.24.3 released</h2> <p>PyMuPDF-1.24.3 has been released.</p> <p>Wheels for Windows, Linux and MacOS, and the sdist, are available on pypi.org and can be installed in the usual way, for example:</p> <pre><code>python -m pip install --upgrade pymupdf </code></pre> <p>[Linux-aarch64 wheels will be built and uploaded later.]</p> <p><strong>Changes in version 1.24.3 (2024-05-09)</strong></p> <ul> <li> <p>The Python module is now called <code>pymupdf</code>. <code>fitz</code> is still supported for backwards compatibility.</p> </li> <li> <p>Use MuPDF-1.24.2.</p> </li> <li> <p>Fixed issues:</p> <ul> <li><strong>Fixed</strong> <a href="https://redirect.github.com/pymupdf/pymupdf/issues/3357">#3357</a></li> <li><strong>Fixed</strong> <a href="https://redirect.github.com/pymupdf/pymupdf/issues/3376">#3376</a></li> <li><strong>Fixed</strong> <a href="https://redirect.github.com/pymupdf/pymupdf/issues/3379">#3379</a></li> <li><strong>Fixed</strong> <a href="https://redirect.github.com/pymupdf/pymupdf/issues/3381">#3381</a></li> <li><strong>Fixed</strong> <a href="https://redirect.github.com/pymupdf/pymupdf/issues/3402">#3402</a></li> <li><strong>Fixed</strong> <a href="https://redirect.github.com/pymupdf/pymupdf/issues/3414">#3414</a></li> <li><strong>Fixed</strong> <a href="https://redirect.github.com/pymupdf/pymupdf/issues/3430">#3430</a></li> </ul> </li> <li> <p>Other:</p> <ul> <li> <p>New/modified methods:</p> <ul> <li><code>Page.remove_rotation()</code>: new, set page rotation to zero while keeping appearance.</li> </ul> </li> <li> <p>Fixed some problems when checking for PDF properties.</p> </li> <li> <p>Fixed pip builds from sdist (see discussion <a href="https://redirect.github.com/pymupdf/pymupdf/issues/3360">#3360</a>).</p> </li> </ul> </li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/pymupdf/PyMuPDF/blob/main/changes.txt">pymupdf's changelog</a>.</em></p> <blockquote> <h1>Change Log</h1> <p><strong>Changes in version 1.24.3 (2024-05-09)</strong></p> <ul> <li> <p>The Python module is now called <code>pymupdf</code>. <code>fitz</code> is still supported for backwards compatibility.</p> </li> <li> <p>Use MuPDF-1.24.2.</p> </li> <li> <p>Fixed issues:</p> <ul> <li><strong>Fixed</strong> <code>3357 <https://github.com/pymupdf/PyMuPDF/issues/3357></code>_: PyMuPDF==1.24.0 will hanging when using page.get_text("text")</li> <li><strong>Fixed</strong> <code>3376 <https://github.com/pymupdf/PyMuPDF/issues/3376></code>_: Redacting results are not as expected in 1.24.x.</li> <li><strong>Fixed</strong> <code>3379 <https://github.com/pymupdf/PyMuPDF/issues/3379></code>_: Documentation mismatch for get_text_blocks return value order.</li> <li><strong>Fixed</strong> <code>3381 <https://github.com/pymupdf/PyMuPDF/issues/3381></code>_: Contents stream contains floats in scientific notation</li> <li><strong>Fixed</strong> <code>3402 <https://github.com/pymupdf/PyMuPDF/issues/3402></code>_: Cannot add Widgets containing inter-field-calculation JavaScript</li> <li><strong>Fixed</strong> <code>3414 <https://github.com/pymupdf/PyMuPDF/issues/3414></code>_: missing attribute set_dpi()</li> <li><strong>Fixed</strong> <code>3430 <https://github.com/pymupdf/PyMuPDF/issues/3430></code>_: page.get_text() cause process freeze with certain pdf on v1.24.2</li> </ul> </li> <li> <p>Other:</p> <ul> <li> <p>New/modified methods:</p> <ul> <li><code>Page.remove_rotation()</code>: new, set page rotation to zero while keeping appearance.</li> </ul> </li> <li> <p>Fixed some problems when checking for PDF properties.</p> </li> <li> <p>Fixed pip builds from sdist (see discussion <code>3360 <https://github.com/pymupdf/PyMuPDF/discussions/3360></code>_: Alpine linux docker build failing "No matching distribution found for pymupdfb==1.24.1").</p> </li> </ul> </li> </ul> <p><strong>Changes in version 1.24.2 (2024-04-17)</strong></p> <ul> <li> <p>Removed obsolete classic implementation from releases (previously available as module <code>fitz_old</code>).</p> </li> <li> <p>Fixed issues:</p> <ul> <li><strong>Fixed</strong> <code>3331 <https://github.com/pymupdf/PyMuPDF/issues/3331></code>_: Document.pages() is incorrectly type-hinted</li> <li><strong>Fixed</strong> <code>3354 <https://github.com/pymupdf/PyMuPDF/issues/3354></code>_: PyMuPDF==1.24.1: AttributeError: property 'metadata' of 'Document' object has no setter</li> </ul> </li> <li> <p>Other:</p> <ul> <li> <p>New/modified methods:</p> <ul> <li><code>Document.bake()</code>: new, make annotations / fields permanent content.</li> <li><code>Page.cluster_drawings()</code>: new, identifies drawing items</li> </ul> </li> </ul> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pymupdf/PyMuPDF/commit/5bcc16e6ee52877965df2fb0ad60b518e860b97d"><code>5bcc16e</code></a> Updated release date for 1.24.3.</li> <li><a href="https://github.com/pymupdf/PyMuPDF/commit/762be9ebeaac1e9174e9f41a6a561b12262e4792"><code>762be9e</code></a> scripts/gh_release.py: avoid problems when building macos-arm64 wheels.</li> <li><a href="https://github.com/pymupdf/PyMuPDF/commit/2d68701a16f58ab7c4c2c03cdd84485a2a33bc11"><code>2d68701</code></a> .github/workflows/build_wheels.yml: use macos-13 and macos-14.</li> <li><a href="https://github.com/pymupdf/PyMuPDF/commit/b18d200407df544b75e6bb0d55fa6fdb56a2ed63"><code>b18d200</code></a> Update changelog, version numbers and release dates for release 1.24.3.</li> <li><a href="https://github.com/pymupdf/PyMuPDF/commit/89f9b442c30141a51e9aec4e958487a7f8f3a802"><code>89f9b44</code></a> tests/test_annots.py:test_1645(): fix confusing lack of indentation in fn call.</li> <li><a href="https://github.com/pymupdf/PyMuPDF/commit/f8456bad93b872076f28f9c066a37981018a3522"><code>f8456ba</code></a> tests/: update test_1645() to match recent mupdf master.</li> <li><a href="https://github.com/pymupdf/PyMuPDF/commit/2ceb2e1fec0b0e0564674b11aa399fb49ecc9e51"><code>2ceb2e1</code></a> tests/: updated to match fixes in MuPDF-1.24.2.</li> <li><a href="https://github.com/pymupdf/PyMuPDF/commit/64159ac5d94dd2ce01bc783c526614e3c19d9791"><code>64159ac</code></a> Add an additional check to test_q_count().</li> <li><a href="https://github.com/pymupdf/PyMuPDF/commit/00d54f2770f7cfd0ebd0ea2fbb08825de5e01d9d"><code>00d54f2</code></a> .github/workflows/build_wheels.yml: use scripts/gh_release.py to build sdists.</li> <li><a href="https://github.com/pymupdf/PyMuPDF/commit/a4f7d6a8ec1aa8541d5dee42c8e26dd289a56bde"><code>a4f7d6a</code></a> scripts/gh_release.py: Also build PyMuPDFb sdist.</li> <li>Additional commits viewable in <a href="https://github.com/pymupdf/pymupdf/compare/1.24.2...1.24.3">compare view</a></li> </ul> </details> <br /> Updates `psycopg[c]` from 3.1.18 to 3.1.19 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/psycopg/psycopg/blob/master/docs/news.rst">psycopg[c]'s changelog</a>.</em></p> <blockquote> <p>.. currentmodule:: psycopg</p> <p>.. index:: single: Release notes single: News</p> <h1><code>psycopg</code> release notes</h1> <h2>Future releases</h2> <p>Psycopg 3.2 (unreleased) ^^^^^^^^^^^^^^^^^^^^^^^^</p> <ul> <li>Add support for integer, floating point, boolean <code>NumPy scalar types</code>__ (:ticket:<code>[#332](https://github.com/psycopg/psycopg/issues/332)</code>).</li> <li>Add <code>!timeout</code> and <code>!stop_after</code> parameters to <code>Connection.notifies()</code> (:ticket:<code>340</code>).</li> <li>Add :ref:<code>raw-query-cursors</code> to execute queries using placeholders in PostgreSQL format (<code>$1</code>, <code>$2</code>...) (:ticket:<code>[#560](https://github.com/psycopg/psycopg/issues/560)</code>).</li> <li>Add <code>psycopg.capabilities</code> object to :ref:<code>inspect the libpq capabilities <capabilities></code> (🎫<code>[#772](https://github.com/psycopg/psycopg/issues/772)</code>).</li> <li>Add <code>~rows.scalar_row</code> to return scalar values from a query (:ticket:<code>[#723](https://github.com/psycopg/psycopg/issues/723)</code>).</li> <li>Prepared statements are now :ref:<code>compatible with PgBouncer <pgbouncer></code>. (🎫<code>[#589](https://github.com/psycopg/psycopg/issues/589)</code>).</li> <li>Add <code>~Connection.set_autocommit()</code> on sync connections, and similar transaction control methods available on the async connections.</li> <li>Add support for libpq functions to close prepared statements and portals introduced in libpq v17 (:ticket:<code>[#603](https://github.com/psycopg/psycopg/issues/603)</code>).</li> <li>Add support for libpq encrypted and non-blocking query cancellation functions introduced in libpq v17 (:ticket:<code>[#754](https://github.com/psycopg/psycopg/issues/754)</code>).</li> <li>The <code>!context</code> parameter of <code>sql</code> objects <code>~sql.Composable.as_string()</code> and <code>~sql.Composable.as_bytes()</code> methods is now optional (:ticket:<code>[#716](https://github.com/psycopg/psycopg/issues/716)</code>).</li> <li>Disable receiving more than one result on the same cursor in pipeline mode, to iterate through <code>~Cursor.nextset()</code>. The behaviour was different than in non-pipeline mode and not totally reliable (:ticket:<code>[#604](https://github.com/psycopg/psycopg/issues/604)</code>). The <code>Cursor</code> now only preserves the results set of the last <code>~Cursor.execute()</code>, consistently with non-pipeline mode.</li> <li>Add <code>~Connection.cancel_safe()</code> for encrypted and non-blocking cancellation If possible, use such method internally upon <code>KeyboardInterrupt</code> and <code>Copy</code> termination (:ticket:<code>[#754](https://github.com/psycopg/psycopg/issues/754)</code>).</li> <li>Add support for libpq function to retrieve results in chunks introduced in libpq v17 (:ticket:<code>[#793](https://github.com/psycopg/psycopg/issues/793)</code>).</li> </ul> <p>.. __: <a href="https://numpy.org/doc/stable/reference/arrays.scalars.html#built-in-scalar-types">https://numpy.org/doc/stable/reference/arrays.scalars.html#built-in-scalar-types</a></p> <h2>Current release</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/psycopg/psycopg/commit/780068d53685ab85c3fbb273596f562e6eeba297"><code>780068d</code></a> chore: bump psycopg package version to 3.1.19</li> <li><a href="https://github.com/psycopg/psycopg/commit/040489c648d5f3fb12342a55c02911e02f21aa6b"><code>040489c</code></a> chore(crdb): upgrade types to v23.1</li> <li><a href="https://github.com/psycopg/psycopg/commit/163f3665b11eab10d7de6d917162b660d4229774"><code>163f366</code></a> ci(macos): test and build macOS packages on M1 runners</li> <li><a href="https://github.com/psycopg/psycopg/commit/01d5dabde6a3d5250b33e6d53fea7789afdb6125"><code>01d5dab</code></a> Merge branch 'fix-745' into maint-3.1</li> <li><a href="https://github.com/psycopg/psycopg/commit/28fc73e5730d594d7340dbd2a686ce01894ba8e5"><code>28fc73e</code></a> perf(copy): only flush at every row on copy on macOS</li> <li><a href="https://github.com/psycopg/psycopg/commit/963c5f8a1b169eccee05fbf0b9738308df86706e"><code>963c5f8</code></a> Improve performance of copy</li> <li><a href="https://github.com/psycopg/psycopg/commit/c9486b3a9f22b1003705c59a0c6cc5248f6a2ec7"><code>c9486b3</code></a> test(copy): add minimal copy benchmark framework</li> <li><a href="https://github.com/psycopg/psycopg/commit/33989450c64dc2da93697183a8f4a61242b2bebd"><code>3398945</code></a> Merge branch 'fix-734' into maint-3.1</li> <li><a href="https://github.com/psycopg/psycopg/commit/cfc0782032f8fa86096a7b9f7fd83b6870ec7fe5"><code>cfc0782</code></a> fix(c): solve undefined behaviour caused by unaligned access</li> <li><a href="https://github.com/psycopg/psycopg/commit/611738ff3626e7f0d35d66c934653220a7248bbe"><code>611738f</code></a> ci: add test to check for misaligned memory access</li> <li>Additional commits viewable in <a href="https://github.com/psycopg/psycopg/compare/3.1.18...3.1.19">compare view</a></li> </ul> </details> <br /> Updates `psycopg[binary]` from 3.1.18 to 3.1.19 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/psycopg/psycopg/blob/master/docs/news.rst">psycopg[binary]'s changelog</a>.</em></p> <blockquote> <p>.. currentmodule:: psycopg</p> <p>.. index:: single: Release notes single: News</p> <h1><code>psycopg</code> release notes</h1> <h2>Future releases</h2> <p>Psycopg 3.2 (unreleased) ^^^^^^^^^^^^^^^^^^^^^^^^</p> <ul> <li>Add support for integer, floating point, boolean <code>NumPy scalar types</code>__ (:ticket:<code>[#332](https://github.com/psycopg/psycopg/issues/332)</code>).</li> <li>Add <code>!timeout</code> and <code>!stop_after</code> parameters to <code>Connection.notifies()</code> (:ticket:<code>340</code>).</li> <li>Add :ref:<code>raw-query-cursors</code> to execute queries using placeholders in PostgreSQL format (<code>$1</code>, <code>$2</code>...) (:ticket:<code>[#560](https://github.com/psycopg/psycopg/issues/560)</code>).</li> <li>Add <code>psycopg.capabilities</code> object to :ref:<code>inspect the libpq capabilities <capabilities></code> (🎫<code>[#772](https://github.com/psycopg/psycopg/issues/772)</code>).</li> <li>Add <code>~rows.scalar_row</code> to return scalar values from a query (:ticket:<code>[#723](https://github.com/psycopg/psycopg/issues/723)</code>).</li> <li>Prepared statements are now :ref:<code>compatible with PgBouncer <pgbouncer></code>. (🎫<code>[#589](https://github.com/psycopg/psycopg/issues/589)</code>).</li> <li>Add <code>~Connection.set_autocommit()</code> on sync connections, and similar transaction control methods available on the async connections.</li> <li>Add support for libpq functions to close prepared statements and portals introduced in libpq v17 (:ticket:<code>[#603](https://github.com/psycopg/psycopg/issues/603)</code>).</li> <li>Add support for libpq encrypted and non-blocking query cancellation functions introduced in libpq v17 (:ticket:<code>[#754](https://github.com/psycopg/psycopg/issues/754)</code>).</li> <li>The <code>!context</code> parameter of <code>sql</code> objects <code>~sql.Composable.as_string()</code> and <code>~sql.Composable.as_bytes()</code> methods is now optional (:ticket:<code>[#716](https://github.com/psycopg/psycopg/issues/716)</code>).</li> <li>Disable receiving more than one result on the same cursor in pipeline mode, to iterate through <code>~Cursor.nextset()</code>. The behaviour was different than in non-pipeline mode and not totally reliable (:ticket:<code>[#604](https://github.com/psycopg/psycopg/issues/604)</code>). The <code>Cursor</code> now only preserves the results set of the last <code>~Cursor.execute()</code>, consistently with non-pipeline mode.</li> <li>Add <code>~Connection.cancel_safe()</code> for encrypted and non-blocking cancellation If possible, use such method internally upon <code>KeyboardInterrupt</code> and <code>Copy</code> termination (:ticket:<code>[#754](https://github.com/psycopg/psycopg/issues/754)</code>).</li> <li>Add support for libpq function to retrieve results in chunks introduced in libpq v17 (:ticket:<code>[#793](https://github.com/psycopg/psycopg/issues/793)</code>).</li> </ul> <p>.. __: <a href="https://numpy.org/doc/stable/reference/arrays.scalars.html#built-in-scalar-types">https://numpy.org/doc/stable/reference/arrays.scalars.html#built-in-scalar-types</a></p> <h2>Current release</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/psycopg/psycopg/commit/780068d53685ab85c3fbb273596f562e6eeba297"><code>780068d</code></a> chore: bump psycopg package version to 3.1.19</li> <li><a href="https://github.com/psycopg/psycopg/commit/040489c648d5f3fb12342a55c02911e02f21aa6b"><code>040489c</code></a> chore(crdb): upgrade types to v23.1</li> <li><a href="https://github.com/psycopg/psycopg/commit/163f3665b11eab10d7de6d917162b660d4229774"><code>163f366</code></a> ci(macos): test and build macOS packages on M1 runners</li> <li><a href="https://github.com/psycopg/psycopg/commit/01d5dabde6a3d5250b33e6d53fea7789afdb6125"><code>01d5dab</code></a> Merge branch 'fix-745' into maint-3.1</li> <li><a href="https://github.com/psycopg/psycopg/commit/28fc73e5730d594d7340dbd2a686ce01894ba8e5"><code>28fc73e</code></a> perf(copy): only flush at every row on copy on macOS</li> <li><a href="https://github.com/psycopg/psycopg/commit/963c5f8a1b169eccee05fbf0b9738308df86706e"><code>963c5f8</code></a> Improve performance of copy</li> <li><a href="https://github.com/psycopg/psycopg/commit/c9486b3a9f22b1003705c59a0c6cc5248f6a2ec7"><code>c9486b3</code></a> test(copy): add minimal copy benchmark framework</li> <li><a href="https://github.com/psycopg/psycopg/commit/33989450c64dc2da93697183a8f4a61242b2bebd"><code>3398945</code></a> Merge branch 'fix-734' into maint-3.1</li> <li><a href="https://github.com/psycopg/psycopg/commit/cfc0782032f8fa86096a7b9f7fd83b6870ec7fe5"><code>cfc0782</code></a> fix(c): solve undefined behaviour caused by unaligned access</li> <li><a href="https://github.com/psycopg/psycopg/commit/611738ff3626e7f0d35d66c934653220a7248bbe"><code>611738f</code></a> ci: add test to check for misaligned memory access</li> <li>Additional commits viewable in <a href="https://github.com/psycopg/psycopg/compare/3.1.18...3.1.19">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [psycopg](https://github.com/psycopg/psycopg) from 3.1.19 to 3.2.1. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/psycopg/psycopg/blob/master/docs/news.rst">psycopg's changelog</a>.</em></p> <blockquote> <p>.. currentmodule:: psycopg</p> <p>.. index:: single: Release notes single: News</p> <h1><code>psycopg</code> release notes</h1> <h2>Current release</h2> <p>Psycopg 3.2.1 ^^^^^^^^^^^^^</p> <ul> <li>Fix packaging metadata breaking <code>[c]</code>, <code>[binary]</code> dependencies (:ticket:<code>[#853](https://github.com/psycopg/psycopg/issues/853)</code>).</li> </ul> <h2>Psycopg 3.2</h2> <p>.. rubric:: New top-level features</p> <ul> <li>Add support for integer, floating point, boolean <code>NumPy scalar types</code>__ (:ticket:<code>[#332](https://github.com/psycopg/psycopg/issues/332)</code>).</li> <li>Add <code>!timeout</code> and <code>!stop_after</code> parameters to <code>Connection.notifies()</code> (:ticket:<code>340</code>).</li> <li>Allow dumpers to return <code>!None</code>, to be converted to NULL (:ticket:<code>[#377](https://github.com/psycopg/psycopg/issues/377)</code>).</li> <li>Add :ref:<code>raw-query-cursors</code> to execute queries using placeholders in PostgreSQL format (<code>$1</code>, <code>$2</code>...) (🎟️<code>[#560](psycopg/psycopg#560), [#839](https://github.com/psycopg/psycopg/issues/839)</code>).</li> <li>Add <code>capabilities</code> object to :ref:<code>inspect the libpq capabilities <capabilities></code> (🎫<code>[#772](https://github.com/psycopg/psycopg/issues/772)</code>).</li> <li>Add <code>~rows.scalar_row</code> to return scalar values from a query (:ticket:<code>[#723](https://github.com/psycopg/psycopg/issues/723)</code>).</li> <li>Add <code>~Connection.cancel_safe()</code> for encrypted and non-blocking cancellation when using libpq v17. Use such method internally to implement <code>!KeyboardInterrupt</code> and <code>~cursor.copy</code> termination (:ticket:<code>[#754](https://github.com/psycopg/psycopg/issues/754)</code>).</li> <li>The <code>!context</code> parameter of <code>sql</code> objects <code>~sql.Composable.as_string()</code> and <code>~sql.Composable.as_bytes()</code> methods is now optional (:ticket:<code>[#716](https://github.com/psycopg/psycopg/issues/716)</code>).</li> <li>Add <code>~Connection.set_autocommit()</code> on sync connections, and similar transaction control methods available on the async connections.</li> <li>Add a <code>size</code> parameter to <code>~Cursor.stream()</code> to enable results retrieval in chunks instead of row-by-row (:ticket:<code>[#794](https://github.com/psycopg/psycopg/issues/794)</code>).</li> </ul> <p>.. rubric:: New libpq wrapper features</p> <ul> <li>Add support for libpq functions to close prepared statements and portals introduced in libpq v17 (:ticket:<code>[#603](https://github.com/psycopg/psycopg/issues/603)</code>).</li> <li>Add support for libpq encrypted and non-blocking query cancellation functions introduced in libpq v17 (:ticket:<code>[#754](https://github.com/psycopg/psycopg/issues/754)</code>).</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/psycopg/psycopg/commit/bb47d3944d1c65d9baf83808696aba1b2dfed9af"><code>bb47d39</code></a> chore: bump psycopg package version to 3.2.1</li> <li><a href="https://github.com/psycopg/psycopg/commit/55490a2d6b8344e3b49f6004c8e7afdc6d40c5fb"><code>55490a2</code></a> fix: fix versions in packaging metadata</li> <li><a href="https://github.com/psycopg/psycopg/commit/1cbc42a6759823e18d273e739cc64d7f994f53b2"><code>1cbc42a</code></a> docs: fix title level of major releases</li> <li><a href="https://github.com/psycopg/psycopg/commit/06a6e5e213577fca0fa1c6ca62def8fa5803663a"><code>06a6e5e</code></a> docs: mention dropping Python 3.7 in psycopg 3.2 release</li> <li><a href="https://github.com/psycopg/psycopg/commit/ea3735dccc5dfd20eb4ba5c4a3c52ec76d9aa6d0"><code>ea3735d</code></a> docs: better organization of the 3.2 release notes</li> <li><a href="https://github.com/psycopg/psycopg/commit/896eee2363d0bc25cc31ccf4189b295bb61deb40"><code>896eee2</code></a> chore: bump psycopg package version to 3.2.0</li> <li><a href="https://github.com/psycopg/psycopg/commit/2e2f4d7dd31cac67b790c293de70133373173ebb"><code>2e2f4d7</code></a> chore: bump psycopg package version to 3.1.20</li> <li><a href="https://github.com/psycopg/psycopg/commit/7369d3bb0280851832a395d6b3084de7b520e3a0"><code>7369d3b</code></a> Merge pull request <a href="https://redirect.github.com/psycopg/psycopg/issues/846">#846</a> from eli-schwartz/tomllib</li> <li><a href="https://github.com/psycopg/psycopg/commit/6672c708f1813978461aff6e5e240a96773ff873"><code>6672c70</code></a> style: shorter line in pyproject.toml</li> <li><a href="https://github.com/psycopg/psycopg/commit/a517bb4579d2b8caa4ddc1e81294d6026c8974d6"><code>a517bb4</code></a> build: avoid installing tomli on recent python</li> <li>Additional commits viewable in <a href="https://github.com/psycopg/psycopg/compare/3.1.19...3.2.1">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [psycopg[binary]](https://github.com/psycopg/psycopg) from 3.1.19 to 3.2.1. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/psycopg/psycopg/blob/master/docs/news.rst">psycopg[binary]'s changelog</a>.</em></p> <blockquote> <p>.. currentmodule:: psycopg</p> <p>.. index:: single: Release notes single: News</p> <h1><code>psycopg</code> release notes</h1> <h2>Future releases</h2> <p>Psycopg 3.2.2 (unreleased) ^^^^^^^^^^^^^^^^^^^^^^^^^^</p> <ul> <li>Drop <code>!TypeDef</code> specifications as string from public modules, as they cannot be composed by users as <code>!typing</code> objects previously could (:ticket:<code>[#860](https://github.com/psycopg/psycopg/issues/860)</code>).</li> </ul> <h2>Current release</h2> <p>Psycopg 3.2.1 ^^^^^^^^^^^^^</p> <ul> <li>Fix packaging metadata breaking <code>[c]</code>, <code>[binary]</code> dependencies (:ticket:<code>[#853](https://github.com/psycopg/psycopg/issues/853)</code>).</li> </ul> <h2>Psycopg 3.2</h2> <p>.. rubric:: New top-level features</p> <ul> <li>Add support for integer, floating point, boolean <code>NumPy scalar types</code>__ (:ticket:<code>[#332](https://github.com/psycopg/psycopg/issues/332)</code>).</li> <li>Add <code>!timeout</code> and <code>!stop_after</code> parameters to <code>Connection.notifies()</code> (:ticket:<code>340</code>).</li> <li>Allow dumpers to return <code>!None</code>, to be converted to NULL (:ticket:<code>[#377](https://github.com/psycopg/psycopg/issues/377)</code>).</li> <li>Add :ref:<code>raw-query-cursors</code> to execute queries using placeholders in PostgreSQL format (<code>$1</code>, <code>$2</code>...) (🎟️<code>[#560](psycopg/psycopg#560), [#839](https://github.com/psycopg/psycopg/issues/839)</code>).</li> <li>Add <code>capabilities</code> object to :ref:<code>inspect the libpq capabilities <capabilities></code> (🎫<code>[#772](https://github.com/psycopg/psycopg/issues/772)</code>).</li> <li>Add <code>~rows.scalar_row</code> to return scalar values from a query (:ticket:<code>[#723](https://github.com/psycopg/psycopg/issues/723)</code>).</li> <li>Add <code>~Connection.cancel_safe()</code> for encrypted and non-blocking cancellation when using libpq v17. Use such method internally to implement <code>!KeyboardInterrupt</code> and <code>~cursor.copy</code> termination (:ticket:<code>[#754](https://github.com/psycopg/psycopg/issues/754)</code>).</li> <li>The <code>!context</code> parameter of <code>sql</code> objects <code>~sql.Composable.as_string()</code> and <code>~sql.Composable.as_bytes()</code> methods is now optional (:ticket:<code>[#716](https://github.com/psycopg/psycopg/issues/716)</code>).</li> <li>Add <code>~Connection.set_autocommit()</code> on sync connections, and similar</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/psycopg/psycopg/commit/bb47d3944d1c65d9baf83808696aba1b2dfed9af"><code>bb47d39</code></a> chore: bump psycopg package version to 3.2.1</li> <li><a href="https://github.com/psycopg/psycopg/commit/55490a2d6b8344e3b49f6004c8e7afdc6d40c5fb"><code>55490a2</code></a> fix: fix versions in packaging metadata</li> <li><a href="https://github.com/psycopg/psycopg/commit/1cbc42a6759823e18d273e739cc64d7f994f53b2"><code>1cbc42a</code></a> docs: fix title level of major releases</li> <li><a href="https://github.com/psycopg/psycopg/commit/06a6e5e213577fca0fa1c6ca62def8fa5803663a"><code>06a6e5e</code></a> docs: mention dropping Python 3.7 in psycopg 3.2 release</li> <li><a href="https://github.com/psycopg/psycopg/commit/ea3735dccc5dfd20eb4ba5c4a3c52ec76d9aa6d0"><code>ea3735d</code></a> docs: better organization of the 3.2 release notes</li> <li><a href="https://github.com/psycopg/psycopg/commit/896eee2363d0bc25cc31ccf4189b295bb61deb40"><code>896eee2</code></a> chore: bump psycopg package version to 3.2.0</li> <li><a href="https://github.com/psycopg/psycopg/commit/2e2f4d7dd31cac67b790c293de70133373173ebb"><code>2e2f4d7</code></a> chore: bump psycopg package version to 3.1.20</li> <li><a href="https://github.com/psycopg/psycopg/commit/7369d3bb0280851832a395d6b3084de7b520e3a0"><code>7369d3b</code></a> Merge pull request <a href="https://redirect.github.com/psycopg/psycopg/issues/846">#846</a> from eli-schwartz/tomllib</li> <li><a href="https://github.com/psycopg/psycopg/commit/6672c708f1813978461aff6e5e240a96773ff873"><code>6672c70</code></a> style: shorter line in pyproject.toml</li> <li><a href="https://github.com/psycopg/psycopg/commit/a517bb4579d2b8caa4ddc1e81294d6026c8974d6"><code>a517bb4</code></a> build: avoid installing tomli on recent python</li> <li>Additional commits viewable in <a href="https://github.com/psycopg/psycopg/compare/3.1.19...3.2.1">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [psycopg[binary]](https://github.com/psycopg/psycopg) from 3.1.19 to 3.2.1. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/psycopg/psycopg/blob/master/docs/news.rst">psycopg[binary]'s changelog</a>.</em></p> <blockquote> <p>.. currentmodule:: psycopg</p> <p>.. index:: single: Release notes single: News</p> <h1><code>psycopg</code> release notes</h1> <h2>Future releases</h2> <p>Psycopg 3.2.2 (unreleased) ^^^^^^^^^^^^^^^^^^^^^^^^^^</p> <ul> <li>Drop <code>!TypeDef</code> specifications as string from public modules, as they cannot be composed by users as <code>!typing</code> objects previously could (:ticket:<code>[#860](https://github.com/psycopg/psycopg/issues/860)</code>).</li> </ul> <h2>Current release</h2> <p>Psycopg 3.2.1 ^^^^^^^^^^^^^</p> <ul> <li>Fix packaging metadata breaking <code>[c]</code>, <code>[binary]</code> dependencies (:ticket:<code>[#853](https://github.com/psycopg/psycopg/issues/853)</code>).</li> </ul> <h2>Psycopg 3.2</h2> <p>.. rubric:: New top-level features</p> <ul> <li>Add support for integer, floating point, boolean <code>NumPy scalar types</code>__ (:ticket:<code>[#332](https://github.com/psycopg/psycopg/issues/332)</code>).</li> <li>Add <code>!timeout</code> and <code>!stop_after</code> parameters to <code>Connection.notifies()</code> (:ticket:<code>340</code>).</li> <li>Allow dumpers to return <code>!None</code>, to be converted to NULL (:ticket:<code>[#377](https://github.com/psycopg/psycopg/issues/377)</code>).</li> <li>Add :ref:<code>raw-query-cursors</code> to execute queries using placeholders in PostgreSQL format (<code>$1</code>, <code>$2</code>...) (🎟️<code>[#560](psycopg/psycopg#560), [#839](https://github.com/psycopg/psycopg/issues/839)</code>).</li> <li>Add <code>capabilities</code> object to :ref:<code>inspect the libpq capabilities <capabilities></code> (🎫<code>[#772](https://github.com/psycopg/psycopg/issues/772)</code>).</li> <li>Add <code>~rows.scalar_row</code> to return scalar values from a query (:ticket:<code>[#723](https://github.com/psycopg/psycopg/issues/723)</code>).</li> <li>Add <code>~Connection.cancel_safe()</code> for encrypted and non-blocking cancellation when using libpq v17. Use such method internally to implement <code>!KeyboardInterrupt</code> and <code>~cursor.copy</code> termination (:ticket:<code>[#754](https://github.com/psycopg/psycopg/issues/754)</code>).</li> <li>The <code>!context</code> parameter of <code>sql</code> objects <code>~sql.Composable.as_string()</code> and <code>~sql.Composable.as_bytes()</code> methods is now optional (:ticket:<code>[#716](https://github.com/psycopg/psycopg/issues/716)</code>).</li> <li>Add <code>~Connection.set_autocommit()</code> on sync connections, and similar</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/psycopg/psycopg/commit/bb47d3944d1c65d9baf83808696aba1b2dfed9af"><code>bb47d39</code></a> chore: bump psycopg package version to 3.2.1</li> <li><a href="https://github.com/psycopg/psycopg/commit/55490a2d6b8344e3b49f6004c8e7afdc6d40c5fb"><code>55490a2</code></a> fix: fix versions in packaging metadata</li> <li><a href="https://github.com/psycopg/psycopg/commit/1cbc42a6759823e18d273e739cc64d7f994f53b2"><code>1cbc42a</code></a> docs: fix title level of major releases</li> <li><a href="https://github.com/psycopg/psycopg/commit/06a6e5e213577fca0fa1c6ca62def8fa5803663a"><code>06a6e5e</code></a> docs: mention dropping Python 3.7 in psycopg 3.2 release</li> <li><a href="https://github.com/psycopg/psycopg/commit/ea3735dccc5dfd20eb4ba5c4a3c52ec76d9aa6d0"><code>ea3735d</code></a> docs: better organization of the 3.2 release notes</li> <li><a href="https://github.com/psycopg/psycopg/commit/896eee2363d0bc25cc31ccf4189b295bb61deb40"><code>896eee2</code></a> chore: bump psycopg package version to 3.2.0</li> <li><a href="https://github.com/psycopg/psycopg/commit/2e2f4d7dd31cac67b790c293de70133373173ebb"><code>2e2f4d7</code></a> chore: bump psycopg package version to 3.1.20</li> <li><a href="https://github.com/psycopg/psycopg/commit/7369d3bb0280851832a395d6b3084de7b520e3a0"><code>7369d3b</code></a> Merge pull request <a href="https://redirect.github.com/psycopg/psycopg/issues/846">#846</a> from eli-schwartz/tomllib</li> <li><a href="https://github.com/psycopg/psycopg/commit/6672c708f1813978461aff6e5e240a96773ff873"><code>6672c70</code></a> style: shorter line in pyproject.toml</li> <li><a href="https://github.com/psycopg/psycopg/commit/a517bb4579d2b8caa4ddc1e81294d6026c8974d6"><code>a517bb4</code></a> build: avoid installing tomli on recent python</li> <li>Additional commits viewable in <a href="https://github.com/psycopg/psycopg/compare/3.1.19...3.2.1">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [psycopg](https://github.com/psycopg/psycopg) from 3.1.15 to 3.1.18. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/psycopg/psycopg/blob/master/docs/news.rst">psycopg's changelog</a>.</em></p> <blockquote> <p>.. currentmodule:: psycopg</p> <p>.. index:: single: Release notes single: News</p> <h1><code>psycopg</code> release notes</h1> <h2>Future releases</h2> <p>Psycopg 3.2 (unreleased) ^^^^^^^^^^^^^^^^^^^^^^^^</p> <ul> <li>Add support for integer, floating point, boolean <code>NumPy scalar types</code>__ (:ticket:<code>[microsoft#332](https://github.com/psycopg/psycopg/issues/332)</code>).</li> <li>Add <code>!timeout</code> and <code>!stop_after</code> parameters to <code>Connection.notifies()</code> (:ticket:<code>340</code>).</li> <li>Add :ref:<code>raw-query-cursors</code> to execute queries using placeholders in PostgreSQL format (<code>$1</code>, <code>$2</code>...) (:ticket:<code>[microsoft#560](https://github.com/psycopg/psycopg/issues/560)</code>).</li> <li>Add <code>~rows.scalar_row</code> to return scalar values from a query (:ticket:<code>[microsoft#723](https://github.com/psycopg/psycopg/issues/723)</code>).</li> <li>Add <code>~Connection.set_autocommit()</code> on sync connections, and similar transaction control methods available on the async connections.</li> <li>Add support for libpq functions to close prepared statements and portals introduced in libpq v17 (:ticket:<code>[microsoft#603](https://github.com/psycopg/psycopg/issues/603)</code>).</li> <li>The <code>!context</code> parameter of <code>sql</code> objects <code>~sql.Composable.as_string()</code> and <code>~sql.Composable.as_bytes()</code> methods is now optional (:ticket:<code>[microsoft#716](https://github.com/psycopg/psycopg/issues/716)</code>).</li> <li>Disable receiving more than one result on the same cursor in pipeline mode, to iterate through <code>~Cursor.nextset()</code>. The behaviour was different than in non-pipeline mode and not totally reliable (:ticket:<code>[microsoft#604](https://github.com/psycopg/psycopg/issues/604)</code>). The <code>Cursor</code> now only preserves the results set of the last <code>~Cursor.execute()</code>, consistently with non-pipeline mode.</li> </ul> <p>.. __: <a href="https://numpy.org/doc/stable/reference/arrays.scalars.html#built-in-scalar-types">https://numpy.org/doc/stable/reference/arrays.scalars.html#built-in-scalar-types</a></p> <h2>Current release</h2> <p>Psycopg 3.1.18 ^^^^^^^^^^^^^^</p> <ul> <li>Fix possible deadlock on pipeline exit (:ticket:<code>[microsoft#685](https://github.com/psycopg/psycopg/issues/685)</code>).</li> <li>Fix overflow loading large intervals in C module (:ticket:<code>[microsoft#719](https://github.com/psycopg/psycopg/issues/719)</code>).</li> <li>Fix compatibility with musl libc distributions affected by <code>CPython issue [#65821](https://github.com/psycopg/psycopg/issues/65821)</code>__ (:ticket:<code>[microsoft#725](https://github.com/psycopg/psycopg/issues/725)</code>).</li> </ul> <p>.. __: <a href="https://redirect.github.com/python/cpython/issues/65821">python/cpython#65821</a></p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/psycopg/psycopg/commit/8585a23fcd7bcf75193adbc10d3005752ba8f15f"><code>8585a23</code></a> chore: bump psycopg package version to 3.1.18</li> <li><a href="https://github.com/psycopg/psycopg/commit/ab646b70c82aafe6004064a40a3ba358142999a3"><code>ab646b7</code></a> fix(c): drop spurious loop break in pipeline_communicate</li> <li><a href="https://github.com/psycopg/psycopg/commit/bebfe97f934c9136e4db52709ac0fb4dd9cae64d"><code>bebfe97</code></a> chore: bump cibuildwheel version</li> <li><a href="https://github.com/psycopg/psycopg/commit/89394a6f36d42d308a8e672e9b5deef8e76254ae"><code>89394a6</code></a> chore: bump checkout action to v4</li> <li><a href="https://github.com/psycopg/psycopg/commit/ed579e51ca9b44af148e55d345e312f58ce12a6f"><code>ed579e5</code></a> docs: fix tickets format</li> <li><a href="https://github.com/psycopg/psycopg/commit/d4a4e8e1447de3446f614a29a8274ef7c4d03d64"><code>d4a4e8e</code></a> Merge branch 'musl-ctypes' into maint-3.1</li> <li><a href="https://github.com/psycopg/psycopg/commit/8bc51e6812cfaedebdd7afff7c86be301d5fbf66"><code>8bc51e6</code></a> docs: mention musl-ctypes workaround in news file</li> <li><a href="https://github.com/psycopg/psycopg/commit/afb040a800b2667a07dc441e8cdb94e55a0dcf65"><code>afb040a</code></a> fix: add <code>libc.so</code> fallback for musl systems to the ctypes impl</li> <li><a href="https://github.com/psycopg/psycopg/commit/06ef0d92109a63fa1a7630804a3a26af0e0a39c9"><code>06ef0d9</code></a> test: drop ineffective marker on fixture</li> <li><a href="https://github.com/psycopg/psycopg/commit/b955118e523c84f5f702d93fd74288ce51ff61db"><code>b955118</code></a> Merge branch 'fix-interval-overflow' into maint-3.1</li> <li>Additional commits viewable in <a href="https://github.com/psycopg/psycopg/compare/3.1.15...3.1.18">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com> Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
Bumps [psycopg](https://github.com/psycopg/psycopg) from 3.1.19 to 3.2.1. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/psycopg/psycopg/blob/master/docs/news.rst">psycopg's changelog</a>.</em></p> <blockquote> <p>.. currentmodule:: psycopg</p> <p>.. index:: single: Release notes single: News</p> <h1><code>psycopg</code> release notes</h1> <h2>Current release</h2> <p>Psycopg 3.2.1 ^^^^^^^^^^^^^</p> <ul> <li>Fix packaging metadata breaking <code>[c]</code>, <code>[binary]</code> dependencies (:ticket:<code>[microsoft#853](https://github.com/psycopg/psycopg/issues/853)</code>).</li> </ul> <h2>Psycopg 3.2</h2> <p>.. rubric:: New top-level features</p> <ul> <li>Add support for integer, floating point, boolean <code>NumPy scalar types</code>__ (:ticket:<code>[microsoft#332](https://github.com/psycopg/psycopg/issues/332)</code>).</li> <li>Add <code>!timeout</code> and <code>!stop_after</code> parameters to <code>Connection.notifies()</code> (:ticket:<code>340</code>).</li> <li>Allow dumpers to return <code>!None</code>, to be converted to NULL (:ticket:<code>[microsoft#377](https://github.com/psycopg/psycopg/issues/377)</code>).</li> <li>Add :ref:<code>raw-query-cursors</code> to execute queries using placeholders in PostgreSQL format (<code>$1</code>, <code>$2</code>...) (🎟️<code>[microsoft#560](psycopg/psycopg#560), [microsoft#839](https://github.com/psycopg/psycopg/issues/839)</code>).</li> <li>Add <code>capabilities</code> object to :ref:<code>inspect the libpq capabilities <capabilities></code> (🎫<code>[microsoft#772](https://github.com/psycopg/psycopg/issues/772)</code>).</li> <li>Add <code>~rows.scalar_row</code> to return scalar values from a query (:ticket:<code>[microsoft#723](https://github.com/psycopg/psycopg/issues/723)</code>).</li> <li>Add <code>~Connection.cancel_safe()</code> for encrypted and non-blocking cancellation when using libpq v17. Use such method internally to implement <code>!KeyboardInterrupt</code> and <code>~cursor.copy</code> termination (:ticket:<code>[microsoft#754](https://github.com/psycopg/psycopg/issues/754)</code>).</li> <li>The <code>!context</code> parameter of <code>sql</code> objects <code>~sql.Composable.as_string()</code> and <code>~sql.Composable.as_bytes()</code> methods is now optional (:ticket:<code>[microsoft#716](https://github.com/psycopg/psycopg/issues/716)</code>).</li> <li>Add <code>~Connection.set_autocommit()</code> on sync connections, and similar transaction control methods available on the async connections.</li> <li>Add a <code>size</code> parameter to <code>~Cursor.stream()</code> to enable results retrieval in chunks instead of row-by-row (:ticket:<code>[microsoft#794](https://github.com/psycopg/psycopg/issues/794)</code>).</li> </ul> <p>.. rubric:: New libpq wrapper features</p> <ul> <li>Add support for libpq functions to close prepared statements and portals introduced in libpq v17 (:ticket:<code>[microsoft#603](https://github.com/psycopg/psycopg/issues/603)</code>).</li> <li>Add support for libpq encrypted and non-blocking query cancellation functions introduced in libpq v17 (:ticket:<code>[microsoft#754](https://github.com/psycopg/psycopg/issues/754)</code>).</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/psycopg/psycopg/commit/bb47d3944d1c65d9baf83808696aba1b2dfed9af"><code>bb47d39</code></a> chore: bump psycopg package version to 3.2.1</li> <li><a href="https://github.com/psycopg/psycopg/commit/55490a2d6b8344e3b49f6004c8e7afdc6d40c5fb"><code>55490a2</code></a> fix: fix versions in packaging metadata</li> <li><a href="https://github.com/psycopg/psycopg/commit/1cbc42a6759823e18d273e739cc64d7f994f53b2"><code>1cbc42a</code></a> docs: fix title level of major releases</li> <li><a href="https://github.com/psycopg/psycopg/commit/06a6e5e213577fca0fa1c6ca62def8fa5803663a"><code>06a6e5e</code></a> docs: mention dropping Python 3.7 in psycopg 3.2 release</li> <li><a href="https://github.com/psycopg/psycopg/commit/ea3735dccc5dfd20eb4ba5c4a3c52ec76d9aa6d0"><code>ea3735d</code></a> docs: better organization of the 3.2 release notes</li> <li><a href="https://github.com/psycopg/psycopg/commit/896eee2363d0bc25cc31ccf4189b295bb61deb40"><code>896eee2</code></a> chore: bump psycopg package version to 3.2.0</li> <li><a href="https://github.com/psycopg/psycopg/commit/2e2f4d7dd31cac67b790c293de70133373173ebb"><code>2e2f4d7</code></a> chore: bump psycopg package version to 3.1.20</li> <li><a href="https://github.com/psycopg/psycopg/commit/7369d3bb0280851832a395d6b3084de7b520e3a0"><code>7369d3b</code></a> Merge pull request <a href="https://redirect.github.com/psycopg/psycopg/issues/846">#846</a> from eli-schwartz/tomllib</li> <li><a href="https://github.com/psycopg/psycopg/commit/6672c708f1813978461aff6e5e240a96773ff873"><code>6672c70</code></a> style: shorter line in pyproject.toml</li> <li><a href="https://github.com/psycopg/psycopg/commit/a517bb4579d2b8caa4ddc1e81294d6026c8974d6"><code>a517bb4</code></a> build: avoid installing tomli on recent python</li> <li>Additional commits viewable in <a href="https://github.com/psycopg/psycopg/compare/3.1.19...3.2.1">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [psycopg[binary]](https://github.com/psycopg/psycopg) from 3.2.1 to 3.2.2. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/psycopg/psycopg/blob/master/docs/news.rst">psycopg[binary]'s changelog</a>.</em></p> <blockquote> <p>.. currentmodule:: psycopg</p> <p>.. index:: single: Release notes single: News</p> <h1><code>psycopg</code> release notes</h1> <h2>Current release</h2> <p>Psycopg 3.2.2 ^^^^^^^^^^^^^</p> <ul> <li>Drop <code>!TypeDef</code> specifications as string from public modules, as they cannot be composed by users as <code>!typing</code> objects previously could (:ticket:<code>[#860](https://github.com/psycopg/psycopg/issues/860)</code>).</li> <li>Release Python 3.13 binary packages.</li> </ul> <p>Psycopg 3.2.1 ^^^^^^^^^^^^^</p> <ul> <li>Fix packaging metadata breaking <code>[c]</code>, <code>[binary]</code> dependencies (:ticket:<code>[#853](https://github.com/psycopg/psycopg/issues/853)</code>).</li> </ul> <h2>Psycopg 3.2</h2> <p>.. rubric:: New top-level features</p> <ul> <li>Add support for integer, floating point, boolean <code>NumPy scalar types</code>__ (:ticket:<code>[#332](https://github.com/psycopg/psycopg/issues/332)</code>).</li> <li>Add <code>!timeout</code> and <code>!stop_after</code> parameters to <code>Connection.notifies()</code> (:ticket:<code>340</code>).</li> <li>Allow dumpers to return <code>!None</code>, to be converted to NULL (:ticket:<code>[#377](https://github.com/psycopg/psycopg/issues/377)</code>).</li> <li>Add :ref:<code>raw-query-cursors</code> to execute queries using placeholders in PostgreSQL format (<code>$1</code>, <code>$2</code>...) (🎟️<code>[#560](psycopg/psycopg#560), [#839](https://github.com/psycopg/psycopg/issues/839)</code>).</li> <li>Add <code>capabilities</code> object to :ref:<code>inspect the libpq capabilities <capabilities></code> (🎫<code>[#772](https://github.com/psycopg/psycopg/issues/772)</code>).</li> <li>Add <code>~rows.scalar_row</code> to return scalar values from a query (:ticket:<code>[#723](https://github.com/psycopg/psycopg/issues/723)</code>).</li> <li>Add <code>~Connection.cancel_safe()</code> for encrypted and non-blocking cancellation when using libpq v17. Use such method internally to implement <code>!KeyboardInterrupt</code> and <code>~cursor.copy</code> termination (:ticket:<code>[#754](https://github.com/psycopg/psycopg/issues/754)</code>).</li> <li>The <code>!context</code> parameter of <code>sql</code> objects <code>~sql.Composable.as_string()</code> and <code>~sql.Composable.as_bytes()</code> methods is now optional (:ticket:<code>[#716](https://github.com/psycopg/psycopg/issues/716)</code>).</li> <li>Add <code>~Connection.set_autocommit()</code> on sync connections, and similar transaction control methods available on the async connections.</li> <li>Add a <code>size</code> parameter to <code>~Cursor.stream()</code> to enable results retrieval in</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/psycopg/psycopg/commit/d027a8737300a2e6bb2335666ca1c8eee43529f4"><code>d027a87</code></a> chore: bump psycopg package version to 3.2.2</li> <li><a href="https://github.com/psycopg/psycopg/commit/026c1239029ba12ac13c077e3d8dadcbe616c88e"><code>026c123</code></a> Merge pull request <a href="https://redirect.github.com/psycopg/psycopg/issues/890">#890</a> from edgarrmondragon/build-cp313-wheels</li> <li><a href="https://github.com/psycopg/psycopg/commit/86d777241518c7f17012b809f7d3d54cecaaaf31"><code>86d7772</code></a> docs: add update instructions for new major Python releases</li> <li><a href="https://github.com/psycopg/psycopg/commit/8089851fd5544f985effa2e47140774ec5dc034a"><code>8089851</code></a> docs: add Python 3.13 support news entries</li> <li><a href="https://github.com/psycopg/psycopg/commit/cf3bc888f2793edaef1dab50f304f4684bf9a764"><code>cf3bc88</code></a> docs: mention Python 3.13 supported in install docs</li> <li><a href="https://github.com/psycopg/psycopg/commit/9b9781192e9e20550763cfc4d6b70f183ee0b71a"><code>9b97811</code></a> chore: add Python 3.13 to trove classifiers</li> <li><a href="https://github.com/psycopg/psycopg/commit/6e2018819ab8a83a4a3afedfed6f8a7d98ea0cb0"><code>6e20188</code></a> ci: build Python 3.13 wheels</li> <li><a href="https://github.com/psycopg/psycopg/commit/a5b67ba942c418d4e306c121c1bf827884e9c36d"><code>a5b67ba</code></a> docs: replace fastapi events with lifespan</li> <li><a href="https://github.com/psycopg/psycopg/commit/d13137aacb82fed79459a9dd487846a2ec972571"><code>d13137a</code></a> chore(deps): bump pypa/cibuildwheel in the actions group</li> <li><a href="https://github.com/psycopg/psycopg/commit/6f7dcc434cf7c2523ebfec0cac2a21a4da23b92b"><code>6f7dcc4</code></a> Fix typo in cursor table</li> <li>Additional commits viewable in <a href="https://github.com/psycopg/psycopg/compare/3.2.1...3.2.2">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Frédéric Vergez <fred@ikarius.com>
Bumps the python-packages group in /backend with 3 updates: [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy), [psycopg](https://github.com/psycopg/psycopg) and [pytest](https://github.com/pytest-dev/pytest). Updates `sqlalchemy` from 2.0.34 to 2.0.35 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/sqlalchemy/sqlalchemy/releases">sqlalchemy's releases</a>.</em></p> <blockquote> <h1>2.0.35</h1> <p>Released: September 16, 2024</p> <h2>orm</h2> <ul> <li> <p><strong>[orm] [bug] [typing]</strong> Fixed issue where it was not possible to use <code>typing.Literal</code> with <code>Mapped[]</code> on Python 3.8 and 3.9. Pull request courtesy Frazer McLean.</p> <p>References: <a href="https://www.sqlalchemy.org/trac/ticket/11820">#11820</a></p> </li> <li> <p><strong>[orm] [bug]</strong> Fixed issue in ORM evaluator where two datatypes being evaluated with the SQL concatenator operator would not be checked for <code>UnevaluatableError</code> based on their datatype; this missed the case of <code>_postgresql.JSONB</code> values being used in a concatenate operation which is supported by PostgreSQL as well as how SQLAlchemy renders the SQL for this operation, but does not work at the Python level. By implementing <code>UnevaluatableError</code> for this combination, ORM update statements will now fall back to "expire" when a concatenated JSON value used in a SET clause is to be synchronized to a Python object.</p> <p>References: <a href="https://www.sqlalchemy.org/trac/ticket/11849">#11849</a></p> </li> <li> <p><strong>[orm] [bug]</strong> An warning is emitted if <code>_orm.joinedload()</code> or <code>_orm.subqueryload()</code> are used as a top level option against a statement that is not a SELECT statement, such as with an <code>insert().returning()</code>. There are no JOINs in INSERT statements nor is there a "subquery" that can be repurposed for subquery eager loading, and for UPDATE/DELETE joinedload does not support these either, so it is never appropriate for this use to pass silently.</p> <p>References: <a href="https://www.sqlalchemy.org/trac/ticket/11853">#11853</a></p> </li> <li> <p><strong>[orm] [bug]</strong> Fixed issue where using loader options such as <code>_orm.selectinload()</code> with additional criteria in combination with ORM DML such as <code>_sql.insert()</code> with RETURNING would not correctly set up internal contexts required for caching to work correctly, leading to incorrect results.</p> <p>References: <a href="https://www.sqlalchemy.org/trac/ticket/11855">#11855</a></p> </li> </ul> <h2>mysql</h2> <ul> <li><strong>[mysql] [bug]</strong> Fixed issue in mariadbconnector dialect where query string arguments that weren't checked integer or boolean arguments would be ignored, such as string arguments like <code>unix_socket</code>, etc. As part of this change, the argument parsing for particular elements such as <code>client_flags</code>, <code>compress</code>, <code>local_infile</code> has been made more consistent across all</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/sqlalchemy/sqlalchemy/commits">compare view</a></li> </ul> </details> <br /> Updates `psycopg` from 3.2.1 to 3.2.2 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/psycopg/psycopg/blob/master/docs/news.rst">psycopg's changelog</a>.</em></p> <blockquote> <p>.. currentmodule:: psycopg</p> <p>.. index:: single: Release notes single: News</p> <h1><code>psycopg</code> release notes</h1> <h2>Current release</h2> <p>Psycopg 3.2.2 ^^^^^^^^^^^^^</p> <ul> <li>Drop <code>!TypeDef</code> specifications as string from public modules, as they cannot be composed by users as <code>!typing</code> objects previously could (:ticket:<code>[#860](https://github.com/psycopg/psycopg/issues/860)</code>).</li> <li>Release Python 3.13 binary packages.</li> </ul> <p>Psycopg 3.2.1 ^^^^^^^^^^^^^</p> <ul> <li>Fix packaging metadata breaking <code>[c]</code>, <code>[binary]</code> dependencies (:ticket:<code>[#853](https://github.com/psycopg/psycopg/issues/853)</code>).</li> </ul> <h2>Psycopg 3.2</h2> <p>.. rubric:: New top-level features</p> <ul> <li>Add support for integer, floating point, boolean <code>NumPy scalar types</code>__ (:ticket:<code>[#332](https://github.com/psycopg/psycopg/issues/332)</code>).</li> <li>Add <code>!timeout</code> and <code>!stop_after</code> parameters to <code>Connection.notifies()</code> (:ticket:<code>340</code>).</li> <li>Allow dumpers to return <code>!None</code>, to be converted to NULL (:ticket:<code>[#377](https://github.com/psycopg/psycopg/issues/377)</code>).</li> <li>Add :ref:<code>raw-query-cursors</code> to execute queries using placeholders in PostgreSQL format (<code>$1</code>, <code>$2</code>...) (🎟️<code>[#560](psycopg/psycopg#560), [#839](https://github.com/psycopg/psycopg/issues/839)</code>).</li> <li>Add <code>capabilities</code> object to :ref:<code>inspect the libpq capabilities <capabilities></code> (🎫<code>[#772](https://github.com/psycopg/psycopg/issues/772)</code>).</li> <li>Add <code>~rows.scalar_row</code> to return scalar values from a query (:ticket:<code>[#723](https://github.com/psycopg/psycopg/issues/723)</code>).</li> <li>Add <code>~Connection.cancel_safe()</code> for encrypted and non-blocking cancellation when using libpq v17. Use such method internally to implement <code>!KeyboardInterrupt</code> and <code>~cursor.copy</code> termination (:ticket:<code>[#754](https://github.com/psycopg/psycopg/issues/754)</code>).</li> <li>The <code>!context</code> parameter of <code>sql</code> objects <code>~sql.Composable.as_string()</code> and <code>~sql.Composable.as_bytes()</code> methods is now optional (:ticket:<code>[#716](https://github.com/psycopg/psycopg/issues/716)</code>).</li> <li>Add <code>~Connection.set_autocommit()</code> on sync connections, and similar transaction control methods available on the async connections.</li> <li>Add a <code>size</code> parameter to <code>~Cursor.stream()</code> to enable results retrieval in</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/psycopg/psycopg/commit/d027a8737300a2e6bb2335666ca1c8eee43529f4"><code>d027a87</code></a> chore: bump psycopg package version to 3.2.2</li> <li><a href="https://github.com/psycopg/psycopg/commit/026c1239029ba12ac13c077e3d8dadcbe616c88e"><code>026c123</code></a> Merge pull request <a href="https://redirect.github.com/psycopg/psycopg/issues/890">#890</a> from edgarrmondragon/build-cp313-wheels</li> <li><a href="https://github.com/psycopg/psycopg/commit/86d777241518c7f17012b809f7d3d54cecaaaf31"><code>86d7772</code></a> docs: add update instructions for new major Python releases</li> <li><a href="https://github.com/psycopg/psycopg/commit/8089851fd5544f985effa2e47140774ec5dc034a"><code>8089851</code></a> docs: add Python 3.13 support news entries</li> <li><a href="https://github.com/psycopg/psycopg/commit/cf3bc888f2793edaef1dab50f304f4684bf9a764"><code>cf3bc88</code></a> docs: mention Python 3.13 supported in install docs</li> <li><a href="https://github.com/psycopg/psycopg/commit/9b9781192e9e20550763cfc4d6b70f183ee0b71a"><code>9b97811</code></a> chore: add Python 3.13 to trove classifiers</li> <li><a href="https://github.com/psycopg/psycopg/commit/6e2018819ab8a83a4a3afedfed6f8a7d98ea0cb0"><code>6e20188</code></a> ci: build Python 3.13 wheels</li> <li><a href="https://github.com/psycopg/psycopg/commit/a5b67ba942c418d4e306c121c1bf827884e9c36d"><code>a5b67ba</code></a> docs: replace fastapi events with lifespan</li> <li><a href="https://github.com/psycopg/psycopg/commit/d13137aacb82fed79459a9dd487846a2ec972571"><code>d13137a</code></a> chore(deps): bump pypa/cibuildwheel in the actions group</li> <li><a href="https://github.com/psycopg/psycopg/commit/6f7dcc434cf7c2523ebfec0cac2a21a4da23b92b"><code>6f7dcc4</code></a> Fix typo in cursor table</li> <li>Additional commits viewable in <a href="https://github.com/psycopg/psycopg/compare/3.2.1...3.2.2">compare view</a></li> </ul> </details> <br /> Updates `pytest` from 8.3.2 to 8.3.3 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/pytest-dev/pytest/releases">pytest's releases</a>.</em></p> <blockquote> <h2>8.3.3</h2> <h1>pytest 8.3.3 (2024-09-09)</h1> <h2>Bug fixes</h2> <ul> <li> <p><a href="https://redirect.github.com/pytest-dev/pytest/issues/12446">#12446</a>: Avoid calling <code>@Property</code> (and other instance descriptors) during fixture discovery -- by <code>asottile</code>{.interpreted-text role="user"}</p> </li> <li> <p><a href="https://redirect.github.com/pytest-dev/pytest/issues/12659">#12659</a>: Fixed the issue of not displaying assertion failure differences when using the parameter <code>--import-mode=importlib</code> in pytest>=8.1.</p> </li> <li> <p><a href="https://redirect.github.com/pytest-dev/pytest/issues/12667">#12667</a>: Fixed a regression where type change in [ExceptionInfo.errisinstance]{.title-ref} caused [mypy]{.title-ref} to fail.</p> </li> <li> <p><a href="https://redirect.github.com/pytest-dev/pytest/issues/12744">#12744</a>: Fixed typing compatibility with Python 3.9 or less -- replaced [typing.Self]{.title-ref} with [typing_extensions.Self]{.title-ref} -- by <code>Avasam</code>{.interpreted-text role="user"}</p> </li> <li> <p><a href="https://redirect.github.com/pytest-dev/pytest/issues/12745">#12745</a>: Fixed an issue with backslashes being incorrectly converted in nodeid paths on Windows, ensuring consistent path handling across environments.</p> </li> <li> <p><a href="https://redirect.github.com/pytest-dev/pytest/issues/6682">#6682</a>: Fixed bug where the verbosity levels where not being respected when printing the "msg" part of failed assertion (as in <code>assert condition, msg</code>).</p> </li> <li> <p><a href="https://redirect.github.com/pytest-dev/pytest/issues/9422">#9422</a>: Fix bug where disabling the terminal plugin via <code>-p no:terminal</code> would cause crashes related to missing the <code>verbose</code> option.</p> <p>-- by <code>GTowers1</code>{.interpreted-text role="user"}</p> </li> </ul> <h2>Improved documentation</h2> <ul> <li><a href="https://redirect.github.com/pytest-dev/pytest/issues/12663">#12663</a>: Clarify that the [pytest_deselected]{.title-ref} hook should be called from [pytest_collection_modifyitems]{.title-ref} hook implementations when items are deselected.</li> <li><a href="https://redirect.github.com/pytest-dev/pytest/issues/12678">#12678</a>: Remove erroneous quotes from [tmp_path_retention_policy]{.title-ref} example in docs.</li> </ul> <h2>Miscellaneous internal changes</h2> <ul> <li><a href="https://redirect.github.com/pytest-dev/pytest/issues/12769">#12769</a>: Fix typos discovered by codespell and add codespell to pre-commit hooks.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pytest-dev/pytest/commit/d0f136fe64f9374f18a04562305b178fb380d1ec"><code>d0f136f</code></a> build(deps): Bump pypa/gh-action-pypi-publish from 1.10.0 to 1.10.1 (<a href="https://redirect.github.com/pytest-dev/pytest/issues/12790">#12790</a>)</li> <li><a href="https://github.com/pytest-dev/pytest/commit/972f307c7861ae498e705d3d12e003fa4b035ac0"><code>972f307</code></a> Prepare release version 8.3.3</li> <li><a href="https://github.com/pytest-dev/pytest/commit/0dabdcfe4de99147a07bd577804b60818ea25bc4"><code>0dabdcf</code></a> Include co-authors in release announcement (<a href="https://redirect.github.com/pytest-dev/pytest/issues/12795">#12795</a>) (<a href="https://redirect.github.com/pytest-dev/pytest/issues/12797">#12797</a>)</li> <li><a href="https://github.com/pytest-dev/pytest/commit/a9910a413a691e1b216e2235a9cbec0921117702"><code>a9910a4</code></a> Do not discover properties when iterating fixtures (<a href="https://redirect.github.com/pytest-dev/pytest/issues/12781">#12781</a>) (<a href="https://redirect.github.com/pytest-dev/pytest/issues/12788">#12788</a>)</li> <li><a href="https://github.com/pytest-dev/pytest/commit/0f10b6b0d8138d3539de75cb7b2e33167b6fc882"><code>0f10b6b</code></a> Fix issue with slashes being turned into backslashes on Windows (<a href="https://redirect.github.com/pytest-dev/pytest/issues/12760">#12760</a>) (<a href="https://redirect.github.com/pytest-dev/pytest/issues/12">#12</a>...</li> <li><a href="https://github.com/pytest-dev/pytest/commit/300d13d2231db85186729c2091ea33480cb39c1a"><code>300d13d</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest/issues/12785">#12785</a> from pytest-dev/patchback/backports/8.3.x/57cccf7f4...</li> <li><a href="https://github.com/pytest-dev/pytest/commit/e5d32c73abcf4fa1362b15aaf660074de8f710d4"><code>e5d32c7</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest/issues/12784">#12784</a> from svenevs/fix/docs-example-parametrize-minor-typo</li> <li><a href="https://github.com/pytest-dev/pytest/commit/bc913d194ec009699194b016ca619d5ae7f22c91"><code>bc913d1</code></a> Streamline checks for verbose option (<a href="https://redirect.github.com/pytest-dev/pytest/issues/12706">#12706</a>) (<a href="https://redirect.github.com/pytest-dev/pytest/issues/12778">#12778</a>)</li> <li><a href="https://github.com/pytest-dev/pytest/commit/01cfcc9f2dda817b25511772593012fd93e092d0"><code>01cfcc9</code></a> Fix typos and introduce codespell pre-commit hook (<a href="https://redirect.github.com/pytest-dev/pytest/issues/12769">#12769</a>) (<a href="https://redirect.github.com/pytest-dev/pytest/issues/12774">#12774</a>)</li> <li><a href="https://github.com/pytest-dev/pytest/commit/4873394d53635ef62d1915d23972ed4281a784eb"><code>4873394</code></a> doc: Remove past training (<a href="https://redirect.github.com/pytest-dev/pytest/issues/12772">#12772</a>) (<a href="https://redirect.github.com/pytest-dev/pytest/issues/12773">#12773</a>)</li> <li>Additional commits viewable in <a href="https://github.com/pytest-dev/pytest/compare/8.3.2...8.3.3">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [psycopg](https://github.com/psycopg/psycopg) from 3.2.1 to 3.2.3. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/psycopg/psycopg/blob/master/docs/news.rst">psycopg's changelog</a>.</em></p> <blockquote> <p>.. currentmodule:: psycopg</p> <p>.. index:: single: Release notes single: News</p> <h1><code>psycopg</code> release notes</h1> <h2>Current release</h2> <p>Psycopg 3.2.3 ^^^^^^^^^^^^^</p> <ul> <li>Release binary packages including PostgreSQL 17 libpq (:ticket:<code>[#852](https://github.com/psycopg/psycopg/issues/852)</code>).</li> </ul> <p>Psycopg 3.2.2 ^^^^^^^^^^^^^</p> <ul> <li>Drop <code>!TypeDef</code> specifications as string from public modules, as they cannot be composed by users as <code>!typing</code> objects previously could (:ticket:<code>[#860](https://github.com/psycopg/psycopg/issues/860)</code>).</li> <li>Release Python 3.13 binary packages.</li> </ul> <p>Psycopg 3.2.1 ^^^^^^^^^^^^^</p> <ul> <li>Fix packaging metadata breaking <code>[c]</code>, <code>[binary]</code> dependencies (:ticket:<code>[#853](https://github.com/psycopg/psycopg/issues/853)</code>).</li> </ul> <h2>Psycopg 3.2</h2> <p>.. rubric:: New top-level features</p> <ul> <li>Add support for integer, floating point, boolean <code>NumPy scalar types</code>__ (:ticket:<code>[#332](https://github.com/psycopg/psycopg/issues/332)</code>).</li> <li>Add <code>!timeout</code> and <code>!stop_after</code> parameters to <code>Connection.notifies()</code> (:ticket:<code>340</code>).</li> <li>Allow dumpers to return <code>!None</code>, to be converted to NULL (:ticket:<code>[#377](https://github.com/psycopg/psycopg/issues/377)</code>).</li> <li>Add :ref:<code>raw-query-cursors</code> to execute queries using placeholders in PostgreSQL format (<code>$1</code>, <code>$2</code>...) (🎟️<code>[#560](psycopg/psycopg#560), [#839](https://github.com/psycopg/psycopg/issues/839)</code>).</li> <li>Add <code>capabilities</code> object to :ref:<code>inspect the libpq capabilities <capabilities></code> (🎫<code>[#772](https://github.com/psycopg/psycopg/issues/772)</code>).</li> <li>Add <code>~rows.scalar_row</code> to return scalar values from a query (:ticket:<code>[#723](https://github.com/psycopg/psycopg/issues/723)</code>).</li> <li>Add <code>~Connection.cancel_safe()</code> for encrypted and non-blocking cancellation when using libpq v17. Use such method internally to implement</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/psycopg/psycopg/commit/ce8f07321b8d0f0d95043596cbbbb6fd1e5831e7"><code>ce8f073</code></a> chore: bump psycopg package version to 3.2.3</li> <li><a href="https://github.com/psycopg/psycopg/commit/9af9267bdbe9075a7eacf5d3997512513a762022"><code>9af9267</code></a> Merge pull request <a href="https://redirect.github.com/psycopg/psycopg/issues/917">#917</a> from psycopg/pg17</li> <li><a href="https://github.com/psycopg/psycopg/commit/9c9369bea40ed20cf54241d9e04693fc2426a9ff"><code>9c9369b</code></a> docs: mention PostgreSQL 17 in binary packages in the news file</li> <li><a href="https://github.com/psycopg/psycopg/commit/d0b1a3ab0a53b8bc34ba52edbe0340fcc5b0db1f"><code>d0b1a3a</code></a> ci: install flex to build libpq</li> <li><a href="https://github.com/psycopg/psycopg/commit/17e8d85f695947ef3421ff4c596100124fa2c8c1"><code>17e8d85</code></a> ci(macos): fix dylib path for postgres 17 from brew</li> <li><a href="https://github.com/psycopg/psycopg/commit/d06613299aee124be6e673b238bbe747bad25978"><code>d066132</code></a> ci(macos): update brew to install PostgreSQL 17</li> <li><a href="https://github.com/psycopg/psycopg/commit/2cc362e4dc662413f32d9e289afa0493fb2aada2"><code>2cc362e</code></a> ci: bump to PostgreSQL 17 in binary packages</li> <li><a href="https://github.com/psycopg/psycopg/commit/810bfcf09c452e378adc23a2795736dea8395cfa"><code>810bfcf</code></a> chore: add PostgreSQL 17 TRANSACTION_TIMEOUT error</li> <li><a href="https://github.com/psycopg/psycopg/commit/2a0242163b144153a6c7b9af08c47c9f3fd790f4"><code>2a02421</code></a> ci: Add PostgreSQL 17 to CI test grid, remove PostgreSQL 11</li> <li><a href="https://github.com/psycopg/psycopg/commit/bea783d394ab5ad1f9f795af22a77370fad28ab6"><code>bea783d</code></a> fix(windows): resolve absolute path to libpq</li> <li>Additional commits viewable in <a href="https://github.com/psycopg/psycopg/compare/3.2.1...3.2.3">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the python-packages group in /backend with 2 updates: [pylint](https://github.com/pylint-dev/pylint) and [psycopg](https://github.com/psycopg/psycopg). Updates `pylint` from 3.3.0 to 3.3.1 <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pylint-dev/pylint/commit/76bce72bc57cc8089e439cc9d22fed5806341ed4"><code>76bce72</code></a> Bump pylint to 3.3.1, update changelog (<a href="https://redirect.github.com/pylint-dev/pylint/issues/9954">#9954</a>)</li> <li><a href="https://github.com/pylint-dev/pylint/commit/55ee81651aa98d644e046a0f02f20576ecb3a6dc"><code>55ee816</code></a> Bump astroid to 3.3.4 (<a href="https://redirect.github.com/pylint-dev/pylint/issues/9951">#9951</a>) (<a href="https://redirect.github.com/pylint-dev/pylint/issues/9952">#9952</a>)</li> <li>See full diff in <a href="https://github.com/pylint-dev/pylint/compare/v3.3.0...v3.3.1">compare view</a></li> </ul> </details> <br /> Updates `psycopg` from 3.2.2 to 3.2.3 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/psycopg/psycopg/blob/master/docs/news.rst">psycopg's changelog</a>.</em></p> <blockquote> <p>.. currentmodule:: psycopg</p> <p>.. index:: single: Release notes single: News</p> <h1><code>psycopg</code> release notes</h1> <h2>Current release</h2> <p>Psycopg 3.2.3 ^^^^^^^^^^^^^</p> <ul> <li>Release binary packages including PostgreSQL 17 libpq (:ticket:<code>[#852](https://github.com/psycopg/psycopg/issues/852)</code>).</li> </ul> <p>Psycopg 3.2.2 ^^^^^^^^^^^^^</p> <ul> <li>Drop <code>!TypeDef</code> specifications as string from public modules, as they cannot be composed by users as <code>!typing</code> objects previously could (:ticket:<code>[#860](https://github.com/psycopg/psycopg/issues/860)</code>).</li> <li>Release Python 3.13 binary packages.</li> </ul> <p>Psycopg 3.2.1 ^^^^^^^^^^^^^</p> <ul> <li>Fix packaging metadata breaking <code>[c]</code>, <code>[binary]</code> dependencies (:ticket:<code>[#853](https://github.com/psycopg/psycopg/issues/853)</code>).</li> </ul> <h2>Psycopg 3.2</h2> <p>.. rubric:: New top-level features</p> <ul> <li>Add support for integer, floating point, boolean <code>NumPy scalar types</code>__ (:ticket:<code>[#332](https://github.com/psycopg/psycopg/issues/332)</code>).</li> <li>Add <code>!timeout</code> and <code>!stop_after</code> parameters to <code>Connection.notifies()</code> (:ticket:<code>340</code>).</li> <li>Allow dumpers to return <code>!None</code>, to be converted to NULL (:ticket:<code>[#377](https://github.com/psycopg/psycopg/issues/377)</code>).</li> <li>Add :ref:<code>raw-query-cursors</code> to execute queries using placeholders in PostgreSQL format (<code>$1</code>, <code>$2</code>...) (🎟️<code>[#560](psycopg/psycopg#560), [#839](https://github.com/psycopg/psycopg/issues/839)</code>).</li> <li>Add <code>capabilities</code> object to :ref:<code>inspect the libpq capabilities <capabilities></code> (🎫<code>[#772](https://github.com/psycopg/psycopg/issues/772)</code>).</li> <li>Add <code>~rows.scalar_row</code> to return scalar values from a query (:ticket:<code>[#723](https://github.com/psycopg/psycopg/issues/723)</code>).</li> <li>Add <code>~Connection.cancel_safe()</code> for encrypted and non-blocking cancellation when using libpq v17. Use such method internally to implement</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/psycopg/psycopg/commit/ce8f07321b8d0f0d95043596cbbbb6fd1e5831e7"><code>ce8f073</code></a> chore: bump psycopg package version to 3.2.3</li> <li><a href="https://github.com/psycopg/psycopg/commit/9af9267bdbe9075a7eacf5d3997512513a762022"><code>9af9267</code></a> Merge pull request <a href="https://redirect.github.com/psycopg/psycopg/issues/917">#917</a> from psycopg/pg17</li> <li><a href="https://github.com/psycopg/psycopg/commit/9c9369bea40ed20cf54241d9e04693fc2426a9ff"><code>9c9369b</code></a> docs: mention PostgreSQL 17 in binary packages in the news file</li> <li><a href="https://github.com/psycopg/psycopg/commit/d0b1a3ab0a53b8bc34ba52edbe0340fcc5b0db1f"><code>d0b1a3a</code></a> ci: install flex to build libpq</li> <li><a href="https://github.com/psycopg/psycopg/commit/17e8d85f695947ef3421ff4c596100124fa2c8c1"><code>17e8d85</code></a> ci(macos): fix dylib path for postgres 17 from brew</li> <li><a href="https://github.com/psycopg/psycopg/commit/d06613299aee124be6e673b238bbe747bad25978"><code>d066132</code></a> ci(macos): update brew to install PostgreSQL 17</li> <li><a href="https://github.com/psycopg/psycopg/commit/2cc362e4dc662413f32d9e289afa0493fb2aada2"><code>2cc362e</code></a> ci: bump to PostgreSQL 17 in binary packages</li> <li><a href="https://github.com/psycopg/psycopg/commit/810bfcf09c452e378adc23a2795736dea8395cfa"><code>810bfcf</code></a> chore: add PostgreSQL 17 TRANSACTION_TIMEOUT error</li> <li><a href="https://github.com/psycopg/psycopg/commit/2a0242163b144153a6c7b9af08c47c9f3fd790f4"><code>2a02421</code></a> ci: Add PostgreSQL 17 to CI test grid, remove PostgreSQL 11</li> <li><a href="https://github.com/psycopg/psycopg/commit/bea783d394ab5ad1f9f795af22a77370fad28ab6"><code>bea783d</code></a> fix(windows): resolve absolute path to libpq</li> <li>Additional commits viewable in <a href="https://github.com/psycopg/psycopg/compare/3.2.2...3.2.3">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [psycopg](https://github.com/psycopg/psycopg) from 3.2.2 to 3.2.3. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/psycopg/psycopg/blob/master/docs/news.rst">psycopg's changelog</a>.</em></p> <blockquote> <p>.. currentmodule:: psycopg</p> <p>.. index:: single: Release notes single: News</p> <h1><code>psycopg</code> release notes</h1> <h2>Current release</h2> <p>Psycopg 3.2.3 ^^^^^^^^^^^^^</p> <ul> <li>Release binary packages including PostgreSQL 17 libpq (:ticket:<code>[#852](https://github.com/psycopg/psycopg/issues/852)</code>).</li> </ul> <p>Psycopg 3.2.2 ^^^^^^^^^^^^^</p> <ul> <li>Drop <code>!TypeDef</code> specifications as string from public modules, as they cannot be composed by users as <code>!typing</code> objects previously could (:ticket:<code>[#860](https://github.com/psycopg/psycopg/issues/860)</code>).</li> <li>Release Python 3.13 binary packages.</li> </ul> <p>Psycopg 3.2.1 ^^^^^^^^^^^^^</p> <ul> <li>Fix packaging metadata breaking <code>[c]</code>, <code>[binary]</code> dependencies (:ticket:<code>[#853](https://github.com/psycopg/psycopg/issues/853)</code>).</li> </ul> <h2>Psycopg 3.2</h2> <p>.. rubric:: New top-level features</p> <ul> <li>Add support for integer, floating point, boolean <code>NumPy scalar types</code>__ (:ticket:<code>[#332](https://github.com/psycopg/psycopg/issues/332)</code>).</li> <li>Add <code>!timeout</code> and <code>!stop_after</code> parameters to <code>Connection.notifies()</code> (:ticket:<code>340</code>).</li> <li>Allow dumpers to return <code>!None</code>, to be converted to NULL (:ticket:<code>[#377](https://github.com/psycopg/psycopg/issues/377)</code>).</li> <li>Add :ref:<code>raw-query-cursors</code> to execute queries using placeholders in PostgreSQL format (<code>$1</code>, <code>$2</code>...) (🎟️<code>[#560](psycopg/psycopg#560), [#839](https://github.com/psycopg/psycopg/issues/839)</code>).</li> <li>Add <code>capabilities</code> object to :ref:<code>inspect the libpq capabilities <capabilities></code> (🎫<code>[#772](https://github.com/psycopg/psycopg/issues/772)</code>).</li> <li>Add <code>~rows.scalar_row</code> to return scalar values from a query (:ticket:<code>[#723](https://github.com/psycopg/psycopg/issues/723)</code>).</li> <li>Add <code>~Connection.cancel_safe()</code> for encrypted and non-blocking cancellation when using libpq v17. Use such method internally to implement</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/psycopg/psycopg/commit/ce8f07321b8d0f0d95043596cbbbb6fd1e5831e7"><code>ce8f073</code></a> chore: bump psycopg package version to 3.2.3</li> <li><a href="https://github.com/psycopg/psycopg/commit/9af9267bdbe9075a7eacf5d3997512513a762022"><code>9af9267</code></a> Merge pull request <a href="https://redirect.github.com/psycopg/psycopg/issues/917">#917</a> from psycopg/pg17</li> <li><a href="https://github.com/psycopg/psycopg/commit/9c9369bea40ed20cf54241d9e04693fc2426a9ff"><code>9c9369b</code></a> docs: mention PostgreSQL 17 in binary packages in the news file</li> <li><a href="https://github.com/psycopg/psycopg/commit/d0b1a3ab0a53b8bc34ba52edbe0340fcc5b0db1f"><code>d0b1a3a</code></a> ci: install flex to build libpq</li> <li><a href="https://github.com/psycopg/psycopg/commit/17e8d85f695947ef3421ff4c596100124fa2c8c1"><code>17e8d85</code></a> ci(macos): fix dylib path for postgres 17 from brew</li> <li><a href="https://github.com/psycopg/psycopg/commit/d06613299aee124be6e673b238bbe747bad25978"><code>d066132</code></a> ci(macos): update brew to install PostgreSQL 17</li> <li><a href="https://github.com/psycopg/psycopg/commit/2cc362e4dc662413f32d9e289afa0493fb2aada2"><code>2cc362e</code></a> ci: bump to PostgreSQL 17 in binary packages</li> <li><a href="https://github.com/psycopg/psycopg/commit/810bfcf09c452e378adc23a2795736dea8395cfa"><code>810bfcf</code></a> chore: add PostgreSQL 17 TRANSACTION_TIMEOUT error</li> <li><a href="https://github.com/psycopg/psycopg/commit/2a0242163b144153a6c7b9af08c47c9f3fd790f4"><code>2a02421</code></a> ci: Add PostgreSQL 17 to CI test grid, remove PostgreSQL 11</li> <li><a href="https://github.com/psycopg/psycopg/commit/bea783d394ab5ad1f9f795af22a77370fad28ab6"><code>bea783d</code></a> fix(windows): resolve absolute path to libpq</li> <li>Additional commits viewable in <a href="https://github.com/psycopg/psycopg/compare/3.2.2...3.2.3">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
[//]: # (dependabot-start)⚠️ **Dependabot is rebasing this PR**⚠️ Rebasing might not happen immediately, so don't worry if this takes some time. Note: if you make any changes to this PR yourself, they will take precedence over the rebase. --- [//]: # (dependabot-end) Bumps [psycopg](https://github.com/psycopg/psycopg) from 3.2.2 to 3.2.3. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/psycopg/psycopg/blob/master/docs/news.rst">psycopg's changelog</a>.</em></p> <blockquote> <p>.. currentmodule:: psycopg</p> <p>.. index:: single: Release notes single: News</p> <h1><code>psycopg</code> release notes</h1> <h2>Current release</h2> <p>Psycopg 3.2.3 ^^^^^^^^^^^^^</p> <ul> <li>Release binary packages including PostgreSQL 17 libpq (:ticket:<code>[#852](https://github.com/psycopg/psycopg/issues/852)</code>).</li> </ul> <p>Psycopg 3.2.2 ^^^^^^^^^^^^^</p> <ul> <li>Drop <code>!TypeDef</code> specifications as string from public modules, as they cannot be composed by users as <code>!typing</code> objects previously could (:ticket:<code>[#860](https://github.com/psycopg/psycopg/issues/860)</code>).</li> <li>Release Python 3.13 binary packages.</li> </ul> <p>Psycopg 3.2.1 ^^^^^^^^^^^^^</p> <ul> <li>Fix packaging metadata breaking <code>[c]</code>, <code>[binary]</code> dependencies (:ticket:<code>[#853](https://github.com/psycopg/psycopg/issues/853)</code>).</li> </ul> <h2>Psycopg 3.2</h2> <p>.. rubric:: New top-level features</p> <ul> <li>Add support for integer, floating point, boolean <code>NumPy scalar types</code>__ (:ticket:<code>[#332](https://github.com/psycopg/psycopg/issues/332)</code>).</li> <li>Add <code>!timeout</code> and <code>!stop_after</code> parameters to <code>Connection.notifies()</code> (:ticket:<code>340</code>).</li> <li>Allow dumpers to return <code>!None</code>, to be converted to NULL (:ticket:<code>[#377](https://github.com/psycopg/psycopg/issues/377)</code>).</li> <li>Add :ref:<code>raw-query-cursors</code> to execute queries using placeholders in PostgreSQL format (<code>$1</code>, <code>$2</code>...) (🎟️<code>[#560](psycopg/psycopg#560), [#839](https://github.com/psycopg/psycopg/issues/839)</code>).</li> <li>Add <code>capabilities</code> object to :ref:<code>inspect the libpq capabilities <capabilities></code> (🎫<code>[#772](https://github.com/psycopg/psycopg/issues/772)</code>).</li> <li>Add <code>~rows.scalar_row</code> to return scalar values from a query (:ticket:<code>[#723](https://github.com/psycopg/psycopg/issues/723)</code>).</li> <li>Add <code>~Connection.cancel_safe()</code> for encrypted and non-blocking cancellation when using libpq v17. Use such method internally to implement</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/psycopg/psycopg/commit/ce8f07321b8d0f0d95043596cbbbb6fd1e5831e7"><code>ce8f073</code></a> chore: bump psycopg package version to 3.2.3</li> <li><a href="https://github.com/psycopg/psycopg/commit/9af9267bdbe9075a7eacf5d3997512513a762022"><code>9af9267</code></a> Merge pull request <a href="https://redirect.github.com/psycopg/psycopg/issues/917">#917</a> from psycopg/pg17</li> <li><a href="https://github.com/psycopg/psycopg/commit/9c9369bea40ed20cf54241d9e04693fc2426a9ff"><code>9c9369b</code></a> docs: mention PostgreSQL 17 in binary packages in the news file</li> <li><a href="https://github.com/psycopg/psycopg/commit/d0b1a3ab0a53b8bc34ba52edbe0340fcc5b0db1f"><code>d0b1a3a</code></a> ci: install flex to build libpq</li> <li><a href="https://github.com/psycopg/psycopg/commit/17e8d85f695947ef3421ff4c596100124fa2c8c1"><code>17e8d85</code></a> ci(macos): fix dylib path for postgres 17 from brew</li> <li><a href="https://github.com/psycopg/psycopg/commit/d06613299aee124be6e673b238bbe747bad25978"><code>d066132</code></a> ci(macos): update brew to install PostgreSQL 17</li> <li><a href="https://github.com/psycopg/psycopg/commit/2cc362e4dc662413f32d9e289afa0493fb2aada2"><code>2cc362e</code></a> ci: bump to PostgreSQL 17 in binary packages</li> <li><a href="https://github.com/psycopg/psycopg/commit/810bfcf09c452e378adc23a2795736dea8395cfa"><code>810bfcf</code></a> chore: add PostgreSQL 17 TRANSACTION_TIMEOUT error</li> <li><a href="https://github.com/psycopg/psycopg/commit/2a0242163b144153a6c7b9af08c47c9f3fd790f4"><code>2a02421</code></a> ci: Add PostgreSQL 17 to CI test grid, remove PostgreSQL 11</li> <li><a href="https://github.com/psycopg/psycopg/commit/bea783d394ab5ad1f9f795af22a77370fad28ab6"><code>bea783d</code></a> fix(windows): resolve absolute path to libpq</li> <li>Additional commits viewable in <a href="https://github.com/psycopg/psycopg/compare/3.2.2...3.2.3">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [psycopg](https://github.com/psycopg/psycopg) from 3.2.1 to 3.2.3. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/psycopg/psycopg/blob/master/docs/news.rst">psycopg's changelog</a>.</em></p> <blockquote> <p>.. currentmodule:: psycopg</p> <p>.. index:: single: Release notes single: News</p> <h1><code>psycopg</code> release notes</h1> <h2>Current release</h2> <p>Psycopg 3.2.3 ^^^^^^^^^^^^^</p> <ul> <li>Release binary packages including PostgreSQL 17 libpq (:ticket:<code>[#852](https://github.com/psycopg/psycopg/issues/852)</code>).</li> </ul> <p>Psycopg 3.2.2 ^^^^^^^^^^^^^</p> <ul> <li>Drop <code>!TypeDef</code> specifications as string from public modules, as they cannot be composed by users as <code>!typing</code> objects previously could (:ticket:<code>[#860](https://github.com/psycopg/psycopg/issues/860)</code>).</li> <li>Release Python 3.13 binary packages.</li> </ul> <p>Psycopg 3.2.1 ^^^^^^^^^^^^^</p> <ul> <li>Fix packaging metadata breaking <code>[c]</code>, <code>[binary]</code> dependencies (:ticket:<code>[#853](https://github.com/psycopg/psycopg/issues/853)</code>).</li> </ul> <h2>Psycopg 3.2</h2> <p>.. rubric:: New top-level features</p> <ul> <li>Add support for integer, floating point, boolean <code>NumPy scalar types</code>__ (:ticket:<code>[#332](https://github.com/psycopg/psycopg/issues/332)</code>).</li> <li>Add <code>!timeout</code> and <code>!stop_after</code> parameters to <code>Connection.notifies()</code> (:ticket:<code>340</code>).</li> <li>Allow dumpers to return <code>!None</code>, to be converted to NULL (:ticket:<code>[#377](https://github.com/psycopg/psycopg/issues/377)</code>).</li> <li>Add :ref:<code>raw-query-cursors</code> to execute queries using placeholders in PostgreSQL format (<code>$1</code>, <code>$2</code>...) (🎟️<code>[#560](psycopg/psycopg#560), [#839](https://github.com/psycopg/psycopg/issues/839)</code>).</li> <li>Add <code>capabilities</code> object to :ref:<code>inspect the libpq capabilities <capabilities></code> (🎫<code>[#772](https://github.com/psycopg/psycopg/issues/772)</code>).</li> <li>Add <code>~rows.scalar_row</code> to return scalar values from a query (:ticket:<code>[#723](https://github.com/psycopg/psycopg/issues/723)</code>).</li> <li>Add <code>~Connection.cancel_safe()</code> for encrypted and non-blocking cancellation when using libpq v17. Use such method internally to implement</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/psycopg/psycopg/commit/ce8f07321b8d0f0d95043596cbbbb6fd1e5831e7"><code>ce8f073</code></a> chore: bump psycopg package version to 3.2.3</li> <li><a href="https://github.com/psycopg/psycopg/commit/9af9267bdbe9075a7eacf5d3997512513a762022"><code>9af9267</code></a> Merge pull request <a href="https://redirect.github.com/psycopg/psycopg/issues/917">#917</a> from psycopg/pg17</li> <li><a href="https://github.com/psycopg/psycopg/commit/9c9369bea40ed20cf54241d9e04693fc2426a9ff"><code>9c9369b</code></a> docs: mention PostgreSQL 17 in binary packages in the news file</li> <li><a href="https://github.com/psycopg/psycopg/commit/d0b1a3ab0a53b8bc34ba52edbe0340fcc5b0db1f"><code>d0b1a3a</code></a> ci: install flex to build libpq</li> <li><a href="https://github.com/psycopg/psycopg/commit/17e8d85f695947ef3421ff4c596100124fa2c8c1"><code>17e8d85</code></a> ci(macos): fix dylib path for postgres 17 from brew</li> <li><a href="https://github.com/psycopg/psycopg/commit/d06613299aee124be6e673b238bbe747bad25978"><code>d066132</code></a> ci(macos): update brew to install PostgreSQL 17</li> <li><a href="https://github.com/psycopg/psycopg/commit/2cc362e4dc662413f32d9e289afa0493fb2aada2"><code>2cc362e</code></a> ci: bump to PostgreSQL 17 in binary packages</li> <li><a href="https://github.com/psycopg/psycopg/commit/810bfcf09c452e378adc23a2795736dea8395cfa"><code>810bfcf</code></a> chore: add PostgreSQL 17 TRANSACTION_TIMEOUT error</li> <li><a href="https://github.com/psycopg/psycopg/commit/2a0242163b144153a6c7b9af08c47c9f3fd790f4"><code>2a02421</code></a> ci: Add PostgreSQL 17 to CI test grid, remove PostgreSQL 11</li> <li><a href="https://github.com/psycopg/psycopg/commit/bea783d394ab5ad1f9f795af22a77370fad28ab6"><code>bea783d</code></a> fix(windows): resolve absolute path to libpq</li> <li>Additional commits viewable in <a href="https://github.com/psycopg/psycopg/compare/3.2.1...3.2.3">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Original PR #560 by joelonsql Original: psycopg/psycopg#560
…laceholders Merged from original PR #560 Original: psycopg/psycopg#560
Original PR #560 by joelonsql Original: psycopg/psycopg#560
…laceholders Merged from original PR #560 Original: psycopg/psycopg#560
Original PR #560 by joelonsql Original: psycopg/psycopg#560
…laceholders Merged from original PR #560 Original: psycopg/psycopg#560
This commit introduces support for raw queries with PostgreSQL's native placeholders ($1, $2, etc.) in psycopg3. By setting the use_raw_query attribute to True in a custom cursor class, users can enable the use of raw queries with native placeholders.
The code demonstrates how to create a custom RawQueryCursor class that sets the use_raw_query attribute to True. This custom cursor class can be set as the cursor_factory when connecting to the database, allowing users to choose between PostgreSQL's native placeholders or the standard %s placeholder in their queries. The code also demonstrates how both styles of placeholders can coexist. Test cases are included to verify the correct behavior of the new feature.
Modifications include changes to the PostgresQuery class, BaseCursor class, and the addition of a new test file test_use_raw_query.py. The documentation has been updated as well to reflect the new feature.