Skip to content

Commit

Permalink
Backport PR #1040: Fix for awkward 2.3 (#1069)
Browse files Browse the repository at this point in the history
Co-authored-by: Isaac Virshup <[email protected]>
  • Loading branch information
meeseeksmachine and ivirshup authored Jul 24, 2023
1 parent 0b2901a commit 2011a1e
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 4 deletions.
4 changes: 2 additions & 2 deletions anndata/_core/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,7 @@ def __copy__(self) -> AwkArray:
array = self
# makes a shallow copy and removes the reference to the original AnnData object
array = ak.with_parameter(self, _PARAM_NAME, None)
array = ak.with_parameter(array, "__array__", None)
array = ak.with_parameter(array, "__list__", None)
return array

@as_view.register(AwkArray)
Expand All @@ -294,7 +294,7 @@ def as_view_awkarray(array, view_args):
"Please open an issue in the AnnData repo and describe your use-case."
)
array = ak.with_parameter(array, _PARAM_NAME, (parent_key, attrname, keys))
array = ak.with_parameter(array, "__array__", "AwkwardArrayView")
array = ak.with_parameter(array, "__list__", "AwkwardArrayView")
return array

ak.behavior["AwkwardArrayView"] = AwkwardArrayView
Expand Down
14 changes: 13 additions & 1 deletion anndata/tests/test_awkward.py
Original file line number Diff line number Diff line change
Expand Up @@ -147,8 +147,20 @@ def test_view(key):
def test_view_of_awkward_array_with_custom_behavior():
"""Currently can't create view of arrays with custom __name__ (in this case "string")
See https://github.com/scverse/anndata/pull/647#discussion_r963494798_"""

from uuid import uuid4

BEHAVIOUR_ID = str(uuid4())

class ReversibleArray(ak.Array):
def reversed(self):
return self[..., ::-1]

ak.behavior[BEHAVIOUR_ID] = ReversibleArray
adata = gen_adata((3, 3), varm_types=(), obsm_types=(), layers_types=())
adata.obsm["awk_string"] = ak.Array(["AAA", "BBB", "CCC"])
adata.obsm["awk_string"] = ak.with_parameter(
ak.Array(["AAA", "BBB", "CCC"]), "__list__", BEHAVIOUR_ID
)
adata_view = adata[:2]

with pytest.raises(NotImplementedError):
Expand Down
1 change: 1 addition & 0 deletions docs/release-notes/0.9.2.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
```{rubric} Bugfix
```

* Views of `awkward.Array`s now work with `awkward>=2.3` {pr}`1040` {user}`ivirshup`
* Fix ufuncs of views like `adata.X[:10].cov(axis=0)` returning views {pr}`1043` {user}`flying-sheep`
* Fix instantiating AnnData where `.X` is a `DataFrame` with an integer valued index {pr}`1002` {user}`flying-sheep`
* Fix {func}`~anndata.read_zarr` when used on `zarr.Group` {pr}`1057` {user}`ivirshup`
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ test = [
"boltons",
"scanpy",
"dask[array]",
"awkward>=2.0.8,<2.3",
"awkward>=2.3",
"pytest_memray",
]

Expand Down

0 comments on commit 2011a1e

Please sign in to comment.