pub mod core;
#[cfg(feature = "python")]
mod python;
pub use core::{
AddedToken, AddedTokenSet, ByteFallback, SentencePieceError, SentencePieceTokenizer, SpmError,
SpmPrefixScheme, SpmTokenizer, StreamingDecoder, Tokenize, TokenizeError, Tokenizer,
TokenizerError, WordPieceError, WordPieceTokenizer, CL100K_BASE_PATTERN, DEEPSEEK_V3_PATTERNS,
GPT2_PATTERN, LLAMA3_PATTERN, MISTRAL_V3_PATTERN, NO_SPLIT_PATTERN, O200K_BASE_PATTERN,
QWEN2_PATTERN, SENTENCEPIECE_PATTERN,
};
pub use core::pretrained;
pub use core::whisper;
pub use core::{
base_vocab_size, base_vocab_size_by_name, 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,
patterns, special_tokens, uses_byte_level, PretrainedVocab,
};
pub use core::{whisper_special_tokens, WhisperVariant};
pub use core::{
from_gguf_vocab, from_json_bytes, from_json_path, AnyTokenizer, Backend, GgufVocab,
GgufVocabError, HfJsonError, PolicyError, SpecialDecode, SpecialMode, SpecialPolicy,
};
pub use core::{NormOp, Normalizer, Precompiled};
pub use core::{PreTokStage, PreTokenizer, SplitBehavior, SplitPattern};
pub use rustc_hash::FxHashMap;
pub use rustc_hash::FxHashSet;
#[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::PySpmTokenizer>()?;
m.add_class::<python::PyWordPieceTokenizer>()?;
m.add_class::<python::PyAnyTokenizer>()?;
m.add_class::<python::PyStreamingDecoder>()?;
m.add_function(wrap_pyfunction!(python::from_json, m)?)?;
m.add_function(wrap_pyfunction!(python::from_json_bytes, m)?)?;
m.add_function(wrap_pyfunction!(python::base_vocab_size, m)?)?;
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)?;
m.add("HAS_PCRE2", cfg!(feature = "pcre2"))?;
Ok(())
}