Skip to content

Commit bf0ec1c

Browse files
chore(deps): update rust crate pyo3 to 0.28.0 (#7043)
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [pyo3](https://redirect.github.com/pyo3/pyo3) | workspace.dependencies | minor | `0.27.0` → `0.28.0` | --- ### Release Notes <details> <summary>pyo3/pyo3 (pyo3)</summary> ### [`v0.28.2`](https://redirect.github.com/pyo3/pyo3/blob/HEAD/CHANGELOG.md#0282---2026-02-18) [Compare Source](https://redirect.github.com/pyo3/pyo3/compare/v0.28.1...v0.28.2) ##### Fixed - Fix complex enum `__qualname__` not using python name [#&#8203;5815](https://redirect.github.com/PyO3/pyo3/pull/5815) - Fix FFI definition `PyType_GetTypeDataSize` (was incorrectly named `PyObject_GetTypeDataSize`). [#&#8203;5819](https://redirect.github.com/PyO3/pyo3/pull/5819) - Fix memory corruption when subclassing native types with `abi3` feature on Python 3.12+ (newly enabled in PyO3 0.28.0). [#&#8203;5823](https://redirect.github.com/PyO3/pyo3/pull/5823) ### [`v0.28.1`](https://redirect.github.com/pyo3/pyo3/blob/HEAD/CHANGELOG.md#0281---2026-02-14) [Compare Source](https://redirect.github.com/pyo3/pyo3/compare/v0.28.0...v0.28.1) ##### Fixed - Fix `*args` / `**kwargs` support in` experimental-async` feature (regressed in 0.28.0). [#&#8203;5771](https://redirect.github.com/PyO3/pyo3/pull/5771) - Fix `clippy::declare_interior_mutable_const` warning inside `#[pyclass]` generated code on enums. [#&#8203;5772](https://redirect.github.com/PyO3/pyo3/pull/5772) - Fix `ambiguous_associated_items` compilation error when deriving `FromPyObject` or using `#[pyclass(from_py_object)]` macro on enums with `Error` variant. [#&#8203;5784](https://redirect.github.com/PyO3/pyo3/pull/5784) - Fix `__qualname__` for complex `#[pyclass]` enum variants to include the enum name. [#&#8203;5796](https://redirect.github.com/PyO3/pyo3/pull/5796) - Fix missing `std::sync::atomic::Ordering` import for targets without atomic64. [#&#8203;5808](https://redirect.github.com/PyO3/pyo3/pull/5808) ### [`v0.28.0`](https://redirect.github.com/pyo3/pyo3/blob/HEAD/CHANGELOG.md#0280---2026-02-01) [Compare Source](https://redirect.github.com/pyo3/pyo3/compare/v0.27.2...v0.28.0) ##### Packaging - Bump MSRV to Rust 1.83. [#&#8203;5531](https://redirect.github.com/PyO3/pyo3/pull/5531) - Bump minimum supported `quote` version to 1.0.37. [#&#8203;5531](https://redirect.github.com/PyO3/pyo3/pull/5531) - Bump supported GraalPy version to 25.0. [#&#8203;5542](https://redirect.github.com/PyO3/pyo3/pull/5542) - Drop `memoffset` dependency. [#&#8203;5545](https://redirect.github.com/PyO3/pyo3/pull/5545) - Support for free-threaded Python is now opt-out rather than opt-in. [#&#8203;5564](https://redirect.github.com/PyO3/pyo3/pull/5564) - Bump `target-lexicon` dependency to 0.13.3. [#&#8203;5571](https://redirect.github.com/PyO3/pyo3/pull/5571) - Drop `indoc` and `unindent` dependencies. [#&#8203;5608](https://redirect.github.com/PyO3/pyo3/pull/5608) ##### Added - Add `__init__` support in `#[pymethods]`. [#&#8203;4951](https://redirect.github.com/PyO3/pyo3/pull/4951) - Expose `PySuper` on PyPy, GraalPy and ABI3 [#&#8203;4951](https://redirect.github.com/PyO3/pyo3/pull/4951) - Add `PyString::from_fmt` and `py_format!` macro. [#&#8203;5199](https://redirect.github.com/PyO3/pyo3/pull/5199) - Add `#[pyclass(new = "from_fields")]` option. [#&#8203;5421](https://redirect.github.com/PyO3/pyo3/pull/5421) - Add `pyo3::buffer::PyUntypedBuffer`, a type-erased form of `PyBuffer<T>`. [#&#8203;5458](https://redirect.github.com/PyO3/pyo3/pull/5458) - Add `PyBytes::new_with_writer` [#&#8203;5517](https://redirect.github.com/PyO3/pyo3/pull/5517) - Add `PyClass::NAME`. [#&#8203;5579](https://redirect.github.com/PyO3/pyo3/pull/5579) - Add `pyo3_build_config::add_libpython_rpath_link_args`. [#&#8203;5624](https://redirect.github.com/PyO3/pyo3/pull/5624) - Add `PyBackedStr::clone_ref` and `PyBackedBytes::clone_ref` methods. [#&#8203;5654](https://redirect.github.com/PyO3/pyo3/pull/5654) - Add `PyCapsule::new_with_pointer` and `PyCapsule::new_with_pointer_and_destructor` for creating capsules with raw pointers. [#&#8203;5689](https://redirect.github.com/PyO3/pyo3/pull/5689) - Add `#[deleter]` attribute to implement property deleters in `#[methods]`. [#&#8203;5699](https://redirect.github.com/PyO3/pyo3/pull/5699) - Add `IntoPyObject` and `FromPyObject` implementations for `uuid::NonNilUuid`. [#&#8203;5707](https://redirect.github.com/PyO3/pyo3/pull/5707) - Add `PyBackedStr::as_str` and `PyBackedStr::as_py_str` methods. [#&#8203;5723](https://redirect.github.com/PyO3/pyo3/pull/5723) - Add support for subclassing native types (`PyDict`, exceptions, ...) when building for abi3 on Python 3.12+. [#&#8203;5733](https://redirect.github.com/PyO3/pyo3/pull/5733) - Add support for subclassing `PyList` when building for Python 3.12+. [#&#8203;5734](https://redirect.github.com/PyO3/pyo3/pull/5734) - FFI definitions: - Add FFI definitions `PyEval_GetFrameBuiltins`, `PyEval_GetFrameGlobals` and `PyEval_GetFrameLocals` on Python 3.13 and up. [#&#8203;5590](https://redirect.github.com/PyO3/pyo3/pull/5590) - Add FFI definitions `PyObject_New`, `PyObject_NewVar`, `PyObject_GC_Resize`, `PyObject_GC_New`, and `PyObject_GC_NewVar`. [#&#8203;5591](https://redirect.github.com/PyO3/pyo3/pull/5591) - Added FFI definitions and an unsafe Rust API wrapping `Py_BEGIN_CRITICAL_SECTION_MUTEX` and `Py_BEGIN_CRITICAL_SECTION_MUTEX2`. [#&#8203;5642](https://redirect.github.com/PyO3/pyo3/pull/5642) - Add FFI definition `PyDict_GetItemStringRef` on Python 3.13 and up. [#&#8203;5659](https://redirect.github.com/PyO3/pyo3/pull/5659) - Add FFI definition `PyIter_NextItem` on Python 3.14 and up, and `compat::PyIter_NextItem` for older versions. [#&#8203;5661](https://redirect.github.com/PyO3/pyo3/pull/5661) - Add FFI definitions `PyThreadState_GetInterpreter` and `PyThreadState_GetID` on Python 3.9+, `PyThreadState_EnterTracing` and `PyThreadState_LeaveTracing` on Python 3.11+, `PyThreadState_GetUnchecked` on Python 3.13+, and `compat::PyThreadState_GetUnchecked`. [#&#8203;5711](https://redirect.github.com/PyO3/pyo3/pull/5711) - Add FFI definitions `PyImport_ImportModuleAttr` and `PyImport_ImportModuleAttrString` on Python 3.14+. [#&#8203;5737](https://redirect.github.com/PyO3/pyo3/pull/5737) - Add FFI definitions for the `PyABIInfo` and `PyModExport` APIs available in Python 3.15. [#&#8203;5746](https://redirect.github.com/PyO3/pyo3/pull/5746) - `experimental-inspect`: - Emit base classes. [#&#8203;5331](https://redirect.github.com/PyO3/pyo3/pull/5331) - Emit `@typing.final` on final classes. [#&#8203;5552](https://redirect.github.com/PyO3/pyo3/pull/5552) - Generate nested classes for complex enums. [#&#8203;5708](https://redirect.github.com/PyO3/pyo3/pull/5708) - Emit `async` keyword for async functions. [#&#8203;5731](https://redirect.github.com/PyO3/pyo3/pull/5731) ##### Changed - Call `sys.unraisablehook` instead of `PyErr_Print` if panicking on null FFI pointer in `Bound`, `Borrowed` and `Py` constructors. [#&#8203;5496](https://redirect.github.com/PyO3/pyo3/pull/5496) - Use PEP-489 multi-phase initialization for `#[pymodule]`. [#&#8203;5525](https://redirect.github.com/PyO3/pyo3/pull/5525) - Deprecate implicit by-value implementation of `FromPyObject` for `#[pyclass]`. [#&#8203;5550](https://redirect.github.com/PyO3/pyo3/pull/5550) - Deprecate `PyTypeInfo::NAME` and `PyTypeInfo::MODULE`. [#&#8203;5579](https://redirect.github.com/PyO3/pyo3/pull/5579) - Deprecate `Py<T>::from_{owned,borrowed}[or_{err,opt}]` constructors from raw pointer. [#&#8203;5585](https://redirect.github.com/PyO3/pyo3/pull/5585) - Deprecate FFI definitions `PyEval_AcquireLock` and `PyEval_ReleaseLock`. [#&#8203;5590](https://redirect.github.com/PyO3/pyo3/pull/5590) - Relax `'py: 'a` bound in `Py::extract`. [#&#8203;5594](https://redirect.github.com/PyO3/pyo3/pull/5594) - Add a `T: PyTypeCheck` bound to the `IntoPyObject` implementations on `Bound<T>`, `Borrowed<T>` and `Py<T>`. [#&#8203;5640](https://redirect.github.com/PyO3/pyo3/pull/5640) - The `with_critical_section` and `with_critical_section2` functions are moved to `pyo3::sync::critical_section`. [#&#8203;5642](https://redirect.github.com/PyO3/pyo3/pull/5642) - Use `PyIter_NextItem` in `PyIterator::next` implementation. [#&#8203;5661](https://redirect.github.com/PyO3/pyo3/pull/5661) - `IntoPyObject` for simple enums now uses a singleton value, allowing identity (python `is`) comparisons. [#&#8203;5665](https://redirect.github.com/PyO3/pyo3/pull/5665) - Allow any `Sequence[int]` in `FromPyObject` on `Cow<[u8]>` and change the error type to `PyErr`. [#&#8203;5667](https://redirect.github.com/PyO3/pyo3/pull/5667) - `async` pymethods now borrow `self` only for the duration of awaiting the future, not the entire method call. [#&#8203;5684](https://redirect.github.com/PyO3/pyo3/pull/5684) - Change `CastError` formatted message to directly describe the "is not an instance of" failure condition. [#&#8203;5693](https://redirect.github.com/PyO3/pyo3/pull/5693) - Add `#[inline]` hints to many methods on `PyBackedStr`. [#&#8203;5723](https://redirect.github.com/PyO3/pyo3/pull/5723) - Remove redundant internal counters from `BoundSetIterator` and `BoundFrozenSetIterator`. [#&#8203;5725](https://redirect.github.com/PyO3/pyo3/pull/5725) - Implement `PyIterator::size_hint` on abi3 builds (previously was only on unlimited API builds). [#&#8203;5727](https://redirect.github.com/PyO3/pyo3/pull/5727) - Deprecate FFI definition `PyImport_ImportModuleNoBlock` (deprecated in Python 3.13). [#&#8203;5737](https://redirect.github.com/PyO3/pyo3/pull/5737) - `#[new]` can now return arbitrary Python objects. [#&#8203;5739](https://redirect.github.com/PyO3/pyo3/pull/5739) - `experimental-inspect`: - Introduce `TypeHint` and make use of it to encode type hint annotations. [#&#8203;5438](https://redirect.github.com/PyO3/pyo3/pull/5438) - Rename `PyType{Info,Check}::TYPE_INFO` into `PyType{Info,Check}::TYPE_HINT`. [#&#8203;5438](https://redirect.github.com/PyO3/pyo3/pull/5438) [#&#8203;5619](https://redirect.github.com/PyO3/pyo3/pull/5619) [#&#8203;5641](https://redirect.github.com/PyO3/pyo3/pull/5641) - Fill annotations on function arguments and return values for all types supported natively by PyO3. [#&#8203;5634](https://redirect.github.com/PyO3/pyo3/pull/5634) [#&#8203;5637](https://redirect.github.com/PyO3/pyo3/pull/5637) [#&#8203;5639](https://redirect.github.com/PyO3/pyo3/pull/5639) - Use `_typeshed.Incomplete` instead of `typing.Any` as default type hint, to make it easier to spot incomplete trait implementations. [#&#8203;5744](https://redirect.github.com/PyO3/pyo3/pull/5744) - Use general Python expression syntax for type hints. [#&#8203;5671](https://redirect.github.com/PyO3/pyo3/pull/5671) ##### Removed - Remove all functionality deprecated in PyO3 0.25 and 0.26. [#&#8203;5740](https://redirect.github.com/PyO3/pyo3/pull/5740) - FFI definitions: - Remove FFI definition `PyEval_GetCallStats` (removed from CPython in Python 3.7). [#&#8203;5590](https://redirect.github.com/PyO3/pyo3/pull/5590) - Remove FFI definitions `PyEval_AcquireLock` and `PyEval_ReleaseLock` on Python 3.13 and up. [#&#8203;5590](https://redirect.github.com/PyO3/pyo3/pull/5590) - Remove private FFI definitions `_PyObject_New`, `_PyObject_NewVar`, `_PyObject_GC_Resize`, `_PyObject_GC_New`, and `_PyObject_GC_NewVar`. [#&#8203;5591](https://redirect.github.com/PyO3/pyo3/pull/5591) - Remove private FFI definitions `_PyDict_SetItem_KnownHash`, `_PyDict_Next`, `_PyDict_NewPresized`, `_PyDict_Contains_KnownHash`, and `_PyDict_Contains`. [#&#8203;5659](https://redirect.github.com/PyO3/pyo3/pull/5659) - Remove private FFI definitions `_PyFrameEvalFunction`, `_PyInterpreterState_GetEvalFrameFunc` and `_PyInterpreterState_SetEvalFrameFunc`. [#&#8203;5711](https://redirect.github.com/PyO3/pyo3/pull/5711) - Remove private FFI definitions `_PyImport_IsInitialized`, `_PyImport_SetModule`, `_PyImport_SetModuleString`, `_PyImport_AcquireLock`, `_PyImport_ReleaseLock`, `_PyImport_FindBuiltin`, `_PyImport_FindExtensionObject`, `_PyImport_FixupBuiltin`, and `_PyImport_FixupExtensionObject`. [#&#8203;5737](https://redirect.github.com/PyO3/pyo3/pull/5737) ##### Fixed - Fix `PyModuleMethods::add_submodule()` to use the last segment of the submodule name as the attribute name on the parent module instead of using the full name. [#&#8203;5375](https://redirect.github.com/PyO3/pyo3/pull/5375) - Link with libpython for Cygwin extension modules. [#&#8203;5571](https://redirect.github.com/PyO3/pyo3/pull/5571) - Link against the limited API DLL for Cygwin when abi3 is used. [#&#8203;5574](https://redirect.github.com/PyO3/pyo3/pull/5574) - Handle errors in `PyIterator` when calling `size_hint` [#&#8203;5604](https://redirect.github.com/PyO3/pyo3/pull/5604) - Link with libpython for iOS extension modules. [#&#8203;5605](https://redirect.github.com/PyO3/pyo3/pull/5605) - Correct `IntoPyObject` output type of `PyBackedStr` to be `PyString`, not `PyAny`. [#&#8203;5655](https://redirect.github.com/PyO3/pyo3/pull/5655) - Fix `async` functions to return `None` rather than empty tuple `()`. [#&#8203;5685](https://redirect.github.com/PyO3/pyo3/pull/5685) - Fix compile error when using references to `#[pyclass]` types (e.g. `&MyClass`) as arguments to async `#[pyfunction]`s. [#&#8203;5725](https://redirect.github.com/PyO3/pyo3/pull/5725) - FFI definitions: - Fix FFI definition `PyMemberDescrObject.d_member` to use `PyMemberDef` for Python 3.11+ (was incorrectly `PyGetSetDef`). [#&#8203;5647](https://redirect.github.com/PyO3/pyo3/pull/5647) - Mark FFI definition `PyThreadState_GetFrame` available with abi3 in 3.10+. [#&#8203;5711](https://redirect.github.com/PyO3/pyo3/pull/5711) - Fix FFI definition `PyImport_GetModule` on PyPy. [#&#8203;5737](https://redirect.github.com/PyO3/pyo3/pull/5737) - `experimental-inspect`: - fix `__new__` return type to be the built object type and not `None`. [#&#8203;5555](https://redirect.github.com/PyO3/pyo3/pull/5555) - fix imports of decorators. [#&#8203;5618](https://redirect.github.com/PyO3/pyo3/pull/5618) - fix the return type annotation of `PyResult<()>` (must be `None` and not `tuple`) [#&#8203;5674](https://redirect.github.com/PyO3/pyo3/pull/5674) </details> --- ### Configuration 📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, only on Monday ( * 0-3 * * 1 ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/vortex-data/vortex). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My42Ni40IiwidXBkYXRlZEluVmVyIjoiNDMuNjYuNCIsInRhcmdldEJyYW5jaCI6ImRldmVsb3AiLCJsYWJlbHMiOlsiY2hhbmdlbG9nL2Nob3JlIl19--> --------- Signed-off-by: Robert Kruszewski <github@robertk.io> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Robert Kruszewski <github@robertk.io>
1 parent 7cd2206 commit bf0ec1c

7 files changed

Lines changed: 50 additions & 42 deletions

File tree

Cargo.lock

Lines changed: 18 additions & 35 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,9 +193,10 @@ prost = "0.14"
193193
prost-build = "0.14"
194194
prost-types = "0.14"
195195
public-api = "0.51"
196-
pyo3 = { version = "0.27.0" }
197-
pyo3-bytes = "0.5"
196+
pyo3 = { version = "0.28.0" }
197+
pyo3-bytes = "0.6"
198198
pyo3-log = "0.13.0"
199+
pyo3-object_store = "0.10.0"
199200
quote = "1.0.41"
200201
rand = "0.9.0"
201202
rand_distr = "0.5"

vortex-python/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ parking_lot = { workspace = true }
4747
pyo3 = { workspace = true, features = ["abi3", "abi3-py311"] }
4848
pyo3-bytes = { workspace = true }
4949
pyo3-log = { workspace = true }
50-
pyo3-object_store = { version = "0.7" }
50+
pyo3-object_store = { workspace = true }
5151
tokio = { workspace = true, features = ["fs", "rt-multi-thread"] }
5252
url = { workspace = true }
5353
vortex = { workspace = true, features = ["object_store", "tokio"] }

vortex-python/src/dtype/mod.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,15 @@ pub(crate) fn init(py: Python, parent: &Bound<PyModule>) -> PyResult<()> {
9292
}
9393

9494
/// Base class for all Vortex data types.
95-
#[pyclass(name = "DType", module = "vortex", frozen, eq, hash, subclass)]
95+
#[pyclass(
96+
name = "DType",
97+
module = "vortex",
98+
frozen,
99+
eq,
100+
hash,
101+
subclass,
102+
from_py_object
103+
)]
96104
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
97105
pub struct PyDType(DType);
98106

