[Zope-CMF] SVN: Products.CMFDefault/trunk/Products/CMFDefault/__init__.py Move clashing imports into body of initialize().

yuppie y.2008 at wcm-solutions.de
Mon Dec 29 14:35:04 EST 2008


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.

>> 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?


Cheers,

	Yuppie



More information about the Zope-CMF mailing list