diff --git a/arraycontext/context.py b/arraycontext/context.py index 31ceb4083a574be3e3b2b006fae207e204135769..379c8e92d8aefb1b0c5cf23b8b485314029b2bef 100644 --- a/arraycontext/context.py +++ b/arraycontext/context.py @@ -361,6 +361,14 @@ class ArrayContext(ABC): def supports_nonscalar_broadcasting(self): pass + @abstractproperty + def permits_advanced_indexing(self): + """ + *True* only if the arrays support :mod:`numpy`'s advanced indexing + semantics. + """ + pass + # }}} # vim: foldmethod=marker diff --git a/arraycontext/impl/pyopencl/__init__.py b/arraycontext/impl/pyopencl/__init__.py index cd9c02a2f963583f84930c98e0ada4c688344795..18836ef25b33e9ad1547a2f85ff73b0946a9b0be 100644 --- a/arraycontext/impl/pyopencl/__init__.py +++ b/arraycontext/impl/pyopencl/__init__.py @@ -282,6 +282,10 @@ class PyOpenCLArrayContext(ArrayContext): def supports_nonscalar_broadcasting(self): return False + @property + def permits_advanced_indexing(self): + return False + # }}} # vim: foldmethod=marker diff --git a/arraycontext/impl/pytato/__init__.py b/arraycontext/impl/pytato/__init__.py index 0f5ad12f1147ca2cb19a6ee3ce6dafd9fc0e393a..963143096bd9bad9f0e6a85460acb4db3faa3b8a 100644 --- a/arraycontext/impl/pytato/__init__.py +++ b/arraycontext/impl/pytato/__init__.py @@ -231,3 +231,7 @@ class PytatoPyOpenCLArrayContext(ArrayContext): @property def supports_nonscalar_broadcasting(self): return True + + @property + def permits_advanced_indexing(self): + return True