jamadden: This still leaves classes in control of what interfaces they implement, unlike the virtual duck-typed subclassing of ABCs, as described in #135 

It gets us most of the way there, though. If we want to do it, it's now pretty easy with a small change to the definition of `implementedBy` (and maybe a corresponding tweak to `ABCInterface.providedBy` for direct queries; not shown here):

```patch
-------------------------------------------------------------------------------------------------
modified: src/zope/interface/declarations.py
-------------------------------------------------------------------------------------------------
@@ -275,6 +275,27 @@ def _implements_name(ob):
     return (getattr(ob, '__module__', '?') or '?') + \
         '.' + (getattr(ob, '__name__', '?') or '?')

+def _abc_interfaces():
+    try:
+        from zope.interface.common import ABCInterface, ABCInterfaceClass
+    except ImportError:
+        return [] # Circular imports at _wire() time.
+    from zope.interface.common import collections, numbers, io # Ensure defined
+
+    seen = set()
+    to_examine = list(ABCInterface.dependents)
+    while to_examine:
+        iface = to_examine.pop()
+        if iface in seen:
+            continue
+        seen.add(iface)
+        to_examine.extend(iface.dependents)
+    return [x for x in seen if isinstance(x, ABCInterfaceClass)]
+
+def _abc_interfaces_of(cls):
+    ifaces = _abc_interfaces()
+
+    return [iface for iface in ifaces if issubclass(cls, iface.getABC())]

 @_use_c_impl
 def implementedBy(cls):
@@ -338,7 +359,8 @@ def implementedBy(cls):
                 raise TypeError("ImplementedBy called for non-factory", cls)
             bases = ()

-        spec = Implements.named(spec_name, *[implementedBy(c) for c in bases])
+        spec = Implements.named(spec_name,
+                                *([implementedBy(c) for c in bases] + _abc_interfaces_of(cls)))
         spec.inherit = cls

     try:
```

With that change, classes that "subclass" ABCs automatically also provide those interfaces:

```pycon
>>> from zope.interface.common import collections
>>> class Sized(object):
   ...:     def __len__(self): return 0
   ...:
>>> from zope.interface import providedBy
>>> list(providedBy(Sized()))
[<ABCInterfaceClass zope.interface.common.collections.IHashable>,
 <ABCInterfaceClass zope.interface.common.collections.ISized>]
```

That's a rough approximation, of course. The biggest issue is later registrations and cache invalidations. E.g., this doesn't do what you'd expect:
```pycon
>>> class VirtualSized(object):
...     pass
...
>>> list(providedBy(VirtualSized()))
[<ABCInterfaceClass zope.interface.common.collections.IHashable>]
>>> from collections.abc import Sized
>>> Sized.register(VirtualSized)
<class '__main__.VirtualSized'>
>>> isinstance(VirtualSized(), Sized)
True
>>> list(providedBy(VirtualSized()))
[<ABCInterfaceClass zope.interface.common.collections.IHashable>]
```

I feel like that's solvable, though. 

Is that something we want to proceed with? I'm not sure I personally have a defined use-case for it right now, but OTOH, I think I remember writing things like `classImplements(OOBTree, IMapping); classImplements(dict, IMapping)` just to be able to use the same adapters for both `OOBTree` and `dict`, and this would make that much more convenient (except for some reason, `OOBTree` isn't actually a virtual subclass of `collections.abc.Mapping` 😞 ).
jensens: Overall this looks fine. I must admit, I can not judge every detail.
diff --git a/CHANGES.rst b/CHANGES.rst
index d0ee2e8..f499162 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -116,6 +116,24 @@
   Like the above, this will break consumers depending on the exact
   output of error messages if more than one error is present.
 
+- Add ``zope.interface.common.collections``,
+  ``zope.interface.common.numbers``, and ``zope.interface.common.io``.
+  These modules define interfaces based on the ABCs defined in the
+  standard library ``collections.abc``, ``numbers`` and ``io``
+  modules, respectively. Importing these modules will make the
+  standard library concrete classes that are registered with those
+  ABCs declare the appropriate interface. See `issue 138
+  <https://github.com/zopefoundation/zope.interface/issues/138>`_.
+
+- Add ``zope.interface.common.builtins``. This module defines
+  interfaces of common builtin types, such as ``ITextString`` and
+  ``IByteString``, ``IDict``, etc. These interfaces extend the
+  appropriate interfaces from ``collections`` and ``numbers``, and the
+  standard library classes implement them after importing this module.
+  This is intended as a replacement for third-party packages like
+  `dolmen.builtins <https://pypi.org/project/dolmen.builtins/>`_.
+  See `issue 138 <https://github.com/zopefoundation/zope.interface/issues/138>`_.
+
 
 4.7.1 (2019-11-11)
 ==================
diff --git a/docs/api/common.rst b/docs/api/common.rst
index b04f067..36d1d3f 100644
--- a/docs/api/common.rst
+++ b/docs/api/common.rst
@@ -4,25 +4,47 @@
 
 The ``zope.interface.common`` package provides interfaces for objects
 distributed as part of the Python standard library. Importing these
-modules has the effect of making the standard library objects
+modules (usually) has the effect of making the standard library objects
 implement the correct interface.
 
-``zope.interface.common.interfaces``
-====================================
+zope.interface.common.interface
+===============================
 
 .. automodule:: zope.interface.common.interfaces
 
-``zope.interface.common.idatetime``
-===================================
+zope.interface.common.idatetime
+===============================
 
 .. automodule:: zope.interface.common.idatetime
 
-``zope.interface.common.mapping``
+zope.interface.common.collections
 =================================
 
+.. automodule:: zope.interface.common.collections
+
+zope.interface.common.numbers
+=============================
+
+.. automodule:: zope.interface.common.numbers
+
+zope.interface.common.builtins
+==============================
+
+.. automodule:: zope.interface.common.builtins
+
+zope.interface.common.io
+========================
+
+.. automodule:: zope.interface.common.io
+
+.. Deprecated or discouraged modules below this
+
+zope.interface.common.mapping
+=============================
+
 .. automodule:: zope.interface.common.mapping
 
-``zope.interface.common.sequence``
-==================================
+zope.interface.common.sequence
+==============================
 
 .. automodule:: zope.interface.common.sequence
diff --git a/src/zope/interface/common/__init__.py b/src/zope/interface/common/__init__.py
index b711d36..acbc581 100644
--- a/src/zope/interface/common/__init__.py
+++ b/src/zope/interface/common/__init__.py
@@ -1,2 +1,259 @@
+##############################################################################
+# Copyright (c) 2020 Zope Foundation and Contributors.
+# All Rights Reserved.
 #
