Changeset View
Changeset View
Standalone View
Standalone View
rust/hg-cpython/src/dirstate/dirstate_map.rs
Show First 20 Lines • Show All 78 Lines • ▼ Show 20 Line(s) | ) -> PyResult<PyObject> { | ||||
Ok((map, parents).to_py_object(py).into_object()) | Ok((map, parents).to_py_object(py).into_object()) | ||||
} | } | ||||
/// Returns a DirstateMap | /// Returns a DirstateMap | ||||
@staticmethod | @staticmethod | ||||
def new_v2( | def new_v2( | ||||
on_disk: PyBytes, | on_disk: PyBytes, | ||||
data_size: usize, | data_size: usize, | ||||
tree_metadata: PyBytes, | |||||
) -> PyResult<PyObject> { | ) -> PyResult<PyObject> { | ||||
let dirstate_error = |e: DirstateError| { | let dirstate_error = |e: DirstateError| { | ||||
PyErr::new::<exc::OSError, _>(py, format!("Dirstate error: {:?}", e)) | PyErr::new::<exc::OSError, _>(py, format!("Dirstate error: {:?}", e)) | ||||
}; | }; | ||||
let inner = OwningDirstateMap::new_v2(py, on_disk, data_size) | let inner = OwningDirstateMap::new_v2( | ||||
.map_err(dirstate_error)?; | py, on_disk, data_size, tree_metadata, | ||||
).map_err(dirstate_error)?; | |||||
let map = Self::create_instance(py, Box::new(inner))?; | let map = Self::create_instance(py, Box::new(inner))?; | ||||
Ok(map.into_object()) | Ok(map.into_object()) | ||||
} | } | ||||
def clear(&self) -> PyResult<PyObject> { | def clear(&self) -> PyResult<PyObject> { | ||||
self.inner(py).borrow_mut().clear(); | self.inner(py).borrow_mut().clear(); | ||||
Ok(py.None()) | Ok(py.None()) | ||||
} | } | ||||
▲ Show 20 Lines • Show All 247 Lines • ▼ Show 20 Line(s) | def write_v2( | ||||
now: PyObject, | now: PyObject, | ||||
can_append: bool, | can_append: bool, | ||||
) -> PyResult<PyObject> { | ) -> PyResult<PyObject> { | ||||
let now = Timestamp(now.extract(py)?); | let now = Timestamp(now.extract(py)?); | ||||
let mut inner = self.inner(py).borrow_mut(); | let mut inner = self.inner(py).borrow_mut(); | ||||
let result = inner.pack_v2(now, can_append); | let result = inner.pack_v2(now, can_append); | ||||
match result { | match result { | ||||
Ok((packed, append)) => { | Ok((packed, tree_metadata, append)) => { | ||||
let packed = PyBytes::new(py, &packed); | let packed = PyBytes::new(py, &packed); | ||||
Ok((packed, append).to_py_object(py).into_object()) | let tree_metadata = PyBytes::new(py, &tree_metadata); | ||||
let tuple = (packed, tree_metadata, append); | |||||
Ok(tuple.to_py_object(py).into_object()) | |||||
}, | }, | ||||
Err(_) => Err(PyErr::new::<exc::OSError, _>( | Err(_) => Err(PyErr::new::<exc::OSError, _>( | ||||
py, | py, | ||||
"Dirstate error".to_string(), | "Dirstate error".to_string(), | ||||
)), | )), | ||||
} | } | ||||
} | } | ||||
▲ Show 20 Lines • Show All 248 Lines • Show Last 20 Lines |