fix(deps): update rust crate pyo3 to 0.21.0 #3
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
0.16.5
->0.21.0
Release Notes
pyo3/pyo3 (pyo3)
v0.21.2
Compare Source
Changed
PySet::empty()
gil-ref constructor. #4082Fixed
async fn
in#[pymethods]
with a&self
receiver and more than one additional argument. #4035__traverse__
. #4045#[pyclass]
living in a different Rust module using theexperimental-declarative-modules
feature. #4054missing_docs
lint triggering on documented#[pymodule]
functions. #4067libpython
). #4073v0.21.1
Compare Source
Added
Send
andSync
forPyBackedStr
andPyBackedBytes
. #4007Clone
,Debug
,PartialEq
,Eq
,PartialOrd
,Ord
andHash
implementation forPyBackedBytes
andPyBackedStr
, andDisplay
forPyBackedStr
. #4020import_exception_bound!
macro to import exception types without generating GIL Ref functionality for them. #4027Changed
#[setter]
function arguments. #3998#[inline]
hints on manyBound
andBorrowed
methods. #4024Fixed
#[pyo3(from_py_with = "")]
in#[setter]
methods #3995&Bound
in#[setter]
methods. #3998#[pymodule]
,#[pyfunction]
and#[pyclass]
macros. #4009pyo3::import_exception!
does not exist. #4012#[pymethod]
with a receiver and additional arguments. #4015v0.21.0
Compare Source
Added
PyMemoryView
type. #3514async fn
in for#[pyfunction]
and#[pymethods]
, with theexperimental-async
feature. #3540 #3588 #3599 #3931PyTypeInfo
forPyEllipsis
,PyNone
andPyNotImplemented
. #3577#[pyclass]
on enums that have non-unit variants. #3582chrono
feature withabi3
feature. #3664FromPyObject
,IntoPy<PyObject>
andToPyObject
are implemented onstd::duration::Duration
#3670PyString::to_cow
. AddPy<PyString>::to_str
,Py<PyString>::to_cow
, andPy<PyString>::to_string_lossy
, as ways to access Python string data safely beyond the GIL lifetime. #3677Bound<T>
andBorrowed<T>
smart pointers as a new API for accessing Python objects. #3686PyNativeType::as_borrowed
to convert "GIL refs" to the newBound
smart pointer. #3692FromPyObject::extract_bound
method, to migrateFromPyObject
implementations to the Bound API. #3706gil-refs
feature to allow continued use of the deprecated GIL Refs APIs. #3707PyAnyMethods
for binary operators (add
,sub
, etc.) #3712chrono-tz
feature allowing conversion betweenchrono_tz::Tz
andzoneinfo.ZoneInfo
#3730PyType_GetModuleByDef
. #3734std::time::SystemTime
anddatetime.datetime
#3736Py::as_any
andPy::into_any
. #3785PyStringMethods::encode_utf8
. #3801PyBackedStr
andPyBackedBytes
, as alternatives to&str
and&bytes
where a Python object owns the data. #3802 #3991#[pymodule]
macro on Rustmod
blocks, with theexperimental-declarative-modules
feature. #3815ExactSizeIterator
forset
andfrozenset
iterators onabi3
feature. #3849Py::drop_ref
to explicitly drop a `Py`` and immediately decrease the Python reference count if the GIL is already held. #3871#[pymodule]
macro on single argument functions that take&Bound<'_, PyModule>
. #3905FromPyObject
forCow<str>
. #3928Default
forGILOnceCell
. #3971PyDictMethods::into_mapping
,PyListMethods::into_sequence
andPyTupleMethods::into_sequence
. #3982Changed
PyDict::from_sequence
now takes a single argument of type&PyAny
(previously took two argumentsPython
andPyObject
). #3532Py::is_ellipsis
andPyAny::is_ellipsis
in favour ofany.is(py.Ellipsis())
. #3577PyTypeInfo
functionality into new traitsHasPyGilRef
andPyTypeCheck
. #3600PyTryFrom
andPyTryInto
traits in favor ofany.downcast()
via thePyTypeCheck
andPyTypeInfo
traits. #3601&self
/&mut self
#3609FromPyObject
for set types now also acceptfrozenset
objects as input. #3632FromPyObject
forbool
now also accepts NumPy'sbool_
as input. #3638AsRefSource
associated type toPyNativeType
. #3653.is_true
to.is_truthy
onPyAny
andPy<PyAny>
to clarify that the test is not based on identity with or equality to the True singleton. #3657PyType::name
is nowPyType::qualname
whereasPyType::name
efficiently accesses the full name which includes the module name. #3660Iter(A)NextOutput
types are now deprecated and__(a)next__
can directly return anything which can be converted into Python objects, i.e. awaitables do not need to be wrapped intoIterANextOutput
orOption
any more.Option
can still be used as well and returningNone
will trigger the fast path for__next__
, stopping iteration without having to raise aStopIteration
exception. #3661FromPyObject
onchrono::DateTime<Tz>
for allTz
, not justFixedOffset
andUtc
. #3663PyTzInfoAccess
trait. For the deprecated gil-ref API, the trait is now implemented for&'py PyTime
and&'py PyDateTime
instead ofPyTime
andPyDate
. #3679__traverse__
become no-ops for unsendable pyclasses if on the wrong thread, thereby avoiding hard aborts at the cost of potential leakage. #3689PyNativeType
inpyo3::prelude
. #3692extract::<i64>
(and other integer types) by avoiding call to__index__()
converting the value to an integer for 3.10+. Gives performance improvement of around 30% for successful extraction. #3742FromPyObject
forPy<T>
to justT: PyTypeCheck
. #3776PySet
andPyFrozenSet
iterators now always iterate the equivalent ofiter(set)
. (A "fast path" with no noticeable performance benefit was removed.) #3849FromPyObject
for&str
,Cow<str>
,&[u8]
andCow<[u8]>
onto a temporary traitFromPyObjectBound
whengil-refs
feature is deactivated. #3928GILPool
,Python::with_pool
, andPython::new_pool
. #3947Removed
Fixed
Py_MAX_NDIMS
in favour ofPyBUF_MAX_NDIM
. #3757datetime
types when an invaliddatetime
module is on sys.path. #3818non_local_definitions
lint warning triggered by many PyO3 macros. #3901PyCode
andPyCode_Type
on PyPy:PyCode_Type
is not exposed by PyPy. #3934v0.20.3
Compare Source
Packaging
portable-atomic
dependency. #3619abi3
stable ABI by the environment variablePYO3_USE_ABI3_FORWARD_COMPATIBILITY=1
. #3821Fixed
portable-atomic
to support platforms without 64-bit atomics. #3619either
feature enabled withoutexperimental-inspect
enabled. #3834v0.20.2
Compare Source
Packaging
pyo3
andpyo3-ffi
dependencies onpyo3-build-config
to require the same patch version, i.e.pyo3
0.20.2 requires exactlypyo3-build-config
0.20.2. #3721Fixed
pyo3
0.20.0 with latestpyo3-build-config
0.20.X. #3724v0.20.1
Compare Source
Added
either
feature to add conversions foreither::Either<L, R>
sum type. #3456smallvec
feature to add conversions forsmallvec::SmallVec
. #3507take
andinto_inner
methods toGILOnceCell
#3556#[classmethod]
methods can now also receivePy<PyType>
as their first argument. #3587#[pyfunction(pass_module)]
can now also receivePy<PyModule>
as their first argument. #3587traverse
method toGILProtected
. #3616abi3-py312
feature #3687Fixed
chrono
dependency. #3512clippy::unnecessary_fallible_conversions
warning when using aPy<Self>
self
receiver. #3564v0.20.0
Compare Source
Packaging
indoc
dependency to 2.0 andunindent
dependency to 0.2. #3237syn
dependency to 2.0. #3239chrono
optional dependency to require 0.4.25 or newer. #3427Added
__lt__
,__le__
,__eq__
,__ne__
,__gt__
and__ge__
in#[pymethods]
. #3203Py_GETENV
. #3336as_ptr
andinto_ptr
inherent methods forPy
,PyAny
,PyRef
, andPyRefMut
. #3359DoubleEndedIterator
forPyTupleIterator
andPyListIterator
. #3366#[pyclass(rename_all = "...")]
option: this allows renaming all getters and setters of a struct, or all variants of an enum. Available renaming rules are:"camelCase"
,"kebab-case"
,"lowercase"
,"PascalCase"
,"SCREAMING-KEBAB-CASE"
,"SCREAMING_SNAKE_CASE"
,"snake_case"
,"UPPERCASE"
. #3384PyObject_GC_IsTracked
andPyObject_GC_IsFinalized
on Python 3.9 and up (PyPy 3.10 and up). #3403None
,Ellipsis
, andNotImplemented
. #3408Py_mod_multiple_interpreters
constant and its possible values. #3494PyInterpreterConfig
struct, its constants andPy_NewInterpreterFromConfig
. #3502Changed
PySet::discard
to returnPyResult<bool>
(previously returned nothing). #3281IntoPy
for Rust tuples to Python tuples. #3321PyDict::get_item
to no longer suppress arbitrary exceptions (the return type is nowPyResult<Option<&PyAny>>
instead ofOption<&PyAny>
), and deprecatePyDict::get_item_with_error
. #3330AsPyPointer
is now anunsafe trait
. #3358os.PathLike
values in implementation ofFromPyObject
forPathBuf
. #3374__builtins__
to globals inpy.run()
andpy.eval()
if they're missing. #3378FromPyObject
forBigInt
andBigUint
. #3379PyIterator::from_object
andPyByteArray::from
now take a single argument of type&PyAny
(previously took two argumentsPython
andAsPyPointer
). #3389AsPyPointer
withAsRef<PyAny>
as a bound in the blanket implementation ofFrom<&T> for PyObject
. #3391impl IntoPy<PyObject> for &T where T: AsPyPointer
with implementations ofimpl IntoPy<PyObject>
for&PyAny
,&T where T: AsRef<PyAny>
, and&Py<T>
. #3393std::io::Error
kind in implementation ofFrom<std::io::IntoInnerError>
forPyErr
#3396ErrorKind
in implementation ofFrom<PyErr>
forOSError
subclass. #3397PyErr
in implementation ofFrom<std::io::Error>
forPyErr
if thestd::io::Error
has been built using a Python exception (previously would create a new exception wrapping thestd::io::Error
). #3402#[pymodule]
will now return the same module object on repeated import by the same Python interpreter, on Python 3.9 and up. #3446chrono
types to Pythondatetime
types (datetime
cannot represent leap-seconds). #3458Err
returned from#[pyfunction]
will now have a non-None__context__
if called from inside acatch
block. #3455#[__new__]
form of#[new]
attribute. #3505Removed
#[args]
attribute for#[pymethods]
. #3232IntoPyPointer
trait in favour ofinto_ptr
inherent methods. #3385Fixed
PySet::discard
. #3281PyTupleIterator
type returned byPyTuple::iter
is now public and hence can be named by downstream crates. #3366PyOS_FSPath
on PyPy. #3374PyTypeBuilder::build
. #3401_Py_GetAllocatedBlocks
,_PyObject_GC_Malloc
, and_PyObject_GC_Calloc
on Python 3.11 and up. #3403ResourceWarning
and crashes related to GC when running with debug builds of CPython. #3404Option<T>
default arguments will no longer re-wrapSome(T)
or expressions evaluating toNone
. #3461IterNextOutput::Return
not returning a value on PyPy. #3471#[pymethods]
blocks. #3491#[new]
,#[classmethod]
,#[staticmethod]
, and#[classattr]
. #3484PyMarshal_WriteObjectToString
fromPyMarshal_ReadObjectFromString
with theabi3
feature. #3490_PyFrameEvalFunction
on Python 3.11 and up (it now receives a_PyInterpreterFrame
opaque struct). #3500v0.19.2
Compare Source
Added
PyState_AddModule
,PyState_RemoveModule
andPyState_FindModule
for PyPy 3.9 and up. #3295_PyObject_CallFunction_SizeT
and_PyObject_CallMethod_SizeT
. #3297PyErr::Display
for all Python versions, and FFI symbolPyErr_DisplayException
for Python 3.12. #3334PyType_GetDict()
for Python 3.12. #3339PyAny::downcast_exact
. #3346PySlice::full()
to construct a full slice (::
). #3353Changed
PyErr
for 3.12 betas to avoid deprecated ffi methods. #3306object.h
for Python 3.12.0b4. #3335pyo3::ffi
struct definitions to be compatible with 3.12.0b4. #3342float
tof64
(andPyFloat::value
) on non-abi3 builds. #3345Fixed
SystemError
raised inPyUnicodeDecodeError_Create
on PyPy 3.10. #3297Py_EnterRecursiveCall
to returnc_int
(was incorrectly returning()
). #3300PyErr::matches
andPyErr::is_instance
returned results inconsistent withPyErr::get_type
. #3313PanicException
when unwinding after the exception was "normalized". #3326PyErr::from_value
andPyErr::into_value
losing traceback on conversion. #3328v0.19.1
Compare Source
Packaging
hashbrown
optional dependency to include version 0.14 #3258indexmap
optional dependency to include version 2. #3277Added
pyo3::types::PyFrozenSetBuilder
to allow building aPyFrozenSet
item by item. #3156ipaddress.IPv4Address
/ipaddress.IPv6Address
andstd::net::IpAddr
. #3197num-bigint
feature in combination withabi3
. #3198PyErr_GetRaisedException()
,PyErr_SetRaisedException()
to FFI definitions for Python 3.12 and later. #3248Python::with_pool
which is a safer but more limited alternative toPython::new_pool
. #3263PyDict::get_item_with_error
on PyPy. #3270#[new]
methods may to returnPy<Self>
in order to return existing instances. #3287Fixed
__complex__
toComplex
when usingabi3
or PyPy. #3185PyAny::hasattr
. #3271PySet
orPyFrozenSet
or returning types converted into these internally, e.g.HashSet
orBTreeSet
. #3286v0.19.0
Compare Source
Packaging
Added
text_signature
option (and automatically generate signature) for#[new]
in#[pymethods]
. #2980decimal.Decimal
andrust_decimal::Decimal
. #3016#[pyo3(from_item_all)]
when derivingFromPyObject
to specifyget_item
as getter for all fields. #3120pyo3::exceptions::PyBaseExceptionGroup
for Python 3.11, and corresponding FFI definitionPyExc_BaseExceptionGroup
. #3141#[new]
with#[classmethod]
to create a constructor which receives a (subtype's) class/PyType
as its first argument. #3157PyClass::get
andPy::get
for GIL-indepedent access to classes with#[pyclass(frozen)]
. #3158PyAny::is_exact_instance
andPyAny::is_exact_instance_of
. #3161Changed
PyAny::is_instance_of::<T>(obj)
is now equivalent toT::is_type_of(obj)
, and now returnsbool
instead ofPyResult<bool>
. #2881text_signature
option on#[pyclass]
structs. #2980anyhow::Error
/eyre::Report
containing a basicPyErr
without a chain in aPyRuntimeError
. #3004#[getter]
and#[setter]
to use a common call "trampoline" to slightly reduce generated code size and compile times. #3029text_signature
. #3050None
in automatically-generatedtext_signature
. #3066PySequence::list
andPySequence::tuple
toPySequence::to_list
andPySequence::to_tuple
. (The old names continue to exist as deprecated forms.) #3111PyRef::py
andPyRefMut::py
to match the underlying borrow. #3131Python::with_gil
, is now locked inside of implementations of the__traverse__
slot. #3168Removed
Python::acquire_gil
is replaced byPython::with_gil
. #2981Fixed
PyGetSetDef
,PyMemberDef
,PyStructSequence_Field
andPyStructSequence_Desc
to have*const c_char
members forname
anddoc
(not*mut c_char
). #3036fmt::Display
, instead return"<unprintable object>"
string and report error viasys.unraisablehook()
#3062#[pyfunction]
s take references into#[pyclass]
es #3142__traverse__
implementation. #3168Drop
implementations of unsendable classes on other threads. #3176#[pymethods]
items come from somewhere else (for example, as a macro argument) and a custom receiver likePy<Self>
is used. #3178v0.18.3
Compare Source
Added
GILProtected<T>
to mediate concurrent access to a value using Python's global interpreter lock (GIL). #2975PyASCIIObject
/PyUnicode
and associated methods on big-endian architectures. #3015_PyDict_Contains_KnownHash()
for CPython 3.10 and up. #3088Fixed
#[pymethods]
and#[pyfunction]
called "output". #3022#[staticmethod]
. #3055is_instance
forPyDateTime
(would incorrectly check for aPyDate
). #3071PyUnicode_InternImmortal
since Python 3.10. #3071v0.18.2
Compare Source
Packaging
chrono
to avoid depending ontime
v0.1.x. #2939Added
IntoPy<PyObject>
,ToPyObject
andFromPyObject
forCow<[u8]>
to efficiently handle bothbytes
andbytearray
objects. #2899IntoPy<PyObject>
,ToPyObject
andFromPyObject
forCell<T>
. #3014PyList::to_tuple()
, as a convenient and efficient conversion from lists to tuples. #3042PyTuple::to_list()
, as a convenient and efficient conversion from tuples to lists. #3044Changed
PySequence
conversion forlist
andtuple
inputs. #2944#[pyclass]
type object fails during module import. #2947PyMapping
conversion fordict
inputs. #2954create_exception!
to take adotted.module
to place the exception in a submodule. #2979Fixed
PyObject
s cloned inallow_threads
blocks. #2952clippy::redundant_closure
lint on default arguments in#[pyo3(signature = (...))]
annotations. #2990non_snake_case
lint on generated code in#[pyfunction]
macro. #2993v0.18.1
Compare Source
Added
PyErr::write_unraisable()
. #2889Python::Ellipsis()
andPyAny::is_ellipsis()
methods. #2911PyDict::update()
andPyDict::update_if_missing()
methods. #2912Changed
PyIter_Check
on CPython 3.7 is now implemented ashasattr(type(obj), "__next__")
, which works correctly on all platforms and adds support forabi3
. #2914PYO3_CONFIG_FILE
instead of denying. #2926Fixed
__releasebuffer__
tosys.unraisablehook
rather than causingSystemError
. #2886PyIterator
succeeding for Python classes which did not implement__next__
. #2914__traverse__
when visitingNone
fields ofOption<T: AsPyPointer>
. #2921#[pymethods(crate = "...")]
option being ignored. #2923pythonXY_d.dll
for debug Python builds on Windows. #2937v0.18.0
Compare Source
Packaging
indexmap
optional depecency to allow>= 1.6, < 2
. #2849hashbrown
optional dependency to allow>= 0.9, < 0.14
. #2875memoffset
dependency to 0.8. #2875Added
GILOnceCell::get_or_try_init
for fallibleGILOnceCell
initialization. #2398experimental-inspect
withtype_input()
andtype_output()
helpers to get the Python type of any Python-compatible object. #2490 #2882#[pyclass]
macro can now takeget_all
andset_all
to create getters and setters for every field. #2692#[pyo3(signature = (...))]
option for#[pyfunction]
and#[pymethods]
. #2702pyo3-build-config
: rebuild whenPYO3_ENVIRONMENT_SIGNATURE
environment variable value changes. #2727std::num
and Pythonint
. #2730Py::downcast()
as a companion toPyAny::downcast()
, as well asdowncast_unchecked()
for both types. #2734Warning
classes as well asPyErr::warn_explicit
. #2742abi3-py311
feature. #2776_PyErr_ChainExceptions()
for CPython. #2788PyVectorcall_NARGS
andPY_VECTORCALL_ARGUMENTS_OFFSET
for PyPy 3.8 and up. #2811PyList::get_item_unchecked
for PyPy. #2827Changed
PyCFunction::new_closure
to takename
anddoc
arguments. #2686PyType::is_subclass
,PyErr::is_instance
andPyAny::is_instance
now take&PyAny
instead of&PyType
arguments, so that they work with objects that pretend to be types using__subclasscheck__
and__instancecheck__
. #2695#[args]
attribute and passing "args" specification directly to#[pyfunction]
in favor of the new#[pyo3(signature = (...))]
option. #2702Option<T>
arguments to#[pyfunction]
and#[pymethods]
without also using#[pyo3(signature)]
to specify whether the arguments should be required or have defaults. #2703#[pyfunction]
and#[pymethods]
to use a common call "trampoline" to slightly reduce generated code size and compile times. #2705PyAny::cast_as()
andPy::cast_as()
are now deprecated in favor ofPyAny::downcast()
and the newPy::downcast()
. #2734PyAny::downcast()
. #2734__text_signature__
for all Python functions created using#[pyfunction]
and#[pymethods]
. #2784PySet::new
andPyFrozenSet::new
. #2795#[cfg(...)]
and#[pyo3(...)]
attributes on#[pyclass]
struct fields will now work. #2796PyFunction
on when building for abi3 or PyPy. #2838derive(FromPyObject)
to useintern!
when applicable for#[pyo3(item)]
. #2879Removed
pyproto
feature,#[pyproto]
macro, and all accompanying APIs. #2587Fixed
PyModule::filename
on PyPy. #2715PyCodeObject
is now once again defined with fields on Python 3.7. #2726TypeError
if#[new]
pymethods with no arguments receive arguments when called from Python. #2749NOARGS
argument calling convention for methods that have a singlepy: Python
argument (as a performance optimization). #2760isize
values toc_long
inPySlice::new
. #2769PyUnicodeDecodeError_Create
on PyPy leading to indeterminate behavior (typically aTypeError
). #2772**kwargs
to accept keyword arguments which share a name with a positional-only argument (as permitted by PEP 570). #2800PyObject_Vectorcall
on PyPy 3.9 and up. #2811PyCFunction::new_closure
. #2842v0.17.3
Compare Source
Packaging
Added
ExactSizeIterator
forPyListIterator
,PyDictIterator
,PySetIterator
andPyFrozenSetIterator
. #2676Fixed
impl FromPyObject for [T; N]
no longer accepting types passingPySequence_Check
, e.g. NumPy arrays, since version 0.17.0. This the same fix that was appliedimpl FromPyObject for Vec<T>
in version 0.17.1 extended to fixed-size arrays. #2675FunctionDescription::extract_arguments_fastcall
due to creating slices from a null pointer. #2687v0.17.2
Compare Source
Packaging
chrono
feature to convertchrono
types into types in thedatetime
module. #2612Added
num-bigint
feature onPyPy
. #2626Fixed
__richcmp__
for enums, fixing__ne__
returning always returningTrue
. #2622Option<&SomePyClass>
argument with a default. #2630impl FromPyObject for Vec<T>
no longer accepting types passingPySequence_Check
, e.g. NumPy arrays, since 0.17.0. #2631v0.17.1
Compare Source
Fixed
PyDictItems
,PyDictKeys
, andPyDictValues
types added in PyO3 0.17.0.#[pyo3(from_py_with = "...")]
attribute on an argument of typeOption<T>
. #2592redundant-closure
lint on**kwargs
arguments for#[pyfunction]
and#[pymethods]
. #2595v0.17.0
Compare Source
Packaging
0.3
(themultiple-pymethods
feature now requires Rust 1.62 for correctness). #2492Added
timezone_utc
. #1588ToPyObject
for[T; N]
. #2313PyDictKeys
,PyDictValues
andPyDictItems
Rust types. #2358append_to_inittab
. #2377PyFrame_GetCode
. #2406PyCode
andPyFrame
high level objects. #2408Py_fstring_input
,sendfunc
, and_PyErr_StackItem
. #2423PyDateTime::new_with_fold
,PyTime::new_with_fold
,PyTime::get_fold
, andPyDateTime::get_fold
for PyPy. #2428#[pyclass(frozen)]
. #2448#[pyo3(name)]
on enum variants. #2457CompareOp::matches
to implement__richcmp__
as the result of a Ruststd::cmp::Ordering
comparison. #2460PySuper
type. #2486generate-import-lib
feature. #2506Py_EnterRecursiveCall
andPy_LeaveRecursiveCall
. #2511PyDict::get_item_with_error
. #2536#[pyclass(sequence)]
option. #2567Changed
tzinfo
to takeOption<&PyTzInfo>
instead ofOption<&PyObject>
:PyDateTime::new
,PyDateTime::new_with_fold
,PyTime::new
, andPyTime::new_with_fold
. #1588PyTypeObject::type_object
method to thePyTypeInfo
trait, and deprecate thePyTypeObject
trait. #2287Py
andPyAny
now acceptimpl IntoPy<Py<PyString>>
rather than just&str
to allow use of theintern!
macro. #2312pyproto
feature to be opt-in instead of opt-out. #2322#[pyfunction]
return types do not implementIntoPy
. #2326T: IntoPy
forimpl<T, const N: usize> IntoPy<PyObject> for [T; N]
instead ofT: ToPyObject
. #2326ToBorrowedObject
trait. #2333PySet
andPyDict
will now panic if the underlying collection is mutated during the iteration. #2380PySet
andPyDict
will now panic if the underlying collection is mutated during the iteration. #2380#[classattr]
methods to be fallible. #2385#[pymethods]
with the same name for a single#[pyclass]
. #2399lib_name
when usingPYO3_CONFIG_FILE
. #2404ValueError
raised by the#[derive(FromPyObject)]
implementation for a tuple struct. #2414#[classattr]
methods to takePython
argument. #2456PyCapsule
type to resolve soundness issues: #2485PyCapsule::new
andPyCapsule::new_with_destructor
now takename: Option<CString>
instead of&CStr
.F
inPyCapsule::new_with_destructor
must now beSend
.PyCapsule::get_context
deprecated in favor ofPyCapsule::context
which doesn't take apy: Python<'_>
argument.PyCapsule::set_context
no longer takes apy: Python<'_>
argument.PyCapsule::name
now returnsPyResult<Option<&CStr>>
instead of&CStr
.FromPyObject::extract
forVec<T>
no longer accepts Pythonstr
inputs. #2500#[pymodule]
is only initialized once. #2523pyo3_build_config::add_extension_module_link_args
now also emits linker arguments forwasm32-unknown-emscripten
. #2538PySequence
andPyMapping
now require inputs to inherit from (or register with)collections.abc.Sequence
andcollections.abc.Mapping
respectively. #2477PyFunction
on when building for abi3 or PyPy. #2542Python::acquire_gil
. #2549Removed
Dict
,WeakRef
andBaseNativeType
members of thePyClass
private implementation details. #2572Fixed
PyThreadState_DeleteCurrent
. #2357wrap_pymodule
interactions with name resolution rules: it no longer "sees through" glob imports ofuse submodule::*
whensubmodule::submodule
is a#[pymodule]
. #2363PyEval_EvalCodeEx
to take*const *mut PyObject
array arguments instead of*mut *mut PyObject
. #2368#[pyclass] struct r#RawName
) incorrectly havingr#
at the start of the class name created in Python. #2395Py_tracefunc
to beunsafe extern "C" fn
(was previously safe). #2407#[pyo3(from_py_with = "...")]
annotations on a field in a#[derive(FromPyObject)]
struct. #2414_PyDateTime_BaseTime
and_PyDateTime_BaseDateTime
lacking leading underscores in their names. #2421PyArena
on Python 3.10 and up. #2421PyCompilerFlags
missing membercf_feature_version
on Python 3.8 and up. #2423PyAsyncMethods
missing memberam_send
on Python 3.10 and up. #2423PyGenObject
having multiple incorrect members on various Python versions. #2423PySyntaxErrorObject
missing membersend_lineno
andend_offset
on Python 3.10 and up. #2423PyHeapTypeObject
missing memberht_module
on Python 3.9 and up. #2423PyFrameObject
having multiple incorrect members on various Python versions. #2424 #2434PyTypeObject
missing deprecated fieldtp_print
on Python 3.8. #2428PyDateTime_CAPI
.PyDateTime_Date
,PyASCIIObject
,PyBaseExceptionObject
,PyListObject
, andPyTypeObject
on PyPy. #2428_inittab
fieldinitfunc
typo'd asinitfun
. #2431_PyDateTime_BaseTime
and_PyDateTime_BaseDateTime
incorrectly havingfold
member. #2432PyTypeObject
.PyHeapTypeObject
, andPyCFunctionObject
having incorrect members on PyPy 3.9. #2433PyGetSetDef
to have*const c_char
fordoc
member (not*mut c_char
). #2439#[pyo3(from_py_with = "...")]
being ignored for 1-element tuple structs and transparent structs. #2440memoffset
to avoid UB when computingPyCell
layout. #2450repr
for enums renamed by#[pyclass(name = "...")]
#2457PyObject_CallNoArgs
incorrectly being available when building for abi3 on Python 3.9. #2476#[pyfunction]
arguments. #2503Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ 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.
This PR has been generated by Mend Renovate. View repository job log here.