Skip to content

Commit 1bb16e1

Browse files
authored
Add arrow input array support for .many() (#621)
* Initial .many(arrow_array) * Test with polars/nanoarrow/arro3 * Fix MSRV * Add arrow pckgs to [test] * Fix wheel tests * Revert test_arrow_input.py creation * Add many(arrow) examples to readme * Use UPath for s3 example * Fix readme example * Do not test polars with free-threading * Do not test polars with free-threading * Remove nanoarrow from free-threading
1 parent b270849 commit 1bb16e1

File tree

10 files changed

+1155
-99
lines changed

10 files changed

+1155
-99
lines changed

CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99

1010
### Added
1111

12-
--
12+
- Arrow input support for `.many()`: pass a `List<Struct<t, m[, sigma]>>` Arrow array (or chunked array)
13+
instead of a list of tuples. Works with any library implementing the Arrow C Data Interface
14+
(`__arrow_c_array__` / `__arrow_c_stream__`), including pyarrow, polars, nanoarrow, and arro3.
15+
Two struct fields means `(t, m)` without sigma, three fields means `(t, m, sigma)`. Field names are
16+
ignored; all fields must share the same float dtype (float32 or float64).
1317

1418
### Changed
1519

CLAUDE.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,11 @@ periodogram), `gsl`, `mimalloc`. Default features include abi3, ceres-source, gs
8080

8181
**Code style**: Line length 120, Python target 3.10+, Ruff for Python linting (rules: F, E, W, I001, NPY201).
8282

83+
**Rust style**: Write idiomatic Rust — prefer immutability by default (`let` over `let mut`), use iterators and
84+
combinators (`.map()`, `.filter()`, `.collect()`, `.fold()`, etc.) instead of imperative `for` loops with manual
85+
accumulation, leverage pattern matching and `if let`/`let else` over nested `if`/`else` chains, use `?` for error
86+
propagation, and prefer owned types only when necessary (borrow when possible).
87+
8388
## Adding a New Feature Extractor
8489

8590
1. Core implementation goes in upstream `light-curve-feature` Rust crate

0 commit comments

Comments
 (0)