Skip to content

Commit e5ac9c0

Browse files
authored
chore: Upgrading rs->0.50 (#348)
Upgrading rs->0.50 --------- Co-authored-by: Bidek56 <[email protected]>
1 parent ea79df4 commit e5ac9c0

File tree

17 files changed

+423
-394
lines changed

17 files changed

+423
-394
lines changed

Cargo.toml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,19 @@ crate-type = ["cdylib", "lib"]
1515
[dependencies]
1616
ahash = "0.8.12"
1717
bincode = "1.3.3"
18-
napi = { version = "3.1.4", default-features = false, features = [
18+
napi = { version = "3.1.6", default-features = false, features = [
1919
"napi8",
2020
"serde-json",
2121
"compat-mode"
2222
] }
2323
napi-derive = { version = "3.1.2", default-features = false }
24-
polars-core = { version = "0.49.1", default-features = false }
25-
polars-io = { version = "0.49.1", default-features = false }
26-
polars-lazy = { version = "0.49.1", default-features = false }
27-
polars-ops = { version = "0.49.1", default-features = false }
28-
polars-arrow = { version = "0.49.1", default-features = false }
29-
polars-utils = { version = "0.49.1", default-features = false }
30-
polars-compute = { version = "0.49.1", default-features = false }
24+
polars-core = { version = "0.50.0", default-features = false }
25+
polars-io = { version = "0.50.0", default-features = false }
26+
polars-lazy = { version = "0.50.0", default-features = false }
27+
polars-ops = { version = "0.50.0", default-features = false }
28+
polars-arrow = { version = "0.50.0", default-features = false }
29+
polars-utils = { version = "0.50.0", default-features = false }
30+
polars-compute = { version = "0.50.0", default-features = false }
3131
thiserror = "1"
3232
smartstring = { version = "1" }
3333
serde_json = { version = "1" }
@@ -167,7 +167,7 @@ features = [
167167
"azure"
168168
]
169169

170-
version = "0.49.1"
170+
version = "0.50.0"
171171

172172
[build-dependencies]
173173
napi-build = "2.2.3"

__tests__/expr.test.ts

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,23 @@ describe("expr", () => {
3030
const actual = df.select(col("a").as("abs").abs()).getColumn("abs");
3131
expect(actual).toSeriesEqual(expected);
3232
});
33+
test("aggGroups", () => {
34+
const df = pl.DataFrame({
35+
a: [1, 2, 3],
36+
b: ["a", "b", "c"],
37+
});
38+
const expected = pl
39+
.DataFrame({
40+
a: [1, 2, 3],
41+
b: [[0], [1], [2]],
42+
})
43+
.withColumn(pl.col("b").cast(pl.List(pl.UInt32)));
44+
const actual = df
45+
.groupBy("a")
46+
.agg(col("b").list().aggGroups())
47+
.sort({ by: "a" });
48+
expect(actual).toFrameEqual(expected);
49+
});
3350
test("alias", () => {
3451
const name = "alias";
3552
const actual = pl.select(lit("a").alias(name));
@@ -754,7 +771,6 @@ describe("expr", () => {
754771
const actual = df.withColumn(col("a").reverse().prefix("reversed_"));
755772
expect(actual).toFrameEqual(expected);
756773
});
757-
758774
test("round", () => {
759775
const df = pl.DataFrame({ a: [1.00123, 2.32878, 3.3349999] });
760776
const expected = pl.DataFrame({ rounded: [1, 2.33, 3.33] });
@@ -965,8 +981,11 @@ describe("expr", () => {
965981
});
966982
test("tan", () => {
967983
const df = pl.DataFrame({ a: [1, 2, 3] });
968-
const expected = pl.DataFrame({ tan: [1.557408, -2.18504, -0.142547] });
969-
const actual = df.select(col("a").tan().round(6).as("tan"));
984+
let expected = pl.DataFrame({ tan: [1.557408, -2.18504, -0.142547] });
985+
let actual = df.select(col("a").tan().round(6).as("tan"));
986+
expect(actual).toFrameEqual(expected);
987+
expected = pl.DataFrame({ tan: [0.761594, 0.964028, 0.995055] });
988+
actual = df.select(col("a").tanh().round(6).as("tan"));
970989
expect(actual).toFrameEqual(expected);
971990
});
972991
test("unique", () => {

__tests__/series.test.ts

Lines changed: 71 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,13 @@ describe("from lists", () => {
2323
const actual = pl.Series(expected).toArray();
2424
expect(actual).toEqual(expected);
2525
});
26+
test("fromArray", () => {
27+
const actual = pl.Series.from("foo", [1, 2, 3]);
28+
const expected = pl.Series("foo", [1, 2, 3]);
29+
expect(actual).toSeriesEqual(expected);
30+
const actual2 = pl.Series.from([1, 2, 3]);
31+
expect(actual2).toSeriesEqual(expected);
32+
});
2633
});
2734
describe("typedArrays", () => {
2835
test("int8", () => {
@@ -246,20 +253,12 @@ describe("series", () => {
246253
});
247254
});
248255
});
249-
describe("series", () => {
256+
describe("series functions", () => {
250257
const numSeries = () => pl.Series("foo", [1, 2, 3], pl.Int32);
251258
const fltSeries = () => pl.Series("float", [1, 2, 3], pl.Float64);
252259
const boolSeries = () => pl.Series("bool", [true, false, false]);
253260
const other = () => pl.Series("bar", [3, 4, 5], pl.Int32);
254-
255261
const chance = new Chance();
256-
257-
// test("to/fromBinary round trip", () => {
258-
// const s = pl.Series("serde", [1, 2, 3, 4, 5, 2]);
259-
// const buf = s.toBinary();
260-
// const actual = pl.Series.fromBinary(buf);
261-
// expect(s).toStrictEqual(actual);
262-
// });
263262
it.each`
264263
series | getter
265264
${numSeries()} | ${"dtype"}
@@ -297,6 +296,7 @@ describe("series", () => {
297296
${numSeries()} | ${"diff"} | ${[1, "drop"]}
298297
${numSeries()} | ${"dot"} | ${[other()]}
299298
${numSeries()} | ${"dropNulls"} | ${[]}
299+
${numSeries()} | ${"explode"} | ${[]}
300300
${numSeries()} | ${"fillNull"} | ${["zero"]}
301301
${numSeries()} | ${"fillNull"} | ${[{ strategy: "zero" }]}
302302
${numSeries()} | ${"filter"} | ${[boolSeries()]}
@@ -390,6 +390,7 @@ describe("series", () => {
390390
${numSeries()} | ${"rollingSum"} | ${[1, [0.11]]}
391391
${numSeries()} | ${"rollingSum"} | ${[1, [0.11], 1]}
392392
${numSeries()} | ${"rollingSum"} | ${[1, [0.23], 1, true]}
393+
${numSeries()} | ${"rollingStd"} | ${[1, [0.23], 1, true]}
393394
${numSeries()} | ${"rollingVar"} | ${[{ windowSize: 1 }]}
394395
${numSeries()} | ${"rollingVar"} | ${[{ windowSize: 1, weights: [0.33] }]}
395396
${numSeries()} | ${"rollingVar"} | ${[{ windowSize: 1, weights: [0.11], minPeriods: 1 }]}
@@ -418,6 +419,7 @@ describe("series", () => {
418419
${numSeries()} | ${"shift"} | ${[1]}
419420
${numSeries()} | ${"shiftAndFill"} | ${[1, 2]}
420421
${numSeries()} | ${"shiftAndFill"} | ${[{ periods: 1, fillValue: 2 }]}
422+
${numSeries()} | ${"shrinkToFit"} | ${[1, 2]}
421423
${numSeries()} | ${"skew"} | ${[]}
422424
${numSeries()} | ${"skew"} | ${[true]}
423425
${numSeries()} | ${"skew"} | ${[false]}
@@ -482,6 +484,7 @@ describe("series", () => {
482484
${"dropNulls"} | ${pl.Series([1, null, 2]).dropNulls()} | ${pl.Series([1, 2])}
483485
${"dropNulls"} | ${pl.Series([1, undefined, 2]).dropNulls()} | ${pl.Series([1, 2])}
484486
${"dropNulls"} | ${pl.Series(["a", null, "f"]).dropNulls()} | ${pl.Series(["a", "f"])}
487+
${"explode"} | ${pl.Series.from("foo", [[1n, 2n], [3n, 4n], [null], []]).explode()} | ${pl.Series([1, 2, 3, 4, null, null])}
485488
${"fillNull:zero"} | ${pl.Series([1, null, 2]).fillNull("zero")} | ${pl.Series([1, 0, 2])}
486489
${"fillNull:one"} | ${pl.Series([1, null, 2]).fillNull("one")} | ${pl.Series([1, 1, 2])}
487490
${"fillNull:max"} | ${pl.Series([1, null, 5]).fillNull("max")} | ${pl.Series([1, 5, 5])}
@@ -504,6 +507,7 @@ describe("series", () => {
504507
${"isDateTime"} | ${pl.Series([new Date(Date.now())]).isDateTime()} | ${true}
505508
${"isDuplicated"} | ${pl.Series([1, 3, 3]).isDuplicated()} | ${pl.Series([false, true, true])}
506509
${"isFinite"} | ${pl.Series([1.0, 3.1]).isFinite()} | ${pl.Series([true, true])}
510+
${"isFinite"} | ${pl.Series([1, 1 / 0]).isFinite()} | ${pl.Series([true, false])}
507511
${"isInfinite"} | ${pl.Series([1.0, 2]).isInfinite()} | ${pl.Series([false, false])}
508512
${"isNotNull"} | ${pl.Series([1, null, undefined, 2]).isNotNull()} | ${pl.Series([true, false, false, true])}
509513
${"isNull"} | ${pl.Series([1, null, undefined, 2]).isNull()} | ${pl.Series([false, true, true, false])}
@@ -531,6 +535,8 @@ describe("series", () => {
531535
${"rollingSum"} | ${pl.Series([1, 2, 3, 2, 1]).rollingSum(2)} | ${pl.Series("", [null, 3, 5, 5, 3], pl.Float64)}
532536
${"rollingMean"} | ${pl.Series([1, 2, 3, 2, 1]).rollingMean(2)} | ${pl.Series("", [null, 1.5, 2.5, 2.5, 1.5], pl.Float64)}
533537
${"rollingVar"} | ${pl.Series([1, 2, 3, 2, 1]).rollingVar(2)[1]} | ${0.5}
538+
${"rollingStd"} | ${pl.Series([1, 2, 3, 2, 1]).rollingStd(2).round(2)[1]} | ${0.71}
539+
${"rollingSkew"} | ${pl.Series([1, 2, 3, 2, 1]).rollingSkew(2).round(2)[1]} | ${0}
534540
${"rollingMedian"} | ${pl.Series([1, 2, 3, 3, 2, 10, 8]).rollingMedian({ windowSize: 2 })} | ${pl.Series([null, 1.5, 2.5, 3, 2.5, 6, 9])}
535541
${"rollingQuantile"} | ${pl.Series([1, 2, 3, 3, 2, 10, 8]).rollingQuantile({ windowSize: 2, quantile: 0.5 })} | ${pl.Series([null, 2, 3, 3, 3, 10, 10])}
536542
${"sample:n"} | ${pl.Series([1, 2, 3, 4, 5]).sample(2).len()} | ${2}
@@ -554,6 +560,7 @@ describe("series", () => {
554560
${"unique"} | ${pl.Series([1, 2, 3, 3]).unique().sort()} | ${pl.Series([1, 2, 3])}
555561
${"cumCount"} | ${pl.Series([1, 2, 3, 3]).cumCount()} | ${pl.Series([1, 2, 3, 4])}
556562
${"shiftAndFill"} | ${pl.Series("foo", [1, 2, 3]).shiftAndFill(1, 99)} | ${pl.Series("foo", [99, 1, 2])}
563+
${"shrinkToFit"} | ${pl.Series("foo", [1, 2, 3]).shrinkToFit()} | ${pl.Series("foo", [1, 2, 3])}
557564
${"bitand"} | ${pl.Series("bit", [1, 2, 3], pl.Int32).bitand(pl.Series("bit", [0, 1, 1], pl.Int32))} | ${pl.Series("bit", [0, 0, 1])}
558565
${"bitor"} | ${pl.Series("bit", [1, 2, 3], pl.Int32).bitor(pl.Series("bit", [0, 1, 1], pl.Int32))} | ${pl.Series("bit", [1, 3, 3])}
559566
${"bitxor"} | ${pl.Series("bit", [1, 2, 3], pl.Int32).bitxor(pl.Series("bit", [0, 1, 1], pl.Int32))} | ${pl.Series("bit", [1, 3, 2])}
@@ -710,6 +717,12 @@ describe("series", () => {
710717
new Uint8Array([1, 2, 3, 5]),
711718
);
712719
});
720+
test("values()", () => {
721+
const s = pl.Series.from("foo", [1, 2, 3]);
722+
const actual = s.values().next();
723+
const expected = { done: false, value: 1 };
724+
expect(actual).toEqual(expected);
725+
});
713726
test("toDummies", () => {
714727
const s = pl.Series("a", [1, 2, 3]);
715728
{
@@ -721,7 +734,7 @@ describe("series", () => {
721734
expect(actual).toFrameEqual(expected);
722735
}
723736
{
724-
const actual = s.toDummies(":", true);
737+
const actual = s.toDummies(":", true, false);
725738
const expected = pl.DataFrame(
726739
{ "a:2.0": [0, 1, 0], "a:3.0": [0, 0, 1] },
727740
{ schema: { "a:2.0": pl.UInt8, "a:3.0": pl.UInt8 } },
@@ -731,6 +744,50 @@ describe("series", () => {
731744
});
732745
});
733746
describe("comparators & math", () => {
747+
test("add/plus/series", () => {
748+
const s = pl.Series([1, 2, 3]);
749+
const expected = pl.Series([2, 4, 6]);
750+
expect(s.add(s)).toSeriesEqual(expected);
751+
expect(s.plus(s)).toSeriesEqual(expected);
752+
});
753+
test("minus/series", () => {
754+
const s = pl.Series([1, 2, 3]);
755+
expect(s.plus(s).minus(s)).toSeriesEqual(s);
756+
expect(s.add(s).sub(s)).toSeriesEqual(s);
757+
});
758+
test("eq/series", () => {
759+
const s = pl.Series([1, 2, 3]);
760+
const s2 = pl.Series([1, 3, 3]);
761+
const expected = pl.Series([true, false, true]);
762+
expect(s.eq(s2)).toSeriesEqual(expected);
763+
expect(s.equals(s2)).toSeriesEqual(expected);
764+
});
765+
test("gt/series", () => {
766+
const s = pl.Series([1, 2, 3]);
767+
const s2 = pl.Series([2, 2, 4]);
768+
const expected = pl.Series([true, false, true]);
769+
expect(s2.gt(s)).toSeriesEqual(expected);
770+
expect(s2.greaterThan(s)).toSeriesEqual(expected);
771+
});
772+
test("gteq/series", () => {
773+
const s = pl.Series([1, 2, 3]);
774+
const s2 = pl.Series([2, 2, 4]);
775+
const expected = pl.Series([true, true, true]);
776+
expect(s2.gtEq(s)).toSeriesEqual(expected);
777+
expect(s2.greaterThanEquals(s)).toSeriesEqual(expected);
778+
});
779+
test("rem/modulo/series", () => {
780+
const s = pl.Series([1, 2, 3]);
781+
const s2 = pl.Series([2, 3, 4]);
782+
expect(s.rem(s2)).toSeriesEqual(s);
783+
expect(s.modulo(s2)).toSeriesEqual(s);
784+
});
785+
test("div/series", () => {
786+
const s = pl.Series([1, 2, 3]);
787+
const expected = pl.Series([2, 2, 2]);
788+
expect(s.plus(s).div(s)).toSeriesEqual(expected);
789+
expect(s.plus(s).divideBy(s)).toSeriesEqual(expected);
790+
});
734791
test("add/plus", () => {
735792
const s = pl.Series([1, 2]);
736793
const expected = pl.Series([2, 3]);
@@ -802,6 +859,10 @@ describe("comparators & math", () => {
802859
const expected = pl.Series([true, false]);
803860
expect(s.ltEq(1)).toSeriesEqual(expected);
804861
expect(s.lessThanEquals(1)).toSeriesEqual(expected);
862+
let fn = () => s.ltEq("1");
863+
expect(fn).toThrow("Not a number nor a series");
864+
fn = () => s.lessThanEquals("1");
865+
expect(fn).toThrow("Not a number nor a series");
805866
});
806867
});
807868
describe("StringFunctions", () => {
@@ -922,21 +983,13 @@ describe("series struct", () => {
922983
});
923984
describe("generics", () => {
924985
const series = pl.Series([1, 2, 3]);
925-
926986
test("dtype", () => {
927987
expect(series.dtype).toStrictEqual(DataType.Float64);
928988
});
929989
test("to array", () => {
930990
const arr = series.toArray();
931991
expect<number[]>(arr).toStrictEqual([1, 2, 3]);
932-
933992
const arr2 = [...series];
934993
expect<number[]>(arr2).toStrictEqual([1, 2, 3]);
935994
});
936-
test.skip("to object", () => {
937-
const obj = series.toObject();
938-
expect<{ name: string; datatype: "Float64"; values: number[] }>(
939-
obj,
940-
).toMatchObject({ name: "", datatype: "Float64", values: [1, 2, 3] });
941-
});
942995
});

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,18 +58,18 @@
5858
"@napi-rs/cli": "^3.0.4",
5959
"@types/chance": "^1.1.7",
6060
"@types/jest": "^30.0.0",
61-
"@types/node": "^24.1.0",
61+
"@types/node": "^24.2.0",
6262
"chance": "^1.1.13",
6363
"diff-sequences": "^29.6.3",
6464
"jest": "^30.0.5",
6565
"jest-get-type": "^29.6.3",
6666
"source-map-support": "^0.5.21",
6767
"ts-expect": "^1.3.0",
68-
"ts-jest": "^29.4.0",
68+
"ts-jest": "^29.4.1",
6969
"ts-node": "^10.9.2",
70-
"typedoc": "^0.28.8",
70+
"typedoc": "^0.28.9",
7171
"typedoc-plugin-missing-exports": "^4.0.0",
72-
"typescript": "5.8.3"
72+
"typescript": "5.9.2"
7373
},
7474
"packageManager": "[email protected]",
7575
"workspaces": [

polars/cfg.ts

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import pli from "./native-polars";
2-
31
/**
42
* Configure polars; offers options for table formatting and more.
53
*/
@@ -14,10 +12,6 @@ export interface Config {
1412
setTblRows(n: number): Config;
1513
/** Set the number of columns used to print tables */
1614
setTblCols(n: number): Config;
17-
/** Turn on the global string cache */
18-
setGlobalStringCache(): Config;
19-
/** Turn off the global string cache */
20-
unsetGlobalStringCache(): Config;
2115
}
2216

2317
/**
@@ -26,37 +20,22 @@ export interface Config {
2620
export const Config: Config = {
2721
setUtf8Tables() {
2822
process.env["POLARS_FMT_NO_UTF8"] = undefined;
29-
3023
return this;
3124
},
3225
setAsciiTables() {
3326
process.env["POLARS_FMT_NO_UTF8"] = "1";
34-
3527
return this;
3628
},
3729
setTblWidthChars(width) {
3830
process.env["POLARS_TABLE_WIDTH"] = String(width);
39-
4031
return this;
4132
},
4233
setTblRows(n) {
4334
process.env["POLARS_FMT_MAX_ROWS"] = String(n);
44-
4535
return this;
4636
},
4737
setTblCols(n) {
4838
process.env["POLARS_FMT_MAX_COLS"] = String(n);
49-
50-
return this;
51-
},
52-
setGlobalStringCache() {
53-
pli.toggleStringCache(true);
54-
55-
return this;
56-
},
57-
unsetGlobalStringCache() {
58-
pli.toggleStringCache(false);
59-
6039
return this;
6140
},
6241
};

0 commit comments

Comments
 (0)