Parker Solar Probe (PSP)


validate

 validate (instrument, datatype=None, var_names=None, **kwargs)

validate the input arguments and return the correct ones

import polars as pl
import pyspedas

from functools import partial
from space_analysis.io.cdf import cdf2pl
from typing import overload
def download_data(**kwargs):
    return pyspedas.psp.load(downloadonly=True, **kwargs)


@overload
def load(
    instrument: Literal["fields"],
    var_names: list[MagDataVars],
    datatype: Literal["mag_rtn"],
    level: Literal["l2"],
    **kwargs,
): ...


@overload
def load(
    instrument: Literal["spi"],
    var_names: list[SPIDataVars],
    datatype: Literal["sf00_l3_mom"],
    level: Literal["l3"],
    **kwargs,
): ...


def load(instrument="fields", var_names=None, datatype=None, **kwargs) -> pl.LazyFrame:
    var_names, datatype = validate(instrument, datatype, var_names, **kwargs)

    files = download_data(instrument=instrument, datatype=datatype, **kwargs)

    load_func = partial(cdf2pl, var_names=var_names)

    return pl.concat(load_func(file) for file in files)