pub mod core;
#[cfg(feature = "python")]
mod python;
pub use core::{
ByteLevelStreamingDecoder, SentencePieceError, SentencePieceTokenizer, StreamingDecoder,
Tokenize, TokenizeError, Tokenizer, TokenizerError, WordPieceTokenizer, CL100K_BASE_PATTERN,
LLAMA3_PATTERN, O200K_BASE_PATTERN, SENTENCEPIECE_PATTERN,
};
pub use core::pretrained;
pub use core::{
bos_token_id, bos_token_id_by_name, cl100k_base_special_tokens, deepseek_v3_special_tokens,
eos_token_id, eos_token_id_by_name, from_pretrained, from_vocab, llama3_special_tokens,
o200k_base_special_tokens, pad_token_id, pattern, special_tokens, uses_byte_level,
PretrainedVocab,
};
#[cfg(feature = "python")]
use pyo3::prelude::*;
#[cfg(feature = "python")]
#[pymodule]
fn _core(m: &Bound<'_, PyModule>) -> PyResult<()> {
m.add_class::<python::PyTokenizer>()?;
m.add_class::<python::PySentencePieceTokenizer>()?;
m.add_class::<python::PyStreamingDecoder>()?;
m.add_class::<python::PyByteLevelStreamingDecoder>()?;
python::register_agent_tokens(m)?;
m.add("CL100K_BASE_PATTERN", CL100K_BASE_PATTERN)?;
m.add("O200K_BASE_PATTERN", O200K_BASE_PATTERN)?;
m.add("LLAMA3_PATTERN", LLAMA3_PATTERN)?;
Ok(())
}