Mercurial > public > mercurial-scm > hg
annotate rust/hg-cpython/src/dirstate.rs @ 47034:0d8ff1f4ab0c
revlog: add a `entry_binary` method on index
The revlog index is already responsible for unpacking the binary entry, it would be
simpler to make it responsible for packing them. In practice the C version of
the index is already doing this internally.
We introduce a "entry_binary" method that return the binary version of an
existing revision. The method currently need to also take the revlog header to
deal with the "first revision" special case. We will introduce further refactor
in a later changeset to split that logic out.
Differential Revision: https://phab.mercurial-scm.org/D10508
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Thu, 08 Apr 2021 00:01:11 +0200 |
parents | 776b97179c06 |
children | d8ac62374943 |
rev | line source |
---|---|
42303
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
1 // dirstate.rs |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
2 // |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
3 // Copyright 2019 Raphaël Gomès <rgomes@octobus.net> |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
4 // |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
5 // This software may be used and distributed according to the terms of the |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
6 // GNU General Public License version 2 or any later version. |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
7 |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
8 //! Bindings for the `hg::dirstate` module provided by the |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
9 //! `hg-core` package. |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
10 //! |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
11 //! From Python, this will be seen as `mercurial.rustext.dirstate` |
42754
4e8f504424f3
rust-dirstate: rust-cpython bridge for dirstatemap
Rapha?l Gom?s <rgomes@octobus.net>
parents:
42749
diff
changeset
|
12 mod copymap; |
42746
b3518b0baa47
rust-dirstate: create dirstate submodule in hg-cpython
Rapha?l Gom?s <rgomes@octobus.net>
parents:
42609
diff
changeset
|
13 mod dirs_multiset; |
42754
4e8f504424f3
rust-dirstate: rust-cpython bridge for dirstatemap
Rapha?l Gom?s <rgomes@octobus.net>
parents:
42749
diff
changeset
|
14 mod dirstate_map; |
44297
cf1f8660e568
rust-dirstatemap: add `NonNormalEntries` class
Rapha?l Gom?s <rgomes@octobus.net>
parents:
43916
diff
changeset
|
15 mod non_normal_entries; |
43273
478d0b1bf0c5
rust-dirstate-status: rust-cpython bindings for `dirstate.status`
Rapha?l Gom?s <rgomes@octobus.net>
parents:
43213
diff
changeset
|
16 mod status; |
44529
f96b28aa4b79
rust-status: update rust-cpython bridge to account for the changes in core
Rapha?l Gom?s <rgomes@octobus.net>
parents:
44297
diff
changeset
|
17 use crate::{ |
f96b28aa4b79
rust-status: update rust-cpython bridge to account for the changes in core
Rapha?l Gom?s <rgomes@octobus.net>
parents:
44297
diff
changeset
|
18 dirstate::{ |
f96b28aa4b79
rust-status: update rust-cpython bridge to account for the changes in core
Rapha?l Gom?s <rgomes@octobus.net>
parents:
44297
diff
changeset
|
19 dirs_multiset::Dirs, dirstate_map::DirstateMap, status::status_wrapper, |
f96b28aa4b79
rust-status: update rust-cpython bridge to account for the changes in core
Rapha?l Gom?s <rgomes@octobus.net>
parents:
44297
diff
changeset
|
20 }, |
f96b28aa4b79
rust-status: update rust-cpython bridge to account for the changes in core
Rapha?l Gom?s <rgomes@octobus.net>
parents:
44297
diff
changeset
|
21 exceptions, |
43273
478d0b1bf0c5
rust-dirstate-status: rust-cpython bindings for `dirstate.status`
Rapha?l Gom?s <rgomes@octobus.net>
parents:
43213
diff
changeset
|
22 }; |
42303
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
23 use cpython::{ |
44529
f96b28aa4b79
rust-status: update rust-cpython bridge to account for the changes in core
Rapha?l Gom?s <rgomes@octobus.net>
parents:
44297
diff
changeset
|
24 exc, PyBytes, PyDict, PyErr, PyList, PyModule, PyObject, PyResult, |
f96b28aa4b79
rust-status: update rust-cpython bridge to account for the changes in core
Rapha?l Gom?s <rgomes@octobus.net>
parents:
44297
diff
changeset
|
25 PySequence, Python, |
42303
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
26 }; |
46440
776b97179c06
rust: Remove DirstateParseError and ListDirstateTrackedFilesError
Simon Sapin <simon.sapin@octobus.net>
parents:
45517
diff
changeset
|
27 use hg::{utils::hg_path::HgPathBuf, DirstateEntry, EntryState, StateMap}; |
42609
326fdce22fb2
rust: switch hg-core and hg-cpython to rust 2018 edition
Rapha?l Gom?s <rgomes@octobus.net>
parents:
42558
diff
changeset
|
28 use libc::{c_char, c_int}; |
42749
7ceded4419a3
rust-dirstate: use EntryState enum instead of literals
Rapha?l Gom?s <rgomes@octobus.net>
parents:
42748
diff
changeset
|
29 use std::convert::TryFrom; |
42303
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
30 |
43211
88a9930e92e4
rust-cpython: turn inline comments into non-doc comments
Yuya Nishihara <yuya@tcha.org>
parents:
43210
diff
changeset
|
31 // C code uses a custom `dirstate_tuple` type, checks in multiple instances |
88a9930e92e4
rust-cpython: turn inline comments into non-doc comments
Yuya Nishihara <yuya@tcha.org>
parents:
43210
diff
changeset
|
32 // for this type, and raises a Python `Exception` if the check does not pass. |
88a9930e92e4
rust-cpython: turn inline comments into non-doc comments
Yuya Nishihara <yuya@tcha.org>
parents:
43210
diff
changeset
|
33 // Because this type differs only in name from the regular Python tuple, it |
88a9930e92e4
rust-cpython: turn inline comments into non-doc comments
Yuya Nishihara <yuya@tcha.org>
parents:
43210
diff
changeset
|
34 // would be a good idea in the near future to remove it entirely to allow |
88a9930e92e4
rust-cpython: turn inline comments into non-doc comments
Yuya Nishihara <yuya@tcha.org>
parents:
43210
diff
changeset
|
35 // for a pure Python tuple of the same effective structure to be used, |
88a9930e92e4
rust-cpython: turn inline comments into non-doc comments
Yuya Nishihara <yuya@tcha.org>
parents:
43210
diff
changeset
|
36 // rendering this type and the capsule below useless. |
43213
0246bbe1045d
rust-cpython: leverage upstreamed py_capsule_fn!() macro
Yuya Nishihara <yuya@tcha.org>
parents:
43211
diff
changeset
|
37 py_capsule_fn!( |
0246bbe1045d
rust-cpython: leverage upstreamed py_capsule_fn!() macro
Yuya Nishihara <yuya@tcha.org>
parents:
43211
diff
changeset
|
38 from mercurial.cext.parsers import make_dirstate_tuple_CAPI |
0246bbe1045d
rust-cpython: leverage upstreamed py_capsule_fn!() macro
Yuya Nishihara <yuya@tcha.org>
parents:
43211
diff
changeset
|
39 as make_dirstate_tuple_capi |
0246bbe1045d
rust-cpython: leverage upstreamed py_capsule_fn!() macro
Yuya Nishihara <yuya@tcha.org>
parents:
43211
diff
changeset
|
40 signature ( |
0246bbe1045d
rust-cpython: leverage upstreamed py_capsule_fn!() macro
Yuya Nishihara <yuya@tcha.org>
parents:
43211
diff
changeset
|
41 state: c_char, |
0246bbe1045d
rust-cpython: leverage upstreamed py_capsule_fn!() macro
Yuya Nishihara <yuya@tcha.org>
parents:
43211
diff
changeset
|
42 mode: c_int, |
0246bbe1045d
rust-cpython: leverage upstreamed py_capsule_fn!() macro
Yuya Nishihara <yuya@tcha.org>
parents:
43211
diff
changeset
|
43 size: c_int, |
0246bbe1045d
rust-cpython: leverage upstreamed py_capsule_fn!() macro
Yuya Nishihara <yuya@tcha.org>
parents:
43211
diff
changeset
|
44 mtime: c_int, |
0246bbe1045d
rust-cpython: leverage upstreamed py_capsule_fn!() macro
Yuya Nishihara <yuya@tcha.org>
parents:
43211
diff
changeset
|
45 ) -> *mut RawPyObject |
0246bbe1045d
rust-cpython: leverage upstreamed py_capsule_fn!() macro
Yuya Nishihara <yuya@tcha.org>
parents:
43211
diff
changeset
|
46 ); |
42303
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
47 |
43208
1ca3823aeefd
rust-cpython: add wrapper around decapsule_make_dirstate_tuple()
Yuya Nishihara <yuya@tcha.org>
parents:
42957
diff
changeset
|
48 pub fn make_dirstate_tuple( |
1ca3823aeefd
rust-cpython: add wrapper around decapsule_make_dirstate_tuple()
Yuya Nishihara <yuya@tcha.org>
parents:
42957
diff
changeset
|
49 py: Python, |
1ca3823aeefd
rust-cpython: add wrapper around decapsule_make_dirstate_tuple()
Yuya Nishihara <yuya@tcha.org>
parents:
42957
diff
changeset
|
50 entry: &DirstateEntry, |
1ca3823aeefd
rust-cpython: add wrapper around decapsule_make_dirstate_tuple()
Yuya Nishihara <yuya@tcha.org>
parents:
42957
diff
changeset
|
51 ) -> PyResult<PyObject> { |
43213
0246bbe1045d
rust-cpython: leverage upstreamed py_capsule_fn!() macro
Yuya Nishihara <yuya@tcha.org>
parents:
43211
diff
changeset
|
52 // might be silly to retrieve capsule function in hot loop |
0246bbe1045d
rust-cpython: leverage upstreamed py_capsule_fn!() macro
Yuya Nishihara <yuya@tcha.org>
parents:
43211
diff
changeset
|
53 let make = make_dirstate_tuple_capi::retrieve(py)?; |
43208
1ca3823aeefd
rust-cpython: add wrapper around decapsule_make_dirstate_tuple()
Yuya Nishihara <yuya@tcha.org>
parents:
42957
diff
changeset
|
54 |
1ca3823aeefd
rust-cpython: add wrapper around decapsule_make_dirstate_tuple()
Yuya Nishihara <yuya@tcha.org>
parents:
42957
diff
changeset
|
55 let &DirstateEntry { |
1ca3823aeefd
rust-cpython: add wrapper around decapsule_make_dirstate_tuple()
Yuya Nishihara <yuya@tcha.org>
parents:
42957
diff
changeset
|
56 state, |
1ca3823aeefd
rust-cpython: add wrapper around decapsule_make_dirstate_tuple()
Yuya Nishihara <yuya@tcha.org>
parents:
42957
diff
changeset
|
57 mode, |
1ca3823aeefd
rust-cpython: add wrapper around decapsule_make_dirstate_tuple()
Yuya Nishihara <yuya@tcha.org>
parents:
42957
diff
changeset
|
58 size, |
1ca3823aeefd
rust-cpython: add wrapper around decapsule_make_dirstate_tuple()
Yuya Nishihara <yuya@tcha.org>
parents:
42957
diff
changeset
|
59 mtime, |
1ca3823aeefd
rust-cpython: add wrapper around decapsule_make_dirstate_tuple()
Yuya Nishihara <yuya@tcha.org>
parents:
42957
diff
changeset
|
60 } = entry; |
1ca3823aeefd
rust-cpython: add wrapper around decapsule_make_dirstate_tuple()
Yuya Nishihara <yuya@tcha.org>
parents:
42957
diff
changeset
|
61 // Explicitly go through u8 first, then cast to platform-specific `c_char` |
1ca3823aeefd
rust-cpython: add wrapper around decapsule_make_dirstate_tuple()
Yuya Nishihara <yuya@tcha.org>
parents:
42957
diff
changeset
|
62 // because Into<u8> has a specific implementation while `as c_char` would |
1ca3823aeefd
rust-cpython: add wrapper around decapsule_make_dirstate_tuple()
Yuya Nishihara <yuya@tcha.org>
parents:
42957
diff
changeset
|
63 // just do a naive enum cast. |
1ca3823aeefd
rust-cpython: add wrapper around decapsule_make_dirstate_tuple()
Yuya Nishihara <yuya@tcha.org>
parents:
42957
diff
changeset
|
64 let state_code: u8 = state.into(); |
43209
8b355cbef16d
rust-cpython: mark capsule function as unsafe
Yuya Nishihara <yuya@tcha.org>
parents:
43208
diff
changeset
|
65 |
43210
3fec5244aff1
rust-cpython: fix signature of make_dirstate_tuple()
Yuya Nishihara <yuya@tcha.org>
parents:
43209
diff
changeset
|
66 let maybe_obj = unsafe { |
43209
8b355cbef16d
rust-cpython: mark capsule function as unsafe
Yuya Nishihara <yuya@tcha.org>
parents:
43208
diff
changeset
|
67 let ptr = make(state_code as c_char, mode, size, mtime); |
43210
3fec5244aff1
rust-cpython: fix signature of make_dirstate_tuple()
Yuya Nishihara <yuya@tcha.org>
parents:
43209
diff
changeset
|
68 PyObject::from_owned_ptr_opt(py, ptr) |
3fec5244aff1
rust-cpython: fix signature of make_dirstate_tuple()
Yuya Nishihara <yuya@tcha.org>
parents:
43209
diff
changeset
|
69 }; |
3fec5244aff1
rust-cpython: fix signature of make_dirstate_tuple()
Yuya Nishihara <yuya@tcha.org>
parents:
43209
diff
changeset
|
70 maybe_obj.ok_or_else(|| PyErr::fetch(py)) |
43208
1ca3823aeefd
rust-cpython: add wrapper around decapsule_make_dirstate_tuple()
Yuya Nishihara <yuya@tcha.org>
parents:
42957
diff
changeset
|
71 } |
1ca3823aeefd
rust-cpython: add wrapper around decapsule_make_dirstate_tuple()
Yuya Nishihara <yuya@tcha.org>
parents:
42957
diff
changeset
|
72 |
42748
7cae6bc29ff9
rust-parsers: switch to parse/pack_dirstate to mutate-on-loop
Rapha?l Gom?s <rgomes@octobus.net>
parents:
42747
diff
changeset
|
73 pub fn extract_dirstate(py: Python, dmap: &PyDict) -> Result<StateMap, PyErr> { |
42537
ce94f9622acd
rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents:
42408
diff
changeset
|
74 dmap.items(py) |
42303
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
75 .iter() |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
76 .map(|(filename, stats)| { |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
77 let stats = stats.extract::<PySequence>(py)?; |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
78 let state = stats.get_item(py, 0)?.extract::<PyBytes>(py)?; |
46440
776b97179c06
rust: Remove DirstateParseError and ListDirstateTrackedFilesError
Simon Sapin <simon.sapin@octobus.net>
parents:
45517
diff
changeset
|
79 let state = |
776b97179c06
rust: Remove DirstateParseError and ListDirstateTrackedFilesError
Simon Sapin <simon.sapin@octobus.net>
parents:
45517
diff
changeset
|
80 EntryState::try_from(state.data(py)[0]).map_err(|e| { |
42749
7ceded4419a3
rust-dirstate: use EntryState enum instead of literals
Rapha?l Gom?s <rgomes@octobus.net>
parents:
42748
diff
changeset
|
81 PyErr::new::<exc::ValueError, _>(py, e.to_string()) |
46440
776b97179c06
rust: Remove DirstateParseError and ListDirstateTrackedFilesError
Simon Sapin <simon.sapin@octobus.net>
parents:
45517
diff
changeset
|
82 })?; |
42303
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
83 let mode = stats.get_item(py, 1)?.extract(py)?; |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
84 let size = stats.get_item(py, 2)?.extract(py)?; |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
85 let mtime = stats.get_item(py, 3)?.extract(py)?; |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
86 let filename = filename.extract::<PyBytes>(py)?; |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
87 let filename = filename.data(py); |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
88 Ok(( |
42957
7a01778bc7b7
rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Rapha?l Gom?s <rgomes@octobus.net>
parents:
42754
diff
changeset
|
89 HgPathBuf::from(filename.to_owned()), |
42303
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
90 DirstateEntry { |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
91 state, |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
92 mode, |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
93 size, |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
94 mtime, |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
95 }, |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
96 )) |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
97 }) |
42537
ce94f9622acd
rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents:
42408
diff
changeset
|
98 .collect() |
ce94f9622acd
rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents:
42408
diff
changeset
|
99 } |
ce94f9622acd
rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents:
42408
diff
changeset
|
100 |
42303
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
101 /// Create the module, with `__package__` given from parent |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
102 pub fn init_module(py: Python, package: &str) -> PyResult<PyModule> { |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
103 let dotted_name = &format!("{}.dirstate", package); |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
104 let m = PyModule::new(py, dotted_name)?; |
42537
ce94f9622acd
rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents:
42408
diff
changeset
|
105 |
45517
2a68a5ec8dd0
rust-cpython: switch logging facade from `simple_logger` to `env_logger`
Rapha?l Gom?s <rgomes@octobus.net>
parents:
44839
diff
changeset
|
106 env_logger::init(); |
44540
82f51ab7a2dd
rust: add logging utils
Rapha?l Gom?s <rgomes@octobus.net>
parents:
44529
diff
changeset
|
107 |
42303
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
108 m.add(py, "__package__", package)?; |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
109 m.add(py, "__doc__", "Dirstate - Rust implementation")?; |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
110 |
44529
f96b28aa4b79
rust-status: update rust-cpython bridge to account for the changes in core
Rapha?l Gom?s <rgomes@octobus.net>
parents:
44297
diff
changeset
|
111 m.add( |
f96b28aa4b79
rust-status: update rust-cpython bridge to account for the changes in core
Rapha?l Gom?s <rgomes@octobus.net>
parents:
44297
diff
changeset
|
112 py, |
f96b28aa4b79
rust-status: update rust-cpython bridge to account for the changes in core
Rapha?l Gom?s <rgomes@octobus.net>
parents:
44297
diff
changeset
|
113 "FallbackError", |
f96b28aa4b79
rust-status: update rust-cpython bridge to account for the changes in core
Rapha?l Gom?s <rgomes@octobus.net>
parents:
44297
diff
changeset
|
114 py.get_type::<exceptions::FallbackError>(), |
f96b28aa4b79
rust-status: update rust-cpython bridge to account for the changes in core
Rapha?l Gom?s <rgomes@octobus.net>
parents:
44297
diff
changeset
|
115 )?; |
42537
ce94f9622acd
rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents:
42408
diff
changeset
|
116 m.add_class::<Dirs>(py)?; |
42754
4e8f504424f3
rust-dirstate: rust-cpython bridge for dirstatemap
Rapha?l Gom?s <rgomes@octobus.net>
parents:
42749
diff
changeset
|
117 m.add_class::<DirstateMap>(py)?; |
43273
478d0b1bf0c5
rust-dirstate-status: rust-cpython bindings for `dirstate.status`
Rapha?l Gom?s <rgomes@octobus.net>
parents:
43213
diff
changeset
|
118 m.add( |
478d0b1bf0c5
rust-dirstate-status: rust-cpython bindings for `dirstate.status`
Rapha?l Gom?s <rgomes@octobus.net>
parents:
43213
diff
changeset
|
119 py, |
478d0b1bf0c5
rust-dirstate-status: rust-cpython bindings for `dirstate.status`
Rapha?l Gom?s <rgomes@octobus.net>
parents:
43213
diff
changeset
|
120 "status", |
478d0b1bf0c5
rust-dirstate-status: rust-cpython bindings for `dirstate.status`
Rapha?l Gom?s <rgomes@octobus.net>
parents:
43213
diff
changeset
|
121 py_fn!( |
478d0b1bf0c5
rust-dirstate-status: rust-cpython bindings for `dirstate.status`
Rapha?l Gom?s <rgomes@octobus.net>
parents:
43213
diff
changeset
|
122 py, |
478d0b1bf0c5
rust-dirstate-status: rust-cpython bindings for `dirstate.status`
Rapha?l Gom?s <rgomes@octobus.net>
parents:
43213
diff
changeset
|
123 status_wrapper( |
478d0b1bf0c5
rust-dirstate-status: rust-cpython bindings for `dirstate.status`
Rapha?l Gom?s <rgomes@octobus.net>
parents:
43213
diff
changeset
|
124 dmap: DirstateMap, |
478d0b1bf0c5
rust-dirstate-status: rust-cpython bindings for `dirstate.status`
Rapha?l Gom?s <rgomes@octobus.net>
parents:
43213
diff
changeset
|
125 root_dir: PyObject, |
43916
6a88ced33c40
rust-dirstate-status: update bridge for new rust version of `dirstate.status`
Rapha?l Gom?s <rgomes@octobus.net>
parents:
43456
diff
changeset
|
126 matcher: PyObject, |
44529
f96b28aa4b79
rust-status: update rust-cpython bridge to account for the changes in core
Rapha?l Gom?s <rgomes@octobus.net>
parents:
44297
diff
changeset
|
127 ignorefiles: PyList, |
f96b28aa4b79
rust-status: update rust-cpython bridge to account for the changes in core
Rapha?l Gom?s <rgomes@octobus.net>
parents:
44297
diff
changeset
|
128 check_exec: bool, |
43273
478d0b1bf0c5
rust-dirstate-status: rust-cpython bindings for `dirstate.status`
Rapha?l Gom?s <rgomes@octobus.net>
parents:
43213
diff
changeset
|
129 last_normal_time: i64, |
44529
f96b28aa4b79
rust-status: update rust-cpython bridge to account for the changes in core
Rapha?l Gom?s <rgomes@octobus.net>
parents:
44297
diff
changeset
|
130 list_clean: bool, |
f96b28aa4b79
rust-status: update rust-cpython bridge to account for the changes in core
Rapha?l Gom?s <rgomes@octobus.net>
parents:
44297
diff
changeset
|
131 list_ignored: bool, |
44839
01afda7e7d6c
rust-hg-cpython: update status bridge with the new `traversedir` support
Rapha?l Gom?s <rgomes@octobus.net>
parents:
44540
diff
changeset
|
132 list_unknown: bool, |
01afda7e7d6c
rust-hg-cpython: update status bridge with the new `traversedir` support
Rapha?l Gom?s <rgomes@octobus.net>
parents:
44540
diff
changeset
|
133 collect_traversed_dirs: bool |
43273
478d0b1bf0c5
rust-dirstate-status: rust-cpython bindings for `dirstate.status`
Rapha?l Gom?s <rgomes@octobus.net>
parents:
43213
diff
changeset
|
134 ) |
478d0b1bf0c5
rust-dirstate-status: rust-cpython bindings for `dirstate.status`
Rapha?l Gom?s <rgomes@octobus.net>
parents:
43213
diff
changeset
|
135 ), |
478d0b1bf0c5
rust-dirstate-status: rust-cpython bindings for `dirstate.status`
Rapha?l Gom?s <rgomes@octobus.net>
parents:
43213
diff
changeset
|
136 )?; |
42537
ce94f9622acd
rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents:
42408
diff
changeset
|
137 |
42303
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
138 let sys = PyModule::import(py, "sys")?; |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
139 let sys_modules: PyDict = sys.get(py, "modules")?.extract(py)?; |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
140 sys_modules.set_item(py, dotted_name, &m)?; |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
141 |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
142 Ok(m) |
e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff
changeset
|
143 } |