Conversation
Port pandas.core.groupby — DataFrameGroupBy and SeriesGroupBy with full split-apply-combine engine: - DataFrameGroupBy: sum, mean, min, max, count, std, first, last, size, agg (named/fn/per-column spec), transform, apply, filter, getGroup, ngroups, groupKeys, groups — single-key and multi-key support - SeriesGroupBy: same aggregation API, transform, apply, filter, getGroup - DataFrame.groupby(by) and Series.groupby(by) convenience methods - 40+ unit tests + property-based tests (fast-check) - Interactive playground page (playground/groupby.html) Run: https://github.com/githubnext/tsessebe/actions/runs/23972003902 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Implement pandas.concat() — combine Series and DataFrames along either axis. ## What's included **src/merge/concat.ts** — full concat implementation: - axis=0 (default): stack Series → Series; stack DataFrames → DataFrame - axis=1: Series[] → DataFrame (each Series as a column); DataFrame[] → DataFrame (side-by-side) - join='outer' (default): union of labels, null-fill missing values - join='inner': intersection of labels only - ignoreIndex: reset the result to a RangeIndex **src/merge/index.ts** — barrel export **src/index.ts** — exports concat + ConcatOptions **tests/merge/concat.test.ts** — 25+ unit tests + 4 property-based tests (fast-check) **playground/concat.html** — interactive tutorial page with 7 examples **playground/index.html** — concat marked as ✅ Complete Run: https://github.com/githubnext/tsessebe/actions/runs/23972580333 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Port pandas.merge — SQL-style join of two DataFrames. - src/merge/merge.ts: full merge() implementation with inner/left/right/outer joins, on/left_on/right_on/left_index/right_index, suffix handling, sort - tests/merge/merge.test.ts: 29 tests (unit + property-based with fast-check) - playground/merge.html: interactive tutorial with all join types - playground/index.html: mark merge as complete Metric: pandas_features_ported 8 → 9 Run: https://github.com/githubnext/tsessebe/actions/runs/24001239424 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Port pandas StringMethods as Series.str accessor. - src/core/string_accessor.ts: StringAccessor class with 35+ methods: case (lower/upper/title/capitalize/swapcase), len, strip/lstrip/rstrip, pad/ljust/rjust/center/zfill, contains/startswith/endswith/match/fullmatch, find/rfind/count, replace/extract, split/rsplit/join/cat, slice/get/sliceReplace, repeat/wrap, encode, isalpha/isdigit/isalnum/islower/isupper/istitle/isspace. All methods propagate null/NaN unchanged. - src/core/series.ts: added withValues() helper + Series.str getter - tests/core/string_accessor.test.ts: 60 tests (unit + property-based with fast-check) - playground/string_accessor.html: interactive tutorial with 9 sections - playground/index.html: mark str accessor as complete Metric: pandas_features_ported 9 → 10 Run: https://github.com/githubnext/tsessebe/actions/runs/24001823414 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Port pandas DatetimeProperties as Series.dt accessor.
- src/core/datetime_accessor.ts: DatetimeAccessor class with:
Calendar components: year/month/day/hour/minute/second/millisecond/
microsecond/nanosecond/dayofweek/weekday/dayofyear/quarter/
isocalendar_week/days_in_month/daysinmonth
Boolean boundaries: is_month_start/is_month_end/is_quarter_start/
is_quarter_end/is_year_start/is_year_end/is_leap_year
Formatting: strftime() with 25+ directives (%Y/%m/%d/%H/%M/%S/%A/%B etc.)
Normalization: normalize() (floor to midnight), date()
Rounding: floor/ceil/round with D/H/T/min/S/L/ms units
Epoch: total_seconds()
All methods propagate null/undefined/NaN unchanged
- src/core/series.ts: added Series.dt getter returning DatetimeAccessor
- src/core/index.ts: export DatetimeAccessor + DatetimeSeriesLike
- src/index.ts: re-export DatetimeAccessor + DatetimeSeriesLike
- tests/core/datetime_accessor.test.ts: 50+ tests (unit + property-based with fast-check)
- playground/datetime_accessor.html: interactive tutorial with 8 sections
- playground/index.html: mark dt accessor as complete
Metric: pandas_features_ported 10 → 11
Run: https://github.com/githubnext/tsessebe/actions/runs/24002454105
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Implements src/stats/describe.ts — the pandas-style describe() function: - quantile(sorted, q): linear interpolation (pandas method='linear') - describe(series): count/mean/std/min/percentiles/max for numeric, count/unique/top/freq for categorical - describe(dataFrame): per-column stats, include='number'|'object'|'all' - DescribeOptions: custom percentiles array - Series.quantile(q) method added to Series New files: src/stats/describe.ts, src/stats/index.ts Tests: tests/stats/describe.test.ts (32 tests, unit + property-based) Playground: playground/describe.html with 7 interactive tutorials Metric: pandas_features_ported 11 → 12 Run: https://github.com/githubnext/tsessebe/actions/runs/24002845454 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add src/io/csv.ts — pandas-style CSV read/write: - readCsv(text, options?): parse CSV string → DataFrame with automatic dtype inference (bool/int64/float64/string/object), NA handling, quoted fields (RFC 4180), custom separators, indexCol, skipRows, nRows - toCsv(df, options?): serialize DataFrame → CSV string with header, index, custom sep, lineterminator, naRep - Comprehensive tests: 35+ unit + property-based (fast-check) tests - Interactive playground: playground/csv.html with 7 tutorial sections Metric: 12 → 13 (+1) Run: https://github.com/githubnext/tsessebe/actions/runs/24003267099 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Five orient formats (records, split, index, columns, values) mirroring pandas read_json() and DataFrame.to_json(). Full null propagation, dtype override support, and JSON auto-detection. 31 unit + property-based tests. Interactive playground: playground/json.html. Run: https://github.com/githubnext/tsessebe/actions/runs/24003815679 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add `src/stats/corr.ts` with: - `pearsonCorr(a, b, options?)` — Pearson correlation for two Series, aligning on shared index labels and dropping missing pairs - `dataFrameCorr(df, options?)` — symmetric N×N Pearson correlation matrix for all numeric columns of a DataFrame - `dataFrameCov(df, options?)` — symmetric N×N sample covariance matrix Also adds inline methods: - `Series.corr(other, minPeriods?)` - `DataFrame.corr(minPeriods?)` - `DataFrame.cov(ddof?, minPeriods?)` 34 unit + property-based tests. Playground: playground/corr.html. Run: https://github.com/githubnext/tsessebe/actions/runs/24004259683 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… DataFrame.rolling) - Add `src/window/rolling.ts` — `Rolling` class with full pandas-compatible sliding-window API: mean(), sum(), std(), var(), min(), max(), count(), median(), apply(). Uses `RollingSeriesLike` interface to avoid circular imports. Supports `minPeriods` and `center` options. - Add `DataFrameRolling` to `src/core/frame.ts` — column-wise rolling aggregations for DataFrame (same methods as Rolling). - Wire `Series.rolling()` and `DataFrame.rolling()` instance methods. - Export `Rolling`, `RollingSeriesLike`, `RollingOptions` from `src/index.ts`; export `DataFrameRolling` from `src/core/index.ts` and `src/index.ts`. - Add 40+ unit + property-based tests in `tests/window/rolling.test.ts`. - Add interactive playground page `playground/rolling.html` (8 examples). - Mark rolling as complete in `playground/index.html`. Run: https://github.com/githubnext/tsessebe/actions/runs/24004857590 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- src/window/expanding.ts: Expanding class with pandas-compatible growing-window API (mean/sum/std/var/min/max/count/median/apply). ExpandingSeriesLike interface avoids circular imports. DataFrameExpanding in frame.ts. - src/core/cat_accessor.ts: CategoricalAccessor (Series.cat) — categories, codes, ordered, nCategories, addCategories, removeCategories, removeUnusedCategories, renameCategories, setCategories, reorderCategories, asOrdered, asUnordered, valueCounts. CatHolder preserves category metadata through chaining. - Tests: 40+ unit + property tests for Expanding, 40+ unit + property tests for CategoricalAccessor. - Playground: playground/cat_accessor.html (8 tutorial sections). - Metric: 16 → 18 (+2) Run: https://github.com/githubnext/tsessebe/actions/runs/24005927691 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- src/reshape/melt.ts: pandas-compatible melt() (wide→long unpivot) with id_vars, value_vars, var_name, value_name, ignore_index - src/reshape/pivot.ts: pandas-compatible pivot() (unique reshape) and pivotTable() (aggregation — mean/sum/count/min/max/first/last) with fill_value, dropna - tests/reshape/melt.test.ts: 12 unit tests + 2 property tests (fast-check) - tests/reshape/pivot.test.ts: 14 unit tests + 2 property tests (fast-check) - playground/melt.html, playground/pivot.html: interactive tutorials - Metric: 18 → 20 (pandas_features_ported) Run: https://github.com/githubnext/tsessebe/actions/runs/24006370785 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Implements src/window/ewm.ts with: - EWM class: mean (adjust=true/false), std, var, cov, corr, apply - Decay via span, com, halflife, or alpha - ignoreNa option (false=decay-on-NaN, true=skip-NaN) - minPeriods support - DataFrameEwm in core/frame.ts for per-column EWM on DataFrames - Series.ewm() and DataFrame.ewm() methods Online weighted-sum formulation (S, W, W2 state) for O(n) computation. Helper functions computeCov/computeCorr reduce cognitive complexity. 55+ tests in tests/window/ewm.test.ts (unit + property-based). Playground: playground/ewm.html (9 sections). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Implements stack/unstack as complementary inverse operations:
- stack(df): rotates column labels into compound string index labels
("rowLabel|colName"), returning a Series<Scalar>. Supports dropna
(default true, matching pandas) and custom separator.
- unstack(series): reverses stack by parsing compound labels, filling
missing (row, col) combinations with fill_value (default null).
Both functions are standalone (no circular dep), following the melt/pivot
pattern. Round-trips correctly: unstack(stack(df, {dropna:false})) ≈ df.
Files added:
- src/reshape/stack_unstack.ts — implementation
- tests/reshape/stack_unstack.test.ts — 25+ unit + 4 property tests
- playground/stack_unstack.html — 6-section interactive tutorial
Metric: 21 → 22 (+1)
Run: https://github.com/githubnext/tsessebe/actions/runs/24007420044
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Implement pandas.MultiIndex — hierarchical multi-level index: - src/core/multi_index.ts: MultiIndex class with fromTuples/fromArrays/fromProduct - Properties: nlevels, size, names, levels, codes, isUnique, hasDuplicates - Access: at(), getLoc(), contains(), isin() - Level ops: droplevel(), swaplevel(), reorderLevels(), setNames() - Missing values: isna(), notna(), dropna() - Duplicates: duplicated(), dropDuplicates() - Set ops: union(), intersection(), difference() - sortValues(), equals(), Symbol.iterator, toString() - 60+ unit tests + 7 property-based tests (fast-check) - Playground: playground/multi_index.html (8 sections) Run: https://github.com/githubnext/tsessebe/actions/runs/24008035023 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add src/stats/rank.ts implementing pandas.Series.rank() / DataFrame.rank(): - rankSeries(series, options): assign numerical ranks to Series values - rankDataFrame(df, options): rank columns (axis=0) or rows (axis=1) - Tie methods: average (default), min, max, first, dense - NaN handling: keep (→ NaN), top (lowest ranks), bottom (highest ranks) - Percentage rank: pct=true divides by nValid (keep) or n (top/bottom) Tests: 40+ unit tests + 6 property-based tests (fast-check). Playground: playground/rank.html (8 interactive sections). Metric: 23 → 24 pandas_features_ported. Run: https://github.com/githubnext/tsessebe/actions/runs/24008535770 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ection - src/stats/nlargest.ts: nlargestSeries, nsmallestSeries, nlargestDataFrame, nsmallestDataFrame - Mirror pandas Series.nlargest/nsmallest and DataFrame.nlargest/nsmallest - keep='first'/'last'/'all' tie-handling at selection boundary - NaN/null values excluded from result (same as pandas) - Multi-column DataFrame sorting with lexicographic comparison - 45+ unit tests + 5 property-based tests - Playground: nlargest.html (8 sections) Run: https://github.com/githubnext/tsessebe/actions/runs/24009034419 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Added src/stats/cum_ops.ts — cumsum(), cumprod(), cummax(), cummin() for Series - Added dataFrameCumsum(), dataFrameCumprod(), dataFrameCummax(), dataFrameCummin() - skipna option (default true): NaN/null positions return NaN/null, accumulator skips them - skipna: false: any missing value poisons all subsequent results - axis=0 (default): column-wise; axis=1: row-wise across columns - Non-numeric values treated as missing in cumsum/cumprod - cummax/cummin work on any comparable scalar (numbers, strings, booleans) - 50+ unit tests + 6 property-based tests (fast-check) - Playground: playground/cum_ops.html (8 interactive sections) Run: https://github.com/githubnext/tsessebe/actions/runs/24009460051 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Iteration 71: Add element-wise ops (clip/seriesAbs/seriesRound) Iteration 72: Add value_counts for Series and DataFrame Iteration 73: Add where()/mask() conditional selection/replacement Run: https://github.com/githubnext/tsessebe/actions/runs/24011120613 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Adds src/stats/compare.ts implementing all six pandas comparison methods for both Series and DataFrame: - seriesEq / dataFrameEq — element-wise == - seriesNe / dataFrameNe — element-wise != - seriesLt / dataFrameLt — element-wise < - seriesGt / dataFrameGt — element-wise > - seriesLe / dataFrameLe — element-wise <= - seriesGe / dataFrameGe — element-wise >= The 'other' argument accepts a scalar (broadcast) or a Series/DataFrame (position/column-aligned). Missing values (null/NaN) always yield false, matching pandas' NaN-propagation convention. Tests: property tests verify lt+ge partition and gt+le partition for finite numeric data (no overlap, no gap). Playground: compare.html with 8 tutorial sections. Metric: 29 → 30 Run: https://github.com/githubnext/tsessebe/actions/runs/24011536762 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Implemented pandas-compatible shift/diff operations: - shiftSeries(series, periods): lag values by N positions (positive=down, negative=up) - diffSeries(series, periods): first discrete difference (values[i] - values[i-periods]) - dataFrameShift(df, periods, options): column-wise or row-wise shift (axis=0/1) - dataFrameDiff(df, periods, options): column-wise or row-wise diff (axis=0/1) All functions support positive/negative periods and handle null/NaN missing values following pandas convention (null fills for shift; NaN output for diff when either operand is missing). Run: https://github.com/githubnext/tsessebe/actions/runs/24012145919 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Added src/stats/interpolate.ts — interpolateSeries() and dataFrameInterpolate(). - Methods: linear (default), ffill/pad/zero, bfill/backfill, nearest - Options: limit (max consecutive NaN to fill), limitDirection (forward/backward/both) - Linear: fills only interior gaps (between two known values); leading/trailing left as-is - ffill: carries last known value forward; bfill: carries next known value backward - nearest: fills with closest known value (right wins on tie); fills leading/trailing from anchor - DataFrame: column-wise (axis=0, default) or row-wise (axis=1/'columns') - 39 tests: unit + property-based (fast-check) - Playground: playground/interpolate.html (8 sections) - Metric: 31 → 32 pandas_features_ported Run: https://github.com/githubnext/tsessebe/actions/runs/24012563442 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- src/stats/fillna.ts: fillnaSeries/fillnaDataFrame - Scalar value fill (replaces all missing with constant) - ColumnFillMap fill (per-column scalars for DataFrame) - Series fill (index labels matched to column names) - ffill/pad (forward fill) and bfill/backfill (backward fill) methods - limit: max consecutive positions filled per run - axis=0 (column-wise) and axis=1 (row-wise) for DataFrame method fill - tests/stats/fillna.test.ts: 35+ tests including property-based - playground/fillna.html: 8-section interactive tutorial - Wired into src/stats/index.ts and src/index.ts barrel exports Metric: 32 → 33 (+1) Run: https://github.com/githubnext/tsessebe/actions/runs/24013124690 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Implements pandas.Interval and pandas.IntervalIndex: - Interval: numeric interval with left/right endpoints and configurable closure mode (right/left/both/neither). Properties: closedLeft, closedRight, length, mid, isEmpty. Methods: contains(), overlaps(), toString(). - IntervalIndex: ordered collection of intervals usable as a row index. Factory: fromBreaks(), fromArrays(), fromIntervals(). Properties: left, right, mid, size, length, empty, isMonotonic*. Methods: at(), toArray(), contains(), get_loc(), overlaps(), filter(), rename(). - 60+ tests (unit + property-based with fast-check) - Interactive playground page Run: https://github.com/githubnext/tsessebe/actions/runs/24013890896 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- src/stats/cut.ts: cut() and qcut() — bin continuous values into discrete intervals - cut(): equal-width binning (integer) or explicit bin edges (array) - qcut(): quantile-based binning; equal-frequency per bin - labels=false → integer codes; labels=string[] → custom labels - right=true/false for right/left-closed intervals - includeLowest: include left edge of first bin - duplicates='raise'/'drop' for duplicate bin edges - cutIntervalIndex()/qcutIntervalIndex() — expose the IntervalIndex - tests/stats/cut.test.ts: 30+ tests including property-based (fast-check) - playground/cut.html: interactive tutorial (8 sections) - Updated src/stats/index.ts, src/index.ts, playground/index.html Run: https://github.com/githubnext/tsessebe/actions/runs/24014588932 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- sampleSeries(): n/frac count, with/without replacement, weighted sampling, randomState seed for reproducibility, ignoreIndex - sampleDataFrame(): row sampling (axis=0) and column sampling (axis=1) with full weight/replace/seed support - xorshift32 RNG (zero external deps) - Weighted without-replacement via iterative CDF draw with weight zeroing - 40+ unit tests + property-based tests in tests/stats/sample.test.ts - Interactive playground: playground/sample.html (8 sections incl. bootstrapping) Run: https://github.com/githubnext/tsessebe/actions/runs/24017697656 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…meApply
Ports pandas.Series.apply(), DataFrame.applymap() / DataFrame.map(), and
DataFrame.apply(axis=0|1) to TypeScript.
- applySeries(series, fn): maps (value, label) → Scalar over each element
- applymap(df, fn): maps (value, colName) → Scalar over every cell
- dataFrameApply(df, fn, {axis}): aggregates each column (axis=0) or row
(axis=1) via fn(slice: Series) → Scalar
39 tests (unit + property-based), 100% coverage, lint-clean, typecheck-clean.
Metric: 36 → 37 pandas_features_ported.
Run: https://github.com/githubnext/tsessebe/actions/runs/24019334747
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Implements src/core/categorical_index.ts: - CategoricalIndex.fromArray() — infer or supply explicit categories - CategoricalIndex.fromCodes() — build from categories + code array - categories, codes, ordered, name, size, nCategories, ndim, shape - at(), getLoc(), getLocsAll(), toArray(), hasCategory(), contains() - renameCategories(), reorderCategories(), addCategories() - removeCategories(), setCategories(), removeUnusedCategories() - asOrdered(), asUnordered(), compareLabels() (ordered mode) - unionCategories(), intersectCategories(), rename(), toString() All mutations return new instances; original is immutable. Tests: 45 unit tests + property-based tests via fast-check. Playground: playground/categorical_index.html with 7 interactive examples. Run: https://github.com/githubnext/tsessebe/actions/runs/24020523769 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ataFrame Adds src/stats/pipe.ts with six exported functions: - pipeSeries(series, fn, ...args) — mirrors pandas.Series.pipe() - dataFramePipe(df, fn, ...args) — mirrors pandas.DataFrame.pipe() - pipeTo(series, pos, fn, ...args) — insertion-point control (pandas tuple form) - dataFramePipeTo(df, pos, fn, ...args) — insertion-point control for DataFrame - pipeChain(series, ...fns) — left-to-right Series transform chain - dataFramePipeChain(df, ...fns) — left-to-right DataFrame transform chain Tests (tests/stats/pipe.test.ts): 47 unit tests + fast-check property tests covering identity law, composition law, extra-arg forwarding, empty inputs, insertion-point splicing, and order-dependence of chains. Playground: playground/pipe.html with 6 interactive examples. Run: https://github.com/githubnext/tsessebe/actions/runs/24021812753 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Ports pandas.Period and pandas.PeriodIndex to TypeScript. Supported frequencies: A (Y), Q, M, W, D, H, T (min), S. Period features: fromDate, fromString, ordinal, startTime, endTime, durationMs, contains, add, diff, compareTo, equals, asfreq. PeriodIndex features: fromRange, periodRange, fromPeriods, at, getLoc, contains, shift, sort, unique, asfreq, toDatetimeStart, toDatetimeEnd. 60+ unit + property-based tests; Biome-clean; strict TypeScript. Run: https://github.com/githubnext/tsessebe/actions/runs/24023324081 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: mrjf <180956+mrjf@users.noreply.github.com>
Agent-Logs-Url: https://github.com/githubnext/tsessebe/sessions/ef322c76-17f1-4be8-89de-3297824d5fdf Co-authored-by: mrjf <180956+mrjf@users.noreply.github.com>
|
@copilot run ci |
Ran CI checks on commit a08658f. Current GitHub CI runs for this branch are in |
|
Warning The Evergreen merge: resolved 7 conflicts (benchmarks/results.json, src/core/index.ts, src/index.ts, src/reshape/wide_to_long.ts, src/stats/where_mask.ts, tests/reshape/wide_to_long.test.ts, tests/stats/where_mask.test.ts). Kept PR features as superset. TypeScript check passes.
|
|
@copilot fix failing tests |
…st tests Agent-Logs-Url: https://github.com/githubnext/tsessebe/sessions/78d95042-4c45-4c08-be04-02e8afe42b80 Co-authored-by: mrjf <180956+mrjf@users.noreply.github.com>
Agent-Logs-Url: https://github.com/githubnext/tsessebe/sessions/78d95042-4c45-4c08-be04-02e8afe42b80 Co-authored-by: mrjf <180956+mrjf@users.noreply.github.com>
Fixed the failing tests and related typecheck blockers in commit bbf8e0f (main fixes landed in b62f28d). I restored |
|
@copilot fix ci test errors |
Agent-Logs-Url: https://github.com/githubnext/tsessebe/sessions/4dae5329-c13a-4ad9-91c9-9525efc7c78f Co-authored-by: mrjf <180956+mrjf@users.noreply.github.com>
Fixed in commit 25ae11a. I resolved the CI test failure by stabilizing the |
|
@copilot fix ci test errors Please actually fix all errors. |
Agent-Logs-Url: https://github.com/githubnext/tsessebe/sessions/ae9911fe-dbd2-4c2d-b246-82e7a320d4ac Co-authored-by: mrjf <180956+mrjf@users.noreply.github.com>
Addressed in commit a521592. I fixed the remaining CI failures by resolving all current Biome lint errors (including the failing |
|
Warning The 🤖 Evergreen Fix AppliedFixed the failing Test & Lint CI check by resolving 178 lint errors introduced by newly-added code in this PR. Root cause: The new source files ( Fixes applied:
Verified:
|
- Fix natCompare returning -0 for equal values with reverse=true - Fix fc.float constraints needing Math.fround in property tests - Fix insertColumn duplicate test to match Map-backed DataFrame behavior - Fix cut test to use explicit bins for out-of-range testing - Fix all pre-existing TypeScript errors from PR #58 Co-authored-by: mrjf <180956+mrjf@users.noreply.github.com>
Main merged PR #58 with additional bug fixes (regex redos, assign naming, memory usage tests, trunc property test, lint/test failures). Resolution strategy: - 11 source impl files: took main's versions with bug fixes - 13 test files: took main's versions with corrected expectations - 4 barrel exports (core/index.ts, stats/index.ts, io/index.ts, src/index.ts): took main's versions as base, added PR #120 unique module exports (astype, readExcel, clipAdvanced, idxmin/idxmax, mode, nancumops, nunique, pctChange, quantile, replace, semVar, skewKurt, toDatetime) TypeScript: 0 errors, Lint: 0 errors (329 warnings), Tests: 4298 pass / 0 fail Co-authored-by: mrjf <180956+mrjf@users.noreply.github.com>
🤖 This PR is maintained by Autoloop. Each accepted iteration adds a commit to this branch.
Program Goal
Build
tsb, a complete TypeScript port of pandas, one feature at a time.Metric:
pandas_features_ported— count of exported TypeScript source files (higher is better)Current best: 72 (iteration 117)
Latest Iteration (117) — isin
Added
src/stats/isin.ts— element-wise membership testing mirroringpandas.Series.isin()andpandas.DataFrame.isin().isin(series, values)— returnsSeries<boolean>,truewhere each element is in the collectiondataFrameIsin(df, values)— returns booleanDataFrame; accepts either a shared collection or anIsinDictfor per-column lookupsIterable<Scalar>: arrays,Sets, generatorsRun: §24062941194