##// END OF EJS Templates
py3: decode username and password before SMTP login...
py3: decode username and password before SMTP login smtplib.SMTP.login() requires str on Python 3. For 'password', we only need to decode when value comes from config as getpass() returns the correct type already.

File last commit:

r43087:6a551a2d default
r43442:9145abd8 default
Show More
lib.rs
73 lines | 2.0 KiB | application/rls-services+xml | RustLexer
Georges Racinet
rust-cpython: start cpython crate bindings...
r41001 // lib.rs
//
// 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.
//! Python bindings of `hg-core` objects using the `cpython` crate.
//! Once compiled, the resulting single shared library object can be placed in
//! the `mercurial` package directly as `rustext.so` or `rustext.dll`.
//! It holds several modules, so that from the point of view of Python,
//! it behaves as the `cext` package.
//!
//! Example:
Georges Racinet
rust-cpython: rustdoc improvements...
r41220 //!
//! ```text
Georges Racinet
rust-cpython: start cpython crate bindings...
r41001 //! >>> from mercurial.rustext import ancestor
//! >>> ancestor.__doc__
//! 'Generic DAG ancestor algorithms - Rust implementation'
//! ```
Raphaël Gomès
rust: switch hg-core and hg-cpython to rust 2018 edition...
r42828 /// This crate uses nested private macros, `extern crate` is still needed in
/// 2018 edition.
Georges Racinet
rust-cpython: start cpython crate bindings...
r41001 #[macro_use]
extern crate cpython;
Georges Racinet
rust-cpython: rustdoc improvements...
r41220 pub mod ancestors;
Georges Racinet
rust-cpython: implement Graph using C parents function...
r41082 mod cindex;
Georges Racinet
rust-cpython: moved generic conversion fn out of ancestors module...
r41276 mod conversion;
Raphaël Gomès
rust-cpython: add macro for sharing references...
r42997 #[macro_use]
pub mod ref_sharing;
Georges Racinet
rust-cpython: binding for headrevs()...
r41843 pub mod dagops;
Raphaël Gomès
rust: run rfmt on all hg-core/hg-cpython code...
r42760 pub mod dirstate;
Georges Racinet
rust-discovery: cpython bindings for the core logic...
r42356 pub mod discovery;
Georges Racinet
rust-cpython: rustdoc improvements...
r41220 pub mod exceptions;
Raphaël Gomès
rust-filepatterns: add `rust-cpython` bindings for `filepatterns`...
r42515 pub mod filepatterns;
Raphaël Gomès
rust: run cargo fmt
r43087 pub mod parsers;
Georges Racinet
rust-cpython: start cpython crate bindings...
r41001
py_module_initializer!(rustext, initrustext, PyInit_rustext, |py, m| {
m.add(
py,
"__doc__",
"Mercurial core concepts - Rust implementation",
)?;
let dotted_name: String = m.get(py, "__name__")?.extract(py)?;
m.add(py, "ancestor", ancestors::init_module(py, &dotted_name)?)?;
Georges Racinet
rust-cpython: binding for headrevs()...
r41843 m.add(py, "dagop", dagops::init_module(py, &dotted_name)?)?;
Georges Racinet
rust-discovery: cpython bindings for the core logic...
r42356 m.add(py, "discovery", discovery::init_module(py, &dotted_name)?)?;
Raphaël Gomès
rust-dirstate: add rust-cpython bindings to the new parse/pack functions...
r42489 m.add(py, "dirstate", dirstate::init_module(py, &dotted_name)?)?;
Raphaël Gomès
rust: run rfmt on all hg-core/hg-cpython code...
r42760 m.add(
py,
"filepatterns",
filepatterns::init_module(py, &dotted_name)?,
)?;
Raphaël Gomès
rust-parsers: move parser bindings to their own file and Python module...
r42992 m.add(
py,
"parsers",
parsers::init_parsers_module(py, &dotted_name)?,
)?;
Georges Racinet
rust-cpython: start cpython crate bindings...
r41001 m.add(py, "GraphError", py.get_type::<exceptions::GraphError>())?;
Raphaël Gomès
rust: run rfmt on all hg-core/hg-cpython code...
r42760 m.add(
py,
"PatternFileError",
py.get_type::<exceptions::PatternFileError>(),
)?;
m.add(
py,
"PatternError",
py.get_type::<exceptions::PatternError>(),
)?;
Georges Racinet
rust-cpython: start cpython crate bindings...
r41001 Ok(())
});