diff --git a/CHANGES.rst b/CHANGES.rst
index 3cd9280..99874f1 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -16,6 +16,11 @@ Changes
 
 - Drop support for ``python setup.py test``.
 
+- Make ``zope.configuration.fields.Path`` and
+  ``zope.configuration.config.ConfigurationContext`` expand
+  environment variables and expand user home directories in paths. See
+  `issue <https://github.com/zopefoundation/zope.configuration/issues/3>`_.
+
 - Fix resolving names from a Python 2 package whose ``__init__.py`` has
   unicode elements in ``__all__``.
 
diff --git a/docs/api/fields.rst b/docs/api/fields.rst
index 928a632..c44dcf1 100644
--- a/docs/api/fields.rst
+++ b/docs/api/fields.rst
@@ -203,6 +203,16 @@
       >>> n.split(os.sep)
       ['', 'a', 'b']
 
+   Environment variables are expanded:
+
+   .. doctest::
+
+      >>> os.environ['path-test'] = '42'
+      >>> with_env = os.path.join(os.sep, u'a', u'${path-test}')
+      >>> n = field.fromUnicode(with_env)
+      >>> n.split(os.sep)
+      ['', 'a', '42']
+
    Now try a relative path:
 
    .. doctest::
@@ -212,6 +222,21 @@
       >>> n.split(os.sep)
       ['', 'faux', 'context', 'a', 'b']
 
+   The current user is expanded (these are implicitly relative paths):
+
+   .. doctest::
+
+      >>> old_home = os.environ.get('HOME')
+      >>> os.environ['HOME'] = os.path.join(os.sep, 'HOME')
+      >>> n = field.fromUnicode('~')
+      >>> n.split(os.sep)
+      ['', 'HOME']
+      >>> if old_home:
+      ...    os.environ['HOME'] = old_home
+      ... else:
+      ...    del os.environ['HOME']
+
+
 .. autoclass:: Bool
    :members:
    :member-order: bysource
diff --git a/docs/narr.rst b/docs/narr.rst
index 37bf25e..fc7d804 100644
--- a/docs/narr.rst
+++ b/docs/narr.rst
@@ -595,7 +595,7 @@ nest them under a new ``<configure>`` element.
 Features
 --------
 
-The verbs ``have`` and ``not-have`` test for the presence or absense
+The verbs ``have`` and ``not-have`` test for the presence or absence
 of features in the configuration context. The argument is a single
 feature name. Features can be established in Python code using
 :meth:`~zope.configuration.config.ConfigurationContext.provideFeature`,
diff --git a/src/zope/configuration/config.py b/src/zope/configuration/config.py
index 487154e..774b265 100644
--- a/src/zope/configuration/config.py
+++ b/src/zope/configuration/config.py
@@ -31,6 +31,7 @@ from zope.configuration.interfaces import IConfigurationContext
 from zope.configuration.interfaces import IGroupingContext
 from zope.configuration.fields import GlobalInterface
 from zope.configuration.fields import GlobalObject
+from zope.configuration.fields import PathProcessor
 from zope.configuration._compat import builtins
 from zope.configuration._compat import reraise
 from zope.configuration._compat import string_types
@@ -185,9 +186,9 @@ class ConfigurationContext(object):
     def path(self, filename):
         """ Compute package-relative paths.
         """
-        filename = os.path.normpath(filename)
+        filename, needs_processing = PathProcessor.expand(filename)
 
-        if os.path.isabs(filename):
+        if not needs_processing:
             return filename
 
         # Got a relative path, combine with base path.
diff --git a/src/zope/configuration/fields.py b/src/zope/configuration/fields.py
index b27a236..e934f69 100644
--- a/src/zope/configuration/fields.py
+++ b/src/zope/configuration/fields.py
@@ -120,19 +120,42 @@ class Tokens(List):
 
         return values
 
