This patch release improves some cases related to new functionality in PyO3 0.22.
PartialEq<bool> has been added for Bound<'py, PyBool>.
The #[pyo3(submodule)] attribute has been added for declarative modules to stop submodules from generating an external C symbol for importing the submodule directly (which is typically never used). Declarative modules will also now correctly add items annotated with full-path attributes like #[pyo3::prelude::pyfunction].
The #[pyclass(eq)] option will no longer raise a TypeError on comparison against types not in the signature.
A #[setter] in #[pymethods] with an Option<T> input will no longer raise a deprecation warning.
A regression has been fixed in conversions for 128-bit integers on big-endian platforms.
Thank you to the following contributors for the improvements:
Add PyWeakref, PyWeakrefReference and PyWeakrefProxy. #3835
Support #[pyclass] on enums that have tuple variants. #4072
Add support for scientific notation in Decimal conversion. #4079
Add pyo3_disable_reference_pool 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. #4095
Add #[pyo3(constructor = (...))] to customize the generated constructors for complex enum variants. #4158
Add PyType::module, which always matches Python __module__. #4196
Add PyType::fully_qualified_name which matches the "fully qualified name" defined in PEP 737. #4196
Add PyTypeMethods::mro and PyTypeMethods::bases. #4197
Add #[pyclass(ord)] to implement ordering based on PartialOrd. #4202
Implement ToPyObject and IntoPy<PyObject> for PyBackedStr and PyBackedBytes. #4205
Add #[pyclass(hash)] option to implement __hash__ in terms of the Hash implementation #4206
Add #[pyclass(eq)] option to generate __eq__ based on PartialEq, and #[pyclass(eq_int)] for simple enums to implement equality based on their discriminants. #4210
Implement From<Bound<'py, T>> for PyClassInitializer<T>. #4214
Add as_super methods to PyRef and PyRefMut for accesing the base class by reference. #4219
Implement PartialEq<str> for Bound<'py, PyString>. #4245
Implement PyModuleMethods::filename on PyPy. #4249
Implement PartialEq<[u8]> for Bound<'py, PyBytes>. #4250
Add pyo3_ffi::c_str macro to create &'static CStr on Rust versions which don't have 1.77's c"" literals. #4255
Support bool conversion with numpy 2.0's numpy.bool type #4258
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 commands and options
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 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)
Updates the requirements on pyo3 to permit the latest version.
Release notes
Sourced from pyo3's releases.
Changelog
Sourced from pyo3's changelog.
... (truncated)
Commits
59c4fa3
release: 0.22.1 (#4314)9afc38a
fixes #4285 -- allow full-path to pymodule with nested declarative modules (#...5860c4f
implement PartialEq for Pybool & bool (#4305)0af0227
fix deprecation warning for trailing optional on#[setter]
functions (#4304)ee9123a
Fix link in the contribution guide (#4306)ccd0447
refs #4286 -- allow setting submodule on declarative pymodules (#4301)f3603a0
Avoid generating functions that are only ever const evaluated with declarativ...872bd7e
Add pyo3-arrow to README (#4302)8f7450e
Fix 128-bit int regression on big-endian with Python <3.13 (#4291)7c2f5e8
Don't raiseTypeError
from generated equality method (#4287)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 commands and options
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