Jim Fulton wrote:
Jean-Marc Orliaguet wrote:
OK, so to summarize this thread:
- __init__.py files are empty
unless for the convenient import of other modules located in the
same package or in a subpackage?
Actually, primarily for convenient import by external packages.
yes indeed, but no "cross" imports between packages that are siblings.
and in both cases the import is done using absolute paths.
- public interfaces are stored in interfaces.py
- private interfaces are written along with the implementation code
- what about file names with an underscore at the beginning? They are
used in zope.schema for instance
A Python convention is that a leading underscore indicates privateness.
but it doesn't inforce it, so another social contract for interfaces like:
"interfaces.py" means "public", otherwise it means "private" might do as
- what about import paths inside a same package: relative or absolute?
from mypackage.interfaces import ISomeInterface
from interfaces import ISomeInterface
Absolute always. Until the Python import mechanism is fixed, *always*
use absolute imports.
that's definitely not the way it is currently...
$ grep -r "from interfaces import" Zope3/src
Zope3-dev mailing list