rust/hg-pyo3/src/lib.rs
author Pierre-Yves David <pierre-yves.david@octobus.net>
Tue, 18 Feb 2025 22:24:08 +0100
changeset 52964 469b9a628b51
parent 52858 c60f69556924
child 52979 a39680ec3e76
permissions -rw-r--r--
dirstatemap: update, document and type the identity tracking This new form should hopefully be clearer and less error prone.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
52402
6673cec8605c rust: add PyO3 based Rust extension module
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
     1
use pyo3::prelude::*;
6673cec8605c rust: add PyO3 based Rust extension module
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
     2
52531
4c9e31984b3a rust-pyo3: exposition of AncestorsIterator
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52411
diff changeset
     3
mod ancestors;
52407
c5128c541021 rust-pyo3: facility for submodule registration, using it for dagop
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52403
diff changeset
     4
mod dagops;
52849
d0c0ad938eb9 rust-pyo3-dirstate: module definition
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52841
diff changeset
     5
mod dirstate;
52837
01aff9437828 rust-pyo3: translate discovery module from hg-cpython
Rapha?l Gom?s <rgomes@octobus.net>
parents: 52827
diff changeset
     6
mod discovery;
52408
20c0472b2ab7 rust-pyo3: defining GraphError
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52407
diff changeset
     7
mod exceptions;
52785
71ebe880f24a hg-pyo3-revlog: Node conversion utilities
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52776
diff changeset
     8
mod node;
52858
c60f69556924 rust-pyo3: new module for conversions of HgPath and friends
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52849
diff changeset
     9
mod path;
52409
a642c0a3860f rust-pyo3: conversion helpers for Revision objects
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52408
diff changeset
    10
mod revision;
52775
264047bf4b9b rust-pyo3-revlog: new Python and Rust module
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52774
diff changeset
    11
mod revlog;
52841
28f0f00b5dbd rust-pyo3: rename the `util` file to `utils`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 52839
diff changeset
    12
mod store;
52827
50c0c74ca266 rust-pyo3: add a transaction module
Rapha?l Gom?s <rgomes@octobus.net>
parents: 52785
diff changeset
    13
mod transaction;
52841
28f0f00b5dbd rust-pyo3: rename the `util` file to `utils`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 52839
diff changeset
    14
mod utils;
52407
c5128c541021 rust-pyo3: facility for submodule registration, using it for dagop
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52403
diff changeset
    15
52402
6673cec8605c rust: add PyO3 based Rust extension module
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
    16
#[pymodule]
52407
c5128c541021 rust-pyo3: facility for submodule registration, using it for dagop
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52403
diff changeset
    17
fn pyo3_rustext(py: Python<'_>, m: &Bound<'_, PyModule>) -> PyResult<()> {
52774
0f9ed7e7a71b rust-pyo3: make mercurial.pyo3_rustext a proper package
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52531
diff changeset
    18
    m.add("__package__", "mercurial")?;
52407
c5128c541021 rust-pyo3: facility for submodule registration, using it for dagop
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52403
diff changeset
    19
    m.add(
c5128c541021 rust-pyo3: facility for submodule registration, using it for dagop
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52403
diff changeset
    20
        "__doc__",
c5128c541021 rust-pyo3: facility for submodule registration, using it for dagop
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52403
diff changeset
    21
        "Mercurial core concepts - Rust implementation exposed via PyO3",
c5128c541021 rust-pyo3: facility for submodule registration, using it for dagop
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52403
diff changeset
    22
    )?;
52774
0f9ed7e7a71b rust-pyo3: make mercurial.pyo3_rustext a proper package
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52531
diff changeset
    23
    let dotted_name: String = m.getattr("__name__")?.extract()?;
52775
264047bf4b9b rust-pyo3-revlog: new Python and Rust module
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52774
diff changeset
    24
    env_logger::init();
52407
c5128c541021 rust-pyo3: facility for submodule registration, using it for dagop
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52403
diff changeset
    25
52531
4c9e31984b3a rust-pyo3: exposition of AncestorsIterator
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52411
diff changeset
    26
    m.add_submodule(&ancestors::init_module(py, &dotted_name)?)?;
52407
c5128c541021 rust-pyo3: facility for submodule registration, using it for dagop
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52403
diff changeset
    27
    m.add_submodule(&dagops::init_module(py, &dotted_name)?)?;
52849
d0c0ad938eb9 rust-pyo3-dirstate: module definition
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52841
diff changeset
    28
    m.add_submodule(&dirstate::init_module(py, &dotted_name)?)?;
52837
01aff9437828 rust-pyo3: translate discovery module from hg-cpython
Rapha?l Gom?s <rgomes@octobus.net>
parents: 52827
diff changeset
    29
    m.add_submodule(&discovery::init_module(py, &dotted_name)?)?;
52775
264047bf4b9b rust-pyo3-revlog: new Python and Rust module
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52774
diff changeset
    30
    m.add_submodule(&revlog::init_module(py, &dotted_name)?)?;
52408
20c0472b2ab7 rust-pyo3: defining GraphError
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52407
diff changeset
    31
    m.add("GraphError", py.get_type::<exceptions::GraphError>())?;
52402
6673cec8605c rust: add PyO3 based Rust extension module
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
    32
    Ok(())
6673cec8605c rust: add PyO3 based Rust extension module
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
    33
}