-# This file is necessary to make this directory a package.
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+##############################################################################
+
+import itertools
+from types import FunctionType
+
+from zope.interface import classImplements
+from zope.interface import Interface
+from zope.interface.interface import fromFunction
+from zope.interface.interface import InterfaceClass
+from zope.interface.interface import _decorator_non_return
+
+__all__ = [
+    # Nothing public here.
+]
+
+
+# pylint:disable=inherit-non-class,
+# pylint:disable=no-self-argument,no-method-argument
+# pylint:disable=unexpected-special-method-signature
+
+class optional(object):
+    # Apply this decorator to a method definition to make it
+    # optional (remove it from the list of required names), overriding
+    # the definition inherited from the ABC.
+    def __init__(self, method):
+        self.__doc__ = method.__doc__
+
+
+class ABCInterfaceClass(InterfaceClass):
+    """
+    An interface that is automatically derived from a
+    :class:`abc.ABCMeta` type.
+
+    Internal use only.
+
+    The body of the interface definition *must* define
+    a property ``abc`` that is the ABC to base the interface on.
+
+    If ``abc`` is *not* in the interface definition, a regular
+    interface will be defined instead (but ``extra_classes`` is still
+    respected).
+
+    Use the ``@optional`` decorator on method definitions if
+    the ABC defines methods that are not actually required in all cases
+    because the Python language has multiple ways to implement a protocol.
+    For example, the ``iter()`` protocol can be implemented with
+    ``__iter__`` or the pair ``__len__`` and ``__getitem__``.
+
+    When created, any existing classes that are registered to conform
+    to the ABC are declared to implement this interface. This is *not*
+    automatically updated as the ABC registry changes. If the body of the
+    interface definition defines ``extra_classes``, it should be a
+    tuple giving additional classes to declare implement the interface.
+
+    Note that this is not fully symmetric. For example, it is usually
+    the case that a subclass relationship carries the interface
+    declarations over::
+
+        >>> from zope.interface import Interface
+        >>> class I1(Interface):
+        ...     pass
+        ...
+        >>> from zope.interface import implementer
+        >>> @implementer(I1)
+        ... class Root(object):
+        ...     pass
+        ...
+        >>> class Child(Root):
+        ...     pass
+        ...
+        >>> child = Child()
+        >>> isinstance(child, Root)
+        True
+        >>> from zope.interface import providedBy
+        >>> list(providedBy(child))
+        [<InterfaceClass __main__.I1>]
+
+    However, that's not the case with ABCs and ABC interfaces. Just
+    because ``isinstance(A(), AnABC)`` and ``isinstance(B(), AnABC)``
+    are both true, that doesn't mean there's any class hierarchy
+    relationship between ``A`` and ``B``, or between either of them
+    and ``AnABC``. Thus, if ``AnABC`` implemented ``IAnABC``, it would
+    not follow that either ``A`` or ``B`` implements ``IAnABC`` (nor
+    their instances provide it)::
+
+        >>> class SizedClass(object):
+        ...     def __len__(self): return 1
+        ...
+        >>> from collections.abc import Sized
+        >>> isinstance(SizedClass(), Sized)
+        True
+        >>> from zope.interface import classImplements
+        >>> classImplements(Sized, I1)
+        None
+        >>> list(providedBy(SizedClass()))
+        []
+
+    Thus, to avoid conflicting assumptions, ABCs should not be
+    declared to implement their parallel ABC interface. Only concrete
+    classes specifically registered with the ABC should be declared to
+    do so.
+
+    .. versionadded:: 5.0.0
+    """
+
+    # If we could figure out invalidation, and used some special
+    # Specification/Declaration instances, and override the method ``providedBy`` here,
+    # perhaps we could more closely integrate with ABC virtual inheritance?
+
+    def __init__(self, name, bases, attrs):
+        # go ahead and give us a name to ease debugging.
+        self.__name__ = name
+        extra_classes = attrs.pop('extra_classes', ())
+
+        if 'abc' not in attrs:
+            # Something like ``IList(ISequence)``: We're extending
+            # abc interfaces but not an ABC interface ourself.
+            self.__class__ = InterfaceClass
+            InterfaceClass.__init__(self, name, bases, attrs)
+            for cls in extra_classes:
+                classImplements(cls, self)
+            return
+
+        based_on = attrs.pop('abc')
+        self.__abc = based_on
+        self.__extra_classes = tuple(extra_classes)
+
+        assert name[1:] == based_on.__name__, (name, based_on)
+        methods = {
+            # Passing the name is important in case of aliases,
+            # e.g., ``__ror__ = __or__``.
+            k: self.__method_from_function(v, k)
+            for k, v in vars(based_on).items()
+            if isinstance(v, FunctionType) and not self.__is_private_name(k)
+            and not self.__is_reverse_protocol_name(k)
+        }
+
+        methods['__doc__'] = self.__create_class_doc(attrs)
+        # Anything specified in the body takes precedence.
+        methods.update(attrs)
+        InterfaceClass.__init__(self, name, bases, methods)
+        self.__register_classes()
+
+    @staticmethod
+    def __optional_methods_to_docs(attrs):
+        optionals = {k: v for k, v in attrs.items() if isinstance(v, optional)}
+        for k in optionals:
+            attrs[k] = _decorator_non_return
+
+        if not optionals:
+            return ''
+
+        docs = "\n\nThe following methods are optional:\n - " + "\n-".join(
+            "%s\n%s" % (k, v.__doc__) for k, v in optionals.items()
+        )
+        return docs
+
+    def __create_class_doc(self, attrs):
+        based_on = self.__abc
+        def ref(c):
+            mod = c.__module__
+            name = c.__name__
+            if mod == str.__module__:
+                return "`%s`" % name
+            if mod == '_io':
+                mod = 'io'
+            return "`%s.%s`" % (mod, name)
+        implementations_doc = "\n - ".join(
+            ref(c)
+            for c in sorted(self.getRegisteredConformers(), key=ref)
+        )
+        if implementations_doc:
+            implementations_doc = "\n\nKnown implementations are:\n\n - " + implementations_doc
+
+        based_on_doc = (based_on.__doc__ or '')
+        based_on_doc = based_on_doc.splitlines()
+        based_on_doc = based_on_doc[0] if based_on_doc else ''
+
+        doc = """Interface for the ABC `%s.%s`.\n\n%s%s%s""" % (
+            based_on.__module__, based_on.__name__,
+            attrs.get('__doc__', based_on_doc),
+            self.__optional_methods_to_docs(attrs),
+            implementations_doc
+        )
+        return doc
+
+
+    @staticmethod
+    def __is_private_name(name):
+        if name.startswith('__') and name.endswith('__'):
+            return False
+        return name.startswith('_')
+
+    @staticmethod
+    def __is_reverse_protocol_name(name):
+        # The reverse names, like __rand__,
+        # aren't really part of the protocol. The interpreter has
+        # very complex behaviour around invoking those. PyPy
+        # doesn't always even expose them as attributes.
+        return name.startswith('__r') and name.endswith('__')
+
+    def __method_from_function(self, function, name):
+        method = fromFunction(function, self, name=name)
+        # Eliminate the leading *self*, which is implied in
+        # an interface, but explicit in an ABC.
+        method.positional = method.positional[1:]
+        return method
+
+    def __register_classes(self):
+        # Make the concrete classes already present in our ABC's registry
+        # declare that they implement this interface.
+
+        for cls in self.getRegisteredConformers():
+            classImplements(cls, self)
+
+    def getABC(self):
+        """
+        Return the ABC this interface represents.
+        """
+        return self.__abc
+
+    def getRegisteredConformers(self):
+        """
+        Return an iterable of the classes that are known to conform to
+        the ABC this interface parallels.
+        """
+        based_on = self.__abc
+
+        # The registry only contains things that aren't already
+        # known to be subclasses of the ABC. But the ABC is in charge
+        # of checking that, so its quite possible that registrations
+        # are in fact ignored, winding up just in the _abc_cache.
+        try:
+            registered = list(based_on._abc_registry) + list(based_on._abc_cache)
+        except AttributeError:
+            # Rewritten in C in CPython 3.7.
+            # These expose the underlying weakref.
+            from abc import _get_dump
+            data = _get_dump(based_on)
+            registry = data[0]
+            cache = data[1]
+            registered = [x() for x in itertools.chain(registry, cache)]
+            registered = [x for x in registered if x is not None]
+
+        return set(itertools.chain(registered, self.__extra_classes))
+
+
+ABCInterface = ABCInterfaceClass.__new__(ABCInterfaceClass, None, None, None)
+InterfaceClass.__init__(ABCInterface, 'ABCInterface', (Interface,), {})
diff --git a/src/zope/interface/common/builtins.py b/src/zope/interface/common/builtins.py
new file mode 100644
index 0000000..9262340
--- /dev/null
+++ b/src/zope/interface/common/builtins.py
@@ -0,0 +1,126 @@
+##############################################################################
+# Copyright (c) 2020 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+##############################################################################
+"""
+Interface definitions for builtin types.
+
+After this module is imported, the standard library types will declare
+that they implement the appropriate interface.
+
+.. versionadded:: 5.0.0
+"""
+from __future__ import absolute_import
+
+from zope.interface import classImplements
+
+from zope.interface.common import collections
+from zope.interface.common import numbers
+from zope.interface.common import io
+
+__all__ = [
+    'IList',
+    'ITuple',
+    'ITextString',
+    'IByteString',
+    'INativeString',
+    'IBool',
+    'IDict',
+    'IFile',
+]
+
+# pylint:disable=no-self-argument
+
+class IList(collections.IMutableSequence):
+    """
+    Interface for :class:`list`
+    """
+    extra_classes = (list,)
+
+    def sort(key=None, reverse=False):
+        """
+        Sort the list in place and return None.
+
+        *key* and *reverse* must be passed by name only.
+        """
+
+
+class ITuple(collections.ISequence):
+    """
+    Interface for :class:`tuple`
+    """
+    extra_classes = (tuple,)
+
+
+class ITextString(collections.ISequence):
+    """
+    Interface for text (unicode) strings.
+
+    On Python 2, this is :class:`unicode`. On Python 3,
+    this is :class:`str`
+    """
+    extra_classes = (type(u'unicode'),)
+
+
+class IByteString(collections.IByteString):
+    """
+    Interface for immutable byte strings.
+
+    On all Python versions this is :class:`bytes`.
+
+    Unlike :class:`zope.interface.common.collections.IByteString`
+    (the parent of this interface) this does *not* include
+    :class:`bytearray`.
+    """
+    extra_classes = (bytes,)
+
+
+class INativeString(IByteString if str is bytes else ITextString):
+    """
+    Interface for native strings.
+
+    On all Python versions, this is :class:`str`. On Python 2,
+    this extends :class:`IByteString`, while on Python 3 it extends
+    :class:`ITextString`.
+    """
+# We're not extending ABCInterface so extra_classes won't work
+classImplements(str, INativeString)
+
+
+class IBool(numbers.IIntegral):
+    """
+    Interface for :class:`bool`
+    """
+    extra_classes = (bool,)
+
+
+class IDict(collections.IMutableMapping):
+    """
+    Interface for :class:`dict`
+    """
+    extra_classes = (dict,)
+
+
+class IFile(io.IIOBase):
+    """
+    Interface for :class:`file`.
+
+    It is recommended to use the interfaces from :mod:`zope.interface.common.io`
+    instead of this interface.
+
+    On Python 3, there is no single implementation of this interface;
+    depending on the arguments, the :func:`open` builtin can return
+    many different classes that implement different interfaces from
+    :mod:`zope.interface.common.io`.
+    """
+    try:
+        extra_classes = (file,)
+    except NameError:
+        extra_classes = ()
diff --git a/src/zope/interface/common/collections.py b/src/zope/interface/common/collections.py
new file mode 100644
index 0000000..9731069
--- /dev/null
+++ b/src/zope/interface/common/collections.py
@@ -0,0 +1,276 @@
+##############################################################################
+# Copyright (c) 2020 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+##############################################################################
+"""
+Interface definitions paralleling the abstract base classes defined in
+:mod:`collections.abc`.
+
+After this module is imported, the standard library types will declare
+that they implement the appropriate interface. While most standard
+library types will properly implement that interface (that
+is, ``verifyObject(ISequence, list()))`` will pass, for example), a few might not:
+
+    - `memoryview` doesn't feature all the defined methods of
+      ``ISequence`` such as ``count``; it is still declared to provide
+      ``ISequence`` though.
+
+    - `collections.deque.pop` doesn't accept the ``index`` argument of
+      `collections.abc.MutableSequence.pop`
+
+    - `range.index` does not accept the ``start`` and ``stop`` arguments.
+
+.. versionadded:: 5.0.0
+"""
+from __future__ import absolute_import
+
+import sys
+
+from abc import ABCMeta
+# The collections imports are here, and not in
+# zope.interface._compat to avoid importing collections
+# unless requested. It's a big import.
+try:
+    from collections import abc
+except ImportError:
+    import collections as abc
+
+try:
+    # On Python 3, all of these extend the appropriate collection ABC,
+    # but on Python 2, UserDict does not (though it is registered as a
+    # MutableMapping). (Importantly, UserDict on Python 2 is *not*
+    # registered, because it's not iterable.) Extending the ABC is not
+    # taken into account for interface declarations, though, so we
+    # need to be explicit about it.
+    from collections import UserList
+    from collections import UserDict
+    from collections import UserString
+except ImportError:
+    # Python 2
+    from UserList import UserList
+    from UserDict import IterableUserDict as UserDict
+    from UserString import UserString
+
+
+from zope.interface._compat import PYTHON2 as PY2
+from zope.interface._compat import PYTHON3 as PY3
+from zope.interface.common import ABCInterface
+from zope.interface.common import optional
+
+# pylint:disable=inherit-non-class,
+# pylint:disable=no-self-argument,no-method-argument
+# pylint:disable=unexpected-special-method-signature
+# pylint:disable=no-value-for-parameter
+
+PY35 = sys.version_info[:2] >= (3, 5)
+PY36 = sys.version_info[:2] >= (3, 6)
+
+def _new_in_ver(name, ver,
+                bases_if_missing=(ABCMeta,),
+                register_if_missing=()):
+    if ver:
+        return getattr(abc, name)
+
+    # TODO: It's a shame to have to repeat the bases when
+    # the ABC is missing. Can we DRY that?
+    missing = ABCMeta(name, bases_if_missing, {
+        '__doc__': "The ABC %s is not defined in this version of Python." % (
+            name
+        ),
+    })
+
+    for c in register_if_missing:
+        missing.register(c)
+
+    return missing
+
+__all__ = [
+    'IAsyncGenerator',
+    'IAsyncIterable',
+    'IAsyncIterator',
+    'IAwaitable',
+    'ICollection',
+    'IContainer',
+    'ICoroutine',
+    'IGenerator',
+    'IHashable',
+    'IItemsView',
+    'IIterable',
+    'IIterator',
+    'IKeysView',
+    'IMapping',
+    'IMappingView',
+    'IMutableMapping',
+    'IMutableSequence',
+    'IMutableSet',
+    'IReversible',
+    'ISequence',
+    'ISet',
+    'ISized',
+    'IValuesView',
+]
+
+class IContainer(ABCInterface):
+    abc = abc.Container
+
+    @optional
+    def __contains__(other):
+        """
+        Optional method. If not provided, the interpreter will use
+        ``__iter__`` or the old ``__getitem__`` protocol
+        to implement ``in``.
+        """
+
+class IHashable(ABCInterface):
+    abc = abc.Hashable
+
+class IIterable(ABCInterface):
+    abc = abc.Iterable
+
+    @optional
+    def __iter__():
+        """
+        Optional method. If not provided, the interpreter will
+        implement `iter` using the old ``__getitem__`` protocol.
+        """
+
+class IIterator(IIterable):
+    abc = abc.Iterator
+
+class IReversible(IIterable):
+    abc = _new_in_ver('Reversible', PY36, (IIterable.getABC(),))
+
+    @optional
+    def __reversed__():
+        """
+        Optional method. If this isn't present, the interpreter
+        will use ``__len__`` and ``__getitem__`` to implement the
+        `reversed` builtin.
+        """
+
+class IGenerator(IIterator):
+    # New in 3.5
+    abc = _new_in_ver('Generator', PY35, (IIterator.getABC(),))
+
+
+class ISized(ABCInterface):
+    abc = abc.Sized
+
+
+# ICallable is not defined because there's no standard signature.
+
+class ICollection(ISized,
+                  IIterable,
+                  IContainer):
+    abc = _new_in_ver('Collection', PY36,
+                      (ISized.getABC(), IIterable.getABC(), IContainer.getABC()))
+
+
+class ISequence(IReversible,
+                ICollection):
+    abc = abc.Sequence
+    extra_classes = (UserString,)
+
+    @optional
+    def __reversed__():
+        """
+        Optional method. If this isn't present, the interpreter
+        will use ``__len__`` and ``__getitem__`` to implement the
+        `reversed` builtin.
+        """
+
+    @optional
+    def __iter__():
+        """
+        Optional method. If not provided, the interpreter will
+        implement `iter` using the old ``__getitem__`` protocol.
+        """
+
+class IMutableSequence(ISequence):
+    abc = abc.MutableSequence
+    extra_classes = (UserList,)
+
+
+class IByteString(ISequence):
+    """
+    This unifies `bytes` and `bytearray`.
+    """
+    abc = _new_in_ver('ByteString', PY3,
+                      (ISequence.getABC(),),
+                      (bytes, bytearray))
+
+
+class ISet(ICollection):
+    abc = abc.Set
+
+
+class IMutableSet(ISet):
+    abc = abc.MutableSet
+
+
+class IMapping(ICollection):
+    abc = abc.Mapping
+
+    if PY2:
+        @optional
+        def __eq__(other):
+            """
+            The interpreter will supply one.
+            """
+
+        __ne__ = __eq__
+
+
+class IMutableMapping(IMapping):
+    abc = abc.MutableMapping
+    extra_classes = (UserDict,)
+
+
+class IMappingView(ISized):
+    abc = abc.MappingView
+
+
+class IItemsView(IMappingView, ISet):
+    abc = abc.ItemsView
+
+
+class IKeysView(IMappingView, ISet):
+    abc = abc.KeysView
+
+
+class IValuesView(IMappingView, ICollection):
+    abc = abc.ValuesView
+
+    @optional
+    def __contains__(other):
+        """
+        Optional method. If not provided, the interpreter will use
+        ``__iter__`` or the old ``__len__`` and ``__getitem__`` protocol
+        to implement ``in``.
+        """
+
+class IAwaitable(ABCInterface):
+    abc = _new_in_ver('Awaitable', PY35)
+
+
+class ICoroutine(IAwaitable):
+    abc = _new_in_ver('Coroutine', PY35)
+
+
+class IAsyncIterable(ABCInterface):
+    abc = _new_in_ver('AsyncIterable', PY35)
+
+
+class IAsyncIterator(IAsyncIterable):
+    abc = _new_in_ver('AsyncIterator', PY35)
+
+
+class IAsyncGenerator(IAsyncIterator):
+    abc = _new_in_ver('AsyncGenerator', PY36)
diff --git a/src/zope/interface/common/io.py b/src/zope/interface/common/io.py
new file mode 100644
index 0000000..540d53a
--- /dev/null
+++ b/src/zope/interface/common/io.py
@@ -0,0 +1,53 @@
+##############################################################################
+# Copyright (c) 2020 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+##############################################################################
+"""
+Interface definitions paralleling the abstract base classes defined in
+:mod:`io`.
+
+After this module is imported, the standard library types will declare
+that they implement the appropriate interface.
+
+.. versionadded:: 5.0.0
+"""
+from __future__ import absolute_import
+
+import io as abc
+
+from zope.interface.common import ABCInterface
+
+# pylint:disable=inherit-non-class,
+# pylint:disable=no-member
+
+class IIOBase(ABCInterface):
+    abc = abc.IOBase
+
+
+class IRawIOBase(IIOBase):
+    abc = abc.RawIOBase
+
+
+class IBufferedIOBase(IIOBase):
+    abc = abc.BufferedIOBase
+    try:
+        import cStringIO
+    except ImportError:
+        # Python 3
+        extra_classes = ()
+    else:
+        import StringIO
+        extra_classes = (StringIO.StringIO, cStringIO.InputType, cStringIO.OutputType)
+        del cStringIO
+        del StringIO
+
+
+class ITextIOBase(IIOBase):
+    abc = abc.TextIOBase
diff --git a/src/zope/interface/common/mapping.py b/src/zope/interface/common/mapping.py
index a005aed..13fa317 100644
--- a/src/zope/interface/common/mapping.py
+++ b/src/zope/interface/common/mapping.py
@@ -11,13 +11,26 @@
 # FOR A PARTICULAR PURPOSE.
 #
 ##############################################################################