+class PathProcessor(object):
+    # Internal helper for manipulations on paths
+
+    @classmethod
+    def expand(cls, filename):
+        # Perform the expansions we want to have done. Returns a
+        # tuple: (path, needs_processing) If the second value is true,
+        # further processing should be done (the path isn't fully
+        # resolved); if false, the path should be used as is
+
+        filename = filename.strip()
+        # expanding a ~ at the front should generally result
+        # in an absolute path.
+        filename = os.path.expanduser(filename)
+        filename = os.path.expandvars(filename)
+        if os.path.isabs(filename):
+            return os.path.normpath(filename), False
+        return filename, True
+
 
 @implementer(IFromUnicode)
 class Path(Text):
     """A file path name, which may be input as a relative path
 
     Input paths are converted to absolute paths and normalized.
+
+    .. versionchanged:: 4.2.0
+        Start expanding home directories and environment variables.
     """
-    def fromUnicode(self, u):
-        u = u.strip()
-        if os.path.isabs(u):
-            return os.path.normpath(u)
 
-        return self.context.path(u)
+    def fromUnicode(self, value):
+        filename, needs_processing = PathProcessor.expand(value)
+        if needs_processing:
+            filename = self.context.path(filename)
+
+        return filename
 
 
 @implementer(IFromUnicode)
diff --git a/src/zope/configuration/interfaces.py b/src/zope/configuration/interfaces.py
index 67ee132..573e929 100644
--- a/src/zope/configuration/interfaces.py
+++ b/src/zope/configuration/interfaces.py
@@ -64,6 +64,12 @@ class IConfigurationContext(Interface):
         If the filename is relative to the package, then the returned
         name will include the package path, otherwise, the original
         file name is returned.
