mirror of
https://github.com/mii443/tokenizers.git
synced 2025-12-04 11:48:33 +00:00
Python - Update PyToken bindings
This commit is contained in:
@@ -1,36 +1,45 @@
|
|||||||
extern crate tokenizers as tk;
|
|
||||||
|
|
||||||
use pyo3::prelude::*;
|
use pyo3::prelude::*;
|
||||||
|
use tk::Token;
|
||||||
|
|
||||||
#[pyclass]
|
#[pyclass(module = "tokenizers", name=Token)]
|
||||||
#[repr(transparent)]
|
#[derive(Clone)]
|
||||||
pub struct Token {
|
pub struct PyToken {
|
||||||
tok: tk::tokenizer::Token,
|
token: Token,
|
||||||
}
|
}
|
||||||
impl Token {
|
impl From<Token> for PyToken {
|
||||||
pub fn _new(tok: tk::tokenizer::Token) -> Self {
|
fn from(token: Token) -> Self {
|
||||||
Token { tok }
|
Self { token }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
impl From<PyToken> for Token {
|
||||||
|
fn from(token: PyToken) -> Self {
|
||||||
|
token.token
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[pymethods]
|
#[pymethods]
|
||||||
impl Token {
|
impl PyToken {
|
||||||
|
#[new]
|
||||||
|
fn new(id: u32, value: String, offsets: (usize, usize)) -> PyToken {
|
||||||
|
Token::new(id, value, offsets).into()
|
||||||
|
}
|
||||||
|
|
||||||
#[getter]
|
#[getter]
|
||||||
fn get_id(&self) -> PyResult<u32> {
|
fn get_id(&self) -> PyResult<u32> {
|
||||||
Ok(self.tok.id)
|
Ok(self.token.id)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[getter]
|
#[getter]
|
||||||
fn get_value(&self) -> PyResult<&str> {
|
fn get_value(&self) -> PyResult<&str> {
|
||||||
Ok(&self.tok.value)
|
Ok(&self.token.value)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[getter]
|
#[getter]
|
||||||
fn get_offsets(&self) -> PyResult<(usize, usize)> {
|
fn get_offsets(&self) -> PyResult<(usize, usize)> {
|
||||||
Ok(self.tok.offsets)
|
Ok(self.token.offsets)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn as_tuple(&self) -> PyResult<(u32, &str, (usize, usize))> {
|
fn as_tuple(&self) -> PyResult<(u32, &str, (usize, usize))> {
|
||||||
Ok((self.tok.id, &self.tok.value, self.tok.offsets))
|
Ok((self.token.id, &self.token.value, self.token.offsets))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user