-"""Mapping Interfaces.
+"""
+Mapping Interfaces.
+
+Importing this module does *not* mark any standard classes as
+implementing any of these interfaces.
 
-Importing this module does *not* mark any standard classes
-as implementing any of these interfaces.
+While this module is not deprecated, new code should generally use
+:mod:`zope.interface.common.collections`, specifically
+:class:`~zope.interface.common.collections.IMapping` and
+:class:`~zope.interface.common.collections.IMutableMapping`. This
+module is occasionally useful for its extremely fine grained breakdown
+of interfaces.
+
+The standard library :class:`dict` and :class:`collections.UserDict`
+implement ``IMutableMapping``, but *do not* implement any of the
+interfaces in this module.
 """
 from zope.interface import Interface
 from zope.interface._compat import PYTHON2 as PY2
+from zope.interface.common import collections
 
 class IItemMapping(Interface):
     """Simplest readable mapping object
@@ -30,8 +43,12 @@ class IItemMapping(Interface):
         """
 
 
-class IReadMapping(IItemMapping):
-    """Basic mapping interface
+class IReadMapping(IItemMapping, collections.IContainer):
+    """
+    Basic mapping interface.
+
+    .. versionchanged:: 5.0.0
+       Extend ``IContainer``
     """
 
     def get(key, default=None):
