• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

petbox-dev / tafra / 23695947661
95%

Build:
DEFAULT BRANCH: main
Ran 28 Mar 2026 10:41PM UTC
Jobs 1
Files 6
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

28 Mar 2026 10:40PM UTC coverage: 94.681% (+1.5%) from 93.133%
23695947661

push

github

web-flow
fix: composite key negative values, select generator exhaustion, cross join validation (#28)

* fix: composite key negative values, select generator exhaustion, cross join validation

- _build_composite_key: shift columns to non-negative range before computing
  cardinality — fixes key collisions when integer join keys are negative
- _resolve_join_cols: materialize self.select to frozenset — prevents
  generator exhaustion silently dropping columns
- _encode_columns_paired: add kind-match check before concatenating left/right
  columns — produces clear TypeError instead of silent object upcast
- CrossJoin: validate select columns exist, fix docstring (outer → cross)
- Move _STRING_KINDS to module-level constant (was per-call frozenset)
- Use astype(int64, copy=False) to avoid unnecessary allocation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: move negative-key shift into _encode_columns_paired, materialize select

The shift-by-min in _build_composite_key was applied independently to
left and right sides, producing non-comparable keys when mins differed.
Moved the shift into _encode_columns_paired where both sides are visible,
using a combined min as the shared baseline. Only applies to signed
integer columns (kind 'i'), not datetime or other types.

Also added the same shift to _encode_columns (GroupBy path) so negative
integer group-by columns work correctly with _direct_labels_firstseen.

Added Join.__post_init__ to materialize self.on and self.select
from any Iterable into lists, preventing generator exhaustion on reuse.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: address Copilot review — select validation, docstrings, tests

- Move select validation to _resolve_join_cols (consistent across all
  join types — InnerJoin, LeftJoin, CrossJoin all raise KeyError)
- Fix base.py cross_join docstring (how='outer' → how='cross')
- Fix _build_composite_key comment to list both callers
- Sort... (continued)

170 of 178 new or added lines in 4 files covered. (95.51%)

1 existing line in 1 file now uncovered.

1602 of 1692 relevant lines covered (94.68%)

0.95 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
4
97.8
0.0% tafra/base.py
4
90.66
3.6% tafra/group.py

Uncovered Existing Lines

Lines Coverage ∆ File
1
97.8
0.0% tafra/base.py
Jobs
ID Job ID Ran Files Coverage
1 23695947661.1 28 Mar 2026 10:41PM UTC 6
94.68
GitHub Action Run
Source Files on build 23695947661
  • Tree
  • List 6
  • Changed 5
  • Source Changed 5
  • Coverage Changed 5
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #23695947661
  • 320979de on github
  • Prev Build on main (#23668503360)
  • Next Build on main (#23698221333)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc