diff --git a/CHANGES.rst b/CHANGES.rst
index 99874f1..00e185a 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -46,6 +46,18 @@ Changes
   ``fromUnicode``. See `issue 28
   <https://github.com/zopefoundation/zope.configuration/issues/28>`_.
 
+- Add ``ConfigurationMachine.pass_through_exceptions`` to allow
+  customizing the exceptions that
+  ``ConfigurationMachine.execute_actions`` wraps in a
+  ``ConfigurationExecutionError``. See `issue 10
+  <https://github.com/zopefoundation/zope.configuration/issues/10>`_.
+
+- Stop catching ``BaseException`` and wrapping it in either
+  ``ConfigurationExecutionError`` or ``ZopeXMLConfigurationError``.
+  ``SystemExit`` and ``KeyboardInterrupt`` were always allowed to
+  propagate; now ``GeneratorExit`` and custom subclasses of
+  ``BaseException`` are also allowed te propagate.
+
 4.1.0 (2017-04-26)
 ------------------
 
diff --git a/src/zope/configuration/config.py b/src/zope/configuration/config.py
index 774b265..265a528 100644
--- a/src/zope/configuration/config.py
+++ b/src/zope/configuration/config.py
@@ -333,6 +333,16 @@ class ConfigurationMachine(ConfigurationAdapterRegistry, ConfigurationContext):
     includepath = ()
     info = ''
 
+    #: These `Exception` subclasses are allowed to be raised from `execute_actions`
+    #: without being re-wrapped into a `ConfigurationExecutionError`. (`BaseException`
+    #: instances are never wrapped.)
+    #:
+    #: Users of instances of this class may modify this before calling `execute_actions`
+    #: if they need to propagate specific exceptions.
+    #:
+    #: .. versionadded:: 4.2.0
+    pass_through_exceptions = ()
+
     def __init__(self):
         super(ConfigurationMachine, self).__init__()
         self.actions = []
