Skip to content

Commit d00c207

Browse files
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 &quot;properties&quot;.</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 = &quot;from_fields&quot;)]</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 = &quot;from_fields&quot;)]</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&lt;T&gt;</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 /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pyo3&package-manager=cargo&previous-version=0.27.2&new-version=0.28.0)](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 parents 22bceb8 + 6e2a737 commit d00c207

2 files changed

Lines changed: 13 additions & 43 deletions

File tree

Cargo.lock

Lines changed: 12 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,18 @@
22
# It is not intended for manual editing.
33
version = 4
44

5-
[[package]]
6-
name = "autocfg"
7-
version = "1.4.0"
8-
source = "registry+https://github.com/rust-lang/crates.io-index"
9-
checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
10-
115
[[package]]
126
name = "heck"
137
version = "0.5.0"
148
source = "registry+https://github.com/rust-lang/crates.io-index"
159
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
1610

17-
[[package]]
18-
name = "indoc"
19-
version = "2.0.6"
20-
source = "registry+https://github.com/rust-lang/crates.io-index"
21-
checksum = "f4c7245a08504955605670dbf141fceab975f15ca21570696aebe9d2e71576bd"
22-
2311
[[package]]
2412
name = "libc"
2513
version = "0.2.172"
2614
source = "registry+https://github.com/rust-lang/crates.io-index"
2715
checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa"
2816

29-
[[package]]
30-
name = "memoffset"
31-
version = "0.9.1"
32-
source = "registry+https://github.com/rust-lang/crates.io-index"
33-
checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
34-
dependencies = [
35-
"autocfg",
36-
]
37-
3817
[[package]]
3918
name = "once_cell"
4019
version = "1.21.3"
@@ -65,45 +44,42 @@ dependencies = [
6544

6645
[[package]]
6746
name = "pyo3"
68-
version = "0.27.2"
47+
version = "0.28.0"
6948
source = "registry+https://github.com/rust-lang/crates.io-index"
70-
checksum = "ab53c047fcd1a1d2a8820fe84f05d6be69e9526be40cb03b73f86b6b03e6d87d"
49+
checksum = "fcf3ccafdf54c050be48a3a086d372f77ba6615f5057211607cd30e5ac5cec6d"
7150
dependencies = [
72-
"indoc",
7351
"libc",
74-
"memoffset",
7552
"once_cell",
7653
"portable-atomic",
7754
"pyo3-build-config",
7855
"pyo3-ffi",
7956
"pyo3-macros",
80-
"unindent",
8157
]
8258

8359
[[package]]
8460
name = "pyo3-build-config"
85-
version = "0.27.2"
61+
version = "0.28.0"
8662
source = "registry+https://github.com/rust-lang/crates.io-index"
87-
checksum = "b455933107de8642b4487ed26d912c2d899dec6114884214a0b3bb3be9261ea6"
63+
checksum = "972720a441c91fd9c49f212a1d2d74c6e3803b231ebc8d66c51efbd7ccab11c8"
8864
dependencies = [
8965
"target-lexicon",
9066
]
9167

9268
[[package]]
9369
name = "pyo3-ffi"
94-
version = "0.27.2"
70+
version = "0.28.0"
9571
source = "registry+https://github.com/rust-lang/crates.io-index"
96-
checksum = "1c85c9cbfaddf651b1221594209aed57e9e5cff63c4d11d1feead529b872a089"
72+
checksum = "5994456d9dab8934d600d3867571b6410f24fbd6002570ad56356733eb54859b"
9773
dependencies = [
9874
"libc",
9975
"pyo3-build-config",
10076
]
10177

10278
[[package]]
10379
name = "pyo3-macros"
104-
version = "0.27.2"
80+
version = "0.28.0"
10581
source = "registry+https://github.com/rust-lang/crates.io-index"
106-
checksum = "0a5b10c9bf9888125d917fb4d2ca2d25c8df94c7ab5a52e13313a07e050a3b02"
82+
checksum = "11ce9cc8d81b3c4969748807604d92b4eef363c5bb82b1a1bdb34ec6f1093a18"
10783
dependencies = [
10884
"proc-macro2",
10985
"pyo3-macros-backend",
@@ -113,9 +89,9 @@ dependencies = [
11389

11490
[[package]]
11591
name = "pyo3-macros-backend"
116-
version = "0.27.2"
92+
version = "0.28.0"
11793
source = "registry+https://github.com/rust-lang/crates.io-index"
118-
checksum = "03b51720d314836e53327f5871d4c0cfb4fb37cc2c4a11cc71907a86342c40f9"
94+
checksum = "eaf4b60036a154d23282679b658e3cc7d88d3b8c9a40b43824785f232d2e1b98"
11995
dependencies = [
12096
"heck",
12197
"proc-macro2",
@@ -146,18 +122,12 @@ dependencies = [
146122

147123
[[package]]
148124
name = "target-lexicon"
149-
version = "0.13.2"
125+
version = "0.13.4"
150126
source = "registry+https://github.com/rust-lang/crates.io-index"
151-
checksum = "e502f78cdbb8ba4718f566c418c52bc729126ffd16baee5baa718cf25dd5a69a"
127+
checksum = "b1dd07eb858a2067e2f3c7155d54e929265c264e6f37efe3ee7a8d1b5a1dd0ba"
152128

153129
[[package]]
154130
name = "unicode-ident"
155131
version = "1.0.18"
156132
source = "registry+https://github.com/rust-lang/crates.io-index"
157133
checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
158-
159-
[[package]]
160-
name = "unindent"
161-
version = "0.2.4"
162-
source = "registry+https://github.com/rust-lang/crates.io-index"
163-
checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3"

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@ crate-type = ["cdylib",]
99

1010

1111
[dependencies]
12-
pyo3 = { version = "^0.27.2", features = ["extension-module"] }
12+
pyo3 = { version = "^0.28.0", features = ["extension-module"] }

0 commit comments

Comments
 (0)