Migrate `PyIterator::from_object` and `PyByteArray::from` from `AsPyPointer` to `&PyAny`
This commit is contained in:
parent
1a64eb01d7
commit
1a904a7429
|
@ -0,0 +1 @@
|
|||
`PyIterator::from_object` and `PyByteArray::from` now take a single argument of type `&PyAny`, rather than two arguments, `Python` and `AsPyPointer`
|
|
@ -818,7 +818,7 @@ impl PyAny {
|
|||
/// This is typically a new iterator but if the argument is an iterator,
|
||||
/// this returns itself.
|
||||
pub fn iter(&self) -> PyResult<&PyIterator> {
|
||||
PyIterator::from_object(self.py(), self)
|
||||
PyIterator::from_object(self)
|
||||
}
|
||||
|
||||
/// Returns the Python type object for this object's type.
|
||||
|
|
|
@ -64,11 +64,11 @@ impl PyByteArray {
|
|||
|
||||
/// Creates a new Python `bytearray` object from another Python object that
|
||||
/// implements the buffer protocol.
|
||||
pub fn from<'p, I>(py: Python<'p>, src: &'p I) -> PyResult<&'p PyByteArray>
|
||||
where
|
||||
I: AsPyPointer,
|
||||
{
|
||||
unsafe { py.from_owned_ptr_or_err(ffi::PyByteArray_FromObject(src.as_ptr())) }
|
||||
pub fn from(src: &PyAny) -> PyResult<&PyByteArray> {
|
||||
unsafe {
|
||||
src.py()
|
||||
.from_owned_ptr_or_err(ffi::PyByteArray_FromObject(src.as_ptr()))
|
||||
}
|
||||
}
|
||||
|
||||
/// Gets the length of the bytearray.
|
||||
|
@ -305,7 +305,7 @@ mod tests {
|
|||
let bytearray = PyByteArray::new(py, src);
|
||||
|
||||
let ba: PyObject = bytearray.into();
|
||||
let bytearray = PyByteArray::from(py, &ba).unwrap();
|
||||
let bytearray = PyByteArray::from(ba.as_ref(py)).unwrap();
|
||||
|
||||
assert_eq!(src, unsafe { bytearray.as_bytes() });
|
||||
});
|
||||
|
@ -314,7 +314,7 @@ mod tests {
|
|||
#[test]
|
||||
fn test_from_err() {
|
||||
Python::with_gil(|py| {
|
||||
if let Err(err) = PyByteArray::from(py, &py.None()) {
|
||||
if let Err(err) = PyByteArray::from(py.None().as_ref(py)) {
|
||||
assert!(err.is_instance_of::<exceptions::PyTypeError>(py));
|
||||
} else {
|
||||
panic!("error");
|
||||
|
|
|
@ -124,7 +124,7 @@ mod impl_ {
|
|||
|
||||
fn into_iter(self) -> Self::IntoIter {
|
||||
PyFrozenSetIterator {
|
||||
it: PyIterator::from_object(self.py(), self).unwrap(),
|
||||
it: PyIterator::from_object(self).unwrap(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,11 +30,11 @@ impl PyIterator {
|
|||
/// Constructs a `PyIterator` from a Python iterable object.
|
||||
///
|
||||
/// Equivalent to Python's built-in `iter` function.
|
||||
pub fn from_object<'p, T>(py: Python<'p>, obj: &T) -> PyResult<&'p PyIterator>
|
||||
where
|
||||
T: AsPyPointer,
|
||||
{
|
||||
unsafe { py.from_owned_ptr_or_err(ffi::PyObject_GetIter(obj.as_ptr())) }
|
||||
pub fn from_object(obj: &PyAny) -> PyResult<&PyIterator> {
|
||||
unsafe {
|
||||
obj.py()
|
||||
.from_owned_ptr_or_err(ffi::PyObject_GetIter(obj.as_ptr()))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -209,7 +209,7 @@ def fibonacci(target):
|
|||
fn int_not_iterable() {
|
||||
Python::with_gil(|py| {
|
||||
let x = 5.to_object(py);
|
||||
let err = PyIterator::from_object(py, &x).unwrap_err();
|
||||
let err = PyIterator::from_object(x.as_ref(py)).unwrap_err();
|
||||
|
||||
assert!(err.is_instance_of::<PyTypeError>(py));
|
||||
});
|
||||
|
|
|
@ -149,7 +149,7 @@ mod impl_ {
|
|||
/// If PyO3 detects that the set is mutated during iteration, it will panic.
|
||||
fn into_iter(self) -> Self::IntoIter {
|
||||
PySetIterator {
|
||||
it: PyIterator::from_object(self.py(), self).unwrap(),
|
||||
it: PyIterator::from_object(self).unwrap(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue