Skip to content

Tags: MusicalNinjas/pyo3-testing

Tags

v0.28.0

Toggle v0.28.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Support pyo3 0.28.2 [Breaking changes] (#35)

Adapt to pyo3 usage of PEP 489 multi-phase initialization

Updates the requirements on [pyo3](https://github.com/pyo3/pyo3) to
permit the latest version.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/pyo3/pyo3/releases">pyo3's">https://github.com/pyo3/pyo3/releases">pyo3's
releases</a>.</em></p>
<blockquote>
<h2>PyO3 0.28.2</h2>
<p>This patch release contains a soundness fix for subclassing native
types such as <code>PyList</code> with the <code>abi3</code> feature
enabled when targeting a minimum version of Python 3.12 or higher.
(Support for doing such subclassing was newly added in PyO3 0.28.0.)</p>
<p>PyO3 0.28.0 and 0.28.1 will be yanked.</p>
<p>This release also contains a correction to the FFI definition
<code>PyType_GetTypeDataSize</code> and incorrectly-generated
<code>__qualname__</code> on <code>#[pyclass]</code> enum variant types
when using <code>#[pyo3(name = &quot;...&quot;)]</code> option to rename
the enum and/or variant.</p>
<p>Thank you to the following contributors for the improvements:</p>
<p><a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/davidhewitt"><code>@​davidhewitt</code></a">https://github.com/davidhewitt"><code>@​davidhewitt</code></a>
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/Icxolu"><code>@​Icxolu</code></a">https://github.com/Icxolu"><code>@​Icxolu</code></a>
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/ngoldbaum"><code>@​ngoldbaum</code></a></p">https://github.com/ngoldbaum"><code>@​ngoldbaum</code></a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/PyO3/pyo3/blob/v0.28.2/CHANGELOG.md">pyo3's">https://github.com/PyO3/pyo3/blob/v0.28.2/CHANGELOG.md">pyo3's
changelog</a>.</em></p>
<blockquote>
<h2>[0.28.2] - 2026-02-18</h2>
<h3>Fixed</h3>
<ul>
<li>Fix complex enum <code>__qualname__</code> not using python name <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/5815">#5815</a></li">https://redirect.github.com/PyO3/pyo3/pull/5815">#5815</a></li>
<li>Fix FFI definition <code>PyType_GetTypeDataSize</code> (was
incorrectly named <code>PyObject_GetTypeDataSize</code>). <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/5819">#5819</a></li">https://redirect.github.com/PyO3/pyo3/pull/5819">#5819</a></li>
<li>Fix memory corruption when subclassing native types with
<code>abi3</code> feature on Python 3.12+ (newly enabled in PyO3
0.28.0). <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/5823">#5823</a></li">https://redirect.github.com/PyO3/pyo3/pull/5823">#5823</a></li>
</ul>
<h2>[0.28.1] - 2026-02-14</h2>
<h3>Fixed</h3>
<ul>
<li>Fix <code>*args</code> / <code>**kwargs</code> support in<code>
experimental-async</code> feature (regressed in 0.28.0). <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/5771">#5771</a></li">https://redirect.github.com/PyO3/pyo3/pull/5771">#5771</a></li>
<li>Fix <code>clippy::declare_interior_mutable_const</code> warning
inside <code>#[pyclass]</code> generated code on enums. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/5772">#5772</a></li">https://redirect.github.com/PyO3/pyo3/pull/5772">#5772</a></li>
<li>Fix <code>ambiguous_associated_items</code> compilation error when
deriving <code>FromPyObject</code> or using
<code>#[pyclass(from_py_object)]</code> macro on enums with
<code>Error</code> variant. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/5784">#5784</a></li">https://redirect.github.com/PyO3/pyo3/pull/5784">#5784</a></li>
<li>Fix <code>__qualname__</code> for complex <code>#[pyclass]</code>
enum variants to include the enum name. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/5796">#5796</a></li">https://redirect.github.com/PyO3/pyo3/pull/5796">#5796</a></li>
<li>Fix missing <code>std::sync::atomic::Ordering</code> import for
targets without atomic64. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/5808">#5808</a></li">https://redirect.github.com/PyO3/pyo3/pull/5808">#5808</a></li>
</ul>
<h2>[0.28.0] - 2026-02-01</h2>
<h3>Packaging</h3>
<ul>
<li>Bump MSRV to Rust 1.83. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/5531">#5531</a></li">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="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/5531">#5531</a></li">https://redirect.github.com/PyO3/pyo3/pull/5531">#5531</a></li>
<li>Bump supported GraalPy version to 25.0. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/5542">#5542</a></li">https://redirect.github.com/PyO3/pyo3/pull/5542">#5542</a></li>
<li>Drop <code>memoffset</code> dependency. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/5545">#5545</a></li">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="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/5564">#5564</a></li">https://redirect.github.com/PyO3/pyo3/pull/5564">#5564</a></li>
<li>Bump <code>target-lexicon</code> dependency to 0.13.3. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/5571">#5571</a></li">https://redirect.github.com/PyO3/pyo3/pull/5571">#5571</a></li>
<li>Drop <code>indoc</code> and <code>unindent</code> dependencies. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/5608">#5608</a></li">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="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4951">#4951</a></li">https://redirect.github.com/PyO3/pyo3/pull/4951">#4951</a></li>
<li>Expose <code>PySuper</code> on PyPy, GraalPy and ABI3 <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4951">#4951</a></li">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="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/5199">#5199</a></li">https://redirect.github.com/PyO3/pyo3/pull/5199">#5199</a></li>
<li>Add <code>#[pyclass(new = &quot;from_fields&quot;)]</code> option.
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/5421">#5421</a></li">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="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/5458">#5458</a></li">https://redirect.github.com/PyO3/pyo3/pull/5458">#5458</a></li>
<li>Add <code>PyBytes::new_with_writer</code> <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/5517">#5517</a></li">https://redirect.github.com/PyO3/pyo3/pull/5517">#5517</a></li>
<li>Add <code>PyClass::NAME</code>. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/5579">#5579</a></li">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="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/5624">#5624</a></li">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="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/5654">#5654</a></li">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="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/5689">#5689</a></li">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="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/5699">#5699</a></li">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="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/5707">#5707</a></li">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="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/5723">#5723</a></li">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="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/5733">#5733</a></li">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="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/5734">#5734</a></li">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="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/5590">#5590</a></li">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="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/5591">#5591</a></li">https://redirect.github.com/PyO3/pyo3/pull/5591">#5591</a></li>
</ul>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/PyO3/pyo3/commit/2b392c8500673520066486f6098cbf2316211ff6"><code>2b392c8</code></a">https://github.com/PyO3/pyo3/commit/2b392c8500673520066486f6098cbf2316211ff6"><code>2b392c8</code></a>
release: 0.28.2</li>
<li><a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/PyO3/pyo3/commit/7e44c1d64d40a12e0bd55c819e3feda5322fc219"><code>7e44c1d</code></a">https://github.com/PyO3/pyo3/commit/7e44c1d64d40a12e0bd55c819e3feda5322fc219"><code>7e44c1d</code></a>
fix complex enum <code>__qualname__</code> not using python name (<a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/pyo3/pyo3/issues/5815">#5815</a>)</li">https://redirect.github.com/pyo3/pyo3/issues/5815">#5815</a>)</li>
<li><a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/PyO3/pyo3/commit/75abd8602896b350fd8c778e52e0a74b4644ccca"><code>75abd86</code></a">https://github.com/PyO3/pyo3/commit/75abd8602896b350fd8c778e52e0a74b4644ccca"><code>75abd86</code></a>
fix memory corruption when subclassing variable-size types (e.g.
<code>abi3</code> + 3.1...</li>
<li><a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/PyO3/pyo3/commit/b62c7a278fc14e9afb0d73ab1ded7ba00cda3be2"><code>b62c7a2</code></a">https://github.com/PyO3/pyo3/commit/b62c7a278fc14e9afb0d73ab1ded7ba00cda3be2"><code>b62c7a2</code></a>
Fix typo in PyType_GetTypeDataSize bindings (<a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/pyo3/pyo3/issues/5819">#5819</a>)</li">https://redirect.github.com/pyo3/pyo3/issues/5819">#5819</a>)</li>
<li><a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/PyO3/pyo3/commit/45f49ff9f50538c5bc2ea2c5045ee58f7270bfad"><code>45f49ff</code></a">https://github.com/PyO3/pyo3/commit/45f49ff9f50538c5bc2ea2c5045ee58f7270bfad"><code>45f49ff</code></a>
release: 0.28.1</li>
<li><a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/PyO3/pyo3/commit/56c34d630b8c133b3298ccae601dff2f6d5a9798"><code>56c34d6</code></a">https://github.com/PyO3/pyo3/commit/56c34d630b8c133b3298ccae601dff2f6d5a9798"><code>56c34d6</code></a>
Document Py_GIL_DISABLED in pyo3-build-config docs (<a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/pyo3/pyo3/issues/5810">#5810</a>)</li">https://redirect.github.com/pyo3/pyo3/issues/5810">#5810</a>)</li>
<li><a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/PyO3/pyo3/commit/92bc9efd51f70d72d71223b2d661b7d9cc074ef6"><code>92bc9ef</code></a">https://github.com/PyO3/pyo3/commit/92bc9efd51f70d72d71223b2d661b7d9cc074ef6"><code>92bc9ef</code></a>
Avoid unused variable warning with a debug Python build (<a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/pyo3/pyo3/issues/5811">#5811</a>)</li">https://redirect.github.com/pyo3/pyo3/issues/5811">#5811</a>)</li>
<li><a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/PyO3/pyo3/commit/ca5df1a72d745c27327cddd3726aebda88556614"><code>ca5df1a</code></a">https://github.com/PyO3/pyo3/commit/ca5df1a72d745c27327cddd3726aebda88556614"><code>ca5df1a</code></a>
ci: re-enable <code>list_get_item_unchecked</code> benchmark on
free-threaded build (<a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/pyo3/pyo3/issues/5812">#5812</a>)</li">https://redirect.github.com/pyo3/pyo3/issues/5812">#5812</a>)</li>
<li><a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/PyO3/pyo3/commit/413d9b5b0130dd636d250be03d807b6091beab5e"><code>413d9b5</code></a">https://github.com/PyO3/pyo3/commit/413d9b5b0130dd636d250be03d807b6091beab5e"><code>413d9b5</code></a>
Fix missing <code>std::sync::atomic::Ordering</code> import for targets
without atomic64...</li>
<li><a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/PyO3/pyo3/commit/1c764cdc377d41f7117524fd9ecb311a81a2029c"><code>1c764cd</code></a">https://github.com/PyO3/pyo3/commit/1c764cdc377d41f7117524fd9ecb311a81a2029c"><code>1c764cd</code></a>
docs: improve messaging around <code>#[pyclass(from_py_object)]</code>
change (<a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/pyo3/pyo3/issues/5798">#5798</a>)</li">https://redirect.github.com/pyo3/pyo3/issues/5798">#5798</a>)</li>
<li>Additional commits viewable in <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/pyo3/pyo3/compare/v0.27.1...v0.28.2">compare">https://github.com/pyo3/pyo3/compare/v0.27.1...v0.28.2">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 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>

## Summary by Sourcery

Update pyo3-testing to support pyo3 0.28.x and adapt module
initialization to PyO3's new PEP 489 multi-phase initialization model.

Enhancements:
- Change macro-generated and test module import paths to construct
modules via the new `_PYO3_DEF` multi-phase initialization API instead
of `__pyo3_init`.
- Document supported pyo3 version ranges and corresponding pyo3-testing
versions in both crate docs and README.

Build:
- Bump crate version to 0.5.0 and update the pyo3 dependency to 0.28.2.

Documentation:
- Add compatibility table describing which pyo3-testing versions support
which pyo3 versions in user-facing docs.

Tests:
- Update tests to use the new `_PYO3_DEF`-based module initialization
approach.

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Mike Foster <[email protected]>
Co-authored-by: MusicalNinjaDad <[email protected]>
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>

v0.4.0

Toggle v0.4.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
test with python 3.14 (#30)

## Summary by Sourcery

Release version 0.4.0 with updated pyo3 and expanded Python version
support.

New Features:
- Add official support and CI testing for Python 3.14.

Enhancements:
- Update pyo3 dependency to version 0.27.1 and drop support for pyo3
versions earlier than 0.26.
- Document that testing is no longer performed on Python versions
earlier than 3.10 in the changelog.

CI:
- Enable Python 3.14 in the quality workflow test matrix.

Documentation:
- Update changelog with v0.4.0 entry describing pyo3 and Python version
support changes.

Chores:
- Bump crate version from 0.3.5 to 0.4.0.

v0.3.5

Toggle v0.3.5's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Update pyo3 requirement from 0.21.2 to 0.22.0 (#12)

Updates the requirements on [pyo3](https://github.com/pyo3/pyo3) to
permit the latest version.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/pyo3/pyo3/releases">pyo3's">https://github.com/pyo3/pyo3/releases">pyo3's
releases</a>.</em></p>
<blockquote>
<h2>PyO3 0.22.0</h2>
<p>This release introduces support for Python 3.13. Please note that
Python 3.13 is still in beta, and while breaking changes are not
expected it is very possible that code compiled against Python 3.13 beta
versions will be incompatible with the final 3.13 release later in the
year.</p>
<p>The minimum supported Rust version has been increased to Rust
1.63.</p>
<p>PyO3's deferred reference counting used to implement <code>Clone for
Py&lt;T&gt;</code> without the global interpreter lock has been
demonstrated to be impossible to implement safely in the general case
and has consequently been changed to panic instead of deferring when
cloning <code>Py&lt;T&gt;</code> without the GIL being held. Given the
nature of panics inside <code>Clone</code> operations being a potential
footgun, this implementation has been moved behind the opt-in
<code>py-clone</code> feature.</p>
<p>Other particularly notable changes include:</p>
<ul>
<li>The <code>#[pyclass]</code> macro now has additional options
<code>#[pyclass(eq, ord, hash)]</code> to automatically generate Python
implementations for equality, ordering and hashing based upon the Rust
<code>PartialEq</code>, <code>PartialOrd</code> and <code>Hash</code>
traits. This can ensure consistency and reduce boilerplate compared to
implementing <code>__eq__</code>, <code>__hash__</code> and so on
manually.</li>
<li>The <code>experimental-declarative-modules</code> feature to support
<code>#[pymodule]</code> on Rust <code>mod</code> items has been
stabilised (and the feature flag removed). The existing implementation
of <code>#[pymodule]</code> on <code>fn</code> items is still present
but soft-deprecated; in the future new features will likely be added
only to declarative modules, and the <code>fn</code> modules may
eventually be deprecated and removed.</li>
<li>The GIL Refs API deprecation started in PyO3 0.21 continues with all
related APIs now being gated behind the <code>gil-refs</code> feature,
and unconditionally deprecated. In PyO3 0.23 these APIs are expected to
be removed.</li>
</ul>
<p>There have been numerous other smaller improvements, changes and
fixes. For full details see the <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://pyo3.rs/v0.22.0/changelog.html">CHANGELOG</a>.</p" rel="nofollow">https://pyo3.rs/v0.22.0/changelog.html">CHANGELOG</a>.</p>
<p>Please consult the <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://pyo3.rs/v0.22.0/migration.html">migration" rel="nofollow">https://pyo3.rs/v0.22.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="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/adamreichold"><code>@​adamreichold</code></a">https://github.com/adamreichold"><code>@​adamreichold</code></a>
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/alex"><code>@​alex</code></a">https://github.com/alex"><code>@​alex</code></a>
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/aneeshusa"><code>@​aneeshusa</code></a">https://github.com/aneeshusa"><code>@​aneeshusa</code></a>
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/birkenfeld"><code>@​birkenfeld</code></a">https://github.com/birkenfeld"><code>@​birkenfeld</code></a>
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/blmarket"><code>@​blmarket</code></a">https://github.com/blmarket"><code>@​blmarket</code></a>
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/Cheukting"><code>@​Cheukting</code></a">https://github.com/Cheukting"><code>@​Cheukting</code></a>
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/cmpute"><code>@​cmpute</code></a">https://github.com/cmpute"><code>@​cmpute</code></a>
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/codeguru42"><code>@​codeguru42</code></a">https://github.com/codeguru42"><code>@​codeguru42</code></a>
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/Databean"><code>@​Databean</code></a">https://github.com/Databean"><code>@​Databean</code></a>
<a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/davidbrochart"><code>@​davidbrochart</code></a">https://github.com/davidbrochart"><code>@​davidbrochart</code></a>
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/davidhewitt"><code>@​davidhewitt</code></a">https://github.com/davidhewitt"><code>@​davidhewitt</code></a>
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/deedy5"><code>@​deedy5</code></a">https://github.com/deedy5"><code>@​deedy5</code></a>
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/dmatos2012"><code>@​dmatos2012</code></a">https://github.com/dmatos2012"><code>@​dmatos2012</code></a>
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/Icxolu"><code>@​Icxolu</code></a">https://github.com/Icxolu"><code>@​Icxolu</code></a>
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/JRRudy1"><code>@​JRRudy1</code></a">https://github.com/JRRudy1"><code>@​JRRudy1</code></a>
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/lfn3"><code>@​lfn3</code></a">https://github.com/lfn3"><code>@​lfn3</code></a>
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/liammcinroy"><code>@​liammcinroy</code></a">https://github.com/liammcinroy"><code>@​liammcinroy</code></a>
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/linhr"><code>@​linhr</code></a">https://github.com/linhr"><code>@​linhr</code></a>
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/mejrs"><code>@​mejrs</code></a">https://github.com/mejrs"><code>@​mejrs</code></a>
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/messense"><code>@​messense</code></a">https://github.com/messense"><code>@​messense</code></a>
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/newcomertv"><code>@​newcomertv</code></a">https://github.com/newcomertv"><code>@​newcomertv</code></a>
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/reswqa"><code>@​reswqa</code></a">https://github.com/reswqa"><code>@​reswqa</code></a>
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/sk1p"><code>@​sk1p</code></a">https://github.com/sk1p"><code>@​sk1p</code></a>
<a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/SuperJappie08"><code>@​SuperJappie08</code></a">https://github.com/SuperJappie08"><code>@​SuperJappie08</code></a>
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/Tpt"><code>@​Tpt</code></a">https://github.com/Tpt"><code>@​Tpt</code></a>
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/wyfo"><code>@​wyfo</code></a">https://github.com/wyfo"><code>@​wyfo</code></a>
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/xen0n"><code>@​xen0n</code></a">https://github.com/xen0n"><code>@​xen0n</code></a>
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/Zyell"><code>@​Zyell</code></a></p">https://github.com/Zyell"><code>@​Zyell</code></a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/PyO3/pyo3/blob/main/CHANGELOG.md">pyo3's">https://github.com/PyO3/pyo3/blob/main/CHANGELOG.md">pyo3's
changelog</a>.</em></p>
<blockquote>
<h2>[0.22.0] - 2024-06-24</h2>
<h3>Packaging</h3>
<ul>
<li>Update <code>heck</code> dependency to 0.5. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/3966">#3966</a></li">https://redirect.github.com/PyO3/pyo3/pull/3966">#3966</a></li>
<li>Extend range of supported versions of <code>chrono-tz</code>
optional dependency to include version 0.10. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4061">#4061</a></li">https://redirect.github.com/PyO3/pyo3/pull/4061">#4061</a></li>
<li>Update MSRV to 1.63. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4129">#4129</a></li">https://redirect.github.com/PyO3/pyo3/pull/4129">#4129</a></li>
<li>Add optional <code>num-rational</code> feature to add conversions
with Python's <code>fractions.Fraction</code>. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4148">#4148</a></li">https://redirect.github.com/PyO3/pyo3/pull/4148">#4148</a></li>
<li>Support Python 3.13. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4184">#4184</a></li">https://redirect.github.com/PyO3/pyo3/pull/4184">#4184</a></li>
</ul>
<h3>Added</h3>
<ul>
<li>Add <code>PyWeakref</code>, <code>PyWeakrefReference</code> and
<code>PyWeakrefProxy</code>. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/3835">#3835</a></li">https://redirect.github.com/PyO3/pyo3/pull/3835">#3835</a></li>
<li>Support <code>#[pyclass]</code> on enums that have tuple variants.
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4072">#4072</a></li">https://redirect.github.com/PyO3/pyo3/pull/4072">#4072</a></li>
<li>Add support for scientific notation in <code>Decimal</code>
conversion. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4079">#4079</a></li">https://redirect.github.com/PyO3/pyo3/pull/4079">#4079</a></li>
<li>Add <code>pyo3_disable_reference_pool</code> conditional compilation
flag to avoid the overhead of the global reference pool at the cost of
known limitations as explained in the performance section of the guide.
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4095">#4095</a></li">https://redirect.github.com/PyO3/pyo3/pull/4095">#4095</a></li>
<li>Add <code>#[pyo3(constructor = (...))]</code> to customize the
generated constructors for complex enum variants. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4158">#4158</a></li">https://redirect.github.com/PyO3/pyo3/pull/4158">#4158</a></li>
<li>Add <code>PyType::module</code>, which always matches Python
<code>__module__</code>. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4196">#4196</a></li">https://redirect.github.com/PyO3/pyo3/pull/4196">#4196</a></li>
<li>Add <code>PyType::fully_qualified_name</code> which matches the
&quot;fully qualified name&quot; defined in <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://peps.python.org/pep-0737">PEP" rel="nofollow">https://peps.python.org/pep-0737">PEP 737</a>. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4196">#4196</a></li">https://redirect.github.com/PyO3/pyo3/pull/4196">#4196</a></li>
<li>Add <code>PyTypeMethods::mro</code> and
<code>PyTypeMethods::bases</code>. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4197">#4197</a></li">https://redirect.github.com/PyO3/pyo3/pull/4197">#4197</a></li>
<li>Add <code>#[pyclass(ord)]</code> to implement ordering based on
<code>PartialOrd</code>. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4202">#4202</a></li">https://redirect.github.com/PyO3/pyo3/pull/4202">#4202</a></li>
<li>Implement <code>ToPyObject</code> and
<code>IntoPy&lt;PyObject&gt;</code> for <code>PyBackedStr</code> and
<code>PyBackedBytes</code>. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4205">#4205</a></li">https://redirect.github.com/PyO3/pyo3/pull/4205">#4205</a></li>
<li>Add <code>#[pyclass(hash)]</code> option to implement
<code>__hash__</code> in terms of the <code>Hash</code> implementation
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4206">#4206</a></li">https://redirect.github.com/PyO3/pyo3/pull/4206">#4206</a></li>
<li>Add <code>#[pyclass(eq)]</code> option to generate
<code>__eq__</code> based on <code>PartialEq</code>, and
<code>#[pyclass(eq_int)]</code> for simple enums to implement equality
based on their discriminants. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4210">#4210</a></li">https://redirect.github.com/PyO3/pyo3/pull/4210">#4210</a></li>
<li>Implement <code>From&lt;Bound&lt;'py, T&gt;&gt;</code> for
<code>PyClassInitializer&lt;T&gt;</code>. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4214">#4214</a></li">https://redirect.github.com/PyO3/pyo3/pull/4214">#4214</a></li>
<li>Add <code>as_super</code> methods to <code>PyRef</code> and
<code>PyRefMut</code> for accesing the base class by reference. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4219">#4219</a></li">https://redirect.github.com/PyO3/pyo3/pull/4219">#4219</a></li>
<li>Implement <code>PartialEq&lt;str&gt;</code> for <code>Bound&lt;'py,
PyString&gt;</code>. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4245">#4245</a></li">https://redirect.github.com/PyO3/pyo3/pull/4245">#4245</a></li>
<li>Implement <code>PyModuleMethods::filename</code> on PyPy. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4249">#4249</a></li">https://redirect.github.com/PyO3/pyo3/pull/4249">#4249</a></li>
<li>Implement <code>PartialEq&lt;[u8]&gt;</code> for <code>Bound&lt;'py,
PyBytes&gt;</code>. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4250">#4250</a></li">https://redirect.github.com/PyO3/pyo3/pull/4250">#4250</a></li>
<li>Add <code>pyo3_ffi::c_str</code> macro to create <code>&amp;'static
CStr</code> on Rust versions which don't have 1.77's
<code>c&quot;&quot;</code> literals. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4255">#4255</a></li">https://redirect.github.com/PyO3/pyo3/pull/4255">#4255</a></li>
<li>Support <code>bool</code> conversion with <code>numpy</code> 2.0's
<code>numpy.bool</code> type <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4258">#4258</a></li">https://redirect.github.com/PyO3/pyo3/pull/4258">#4258</a></li>
<li>Add <code>PyAnyMethods::{bitnot, matmul, floor_div, rem,
divmod}</code>. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4264">#4264</a></li">https://redirect.github.com/PyO3/pyo3/pull/4264">#4264</a></li>
</ul>
<h3>Changed</h3>
<ul>
<li>Change the type of <code>PySliceIndices::slicelength</code> and the
<code>length</code> parameter of <code>PySlice::indices()</code>. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/3761">#3761</a></li">https://redirect.github.com/PyO3/pyo3/pull/3761">#3761</a></li>
<li>Deprecate implicit default for trailing optional arguments <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4078">#4078</a></li">https://redirect.github.com/PyO3/pyo3/pull/4078">#4078</a></li>
<li><code>Clone</code>ing pointers into the Python heap has been moved
behind the <code>py-clone</code> feature, as it must panic without the
GIL being held as a soundness fix. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4095">#4095</a></li">https://redirect.github.com/PyO3/pyo3/pull/4095">#4095</a></li>
<li>Add <code>#[track_caller]</code> to all <code>Py&lt;T&gt;</code>,
<code>Bound&lt;'py, T&gt;</code> and <code>Borrowed&lt;'a, 'py,
T&gt;</code> methods which can panic. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4098">#4098</a></li">https://redirect.github.com/PyO3/pyo3/pull/4098">#4098</a></li>
<li>Change <code>PyAnyMethods::dir</code> to be fallible and return
<code>PyResult&lt;Bound&lt;'py, PyList&gt;&gt;</code> (and similar for
<code>PyAny::dir</code>). <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4100">#4100</a></li">https://redirect.github.com/PyO3/pyo3/pull/4100">#4100</a></li>
<li>The global reference pool (to track pending reference count
decrements) is now initialized lazily to avoid the overhead of taking a
mutex upon function entry when the functionality is not actually used.
<a href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4178">#4178</a></li">https://redirect.github.com/PyO3/pyo3/pull/4178">#4178</a></li>
<li>Emit error messages when using <code>weakref</code> or
<code>dict</code> when compiling for <code>abi3</code> for Python older
than 3.9. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4194">#4194</a></li">https://redirect.github.com/PyO3/pyo3/pull/4194">#4194</a></li>
<li>Change <code>PyType::name</code> to always match Python
<code>__name__</code>. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4196">#4196</a></li">https://redirect.github.com/PyO3/pyo3/pull/4196">#4196</a></li>
<li>Remove CPython internal ffi call for complex number including: add,
sub, mul, div, neg, abs, pow. Added PyAnyMethods::{abs, pos, neg} <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4201">#4201</a></li">https://redirect.github.com/PyO3/pyo3/pull/4201">#4201</a></li>
<li>Deprecate implicit integer comparision for simple enums in favor of
<code>#[pyclass(eq_int)]</code>. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4210">#4210</a></li">https://redirect.github.com/PyO3/pyo3/pull/4210">#4210</a></li>
<li>Set the <code>module=</code> attribute of declarative modules' child
<code>#[pymodule]</code>s and <code>#[pyclass]</code>es. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4213">#4213</a></li">https://redirect.github.com/PyO3/pyo3/pull/4213">#4213</a></li>
<li>Set the <code>module</code> option for complex enum variants from
the value set on the complex enum <code>module</code>. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4228">#4228</a></li">https://redirect.github.com/PyO3/pyo3/pull/4228">#4228</a></li>
<li>Respect the Python &quot;limited API&quot; when building for the
<code>abi3</code> feature on PyPy or GraalPy. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4237">#4237</a></li">https://redirect.github.com/PyO3/pyo3/pull/4237">#4237</a></li>
<li>Optimize code generated by <code>#[pyo3(get)]</code> on
<code>#[pyclass]</code> fields. <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4254">#4254</a></li">https://redirect.github.com/PyO3/pyo3/pull/4254">#4254</a></li>
<li><code>PyCFunction::new</code>,
<code>PyCFunction::new_with_keywords</code> and
<code>PyCFunction::new_closure</code> now take <code>&amp;'static
CStr</code> name and doc arguments (previously was <code>&amp;'static
str</code>). <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/PyO3/pyo3/pull/4255">#4255</a></li">https://redirect.github.com/PyO3/pyo3/pull/4255">#4255</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/PyO3/pyo3/commit/2e2d4404a682ce87e0b0fe254816457872acf5b2"><code>2e2d440</code></a">https://github.com/PyO3/pyo3/commit/2e2d4404a682ce87e0b0fe254816457872acf5b2"><code>2e2d440</code></a>
release: 0.22.0 (<a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/pyo3/pyo3/issues/4266">#4266</a>)</li">https://redirect.github.com/pyo3/pyo3/issues/4266">#4266</a>)</li>
<li><a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/PyO3/pyo3/commit/91d8683814afbff4aef50d65fc912f73f9273e1a"><code>91d8683</code></a">https://github.com/PyO3/pyo3/commit/91d8683814afbff4aef50d65fc912f73f9273e1a"><code>91d8683</code></a>
improve deprecation message on implicit trailing optionals (<a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/pyo3/pyo3/issues/4282">#4282</a>)</li">https://redirect.github.com/pyo3/pyo3/issues/4282">#4282</a>)</li>
<li><a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/PyO3/pyo3/commit/6a0221ba2c59fe2c498899868a745cc19ec96cdb"><code>6a0221b</code></a">https://github.com/PyO3/pyo3/commit/6a0221ba2c59fe2c498899868a745cc19ec96cdb"><code>6a0221b</code></a>
document FnType and refactor FnType::self_arg (<a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/pyo3/pyo3/issues/4276">#4276</a>)</li">https://redirect.github.com/pyo3/pyo3/issues/4276">#4276</a>)</li>
<li><a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/PyO3/pyo3/commit/c67625d683cbd5aaaa90607b55b588b2176a9f1a"><code>c67625d</code></a">https://github.com/PyO3/pyo3/commit/c67625d683cbd5aaaa90607b55b588b2176a9f1a"><code>c67625d</code></a>
Revamp PyType name functions to match PEP 737 (<a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/pyo3/pyo3/issues/4196">#4196</a>)</li">https://redirect.github.com/pyo3/pyo3/issues/4196">#4196</a>)</li>
<li><a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/PyO3/pyo3/commit/a2f9399906274ecec61e70bda185aa12e6c564b6"><code>a2f9399</code></a">https://github.com/PyO3/pyo3/commit/a2f9399906274ecec61e70bda185aa12e6c564b6"><code>a2f9399</code></a>
make datetime from timestamp tests compare against Python result (<a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/pyo3/pyo3/issues/4275">#4275</a>)</li">https://redirect.github.com/pyo3/pyo3/issues/4275">#4275</a>)</li>
<li><a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/PyO3/pyo3/commit/908ef6ad84af31802e80d616576f59de4a6807a0"><code>908ef6a</code></a">https://github.com/PyO3/pyo3/commit/908ef6ad84af31802e80d616576f59de4a6807a0"><code>908ef6a</code></a>
Implement PartialEq for PyBytes and [u8] (<a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/pyo3/pyo3/issues/4259">#4259</a>)</li">https://redirect.github.com/pyo3/pyo3/issues/4259">#4259</a>)</li>
<li><a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/PyO3/pyo3/commit/c4d18e5ee3791b5a4ac9e24ee5370de436e40550"><code>c4d18e5</code></a">https://github.com/PyO3/pyo3/commit/c4d18e5ee3791b5a4ac9e24ee5370de436e40550"><code>c4d18e5</code></a>
Change <code>search_lib_dir</code>'s return type to Result (<a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/pyo3/pyo3/issues/4043">#4043</a>)</li">https://redirect.github.com/pyo3/pyo3/issues/4043">#4043</a>)</li>
<li><a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/PyO3/pyo3/commit/0b967d427a20122fef138a0daa49eb52946a6933"><code>0b967d4</code></a">https://github.com/PyO3/pyo3/commit/0b967d427a20122fef138a0daa49eb52946a6933"><code>0b967d4</code></a>
use <code>ffi::MemberGef</code> for <code>#[pyo3(get)]</code> fields of
<code>Py\&lt;T&gt;</code> (<a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/pyo3/pyo3/issues/4254">#4254</a>)</li">https://redirect.github.com/pyo3/pyo3/issues/4254">#4254</a>)</li>
<li><a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/PyO3/pyo3/commit/41fb9572b6001fe99fcb6dc910303a997b76d5a7"><code>41fb957</code></a">https://github.com/PyO3/pyo3/commit/41fb9572b6001fe99fcb6dc910303a997b76d5a7"><code>41fb957</code></a>
docs: update docstring on <code>Python</code> for <code>Bound</code> API
(<a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/pyo3/pyo3/issues/4274">#4274</a>)</li">https://redirect.github.com/pyo3/pyo3/issues/4274">#4274</a>)</li>
<li><a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/PyO3/pyo3/commit/9ff3d237c147ba772dd65b3fc6c0d13c3ee026d5"><code>9ff3d23</code></a">https://github.com/PyO3/pyo3/commit/9ff3d237c147ba772dd65b3fc6c0d13c3ee026d5"><code>9ff3d23</code></a>
Update dependencies to reflect minimal versions (<a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://redirect.github.com/pyo3/pyo3/issues/4272">#4272</a>)</li">https://redirect.github.com/pyo3/pyo3/issues/4272">#4272</a>)</li>
<li>Additional commits viewable in <a
href="proxy.php?url=https%3A%2F%2Fgithub.com%2F%3Ca+href%3D"https://github.com/pyo3/pyo3/compare/v0.21.2...v0.22.0">compare">https://github.com/pyo3/pyo3/compare/v0.21.2...v0.22.0">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 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] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Mike Foster <[email protected]>

v0.3.4

Toggle v0.3.4's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Remove need to `use pyo3::types::PyDict` (#9)

Fixes #5

v0.3.3

Toggle v0.3.3's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
fix typo (#8)

v0.3.2

Toggle v0.3.2's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
update readme to include example of with_py_raises (#7)

v0.3.1

Toggle v0.3.1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Improve error messages for with_py_raises (#6)

- Added custom compiler errors for misformed with_py_raises!() invocations
- Fixed documented examples

v0.3.0

Toggle v0.3.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Add with_py_raises (#4)

- Added with_py_raises!()to emulate pytest's with pytest.raises context manager from python.
- Polished the documentation
- Moved the implementation of #[pyo3test]into a dedicated module to tidy up lib.rs and make the code easier to read and maintain

v0.2.0

Toggle v0.2.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Don't need to build 3 times as part of publishing! (#2)

v0.1.0

Toggle v0.1.0's commit message
v0.1.0 - from fork MusicalNinjaDad/pyo3/pyo3-testing