--- a/rust/hg-pyo3/src/dirstate.rs Wed Jan 29 14:03:24 2025 +0100
+++ b/rust/hg-pyo3/src/dirstate.rs Wed Jan 29 14:05:21 2025 +0100
@@ -12,6 +12,8 @@
//! From Python, this will be seen as `mercurial.pyo3_rustext.dirstate`
use crate::{exceptions, utils::new_submodule};
use pyo3::prelude::*;
+mod dirstate_map;
+use dirstate_map::DirstateIdentity;
pub fn init_module<'py>(
py: Python<'py>,
@@ -20,5 +22,6 @@
let m = new_submodule(py, package, "dirstate")?;
m.add("__doc__", "Dirstate - Rust implementation exposed via PyO3")?;
m.add("FallbackError", py.get_type::<exceptions::FallbackError>())?;
+ m.add_class::<DirstateIdentity>()?;
Ok(m)
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/rust/hg-pyo3/src/dirstate/dirstate_map.rs Wed Jan 29 14:05:21 2025 +0100
@@ -0,0 +1,54 @@
+// dirstate_map.rs
+//
+// Copyright 2019 Raphaël Gomès <rgomes@octobus.net>
+// 2025 Georges Racinet <georges.racinet@cloudcrane.io>
+//
+// This software may be used and distributed according to the terms of the
+// GNU General Public License version 2 or any later version.
+//! Bindings for the `hg::dirstate::dirstate_map` file provided by the
+//! `hg-core` package.
+
+use pyo3::prelude::*;
+
+use hg::dirstate::dirstate_map::DirstateIdentity as CoreDirstateIdentity;
+
+#[pyclass]
+pub struct DirstateIdentity {
+ #[allow(dead_code)]
+ inner: CoreDirstateIdentity,
+}
+
+#[pymethods]
+impl DirstateIdentity {
+ #[new]
+ #[allow(clippy::too_many_arguments)]
+ fn new(
+ mode: u32,
+ dev: u64,
+ ino: u64,
+ nlink: u64,
+ uid: u32,
+ gid: u32,
+ size: u64,
+ mtime: i64,
+ mtime_nsec: i64,
+ ctime: i64,
+ ctime_nsec: i64,
+ ) -> PyResult<Self> {
+ Ok(Self {
+ inner: CoreDirstateIdentity {
+ mode,
+ dev,
+ ino,
+ nlink,
+ uid,
+ gid,
+ size,
+ mtime,
+ mtime_nsec,
+ ctime,
+ ctime_nsec,
+ },
+ })
+ }
+}