Commit d00c207
authored
Build(deps): bump pyo3 from 0.27.2 to 0.28.0 (#221)
Bumps [pyo3](https://github.com/pyo3/pyo3) from 0.27.2 to 0.28.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pyo3/pyo3/releases">pyo3's
releases</a>.</em></p>
<blockquote>
<h2>PyO3 0.28.0</h2>
<p>This release contains many improvements across PyO3's feature
set:</p>
<ul>
<li>Proper support for <code>__init__</code> methods for
<code>#[pyclass]</code> types</li>
<li>Support for <code>#[deleter]</code>s to complement the existing
<code>#[getter]</code> and <code>#[setter]</code> attributes when
implementing class "properties".</li>
<li>Support for subclassing many Python types with the <code>abi3</code>
feature (requires Python 3.12+).</li>
<li>A new <code>#[pyclass(new = "from_fields")]</code> option
to automatically define the constructor from the class fields.</li>
<li>Many corrections to FFI definitions (including removal of many
private CPython methods)</li>
<li>Many improvements to the <code>experimental-inspect</code> feature's
functionality.</li>
</ul>
<p>The minimum supported Rust version has been increased to Rust
1.83.</p>
<p>This release also switches <code>#[pymodule]</code> to use PEP 489
multi-phase initialization internally. This should have no immediate
functional impact other than preparing PyO3 to support newer
technologies such as Python subinterpreters.</p>
<p>There are also many other incremental improvements, bug fixes and
smaller features; full detail can be found in the <a
href="https://pyo3.rs/v0.28.0/changelog.html">CHANGELOG</a>.</p>
<p>Please consult the <a
href="https://pyo3.rs/v0.28.0/migration.html">migration guide</a> for
help upgrading.</p>
<p>Thank you to everyone who contributed code, documentation, design
ideas, bug reports, and feedback. The following contributors' commits
are included in this release:</p>
<p><a href="https://github.com/ABorgna"><code>@ABorgna</code></a>
<a href="https://github.com/ahlinc"><code>@ahlinc</code></a>
<a href="https://github.com/alex"><code>@alex</code></a>
<a href="https://github.com/altendky"><code>@altendky</code></a>
<a href="https://github.com/bazaah"><code>@bazaah</code></a>
<a
href="https://github.com/bschoenmaeckers"><code>@bschoenmaeckers</code></a>
<a href="https://github.com/chirizxc"><code>@chirizxc</code></a>
<a href="https://github.com/clin1234"><code>@clin1234</code></a>
<a href="https://github.com/davidhewitt"><code>@davidhewitt</code></a>
<a
href="https://github.com/dependabot"><code>@dependabot</code></a>[bot]
<a
href="https://github.com/freakboy3742"><code>@freakboy3742</code></a>
<a href="https://github.com/henryp3278"><code>@henryp3278</code></a>
<a href="https://github.com/Icxolu"><code>@Icxolu</code></a>
<a href="https://github.com/lazka"><code>@lazka</code></a>
<a href="https://github.com/LilyFirefly"><code>@LilyFirefly</code></a>
<a href="https://github.com/linkmauve"><code>@linkmauve</code></a>
<a href="https://github.com/lmmx"><code>@lmmx</code></a>
<a href="https://github.com/lukaslueg"><code>@lukaslueg</code></a>
<a
href="https://github.com/MatthieuDartiailh"><code>@MatthieuDartiailh</code></a>
<a
href="https://github.com/MusicalNinjaDad"><code>@MusicalNinjaDad</code></a>
<a href="https://github.com/ngoldbaum"><code>@ngoldbaum</code></a>
<a href="https://github.com/pkalivas"><code>@pkalivas</code></a>
<a href="https://github.com/reaperhulk"><code>@reaperhulk</code></a>
<a href="https://github.com/RedKinda"><code>@RedKinda</code></a>
<a href="https://github.com/SilasMarvin"><code>@SilasMarvin</code></a>
<a
href="https://github.com/SoroushMoosapour"><code>@SoroushMoosapour</code></a>
<a href="https://github.com/stijndcl"><code>@stijndcl</code></a>
<a href="https://github.com/tpoliaw"><code>@tpoliaw</code></a>
<a href="https://github.com/Tpt"><code>@Tpt</code></a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/PyO3/pyo3/blob/main/CHANGELOG.md">pyo3's
changelog</a>.</em></p>
<blockquote>
<h2>[0.28.0] - 2026-02-01</h2>
<h3>Packaging</h3>
<ul>
<li>Bump MSRV to Rust 1.83. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5531">#5531</a></li>
<li>Bump minimum supported <code>quote</code> version to 1.0.37. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5531">#5531</a></li>
<li>Bump supported GraalPy version to 25.0. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5542">#5542</a></li>
<li>Drop <code>memoffset</code> dependency. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5545">#5545</a></li>
<li>Support for free-threaded Python is now opt-out rather than opt-in.
<a href="https://redirect.github.com/PyO3/pyo3/pull/5564">#5564</a></li>
<li>Bump <code>target-lexicon</code> dependency to 0.13.3. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5571">#5571</a></li>
<li>Drop <code>indoc</code> and <code>unindent</code> dependencies. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5608">#5608</a></li>
</ul>
<h3>Added</h3>
<ul>
<li>Add <code>__init__</code> support in <code>#[pymethods]</code>. <a
href="https://redirect.github.com/PyO3/pyo3/pull/4951">#4951</a></li>
<li>Expose <code>PySuper</code> on PyPy, GraalPy and ABI3 <a
href="https://redirect.github.com/PyO3/pyo3/pull/4951">#4951</a></li>
<li>Add <code>PyString::from_fmt</code> and <code>py_format!</code>
macro. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5199">#5199</a></li>
<li>Add <code>#[pyclass(new = "from_fields")]</code> option.
<a href="https://redirect.github.com/PyO3/pyo3/pull/5421">#5421</a></li>
<li>Add <code>pyo3::buffer::PyUntypedBuffer</code>, a type-erased form
of <code>PyBuffer<T></code>. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5458">#5458</a></li>
<li>Add <code>PyBytes::new_with_writer</code> <a
href="https://redirect.github.com/PyO3/pyo3/pull/5517">#5517</a></li>
<li>Add <code>PyClass::NAME</code>. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5579">#5579</a></li>
<li>Add <code>pyo3_build_config::add_libpython_rpath_link_args</code>.
<a href="https://redirect.github.com/PyO3/pyo3/pull/5624">#5624</a></li>
<li>Add <code>PyBackedStr::clone_ref</code> and
<code>PyBackedBytes::clone_ref</code> methods. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5654">#5654</a></li>
<li>Add <code>PyCapsule::new_with_pointer</code> and
<code>PyCapsule::new_with_pointer_and_destructor</code> for creating
capsules with raw pointers. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5689">#5689</a></li>
<li>Add <code>#[deleter]</code> attribute to implement property deleters
in <code>#[methods]</code>. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5699">#5699</a></li>
<li>Add <code>IntoPyObject</code> and <code>FromPyObject</code>
implementations for <code>uuid::NonNilUuid</code>. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5707">#5707</a></li>
<li>Add <code>PyBackedStr::as_str</code> and
<code>PyBackedStr::as_py_str</code> methods. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5723">#5723</a></li>
<li>Add support for subclassing native types (<code>PyDict</code>,
exceptions, ...) when building for abi3 on Python 3.12+. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5733">#5733</a></li>
<li>Add support for subclassing <code>PyList</code> when building for
Python 3.12+. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5734">#5734</a></li>
<li>FFI definitions:
<ul>
<li>Add FFI definitions <code>PyEval_GetFrameBuiltins</code>,
<code>PyEval_GetFrameGlobals</code> and
<code>PyEval_GetFrameLocals</code> on Python 3.13 and up. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5590">#5590</a></li>
<li>Add FFI definitions <code>PyObject_New</code>,
<code>PyObject_NewVar</code>, <code>PyObject_GC_Resize</code>,
<code>PyObject_GC_New</code>, and <code>PyObject_GC_NewVar</code>. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5591">#5591</a></li>
<li>Added FFI definitions and an unsafe Rust API wrapping
<code>Py_BEGIN_CRITICAL_SECTION_MUTEX</code> and
<code>Py_BEGIN_CRITICAL_SECTION_MUTEX2</code>. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5642">#5642</a></li>
<li>Add FFI definition <code>PyDict_GetItemStringRef</code> on Python
3.13 and up. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5659">#5659</a></li>
<li>Add FFI definition <code>PyIter_NextItem</code> on Python 3.14 and
up, and <code>compat::PyIter_NextItem</code> for older versions. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5661">#5661</a></li>
<li>Add FFI definitions <code>PyThreadState_GetInterpreter</code> and
<code>PyThreadState_GetID</code> on Python 3.9+,
<code>PyThreadState_EnterTracing</code> and
<code>PyThreadState_LeaveTracing</code> on Python 3.11+,
<code>PyThreadState_GetUnchecked</code> on Python 3.13+, and
<code>compat::PyThreadState_GetUnchecked</code>. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5711">#5711</a></li>
<li>Add FFI definitions <code>PyImport_ImportModuleAttr</code> and
<code>PyImport_ImportModuleAttrString</code> on Python 3.14+. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5737">#5737</a></li>
<li>Add FFI definitions for the <code>PyABIInfo</code> and
<code>PyModExport</code> APIs available in Python 3.15. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5746">#5746</a></li>
</ul>
</li>
<li><code>experimental-inspect</code>:
<ul>
<li>Emit base classes. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5331">#5331</a></li>
<li>Emit <code>@typing.final</code> on final classes. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5552">#5552</a></li>
<li>Generate nested classes for complex enums. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5708">#5708</a></li>
<li>Emit <code>async</code> keyword for async functions. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5731">#5731</a></li>
</ul>
</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Call <code>sys.unraisablehook</code> instead of
<code>PyErr_Print</code> if panicking on null FFI pointer in
<code>Bound</code>, <code>Borrowed</code> and <code>Py</code>
constructors. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5496">#5496</a></li>
<li>Use PEP-489 multi-phase initialization for <code>#[pymodule]</code>.
<a href="https://redirect.github.com/PyO3/pyo3/pull/5525">#5525</a></li>
<li>Deprecate implicit by-value implementation of
<code>FromPyObject</code> for <code>#[pyclass]</code>. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5550">#5550</a></li>
<li>Deprecate <code>PyTypeInfo::NAME</code> and
<code>PyTypeInfo::MODULE</code>. <a
href="https://redirect.github.com/PyO3/pyo3/pull/5579">#5579</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/PyO3/pyo3/commit/f0c1523b69fd86f2a0e263d1b5830335912f574a"><code>f0c1523</code></a>
release: 0.28.0 (<a
href="https://redirect.github.com/pyo3/pyo3/issues/5762">#5762</a>)</li>
<li><a
href="https://github.com/PyO3/pyo3/commit/278b54d0540814f842bafa3db0a47fa08f039b1c"><code>278b54d</code></a>
ci: fix nightly warning of <code>PyClassObjectContents</code> privacy
(<a
href="https://redirect.github.com/pyo3/pyo3/issues/5767">#5767</a>)</li>
<li><a
href="https://github.com/PyO3/pyo3/commit/f6223016c67c8c388c1000cef848d2178a0465c9"><code>f622301</code></a>
add <code>PyUntypedBuffer</code> (<a
href="https://redirect.github.com/pyo3/pyo3/issues/5458">#5458</a>)</li>
<li><a
href="https://github.com/PyO3/pyo3/commit/aeeaf68578a27c80c08f506e65fcb913decd817c"><code>aeeaf68</code></a>
Implement <code>auto_new</code> attribute for <code>#[pyclass]</code>
(<a
href="https://redirect.github.com/pyo3/pyo3/issues/5421">#5421</a>)</li>
<li><a
href="https://github.com/PyO3/pyo3/commit/5578141face69a2bc166bb0e3d371c818975b7d6"><code>5578141</code></a>
clean up error messages for Send / Sync requirements on
<code>#[pyclass]</code> (<a
href="https://redirect.github.com/pyo3/pyo3/issues/5750">#5750</a>)</li>
<li><a
href="https://github.com/PyO3/pyo3/commit/18aa0c27facf90c64f1237d82a48003fa71f3125"><code>18aa0c2</code></a>
docs: fix some sections in the migration guide (<a
href="https://redirect.github.com/pyo3/pyo3/issues/5763">#5763</a>)</li>
<li><a
href="https://github.com/PyO3/pyo3/commit/8848c7674e4179d24d7f96570aff4ad45d295f75"><code>8848c76</code></a>
ci: run benchmarks on free-threaded build (<a
href="https://redirect.github.com/pyo3/pyo3/issues/5760">#5760</a>)</li>
<li><a
href="https://github.com/PyO3/pyo3/commit/d7c050c057be925da3210e33678967b9f70ae853"><code>d7c050c</code></a>
Fix missing return types in PyModExport API wrappers (<a
href="https://redirect.github.com/pyo3/pyo3/issues/5764">#5764</a>)</li>
<li><a
href="https://github.com/PyO3/pyo3/commit/45f9f620e12d8df431457428650be9e2059a7186"><code>45f9f62</code></a>
macros: rename PythonTypeHint into PyExpr (<a
href="https://redirect.github.com/pyo3/pyo3/issues/5756">#5756</a>)</li>
<li><a
href="https://github.com/PyO3/pyo3/commit/ae44f85b53066a9c715933401910b2786f7df8a2"><code>ae44f85</code></a>
netlify: try marking canonical URLs for all files (<a
href="https://redirect.github.com/pyo3/pyo3/issues/5761">#5761</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pyo3/pyo3/compare/v0.27.2...v0.28.0">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>2 files changed
Lines changed: 13 additions & 43 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
5 | | - | |
6 | | - | |
7 | | - | |
8 | | - | |
9 | | - | |
10 | | - | |
11 | 5 | | |
12 | 6 | | |
13 | 7 | | |
14 | 8 | | |
15 | 9 | | |
16 | 10 | | |
17 | | - | |
18 | | - | |
19 | | - | |
20 | | - | |
21 | | - | |
22 | | - | |
23 | 11 | | |
24 | 12 | | |
25 | 13 | | |
26 | 14 | | |
27 | 15 | | |
28 | 16 | | |
29 | | - | |
30 | | - | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
37 | | - | |
38 | 17 | | |
39 | 18 | | |
40 | 19 | | |
| |||
65 | 44 | | |
66 | 45 | | |
67 | 46 | | |
68 | | - | |
| 47 | + | |
69 | 48 | | |
70 | | - | |
| 49 | + | |
71 | 50 | | |
72 | | - | |
73 | 51 | | |
74 | | - | |
75 | 52 | | |
76 | 53 | | |
77 | 54 | | |
78 | 55 | | |
79 | 56 | | |
80 | | - | |
81 | 57 | | |
82 | 58 | | |
83 | 59 | | |
84 | 60 | | |
85 | | - | |
| 61 | + | |
86 | 62 | | |
87 | | - | |
| 63 | + | |
88 | 64 | | |
89 | 65 | | |
90 | 66 | | |
91 | 67 | | |
92 | 68 | | |
93 | 69 | | |
94 | | - | |
| 70 | + | |
95 | 71 | | |
96 | | - | |
| 72 | + | |
97 | 73 | | |
98 | 74 | | |
99 | 75 | | |
100 | 76 | | |
101 | 77 | | |
102 | 78 | | |
103 | 79 | | |
104 | | - | |
| 80 | + | |
105 | 81 | | |
106 | | - | |
| 82 | + | |
107 | 83 | | |
108 | 84 | | |
109 | 85 | | |
| |||
113 | 89 | | |
114 | 90 | | |
115 | 91 | | |
116 | | - | |
| 92 | + | |
117 | 93 | | |
118 | | - | |
| 94 | + | |
119 | 95 | | |
120 | 96 | | |
121 | 97 | | |
| |||
146 | 122 | | |
147 | 123 | | |
148 | 124 | | |
149 | | - | |
| 125 | + | |
150 | 126 | | |
151 | | - | |
| 127 | + | |
152 | 128 | | |
153 | 129 | | |
154 | 130 | | |
155 | 131 | | |
156 | 132 | | |
157 | 133 | | |
158 | | - | |
159 | | - | |
160 | | - | |
161 | | - | |
162 | | - | |
163 | | - | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
| 12 | + | |
0 commit comments