Mercurial > public > mercurial-scm > hg
diff rust/hg-cpython/src/dirstate.rs @ 48021:627cd8f33db0
rust: Remove support for passing a dict to the Rust pathutil.dirs()
That is only used by the Python dirstatemap, which not used when Rust
is enabled.
This allows removing the private `extract_dirstate` function which
creates `DirstateEntry` values. This in turn will make easier upcoming
changes to `DirstateEntry`.
Differential Revision: https://phab.mercurial-scm.org/D11460
author | Simon Sapin <simon.sapin@octobus.net> |
---|---|
date | Mon, 20 Sep 2021 13:16:36 +0200 |
parents | 4afd6cc447b9 |
children | f2a9db29cb2d |
line wrap: on
line diff
--- a/rust/hg-cpython/src/dirstate.rs Mon Sep 20 12:52:32 2021 +0200 +++ b/rust/hg-cpython/src/dirstate.rs Mon Sep 20 13:16:36 2021 +0200 @@ -21,13 +21,11 @@ exceptions, }; use cpython::{ - exc, PyBytes, PyDict, PyErr, PyList, PyModule, PyObject, PyResult, - PySequence, Python, + PyBytes, PyDict, PyErr, PyList, PyModule, PyObject, PyResult, Python, }; use hg::dirstate_tree::on_disk::V2_FORMAT_MARKER; -use hg::{utils::hg_path::HgPathBuf, DirstateEntry, EntryState, StateMap}; +use hg::DirstateEntry; use libc::{c_char, c_int}; -use std::convert::TryFrom; // C code uses a custom `dirstate_tuple` type, checks in multiple instances // for this type, and raises a Python `Exception` if the check does not pass. @@ -78,34 +76,6 @@ maybe_obj.ok_or_else(|| PyErr::fetch(py)) } -pub fn extract_dirstate(py: Python, dmap: &PyDict) -> Result<StateMap, PyErr> { - dmap.items(py) - .iter() - .map(|(filename, stats)| { - let stats = stats.extract::<PySequence>(py)?; - let state = stats.get_item(py, 0)?.extract::<PyBytes>(py)?; - let state = - EntryState::try_from(state.data(py)[0]).map_err(|e| { - PyErr::new::<exc::ValueError, _>(py, e.to_string()) - })?; - let mode = stats.get_item(py, 1)?.extract(py)?; - let size = stats.get_item(py, 2)?.extract(py)?; - let mtime = stats.get_item(py, 3)?.extract(py)?; - let filename = filename.extract::<PyBytes>(py)?; - let filename = filename.data(py); - Ok(( - HgPathBuf::from(filename.to_owned()), - DirstateEntry { - state, - mode, - size, - mtime, - }, - )) - }) - .collect() -} - /// Create the module, with `__package__` given from parent pub fn init_module(py: Python, package: &str) -> PyResult<PyModule> { let dotted_name = &format!("{}.dirstate", package);