@@ -367,6 +377,9 @@ class ConfigurationMachine(ConfigurationAdapterRegistry, ConfigurationContext):
 
         This calls the action callables after resolving conflicts.
         """
+        pass_through_exceptions = self.pass_through_exceptions
+        if testing:
+            pass_through_exceptions = BaseException
         try:
             for action in resolveConflicts(self.actions):
                 callable = action['callable']
@@ -377,11 +390,9 @@ class ConfigurationMachine(ConfigurationAdapterRegistry, ConfigurationContext):
                 info = action['info']
                 try:
                     callable(*args, **kw)
-                except (KeyboardInterrupt, SystemExit): # pragma: no cover
+                except pass_through_exceptions:
                     raise
-                except:
-                    if testing:
-                        raise
+                except Exception:
                     t, v, tb = sys.exc_info()
                     try:
                         reraise(ConfigurationExecutionError(t, v, info),
diff --git a/src/zope/configuration/xmlconfig.py b/src/zope/configuration/xmlconfig.py
index d33cd69..a91cbd6 100644
--- a/src/zope/configuration/xmlconfig.py
+++ b/src/zope/configuration/xmlconfig.py
@@ -201,9 +201,7 @@ class ConfigurationHandler(ContentHandler):
 
         try:
             self.context.begin(name, data, info)
-        except (KeyboardInterrupt, SystemExit): # pragma: no cover
-            raise
-        except:
+        except Exception:
             if self.testing:
                 raise
             reraise(ZopeXMLConfigurationError(info,
@@ -269,9 +267,7 @@ class ConfigurationHandler(ContentHandler):
 
         try:
             self.context.end()
-        except (KeyboardInterrupt, SystemExit): # pragma: no cover
-            raise
-        except:
+        except Exception:
             if self.testing:
                 raise
             reraise(ZopeXMLConfigurationError(info,

zope.configuration swallowing expat parser errors
In https://bugs.launchpad.net/zope.configuration/+bug/558501, @zopyx reported:

> See https://mail.zope.org/pipermail/zope-cmf/2010-April/029016.html

```
 GenericSetup: Install.py komplett abgelöst context.execute_actions()
  File "/home/ajung/sandboxes/hu/parts/zope2/lib/python/zope/configuration/config.py", line 612, in execute_actions
    callable(*args, **kw)
  File "/home/ajung/sandboxes/hu/eggs/Products.GenericSetup-1.4.5-py2.4.egg/Products/GenericSetup/registry.py", line 724, in registerProfile
    metadata = ProfileMetadata(path, product=product)()
  File "/home/ajung/sandboxes/hu/eggs/Products.GenericSetup-1.4.5-py2.4.egg/Products/GenericSetup/metadata.py", line 52, in __call__
    return self.parseXML( file.read() )
  File "/home/ajung/sandboxes/hu/eggs/Products.GenericSetup-1.4.5-py2.4.egg/Products/GenericSetup/utils.py", line 217, in parseXML
    dom = parseString(xml)
  File "/opt/python-2.4.6/lib/python2.4/xml/dom/minidom.py", line 1925, in parseString
    return expatbuilder.parseString(string)
  File "/opt/python-2.4.6/lib/python2.4/xml/dom/expatbuilder.py", line 940, in parseString
    return builder.parseString(string)
  File "/opt/python-2.4.6/lib/python2.4/xml/dom/expatbuilder.py", line 223, in parseString
    parser.Parse(string, True)
zope.configuration.config.ConfigurationExecutionError: xml.parsers.expat.ExpatError: mismatched tag: line 4, column 2
  in:
  File "/home/ajung/sandboxes/hu/src/Products.HUMoodle/Products/HUMoodle/configure.zcml", line 8.4-14.6
      <genericsetup:registerProfile
          name="default"
          title="Products.HUMoodle"
          directory="profiles/default"
          description="HU Moodle Integration"
          provides="Products.GenericSetup.interfaces.EXTENSION"
      />
```

``` bash
ajung@ubuntu:~/sandboxes/hu$ cat /home/ajung/sandboxes/hu/src/Products.HUMoodle/Products/HUMoodle/configure.zcml
<configure xmlns="http://namespaces.zope.org/zope"
           xmlns:cmf="http://namespaces.zope.org/cmf"
           xmlns:genericsetup="http://namespaces.zope.org/genericsetup">

    <cmf:registerDirectory name="hu_moodle" />

    <genericsetup:registerProfile
        name="default"
        title="Products.HUMoodle"
        directory="profiles/default"
        description="HU Moodle Integration"
        provides="Products.GenericSetup.interfaces.EXTENSION"
    />

</configure>
```

@tseaver replied:

> The code at line 612 of zope.configuration.config which re-wraps the exception seems to be deliberate policy. Reassigning to Christian for comment (and also so he can route the bug to the correct project: this one is not really for code bugs).

diff --git a/src/zope/configuration/tests/test_config.py b/src/zope/configuration/tests/test_config.py
index 4835df9..4bd5930 100644
--- a/src/zope/configuration/tests/test_config.py
+++ b/src/zope/configuration/tests/test_config.py
@@ -766,10 +766,44 @@ class ConfigurationMachineTests(_ConformsToIConfigurationContext,
         cm.action(None, _err)
         with self.assertRaises(ConfigurationExecutionError) as exc:
             cm.execute_actions()
-        self.assertTrue(exc.exception.etype is ValueError)
+        self.assertIs(exc.exception.etype, ValueError)
         self.assertEqual(str(exc.exception.evalue), "XXX")
         self.assertEqual(exc.exception.info, "INFO")
 
+    def _check_execute_actions_w_errors_wo_testing(self, ex_kind, cm=None):
+        ex = ex_kind('XXX')
+        def _err(*args, **kw):
+            raise ex
+        cm = cm if cm is not None else self._makeOne()
+        cm.info = 'INFO'
+        cm.action(None, _err)
+        with self.assertRaises(ex_kind) as exc:
+            cm.execute_actions()
+
+        self.assertIs(exc.exception, ex)
+
+    def test_execute_actions_w_errors_wo_testing_SystemExit(self):
+        # It gets passed through as-is
+        self._check_execute_actions_w_errors_wo_testing(SystemExit)
+
+    def test_execute_actions_w_errors_wo_testing_KeyboardInterrupt(self):
+        # It gets passed through as-is
+        self._check_execute_actions_w_errors_wo_testing(KeyboardInterrupt)
+
+    def test_execute_actions_w_errors_wo_testing_BaseException(self):
+        # It gets passed through as-is
+        class Bex(BaseException):
+            pass
+        self._check_execute_actions_w_errors_wo_testing(Bex)
+
+    def test_execute_actions_w_errors_custom(self):
+        # It gets passed through as-is, if we ask it to
+        class Ex(Exception):
+            pass
+        cm = self._makeOne()
+        cm.pass_through_exceptions += (Ex,)
+        self._check_execute_actions_w_errors_wo_testing(Ex, cm)
+
     def test_keyword_handling(self):
         # This is really an integraiton test.
         from zope.configuration.config import metans
diff --git a/src/zope/configuration/tests/test_xmlconfig.py b/src/zope/configuration/tests/test_xmlconfig.py
index beafd98..e75a8f0 100644
--- a/src/zope/configuration/tests/test_xmlconfig.py
+++ b/src/zope/configuration/tests/test_xmlconfig.py
@@ -156,42 +156,62 @@ class ConfigurationHandlerTests(unittest.TestCase):
                                })
         self.assertEqual(handler.ignore_depth, 2)
 
-    def test_startElementNS_context_begin_raises_wo_testing(self):
-        from zope.configuration.xmlconfig import ZopeXMLConfigurationError
+    def _check_elementNS_context_raises(self, raises, catches,
+                                        testing=False,
+                                        meth='endElementNS',
+                                        meth_args=((NS, FOO), FOO)):
         class ErrorContext(FauxContext):
-            def begin(self, *args):
-                raise AttributeError("xxx")
+            def end(self, *args):
+                raise raises("xxx")
+            begin = end
+        class Info(object):
+            _line = _col = None
+            def end(self, line, col):
+                self._line, self._col = line, col
         context = ErrorContext()
+        info = Info()
+        context.setInfo(info)
         locator = FauxLocator('tests//sample.zcml', 1, 1)
-        handler = self._makeOne(context)
+        handler = self._makeOne(context, testing)
         handler.setDocumentLocator(locator)
-        with self.assertRaises(ZopeXMLConfigurationError) as exc:
-            handler.startElementNS(
-                (NS, FOO),
-                FOO,
-                {(XXX, SPLAT): SPLATV,
-                 (None, A): AVALUE,
-                 (None, B): BVALUE,
-                })
-        self.assertEqual(exc.exception.info.file, 'tests//sample.zcml')
-        self.assertEqual(exc.exception.info.line, 1)
-        self.assertEqual(exc.exception.info.column, 1)
+        locator.line, locator.column = 7, 16
+        meth = getattr(handler, meth)
+        with self.assertRaises(catches) as exc:
+            meth(*meth_args)
+        return exc.exception, info
+
+    def _check_startElementNS_context_begin_raises(self, raises, catches, testing=False):
+        return self._check_elementNS_context_raises(
+            raises, catches, testing,
+            meth='startElementNS',
+            meth_args=((NS, FOO),
+                       FOO,
+                       {(XXX, SPLAT): SPLATV,
+                        (None, A): AVALUE,
+                        (None, B): BVALUE,
+                       })
+        )
+
+    def test_startElementNS_context_begin_raises_wo_testing(self):
+        from zope.configuration.xmlconfig import ZopeXMLConfigurationError
+        raised, _ = self._check_startElementNS_context_begin_raises(AttributeError,
+                                                                    ZopeXMLConfigurationError)
+        info = raised.info
+        self.assertEqual(info.file, 'tests//sample.zcml')
+        self.assertEqual(info.line, 7)
+        self.assertEqual(info.column, 16)
 
     def test_startElementNS_context_begin_raises_w_testing(self):
-        class ErrorContext(FauxContext):
-            def begin(self, *args):
-                raise AttributeError("xxx")
-        context = ErrorContext()
-        locator = FauxLocator('tests//sample.zcml', 1, 1)
-        handler = self._makeOne(context, True)
-        handler.setDocumentLocator(locator)
-        with self.assertRaises(AttributeError):
-            handler.startElementNS(
-                (NS, FOO), FOO,
-                {(XXX, SPLAT): SPLATV,
-                 (None, A): AVALUE,
-                 (None, B): BVALUE,
-                })
+        self._check_startElementNS_context_begin_raises(AttributeError,
+                                                        AttributeError,
+                                                        True)
+
+    def test_startElementNS_context_begin_raises_BaseException(self):
+        class Bex(BaseException):
+            pass
+        self._check_startElementNS_context_begin_raises(Bex,
+                                                        Bex)
+
 
     def test_startElementNS_normal(self):
         # Integration test of startElementNS / endElementNS pair.
@@ -222,47 +242,31 @@ class ConfigurationHandlerTests(unittest.TestCase):
         handler.endElementNS((NS, FOO), FOO)
         self.assertEqual(handler.ignore_depth, 0)
 
+    def _check_endElementNS_context_end_raises(self, raises, catches, testing=False):
+        return self._check_elementNS_context_raises(raises, catches, testing)
+
     def test_endElementNS_context_end_raises_wo_testing(self):
         from zope.configuration.xmlconfig import ZopeXMLConfigurationError
-        class ErrorContext(FauxContext):
-            def end(self):
-                raise AttributeError("xxx")
-        class Info(object):
-            _line = _col = None
-            def end(self, line, col):
-                self._line, self._col = line, col
-        context = ErrorContext()
-        info = Info()
-        context.setInfo(info)
-        locator = FauxLocator('tests//sample.zcml', 1, 1)
-        handler = self._makeOne(context)
-        handler.setDocumentLocator(locator)
-        locator.line, locator.column = 7, 16
-        with self.assertRaises(ZopeXMLConfigurationError) as exc:
-            handler.endElementNS((NS, FOO), FOO)
-        self.assertTrue(exc.exception.info is context.info)
-        self.assertEqual(exc.exception.info._line, 7)
-        self.assertEqual(exc.exception.info._col, 16)
+
+        raised, info = self._check_endElementNS_context_end_raises(AttributeError,
+                                                                   ZopeXMLConfigurationError)
+
+        self.assertIs(raised.info, info)
+        self.assertEqual(raised.info._line, 7)
+        self.assertEqual(raised.info._col, 16)
 
     def test_endElementNS_context_end_raises_w_testing(self):
-        class ErrorContext(FauxContext):
-            def end(self):
-                raise AttributeError("xxx")
-        class Info(object):
-            _line = _col = None
-            def end(self, line, col):
-                self._line, self._col = line, col
-        context = ErrorContext()
-        info = Info()
-        context.setInfo(info)
-        locator = FauxLocator('tests//sample.zcml', 1, 1)
-        handler = self._makeOne(context, True)
-        handler.setDocumentLocator(locator)
-        locator.line, locator.column = 7, 16
-        with self.assertRaises(AttributeError):
-            handler.endElementNS((NS, FOO), FOO)
-        self.assertEqual(context.info._line, 7)
-        self.assertEqual(context.info._col, 16)
+        _, info = self._check_endElementNS_context_end_raises(AttributeError,
+                                                              AttributeError,
+                                                              True)
+        self.assertEqual(info._line, 7)
+        self.assertEqual(info._col, 16)
+
+    def test_endElementNS_context_end_raises_BaseException(self):
+        class Bex(BaseException):
+            pass
+        self._check_endElementNS_context_end_raises(Bex,
+                                                    Bex)
 
     def test_evaluateCondition_w_have_no_args(self):
         context = FauxContext()

pip install -e .[test]
parse_log_pytest
pytest
coverage Sphinx repoze.sphinx.autointerface pytest
3.6
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
alabaster==0.7.13
attrs @ file:///opt/conda/conda-bld/attrs_1642510447205/work
Babel==2.11.0
certifi==2021.5.30
charset-normalizer==2.0.12
coverage==6.2
docutils==0.18.1
idna==3.10
imagesize==1.4.1
importlib-metadata @ file:///tmp/build/80754af9/importlib-metadata_1631916693255/work
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
Jinja2==3.0.3
manuel==1.13.0
MarkupSafe==2.0.1
more-itertools @ file:///tmp/build/80754af9/more-itertools_1637733554872/work
packaging @ file:///tmp/build/80754af9/packaging_1637314298585/work
pluggy @ file:///tmp/build/80754af9/pluggy_1615976315926/work
py @ file:///opt/conda/conda-bld/py_1644396412707/work
Pygments==2.14.0
pyparsing @ file:///tmp/build/80754af9/pyparsing_1635766073266/work
pytest==6.2.4
pytz==2025.2
repoze.sphinx.autointerface==1.0.0
requests==2.27.1
six==1.17.0
snowballstemmer==2.2.0
Sphinx==5.3.0
sphinxcontrib-applehelp==1.0.2
sphinxcontrib-devhelp==1.0.2
sphinxcontrib-htmlhelp==2.0.0
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==1.0.3
sphinxcontrib-serializinghtml==1.1.5
toml @ file:///tmp/build/80754af9/toml_1616166611790/work
typing_extensions @ file:///opt/conda/conda-bld/typing_extensions_1647553014482/work
urllib3==1.26.20
zipp @ file:///tmp/build/80754af9/zipp_1633618647012/work
-e git+https://github.com/zopefoundation/zope.configuration.git@6fa6e4824182f63e23d0ee36c06f4af2d5af50b2#egg=zope.configuration
zope.event==4.6
zope.exceptions==4.6
zope.i18nmessageid==5.1.1
zope.interface==5.5.2
zope.schema==6.2.1
zope.testing==5.0.1
zope.testrunner==5.6

name: zope.configuration
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - attrs=21.4.0=pyhd3eb1b0_0
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - importlib-metadata=4.8.1=py36h06a4308_0
  - importlib_metadata=4.8.1=hd3eb1b0_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - more-itertools=8.12.0=pyhd3eb1b0_0
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - packaging=21.3=pyhd3eb1b0_0
  - pip=21.2.2=py36h06a4308_0
  - pluggy=0.13.1=py36h06a4308_0
  - py=1.11.0=pyhd3eb1b0_0
  - pyparsing=3.0.4=pyhd3eb1b0_0
  - pytest=6.2.4=py36h06a4308_2
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - toml=0.10.2=pyhd3eb1b0_0
  - typing_extensions=4.1.1=pyh06a4308_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zipp=3.6.0=pyhd3eb1b0_0
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - alabaster==0.7.13
      - babel==2.11.0
      - charset-normalizer==2.0.12
      - coverage==6.2
      - docutils==0.18.1
      - idna==3.10
      - imagesize==1.4.1
      - jinja2==3.0.3
      - manuel==1.13.0
      - markupsafe==2.0.1
      - pygments==2.14.0
      - pytz==2025.2
      - repoze-sphinx-autointerface==1.0.0
      - requests==2.27.1
      - six==1.17.0
      - snowballstemmer==2.2.0
      - sphinx==5.3.0
      - sphinxcontrib-applehelp==1.0.2
      - sphinxcontrib-devhelp==1.0.2
      - sphinxcontrib-htmlhelp==2.0.0
      - sphinxcontrib-jsmath==1.0.1
      - sphinxcontrib-qthelp==1.0.3
      - sphinxcontrib-serializinghtml==1.1.5
      - urllib3==1.26.20
      - zope-event==4.6
      - zope-exceptions==4.6
      - zope-i18nmessageid==5.1.1
      - zope-interface==5.5.2
      - zope-schema==6.2.1
      - zope-testing==5.0.1
      - zope-testrunner==5.6
prefix: /opt/conda/envs/zope.configuration

src/zope/configuration/tests/test_config.py::ConfigurationMachineTests::test_execute_actions_w_errors_custom src/zope/configuration/tests/test_config.py::ConfigurationMachineTests::test_execute_actions_w_errors_wo_testing_BaseException src/zope/configuration/tests/test_xmlconfig.py::ConfigurationHandlerTests::test_endElementNS_context_end_raises_BaseException src/zope/configuration/tests/test_xmlconfig.py::ConfigurationHandlerTests::test_startElementNS_context_begin_raises_BaseException
src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_action_defaults_no_info_no_includepath src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_action_defaults_w_info_w_includepath src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_action_explicit_no_extra src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_action_explicit_w_extra src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_checkDuplicate_hit src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_checkDuplicate_miss src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_hasFeature_hit src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_hasFeature_miss src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_path_expand_filenames src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_path_expand_user src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_path_w_absolute_filename src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_path_w_relative_filename_w_basepath src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_path_w_relative_filename_wo_basepath_wo_package src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_path_wo_basepath_w_package_having_file src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_path_wo_basepath_w_package_having_no_file_but_path src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_processFile_hit src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_processFile_miss src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_provideFeature src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_resolve_bad_dotted_import src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_resolve_bad_dotted_last_import src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_resolve_bad_sub_import src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_resolve_bad_sub_last_import src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_resolve_builtin src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_resolve_dot src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_resolve_empty src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_resolve_relative_miss_no_package src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_resolve_relative_miss_w_package_too_many_dots src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_resolve_single_non_builtin src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_resolve_trailing_dot_in_resolve src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_resolve_unicode_all src/zope/configuration/tests/test_config.py::ConfigurationContextTests::test_resolve_whitespace src/zope/configuration/tests/test_config.py::ConfigurationAdapterRegistryTests::test_ctor src/zope/configuration/tests/test_config.py::ConfigurationAdapterRegistryTests::test_document_non_string_name src/zope/configuration/tests/test_config.py::ConfigurationAdapterRegistryTests::test_document_w_string_name src/zope/configuration/tests/test_config.py::ConfigurationAdapterRegistryTests::test_factory_hit_on_fqn src/zope/configuration/tests/test_config.py::ConfigurationAdapterRegistryTests::test_factory_hit_on_fqn_lookup_fails src/zope/configuration/tests/test_config.py::ConfigurationAdapterRegistryTests::test_factory_miss src/zope/configuration/tests/test_config.py::ConfigurationAdapterRegistryTests::test_factory_miss_on_fqn_hit_on_bare_name src/zope/configuration/tests/test_config.py::ConfigurationAdapterRegistryTests::test_register src/zope/configuration/tests/test_config.py::ConfigurationAdapterRegistryTests::test_register_new_name src/zope/configuration/tests/test_config.py::ConfigurationAdapterRegistryTests::test_register_replacement src/zope/configuration/tests/test_config.py::ConfigurationMachineTests::test___call__ src/zope/configuration/tests/test_config.py::ConfigurationMachineTests::test_begin_w___data_and_kw src/zope/configuration/tests/test_config.py::ConfigurationMachineTests::test_begin_w___data_no_kw src/zope/configuration/tests/test_config.py::ConfigurationMachineTests::test_begin_wo___data_w_kw src/zope/configuration/tests/test_config.py::ConfigurationMachineTests::test_class_conforms_to_IConfigurationContext src/zope/configuration/tests/test_config.py::ConfigurationMachineTests::test_ctor src/zope/configuration/tests/test_config.py::ConfigurationMachineTests::test_end src/zope/configuration/tests/test_config.py::ConfigurationMachineTests::test_execute_actions_empty src/zope/configuration/tests/test_config.py::ConfigurationMachineTests::test_execute_actions_w_errors_w_testing src/zope/configuration/tests/test_config.py::ConfigurationMachineTests::test_execute_actions_w_errors_wo_testing src/zope/configuration/tests/test_config.py::ConfigurationMachineTests::test_execute_actions_w_errors_wo_testing_KeyboardInterrupt src/zope/configuration/tests/test_config.py::ConfigurationMachineTests::test_execute_actions_w_errors_wo_testing_SystemExit src/zope/configuration/tests/test_config.py::ConfigurationMachineTests::test_execute_actions_wo_errors src/zope/configuration/tests/test_config.py::ConfigurationMachineTests::test_getInfo_only_root src/zope/configuration/tests/test_config.py::ConfigurationMachineTests::test_getInfo_only_root_default src/zope/configuration/tests/test_config.py::ConfigurationMachineTests::test_getInfo_w_item src/zope/configuration/tests/test_config.py::ConfigurationMachineTests::test_instance_conforms_to_IConfigurationContext src/zope/configuration/tests/test_config.py::ConfigurationMachineTests::test_keyword_handling src/zope/configuration/tests/test_config.py::ConfigurationMachineTests::test_setInfo_only_root src/zope/configuration/tests/test_config.py::ConfigurationMachineTests::test_setInfo_w_item src/zope/configuration/tests/test_config.py::SimpleStackItemTests::test_class_conforms_to_IStackItem src/zope/configuration/tests/test_config.py::SimpleStackItemTests::test_contained_raises src/zope/configuration/tests/test_config.py::SimpleStackItemTests::test_ctor src/zope/configuration/tests/test_config.py::SimpleStackItemTests::test_finish_handler_returns_newstyle_actions src/zope/configuration/tests/test_config.py::SimpleStackItemTests::test_finish_handler_returns_no_actions src/zope/configuration/tests/test_config.py::SimpleStackItemTests::test_finish_handler_returns_oldstyle_actions src/zope/configuration/tests/test_config.py::SimpleStackItemTests::test_instance_conforms_to_IStackItem src/zope/configuration/tests/test_config.py::RootStackItemTests::test_class_conforms_to_IStackItem src/zope/configuration/tests/test_config.py::RootStackItemTests::test_contained_context_factory_fails src/zope/configuration/tests/test_config.py::RootStackItemTests::test_contained_context_factory_normal src/zope/configuration/tests/test_config.py::RootStackItemTests::test_finish src/zope/configuration/tests/test_config.py::RootStackItemTests::test_instance_conforms_to_IStackItem src/zope/configuration/tests/test_config.py::GroupingStackItemTests::test_class_conforms_to_IStackItem src/zope/configuration/tests/test_config.py::GroupingStackItemTests::test_contained_context_before_returns_newstyle_actions src/zope/configuration/tests/test_config.py::GroupingStackItemTests::test_contained_context_before_returns_oldstyle_actions src/zope/configuration/tests/test_config.py::GroupingStackItemTests::test_finish_calls_before_if_not_already_called src/zope/configuration/tests/test_config.py::GroupingStackItemTests::test_instance_conforms_to_IStackItem src/zope/configuration/tests/test_config.py::ComplexStackItemTests::test_class_conforms_to_IStackItem src/zope/configuration/tests/test_config.py::ComplexStackItemTests::test_contained_hit src/zope/configuration/tests/test_config.py::ComplexStackItemTests::test_contained_miss src/zope/configuration/tests/test_config.py::ComplexStackItemTests::test_ctor src/zope/configuration/tests/test_config.py::ComplexStackItemTests::test_finish_handler_is_noncallable src/zope/configuration/tests/test_config.py::ComplexStackItemTests::test_finish_handler_raises_AE_for___call__ src/zope/configuration/tests/test_config.py::ComplexStackItemTests::test_finish_handler_raises_AE_for_other src/zope/configuration/tests/test_config.py::ComplexStackItemTests::test_finish_handler_returns_newstyle_actions src/zope/configuration/tests/test_config.py::ComplexStackItemTests::test_finish_handler_returns_oldstyle_actions src/zope/configuration/tests/test_config.py::ComplexStackItemTests::test_instance_conforms_to_IStackItem src/zope/configuration/tests/test_config.py::GroupingContextDecoratorTests::test_after src/zope/configuration/tests/test_config.py::GroupingContextDecoratorTests::test_before src/zope/configuration/tests/test_config.py::GroupingContextDecoratorTests::test_class_conforms_to_IConfigurationContext src/zope/configuration/tests/test_config.py::GroupingContextDecoratorTests::test_class_conforms_to_IGroupingContext src/zope/configuration/tests/test_config.py::GroupingContextDecoratorTests::test_ctor_no_kwargs src/zope/configuration/tests/test_config.py::GroupingContextDecoratorTests::test_ctor_w_kwargs src/zope/configuration/tests/test_config.py::GroupingContextDecoratorTests::test_getattr_fetches_from_context_and_caches src/zope/configuration/tests/test_config.py::GroupingContextDecoratorTests::test_instance_conforms_to_IConfigurationContext src/zope/configuration/tests/test_config.py::GroupingContextDecoratorTests::test_instance_conforms_to_IGroupingContext src/zope/configuration/tests/test_config.py::DirectivesHandlerTests::test_class_conforms_to_IDirectivesContext src/zope/configuration/tests/test_config.py::DirectivesHandlerTests::test_instance_conforms_to_IDirectivesContext src/zope/configuration/tests/test_config.py::Test_defineSimpleDirective::test_defaults src/zope/configuration/tests/test_config.py::Test_defineSimpleDirective::test_explicit_w_star_namespace src/zope/configuration/tests/test_config.py::Test_defineGroupingDirective::test_defaults src/zope/configuration/tests/test_config.py::Test_defineGroupingDirective::test_explicit_w_star_namespace src/zope/configuration/tests/test_config.py::ComplexDirectiveDefinitionTests::test_before src/zope/configuration/tests/test_config.py::ComplexDirectiveDefinitionTests::test_class_conforms_to_IComplexDirectiveContext src/zope/configuration/tests/test_config.py::ComplexDirectiveDefinitionTests::test_instance_conforms_to_IComplexDirectiveContext src/zope/configuration/tests/test_config.py::Test_subdirective::test_w_handler_attribute src/zope/configuration/tests/test_config.py::Test_subdirective::test_wo_handler_attribute src/zope/configuration/tests/test_config.py::Test_provides::test_w_multiple src/zope/configuration/tests/test_config.py::Test_provides::test_w_single src/zope/configuration/tests/test_config.py::Test_toargs::test_w_empty_schema_no_data src/zope/configuration/tests/test_config.py::Test_toargs::test_w_empty_schema_w_data_no_kwargs_allowed src/zope/configuration/tests/test_config.py::Test_toargs::test_w_empty_schema_w_data_w_kwargs_allowed src/zope/configuration/tests/test_config.py::Test_toargs::test_w_field_missing_but_default src/zope/configuration/tests/test_config.py::Test_toargs::test_w_field_missing_no_default src/zope/configuration/tests/test_config.py::Test_toargs::test_w_invalid_value src/zope/configuration/tests/test_config.py::Test_toargs::test_w_keyword_sub src/zope/configuration/tests/test_config.py::Test_expand_action::test_defaults src/zope/configuration/tests/test_config.py::Test_expand_action::test_explicit_no_extra src/zope/configuration/tests/test_config.py::Test_expand_action::test_explicit_w_extra src/zope/configuration/tests/test_config.py::Test_resolveConflicts::test_configuration_conflict_error_has_readable_exception src/zope/configuration/tests/test_config.py::Test_resolveConflicts::test_empty src/zope/configuration/tests/test_config.py::Test_resolveConflicts::test_expands_oldstyle_actions src/zope/configuration/tests/test_config.py::Test_resolveConflicts::test_w_non_resolvable_discriminator_clash_different_paths src/zope/configuration/tests/test_config.py::Test_resolveConflicts::test_w_non_resolvable_discriminator_clash_same_path src/zope/configuration/tests/test_config.py::Test_resolveConflicts::test_w_resolvable_discriminator_clash src/zope/configuration/tests/test_config.py::Test_resolveConflicts::test_wo_discriminator_clash src/zope/configuration/tests/test_config.py::Test_resolveConflicts::test_wo_discriminators_final_sorting_order src/zope/configuration/tests/test_xmlconfig.py::ZopeXMLConfigurationErrorTests::test___str___uses_repr_of_info src/zope/configuration/tests/test_xmlconfig.py::ZopeSAXParseExceptionTests::test___str___not_a_sax_error src/zope/configuration/tests/test_xmlconfig.py::ZopeSAXParseExceptionTests::test___str___w_a_sax_error src/zope/configuration/tests/test_xmlconfig.py::ParserInfoTests::test___repr___w_eline_ecolumn_dont_match_line_column src/zope/configuration/tests/test_xmlconfig.py::ParserInfoTests::test___repr___w_eline_ecolumn_match_line_column src/zope/configuration/tests/test_xmlconfig.py::ParserInfoTests::test___str___w_eline_ecolumn_dont_match_line_column_bad_file src/zope/configuration/tests/test_xmlconfig.py::ParserInfoTests::test___str___w_eline_ecolumn_match_line_column src/zope/configuration/tests/test_xmlconfig.py::ParserInfoTests::test___str___w_good_file src/zope/configuration/tests/test_xmlconfig.py::ConfigurationHandlerTests::test_ctor_defaults src/zope/configuration/tests/test_xmlconfig.py::ConfigurationHandlerTests::test_ctor_explicit src/zope/configuration/tests/test_xmlconfig.py::ConfigurationHandlerTests::test_endElementNS_context_end_raises_w_testing src/zope/configuration/tests/test_xmlconfig.py::ConfigurationHandlerTests::test_endElementNS_context_end_raises_wo_testing src/zope/configuration/tests/test_xmlconfig.py::ConfigurationHandlerTests::test_endElementNS_normal src/zope/configuration/tests/test_xmlconfig.py::ConfigurationHandlerTests::test_endElementNS_w_ignore_depth_already_set src/zope/configuration/tests/test_xmlconfig.py::ConfigurationHandlerTests::test_evaluateCondition_w_have_hit src/zope/configuration/tests/test_xmlconfig.py::ConfigurationHandlerTests::test_evaluateCondition_w_have_miss src/zope/configuration/tests/test_xmlconfig.py::ConfigurationHandlerTests::test_evaluateCondition_w_have_no_args src/zope/configuration/tests/test_xmlconfig.py::ConfigurationHandlerTests::test_evaluateCondition_w_installed_hit src/zope/configuration/tests/test_xmlconfig.py::ConfigurationHandlerTests::test_evaluateCondition_w_installed_miss src/zope/configuration/tests/test_xmlconfig.py::ConfigurationHandlerTests::test_evaluateCondition_w_installed_no_args src/zope/configuration/tests/test_xmlconfig.py::ConfigurationHandlerTests::test_evaluateCondition_w_not_have_hit src/zope/configuration/tests/test_xmlconfig.py::ConfigurationHandlerTests::test_evaluateCondition_w_not_have_miss src/zope/configuration/tests/test_xmlconfig.py::ConfigurationHandlerTests::test_evaluateCondition_w_not_have_too_many_args src/zope/configuration/tests/test_xmlconfig.py::ConfigurationHandlerTests::test_evaluateCondition_w_not_installed_hit src/zope/configuration/tests/test_xmlconfig.py::ConfigurationHandlerTests::test_evaluateCondition_w_not_installed_miss src/zope/configuration/tests/test_xmlconfig.py::ConfigurationHandlerTests::test_evaluateCondition_w_not_installed_too_many_args src/zope/configuration/tests/test_xmlconfig.py::ConfigurationHandlerTests::test_evaluateCondition_w_unknown_verb src/zope/configuration/tests/test_xmlconfig.py::ConfigurationHandlerTests::test_setDocumentLocator src/zope/configuration/tests/test_xmlconfig.py::ConfigurationHandlerTests::test_startElementNS_context_begin_raises_w_testing src/zope/configuration/tests/test_xmlconfig.py::ConfigurationHandlerTests::test_startElementNS_context_begin_raises_wo_testing src/zope/configuration/tests/test_xmlconfig.py::ConfigurationHandlerTests::test_startElementNS_normal src/zope/configuration/tests/test_xmlconfig.py::ConfigurationHandlerTests::test_startElementNS_w_ignore_depth_already_set src/zope/configuration/tests/test_xmlconfig.py::ConfigurationHandlerTests::test_startElementNS_w_zcml_condition_failing src/zope/configuration/tests/test_xmlconfig.py::Test_processxmlfile::test_w_empty_xml src/zope/configuration/tests/test_xmlconfig.py::Test_processxmlfile::test_w_valid_xml_fp src/zope/configuration/tests/test_xmlconfig.py::Test_openInOrPlain::test_file_missing_and_dot_in_not_present src/zope/configuration/tests/test_xmlconfig.py::Test_openInOrPlain::test_file_missing_but_dot_in_present src/zope/configuration/tests/test_xmlconfig.py::Test_openInOrPlain::test_file_present src/zope/configuration/tests/test_xmlconfig.py::Test_include::test_both_file_and_files_passed src/zope/configuration/tests/test_xmlconfig.py::Test_include::test_neither_file_nor_files_passed src/zope/configuration/tests/test_xmlconfig.py::Test_include::test_neither_file_nor_files_passed_already_seen src/zope/configuration/tests/test_xmlconfig.py::Test_include::test_w_file_passed src/zope/configuration/tests/test_xmlconfig.py::Test_include::test_w_files_passed_and_package src/zope/configuration/tests/test_xmlconfig.py::Test_exclude::test_both_file_and_files_passed src/zope/configuration/tests/test_xmlconfig.py::Test_exclude::test_neither_file_nor_files_passed src/zope/configuration/tests/test_xmlconfig.py::Test_exclude::test_w_file_passed src/zope/configuration/tests/test_xmlconfig.py::Test_exclude::test_w_files_passed_and_package src/zope/configuration/tests/test_xmlconfig.py::Test_exclude::test_w_subpackage src/zope/configuration/tests/test_xmlconfig.py::Test_includeOverrides::test_actions_have_parents_includepath src/zope/configuration/tests/test_xmlconfig.py::Test_file::test_w_execute src/zope/configuration/tests/test_xmlconfig.py::Test_file::test_wo_execute_w_context src/zope/configuration/tests/test_xmlconfig.py::Test_file::test_wo_execute_wo_context_w_package src/zope/configuration/tests/test_xmlconfig.py::Test_file::test_wo_execute_wo_context_wo_package src/zope/configuration/tests/test_xmlconfig.py::Test_string::test_w_execute src/zope/configuration/tests/test_xmlconfig.py::Test_string::test_wo_execute_w_context src/zope/configuration/tests/test_xmlconfig.py::Test_string::test_wo_execute_wo_context src/zope/configuration/tests/test_xmlconfig.py::XMLConfigTests::test___call__ src/zope/configuration/tests/test_xmlconfig.py::XMLConfigTests::test_ctor src/zope/configuration/tests/test_xmlconfig.py::XMLConfigTests::test_ctor_w_global_context_missing src/zope/configuration/tests/test_xmlconfig.py::XMLConfigTests::test_ctor_w_module src/zope/configuration/tests/test_xmlconfig.py::Test_xmlconfig::test_w_testing_passed src/zope/configuration/tests/test_xmlconfig.py::Test_xmlconfig::test_wo_testing_passed src/zope/configuration/tests/test_xmlconfig.py::Test_testxmlconfig::test_w_testing_passed
src/zope/configuration/config.py src/zope/configuration/xmlconfig.py CHANGES.rst
src/zope/configuration/config.py src/zope/configuration/xmlconfig.py CHANGES.rst