================
Backwards Incompatibilities
---------------------------
- Rather than prepare the "stock" implementations of the ZCML directives
from the ``zope.configuration`` package for use under ``repoze.bfg``,
``repoze.bfg`` now makes available the implementations of directives
from the ``repoze.zcml`` package (see https://pypi.org/project/repoze.zcml/).
As a result, the ``repoze.bfg`` package now depends on the
``repoze.zcml`` package, and no longer depends directly on the
``zope.component``, ``zope.configuration``, ``zope.interface``, or
``zope.proxy`` packages.
The primary reason for this change is to enable us to eventually reduce
the number of inappropriate ``repoze.bfg`` Zope package dependencies,
as well as to shed features of dependent package directives that don't
make sense for ``repoze.bfg``.
Note that currently the set of requirements necessary to use bfg has not
changed. This is due to inappropriate Zope package requirements in
``chameleon.zpt``, which will hopefully be remedied soon. NOTE: in
lemonade index a 1.0b8-repozezcml0 package exists which does away with
these requirements.
- BFG applications written prior to this release which expect the "stock"
``zope.component`` ZCML directive implementations (e.g. ``adapter``,
``subscriber``, or ``utility``) to function now must either 1) include
the ``meta.zcml`` file from ``zope.component`` manually (e.g. ``<include
package="zope.component" file="meta.zcml">``) and include the
``zope.security`` package as an ``install_requires`` dependency or 2)
change the ZCML in their applications to use the declarations from
`repoze.zcml <https://pypi.org/project/repoze.zcml/>`_ instead of the stock
declarations. ``repoze.zcml`` only makes available the ``adapter``,
``subscriber`` and ``utility`` directives.
In short, if you've got an existing BFG application, after this
update, if your application won't start due to an import error for
"zope.security", the fastest way to get it working again is to add
``zope.security`` to the "install_requires" of your BFG
application's ``setup.py``, then add the following ZCML anywhere
in your application's ``configure.zcml``::
<include package="zope.component" file="meta.zcml">
Then re-``setup.py develop`` or reinstall your application.
- The ``http://namespaces.repoze.org/bfg`` XML namespace is now the default
XML namespace in ZCML for paster-generated applications. The docs have
been updated to reflect this.
- The copies of BFG's ``meta.zcml`` and ``configure.zcml`` were removed
from the root of the ``repoze.bfg`` package. In 0.3.6, a new package
named ``repoze.bfg.includes`` was added, which contains the "correct"
copies of these ZCML files; the ones that were removed were for backwards
compatibility purposes.
- The BFG ``view`` ZCML directive no longer calls
``zope.component.interface.provideInterface`` for the ``for`` interface.
We don't support ``provideInterface`` in BFG because it mutates the
global registry.
Other
-----
- The minimum requirement for ``chameleon.core`` is now 1.0b13. The
minimum requirement for ``chameleon.zpt`` is now 1.0b8. The minimum
requirement for ``chameleon.genshi`` is now 1.0b2.
- Updated paster template "ez_setup.py" to one that requires setuptools
0.6c9.
- Turn ``view_execution_permitted`` from the ``repoze.bfg.view`` module
into a documented API.
- Doc cleanups.
- Documented how to create a view capable of serving static resources.