[rfc] use absolute imports

John Arbash Meinel john at arbash-meinel.com
Thu Feb 22 00:26:17 GMT 2007

Hash: SHA1

Andrew Bennetts wrote:
> John Arbash Meinel wrote:
>> Martin Pool wrote:
>>> After a conversation with John I thought I'd try enabling absolute
>>> imports.  However, it looks like there's no clean way to turn these on
>>> only on python2.5, since they can't be guarded by an if or try/except
>>> block.  Nevertheless I think our code should always use 'import
>>> bzrlib.foo' not 'import foo'.
>> I would be for this, since it is something we would like to do.
>> The only downside is plugins. Because they don't always know where they
>> are installed, so I've taken to using local imports there.
> Can't the plugins do "from bzrlib.plugins.foo import ..."?

Only if they are installed as "foo" and not foo_jam, or foo_bar, or
fooXXYY. Up until recently they could be installed as foo-0.5.6.

>> If this only changes it for a specific file we don't affect plugins, but
>> then again we don't affect the rest of our code base either. (And I
>> don't think we want to add that line to every file).
> I think whenever we require python2.5 ideally we would add this to every file in
> bzr.  Ugly though it is to have a __future__ statement in every file, it will
> enforce the right sort of behaviour (and make sure we're compatible with future
> releases of python that will do this by default).
> I wonder if we can make lazy_import refuse to do a relative import?
> -Andrew.

Probably not. Simply because it just hands off to __import__(). Now, if
there is a way to do it at the __import__() level, (like if we do
__future__ in lazy_import does it re-define the semantics of __import__()?)

Version: GnuPG v1.4.3 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org


More information about the bazaar mailing list