Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -548,6 +548,23 @@ CLI.
include MkDocs. The documentation task is available in the `docs` environment.
**Recommendation**: Run `pixi run -e docs build-docs` to build documentation.

### [2026-08-27] Document the Reverse Aggregation Boundary Contract

**Context**: Coordinating pyjanitor with janitor-rs reverse aggregation kernels.
**Learning**: Reverse match kernels consume a flattened candidate tape. Direct
Rust callers must provide a non-empty tape with the expected shape. Pyjanitor
owns the producer invariant that match values are 0 or 1. A batch whose every
candidate range is zero-width is valid at the Python level, so pyjanitor must
return the typed empty aggregation result before calling Rust. Individual
zero-width rows remain valid when the overall tape is non-empty.
**Recommendation**: Keep this contract documented and tested at both
boundaries: Rust rejects malformed direct inputs, while pyjanitor short-circuits
legitimate no-candidate batches. Treat `length` as a legacy compatibility
argument only when supporting an older janitor-rs wheel.
**ELI5**: Python builds one roll of candidate tickets and Rust checks its shape.
If there are no tickets, Python returns the empty answer instead of handing an
empty roll to Rust.

---

## Version History
Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Changelog

## [Unreleased]
- [PERF] Simplify the `conditional_join` Python/Rust boundary: removed a duplicate `_sum_starts_ends` definition, replaced ~87 repeated per-call dtype-dispatch dicts with one cached dispatcher, and switched `repeat_index` calls to `np.repeat`. - Issue #1649 @samukweku
- [ENH] Avoid copying column data during `conditional_join` input
validation. - Issue #1645, PR #1642 @samukweku
- [ENH] Speed up `conditional_join` with an unsorted right join key and
Expand Down
Loading