Sha256: 059d5657d7af26887d1e0f618f06ccf8ceb742a42a5a7deda9785ca9645a51dd

Contents?: true

Size: 1.12 KB

Versions: 2

Compression:

Stored size: 1.12 KB

Contents

use magnus::{RHash, Value};

use crate::conversion::Wrap;
use crate::file::get_file_like;
use crate::prelude::DataType;
use crate::{RbPolarsErr, RbResult};

pub fn read_ipc_schema(rb_f: Value) -> RbResult<Value> {
    use polars_core::export::arrow::io::ipc::read::read_file_metadata;
    let mut r = get_file_like(rb_f, false)?;
    let metadata = read_file_metadata(&mut r).map_err(RbPolarsErr::arrow)?;

    let dict = RHash::new();
    for field in metadata.schema.fields {
        let dt: Wrap<DataType> = Wrap((&field.data_type).into());
        dict.aset(field.name, dt)?;
    }
    Ok(dict.into())
}

pub fn read_parquet_schema(rb_f: Value) -> RbResult<Value> {
    use polars_core::export::arrow::io::parquet::read::{infer_schema, read_metadata};

    let mut r = get_file_like(rb_f, false)?;
    let metadata = read_metadata(&mut r).map_err(RbPolarsErr::arrow)?;
    let arrow_schema = infer_schema(&metadata).map_err(RbPolarsErr::arrow)?;

    let dict = RHash::new();
    for field in arrow_schema.fields {
        let dt: Wrap<DataType> = Wrap((&field.data_type).into());
        dict.aset(field.name, dt)?;
    }
    Ok(dict.into())
}

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
polars-df-0.6.0 ext/polars/src/functions/io.rs
polars-df-0.5.0 ext/polars/src/functions/io.rs