[Checkins] SVN: manuel/branches/pwilson-try-fake-modules/src/manuel/fake_module.py Bug fixes arising for experimentation with fake modules mixed with
Paul Wilson
paulalexwilson at gmail.com
Wed Oct 28 08:39:05 EDT 2009
Log message for revision 105323:
Bug fixes arising for experimentation with fake modules mixed with
regular doctests.
Fixed:
* Exception relating to not having the manueltest.fake modules
set up in sys.modules before exec'ing.
* Now checking that the execute function operations on parsed
regions that inherit from our FakeModule class.
Changed:
U manuel/branches/pwilson-try-fake-modules/src/manuel/fake_module.py
-=-
Modified: manuel/branches/pwilson-try-fake-modules/src/manuel/fake_module.py
===================================================================
--- manuel/branches/pwilson-try-fake-modules/src/manuel/fake_module.py 2009-10-28 10:23:58 UTC (rev 105322)
+++ manuel/branches/pwilson-try-fake-modules/src/manuel/fake_module.py 2009-10-28 12:39:04 UTC (rev 105323)
@@ -18,6 +18,9 @@
def find_fakes(document):
for region in document.find_regions(FAKE_MODULE_START, FAKE_MODULE_END):
+ if region.parsed:
+ continue
+
module_name = region.start_match.group('module_name')
# Sanitise indentation
source = textwrap.dedent('\n'.join(region.source.splitlines()[1:]))
@@ -28,6 +31,9 @@
region.parsed = FakeModuleSnippet(code, module_name)
def execute_into_module(region, document, doc_globs):
+ if not isinstance(region.parsed, FakeModuleSnippet):
+ return
+
# build a suitable module
module_name = region.parsed.module_name
full_module_name = MODULE_NS + "." + module_name
@@ -35,21 +41,22 @@
module_name_parts = full_module_name.split('.')
module.__file__ = '/' + '/'.join(module_name_parts)
- exec region.parsed.code in module.__dict__
-
- # Make the module visible and usable in the given name
- doc_globs[module_name] = module
-
# Make the module also available through normal import
if not MODULE_NS in sys.modules:
sys.modules['manueltest'] = new.module('manueltest')
sys.modules['manueltest.fake'] = new.module('manueltest.fake')
sys.modules['manueltest'].fake = sys.modules['manueltest.fake']
+ exec region.parsed.code in module.__dict__
+ # XXX Do I want del module['__builtin__']??
+
+ # Make the module visible and usable in the given name
+ doc_globs[module_name] = module
+
sys.modules[full_module_name] = module
setattr(sys.modules['manueltest.fake'], full_module_name.split('.')[-1],
module)
class Manuel(manuel.Manuel):
def __init__(self):
- manuel.Manuel.__init__(self, [find_modules], [execute_into_module])
+ manuel.Manuel.__init__(self, [find_fakes], [execute_into_module])
More information about the checkins
mailing list