[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 12:13:45 EST 2008
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
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.
> Maybe related:
>
> Running CMF trunk tests with Zope 2.10, I now get random test-module
> import failures like this one:
>
> Module: Products.CMFActionIcons.tests.test_exportimport
>
> Traceback (most recent call last):
> File "..\Products\CMFActionIcons\tests\test_exportimport.py", line
> 24, in ?
> from Products.CMFCore.testing import ExportImportZCMLLayer
> File "..\Products\CMFCore\__init__.py", line 18, in ?
> import PortalFolder
> File "..\Products\CMFCore\PortalFolder.py", line 26, in ?
> from App.class_init import default__class_init__ as InitializeClass
> File "..\lib\python\App\class_init.py", line 16, in ?
> import AccessControl.Permission
> File "..\lib\python\AccessControl\Permission.py", line 18, in ?
> import string, Products, Globals
> File "..\lib\python\Globals\__init__.py", line 23, in ?
> import Acquisition, ComputedAttribute, App.PersistentExtra, os
> File "..\lib\python\App\PersistentExtra.py", line 24, in ?
> from class_init import default__class_init__
> ImportError: cannot import name default__class_init__
>
>
> 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.
> 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.
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
iD8DBQFJWQVJ+gerLs4ltQ4RAjCFAJ9iaQEdqXOg51vtEbkVtLdA7ibeogCePSQs
b1DvuGnFKL+s9LkLGHDHdNw=
=ByOP
-----END PGP SIGNATURE-----
More information about the Zope-CMF
mailing list