fn get_diffs()

in src/init.rs [43:72]


fn get_diffs(
    py: Python,
    bytes: PyObject,
    kwargs: Option<&Bound<'_, PyDict>>,
) -> PyResult<PyObject> {
    let hunks = if let Some(kwargs) = kwargs {
        kwargs.get_item("hunks")?.map_or(false, |h| {
            h.downcast::<PyBool>().ok().map_or(false, |h| h.is_true())
        })
    } else {
        false
    };

    let mut patch = crate::diffs::PyPatch::new(py, hunks);

    if let Some(bytes) = crate::common::get_bytes(py, &bytes) {
        match bytes {
            crate::common::Bytes::Slice(bytes) => {
                PatchReader::by_buf(bytes, &mut patch).map_err(PPError)?
            }
            crate::common::Bytes::Vec(bytes) => {
                PatchReader::by_buf(&bytes, &mut patch).map_err(PPError)?
            }
        }
    } else {
        return Err(PyTypeError::new_err("Invalid patch type"));
    };

    patch.get_result()
}