Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pola-rs
GitHub Repository: pola-rs/polars
Path: blob/main/crates/polars-stream/src/nodes/io_sources/ndjson/builder.rs
6939 views
1
use std::sync::Arc;
2
3
use polars_core::config;
4
use polars_io::cloud::CloudOptions;
5
use polars_plan::dsl::ScanSource;
6
7
use super::{FileReader, NDJsonFileReader};
8
use crate::nodes::io_sources::multi_scan::reader_interface::builder::FileReaderBuilder;
9
use crate::nodes::io_sources::multi_scan::reader_interface::capabilities::ReaderCapabilities;
10
11
#[cfg(feature = "json")]
12
impl FileReaderBuilder for Arc<polars_plan::dsl::NDJsonReadOptions> {
13
fn reader_name(&self) -> &str {
14
"ndjson"
15
}
16
17
fn reader_capabilities(&self) -> ReaderCapabilities {
18
use ReaderCapabilities as RC;
19
20
RC::NEEDS_FILE_CACHE_INIT | RC::ROW_INDEX | RC::PRE_SLICE | RC::NEGATIVE_PRE_SLICE
21
}
22
23
fn build_file_reader(
24
&self,
25
source: ScanSource,
26
cloud_options: Option<Arc<CloudOptions>>,
27
_scan_source_idx: usize,
28
) -> Box<dyn FileReader> {
29
let scan_source = source;
30
let options = self.clone();
31
let verbose = config::verbose();
32
33
let reader = NDJsonFileReader {
34
scan_source,
35
cloud_options,
36
options,
37
cached_bytes: None,
38
verbose,
39
};
40
41
Box::new(reader) as Box<dyn FileReader>
42
}
43
}
44
45