rust/hg-cpython/src/dirstate/dirstate_map.rs
changeset 42799 5399532510ae
parent 42754 4e8f504424f3
child 42800 79561843729a
equal deleted inserted replaced
42798:99dff4264524 42799:5399532510ae
    22     dirstate::copymap::{CopyMap, CopyMapItemsIterator, CopyMapKeysIterator},
    22     dirstate::copymap::{CopyMap, CopyMapItemsIterator, CopyMapKeysIterator},
    23     dirstate::{decapsule_make_dirstate_tuple, dirs_multiset::Dirs},
    23     dirstate::{decapsule_make_dirstate_tuple, dirs_multiset::Dirs},
    24     ref_sharing::PySharedState,
    24     ref_sharing::PySharedState,
    25 };
    25 };
    26 use hg::{
    26 use hg::{
    27     utils::copy_into_array, DirsIterable, DirsMultiset, DirstateEntry,
    27     DirsIterable, DirsMultiset, DirstateEntry,
    28     DirstateMap as RustDirstateMap, DirstateParents, DirstateParseError,
    28     DirstateMap as RustDirstateMap, DirstateParents, DirstateParseError,
    29     EntryState,
    29     EntryState,
    30 };
    30 };
    31 
    31 
    32 // TODO
    32 // TODO
   237                 ))
   237                 ))
   238             })
   238             })
   239     }
   239     }
   240 
   240 
   241     def setparents(&self, p1: PyObject, p2: PyObject) -> PyResult<PyObject> {
   241     def setparents(&self, p1: PyObject, p2: PyObject) -> PyResult<PyObject> {
   242         let p1 = copy_into_array(p1.extract::<PyBytes>(py)?.data(py));
   242         // TODO: don't panic; raise Python exception instead.
   243         let p2 = copy_into_array(p2.extract::<PyBytes>(py)?.data(py));
   243         let p1 = p1.extract::<PyBytes>(py)?.data(py).try_into().unwrap();
       
   244         let p2 = p2.extract::<PyBytes>(py)?.data(py).try_into().unwrap();
   244 
   245 
   245         self.inner(py)
   246         self.inner(py)
   246             .borrow_mut()
   247             .borrow_mut()
   247             .set_parents(DirstateParents { p1, p2 });
   248             .set_parents(DirstateParents { p1, p2 });
   248         Ok(py.None())
   249         Ok(py.None())
   272         p2: PyObject,
   273         p2: PyObject,
   273         now: PyObject
   274         now: PyObject
   274     ) -> PyResult<PyBytes> {
   275     ) -> PyResult<PyBytes> {
   275         let now = Duration::new(now.extract(py)?, 0);
   276         let now = Duration::new(now.extract(py)?, 0);
   276         let parents = DirstateParents {
   277         let parents = DirstateParents {
   277             p1: copy_into_array(p1.extract::<PyBytes>(py)?.data(py)),
   278             // TODO: don't panic; raise Python exception instead.
   278             p2: copy_into_array(p2.extract::<PyBytes>(py)?.data(py)),
   279             p1: p1.extract::<PyBytes>(py)?.data(py).try_into().unwrap(),
       
   280             p2: p2.extract::<PyBytes>(py)?.data(py).try_into().unwrap(),
   279         };
   281         };
   280 
   282 
   281         match self.borrow_mut(py)?.pack(parents, now) {
   283         match self.borrow_mut(py)?.pack(parents, now) {
   282             Ok(packed) => Ok(PyBytes::new(py, &packed)),
   284             Ok(packed) => Ok(PyBytes::new(py, &packed)),
   283             Err(_) => Err(PyErr::new::<exc::OSError, _>(
   285             Err(_) => Err(PyErr::new::<exc::OSError, _>(