##// END OF EJS Templates
rust: upgrade supported Rust toolchain version...
rust: upgrade supported Rust toolchain version A few months ago¹, a decision was made to move the Rust toolchain target to whatever Debian Testing was tracking. I didn't have the bandwidth to act on it until now. This is starting to be even more problematic than before, now that edition 2021 is out. The CI has been updated to track the current Debian testing version, 1.61.0. [1] https://lists.mercurial-scm.org/pipermail/mercurial-packaging/2022-April/000338.html

File last commit:

r49214:a19d1225 default
r50523:eb383f09 default
Show More
dirstate.rs
70 lines | 2.0 KiB | application/rls-services+xml | RustLexer
// dirstate.rs
//
// Copyright 2019 Raphaël Gomès <rgomes@octobus.net>
//
// 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` module provided by the
//! `hg-core` package.
//!
//! From Python, this will be seen as `mercurial.rustext.dirstate`
mod copymap;
mod dirs_multiset;
mod dirstate_map;
mod item;
mod status;
use self::item::DirstateItem;
use crate::{
dirstate::{
dirs_multiset::Dirs, dirstate_map::DirstateMap, status::status_wrapper,
},
exceptions,
};
use cpython::{PyBytes, PyDict, PyList, PyModule, PyObject, PyResult, Python};
use hg::dirstate_tree::on_disk::V2_FORMAT_MARKER;
/// Create the module, with `__package__` given from parent
pub fn init_module(py: Python, package: &str) -> PyResult<PyModule> {
let dotted_name = &format!("{}.dirstate", package);
let m = PyModule::new(py, dotted_name)?;
env_logger::init();
m.add(py, "__package__", package)?;
m.add(py, "__doc__", "Dirstate - Rust implementation")?;
m.add(
py,
"FallbackError",
py.get_type::<exceptions::FallbackError>(),
)?;
m.add_class::<Dirs>(py)?;
m.add_class::<DirstateMap>(py)?;
m.add_class::<DirstateItem>(py)?;
m.add(py, "V2_FORMAT_MARKER", PyBytes::new(py, V2_FORMAT_MARKER))?;
m.add(
py,
"status",
py_fn!(
py,
status_wrapper(
dmap: DirstateMap,
root_dir: PyObject,
matcher: PyObject,
ignorefiles: PyList,
check_exec: bool,
list_clean: bool,
list_ignored: bool,
list_unknown: bool,
collect_traversed_dirs: bool
)
),
)?;
let sys = PyModule::import(py, "sys")?;
let sys_modules: PyDict = sys.get(py, "modules")?.extract(py)?;
sys_modules.set_item(py, dotted_name, &m)?;
Ok(m)
}