[cig-commits] r7810 - in cs/pythia/trunk/pyre: inventory
parsing/locators weaver
leif at geodynamics.org
leif at geodynamics.org
Fri Aug 10 23:46:15 PDT 2007
Author: leif
Date: 2007-08-10 23:46:14 -0700 (Fri, 10 Aug 2007)
New Revision: 7810
Modified:
cs/pythia/trunk/pyre/inventory/Configurable.py
cs/pythia/trunk/pyre/parsing/locators/ChainLocator.py
cs/pythia/trunk/pyre/parsing/locators/FileLocator.py
cs/pythia/trunk/pyre/parsing/locators/ScriptLocator.py
cs/pythia/trunk/pyre/parsing/locators/SimpleFileLocator.py
cs/pythia/trunk/pyre/parsing/locators/SimpleLocator.py
cs/pythia/trunk/pyre/weaver/Weaver.py
Log:
Inserted some hacks which make Pyre Components pickle-able.
Modified: cs/pythia/trunk/pyre/inventory/Configurable.py
===================================================================
--- cs/pythia/trunk/pyre/inventory/Configurable.py 2007-08-11 05:22:12 UTC (rev 7809)
+++ cs/pythia/trunk/pyre/inventory/Configurable.py 2007-08-11 06:46:14 UTC (rev 7810)
@@ -327,6 +327,12 @@
return self.Inventory(self.name)
+ def createMetaInventory(self):
+ """create my meta-inventory instance"""
+ from MetaInventory import MetaInventory
+ return MetaInventory(self.inventory)
+
+
def __init__(self, name=None):
Traceable.__init__(self)
@@ -337,8 +343,7 @@
self.inventory = self.createInventory()
# provide simple, convenient access to descriptors
- from MetaInventory import MetaInventory
- self.metainventory = MetaInventory(self.inventory)
+ self.metainventory = self.createMetaInventory()
# other names by which I am known for configuration purposes
self.aliases = [ name ]
@@ -357,6 +362,28 @@
return
+ def __getstate__(self):
+ # copy the dictionary, since we change it
+ odict = self.__dict__.copy()
+
+ # convert inventory to picklable form
+ from Inventory import Inventory
+ from copy import copy
+ inventory = copy(odict['inventory'])
+ inventory.__class__ = Inventory
+ odict['inventory'] = inventory
+ del odict['metainventory']
+
+ return odict
+
+
+ def __setstate__(self, dict):
+ self.__dict__.update(dict)
+ self.inventory.__class__ = self.Inventory
+ self.metainventory = self.createMetaInventory()
+ return
+
+
# default implementations for the lifecycle management hooks
def _defaults(self):
"""modify the default inventory values"""
Modified: cs/pythia/trunk/pyre/parsing/locators/ChainLocator.py
===================================================================
--- cs/pythia/trunk/pyre/parsing/locators/ChainLocator.py 2007-08-11 05:22:12 UTC (rev 7809)
+++ cs/pythia/trunk/pyre/parsing/locators/ChainLocator.py 2007-08-11 06:46:14 UTC (rev 7810)
@@ -25,6 +25,16 @@
return "%s via %s" % (self.this, self.next)
+ def __getstate__(self):
+ return dict(this = self.this, next = self.next)
+
+
+ def __setstate__(self, dict):
+ self.this = dict['this']
+ self.next = dict['next']
+ return
+
+
def getAttributes(self, attr):
return
Modified: cs/pythia/trunk/pyre/parsing/locators/FileLocator.py
===================================================================
--- cs/pythia/trunk/pyre/parsing/locators/FileLocator.py 2007-08-11 05:22:12 UTC (rev 7809)
+++ cs/pythia/trunk/pyre/parsing/locators/FileLocator.py 2007-08-11 06:46:14 UTC (rev 7810)
@@ -26,6 +26,17 @@
return "{file=%r, line=%r, column=%r}" % (self.source, self.line, self.column)
+ def __getstate__(self):
+ return dict(source = self.source, line = self.line, column = self.column)
+
+
+ def __setstate__(self, dict):
+ self.source = dict['source']
+ self.line = dict['line']
+ self.column = dict['column']
+ return
+
+
def getAttributes(self, attr):
import linecache
attr["filename"] = self.source
@@ -36,6 +47,7 @@
__slots__ = ("source", "line", "column")
+
# version
__id__ = "$Id: FileLocator.py,v 1.1.1.1 2005/03/08 16:13:48 aivazis Exp $"
Modified: cs/pythia/trunk/pyre/parsing/locators/ScriptLocator.py
===================================================================
--- cs/pythia/trunk/pyre/parsing/locators/ScriptLocator.py 2007-08-11 05:22:12 UTC (rev 7809)
+++ cs/pythia/trunk/pyre/parsing/locators/ScriptLocator.py 2007-08-11 06:46:14 UTC (rev 7810)
@@ -25,7 +25,18 @@
def __str__(self):
return "{file=%r, line=%r, function=%r}" % (self.source, self.line, self.function)
-
+
+ def __getstate__(self):
+ return dict(source = self.source, line = self.line, function = self.function)
+
+
+ def __setstate__(self, dict):
+ self.source = dict['source']
+ self.line = dict['line']
+ self.function = dict['function']
+ return
+
+
def getAttributes(self, attr):
import linecache
attr["filename"] = self.source
Modified: cs/pythia/trunk/pyre/parsing/locators/SimpleFileLocator.py
===================================================================
--- cs/pythia/trunk/pyre/parsing/locators/SimpleFileLocator.py 2007-08-11 05:22:12 UTC (rev 7809)
+++ cs/pythia/trunk/pyre/parsing/locators/SimpleFileLocator.py 2007-08-11 06:46:14 UTC (rev 7810)
@@ -24,6 +24,15 @@
return "{file=%r}" % (self.source)
+ def __getstate__(self):
+ return dict(source = self.source)
+
+
+ def __setstate__(self, dict):
+ self.source = dict['source']
+ return
+
+
def getAttributes(self, attr):
attr["filename"] = self.source
return
Modified: cs/pythia/trunk/pyre/parsing/locators/SimpleLocator.py
===================================================================
--- cs/pythia/trunk/pyre/parsing/locators/SimpleLocator.py 2007-08-11 05:22:12 UTC (rev 7809)
+++ cs/pythia/trunk/pyre/parsing/locators/SimpleLocator.py 2007-08-11 06:46:14 UTC (rev 7810)
@@ -24,6 +24,15 @@
return "{%s}" % self.source
+ def __getstate__(self):
+ return dict(source = self.source)
+
+
+ def __setstate__(self, dict):
+ self.source = dict['source']
+ return
+
+
def getAttributes(self, attr):
attr['filename'] = str(self)
return
Modified: cs/pythia/trunk/pyre/weaver/Weaver.py
===================================================================
--- cs/pythia/trunk/pyre/weaver/Weaver.py 2007-08-11 05:22:12 UTC (rev 7809)
+++ cs/pythia/trunk/pyre/weaver/Weaver.py 2007-08-11 06:46:14 UTC (rev 7810)
@@ -60,7 +60,9 @@
def render(self, document=None):
self._renderer.options = self.inventory
- return self._renderer.weave(document)
+ ret = self._renderer.weave(document)
+ self._renderer.options = None
+ return ret
def begin(self):
@@ -76,6 +78,7 @@
def end(self):
self._renderer.end()
+ self._renderer.options = None
return
More information about the cig-commits
mailing list