lindera/
lib.rs

1pub mod dictionary;
2pub mod error;
3pub mod metadata;
4pub mod mode;
5pub mod schema;
6pub mod tokenizer;
7#[cfg(feature = "train")]
8pub mod trainer;
9pub mod util;
10
11use pyo3::prelude::*;
12
13use crate::dictionary::{PyDictionary, PyUserDictionary};
14use crate::error::PyLinderaError;
15use crate::metadata::{PyCompressionAlgorithm, PyMetadata};
16use crate::mode::{PyMode, PyPenalty};
17use crate::schema::{PyFieldDefinition, PyFieldType, PySchema};
18use crate::tokenizer::{PyTokenizer, PyTokenizerBuilder};
19
20#[pyfunction]
21pub fn version() -> String {
22    env!("CARGO_PKG_VERSION").to_string()
23}
24
25#[pymodule]
26fn lindera(module: &Bound<'_, PyModule>) -> PyResult<()> {
27    module.add_class::<PyDictionary>()?;
28    module.add_class::<PyUserDictionary>()?;
29    module.add_class::<PyTokenizerBuilder>()?;
30    module.add_class::<PyTokenizer>()?;
31    module.add_class::<PyLinderaError>()?;
32    module.add_class::<PyMode>()?;
33    module.add_class::<PyPenalty>()?;
34    module.add_class::<PyMetadata>()?;
35    module.add_class::<PySchema>()?;
36    module.add_class::<PyFieldDefinition>()?;
37    module.add_class::<PyFieldType>()?;
38    module.add_class::<PyCompressionAlgorithm>()?;
39
40    // Dictionary functions
41    module.add_function(wrap_pyfunction!(
42        crate::dictionary::build_dictionary,
43        module
44    )?)?;
45    module.add_function(wrap_pyfunction!(
46        crate::dictionary::build_user_dictionary,
47        module
48    )?)?;
49    module.add_function(wrap_pyfunction!(
50        crate::dictionary::load_dictionary,
51        module
52    )?)?;
53    module.add_function(wrap_pyfunction!(
54        crate::dictionary::load_user_dictionary,
55        module
56    )?)?;
57
58    // Trainer functions
59    #[cfg(feature = "train")]
60    module.add_function(wrap_pyfunction!(crate::trainer::train, module)?)?;
61    #[cfg(feature = "train")]
62    module.add_function(wrap_pyfunction!(crate::trainer::export, module)?)?;
63
64    module.add_function(wrap_pyfunction!(version, module)?)?;
65    Ok(())
66}