vortex-python/src/dtype/ptype.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,15 @@ use pyo3::prelude::*;
88
use vortex::dtype::PType;
99

1010
/// Enum for primitive types.
11-
#[pyclass(name = "PType", module = "vortex", frozen, eq, eq_int, str)]
11+
#[pyclass(
12+
name = "PType",
13+
module = "vortex",
14+
frozen,
15+
eq,
16+
eq_int,
17+
str,
18+
from_py_object
19+
)]
1220
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
1321
pub(crate) enum PyPType {
1422
/// An 8-bit unsigned integer

vortex-python/src/expr/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ pub(crate) fn init(py: Python, parent: &Bound<PyModule>) -> PyResult<()> {
4545
/// .. seealso::
4646
/// :func:`.column`
4747
///
48-
#[pyclass(name = "Expr", module = "vortex", frozen)]
48+
#[pyclass(name = "Expr", module = "vortex", frozen, from_py_object)]
4949
#[derive(Clone)]
5050
pub struct PyExpr {
5151
inner: Expression,

vortex-python/src/scalar/mod.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,15 @@ pub(crate) fn init(py: Python, parent: &Bound<PyModule>) -> PyResult<()> {
6363
}
6464

6565
/// Base class for Vortex scalar types.
66-
#[pyclass(name = "Scalar", module = "vortex", subclass, frozen, eq, hash)]
66+
#[pyclass(
67+
name = "Scalar",
68+
module = "vortex",
69+
subclass,
70+
frozen,
71+
eq,
72+
hash,
73+
from_py_object
74+
)]
6775
#[derive(Clone, PartialEq, Eq, Hash)]
6876
pub struct PyScalar(Scalar);
6977

0 commit comments

Comments
 (0)