+
+        Environment variables in the path are expanded, and if the path
+        begins with the username marker (~), that is expanded as well.
+
+        .. versionchanged:: 4.2.0
+            Start expanding home directories and environment variables.
         """
 
     def checkDuplicate(filename):

`fields.Path` doesn't handle home directories
In https://bugs.launchpad.net/zope.configuration/+bug/494493, @batlock666 reported:

> The fieldtype Path from zope.configuration.fields doesn't handle home directories, indicated by a ~ in the path. The path ~/some.file will be interpreted as /path/to/some/package/~/some.file, while it should be something like /home/someuser/some.file.

@freddrake followed up:

> How much need is there for ~/some.file or ~user/some.file in ZCML?
> 
> If you're not using this from ZCML, could you describe you use case?

@batlock666 replied:

> I use it in a custom ZCML-directive. The directive defines a configuration-file in INI-format. The handler for the directive reads the file, and makes the contents available in a global utility:
> 
> In ZCML, I define:
> 
> ``` xml
> <ugent:configurationFile path="~/some.config.ini"
>                          name="some_config" />
> ```
> 
> Then in Zope, I can do this:
> 
> ``` python
> config = getUtility(IConfigurationFile, name="some_config")
> print config.getSections()
> ['some_section', 'some_other_section']
> ```
> 
> I use this to define connection-settings for MySQL and LDAP.

diff --git a/src/zope/configuration/tests/test_config.py b/src/zope/configuration/tests/test_config.py
index ed86737..4835df9 100644
--- a/src/zope/configuration/tests/test_config.py
+++ b/src/zope/configuration/tests/test_config.py
@@ -163,6 +163,31 @@ class ConfigurationContextTests(unittest.TestCase):
         c.package = stub()
         self.assertTrue(os.path.isabs(c.path('y/z')))
 
+    def test_path_expand_filenames(self):
+        import os
+        c = self._makeOne()
+        os.environ['path-test'] = '42'
+        try:
+            path = c.path(os.path.join(os.sep, '${path-test}'))
+            self.assertEqual(path, os.path.join(os.sep, '42'))
+        finally:
+            del os.environ['path-test']
+
+    def test_path_expand_user(self):
+        import os
+        c = self._makeOne()
+        old_home = os.environ.get('HOME')
+        # HOME should be absolute
+        os.environ['HOME'] = os.path.join(os.sep, 'HOME')
+        try:
+            path = c.path('~')
+            self.assertEqual(path, os.path.join(os.sep, 'HOME'))
+        finally: # pragma: no cover
+            if old_home:
+                os.environ['HOME'] = old_home
+            else:
+                del os.environ['HOME']
+
     def test_checkDuplicate_miss(self):
         import os
         c = self._makeOne()

pip install -e .[dev]
parse_log_pytest
pytest
zope-testrunner Sphinx repoze.sphinx.autointerface pytest
apt-get update apt-get install -y gcc
3.7
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
alabaster==0.7.13
attrs @ file:///croot/attrs_1668696182826/work
Babel==2.14.0
certifi @ file:///croot/certifi_1671487769961/work/certifi
charset-normalizer==3.4.1
docutils==0.19
flit_core @ file:///opt/conda/conda-bld/flit-core_1644941570762/work/source/flit_core
idna==3.10
imagesize==1.4.1
importlib-metadata @ file:///tmp/build/80754af9/importlib-metadata_1648562407465/work
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
Jinja2==3.1.6
MarkupSafe==2.1.5
packaging @ file:///croot/packaging_1671697413597/work
pluggy @ file:///tmp/build/80754af9/pluggy_1648042572264/work
py @ file:///opt/conda/conda-bld/py_1644396412707/work
Pygments==2.17.2
pytest==7.1.2
pytz==2025.2
repoze.sphinx.autointerface==1.0.0
requests==2.31.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
tomli @ file:///opt/conda/conda-bld/tomli_1657175507142/work
typing_extensions @ file:///croot/typing_extensions_1669924550328/work
urllib3==2.0.7
zipp @ file:///croot/zipp_1672387121353/work
-e git+https://github.com/zopefoundation/zope.configuration.git@3d013be0997fc9aae6031bca4b82a9d4f2d8013c#egg=zope.configuration
zope.event==5.0
zope.exceptions==5.1
zope.i18nmessageid==6.1.0
zope.interface==6.4.post2
zope.schema==7.0.1
zope.testrunner==6.5

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=22.1.0=py37h06a4308_0
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2022.12.7=py37h06a4308_0
  - flit-core=3.6.0=pyhd3eb1b0_0
  - importlib-metadata=4.11.3=py37h06a4308_0
  - importlib_metadata=4.11.3=hd3eb1b0_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - packaging=22.0=py37h06a4308_0
  - pip=22.3.1=py37h06a4308_0
  - pluggy=1.0.0=py37h06a4308_1
  - py=1.11.0=pyhd3eb1b0_0
  - pytest=7.1.2=py37h06a4308_0
  - python=3.7.16=h7a1cb2a_0
  - readline=8.2=h5eee18b_0
  - setuptools=65.6.3=py37h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tomli=2.0.1=py37h06a4308_0
  - typing_extensions=4.4.0=py37h06a4308_0
  - wheel=0.38.4=py37h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zipp=3.11.0=py37h06a4308_0
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - alabaster==0.7.13
      - babel==2.14.0
      - charset-normalizer==3.4.1
      - docutils==0.19
      - idna==3.10
      - imagesize==1.4.1
      - jinja2==3.1.6
      - markupsafe==2.1.5
      - pygments==2.17.2
      - pytz==2025.2
      - repoze-sphinx-autointerface==1.0.0
      - requests==2.31.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==2.0.7
      - zope-event==5.0
      - zope-exceptions==5.1
      - zope-i18nmessageid==6.1.0
      - zope-interface==6.4.post2
      - zope-schema==7.0.1
      - zope-testrunner==6.5
prefix: /opt/conda/envs/zope.configuration

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_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_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_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/config.py docs/narr.rst docs/api/fields.rst CHANGES.rst src/zope/configuration/interfaces.py src/zope/configuration/fields.py
src/zope/configuration/config.py docs/narr.rst docs/api/fields.rst CHANGES.rst src/zope/configuration/interfaces.py src/zope/configuration/fields.py