You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildstream.apache.org by gi...@apache.org on 2020/12/29 13:22:20 UTC

[buildstream] 30/33: WIP: pickle: remove PicklablePluginProxy

This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch aevri/picklable_jobs
in repository https://gitbox.apache.org/repos/asf/buildstream.git

commit b51a0b8ad9f42b43de3056cd5a0dba4edee8fbc4
Author: Angelos Evripiotis <je...@bloomberg.net>
AuthorDate: Wed Apr 10 13:07:14 2019 +0100

    WIP: pickle: remove PicklablePluginProxy
---
 src/buildstream/_elementfactory.py |  2 +-
 src/buildstream/_plugincontext.py  | 45 --------------------------------------
 src/buildstream/_sourcefactory.py  |  2 +-
 3 files changed, 2 insertions(+), 47 deletions(-)

diff --git a/src/buildstream/_elementfactory.py b/src/buildstream/_elementfactory.py
index 1a99e33..43fac24 100644
--- a/src/buildstream/_elementfactory.py
+++ b/src/buildstream/_elementfactory.py
@@ -18,7 +18,7 @@
 #        Tristan Van Berkom <tr...@codethink.co.uk>
 
 from . import _site
-from ._plugincontext import PluginContext, PicklablePluginProxy
+from ._plugincontext import PluginContext
 from .element import Element
 
 
diff --git a/src/buildstream/_plugincontext.py b/src/buildstream/_plugincontext.py
index 3fee59b..0d322c1 100644
--- a/src/buildstream/_plugincontext.py
+++ b/src/buildstream/_plugincontext.py
@@ -25,51 +25,6 @@ from . import utils
 from . import _yaml
 
 
-class PicklablePluginProxy():
-
-    def __init__(self, plugin_to_proxy, factory, kind):
-        object.__setattr__(self, '_PicklablePluginProxy__plugin', plugin_to_proxy)
-        object.__setattr__(self, '_PicklablePluginProxy__factory', factory)
-        object.__setattr__(self, '_PicklablePluginProxy__kind', kind)
-
-    def __getattr__(self, name):
-        return getattr(self.__plugin, name)
-
-    def __setattr__(self, name, value):
-        return setattr(self.__plugin, name, value)
-
-    def __getstate__(self):
-        # print("Pickling plugin", self.__plugin, repr(self.__plugin))
-        plugin_dict = self.__plugin.__dict__.copy()
-        try:
-            # We end up with excessive (infinite?) recursion if we keep these.
-            # TODO: figure out why, pickle is meant to handle cycles.
-            del plugin_dict["_Element__reverse_dependencies"]
-        except KeyError as k:
-            # print(k)
-            pass
-        return {
-            'factory': self.__factory,
-            'kind': self.__kind,
-            'plugin_dict': plugin_dict,
-        }
-
-    def __setstate__(self, state):
-        factory = state['factory']
-        kind = state['kind']
-        plugin_dict = state['plugin_dict']
-
-        cls, _ = factory.lookup(kind)
-        plugin = cls.__new__(cls)
-        plugin.__dict__ = plugin_dict
-
-        object.__setattr__(self, '_PicklablePluginProxy__plugin', plugin)
-        object.__setattr__(self, '_PicklablePluginProxy__factory', factory)
-        object.__setattr__(self, '_PicklablePluginProxy__kind', kind)
-
-        # print("Unpickled plugin", plugin, repr(plugin))
-
-
 # A Context for loading plugin types
 #
 # Args:
diff --git a/src/buildstream/_sourcefactory.py b/src/buildstream/_sourcefactory.py
index a9f3ff6..eca4b50 100644
--- a/src/buildstream/_sourcefactory.py
+++ b/src/buildstream/_sourcefactory.py
@@ -18,7 +18,7 @@
 #        Tristan Van Berkom <tr...@codethink.co.uk>
 
 from . import _site
-from ._plugincontext import PluginContext, PicklablePluginProxy
+from ._plugincontext import PluginContext
 from .source import Source