tamnd / tamnd/firepanda

I. The cheap surface: 40 names that are ten minutes each

Open
#153 0 comments 0 reactions 0 assignees View on GitHub
good first issue parity
Dominant language
Mojo
Stars
1
Forks
0
Avg merge
1h 31m
Merged PRs (30d)
640

Description

These are the names that are individually trivial and collectively worth more than any other single day in M6. Nobody will ever prioritise `rtruediv` on its own, which is exactly why they are one issue and one pull request. Doing them early also stops the conformance suite reporting `AttributeError` for things that are trivially present, which makes every other number in the milestone readable.

### What it covers

**The 25 arithmetic and comparison spellings on both `DataFrame` and `Series`.** `add`, `sub`, `mul`, `div`, `truediv`, `floordiv`, `mod`, `pow`, `radd`, `rsub`, `rmul`, `rdiv`, `rtruediv`, `rfloordiv`, `rmod`, `rpow`, `eq`, `ne`, `lt`, `gt`, `le`, `ge`, `dot`, `divmod`, `rdivmod`. Most of these are the operator that already exists with a `fill_value` and an `axis` parameter attached, and the reflected forms are the same function with the arguments the other way round. The `fill_value` parameter is the part that is real work and it is one implementation shared by all of them.

**The methods document 06 does not mention at all.** `Series.case_when`, `from_arrow` on both types, `iterrows`, `itertuples`, `str.isascii`, `GroupBy.ohlc`, and the `method` and `on` parameters of `rolling`.

`iterrows` and `itertuples` deserve a note. They are slow by construction and every performance guide tells people not to use them, and they are also in an enormous amount of existing code. A port that fails on `itertuples` fails on line one of a script somebody wrote in 2019, and the fact that we would rather they used something else does not help them.

### Done when

- [ ] All 40 names resolve, accept what pandas accepts, and return what pandas returns on the corpus
- [ ] `fill_value` works on every arithmetic spelling that takes it, including the reflected forms
- [ ] `itertuples` returns a named tuple with the same field names pandas uses, including the renaming rules for invalid identifiers
- [ ] L1 and L3 both at 100 percent for the workstream in the compat scoreboard

### How this is measured

The target above is an L3 rate over this workstream's callables, reported by `pixi run conformance` in [firepanda-compat](https://github.com/tamnd/firepanda-compat) and enforced by the CI ratchet rather than by a person ticking a box. L3 means every parameter takes every one of its values and the combinations that interact are enumerated. The levels are defined in [01-what-100-percent-means.md](https://github.com/tamnd/firepanda-compat/blob/main/docs/specs/01-what-100-percent-means.md), the counts come from [02-the-surface.md](https://github.com/tamnd/firepanda-compat/blob/main/docs/specs/02-the-surface.md), and the ordering argument for this milestone is in [08-m6.md](https://github.com/tamnd/firepanda-compat/blob/main/docs/specs/08-m6.md).

Anything we deliberately will not do goes in the divergence registry with a reason before this issue closes, and a registered divergence still runs and still has to diverge.

Part of #8, milestone M6.

Contributor guide

Open the contributing guide

Research direction

Start by running `pixi run conformance` and read the linked compatibility specifications, especially `01-what-100-percent-means.md`, `02-the-surface.md`, and `08-m6.md`. Locate the existing DataFrame, Series, and GroupBy implementations for the listed names, then use the corpus and CI ratchet to verify all names, parameters, reflected arithmetic, tuple naming rules, L1/L3 rates, and any documented divergences.

Written by the indexing model from the issue text.

Assessment

Tech stack
pandas, python
Domain
api, data, testing
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.