Phillip J. Eby wrote: > Just as a point of reference, the Importing package does something very > similar, to support "weak" and "lazy" imports: > > http://cheeseshop.python.org/pypi/Importing
Interesting, I was not aware of that, thanks for the pointer. Another reason for including this feature in the standard library ;-) > The things most likely to be problems are tools like pydoc or other > inspect-using code that expects modules to be exactly ModuleType and > don't use isinstance(). Apart from that, I've been using the technique > since the early days of Python 2.2 without encountering any problems > until the PEP 302 "reload()" bug came along, but that was fixed in > 2.3.5. I haven't seen any other problems since. I'd argue that pydoc & friends are broken if they assume that a module will always be of ModuleType and not a subclass of it. > On the other hand, the Importing package takes a much more conservative > approach than you are doing; it simply runs reload() on a module when > __getattribute__ is called (after restoring the old version of > __getattribute__). So, as soon as you touch a lazily loaded module, it > ceases to be particularly special, and it has a real __dict__. It's > possible that what you're doing could have more side-effects than what > I'm doing. This is an interesting approach, I thought of using that but I didn't quite manage to find the time to implement it properly. However, for the gtk namespace this won't be enough, since I want to avoid creating all the types when the first one is accessed; when gtk.Button is accessed it, gtk.Window will still not be created. >> What I want to ask, is it possible to have a sanctioned way to implement >> a dynamic module/namespace in python? > > That would be nice, but I think that what you and I are doing are > probably the One Obvious Ways to do the respective things we're doing. I consider __getattribute__ a hack, being able to override __dict__ is less hackish, IMHO. -- Johan Dahlin <[EMAIL PROTECTED]> Async Open Source _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com