[Python-3000] Discussions with no PEPs

Phillip J. Eby pje at telecommunity.com
Wed Mar 14 00:12:54 CET 2007


At 08:37 AM 3/14/2007 +1000, Nick Coghlan wrote:
>Greg Ewing wrote:
> > Nick Coghlan wrote:
> >
> >> Generics can live quite happily inside modules and as methods on objects.
> >
> > If instead of pydoc it's some third party module,
> > the situation is even worse, since the module may
> > not even be installed on the user's system.
> >
> > So this scheme would seem to create undesirable
> > dependencies.

In cases where you don't already have such a dependency, yeah.


>This is why the idea of lazy importing comes up pretty fast whenever
>generics are discussed.

I call 'em "weak" imports, myself:

http://peak.telecommunity.com/DevCenter/Importing#weak-imports

As it happens, you need the same thing for adaptation, which is why I put 
this into PEAK way back in the heydey of Python 2.2.


>However, this criticism regarding importing otherwise unneeded modules
>also applies to interfaces and ABC's, only more so. For example, if I
>wanted to declare that a class implements (or inherits from)
>pydoc.IDocumentable, then I would have to import pydoc first, and as I
>need to do it at class definition time (assuming we're using the normal
>inheritance mechanism to declare our interfaces), lazy importing can't help.
>
>3rd-party registration of 'A implements I' or 'here's how to convert A
>to something that implements I' is useful not only for adapting two
>libraries to play well together, but also in allowing the libraries
>themselves to delay these definitions until they're known to be at least
>potentially neeeded (e.g. don't register a class as being documentable
>until the application actually imports and starts using pydoc).

An excellent point, indeed.



More information about the Python-3000 mailing list