The .NET namespaces don't live in sys.modules instead they live in their own
hierarchy which is implemented as a "ReflectedPackage" class. The
ReflectedPackage is checked after we fail to find the module in sys.modules so
if you to stick something into sys.modules you'll take precedence over the
namespaces.
If you want to delegate back to the normal .NET namespaces you'll want to
import the namespace first, then patch sys.modules, and have your module
delegate back.
Something like:
import System as S
class myclass(object):
def __init__(self, backing):
self.backing = backing
def __getattr__(self, name):
# your interception here
return getattr(self.backing, name)
import sys
sys.modules['System'] = myclass(S)
import System.Drawing # myclass.__getattr__ is called for Drawing
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of William Reade
Sent: Tuesday, March 20, 2007 12:10 PM
To: Discussion of IronPython
Subject: [IronPython] Patching sys.modules to hide CLR 'modules'
Hi all
I recently wanted to do as described in the subject line. However, it
seems that when I import (say) System.Drawing, there is no detectable
change to sys.modules, and so I cannot temporarily replace it with my
own module in order to substitute simpler functionality for testing
purposes*. Is this correct? If so, can I work around it, and what
exciting pitfalls will I walk into if I try?
William
* That is to say, I cannot monkey-patch anything in sys.modules that
didn't come from IronPython.
--
William Reade
Resolver Systems
[EMAIL PROTECTED]
Office address: 17a Clerkenwell Road, London EC1M 5RD, UK
Registered address: 843 Finchley Road, London NW11 8NA, UK
Resolver Systems Limited is registered in England and Wales as company number
5467329.
_______________________________________________
users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
_______________________________________________
users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com