-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathlib.rs
More file actions
37 lines (34 loc) · 1.3 KB
/
lib.rs
File metadata and controls
37 lines (34 loc) · 1.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
use pyo3::prelude::*;
mod types;
mod utils;
use crate::types::{
CalamineError, CalamineFormulaIterator, CalamineSheet, CalamineWorkbook, CellValue, Error,
PasswordError, SheetMetadata, SheetTypeEnum, SheetVisibleEnum, WorkbookClosed,
WorksheetNotFound, XmlError, ZipError,
};
#[pyfunction]
#[pyo3(signature = (path_or_filelike, read_formulas=false))]
fn load_workbook(
py: Python,
path_or_filelike: Py<PyAny>,
read_formulas: bool,
) -> PyResult<CalamineWorkbook> {
CalamineWorkbook::from_object(py, path_or_filelike, read_formulas)
}
#[pymodule(gil_used = false)]
fn _python_calamine(py: Python, m: &Bound<'_, PyModule>) -> PyResult<()> {
m.add_function(wrap_pyfunction!(load_workbook, m)?)?;
m.add_class::<CalamineWorkbook>()?;
m.add_class::<CalamineSheet>()?;
m.add_class::<CalamineFormulaIterator>()?;
m.add_class::<SheetMetadata>()?;
m.add_class::<SheetTypeEnum>()?;
m.add_class::<SheetVisibleEnum>()?;
m.add("CalamineError", py.get_type::<CalamineError>())?;
m.add("PasswordError", py.get_type::<PasswordError>())?;
m.add("WorksheetNotFound", py.get_type::<WorksheetNotFound>())?;
m.add("XmlError", py.get_type::<XmlError>())?;
m.add("ZipError", py.get_type::<ZipError>())?;
m.add("WorkbookClosed", py.get_type::<WorkbookClosed>())?;
Ok(())
}