From 3a9d4020271d548418f606f37f399a55c5789950 Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Thu, 17 Jun 2021 00:38:15 -0500
Subject: [PATCH] Add a flag to indicate whether an array context permits
 inplace modification

---
 arraycontext/context.py       | 7 ++++++-
 arraycontext/impl/pyopencl.py | 3 +++
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/arraycontext/context.py b/arraycontext/context.py
index 838f969..495dcff 100644
--- a/arraycontext/context.py
+++ b/arraycontext/context.py
@@ -103,7 +103,7 @@ THE SOFTWARE.
 """
 
 from typing import Sequence, Union
-from abc import ABC, abstractmethod
+from abc import ABC, abstractmethod, abstractproperty
 
 import numpy as np
 from pytools import memoize_method
@@ -349,6 +349,11 @@ class ArrayContext(ABC):
             "setup-only" array context "leaks" into the application.
         """
 
+    # undocumented for now
+    @abstractproperty
+    def permits_inplace_modification(self):
+        pass
+
 # }}}
 
 # vim: foldmethod=marker
diff --git a/arraycontext/impl/pyopencl.py b/arraycontext/impl/pyopencl.py
index 9361030..6d8cf75 100644
--- a/arraycontext/impl/pyopencl.py
+++ b/arraycontext/impl/pyopencl.py
@@ -436,6 +436,9 @@ class PyOpenCLArrayContext(ArrayContext):
     def clone(self):
         return type(self)(self.queue, self.allocator, self._wait_event_queue_length)
 
+    def permits_inplace_modification(self):
+        return True
+
 # }}}
 
 # vim: foldmethod=marker
-- 
GitLab