[Zope-dev] z3c.form 2.0 release

Tres Seaver tseaver at palladion.com
Wed Dec 10 13:29:49 EST 2008


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Tres Seaver wrote:

> Brian Sutherland wrote:
>> On Wed, Dec 10, 2008 at 11:05:06AM +0100, Hermann Himmelbauer wrote:
>>> Someone recently suggested to rename it to z3c.schema.iban, which sounds a 
>>> good idea to me, however, in this case my package would use another package, 
>>> namely z3c.schema, as namespace.
>>>
>>> So what's your suggestion in this case?
>> There's no problem as long as z3c.schema is truly empty, i.e. there are
>> no other packages that put any files in it.
> 
>> The problem with z3c.pt.compat is that z3c.pt is not empty (see
>> http://svn.zope.org/z3c.pt/trunk/src/z3c/pt/). That's what causes the
>> problems I've been seeing.
> 
> The issue comes not from having modules inside the namespace package
> (which is fine:  the __path__ of namespacee packages is extended to
> include all eggs which use it).  Rather, the problem is having a
> non-empty __init__.py in a namespace package (specifically, one which
> does anything else than declare that it is a namespace).  The problem
> arises because only one of the __init__.py files will be imported (the
> first one found).

A points I missed the first time:

- - If having modules inside a namespace package was somehow broken
  under setuptools, then having sub-pacakges would be too:  there
  isn't any magical difference between the two in how Python imports
  them.

Please see the setuptools docs for an explanation of what namespace
pacakges must do:



I created a pair of packages to demonstrate having a module inside a
namespace package (see attachment).  To play with them, run 'python
setup.py develop' in each of them using a setuptools-enabld Python
environment in whose site-packages you don't mind scribbling (a
virtualenv is perfect for this kind of stuff).  E.g.::

 $ /path/to/virtualenv --no-site-packages /tmp/nstest
 $ cd /tmp/nstest
 $ mkdir src
 $ cd src
 $ tar xzf /tmp/nstest.tar.gz
 $ cd foo
 $ ../../bin/python setup.py develop
 $ cd ../foo.bar
 $ ../../bin/python setup.py develop
 $ cd ../..
 $ bin/python
 ...
 >>> import foo
 >>> print foo.__file__
 '/tmp/nstest/src/foo.bar/foo/__init__.pyc'
 >>> import foo.qux
 >>> import foo.bar
 >>> foo.qux.quack
 >>> foo.bar.cheer

Note that the __file__ of the namespace package is not guaranteed to be
in one or the other egg, which is why namespace packages must have
nothing more in their __init__.py than the boilerplate which declares
the namespace.



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

iD8DBQFJQAqd+gerLs4ltQ4RAvHgAKCgjeyLLFqZUmhmhsd81Wm6RXlXyQCg2r0D
PNIFGNtvOwkYzsh9VSHEIy4=
=pcdI
-----END PGP SIGNATURE-----
-------------- next part --------------
A non-text attachment was scrubbed...
Name: nstest.tar.gz
Type: application/x-gzip
Size: 689 bytes
Desc: not available
Url : http://mail.zope.org/pipermail/zope-dev/attachments/20081210/3064720c/attachment-0001.gz 


More information about the Zope-Dev mailing list