[Zope-CMF] SVN: Products.CMFDefault/trunk/Products/CMFDefault/__init__.py Move clashing imports into body of initialize().
Tres Seaver
tseaver at palladion.com
Mon Dec 29 15:12:29 EST 2008
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
yuppie wrote:
> Hi Tres!
>
>
> Tres Seaver wrote:
>> yuppie wrote:
>>
>>> Tres Seaver wrote:
>>>> Log message for revision 94389:
>>>> Move clashing imports into body of initialize().
>>>>
>>>> Changed:
>>>> U Products.CMFDefault/trunk/Products/CMFDefault/__init__.py
>>> What are "clashing imports"? Can't they be fixed in an other way? I'd
>>> prefer to have less code in initialize(), not more.
>> Importing anything at module scope in the __init__ can shadow the
>> "proper" import paths. I would rather do *nothing* at import time, and
>> then do any necessary imports inside the 'initialize', i.e., as late as
>> possible. An alternative would be to import 'initialize' itself from
>> another module.
>
> Well. The initialize() pattern is Zope 2 Products specific. I'm fine
> with moving everything that isn't useful outside initialize() into that
> function.
>
> But some imports in __init__ have (also) a different purpose: They make
> sure security is initialized correctly. Moving those imports inside
> initialize() makes it less predictable when security is initialized.
>
>>> Running CMF trunk tests with Zope 2.10, I now get random test-module
>>> import failures like this one:
>>>
> [...]
>>> Digging a bit deeper, I found a circular import in Zope that causes
>>> these failures:
>> My bad: I hadn't tested with non-trunk Zopes. We might get away with
>> saying that CMF 2.2 requires at least Zope 2.11, but I think they would
>> break there too.
>
> Yes. I see the same issue with Zope 2.11.
>
> I propose to fix this in Zope 2.10 and 2.11. And to make the latest
> Version of Zope 2.10 or 2.11 required for CMF 2.2.
Sounds fine.
>>> AccessControl.Permission uses ApplicationDefaultPermissions defined in
>>> App.class_init and App.class_init imports AccessControl.Permission.
>>>
>>> AFAICS moving ApplicationDefaultPermissions to AccessControl.Permission
>>> would be the best way to fix this.
>> Yes, there is a bunch of stuff in App which doesn't belong there.
>> Unmasking it (by ripping out the imports from Globals) was a first step
>> to moving it into the right location.
>
> Do you want to change that as part of your Zope refactoring or should I
> check in my fix?
I think we could put your fix in on the Zope 2.10 and 2.11 branches, as
well as on my no_globals_imports branch. I'm not ready to commit to the
other cleanups right now.
Tres.
- --
===================================================================
Tres Seaver +1 540-429-0999 tseaver at palladion.com
Palladion Software "Excellence by Design" http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFJWS8t+gerLs4ltQ4RAqivAKDKnh4CHnUT6ztd1uFTMUpBedOgwQCfT1Ou
1tA0QihSVKrUHBvkxR/dPew=
=sDtT
-----END PGP SIGNATURE-----
More information about the Zope-CMF
mailing list