From 10c9682b630c8325a6890e44f1722fb55b93c47b Mon Sep 17 00:00:00 2001 From: universalmind303 Date: Wed, 20 Mar 2024 12:59:17 -0500 Subject: [PATCH] fix: cjs compatibility (#187) * fix cjs compatibility * cleanup * fix datatype import --- __tests__/lazy_functions.test.ts | 2 +- polars/dataframe.ts | 1 + polars/index.ts | 169 ++++++++++++++++++++++++++----- 3 files changed, 143 insertions(+), 29 deletions(-) diff --git a/__tests__/lazy_functions.test.ts b/__tests__/lazy_functions.test.ts index 953696acb..ccf0409ee 100644 --- a/__tests__/lazy_functions.test.ts +++ b/__tests__/lazy_functions.test.ts @@ -1,4 +1,4 @@ -import pl, { DataType, col, cols, lit } from "@polars/index"; +import pl, { DataType, col, cols, lit } from "@polars"; import { df as _df } from "./setup"; describe("lazy functions", () => { diff --git a/polars/dataframe.ts b/polars/dataframe.ts index ba9913b60..90970fa62 100644 --- a/polars/dataframe.ts +++ b/polars/dataframe.ts @@ -2661,6 +2661,7 @@ export interface DataFrameConstructor extends Deserialize { ): DataFrame; isDataFrame(arg: any): arg is DataFrame; } + function DataFrameConstructor(data?, options?): DataFrame { if (!data) { return _DataFrame(objToDF({})); diff --git a/polars/index.ts b/polars/index.ts index 19dd8f1e5..4abd9caf1 100644 --- a/polars/index.ts +++ b/polars/index.ts @@ -1,14 +1,13 @@ import * as series from "./series"; import * as df from "./dataframe"; import { DataType, Field as _field } from "./datatypes"; +export { DataType } from "./datatypes"; import * as func from "./functions"; import * as io from "./io"; import * as cfg from "./cfg"; import * as ldf from "./lazy/dataframe"; import pli from "./internals/polars_internal"; -export { DataType, Field, TimeUnit } from "./datatypes"; export * from "./series"; -export { Expr } from "./lazy/expr"; export * from "./dataframe"; export * from "./functions"; export * from "./io"; @@ -18,9 +17,8 @@ export * from "./lazy"; import * as lazy from "./lazy"; export * from "./types"; import * as sql from "./sql"; -export type { SQLContext } from "./sql"; - export type { GroupBy } from "./groupby"; + export namespace pl { export import Expr = lazy.Expr; export import DataFrame = df.DataFrame; @@ -32,29 +30,6 @@ export namespace pl { export type ChainedWhen = lazy.ChainedWhen; export type ChainedThen = lazy.ChainedThen; export import Config = cfg.Config; - export import Int8 = DataType.Int8; - export import Int16 = DataType.Int16; - export import Int32 = DataType.Int32; - export import Int64 = DataType.Int64; - export import UInt8 = DataType.UInt8; - export import UInt16 = DataType.UInt16; - export import UInt32 = DataType.UInt32; - export import UInt64 = DataType.UInt64; - export import Float32 = DataType.Float32; - export import Float64 = DataType.Float64; - export import Bool = DataType.Bool; - export import Utf8 = DataType.Utf8; - // biome-ignore lint/suspicious/noShadowRestrictedNames: pl.String - export import String = DataType.String; - export import List = DataType.List; - // biome-ignore lint/suspicious/noShadowRestrictedNames: pl.Date - export import Date = DataType.Date; - export import Datetime = DataType.Datetime; - export import Time = DataType.Time; - // biome-ignore lint/suspicious/noShadowRestrictedNames: pl.Object - export import Object = DataType.Object; - export import Null = DataType.Null; - export import Struct = DataType.Struct; export import Categorical = DataType.Categorical; export import Field = _field; export import repeat = func.repeat; @@ -113,6 +88,30 @@ export namespace pl { export import when = lazy.when; export const version = pli.version(); + export import Int8 = DataType.Int8; + export import Int16 = DataType.Int16; + export import Int32 = DataType.Int32; + export import Int64 = DataType.Int64; + export import UInt8 = DataType.UInt8; + export import UInt16 = DataType.UInt16; + export import UInt32 = DataType.UInt32; + export import UInt64 = DataType.UInt64; + export import Float32 = DataType.Float32; + export import Float64 = DataType.Float64; + export import Bool = DataType.Bool; + export import Utf8 = DataType.Utf8; + // biome-ignore lint/suspicious/noShadowRestrictedNames: pl.String + export import String = DataType.String; + export import List = DataType.List; + // biome-ignore lint/suspicious/noShadowRestrictedNames: pl.Date + export import Date = DataType.Date; + export import Datetime = DataType.Datetime; + export import Time = DataType.Time; + // biome-ignore lint/suspicious/noShadowRestrictedNames: pl.Object + export import Object = DataType.Object; + export import Null = DataType.Null; + export import Struct = DataType.Struct; + /** * Run SQL queries against DataFrame/LazyFrame data. * @@ -126,5 +125,119 @@ export namespace pl { return new sql.SQLContext(frames); } } -// eslint-disable-next-line no-undef + export default pl; + +// ------ +// CommonJS compatibility. +// This allows the user to use any of the following +// `import * as pl from "nodejs-polars"` +// `import pl from "nodejs-polars"`. +// `const pl = require("nodejs-polars")`. +// `const { DataFrame, Series, } = require("nodejs-polars")`. +// ------ + +export import Expr = lazy.Expr; +export import DataFrame = df.DataFrame; +export import LazyDataFrame = ldf.LazyDataFrame; +export import Series = series.Series; +export type LazyGroupBy = lazy.LazyGroupBy; +export type When = lazy.When; +export type Then = lazy.Then; +export type ChainedWhen = lazy.ChainedWhen; +export type ChainedThen = lazy.ChainedThen; +export import Config = cfg.Config; +export import Categorical = DataType.Categorical; +export import Field = _field; +export import repeat = func.repeat; +export import concat = func.concat; + +// IO +export import scanCSV = io.scanCSV; +export import scanJson = io.scanJson; +export import scanIPC = io.scanIPC; +export import scanParquet = io.scanParquet; + +export import readRecords = io.readRecords; +export import readCSV = io.readCSV; +export import readIPC = io.readIPC; +export import readJSON = io.readJSON; +export import readParquet = io.readParquet; +export import readAvro = io.readAvro; + +export import readCSVStream = io.readCSVStream; +export import readJSONStream = io.readJSONStream; + +// lazy +export import col = lazy.col; +export import cols = lazy.cols; +export import lit = lazy.lit; +export import intRange = lazy.intRange; +export import intRanges = lazy.intRanges; +export import argSortBy = lazy.argSortBy; +export import avg = lazy.avg; +export import concatList = lazy.concatList; +export import concatString = lazy.concatString; +export import count = lazy.count; +export import cov = lazy.cov; +export import exclude = lazy.exclude; +export import element = lazy.element; +export import first = lazy.first; +export import format = lazy.format; +export import groups = lazy.groups; +export import head = lazy.head; +export import last = lazy.last; +export import mean = lazy.mean; +export import median = lazy.median; +export import nUnique = lazy.nUnique; +export import pearsonCorr = lazy.pearsonCorr; +export import quantile = lazy.quantile; +export import select = lazy.select; +export import struct = lazy.struct; +export import allHorizontal = lazy.allHorizontal; +export import anyHorizontal = lazy.anyHorizontal; +export import minHorizontal = lazy.minHorizontal; +export import maxHorizontal = lazy.maxHorizontal; +export import sumHorizontal = lazy.sumHorizontal; +export import spearmanRankCorr = lazy.spearmanRankCorr; +export import tail = lazy.tail; +export import list = lazy.list; +export import when = lazy.when; +export const version = pli.version(); + +export import Int8 = DataType.Int8; +export import Int16 = DataType.Int16; +export import Int32 = DataType.Int32; +export import Int64 = DataType.Int64; +export import UInt8 = DataType.UInt8; +export import UInt16 = DataType.UInt16; +export import UInt32 = DataType.UInt32; +export import UInt64 = DataType.UInt64; +export import Float32 = DataType.Float32; +export import Float64 = DataType.Float64; +export import Bool = DataType.Bool; +export import Utf8 = DataType.Utf8; +// biome-ignore lint/suspicious/noShadowRestrictedNames: pl.String +export import String = DataType.String; +export import List = DataType.List; +// biome-ignore lint/suspicious/noShadowRestrictedNames: pl.Date +export import Date = DataType.Date; +export import Datetime = DataType.Datetime; +export import Time = DataType.Time; +// biome-ignore lint/suspicious/noShadowRestrictedNames: pl.Object +export import Object = DataType.Object; +export import Null = DataType.Null; +export import Struct = DataType.Struct; + +/** + * Run SQL queries against DataFrame/LazyFrame data. + * + * @warning This functionality is considered **unstable**, although it is close to being + * considered stable. It may be changed at any point without it being considered + * a breaking change. + */ +export function SQLContext( + frames?: Record, +): sql.SQLContext { + return new sql.SQLContext(frames); +}