@@ -42,6 +59,7 @@ class IReadMapping(IItemMapping):
 
     def __contains__(key):
         """Tell if a key exists in the mapping."""
+        # Optional in IContainer, required by this interface.
 
 
 class IWriteMapping(Interface):
@@ -54,8 +72,12 @@ class IWriteMapping(Interface):
         """Set a new item in the mapping."""
 
 
-class IEnumerableMapping(IReadMapping):
-    """Mapping objects whose items can be enumerated.
+class IEnumerableMapping(IReadMapping, collections.ISized):
+    """
+    Mapping objects whose items can be enumerated.
+
+    .. versionchanged:: 5.0.0
+       Extend ``ISized``
     """
 
     def keys():
@@ -74,10 +96,6 @@ class IEnumerableMapping(IReadMapping):
         """Return the items of the mapping object.
         """
 
-    def __len__():
-        """Return the number of items.
-        """
-
 class IMapping(IWriteMapping, IEnumerableMapping):
     ''' Simple mapping interface '''
 
@@ -152,6 +170,15 @@ class IExtendedWriteMapping(IWriteMapping):
         2-tuple; but raise KeyError if mapping is empty"""
 
 class IFullMapping(
-    IExtendedReadMapping, IExtendedWriteMapping, IClonableMapping, IMapping):
-    ''' Full mapping interface ''' # IMapping included so tests for IMapping
-    # succeed with IFullMapping
+        collections.IMutableMapping,
+        IExtendedReadMapping, IExtendedWriteMapping, IClonableMapping, IMapping):
+    """
+    Full mapping interface.
+
+    Most uses of this interface should instead use
+    :class:`~zope.interface.commons.collections.IMutableMapping` (one of the
+    bases of this interface). The required methods are the same.
+
+    .. versionchanged:: 5.0.0
+       Extend ``IMutableMapping``
+    """
diff --git a/src/zope/interface/common/numbers.py b/src/zope/interface/common/numbers.py
new file mode 100644
index 0000000..3bf9206
--- /dev/null
+++ b/src/zope/interface/common/numbers.py
@@ -0,0 +1,84 @@
+##############################################################################
+# Copyright (c) 2020 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+##############################################################################
+"""
+Interface definitions paralleling the abstract base classes defined in
+:mod:`numbers`.
+
+After this module is imported, the standard library types will declare
+that they implement the appropriate interface.
+
+.. versionadded:: 5.0.0
+"""
+from __future__ import absolute_import
+
+import numbers as abc
+
+from zope.interface.common import ABCInterface
+from zope.interface.common import optional
+
+from zope.interface._compat import PYTHON2 as PY2
+
+# pylint:disable=inherit-non-class,
+# pylint:disable=no-self-argument,no-method-argument
+# pylint:disable=unexpected-special-method-signature
+# pylint:disable=no-value-for-parameter
+
+
+class INumber(ABCInterface):
+    abc = abc.Number
+
+
+class IComplex(INumber):
+    abc = abc.Complex
+
+    @optional
+    def __complex__():
+        """
+        Rarely implemented, even in builtin types.
+        """
+
+    if PY2:
+        @optional
+        def __eq__(other):
+            """
+            The interpreter may supply one through complicated rules.
+            """
+
+        __ne__ = __eq__
+
+class IReal(IComplex):
+    abc = abc.Real
+
+    @optional
+    def __complex__():
+        """
+        Rarely implemented, even in builtin types.
+        """
+
+    __floor__ = __ceil__ = __complex__
+
+    if PY2:
+        @optional
+        def __le__(other):
+            """
+            The interpreter may supply one through complicated rules.
+            """
+
+        __lt__ = __le__
+
+
+class IRational(IReal):
+    abc = abc.Rational
+
+
+class IIntegral(IRational):
+    abc = abc.Integral
diff --git a/src/zope/interface/common/sequence.py b/src/zope/interface/common/sequence.py
index c36d615..da4bc84 100644
--- a/src/zope/interface/common/sequence.py
+++ b/src/zope/interface/common/sequence.py
@@ -11,17 +11,30 @@
 # FOR A PARTICULAR PURPOSE.
 #
 ##############################################################################
-"""Sequence Interfaces
+"""
+Sequence Interfaces
+
+Importing this module does *not* mark any standard classes as
+implementing any of these interfaces.
+
+While this module is not deprecated, new code should generally use
+:mod:`zope.interface.common.collections`, specifically
+:class:`~zope.interface.common.collections.ISequence` and
+:class:`~zope.interface.common.collections.IMutableSequence`. This
+module is occasionally useful for its fine-grained breakdown of interfaces.
 
-Importing this module does *not* mark any standard classes
-as implementing any of these interfaces.
+The standard library :class:`list`, :class:`tuple` and
+:class:`collections.UserList`, among others, implement ``ISequence``
+or ``IMutableSequence`` but *do not* implement any of the interfaces
+in this module.
 """
 
 __docformat__ = 'restructuredtext'
 from zope.interface import Interface
+from zope.interface.common import collections
 from zope.interface._compat import PYTHON2 as PY2
 
-class IMinimalSequence(Interface):
+class IMinimalSequence(collections.IIterable):
     """Most basic sequence interface.
 
     All sequences are iterable.  This requires at least one of the
