aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter/interpreterobjects.py
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2021-03-03 12:48:30 -0500
committerXavier Claessens <xclaesse@gmail.com>2021-05-28 15:17:10 -0400
commit3340284805b96a4b9b62405f626020276341944c (patch)
tree83ff4cbaed7db7d89360eedbfa63930c2e0c68a6 /mesonbuild/interpreter/interpreterobjects.py
parent723c5227a471aff3a1a5a3bc481984c99bf592aa (diff)
downloadmeson-3340284805b96a4b9b62405f626020276341944c.zip
meson-3340284805b96a4b9b62405f626020276341944c.tar.gz
meson-3340284805b96a4b9b62405f626020276341944c.tar.bz2
modules: Stop using InterpreterObject
Custom objects returned by modules must be subclass of ModuleObject and have the state argument in its methods. Add MutableModuleObject base class for objects that needs to be deep copied on assignation.
Diffstat (limited to 'mesonbuild/interpreter/interpreterobjects.py')
-rw-r--r--mesonbuild/interpreter/interpreterobjects.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/mesonbuild/interpreter/interpreterobjects.py b/mesonbuild/interpreter/interpreterobjects.py
index 1c64f5b..3f76e4e 100644
--- a/mesonbuild/interpreter/interpreterobjects.py
+++ b/mesonbuild/interpreter/interpreterobjects.py
@@ -2,6 +2,7 @@ import os
import shlex
import subprocess
import re
+import copy
from pathlib import Path, PurePath
@@ -810,6 +811,12 @@ class ModuleObjectHolder(InterpreterObject, ObjectHolder['ModuleObject']):
ret = ret.return_value
return self.interpreter.holderify(ret)
+class MutableModuleObjectHolder(ModuleObjectHolder, MutableInterpreterObject):
+ def __deepcopy__(self, memo):
+ # Deepcopy only held object, not interpreter
+ modobj = copy.deepcopy(self.held_object, memo)
+ return MutableModuleObjectHolder(modobj, self.interpreter)
+
_Target = T.TypeVar('_Target', bound=build.Target)