##// END OF EJS Templates
py3: source-transform only call-sites of iteritems(), not definitions...
py3: source-transform only call-sites of iteritems(), not definitions branchmap.branchcache, among other classes, defines a iteritems(). That currently gets replaced by items() by the source transformer. That makes it harder for extensions to work with both py2 and py3, since they have to call either items() or iteritems() on branchcache. Let's not replace definitions of iteritems() (and itervalues()) and only replace the call-sites. We need to also add an items() alias to branchcache (etc) so our transformer call-sites will find it. Differential Revision: https://phab.mercurial-scm.org/D6641

File last commit:

r42736:2dcee649 default
r42809:3018749a default
Show More
lib.rs
111 lines | 2.8 KiB | application/rls-services+xml | RustLexer
Georges Racinet
rust: pure Rust lazyancestors iterator...
r40307 // Copyright 2018 Georges Racinet <gracinet@anybox.fr>
//
// This software may be used and distributed according to the terms of the
// GNU General Public License version 2 or any later version.
Raphaël Gomès
rust-dirstate: add rust implementation of `parse_dirstate` and `pack_dirstate`...
r42488 extern crate byteorder;
extern crate memchr;
Raphaël Gomès
rust-filepatterns: add a Rust implementation of pattern-related utils...
r42514 #[macro_use]
extern crate lazy_static;
extern crate regex;
Raphaël Gomès
rust-dirstate: add rust implementation of `parse_dirstate` and `pack_dirstate`...
r42488
Georges Racinet
rust: pure Rust lazyancestors iterator...
r40307 mod ancestors;
Georges Racinet on ishtar.racinet.fr
rust: dagop.headrevs() Rust counterparts...
r41278 pub mod dagops;
Georges Racinet
rust: core implementation for lazyancestors...
r41084 pub use ancestors::{AncestorsIterator, LazyAncestors, MissingAncestors};
Raphaël Gomès
rust-dirstate: add rust-cpython bindings to the new parse/pack functions...
r42489 mod dirstate;
Georges Racinet
rust-discovery: starting core implementation...
r42355 pub mod discovery;
Raphaël Gomès
rust-dirstate: add rust-cpython bindings to the new parse/pack functions...
r42489 pub mod testing; // unconditionally built, for use from integration tests
pub use dirstate::{
Raphaël Gomès
rust-dirstate: add "dirs" Rust implementation...
r42736 dirs_multiset::DirsMultiset,
Raphaël Gomès
rust-dirstate: create dirstate submodule...
r42617 parsers::{pack_dirstate, parse_dirstate},
Raphaël Gomès
rust-dirstate: add "dirs" Rust implementation...
r42736 CopyVec, CopyVecEntry, DirsIterable, DirstateEntry, DirstateParents,
DirstateVec,
Raphaël Gomès
rust-dirstate: add rust-cpython bindings to the new parse/pack functions...
r42489 };
Raphaël Gomès
rust-filepatterns: add a Rust implementation of pattern-related utils...
r42514 mod filepatterns;
Raphaël Gomès
rust-filepatterns: use bytes instead of String...
r42630 mod utils;
Raphaël Gomès
rust-filepatterns: add a Rust implementation of pattern-related utils...
r42514
pub use filepatterns::{
build_single_regex, read_pattern_file, PatternSyntax, PatternTuple,
};
Georges Racinet
rust: pure Rust lazyancestors iterator...
r40307
/// Mercurial revision numbers
///
/// As noted in revlog.c, revision numbers are actually encoded in
/// 4 bytes, and are liberally converted to ints, whence the i32
pub type Revision = i32;
Georges Racinet
rust: itering less on MissingAncestors.bases for max()...
r41866 /// Marker expressing the absence of a parent
///
/// Independently of the actual representation, `NULL_REVISION` is guaranteed
/// to be smaller that all existing revisions.
Georges Racinet
rust: pure Rust lazyancestors iterator...
r40307 pub const NULL_REVISION: Revision = -1;
Georges Racinet
rust: working directory revision number constant...
r41384 /// Same as `mercurial.node.wdirrev`
///
/// This is also equal to `i32::max_value()`, but it's better to spell
/// it out explicitely, same as in `mercurial.node`
pub const WORKING_DIRECTORY_REVISION: Revision = 0x7fffffff;
Georges Racinet
rust: pure Rust lazyancestors iterator...
r40307 /// The simplest expression of what we need of Mercurial DAGs.
pub trait Graph {
Georges Racinet
rust: translation of missingancestors...
r40995 /// Return the two parents of the given `Revision`.
///
/// Each of the parents can be independently `NULL_REVISION`
Georges Racinet
rust: changed Graph.parents to return [Revision; 2]...
r40969 fn parents(&self, Revision) -> Result<[Revision; 2], GraphError>;
Georges Racinet
rust: pure Rust lazyancestors iterator...
r40307 }
Raphaël Gomès
rust-filepatterns: add a Rust implementation of pattern-related utils...
r42514 pub type LineNumber = usize;
Georges Racinet
rust: pure Rust lazyancestors iterator...
r40307 #[derive(Clone, Debug, PartialEq)]
pub enum GraphError {
ParentOutOfRange(Revision),
Georges Racinet
rust: error for WdirUnsupported with cpython conversion as exception...
r41385 WorkingDirectoryUnsupported,
Georges Racinet
rust: pure Rust lazyancestors iterator...
r40307 }
Raphaël Gomès
rust-dirstate: add rust implementation of `parse_dirstate` and `pack_dirstate`...
r42488
#[derive(Clone, Debug, PartialEq)]
pub enum DirstateParseError {
TooLittleData,
Overflow,
CorruptedEntry(String),
}
#[derive(Debug, PartialEq)]
pub enum DirstatePackError {
CorruptedEntry(String),
CorruptedParent,
BadSize(usize, usize),
}
Raphaël Gomès
rust-dirstate: add "dirs" Rust implementation...
r42736 #[derive(Debug, PartialEq)]
pub enum DirstateMapError {
PathNotFound(Vec<u8>),
EmptyPath,
}
Raphaël Gomès
rust-dirstate: add rust implementation of `parse_dirstate` and `pack_dirstate`...
r42488 impl From<std::io::Error> for DirstatePackError {
fn from(e: std::io::Error) -> Self {
DirstatePackError::CorruptedEntry(e.to_string())
}
}
impl From<std::io::Error> for DirstateParseError {
fn from(e: std::io::Error) -> Self {
DirstateParseError::CorruptedEntry(e.to_string())
}
}
Raphaël Gomès
rust-filepatterns: add a Rust implementation of pattern-related utils...
r42514
#[derive(Debug)]
pub enum PatternError {
UnsupportedSyntax(String),
}
#[derive(Debug)]
pub enum PatternFileError {
IO(std::io::Error),
Pattern(PatternError, LineNumber),
}
impl From<std::io::Error> for PatternFileError {
fn from(e: std::io::Error) -> Self {
PatternFileError::IO(e)
}
}