Skip to content

Structure heterogeneous tuples from iterable inputs - #814

Open
Gabrieljr42 wants to merge 1 commit into
python-attrs:mainfrom
Gabrieljr42:fix/heterogeneous-tuple-iterables
Open

Gabrieljr42 wants to merge 1 commit into
python-attrs:mainfrom
Gabrieljr42:fix/heterogeneous-tuple-iterables

Conversation

@Gabrieljr42

Copy link
Copy Markdown

Heterogeneous tuples are documented to accept iterable inputs, but the generated structurer uses len(o) and o[index] directly. For example, Converter().structure(iter(['1', 2]), tuple[int, str]) raises TypeError instead of returning (1, '2').

Materialize non-list/tuple iterables once before conversion. Keep list and tuple inputs without a copy, preserve exact-length validation in both validation modes, and let iteration exceptions propagate.

Add regression coverage for iterators, generators, empty tuples, short/long inputs, invalid element conversion, and iteration errors. The new regressions fail against the original generated implementation. Update HISTORY.md.

Validation with the locked dependencies on Python 3.14: the complete test suite passed (1,160 passed, 20 skipped, 15 expected failures). Ruff check and formatting checks passed. Implementation used a Luna agent followed by an independent review, reproduction against the original source, and the full test run.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant