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 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 #[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}