Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat[next] high-level field storage API #1319

Merged
merged 288 commits into from
Nov 15, 2023
Merged
Changes from 2 commits
Commits
Show all changes
288 commits
Select commit Hold shift + click to select a range
c6fc23e
Merge remote-tracking branch 'origin/main' into embedded-field-view-impl
havogt Aug 3, 2023
76ab3ab
Merge remote-tracking branch 'upstream/embedded-field-view-impl' into…
havogt Aug 3, 2023
b9f2f2c
Merge remote-tracking branch 'upstream/embedded-field-view-impl' into…
havogt Aug 3, 2023
9f26f80
refactor[next]: iterator.embedded field_set/getitem accept named indices
havogt Aug 3, 2023
d236b5a
new typealiases
havogt Aug 3, 2023
816a637
Merge remote-tracking branch 'upstream/main' into hacked_iterator_emb…
havogt Aug 3, 2023
ab1bac8
Merge remote-tracking branch 'origin/small_embedded_refactoring' into…
havogt Aug 3, 2023
d113210
- remove runtime.Offset Dimension
havogt Aug 3, 2023
bea8f65
smaller hack
havogt Aug 3, 2023
140c80f
Merge remote-tracking branch 'origin/small_embedded_refactoring' into…
havogt Aug 3, 2023
4bceb83
a bit of refactoring
havogt Aug 3, 2023
44a26c2
missing import
havogt Aug 3, 2023
a8a0324
Introduce Fieldview Domain (#1310)
samkellerhals Aug 8, 2023
d3a7e44
Apply suggestions from code review
havogt Aug 8, 2023
aab3436
fix test
havogt Aug 8, 2023
202fc3b
fix imports
havogt Aug 8, 2023
60b2534
fix import
havogt Aug 8, 2023
c0fe349
Add domain slicing
samkellerhals Aug 8, 2023
0108cd0
Merge remote-tracking branch 'upstream/embedded-field-view-impl' into…
havogt Aug 8, 2023
4fbf5f6
fix import
havogt Aug 8, 2023
4c34135
undo tag->dimension
havogt Aug 8, 2023
6612a70
Merge remote-tracking branch 'upstream/embedded-field-view-impl' into…
havogt Aug 8, 2023
eb152eb
Merge remote-tracking branch 'origin/small_embedded_refactoring' into…
havogt Aug 8, 2023
e41619a
fix _slice_with_domain
samkellerhals Aug 8, 2023
1c423da
fix bug
havogt Aug 8, 2023
01c452a
Add field intersection binary op test
samkellerhals Aug 8, 2023
0085223
translate tag to Dimension
havogt Aug 8, 2023
a49e3cb
Ensure matching dimensions and ranges in Domain
samkellerhals Aug 8, 2023
61c3ae6
fix some test
havogt Aug 8, 2023
ad5e4b2
make field view work
havogt Aug 8, 2023
8bc332a
Merge remote-tracking branch 'origin/main' into embedded-field-view-impl
havogt Aug 9, 2023
506faa5
Merge commit 'a4cbd00d7e49fa5c616e29b299e4443fbde31681' into hacked_i…
havogt Aug 9, 2023
c49e96a
Merge remote-tracking branch 'upstream/embedded-field-view-impl' into…
havogt Aug 9, 2023
c63b927
fix bug in Domain broadcast
havogt Aug 9, 2023
483dc17
undo unrelated changes
havogt Aug 9, 2023
173b065
Merge remote-tracking branch 'upstream/embedded-field-view-impl' into…
havogt Aug 10, 2023
3491533
Merge remote-tracking branch 'upstream/embedded-field-view-impl' into…
havogt Aug 10, 2023
c6ffbb2
Merge remote-tracking branch 'upstream/main' into domain-slicing
havogt Aug 10, 2023
1c5c462
Merge remote-tracking branch 'upstream/main' into hacked_iterator_emb…
havogt Aug 10, 2023
599ee93
address review comment
havogt Aug 10, 2023
f3089b9
Merge remote-tracking branch 'upstream/main' into small_embedded_refa…
havogt Aug 10, 2023
a10fd9c
closer to future getitem
havogt Aug 10, 2023
68b3cf1
make tests pass
havogt Aug 10, 2023
10a0228
Merge remote-tracking branch 'origin/small_embedded_refactoring' into…
havogt Aug 10, 2023
48ce487
Merge remote-tracking branch 'upstream/main' into hacked_iterator_emb…
havogt Aug 10, 2023
079e3b2
Broadcast dimension during slicing
samkellerhals Aug 10, 2023
42eefd6
Broadcast dimension during slicing
samkellerhals Aug 10, 2023
e8fdb9c
Use index instead
samkellerhals Aug 10, 2023
c67232a
remove embedded field test
havogt Aug 10, 2023
f7973a5
Simplify _slice_with_domain
samkellerhals Aug 10, 2023
0c867b6
Add get_slice_with_named_indices
samkellerhals Aug 10, 2023
0dc69b7
Simplify slicing further
samkellerhals Aug 10, 2023
1926d0b
Enable binary field operations on intersection
samkellerhals Aug 11, 2023
496b6dc
Change name
samkellerhals Aug 11, 2023
cecf392
improve typing
havogt Aug 11, 2023
fb5d485
Simplify tests
samkellerhals Aug 11, 2023
73e0440
Add NamedIndex case
samkellerhals Aug 11, 2023
0e160fb
Refactor _get_slices_from_named_indices
samkellerhals Aug 11, 2023
3db6f94
Fix typing and introduce DomainSlice
samkellerhals Aug 11, 2023
6325724
save state
havogt Aug 11, 2023
b7928da
Start Field.__get_item__ implementation
samkellerhals Aug 11, 2023
fbc11ab
Add test for indexing field with domain slice
samkellerhals Aug 11, 2023
2d17419
fix tests
havogt Aug 14, 2023
5ceca3a
undo unnecessary test changes
havogt Aug 14, 2023
8713ae0
cleanup field_setitem/getitem
havogt Aug 14, 2023
18a1df9
prototype
havogt Aug 15, 2023
f25fadb
integration example
havogt Aug 15, 2023
a644400
Merge remote-tracking branch 'upstream/main' into hacked_iterator_emb…
havogt Aug 15, 2023
697f2e0
Merge remote-tracking branch 'samkellerhals/domain-slicing' into hack…
havogt Aug 15, 2023
f3a9d68
integrate domain slice pr
havogt Aug 15, 2023
97ac736
fix ndarray tests
havogt Aug 16, 2023
6cde911
Start with relative slicing impl
samkellerhals Aug 16, 2023
39076e6
Add more tests
samkellerhals Aug 16, 2023
0e4daae
Add absolute/relative indexing
samkellerhals Aug 16, 2023
6701f59
Reformat
samkellerhals Aug 16, 2023
1b936b0
Return value from NamedIndex
samkellerhals Aug 16, 2023
77b0086
cleanup
samkellerhals Aug 16, 2023
3c39da5
improve shiftable
havogt Aug 17, 2023
c0d96fd
more cleanup
havogt Aug 17, 2023
d6bafbc
Cleanup __get_item__
samkellerhals Aug 17, 2023
624076b
Cleanup absolute indexing named index
samkellerhals Aug 17, 2023
dc8b5ff
Refactor code
samkellerhals Aug 17, 2023
910aa7a
fix const field
havogt Aug 17, 2023
5a063e7
Merge remote-tracking branch 'samkellerhals/domain-slicing' into hack…
havogt Aug 17, 2023
2b490e2
integrate slicing again
havogt Aug 17, 2023
72fc98e
fix remaining cases
havogt Aug 17, 2023
4e73857
Remove commented out code
samkellerhals Aug 18, 2023
f3cfe69
Remove unused functions
samkellerhals Aug 18, 2023
c70c748
Format
samkellerhals Aug 18, 2023
ea59177
Cleanup tests
samkellerhals Aug 18, 2023
16541b6
Support slice(None) in relative indexing
samkellerhals Aug 18, 2023
f032fae
Fix _slice_range and add test
samkellerhals Aug 18, 2023
cba68e7
Cleanup
samkellerhals Aug 18, 2023
552737b
more cleanup
samkellerhals Aug 18, 2023
a90fc89
Handle value return relative indexing
samkellerhals Aug 18, 2023
fe26ae0
Make infinity pos neg a property
samkellerhals Aug 18, 2023
69b776d
typing
havogt Aug 18, 2023
6c1f11f
Fix some type issues
samkellerhals Aug 18, 2023
1aada7c
typing
samkellerhals Aug 18, 2023
2e30a8d
fix typing
havogt Aug 21, 2023
3f9a672
fix relative indexing
havogt Aug 21, 2023
36442b3
fix type_conversion for Tuple[...]
havogt Aug 21, 2023
7127de3
fix deprecated classmethod property
havogt Aug 21, 2023
8992f05
restructure tests
havogt Aug 21, 2023
54c6c61
cleanup comment
havogt Aug 21, 2023
cdab8aa
more test refactoring
havogt Aug 21, 2023
b1caec3
Merge remote-tracking branch 'samkellerhals/domain-slicing' into hack…
havogt Aug 21, 2023
330beb4
fix test
havogt Aug 21, 2023
c6492ed
Merge remote-tracking branch 'upstream/main' into hacked_iterator_emb…
havogt Aug 22, 2023
63717b9
Merge remote-tracking branch 'upstream/main' into hacked_iterator_emb…
havogt Aug 22, 2023
915388c
use is_field
havogt Aug 24, 2023
fc797b6
typing improvements
havogt Aug 24, 2023
89c66a2
cleanup
havogt Aug 24, 2023
8966282
cleanup and typing
havogt Aug 24, 2023
d44ab81
Merge remote-tracking branch 'upstream/main' into hacked_iterator_emb…
havogt Aug 24, 2023
00a17fe
fix test after merge
havogt Aug 24, 2023
57145b7
reenable assert
havogt Aug 25, 2023
db77ce7
value_type -> dtype
havogt Aug 25, 2023
1bd43a7
remove __setitem__ from ndarray field
havogt Aug 25, 2023
bbc88f7
address some review comments
havogt Aug 25, 2023
1497a69
fix logical operators
havogt Aug 25, 2023
e89374c
more review comments
havogt Aug 25, 2023
87623fe
remove tmp line
havogt Aug 25, 2023
bde18a1
document interfaces
havogt Aug 25, 2023
8f741dc
refactor[next] Prepare new Field for embedded
havogt Aug 28, 2023
1af72b7
Merge branch 'field_refactoring_prep_itir_embedded' into hacked_itera…
havogt Aug 28, 2023
3d9ae6c
remove changes belonging to itir.embedded pr
havogt Aug 28, 2023
6f72417
cleanup setitem
havogt Aug 28, 2023
62366c2
Merge branch 'field_refactoring_prep_itir_embedded' into hacked_itera…
havogt Aug 28, 2023
78ecdfd
extract domain slicing
havogt Aug 28, 2023
9d29654
add tests
havogt Aug 28, 2023
907d9bc
extract domain slicing
havogt Aug 28, 2023
dd8e0a6
add tests
havogt Aug 28, 2023
29ee689
domain_like and domain construction
havogt Aug 28, 2023
0c858f3
add out-of-bounds check
havogt Aug 29, 2023
9851de2
fix tests
havogt Aug 29, 2023
03880a0
test alike constructors
havogt Aug 29, 2023
02ca534
cleanup
havogt Aug 29, 2023
9df8329
remove duplicated lines
havogt Aug 30, 2023
1d53155
more compact str representation of Domain
havogt Aug 30, 2023
e85abe4
fix error
havogt Aug 30, 2023
874c16c
Merge branch 'field_refactoring_prep_itir_embedded' into hacked_itera…
havogt Aug 30, 2023
901ac15
remove reps
havogt Aug 30, 2023
961effd
Merge branch 'field_refactoring_prep_itir_embedded' into hacked_itera…
havogt Aug 30, 2023
643ffaa
fix test
havogt Aug 30, 2023
ea28701
Merge branch 'field_refactoring_prep_itir_embedded' into hacked_itera…
havogt Aug 30, 2023
4afac84
delete unused function
havogt Aug 30, 2023
18971b0
and some more
havogt Aug 30, 2023
5b14897
fix column out of bounds
havogt Aug 31, 2023
8de4b10
remove line
havogt Aug 31, 2023
e16c4ae
refactor typealiases
havogt Aug 31, 2023
0089737
remaining review comments
havogt Aug 31, 2023
9ca0b53
Merge remote-tracking branch 'upstream/main' into field_refactoring_p…
havogt Aug 31, 2023
4d5f357
Merge branch 'field_refactoring_prep_itir_embedded' into hacked_itera…
havogt Sep 1, 2023
771428b
new api
havogt Sep 1, 2023
a61b3cc
Merge branch 'hacked_iterator_embedded_with_field' into field_storage…
havogt Sep 1, 2023
eb8579c
allocator from program
havogt Sep 1, 2023
9ff35ab
Apply suggestions from code review
havogt Sep 5, 2023
0ceaaf4
address review comments
havogt Sep 5, 2023
d7366cb
fix formatting
havogt Sep 5, 2023
88a73fe
Merge branch 'field_refactoring_prep_itir_embedded' into hacked_itera…
havogt Sep 5, 2023
f2a9030
fix comments
havogt Sep 5, 2023
eaf556d
Merge branch 'field_refactoring_prep_itir_embedded' into hacked_itera…
havogt Sep 5, 2023
9ea5de2
Merge branch 'hacked_iterator_embedded_with_field' into field_storage…
havogt Sep 5, 2023
899b82b
Merge remote-tracking branch 'upstream/main' into hacked_iterator_emb…
havogt Sep 5, 2023
56043ca
Merge branch 'hacked_iterator_embedded_with_field' into field_storage…
havogt Sep 5, 2023
42ae8e4
add missing methods
havogt Sep 5, 2023
2e9eec0
Merge branch 'hacked_iterator_embedded_with_field' into column_oob_fix
havogt Sep 5, 2023
b22d963
fix out-of-bounds access in column mode
havogt Sep 12, 2023
e5b44a1
fix test
havogt Sep 13, 2023
c05bdbb
address review comment
havogt Sep 13, 2023
4edd2f5
fix another typing issue
havogt Sep 13, 2023
336bbb6
Merge branch 'hacked_iterator_embedded_with_field' into field_storage…
havogt Sep 14, 2023
03da5c9
Merge remote-tracking branch 'upstream/main' into field_storage_inter…
havogt Sep 14, 2023
494566b
use allocators in cases
havogt Sep 15, 2023
ed91115
smaller fixes
havogt Sep 18, 2023
72ad6bd
Typing fixes
egparedes Sep 27, 2023
1a052b2
More typing fixes
egparedes Oct 3, 2023
9026109
Merge remote-tracking branch 'origin/main' into field_storage_interface
egparedes Oct 3, 2023
eabea70
Merge remote-tracking branch 'origin/main' into field_storage_interface
egparedes Oct 4, 2023
34771cc
Tentative final API
egparedes Oct 23, 2023
23c276b
Flake8 fixes
egparedes Oct 23, 2023
049d327
Fixes
egparedes Oct 25, 2023
3d8e93f
More fixes
egparedes Oct 25, 2023
a93e8dc
More fixes
egparedes Oct 25, 2023
50f0f85
More fixes
egparedes Oct 25, 2023
cdc9853
More fixes
egparedes Oct 25, 2023
a5e1095
Replace wrong fixes by correct ones
egparedes Oct 25, 2023
2392a78
Try again to use the add the right fix to Program
egparedes Oct 25, 2023
fed796e
Minor fixes
egparedes Oct 26, 2023
f223d00
Merge branch 'main' into field_storage_interface
egparedes Oct 26, 2023
73fae61
WIP changing testing infrastructure
egparedes Nov 2, 2023
c427c7f
WIP fixing tests
egparedes Nov 2, 2023
6dfbccd
More WIP fixing
egparedes Nov 3, 2023
31acbb9
WIP as field in one test
egparedes Nov 3, 2023
69819be
More fixes to as_field
egparedes Nov 3, 2023
e1152a5
More fixes
egparedes Nov 3, 2023
841f037
Use regexp to replace np_as_located_field with as_field
egparedes Nov 3, 2023
e3df3f7
Use second regexp to replace np_as_located_field with as_field even w…
egparedes Nov 3, 2023
905f182
Minor fixes
egparedes Nov 3, 2023
4463b44
Fixes
egparedes Nov 3, 2023
e67bea4
Remove np_as_located_field
egparedes Nov 6, 2023
4cf1317
Fixes
egparedes Nov 6, 2023
436aaa5
TODOs
egparedes Nov 7, 2023
6b9f3fa
Merge branch 'main' into field_storage_interface
egparedes Nov 7, 2023
60199a6
add deprecation notice to ADR 0008
Nov 8, 2023
7fab22b
improve docstrings in next.constructors
Nov 8, 2023
c083380
tests for constructors
nfarabullini Nov 9, 2023
22764e2
edits to QuickStartGuide
nfarabullini Nov 9, 2023
a49a611
minor correction
nfarabullini Nov 9, 2023
55e8177
minor correction
nfarabullini Nov 9, 2023
a2f3ec9
added test
nfarabullini Nov 9, 2023
c0910e9
edits to tests
nfarabullini Nov 10, 2023
602c957
Fix constructors
egparedes Nov 12, 2023
cbb3ae6
Merge remote-tracking branch 'havogt/field_storage_interface' into fi…
egparedes Nov 12, 2023
0a389eb
Fixes
egparedes Nov 12, 2023
80f36fc
Restore and deprecate `np_as_located_field`
egparedes Nov 12, 2023
c3b83a9
Update docs/development/ADRs/Index.md
egparedes Nov 12, 2023
a6676a0
Update src/gt4py/next/common.py
egparedes Nov 12, 2023
10b3959
Typo
egparedes Nov 12, 2023
b5b4ada
Fix docstrings.
egparedes Nov 12, 2023
f01fd06
Style
egparedes Nov 12, 2023
99e8856
Add unit test for next.allocators and many other fixes for reviewer's…
egparedes Nov 13, 2023
3f2dfe5
Move test_constructors to right location
egparedes Nov 13, 2023
e463dbb
Code style changes
egparedes Nov 13, 2023
2d63851
Add missing docs and tests for extended_typing additions
egparedes Nov 13, 2023
864e960
Fix constructors docs
egparedes Nov 14, 2023
dc88138
Fix constructor docstrings
egparedes Nov 14, 2023
12ccc42
edits to tests
nfarabullini Nov 14, 2023
83a2951
Mypy fixes
egparedes Nov 14, 2023
3d5c98d
Merge remote-tracking branch 'havogt/field_storage_interface' into fi…
egparedes Nov 14, 2023
a501346
Fix bug introduced in mypy fixes
egparedes Nov 14, 2023
a53710a
cleanup for test_constructors
nfarabullini Nov 14, 2023
15d630d
More mypy fixes
egparedes Nov 14, 2023
6a1426d
More mypy fixes
egparedes Nov 14, 2023
5aba552
Merge remote-tracking branch 'havogt/field_storage_interface' into fi…
egparedes Nov 14, 2023
9f04ec5
More mypy fixes
egparedes Nov 14, 2023
f64e269
fix filter_kwargs
havogt Nov 14, 2023
63c40cf
(Hopefully) final mypy fixes
egparedes Nov 14, 2023
5d6a58e
Merge remote-tracking branch 'havogt/field_storage_interface' into fi…
egparedes Nov 14, 2023
fb825e1
'fix' failing tests
havogt Nov 14, 2023
392b58c
Complete unit tests for processor_interface
egparedes Nov 14, 2023
f1e1e02
Merge remote-tracking branch 'havogt/field_storage_interface' into fi…
egparedes Nov 14, 2023
a11b097
fix constructors.empty doctest
havogt Nov 14, 2023
bfb5653
Fix get_allocator test
egparedes Nov 14, 2023
bf9caa0
Add proper todo description
egparedes Nov 14, 2023
7756a8e
Fix gtfn gpu backend and executor definitions
egparedes Nov 14, 2023
739604e
Typo
egparedes Nov 14, 2023
bfbc65c
Address open reviewer's comments in test_constructors
egparedes Nov 14, 2023
2dc0cfc
fix field constructor tests
Nov 15, 2023
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
65 changes: 31 additions & 34 deletions src/gt4py/next/iterator/embedded.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,8 @@ def mapped_index(self, primary: IntIndex, neighbor_idx: IntIndex) -> IntIndex:
#: A ``None`` position flags invalid not-a-neighbor results in neighbor-table lookups
MaybePosition: TypeAlias = Optional[Position]

NamedFieldIndices: TypeAlias = Mapping[Tag, FieldIndex | SparsePositionEntry]


def is_int_index(p: Any) -> TypeGuard[IntIndex]:
return isinstance(p, (int, np.integer))
Expand Down Expand Up @@ -692,19 +694,18 @@ def _get_axes(


def _single_vertical_idx(
indices: FieldIndices, column_axis_idx: int, column_index: IntIndex
) -> tuple[FieldIndex, ...]:
transformed = tuple(
index if i != column_axis_idx else column_index for i, index in enumerate(indices)
)
indices: NamedFieldIndices, column_axis: Tag, column_index: IntIndex
) -> NamedFieldIndices:
transformed = {
axis: (index if axis != column_axis else column_index) for axis, index in indices.items()
}
return transformed


@overload
def _make_tuple(
field_or_tuple: tuple[tuple | common.Field, ...], # arbitrary nesting of tuples of Field
indices: FieldIndices,
*,
named_indices: NamedFieldIndices,
column_axis: Tag,
) -> tuple[tuple | Column, ...]:
...
Expand All @@ -713,28 +714,32 @@ def _make_tuple(
@overload
def _make_tuple(
field_or_tuple: tuple[tuple | Field, ...], # arbitrary nesting of tuples of Field
indices: FieldIndices,
*,
named_indices: NamedFieldIndices,
column_axis: Literal[None] = None,
) -> tuple[tuple | npt.DTypeLike, ...]: # arbitrary nesting
...


@overload
def _make_tuple(field_or_tuple: common.Field, indices: FieldIndices, *, column_axis: Tag) -> Column:
def _make_tuple(
field_or_tuple: common.Field, named_indices: NamedFieldIndices, *, column_axis: Tag
) -> Column:
...


@overload
def _make_tuple(
field_or_tuple: common.Field, indices: FieldIndices, *, column_axis: Literal[None] = None
field_or_tuple: common.Field,
named_indices: NamedFieldIndices,
*,
column_axis: Literal[None] = None,
) -> npt.DTypeLike:
...


def _make_tuple(
field_or_tuple: common.Field | tuple[tuple | common.Field, ...],
indices: FieldIndices,
named_indices: NamedFieldIndices,
*,
column_axis: Optional[Tag] = None,
) -> Column | npt.DTypeLike | tuple[tuple | Column | npt.DTypeLike, ...]:
Expand All @@ -743,11 +748,8 @@ def _make_tuple(
if column_axis is not None:
assert column_range
# construct a Column of tuples
column_axis_idx = _axis_idx(_get_axes(field_or_tuple), column_axis)
if column_axis_idx is None:
column_axis_idx = -1 # field doesn't have the column index, e.g. ContantField
first = tuple(
_make_tuple(f, _single_vertical_idx(indices, column_axis_idx, column_range.start))
_make_tuple(f, _single_vertical_idx(named_indices, column_axis, column_range.start))
for f in field_or_tuple
)
col = Column(
Expand All @@ -756,14 +758,14 @@ def _make_tuple(
col[0] = first
for i in column_range[1:]:
col[i] = tuple(
_make_tuple(f, _single_vertical_idx(indices, column_axis_idx, i))
_make_tuple(f, _single_vertical_idx(named_indices, column_axis, i))
for f in field_or_tuple
)
return col
else:
return tuple(_make_tuple(f, indices) for f in field_or_tuple)
return tuple(_make_tuple(f, named_indices) for f in field_or_tuple)
else:
data = field_or_tuple.field_getitem(indices)
data = field_or_tuple.field_getitem(named_indices)
if column_axis is not None:
# wraps a vertical slice of an input field into a `Column`
assert column_range is not None
Expand Down Expand Up @@ -822,13 +824,10 @@ def deref(self) -> Any:
slice_column[self.column_axis] = range(k_pos, k_pos + len(column_range))

assert _is_concrete_position(shifted_pos)
ordered_indices = get_ordered_indices(
axes,
{**shifted_pos, **slice_column},
)
position = {**shifted_pos, **slice_column}
return _make_tuple(
self.field,
ordered_indices,
position,
column_axis=self.column_axis,
)

Expand Down Expand Up @@ -949,9 +948,7 @@ def _is_sparse_position_entry(
return isinstance(pos, list)


def get_ordered_indices(
axes: Iterable[Axis], pos: Mapping[Tag, FieldIndex | SparsePositionEntry]
) -> tuple[FieldIndex, ...]:
def get_ordered_indices(axes: Iterable[Axis], pos: NamedFieldIndices) -> tuple[FieldIndex, ...]:
res: list[FieldIndex] = []
sparse_position_tracker: dict[Tag, int] = {}
for axis in axes:
Expand Down Expand Up @@ -1069,7 +1066,8 @@ def __init__(self, axis: common.Dimension, dtype: npt.DTypeLike) -> None:
self.axis = axis
self.dtype = np.dtype(dtype)

def field_getitem(self, index: FieldIndexOrIndices) -> Any:
def field_getitem(self, named_indices: NamedFieldIndices) -> Any:
index = get_ordered_indices(self.__gt_dims__, named_indices)
if isinstance(index, int):
return self.dtype.type(index)
else:
Expand All @@ -1090,7 +1088,7 @@ def __init__(self, value: Any, dtype: npt.DTypeLike):
self.value = value
self.dtype = np.dtype(dtype).type

def field_getitem(self, _: FieldIndexOrIndices) -> Any:
def field_getitem(self, _: NamedFieldIndices) -> Any:
return self.dtype(self.value)

@property
Expand Down Expand Up @@ -1311,7 +1309,8 @@ def __init__(self, data):
axeses = _get_axeses(data)
self.__gt_dims__ = axeses[0]

def field_getitem(self, indices):
def field_getitem(self, named_indices: NamedFieldIndices):
indices = get_ordered_indices(self.__gt_dims__, named_indices)
return _build_tuple_result(self.data, indices)

def field_setitem(self, indices, value):
Expand Down Expand Up @@ -1417,15 +1416,13 @@ def _closure_runner():

if column is None:
assert _is_concrete_position(pos)
ordered_indices = get_ordered_indices(_get_axes(out), pos)
out.field_setitem(ordered_indices, res)
out.field_setitem(pos, res)
else:
col_pos = pos.copy()
for k in column.col_range:
col_pos[column.axis] = k
assert _is_concrete_position(col_pos)
ordered_indices = get_ordered_indices(_get_axes(out), col_pos)
out.field_setitem(ordered_indices, res[k])
out.field_setitem(col_pos, res[k])

ctx = cvars.copy_context()
ctx.run(_closure_runner)
Expand Down