Chris McDonough
2011-09-04 25be339daa0448bf64b4dba03c08205b571a1cb0
remove documentation and todo mentions of zope.configuration
3 files modified
51 ■■■■■ changed files
TODO.txt 3 ●●●●● patch | view | raw | blame | history
docs/designdefense.rst 41 ●●●●● patch | view | raw | blame | history
docs/narr/advconfig.rst 7 ●●●● patch | view | raw | blame | history
TODO.txt
@@ -79,9 +79,6 @@
- 1.3/1.4: use zope.registry rather than zope.component.
- 1.3/1.4: get rid of zope.configuration dependency.  This will also speed up
  startup time (defer _bootstrap and registerCommonDirectives() until needed).
- 1.3: Michael's route group work
- 1.3: Add a default-view-config-params decorator that can be applied to a
docs/designdefense.rst
@@ -711,39 +711,32 @@
---------------------------------
This is true.  At the time of this writing, the total number of Python
package distributions that :app:`Pyramid` depends upon transitively is 18 if
you use Python 2.6 or 2.7, or 16 if you use Python 2.5.  This is a lot more
package distributions that :app:`Pyramid` depends upon transitively is 15 if
you use Python 2.7, or 17 if you use Python 2.5 or 2.6.  This is a lot more
than zero package distribution dependencies: a metric which various Python
microframeworks and Django boast.
The :mod:`zope.component` and :mod:`zope.configuration` packages on which
:app:`Pyramid` depends have transitive dependencies on several other packages
(:mod:`zope.schema`, :mod:`zope.i18n`, :mod:`zope.event`,
:mod:`zope.interface`, :mod:`zope.deprecation`, :mod:`zope.i18nmessageid`).
We've been working with the Zope community to try to collapse and untangle
some of these dependencies.  We'd prefer that these packages have fewer
packages as transitive dependencies, and that much of the functionality of
these packages was moved into a smaller *number* of packages.
:app:`Pyramid` also has its own direct dependencies, such as :term:`Paste`,
:term:`Chameleon`, :term:`Mako` and :term:`WebOb`, and some of these in turn
have their own transitive dependencies.
It should be noted that :app:`Pyramid` is positively lithe compared to
:term:`Grok`, a different Zope-based framework.  As of this writing, in its
default configuration, Grok has 109 package distribution dependencies. The
number of dependencies required by :app:`Pyramid` is many times fewer than
Grok (or Zope itself, upon which Grok is based).  :app:`Pyramid` has a number
of package distribution dependencies comparable to similarly-targeted
frameworks such as Pylons 1.X.
The :mod:`zope.component`, package on which :app:`Pyramid` depends has
transitive dependencies on several other packages (:mod:`zope.event`, and
:mod:`zope.interface`).  :app:`Pyramid` also has its own direct dependencies,
such as :term:`Paste`, :term:`Chameleon`, :term:`Mako` :term:`WebOb`,
:mod:`zope.deprecation` and some of these in turn have their own transitive
dependencies.
We try not to reinvent too many wheels (at least the ones that don't need
reinventing), and this comes at the cost of some number of dependencies.
However, "number of package distributions" is just not a terribly great
metric to measure complexity.  For example, the :mod:`zope.event`
distribution on which :app:`Pyramid` depends has a grand total of four lines
of runtime code.  As noted above, we're continually trying to agitate for a
collapsing of these sorts of packages into fewer distribution files.
of runtime code.
In the meantime, :app:`Pyramid` has a number of package distribution
dependencies comparable to similarly-targeted frameworks such as Pylons 1.X.
It may be in the future that we shed more dependencies as the result of a
port to Python 3 (the less code we need to port, the better).  In the future,
we may also move templating system dependencies out of the core and place
them in add-on packages, to be included by developers instead of by the
framework.  This would reduce the number of core dependencies by about five.
Pyramid "Cheats" To Obtain Speed
--------------------------------
docs/narr/advconfig.rst
@@ -82,11 +82,8 @@
       self.commit()
     File "pyramid/pyramid/config.py", line 473, in commit
       self._ctx.execute_actions()
     File "zope/configuration/config.py", line 600, in execute_actions
       for action in resolveConflicts(self.actions):
     File "zope/configuration/config.py", line 1507, in resolveConflicts
       raise ConfigurationConflictError(conflicts)
   zope.configuration.config.ConfigurationConflictError:
     ... more code ...
   pyramid.exceptions.ConfigurationConflictError:
           Conflicting configuration actions
     For: ('view', None, '', None, <InterfaceClass pyramid.interfaces.IView>,
           None, None, None, None, None, False, None, None, None)