@@ -42,16 +55,30 @@ class IMinimalSequence(Interface):
         Declaring this interface does not specify whether `__getitem__`
         supports slice objects."""
 
-class IFiniteSequence(IMinimalSequence):
+class IFiniteSequence(collections.ISized, IMinimalSequence):
+    """
+    A sequence of bound size.
 
-    def __len__():
-        """``x.__len__() <==> len(x)``"""
+    .. versionchanged:: 5.0.0
+       Extend ``ISized``
+    """
 
-class IReadSequence(IFiniteSequence):
-    """read interface shared by tuple and list"""
+class IReadSequence(collections.IContainer, IFiniteSequence):
+    """
+    read interface shared by tuple and list
+
+    This interface is similar to
+    :class:`~zope.interface.common.collections.ISequence`, but
+    requires that all instances be totally ordered. Most users
+    should prefer ``ISequence``.
+
+    .. versionchanged:: 5.0.0
+       Extend ``IContainer``
+    """
 
     def __contains__(item):
         """``x.__contains__(item) <==> item in x``"""
+        # Optional in IContainer, required here.
 
     def __lt__(other):
         """``x.__lt__(other) <==> x < other``"""
@@ -166,4 +193,23 @@ class IWriteSequence(IUniqueMemberWriteSequence):
         """``x.__imul__(n) <==> x *= n``"""
 
 class ISequence(IReadSequence, IWriteSequence):
-    """Full sequence contract"""
+    """
+    Full sequence contract.
+
+    New code should prefer
+    :class:`~zope.interface.common.collections.IMutableSequence`.
+
+    Compared to that interface, which is implemented by :class:`list`
+    (:class:`~zope.interface.common.builtins.IList`), among others,
+    this interface is missing the following methods:
+
+        - clear
+
+        - count
+
+        - index
+
+    This interface adds the following methods:
+
+        - sort
+    """

Can we hook zope.interface.common up to standard library ABCs/classes?
`z.i.common.idatetime` declares appropriate `classImplements` for various stdlib classes, and the same with the exceptions in `z.i.common.interfaces`. However, `z.i.c.mapping` and `z.i.c.sequences` do not. Also, there are some things missing, such as `IBytes` and `IText` and `INumber`.

Given the existence of abstract base classes that essentially define these same interfaces, is there something we can do to ease the gap by default? In the past I've used [dolmen.builtins](https://pypi.org/project/dolmen.builtins/) for some of this.

Question is inspired by [this post of glyph](https://glyph.twistedmatrix.com/2009/02/explaining-why-interfaces-are-great.html):

> One of the irritating things about using zope.interface is that the metadata about standard objects in zope.interface.common is not hooked up to anything: IMapping.providedBy({}) returns False.  ABCs will provide that metadata in the standard library, making zope.interface that much more useful once it has been upgraded to understand the declarations that the collections and numbers modules provide.
diff --git a/src/zope/interface/common/tests/__init__.py b/src/zope/interface/common/tests/__init__.py
index b711d36..059e46c 100644
--- a/src/zope/interface/common/tests/__init__.py
+++ b/src/zope/interface/common/tests/__init__.py
@@ -1,2 +1,100 @@
+##############################################################################
+# Copyright (c) 2020 Zope Foundation and Contributors.
+# All Rights Reserved.
 #
-# This file is necessary to make this directory a package.
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+##############################################################################
+
+import unittest
+
+from zope.interface.verify import verifyClass
+from zope.interface.verify import verifyObject
+
+from zope.interface.common import ABCInterface
+from zope.interface.common import ABCInterfaceClass
+
+
+def iter_abc_interfaces(predicate=lambda iface: True):
+    # Iterate ``(iface, classes)``, where ``iface`` is a descendent of
+    # the ABCInterfaceClass passing the *predicate* and ``classes`` is
+    # an iterable of classes registered to conform to that interface.
+    #
+    # Note that some builtin classes are registered for two distinct
+    # parts of the ABC/interface tree. For example, bytearray is both ByteString
+    # and MutableSequence.
+    seen = set()
+    stack = list(ABCInterface.dependents) # subclasses, but also implementedBy objects
+    while stack:
+        iface = stack.pop(0)
+        if iface in seen or not isinstance(iface, ABCInterfaceClass):
+            continue
+        seen.add(iface)
+        stack.extend(list(iface.dependents))
+        if not predicate(iface):
+            continue
+
+        registered = list(iface.getRegisteredConformers())
+        if registered:
+            yield iface, registered
+
+
+def add_abc_interface_tests(cls, module):
+    def predicate(iface):
+        return iface.__module__ == module
+    add_verify_tests(cls, iter_abc_interfaces(predicate))
+
+
+def add_verify_tests(cls, iface_classes_iter):
+    for iface, registered_classes in iface_classes_iter:
+        for stdlib_class in registered_classes:
+
+            def test(self, stdlib_class=stdlib_class, iface=iface):
+                if stdlib_class in self.UNVERIFIABLE or stdlib_class.__name__ in self.UNVERIFIABLE:
+                    self.skipTest("Unable to verify %s" % stdlib_class)
+
+                self.assertTrue(self.verify(iface, stdlib_class))
+
+            name = 'test_auto_' + stdlib_class.__name__ + '_' + iface.__name__
+            test.__name__ = name
+            assert not hasattr(cls, name)
+            setattr(cls, name, test)
+
+
+class VerifyClassMixin(unittest.TestCase):
+    verifier = staticmethod(verifyClass)
+    UNVERIFIABLE = ()
+
+    def _adjust_object_before_verify(self, iface, x):
+        return x
+
+    def verify(self, iface, klass, **kwargs):
+        return self.verifier(iface,
+                             self._adjust_object_before_verify(iface, klass),
+                             **kwargs)
+
+
+class VerifyObjectMixin(VerifyClassMixin):
+    verifier = staticmethod(verifyObject)
+    CONSTRUCTORS = {
+    }
+
+    def _adjust_object_before_verify(self, iface, x):
+        constructor = self.CONSTRUCTORS.get(x)
+        if not constructor:
+            constructor = self.CONSTRUCTORS.get(iface)
+        if not constructor:
+            constructor = self.CONSTRUCTORS.get(x.__name__)
+        if not constructor:
+            constructor = x
+        if constructor is unittest.SkipTest:
+            self.skipTest("Cannot create " + str(x))
+
+        result = constructor()
+        if hasattr(result, 'close'):
+            self.addCleanup(result.close)
+        return result
diff --git a/src/zope/interface/common/tests/test_builtins.py b/src/zope/interface/common/tests/test_builtins.py
new file mode 100644
index 0000000..1f0d338
--- /dev/null
+++ b/src/zope/interface/common/tests/test_builtins.py
@@ -0,0 +1,45 @@
+##############################################################################
+# Copyright (c) 2020 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+##############################################################################
+from __future__ import absolute_import
+
+import unittest
+
+from zope.interface._compat import PYTHON2 as PY2
+from zope.interface.common import builtins
+
+from . import VerifyClassMixin
+from . import VerifyObjectMixin
+from . import add_verify_tests
+
+
+class TestVerifyClass(VerifyClassMixin,
+                      unittest.TestCase):
+    pass
+
+
+add_verify_tests(TestVerifyClass, (
+    (builtins.IList, (list,)),
+    (builtins.ITuple, (tuple,)),
+    (builtins.ITextString, (type(u'abc'),)),
+    (builtins.IByteString, (bytes,)),
+    (builtins.INativeString, (str,)),
+    (builtins.IBool, (bool,)),
+    (builtins.IDict, (dict,)),
+    (builtins.IFile, (file,) if PY2 else ()),
+))
+
+
+class TestVerifyObject(VerifyObjectMixin,
+                       TestVerifyClass):
+    CONSTRUCTORS = {
+        builtins.IFile: lambda: open(__file__)
+    }
diff --git a/src/zope/interface/common/tests/test_collections.py b/src/zope/interface/common/tests/test_collections.py
new file mode 100644
index 0000000..32ab801
--- /dev/null
+++ b/src/zope/interface/common/tests/test_collections.py
@@ -0,0 +1,157 @@
+##############################################################################
+# Copyright (c) 2020 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+##############################################################################
+
+
+import unittest
+try:
+    import collections.abc as abc
+except ImportError:
+    import collections as abc
+from collections import deque
+
+
+try:
+    from types import MappingProxyType
+except ImportError:
+    MappingProxyType = object()
+
+from zope.interface import Invalid
+
+
+# Note that importing z.i.c.collections does work on import.
+from zope.interface.common import collections
+
+
+from zope.interface._compat import PYPY
+from zope.interface._compat import PYTHON2 as PY2
+
+from . import add_abc_interface_tests
+from . import VerifyClassMixin
+from . import VerifyObjectMixin
+
+class TestVerifyClass(VerifyClassMixin, unittest.TestCase):
+
+    # Here we test some known builtin classes that are defined to implement
+    # various collection interfaces as a quick sanity test.
+    def test_frozenset(self):
+        self.assertIsInstance(frozenset(), abc.Set)
+        self.assertTrue(self.verify(collections.ISet, frozenset))
+
+    def test_list(self):
+        self.assertIsInstance(list(), abc.MutableSequence)
+        self.assertTrue(self.verify(collections.IMutableSequence, list))
+
+    # Here we test some derived classes.
+    def test_UserList(self):
+        self.assertTrue(self.verify(collections.IMutableSequence,
+                                    collections.UserList))
+
+    def test_UserDict(self):
+        self.assertTrue(self.verify(collections.IMutableMapping,
+                                    collections.UserDict))
+
+    def test_UserString(self):
+        self.assertTrue(self.verify(collections.ISequence,
+                                    collections.UserString))
+
+    def test_non_iterable_UserDict(self):
+        try:
+            from UserDict import UserDict as NonIterableUserDict # pylint:disable=import-error
+        except ImportError:
+            # Python 3
+            self.skipTest("No UserDict.NonIterableUserDict on Python 3")
+
+        with self.assertRaises(Invalid):
+            self.verify(collections.IMutableMapping, NonIterableUserDict)
+
+    # Now we go through the registry, which should have several things,
+    # mostly builtins, but if we've imported other libraries already,
+    # it could contain things from outside of there too. We aren't concerned
+    # about third-party code here, just standard library types. We start with a
+    # blacklist of things to exclude, but if that gets out of hand we can figure
+    # out a better whitelisting.
+    UNVERIFIABLE = {
+        # This is declared to be an ISequence, but is missing lots of methods,
+        # including some that aren't part of a language protocol, such as
+        # ``index`` and ``count``.
+        memoryview,
+        # 'pkg_resources._vendor.pyparsing.ParseResults' is registered as a
+        # MutableMapping but is missing methods like ``popitem`` and ``setdefault``.
+        # It's imported due to namespace packages.
+        'ParseResults',
+        # sqlite3.Row claims ISequence but also misses ``index`` and ``count``.
+        # It's imported because...? Coverage imports it, but why do we have it without
+        # coverage?
+        'Row',
+    }
+
+    if PYPY:
+        UNVERIFIABLE.update({
+            # collections.deque.pop() doesn't support the index= argument to
+            # MutableSequence.pop(). We can't verify this on CPython because we can't
+            # get the signature, but on PyPy we /can/ get the signature, and of course
+            # it doesn't match.
+            deque,
+            # Likewise for index
+            range,
+        })
+    if PY2:
+        # pylint:disable=undefined-variable,no-member
+        # There are a lot more types that are fundamentally unverifiable on Python 2.
+        UNVERIFIABLE.update({
+            # Missing several key methods like __getitem__
+            basestring,
+            # Missing __iter__ and __contains__, hard to construct.
+            buffer,
+            # Missing ``__contains__``, ``count`` and ``index``.
+            xrange,
+            # These two are missing Set.isdisjoint()
+            type({}.viewitems()),
+            type({}.viewkeys()),
+        })
+
+add_abc_interface_tests(TestVerifyClass, collections.ISet.__module__)
+
+
+class TestVerifyObject(VerifyObjectMixin,
+                       TestVerifyClass):
+    CONSTRUCTORS = {
+        collections.IValuesView: {}.values,
+        collections.IItemsView: {}.items,
+        collections.IKeysView: {}.keys,
+        memoryview: lambda: memoryview(b'abc'),
+        range: lambda: range(10),
+        MappingProxyType: lambda: MappingProxyType({}),
+        collections.UserString: lambda: collections.UserString('abc'),
+        type(iter(bytearray())): lambda: iter(bytearray()),
+        type(iter(b'abc')): lambda: iter(b'abc'),
+        'coroutine': unittest.SkipTest,
+        type(iter({}.keys())): lambda: iter({}.keys()),
+        type(iter({}.items())): lambda: iter({}.items()),
+        type(iter({}.values())): lambda: iter({}.values()),
+        type((i for i in range(1))): lambda: (i for i in range(3)),
+        type(iter([])): lambda: iter([]),
+        type(reversed([])): lambda: reversed([]),
+        'longrange_iterator': unittest.SkipTest,
+        'range_iterator': lambda: iter(range(3)),
+        'rangeiterator': lambda: iter(range(3)),
+        type(iter(set())): lambda: iter(set()),
+        type(iter('')): lambda: iter(''),
+        'async_generator': unittest.SkipTest,
+        type(iter(tuple())): lambda: iter(tuple()),
+    }
+
+    if PY2:
+        # pylint:disable=undefined-variable,no-member
+        CONSTRUCTORS.update({
+            collections.IValuesView: {}.viewvalues,
+        })
diff --git a/src/zope/interface/common/tests/test_io.py b/src/zope/interface/common/tests/test_io.py
new file mode 100644
index 0000000..c6ff8bd
--- /dev/null
+++ b/src/zope/interface/common/tests/test_io.py
@@ -0,0 +1,52 @@
+##############################################################################
+# Copyright (c) 2020 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+##############################################################################
+
+
+import unittest
+import io as abc
+
+# Note that importing z.i.c.io does work on import.
+from zope.interface.common import io
+
+from . import add_abc_interface_tests
+from . import VerifyClassMixin
+from . import VerifyObjectMixin
+
+
+class TestVerifyClass(VerifyClassMixin,
+                      unittest.TestCase):
+    pass
+
+add_abc_interface_tests(TestVerifyClass, io.IIOBase.__module__)
+
+
+class TestVerifyObject(VerifyObjectMixin,
+                       TestVerifyClass):
+    CONSTRUCTORS = {
+        abc.BufferedWriter: lambda: abc.BufferedWriter(abc.StringIO()),
+        abc.BufferedReader: lambda: abc.BufferedReader(abc.StringIO()),
+        abc.TextIOWrapper: lambda: abc.TextIOWrapper(abc.BytesIO()),
+        abc.BufferedRandom: lambda: abc.BufferedRandom(abc.BytesIO()),
+        abc.BufferedRWPair: lambda: abc.BufferedRWPair(abc.BytesIO(), abc.BytesIO()),
+        abc.FileIO: lambda: abc.FileIO(__file__),
+        '_WindowsConsoleIO': unittest.SkipTest,
+    }
+
+    try:
+        import cStringIO
+    except ImportError:
+        pass
+    else:
+        CONSTRUCTORS.update({
+            cStringIO.InputType: lambda cStringIO=cStringIO: cStringIO.StringIO('abc'),
+            cStringIO.OutputType: cStringIO.StringIO,
+        })
diff --git a/src/zope/interface/common/tests/test_numbers.py b/src/zope/interface/common/tests/test_numbers.py
new file mode 100644
index 0000000..abf9695
--- /dev/null
+++ b/src/zope/interface/common/tests/test_numbers.py
@@ -0,0 +1,41 @@
+##############################################################################
+# Copyright (c) 2020 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+##############################################################################
+
+
+import unittest
+import numbers as abc
+
+# Note that importing z.i.c.numbers does work on import.
+from zope.interface.common import numbers
+
+from . import add_abc_interface_tests
+from . import VerifyClassMixin
+from . import VerifyObjectMixin
+
+
+class TestVerifyClass(VerifyClassMixin,
+                      unittest.TestCase):
+
+    def test_int(self):
+        self.assertIsInstance(int(), abc.Integral)
+        self.assertTrue(self.verify(numbers.IIntegral, int))
+
+    def test_float(self):
+        self.assertIsInstance(float(), abc.Real)
+        self.assertTrue(self.verify(numbers.IReal, float))
+
+add_abc_interface_tests(TestVerifyClass, numbers.INumber.__module__)
+
+
+class TestVerifyObject(VerifyObjectMixin,
+                       TestVerifyClass):
+    pass
diff --git a/src/zope/interface/tests/test_verify.py b/src/zope/interface/tests/test_verify.py
index 3a68d20..8dbad97 100644
--- a/src/zope/interface/tests/test_verify.py
+++ b/src/zope/interface/tests/test_verify.py
@@ -21,11 +21,8 @@ class Test_verifyClass(unittest.TestCase):
 
     verifier = None
 
-    @classmethod
-    def setUpClass(cls):
-        # zope.testrunner doesn't call setUpClass, so if you get
-        # 'NoneType is not callable', that's why.
-        cls.verifier = staticmethod(cls._get_FUT())
+    def setUp(self):
+        self.verifier = self._get_FUT()
 
     @classmethod
     def _get_FUT(cls):

pip install -e .[dev]
parse_log_pytest
requirements.txt
coverage Sphinx repoze.sphinx.autointerface pytest
apt-get update apt-get install -y gcc
3.9
requirements/base.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
alabaster==0.7.16
babel==2.17.0
certifi==2025.1.31
charset-normalizer==3.4.1
coverage==7.8.0
docutils==0.21.2
exceptiongroup==1.2.2
idna==3.10
imagesize==1.4.1
importlib_metadata==8.6.1
iniconfig==2.1.0
Jinja2==3.1.6
MarkupSafe==3.0.2
packaging==24.2
pluggy==1.5.0
Pygments==2.19.1
pytest==8.3.5
repoze.sphinx.autointerface==1.0.0
requests==2.32.3
snowballstemmer==2.2.0
Sphinx==7.4.7
sphinxcontrib-applehelp==2.0.0
sphinxcontrib-devhelp==2.0.0
sphinxcontrib-htmlhelp==2.1.0
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==2.0.0
sphinxcontrib-serializinghtml==2.0.0
tomli==2.2.1
urllib3==2.3.0
zipp==3.21.0
-e git+https://github.com/zopefoundation/zope.interface.git@7f6f60e824ac34e2bf9ec890e6c361f57bfc823b#egg=zope.interface

name: zope.interface
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
  - ca-certificates=2025.2.25=h06a4308_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=3.0.16=h5eee18b_0
  - pip=25.0=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - alabaster==0.7.16
      - babel==2.17.0
      - certifi==2025.1.31
      - charset-normalizer==3.4.1
      - coverage==7.8.0
      - docutils==0.21.2
      - exceptiongroup==1.2.2
      - idna==3.10
      - imagesize==1.4.1
      - importlib-metadata==8.6.1
      - iniconfig==2.1.0
      - jinja2==3.1.6
      - markupsafe==3.0.2
      - packaging==24.2
      - pluggy==1.5.0
      - pygments==2.19.1
      - pytest==8.3.5
      - repoze-sphinx-autointerface==1.0.0
      - requests==2.32.3
      - snowballstemmer==2.2.0
      - sphinx==7.4.7
      - sphinxcontrib-applehelp==2.0.0
      - sphinxcontrib-devhelp==2.0.0
      - sphinxcontrib-htmlhelp==2.1.0
      - sphinxcontrib-jsmath==1.0.1
      - sphinxcontrib-qthelp==2.0.0
      - sphinxcontrib-serializinghtml==2.0.0
      - tomli==2.2.1
      - urllib3==2.3.0
      - zipp==3.21.0
prefix: /opt/conda/envs/zope.interface

src/zope/interface/common/tests/test_builtins.py::TestVerifyClass::test_auto_bool_IBool src/zope/interface/common/tests/test_builtins.py::TestVerifyClass::test_auto_bytes_IByteString src/zope/interface/common/tests/test_builtins.py::TestVerifyClass::test_auto_dict_IDict src/zope/interface/common/tests/test_builtins.py::TestVerifyClass::test_auto_list_IList src/zope/interface/common/tests/test_builtins.py::TestVerifyClass::test_auto_str_INativeString src/zope/interface/common/tests/test_builtins.py::TestVerifyClass::test_auto_str_ITextString src/zope/interface/common/tests/test_builtins.py::TestVerifyClass::test_auto_tuple_ITuple src/zope/interface/common/tests/test_builtins.py::TestVerifyObject::test_auto_bool_IBool src/zope/interface/common/tests/test_builtins.py::TestVerifyObject::test_auto_bytes_IByteString src/zope/interface/common/tests/test_builtins.py::TestVerifyObject::test_auto_dict_IDict src/zope/interface/common/tests/test_builtins.py::TestVerifyObject::test_auto_list_IList src/zope/interface/common/tests/test_builtins.py::TestVerifyObject::test_auto_str_INativeString src/zope/interface/common/tests/test_builtins.py::TestVerifyObject::test_auto_str_ITextString src/zope/interface/common/tests/test_builtins.py::TestVerifyObject::test_auto_tuple_ITuple src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_UserDict src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_UserList src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_UserString src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_UserDict_IMutableMapping src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_UserList_IMutableSequence src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_UserString_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_WeakSet_IMutableSet src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_WeakSet_ISet src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_async_generator_IAsyncGenerator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_bytearray_IByteString src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_bytearray_IMutableSequence src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_bytearray_iterator_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_bytes_IByteString src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_bytes_iterator_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_coroutine_ICoroutine src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_deque_IMutableSequence src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_dict_IMutableMapping src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_dict_itemiterator_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_dict_items_IItemsView src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_dict_keyiterator_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_dict_keys_IKeysView src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_dict_valueiterator_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_dict_values_IValuesView src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_frozenset_ISet src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_generator_IGenerator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_list_IMutableSequence src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_list_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_list_iterator_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_list_reverseiterator_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_longrange_iterator_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_mappingproxy_IMapping src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_range_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_range_iterator_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_set_IMutableSet src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_set_iterator_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_str_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_str_iterator_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_tuple_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_tuple_iterator_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_zip_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_frozenset src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_list src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_UserDict src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_UserList src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_UserString src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_UserDict_IMutableMapping src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_UserList_IMutableSequence src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_UserString_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_WeakSet_IMutableSet src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_WeakSet_ISet src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_bytearray_IByteString src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_bytearray_IMutableSequence src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_bytearray_iterator_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_bytes_IByteString src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_bytes_iterator_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_deque_IMutableSequence src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_dict_IMutableMapping src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_dict_itemiterator_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_dict_items_IItemsView src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_dict_keyiterator_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_dict_keys_IKeysView src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_dict_valueiterator_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_dict_values_IValuesView src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_frozenset_ISet src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_generator_IGenerator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_list_IMutableSequence src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_list_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_list_iterator_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_list_reverseiterator_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_mappingproxy_IMapping src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_range_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_range_iterator_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_set_IMutableSet src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_set_iterator_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_str_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_str_iterator_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_tuple_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_tuple_iterator_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_zip_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_frozenset src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_list src/zope/interface/common/tests/test_io.py::TestVerifyClass::test_auto_BufferedRWPair_IBufferedIOBase src/zope/interface/common/tests/test_io.py::TestVerifyClass::test_auto_BufferedRandom_IBufferedIOBase src/zope/interface/common/tests/test_io.py::TestVerifyClass::test_auto_BufferedReader_IBufferedIOBase src/zope/interface/common/tests/test_io.py::TestVerifyClass::test_auto_BufferedWriter_IBufferedIOBase src/zope/interface/common/tests/test_io.py::TestVerifyClass::test_auto_BytesIO_IBufferedIOBase src/zope/interface/common/tests/test_io.py::TestVerifyClass::test_auto_FileIO_IRawIOBase src/zope/interface/common/tests/test_io.py::TestVerifyClass::test_auto_StringIO_ITextIOBase src/zope/interface/common/tests/test_io.py::TestVerifyClass::test_auto_TextIOWrapper_ITextIOBase src/zope/interface/common/tests/test_io.py::TestVerifyObject::test_auto_BufferedRWPair_IBufferedIOBase src/zope/interface/common/tests/test_io.py::TestVerifyObject::test_auto_BufferedRandom_IBufferedIOBase src/zope/interface/common/tests/test_io.py::TestVerifyObject::test_auto_BufferedReader_IBufferedIOBase src/zope/interface/common/tests/test_io.py::TestVerifyObject::test_auto_BufferedWriter_IBufferedIOBase src/zope/interface/common/tests/test_io.py::TestVerifyObject::test_auto_BytesIO_IBufferedIOBase src/zope/interface/common/tests/test_io.py::TestVerifyObject::test_auto_FileIO_IRawIOBase src/zope/interface/common/tests/test_io.py::TestVerifyObject::test_auto_StringIO_ITextIOBase src/zope/interface/common/tests/test_io.py::TestVerifyObject::test_auto_TextIOWrapper_ITextIOBase src/zope/interface/common/tests/test_numbers.py::TestVerifyClass::test_auto_Decimal_INumber src/zope/interface/common/tests/test_numbers.py::TestVerifyClass::test_auto_complex_IComplex src/zope/interface/common/tests/test_numbers.py::TestVerifyClass::test_auto_float_IReal src/zope/interface/common/tests/test_numbers.py::TestVerifyClass::test_auto_int_IIntegral src/zope/interface/common/tests/test_numbers.py::TestVerifyClass::test_float src/zope/interface/common/tests/test_numbers.py::TestVerifyClass::test_int src/zope/interface/common/tests/test_numbers.py::TestVerifyObject::test_auto_Decimal_INumber src/zope/interface/common/tests/test_numbers.py::TestVerifyObject::test_auto_complex_IComplex src/zope/interface/common/tests/test_numbers.py::TestVerifyObject::test_auto_float_IReal src/zope/interface/common/tests/test_numbers.py::TestVerifyObject::test_auto_int_IIntegral src/zope/interface/common/tests/test_numbers.py::TestVerifyObject::test_float src/zope/interface/common/tests/test_numbers.py::TestVerifyObject::test_int src/zope/interface/tests/test_verify.py::Test_verifyClass::test_class_doesnt_have_required_method_derived src/zope/interface/tests/test_verify.py::Test_verifyClass::test_class_doesnt_have_required_method_simple src/zope/interface/tests/test_verify.py::Test_verifyClass::test_class_doesnt_implement src/zope/interface/tests/test_verify.py::Test_verifyClass::test_class_doesnt_implement_but_classImplements_later src/zope/interface/tests/test_verify.py::Test_verifyClass::test_class_has_attribute_for_attribute src/zope/interface/tests/test_verify.py::Test_verifyClass::test_class_has_method_for_iface_attr src/zope/interface/tests/test_verify.py::Test_verifyClass::test_class_has_nonmethod_for_method src/zope/interface/tests/test_verify.py::Test_verifyClass::test_class_has_required_method_derived src/zope/interface/tests/test_verify.py::Test_verifyClass::test_class_has_required_method_simple src/zope/interface/tests/test_verify.py::Test_verifyClass::test_class_misses_attribute_for_attribute src/zope/interface/tests/test_verify.py::Test_verifyClass::test_dict_IFullMapping src/zope/interface/tests/test_verify.py::Test_verifyClass::test_list_ISequence src/zope/interface/tests/test_verify.py::Test_verifyClass::test_method_doesnt_take_required_kwargs src/zope/interface/tests/test_verify.py::Test_verifyClass::test_method_doesnt_take_required_only_kwargs src/zope/interface/tests/test_verify.py::Test_verifyClass::test_method_doesnt_take_required_positional_and_starargs src/zope/interface/tests/test_verify.py::Test_verifyClass::test_method_doesnt_take_required_starargs src/zope/interface/tests/test_verify.py::Test_verifyClass::test_method_takes_extra_arg src/zope/interface/tests/test_verify.py::Test_verifyClass::test_method_takes_extra_arg_with_default src/zope/interface/tests/test_verify.py::Test_verifyClass::test_method_takes_extra_starargs src/zope/interface/tests/test_verify.py::Test_verifyClass::test_method_takes_extra_starargs_and_kwargs src/zope/interface/tests/test_verify.py::Test_verifyClass::test_method_takes_not_enough_args src/zope/interface/tests/test_verify.py::Test_verifyClass::test_method_takes_only_kwargs src/zope/interface/tests/test_verify.py::Test_verifyClass::test_method_takes_only_positional_args src/zope/interface/tests/test_verify.py::Test_verifyClass::test_method_takes_only_starargs src/zope/interface/tests/test_verify.py::Test_verifyClass::test_method_takes_positional_plus_required_starargs src/zope/interface/tests/test_verify.py::Test_verifyClass::test_method_takes_required_kwargs src/zope/interface/tests/test_verify.py::Test_verifyClass::test_method_takes_required_positional_and_starargs src/zope/interface/tests/test_verify.py::Test_verifyClass::test_method_takes_wrong_arg_names_but_OK src/zope/interface/tests/test_verify.py::Test_verifyClass::test_multiple_invalid src/zope/interface/tests/test_verify.py::Test_verifyClass::test_tuple_IReadSequence src/zope/interface/tests/test_verify.py::Test_verifyClass::test_w_callable_non_func_method src/zope/interface/tests/test_verify.py::Test_verifyClass::test_w_decorated_method src/zope/interface/tests/test_verify.py::Test_verifyObject::test_class_doesnt_have_required_method_derived src/zope/interface/tests/test_verify.py::Test_verifyObject::test_class_doesnt_have_required_method_simple src/zope/interface/tests/test_verify.py::Test_verifyObject::test_class_doesnt_implement src/zope/interface/tests/test_verify.py::Test_verifyObject::test_class_doesnt_implement_but_classImplements_later src/zope/interface/tests/test_verify.py::Test_verifyObject::test_class_has_attribute_for_attribute src/zope/interface/tests/test_verify.py::Test_verifyObject::test_class_has_method_for_iface_attr src/zope/interface/tests/test_verify.py::Test_verifyObject::test_class_has_nonmethod_for_method src/zope/interface/tests/test_verify.py::Test_verifyObject::test_class_has_required_method_derived src/zope/interface/tests/test_verify.py::Test_verifyObject::test_class_has_required_method_simple src/zope/interface/tests/test_verify.py::Test_verifyObject::test_class_misses_attribute_for_attribute src/zope/interface/tests/test_verify.py::Test_verifyObject::test_dict_IFullMapping src/zope/interface/tests/test_verify.py::Test_verifyObject::test_list_ISequence src/zope/interface/tests/test_verify.py::Test_verifyObject::test_method_doesnt_take_required_kwargs src/zope/interface/tests/test_verify.py::Test_verifyObject::test_method_doesnt_take_required_only_kwargs src/zope/interface/tests/test_verify.py::Test_verifyObject::test_method_doesnt_take_required_positional_and_starargs src/zope/interface/tests/test_verify.py::Test_verifyObject::test_method_doesnt_take_required_starargs src/zope/interface/tests/test_verify.py::Test_verifyObject::test_method_takes_extra_arg src/zope/interface/tests/test_verify.py::Test_verifyObject::test_method_takes_extra_arg_with_default src/zope/interface/tests/test_verify.py::Test_verifyObject::test_method_takes_extra_starargs src/zope/interface/tests/test_verify.py::Test_verifyObject::test_method_takes_extra_starargs_and_kwargs src/zope/interface/tests/test_verify.py::Test_verifyObject::test_method_takes_not_enough_args src/zope/interface/tests/test_verify.py::Test_verifyObject::test_method_takes_only_kwargs src/zope/interface/tests/test_verify.py::Test_verifyObject::test_method_takes_only_positional_args src/zope/interface/tests/test_verify.py::Test_verifyObject::test_method_takes_only_starargs src/zope/interface/tests/test_verify.py::Test_verifyObject::test_method_takes_positional_plus_required_starargs src/zope/interface/tests/test_verify.py::Test_verifyObject::test_method_takes_required_kwargs src/zope/interface/tests/test_verify.py::Test_verifyObject::test_method_takes_required_positional_and_starargs src/zope/interface/tests/test_verify.py::Test_verifyObject::test_method_takes_wrong_arg_names_but_OK src/zope/interface/tests/test_verify.py::Test_verifyObject::test_module_hit src/zope/interface/tests/test_verify.py::Test_verifyObject::test_module_miss src/zope/interface/tests/test_verify.py::Test_verifyObject::test_multiple_invalid src/zope/interface/tests/test_verify.py::Test_verifyObject::test_staticmethod_hit_on_class src/zope/interface/tests/test_verify.py::Test_verifyObject::test_tuple_IReadSequence src/zope/interface/tests/test_verify.py::Test_verifyObject::test_w_callable_non_func_method src/zope/interface/tests/test_verify.py::Test_verifyObject::test_w_decorated_method
src/zope/interface/common/sequence.py src/zope/interface/common/__init__.py src/zope/interface/common/io.py src/zope/interface/common/mapping.py src/zope/interface/common/collections.py docs/api/common.rst src/zope/interface/common/numbers.py CHANGES.rst src/zope/interface/common/builtins.py
src/zope/interface/common/sequence.py src/zope/interface/common/__init__.py src/zope/interface/common/io.py src/zope/interface/common/mapping.py src/zope/interface/common/collections.py docs/api/common.rst src/zope/interface/common/numbers.py CHANGES.rst src/zope/interface/common/builtins.py