mirror of
https://github.com/lancedb/lancedb.git
synced 2026-01-12 06:42:56 +00:00
I've also started `ASYNC_MIGRATION.MD` to keep track of the breaking changes from sync to async python.
35 lines
801 B
Rust
35 lines
801 B
Rust
use std::sync::Arc;
|
|
|
|
use arrow::pyarrow::ToPyArrow;
|
|
use lancedb::table::Table as LanceTable;
|
|
use pyo3::{pyclass, pymethods, PyAny, PyRef, PyResult, Python};
|
|
use pyo3_asyncio::tokio::future_into_py;
|
|
|
|
use crate::error::PythonErrorExt;
|
|
|
|
#[pyclass]
|
|
pub struct Table {
|
|
inner: Arc<dyn LanceTable>,
|
|
}
|
|
|
|
impl Table {
|
|
pub(crate) fn new(inner: Arc<dyn LanceTable>) -> Self {
|
|
Self { inner }
|
|
}
|
|
}
|
|
|
|
#[pymethods]
|
|
impl Table {
|
|
pub fn name(&self) -> String {
|
|
self.inner.name().to_string()
|
|
}
|
|
|
|
pub fn schema(self_: PyRef<'_, Self>) -> PyResult<&PyAny> {
|
|
let inner = self_.inner.clone();
|
|
future_into_py(self_.py(), async move {
|
|
let schema = inner.schema().await.infer_error()?;
|
|
Python::with_gil(|py| schema.to_pyarrow(py))
|
|
})
|
|
}
|
|
}
|