Path: blob/main/crates/polars-lazy/src/scan/anonymous_scan.rs
6939 views
use polars_core::prelude::*;1use polars_io::{HiveOptions, RowIndex};2use polars_utils::slice_enum::Slice;34use crate::prelude::*;56#[derive(Clone)]7pub struct ScanArgsAnonymous {8pub infer_schema_length: Option<usize>,9pub schema: Option<SchemaRef>,10pub skip_rows: Option<usize>,11pub n_rows: Option<usize>,12pub row_index: Option<RowIndex>,13pub name: &'static str,14}1516impl Default for ScanArgsAnonymous {17fn default() -> Self {18Self {19infer_schema_length: None,20skip_rows: None,21n_rows: None,22schema: None,23row_index: None,24name: "ANONYMOUS SCAN",25}26}27}28impl LazyFrame {29pub fn anonymous_scan(30function: Arc<dyn AnonymousScan>,31args: ScanArgsAnonymous,32) -> PolarsResult<Self> {33let schema = match args.schema {34Some(s) => s,35None => function.schema(args.infer_schema_length)?,36};3738let mut lf: LazyFrame = DslBuilder::anonymous_scan(39function,40AnonymousScanOptions {41skip_rows: args.skip_rows,42fmt_str: args.name,43},44UnifiedScanArgs {45schema: Some(schema),46cloud_options: None,47hive_options: HiveOptions::new_disabled(),48rechunk: false,49cache: false,50glob: false,51projection: None,52column_mapping: None,53default_values: None,54row_index: None,55pre_slice: args.n_rows.map(|len| Slice::Positive { offset: 0, len }),56cast_columns_policy: CastColumnsPolicy::ERROR_ON_MISMATCH,57missing_columns_policy: MissingColumnsPolicy::Raise,58extra_columns_policy: ExtraColumnsPolicy::Raise,59include_file_paths: None,60deletion_files: None,61},62)?63.build()64.into();6566if let Some(rc) = args.row_index {67lf = lf.with_row_index(rc.name.clone(), Some(rc.offset))68};6970Ok(lf)71}72}737475