Skip to content

Commit

Permalink
Migrate PyIterator::from_object and PyByteArray::from from `AsPyP…
Browse files Browse the repository at this point in the history
…ointer` to `&PyAny`
  • Loading branch information
alex committed Aug 15, 2023
1 parent 1a64eb0 commit b720a43
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 14 deletions.
2 changes: 1 addition & 1 deletion src/types/any.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
14 changes: 7 additions & 7 deletions src/types/bytearray.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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() });
});
Expand All @@ -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");
Expand Down
12 changes: 6 additions & 6 deletions src/types/iterator.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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()))
}
}
}

Expand Down Expand Up @@ -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));
});
Expand Down

0 comments on commit b720a43

Please sign in to comment.