diff --git a/CHANGES.rst b/CHANGES.rst
index 7f8a957..a22876d 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -5,7 +5,12 @@
 5.1.1 (unreleased)
 ==================
 
-- Nothing changed yet.
+- Fix the method definitions of ``IAdapterRegistry.subscribe``,
+  ``subscriptions`` and ``subscribers``. Previously, they all were
+  defined to accept a ``name`` keyword argument, but subscribers have
+  no names and the implementation of that interface did not accept
+  that argument. See `issue 208
+  <https://github.com/zopefoundation/zope.interface/issues/208>`_.
 
 
 5.1.0 (2020-04-08)
diff --git a/src/zope/interface/adapter.py b/src/zope/interface/adapter.py
index e9ca06f..86eedc3 100644
--- a/src/zope/interface/adapter.py
+++ b/src/zope/interface/adapter.py
@@ -635,7 +635,7 @@ class AdapterRegistry(BaseAdapterRegistry):
 
     def __init__(self, bases=()):
         # AdapterRegisties are invalidating registries, so
-        # we need to keep track of out invalidating subregistries.
+        # we need to keep track of our invalidating subregistries.
         self._v_subregistries = weakref.WeakKeyDictionary()
 
         super(AdapterRegistry, self).__init__(bases)
diff --git a/src/zope/interface/interfaces.py b/src/zope/interface/interfaces.py
index 9334374..eb08657 100644
--- a/src/zope/interface/interfaces.py
+++ b/src/zope/interface/interfaces.py
@@ -42,6 +42,9 @@ __all__ = [
     'IUtilityRegistration',
 ]
 
+# pylint:disable=inherit-non-class,no-method-argument,no-self-argument
+# pylint:disable=unexpected-special-method-signature
+# pylint:disable=too-many-lines
 
 class IElement(Interface):
     """
@@ -55,12 +58,14 @@ class IElement(Interface):
     :class:`ISpecification`).
     """
 
+    # pylint:disable=arguments-differ
+
     # Note that defining __doc__ as an Attribute hides the docstring
     # from introspection. When changing it, also change it in the Sphinx
     # ReST files.
 
     __name__ = Attribute('__name__', 'The object name')
-    __doc__  = Attribute('__doc__', 'The object doc string')
+    __doc__ = Attribute('__doc__', 'The object doc string')
 
     ###
     # Tagged values.
@@ -174,8 +179,8 @@ class IMethod(IAttribute):
 
 class ISpecification(Interface):
     """Object Behavioral specifications"""
-
-    def providedBy(object):
+    # pylint:disable=arguments-differ
+    def providedBy(object): # pylint:disable=redefined-builtin
         """Test whether the interface is implemented by the object
 
         Return true of the object asserts that it implements the
@@ -334,8 +339,8 @@ class IInterface(ISpecification, IElement):
       attributes for details.
 
     """
-
-    def names(all=False):
+    # pylint:disable=arguments-differ
+    def names(all=False): # pylint:disable=redefined-builtin
         """Get the interface attribute names
 
         Return a collection of the names of the attributes, including
@@ -346,7 +351,7 @@ class IInterface(ISpecification, IElement):
         attributes defined by base classes will be included.
         """
 
-    def namesAndDescriptions(all=False):
+    def namesAndDescriptions(all=False): # pylint:disable=redefined-builtin
         """Get the interface attribute names and descriptions
 
         Return a collection of the names and descriptions of the
@@ -476,7 +481,7 @@ class IInterfaceDeclaration(Interface):
 
     This interface is implemented by :mod:`zope.interface`.
     """
-
+    # pylint:disable=arguments-differ
     ###
     # Defining interfaces
     ###
@@ -656,7 +661,7 @@ class IInterfaceDeclaration(Interface):
         .. seealso:: `zope.interface.implementer_only`
         """
 
-    def directlyProvidedBy(object):
+    def directlyProvidedBy(object): # pylint:disable=redefined-builtin
         """
         Return the interfaces directly provided by the given object.
 
@@ -665,7 +670,7 @@ class IInterfaceDeclaration(Interface):
         .. seealso:: `zope.interface.directlyProvidedBy`
         """
 
-    def directlyProvides(object, *interfaces):
+    def directlyProvides(object, *interfaces): # pylint:disable=redefined-builtin
         """
         Declare interfaces declared directly for an object.
 
@@ -709,7 +714,7 @@ class IInterfaceDeclaration(Interface):
         .. seealso:: `zope.interface.directlyProvides`
         """
 
-    def alsoProvides(object, *interfaces):
+    def alsoProvides(object, *interfaces): # pylint:disable=redefined-builtin
         """
         Declare additional interfaces directly for an object.
 
@@ -724,7 +729,7 @@ class IInterfaceDeclaration(Interface):
         .. seealso:: `zope.interface.alsoProvides`
         """
 
-    def noLongerProvides(object, interface):
+    def noLongerProvides(object, interface): # pylint:disable=redefined-builtin
         """
         Remove an interface from the list of an object's directly provided
         interfaces.
@@ -958,11 +963,11 @@ class IAdapterRegistry(Interface):
         text.
         """
 
-    def queryAdapter(object, provided, name=u'', default=None):
+    def queryAdapter(object, provided, name=u'', default=None): # pylint:disable=redefined-builtin
         """Adapt an object using a registered adapter factory.
         """
 
-    def adapter_hook(provided, object, name=u'', default=None):
+    def adapter_hook(provided, object, name=u'', default=None): # pylint:disable=redefined-builtin
         """Adapt an object using a registered adapter factory.
 
         name must be text.
@@ -974,11 +979,11 @@ class IAdapterRegistry(Interface):
         An iterable object is returned that provides name-value two-tuples.
         """
 
-    def names(required, provided):
+    def names(required, provided): # pylint:disable=arguments-differ
         """Return the names for which there are registered objects
         """
 
-    def subscribe(required, provided, subscriber, name=u''):
+    def subscribe(required, provided, subscriber): # pylint:disable=arguments-differ
         """Register a subscriber
 
         A subscriber is registered for a *sequence* of required
@@ -986,17 +991,29 @@ class IAdapterRegistry(Interface):
 
         Multiple subscribers may be registered for the same (or
         equivalent) interfaces.
+
+        .. versionchanged:: 5.1.1
+           Correct the method signature to remove the ``name`` parameter.
+           Subscribers have no names.
         """
 
-    def subscriptions(required, provided, name=u''):
+    def subscriptions(required, provided):
         """Get a sequence of subscribers
 
-        Subscribers for a *sequence* of required interfaces, and a provided
+        Subscribers for a **sequence** of *required* interfaces, and a *provided*
         interface are returned.
+
+        .. versionchanged:: 5.1.1
+           Correct the method signature to remove the ``name`` parameter.
+           Subscribers have no names.
         """
 
-    def subscribers(objects, provided, name=u''):
+    def subscribers(objects, provided):
         """Get a sequence of subscription adapters
+
+        .. versionchanged:: 5.1.1
+           Correct the method signature to remove the ``name`` parameter.
+           Subscribers have no names.
         """
 
 # begin formerly in zope.component
@@ -1020,9 +1037,10 @@ class IObjectEvent(Interface):
 @implementer(IObjectEvent)
 class ObjectEvent(object):
 
-    def __init__(self, object):
+    def __init__(self, object): # pylint:disable=redefined-builtin
         self.object = object
 
+
 class IComponentLookup(Interface):
     """Component Manager for a Site
 
@@ -1036,13 +1054,13 @@ class IComponentLookup(Interface):
     utilities = Attribute(
         "Adapter Registry to manage all registered utilities.")
 
-    def queryAdapter(object, interface, name=u'', default=None):
+    def queryAdapter(object, interface, name=u'', default=None): # pylint:disable=redefined-builtin
         """Look for a named adapter to an interface for an object
 
         If a matching adapter cannot be found, returns the default.
         """
 
-    def getAdapter(object, interface, name=u''):
+    def getAdapter(object, interface, name=u''): # pylint:disable=redefined-builtin
         """Look for a named adapter to an interface for an object
 
         If a matching adapter cannot be found, a `ComponentLookupError`
@@ -1191,7 +1209,7 @@ class IUnregistered(IRegistrationEvent):
 class Unregistered(RegistrationEvent):
     """A component or factory was unregistered
     """
-    pass
+
 
 class IComponentRegistry(Interface):
     """Register components
@@ -1266,7 +1284,7 @@ class IComponentRegistry(Interface):
         """
 
     def registerAdapter(factory, required=None, provided=None, name=u'',
-                       info=u''):
+                        info=u''):
         """Register an adapter factory
 
         :param factory:

verifyClass(IAdapterRegistry, AdapterRegistry)...
```
from zope.interface.adapter import AdapterRegistry, IAdapterRegistry

verifyClass(IAdapterRegistry, AdapterRegistry)
...
MultipleInvalid: The object <class 'zope.interface.adapter.AdapterRegistry'> has failed to implement interface <InterfaceClass zope.interface.interfaces.IAdapterRegistry>:
    The zope.interface.interfaces.IAdapterRegistry.lookup(required, provided, name='', default=None) attribute was not provided
    The zope.interface.interfaces.IAdapterRegistry.queryMultiAdapter(objects, provided, name='', default=None) attribute was not provided
    The zope.interface.interfaces.IAdapterRegistry.lookup1(required, provided, name='', default=None) attribute was not provided
    The zope.interface.interfaces.IAdapterRegistry.queryAdapter(object, provided, name='', default=None) attribute was not provided
    The zope.interface.interfaces.IAdapterRegistry.adapter_hook(provided, object, name='', default=None) attribute was not provided
    The zope.interface.interfaces.IAdapterRegistry.lookupAll(required, provided) attribute was not provided
    The zope.interface.interfaces.IAdapterRegistry.names(required, provided) attribute was not provided
    The contract of zope.interface.interfaces.IAdapterRegistry.subscribe(required, provided, subscriber, name='') is violated because 'BaseAdapterRegistry.subscribe(self, required, provided, value)' doesn't allow enough arguments
    The zope.interface.interfaces.IAdapterRegistry.subscriptions(required, provided, name='') attribute was not provided
    The zope.interface.interfaces.IAdapterRegistry.subscribers(objects, provided, name='') attribute was not provided
```

Is there something I'm missing?
diff --git a/src/zope/interface/tests/test_adapter.py b/src/zope/interface/tests/test_adapter.py
index 8ff96f0..e9ede66 100644
--- a/src/zope/interface/tests/test_adapter.py
+++ b/src/zope/interface/tests/test_adapter.py
@@ -168,7 +168,7 @@ class BaseAdapterRegistryTests(unittest.TestCase):
         nomatch = object()
         registry.register([IB1], None, '', orig)
         registry.unregister([IB1], None, '', nomatch) #doesn't raise
-        self.assertTrue(registry.registered([IB1], None, '') is orig)
+        self.assertIs(registry.registered([IB1], None, ''), orig)
 
     def test_unregister_hit_clears_empty_subcomponents(self):
         IB0, IB1, IB2, IB3, IB4, IF0, IF1, IR0, IR1 = _makeInterfaces() # pylint:disable=unused-variable
@@ -177,11 +177,11 @@ class BaseAdapterRegistryTests(unittest.TestCase):
         another = object()
         registry.register([IB1, IB2], None, '', one)
         registry.register([IB1, IB3], None, '', another)
-        self.assertTrue(IB2 in registry._adapters[2][IB1])
-        self.assertTrue(IB3 in registry._adapters[2][IB1])
+        self.assertIn(IB2, registry._adapters[2][IB1])
+        self.assertIn(IB3, registry._adapters[2][IB1])
         registry.unregister([IB1, IB3], None, '', another)
-        self.assertTrue(IB2 in registry._adapters[2][IB1])
-        self.assertFalse(IB3 in registry._adapters[2][IB1])
+        self.assertIn(IB2, registry._adapters[2][IB1])
+        self.assertNotIn(IB3, registry._adapters[2][IB1])
 
     def test_unsubscribe_empty(self):
         registry = self._makeOne()
@@ -301,7 +301,7 @@ class LookupBaseFallbackTests(unittest.TestCase):
 
         lb = self._makeOne(uc_lookup=_lookup)
         found = lb.lookup(('A',), 'B', 'C')
-        self.assertTrue(found is None)
+        self.assertIsNone(found)
         self.assertEqual(_called_with, [(('A',), 'B', 'C')])
 
     def test_lookup_miss_w_default(self):
@@ -312,7 +312,7 @@ class LookupBaseFallbackTests(unittest.TestCase):
 
         lb = self._makeOne(uc_lookup=_lookup)
         found = lb.lookup(('A',), 'B', 'C', _default)
-        self.assertTrue(found is _default)
+        self.assertIs(found, _default)
         self.assertEqual(_called_with, [(('A',), 'B', 'C')])
 
     def test_lookup_not_cached(self):
@@ -324,7 +324,7 @@ class LookupBaseFallbackTests(unittest.TestCase):
             return _results.pop(0)
         lb = self._makeOne(uc_lookup=_lookup)
         found = lb.lookup(('A',), 'B', 'C')
-        self.assertTrue(found is a)
+        self.assertIs(found, a)
         self.assertEqual(_called_with, [(('A',), 'B', 'C')])
         self.assertEqual(_results, [b, c])
 
@@ -338,7 +338,7 @@ class LookupBaseFallbackTests(unittest.TestCase):
         lb = self._makeOne(uc_lookup=_lookup)
         found = lb.lookup(('A',), 'B', 'C')
         found = lb.lookup(('A',), 'B', 'C')
-        self.assertTrue(found is a)
+        self.assertIs(found, a)
         self.assertEqual(_called_with, [(('A',), 'B', 'C')])
         self.assertEqual(_results, [b, c])
 
@@ -351,7 +351,7 @@ class LookupBaseFallbackTests(unittest.TestCase):
             return _results.pop(0)
         lb = self._makeOne(uc_lookup=_lookup)
         found = lb.lookup(('A', 'D'), 'B', 'C')
-        self.assertTrue(found is a)
+        self.assertIs(found, a)
         self.assertEqual(_called_with, [(('A', 'D'), 'B', 'C')])
         self.assertEqual(_results, [b, c])
 
@@ -365,7 +365,7 @@ class LookupBaseFallbackTests(unittest.TestCase):
         lb = self._makeOne(uc_lookup=_lookup)
         found = lb.lookup(('A', 'D'), 'B', 'C')
         found = lb.lookup(('A', 'D'), 'B', 'C')
-        self.assertTrue(found is a)
+        self.assertIs(found, a)
         self.assertEqual(_called_with, [(('A', 'D'), 'B', 'C')])
         self.assertEqual(_results, [b, c])
 
@@ -380,7 +380,7 @@ class LookupBaseFallbackTests(unittest.TestCase):
         found = lb.lookup(('A',), 'B', 'C')
         lb.changed(lb)
         found = lb.lookup(('A',), 'B', 'C')
-        self.assertTrue(found is b)
+        self.assertIs(found, b)
         self.assertEqual(_called_with,
                          [(('A',), 'B', 'C'), (('A',), 'B', 'C')])
         self.assertEqual(_results, [c])
@@ -400,7 +400,7 @@ class LookupBaseFallbackTests(unittest.TestCase):
 
         lb = self._makeOne(uc_lookup=_lookup)
         found = lb.lookup1('A', 'B', 'C')
-        self.assertTrue(found is None)
+        self.assertIsNone(found)
         self.assertEqual(_called_with, [(('A',), 'B', 'C')])
 
     def test_lookup1_miss_w_default(self):
@@ -411,7 +411,7 @@ class LookupBaseFallbackTests(unittest.TestCase):
 
         lb = self._makeOne(uc_lookup=_lookup)
         found = lb.lookup1('A', 'B', 'C', _default)
-        self.assertTrue(found is _default)
+        self.assertIs(found, _default)
         self.assertEqual(_called_with, [(('A',), 'B', 'C')])
 
     def test_lookup1_miss_w_default_negative_cache(self):
@@ -422,9 +422,9 @@ class LookupBaseFallbackTests(unittest.TestCase):
 
         lb = self._makeOne(uc_lookup=_lookup)
         found = lb.lookup1('A', 'B', 'C', _default)
-        self.assertTrue(found is _default)
+        self.assertIs(found, _default)
         found = lb.lookup1('A', 'B', 'C', _default)
-        self.assertTrue(found is _default)
+        self.assertIs(found, _default)
         self.assertEqual(_called_with, [(('A',), 'B', 'C')])
 
     def test_lookup1_not_cached(self):
@@ -436,7 +436,7 @@ class LookupBaseFallbackTests(unittest.TestCase):
             return _results.pop(0)
         lb = self._makeOne(uc_lookup=_lookup)
         found = lb.lookup1('A', 'B', 'C')
-        self.assertTrue(found is a)
+        self.assertIs(found, a)
         self.assertEqual(_called_with, [(('A',), 'B', 'C')])
         self.assertEqual(_results, [b, c])
 
@@ -450,7 +450,7 @@ class LookupBaseFallbackTests(unittest.TestCase):
         lb = self._makeOne(uc_lookup=_lookup)
         found = lb.lookup1('A', 'B', 'C')
         found = lb.lookup1('A', 'B', 'C')
-        self.assertTrue(found is a)
+        self.assertIs(found, a)
         self.assertEqual(_called_with, [(('A',), 'B', 'C')])
         self.assertEqual(_results, [b, c])
 
@@ -465,7 +465,7 @@ class LookupBaseFallbackTests(unittest.TestCase):
         found = lb.lookup1('A', 'B', 'C')
         lb.changed(lb)
         found = lb.lookup1('A', 'B', 'C')
-        self.assertTrue(found is b)
+        self.assertIs(found, b)
         self.assertEqual(_called_with,
                          [(('A',), 'B', 'C'), (('A',), 'B', 'C')])
         self.assertEqual(_results, [c])
@@ -480,13 +480,13 @@ class LookupBaseFallbackTests(unittest.TestCase):
         req, prv = object(), object()
         lb = self._makeOne()
         found = lb.adapter_hook(prv, req, '')
-        self.assertTrue(found is None)
+        self.assertIsNone(found)
 
     def test_adapter_hook_miss_w_default(self):
         req, prv, _default = object(), object(), object()
         lb = self._makeOne()
         found = lb.adapter_hook(prv, req, '', _default)
-        self.assertTrue(found is _default)
+        self.assertIs(found, _default)
 
     def test_adapter_hook_hit_factory_returns_None(self):
         _f_called_with = []
@@ -498,7 +498,7 @@ class LookupBaseFallbackTests(unittest.TestCase):
         req, prv, _default = object(), object(), object()
         lb = self._makeOne(uc_lookup=_lookup)
         adapted = lb.adapter_hook(prv, req, 'C', _default)
-        self.assertTrue(adapted is _default)
+        self.assertIs(adapted, _default)
         self.assertEqual(_f_called_with, [req])
 
     def test_adapter_hook_hit_factory_returns_adapter(self):
@@ -540,7 +540,7 @@ class LookupBaseFallbackTests(unittest.TestCase):
         req, prv, _default = object(), object(), object()
         lb = self._makeOne(uc_lookup=_lookup)
         adapted = lb.queryAdapter(req, prv, 'C', _default)
-        self.assertTrue(adapted is _adapter)
+        self.assertIs(adapted, _adapter)
         self.assertEqual(_f_called_with, [req])
 
     def test_lookupAll_uncached(self):
@@ -648,12 +648,12 @@ class VerifyingBaseFallbackTests(unittest.TestCase):
         lb = self._makeOne(reg, uc_lookup=_lookup)
         found = lb.lookup(('A',), 'B', 'C')
         found = lb.lookup(('A',), 'B', 'C')
-        self.assertTrue(found is a)
+        self.assertIs(found, a)
         self.assertEqual(_called_with, [(('A',), 'B', 'C')])
         self.assertEqual(_results, [b, c])
         reg.ro[1]._generation += 1
         found = lb.lookup(('A',), 'B', 'C')
-        self.assertTrue(found is b)
+        self.assertIs(found, b)
         self.assertEqual(_called_with,
                          [(('A',), 'B', 'C'), (('A',), 'B', 'C')])
         self.assertEqual(_results, [c])
@@ -669,12 +669,12 @@ class VerifyingBaseFallbackTests(unittest.TestCase):
         lb = self._makeOne(reg, uc_lookup=_lookup)
         found = lb.lookup1('A', 'B', 'C')
         found = lb.lookup1('A', 'B', 'C')
-        self.assertTrue(found is a)
+        self.assertIs(found, a)
         self.assertEqual(_called_with, [(('A',), 'B', 'C')])
         self.assertEqual(_results, [b, c])
         reg.ro[1]._generation += 1
         found = lb.lookup1('A', 'B', 'C')
-        self.assertTrue(found is b)
+        self.assertIs(found, b)
         self.assertEqual(_called_with,
                          [(('A',), 'B', 'C'), (('A',), 'B', 'C')])
         self.assertEqual(_results, [c])
@@ -694,12 +694,12 @@ class VerifyingBaseFallbackTests(unittest.TestCase):
         reg = self._makeRegistry(3)
         lb = self._makeOne(reg, uc_lookup=_lookup)
         adapted = lb.adapter_hook(prv, req, 'C', _default)
-        self.assertTrue(adapted is a)
+        self.assertIs(adapted, a)
         adapted = lb.adapter_hook(prv, req, 'C', _default)
-        self.assertTrue(adapted is a)
+        self.assertIs(adapted, a)
         reg.ro[1]._generation += 1
         adapted = lb.adapter_hook(prv, req, 'C', _default)
-        self.assertTrue(adapted is b)
+        self.assertIs(adapted, b)
 
     def test_queryAdapter(self):
         a, b, _c = [object(), object(), object()]
@@ -716,12 +716,12 @@ class VerifyingBaseFallbackTests(unittest.TestCase):
         reg = self._makeRegistry(3)
         lb = self._makeOne(reg, uc_lookup=_lookup)
         adapted = lb.queryAdapter(req, prv, 'C', _default)
-        self.assertTrue(adapted is a)
+        self.assertIs(adapted, a)
         adapted = lb.queryAdapter(req, prv, 'C', _default)
-        self.assertTrue(adapted is a)
+        self.assertIs(adapted, a)
         reg.ro[1]._generation += 1
         adapted = lb.adapter_hook(prv, req, 'C', _default)
-        self.assertTrue(adapted is b)
+        self.assertIs(adapted, b)
 
     def test_lookupAll(self):
         _results_1 = [object(), object(), object()]
@@ -901,7 +901,7 @@ class AdapterLookupBaseTests(unittest.TestCase):
         result = alb._uncached_lookup((IFoo,), IBar)
         self.assertEqual(result, None)
         self.assertEqual(len(alb._required), 1)
-        self.assertTrue(IFoo.weakref() in alb._required)
+        self.assertIn(IFoo.weakref(), alb._required)
 
     def test__uncached_lookup_order_miss(self):
         from zope.interface.interface import InterfaceClass
@@ -980,7 +980,7 @@ class AdapterLookupBaseTests(unittest.TestCase):
         alb = self._makeOne(registry)
         subr._v_lookup = alb
         result = alb._uncached_lookup((IFoo,), IBar)
-        self.assertTrue(result is _expected)
+        self.assertIs(result, _expected)
 
     def test__uncached_lookup_repeated_hit(self):
         from zope.interface.interface import InterfaceClass
@@ -998,8 +998,8 @@ class AdapterLookupBaseTests(unittest.TestCase):
         subr._v_lookup = alb
         result = alb._uncached_lookup((IFoo,), IBar)
         result2 = alb._uncached_lookup((IFoo,), IBar)
-        self.assertTrue(result is _expected)
-        self.assertTrue(result2 is _expected)
+        self.assertIs(result, _expected)
+        self.assertIs(result2, _expected)
 
     def test_queryMultiAdaptor_lookup_miss(self):
         from zope.interface.declarations import implementer
@@ -1022,7 +1022,7 @@ class AdapterLookupBaseTests(unittest.TestCase):
         subr._v_lookup = alb
         _default = object()
         result = alb.queryMultiAdapter((foo,), IBar, default=_default)
-        self.assertTrue(result is _default)
+        self.assertIs(result, _default)
 
     def test_queryMultiAdapter_errors_on_attribute_access(self):
         # Any error on attribute access previously lead to using the _empty singleton as "requires"
@@ -1073,7 +1073,7 @@ class AdapterLookupBaseTests(unittest.TestCase):
         subr._v_lookup = alb
         _default = object()
         result = alb.queryMultiAdapter((foo,), IBar, default=_default)
-        self.assertTrue(result is _default)
+        self.assertIs(result, _default)
         self.assertEqual(_called_with, [foo])
 
     def test_queryMultiAdaptor_factory_hit(self):
@@ -1102,7 +1102,7 @@ class AdapterLookupBaseTests(unittest.TestCase):
         subr._v_lookup = alb
         _default = object()
         result = alb.queryMultiAdapter((foo,), IBar, default=_default)
-        self.assertTrue(result is _expected)
+        self.assertIs(result, _expected)
         self.assertEqual(_called_with, [foo])
 
     def test_queryMultiAdapter_super_unwraps(self):
@@ -1137,7 +1137,7 @@ class AdapterLookupBaseTests(unittest.TestCase):
         result = alb._uncached_lookupAll((IFoo,), IBar)
         self.assertEqual(result, ())
         self.assertEqual(len(alb._required), 1)
-        self.assertTrue(IFoo.weakref() in alb._required)
+        self.assertIn(IFoo.weakref(), alb._required)
 
     def test__uncached_lookupAll_order_miss(self):
         from zope.interface.interface import InterfaceClass
@@ -1228,7 +1228,7 @@ class AdapterLookupBaseTests(unittest.TestCase):
         result = alb._uncached_subscriptions((IFoo,), IBar)
         self.assertEqual(result, [])
         self.assertEqual(len(alb._required), 1)
-        self.assertTrue(IFoo.weakref() in alb._required)
+        self.assertIn(IFoo.weakref(), alb._required)
 
     def test__uncached_subscriptions_order_miss(self):
         from zope.interface.interface import InterfaceClass
@@ -1379,15 +1379,33 @@ class AdapterLookupBaseTests(unittest.TestCase):
                          })
 
 
-class AdapterRegistryTests(unittest.TestCase):
+class VerifyingAdapterRegistryTests(unittest.TestCase):
+    # This is also the base for AdapterRegistryTests. That makes the
+    # inheritance seems backwards, but even though they implement the
+    # same interfaces, VAR and AR each only extend BAR; and neither
+    # one will pass the test cases for BAR (it uses a special
+    # LookupClass just for the tests).
 
     def _getTargetClass(self):
-        from zope.interface.adapter import AdapterRegistry
-        return AdapterRegistry
+        from zope.interface.adapter import VerifyingAdapterRegistry
+        return VerifyingAdapterRegistry
 
     def _makeOne(self, *args, **kw):
         return self._getTargetClass()(*args, **kw)
 
+    def test_verify_object_provides_IAdapterRegistry(self):
+        from zope.interface.verify import verifyObject
+        from zope.interface.interfaces import IAdapterRegistry
+        registry = self._makeOne()
+        verifyObject(IAdapterRegistry, registry)
+
+
+class AdapterRegistryTests(VerifyingAdapterRegistryTests):
+
+    def _getTargetClass(self):
+        from zope.interface.adapter import AdapterRegistry
+        return AdapterRegistry
+
     def test_ctor_no_bases(self):
         ar = self._makeOne()
         self.assertEqual(len(ar._v_subregistries), 0)
@@ -1397,7 +1415,7 @@ class AdapterRegistryTests(unittest.TestCase):
         sub = self._makeOne([base])
         self.assertEqual(len(sub._v_subregistries), 0)
         self.assertEqual(len(base._v_subregistries), 1)
-        self.assertTrue(sub in base._v_subregistries)
+        self.assertIn(sub, base._v_subregistries)
 
     # test _addSubregistry / _removeSubregistry via only caller, _setBases
 
@@ -1408,7 +1426,7 @@ class AdapterRegistryTests(unittest.TestCase):
         sub.__bases__ = [after]
         self.assertEqual(len(before._v_subregistries), 0)
         self.assertEqual(len(after._v_subregistries), 1)
-        self.assertTrue(sub in after._v_subregistries)
+        self.assertIn(sub, after._v_subregistries)
 
     def test__setBases_wo_stray_entry(self):
         before = self._makeOne()
@@ -1419,7 +1437,7 @@ class AdapterRegistryTests(unittest.TestCase):
         sub.__bases__ = [after]
         self.assertEqual(len(before._v_subregistries), 0)
         self.assertEqual(len(after._v_subregistries), 1)
-        self.assertTrue(sub in after._v_subregistries)
+        self.assertIn(sub, after._v_subregistries)
 
     def test__setBases_w_existing_entry_continuing(self):
         before = self._makeOne()
@@ -1428,8 +1446,8 @@ class AdapterRegistryTests(unittest.TestCase):
         sub.__bases__ = [before, after]
         self.assertEqual(len(before._v_subregistries), 1)
         self.assertEqual(len(after._v_subregistries), 1)
-        self.assertTrue(sub in before._v_subregistries)
-        self.assertTrue(sub in after._v_subregistries)
+        self.assertIn(sub, before._v_subregistries)
+        self.assertIn(sub, after._v_subregistries)
 
     def test_changed_w_subregistries(self):
         base = self._makeOne()
@@ -1442,8 +1460,8 @@ class AdapterRegistryTests(unittest.TestCase):
         base._addSubregistry(derived2)
         orig = object()
         base.changed(orig)
-        self.assertTrue(derived1._changed is orig)
-        self.assertTrue(derived2._changed is orig)
+        self.assertIs(derived1._changed, orig)
+        self.assertIs(derived2._changed, orig)
 
 
 class Test_utils(unittest.TestCase):
@@ -1451,12 +1469,12 @@ class Test_utils(unittest.TestCase):
     def test__convert_None_to_Interface_w_None(self):
         from zope.interface.adapter import _convert_None_to_Interface
         from zope.interface.interface import Interface
-        self.assertTrue(_convert_None_to_Interface(None) is Interface)
+        self.assertIs(_convert_None_to_Interface(None), Interface)
 
     def test__convert_None_to_Interface_w_other(self):
         from zope.interface.adapter import _convert_None_to_Interface
         other = object()
-        self.assertTrue(_convert_None_to_Interface(other) is other)
+        self.assertIs(_convert_None_to_Interface(other), other)
 
     def test__normalize_name_str(self):
         from zope.interface.adapter import _normalize_name

pip install -e .[dev]
parse_log_pytest
requirements.txt
coverage pytest
apt-get update apt-get install -y gcc
3.7
requirements/base.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
certifi @ file:///croot/certifi_1671487769961/work/certifi
coverage==7.2.7
exceptiongroup==1.2.2
importlib-metadata==6.7.0
iniconfig==2.0.0
packaging==24.0
pluggy==1.2.0
pytest==7.4.4
tomli==2.0.1
typing_extensions==4.7.1
zipp==3.15.0
-e git+https://github.com/zopefoundation/zope.interface.git@10a951f9db32c3e3a29fef4e8b72e354b0c80047#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
  - certifi=2022.12.7=py37h06a4308_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
  - pip=22.3.1=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
  - wheel=0.38.4=py37h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - coverage==7.2.7
      - exceptiongroup==1.2.2
      - importlib-metadata==6.7.0
      - iniconfig==2.0.0
      - packaging==24.0
      - pluggy==1.2.0
      - pytest==7.4.4
      - tomli==2.0.1
      - typing-extensions==4.7.1
      - zipp==3.15.0
prefix: /opt/conda/envs/zope.interface

src/zope/interface/tests/test_adapter.py::VerifyingAdapterRegistryTests::test_verify_object_provides_IAdapterRegistry src/zope/interface/tests/test_adapter.py::AdapterRegistryTests::test_verify_object_provides_IAdapterRegistry
src/zope/interface/tests/test_adapter.py::BaseAdapterRegistryTests::test__generation_after_calling_changed src/zope/interface/tests/test_adapter.py::BaseAdapterRegistryTests::test__generation_after_changing___bases__ src/zope/interface/tests/test_adapter.py::BaseAdapterRegistryTests::test__generation_on_first_creation src/zope/interface/tests/test_adapter.py::BaseAdapterRegistryTests::test_lookup_delegation src/zope/interface/tests/test_adapter.py::BaseAdapterRegistryTests::test_register src/zope/interface/tests/test_adapter.py::BaseAdapterRegistryTests::test_register_with_invalid_name src/zope/interface/tests/test_adapter.py::BaseAdapterRegistryTests::test_register_with_same_value src/zope/interface/tests/test_adapter.py::BaseAdapterRegistryTests::test_register_with_value_None_unregisters src/zope/interface/tests/test_adapter.py::BaseAdapterRegistryTests::test_registered_empty src/zope/interface/tests/test_adapter.py::BaseAdapterRegistryTests::test_registered_non_empty_hit src/zope/interface/tests/test_adapter.py::BaseAdapterRegistryTests::test_registered_non_empty_miss src/zope/interface/tests/test_adapter.py::BaseAdapterRegistryTests::test_unregister_empty src/zope/interface/tests/test_adapter.py::BaseAdapterRegistryTests::test_unregister_hit_clears_empty_subcomponents src/zope/interface/tests/test_adapter.py::BaseAdapterRegistryTests::test_unregister_non_empty_miss_on_name src/zope/interface/tests/test_adapter.py::BaseAdapterRegistryTests::test_unregister_non_empty_miss_on_required src/zope/interface/tests/test_adapter.py::BaseAdapterRegistryTests::test_unregister_with_value_not_None_miss src/zope/interface/tests/test_adapter.py::BaseAdapterRegistryTests::test_unsubscribe_after_multiple src/zope/interface/tests/test_adapter.py::BaseAdapterRegistryTests::test_unsubscribe_empty src/zope/interface/tests/test_adapter.py::BaseAdapterRegistryTests::test_unsubscribe_hit src/zope/interface/tests/test_adapter.py::BaseAdapterRegistryTests::test_unsubscribe_instance_method src/zope/interface/tests/test_adapter.py::BaseAdapterRegistryTests::test_unsubscribe_non_empty_miss_on_required src/zope/interface/tests/test_adapter.py::BaseAdapterRegistryTests::test_unsubscribe_non_empty_miss_on_value src/zope/interface/tests/test_adapter.py::BaseAdapterRegistryTests::test_unsubscribe_w_None_after_multiple src/zope/interface/tests/test_adapter.py::BaseAdapterRegistryTests::test_unsubscribe_with_value_not_None_miss src/zope/interface/tests/test_adapter.py::LookupBaseFallbackTests::test_adapter_hook_hit_factory_returns_None src/zope/interface/tests/test_adapter.py::LookupBaseFallbackTests::test_adapter_hook_hit_factory_returns_adapter src/zope/interface/tests/test_adapter.py::LookupBaseFallbackTests::test_adapter_hook_miss_no_default src/zope/interface/tests/test_adapter.py::LookupBaseFallbackTests::test_adapter_hook_miss_w_default src/zope/interface/tests/test_adapter.py::LookupBaseFallbackTests::test_adapter_hook_super_unwraps src/zope/interface/tests/test_adapter.py::LookupBaseFallbackTests::test_adapter_hook_w_invalid_name src/zope/interface/tests/test_adapter.py::LookupBaseFallbackTests::test_lookup1_cached src/zope/interface/tests/test_adapter.py::LookupBaseFallbackTests::test_lookup1_miss_no_default src/zope/interface/tests/test_adapter.py::LookupBaseFallbackTests::test_lookup1_miss_w_default src/zope/interface/tests/test_adapter.py::LookupBaseFallbackTests::test_lookup1_miss_w_default_negative_cache src/zope/interface/tests/test_adapter.py::LookupBaseFallbackTests::test_lookup1_not_cached src/zope/interface/tests/test_adapter.py::LookupBaseFallbackTests::test_lookup1_not_cached_after_changed src/zope/interface/tests/test_adapter.py::LookupBaseFallbackTests::test_lookup1_w_invalid_name src/zope/interface/tests/test_adapter.py::LookupBaseFallbackTests::test_lookupAll_cached src/zope/interface/tests/test_adapter.py::LookupBaseFallbackTests::test_lookupAll_uncached src/zope/interface/tests/test_adapter.py::LookupBaseFallbackTests::test_lookup_cached src/zope/interface/tests/test_adapter.py::LookupBaseFallbackTests::test_lookup_cached_multi_required src/zope/interface/tests/test_adapter.py::LookupBaseFallbackTests::test_lookup_miss_no_default src/zope/interface/tests/test_adapter.py::LookupBaseFallbackTests::test_lookup_miss_w_default src/zope/interface/tests/test_adapter.py::LookupBaseFallbackTests::test_lookup_not_cached src/zope/interface/tests/test_adapter.py::LookupBaseFallbackTests::test_lookup_not_cached_after_changed src/zope/interface/tests/test_adapter.py::LookupBaseFallbackTests::test_lookup_not_cached_multi_required src/zope/interface/tests/test_adapter.py::LookupBaseFallbackTests::test_lookup_w_invalid_name src/zope/interface/tests/test_adapter.py::LookupBaseFallbackTests::test_queryAdapter src/zope/interface/tests/test_adapter.py::LookupBaseFallbackTests::test_subscriptions_cached src/zope/interface/tests/test_adapter.py::LookupBaseFallbackTests::test_subscriptions_uncached src/zope/interface/tests/test_adapter.py::LookupBaseTests::test_adapter_hook_hit_factory_returns_None src/zope/interface/tests/test_adapter.py::LookupBaseTests::test_adapter_hook_hit_factory_returns_adapter src/zope/interface/tests/test_adapter.py::LookupBaseTests::test_adapter_hook_miss_no_default src/zope/interface/tests/test_adapter.py::LookupBaseTests::test_adapter_hook_miss_w_default src/zope/interface/tests/test_adapter.py::LookupBaseTests::test_adapter_hook_super_unwraps src/zope/interface/tests/test_adapter.py::LookupBaseTests::test_adapter_hook_w_invalid_name src/zope/interface/tests/test_adapter.py::LookupBaseTests::test_lookup1_cached src/zope/interface/tests/test_adapter.py::LookupBaseTests::test_lookup1_miss_no_default src/zope/interface/tests/test_adapter.py::LookupBaseTests::test_lookup1_miss_w_default src/zope/interface/tests/test_adapter.py::LookupBaseTests::test_lookup1_miss_w_default_negative_cache src/zope/interface/tests/test_adapter.py::LookupBaseTests::test_lookup1_not_cached src/zope/interface/tests/test_adapter.py::LookupBaseTests::test_lookup1_not_cached_after_changed src/zope/interface/tests/test_adapter.py::LookupBaseTests::test_lookup1_w_invalid_name src/zope/interface/tests/test_adapter.py::LookupBaseTests::test_lookupAll_cached src/zope/interface/tests/test_adapter.py::LookupBaseTests::test_lookupAll_uncached src/zope/interface/tests/test_adapter.py::LookupBaseTests::test_lookup_cached src/zope/interface/tests/test_adapter.py::LookupBaseTests::test_lookup_cached_multi_required src/zope/interface/tests/test_adapter.py::LookupBaseTests::test_lookup_miss_no_default src/zope/interface/tests/test_adapter.py::LookupBaseTests::test_lookup_miss_w_default src/zope/interface/tests/test_adapter.py::LookupBaseTests::test_lookup_not_cached src/zope/interface/tests/test_adapter.py::LookupBaseTests::test_lookup_not_cached_after_changed src/zope/interface/tests/test_adapter.py::LookupBaseTests::test_lookup_not_cached_multi_required src/zope/interface/tests/test_adapter.py::LookupBaseTests::test_lookup_w_invalid_name src/zope/interface/tests/test_adapter.py::LookupBaseTests::test_optimizations src/zope/interface/tests/test_adapter.py::LookupBaseTests::test_queryAdapter src/zope/interface/tests/test_adapter.py::LookupBaseTests::test_subscriptions_cached src/zope/interface/tests/test_adapter.py::LookupBaseTests::test_subscriptions_uncached src/zope/interface/tests/test_adapter.py::VerifyingBaseFallbackTests::test_adapter_hook src/zope/interface/tests/test_adapter.py::VerifyingBaseFallbackTests::test_lookup src/zope/interface/tests/test_adapter.py::VerifyingBaseFallbackTests::test_lookup1 src/zope/interface/tests/test_adapter.py::VerifyingBaseFallbackTests::test_lookupAll src/zope/interface/tests/test_adapter.py::VerifyingBaseFallbackTests::test_queryAdapter src/zope/interface/tests/test_adapter.py::VerifyingBaseFallbackTests::test_subscriptions src/zope/interface/tests/test_adapter.py::VerifyingBaseTests::test_adapter_hook src/zope/interface/tests/test_adapter.py::VerifyingBaseTests::test_lookup src/zope/interface/tests/test_adapter.py::VerifyingBaseTests::test_lookup1 src/zope/interface/tests/test_adapter.py::VerifyingBaseTests::test_lookupAll src/zope/interface/tests/test_adapter.py::VerifyingBaseTests::test_optimizations src/zope/interface/tests/test_adapter.py::VerifyingBaseTests::test_queryAdapter src/zope/interface/tests/test_adapter.py::VerifyingBaseTests::test_subscriptions src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test__uncached_lookupAll_components_miss src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test__uncached_lookupAll_empty_ro src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test__uncached_lookupAll_extendors_miss src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test__uncached_lookupAll_order_miss src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test__uncached_lookupAll_simple_hit src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test__uncached_lookup_components_miss_wrong_iface src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test__uncached_lookup_components_miss_wrong_name src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test__uncached_lookup_empty_ro src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test__uncached_lookup_extendors_miss src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test__uncached_lookup_order_miss src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test__uncached_lookup_repeated_hit src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test__uncached_lookup_simple_hit src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test__uncached_subscriptions_components_miss_wrong_iface src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test__uncached_subscriptions_components_miss_wrong_name src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test__uncached_subscriptions_empty_ro src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test__uncached_subscriptions_extendors_miss src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test__uncached_subscriptions_order_miss src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test__uncached_subscriptions_simple_hit src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test_add_extendor src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test_changed_empty_required src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test_changed_w_required src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test_ctor_empty_registry src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test_ctor_w_registry_provided src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test_init_extendors_after_registry_update src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test_names src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test_queryMultiAdapter_errors_on_attribute_access src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test_queryMultiAdapter_super_unwraps src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test_queryMultiAdaptor_factory_hit src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test_queryMultiAdaptor_factory_miss src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test_queryMultiAdaptor_lookup_miss src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test_remove_extendor src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test_subscribers_w_provided src/zope/interface/tests/test_adapter.py::AdapterLookupBaseTests::test_subscribers_wo_provided src/zope/interface/tests/test_adapter.py::AdapterRegistryTests::test__setBases_removing_existing_subregistry src/zope/interface/tests/test_adapter.py::AdapterRegistryTests::test__setBases_w_existing_entry_continuing src/zope/interface/tests/test_adapter.py::AdapterRegistryTests::test__setBases_wo_stray_entry src/zope/interface/tests/test_adapter.py::AdapterRegistryTests::test_changed_w_subregistries src/zope/interface/tests/test_adapter.py::AdapterRegistryTests::test_ctor_no_bases src/zope/interface/tests/test_adapter.py::AdapterRegistryTests::test_ctor_w_bases src/zope/interface/tests/test_adapter.py::Test_utils::test__convert_None_to_Interface_w_None src/zope/interface/tests/test_adapter.py::Test_utils::test__convert_None_to_Interface_w_other src/zope/interface/tests/test_adapter.py::Test_utils::test__normalize_name_other src/zope/interface/tests/test_adapter.py::Test_utils::test__normalize_name_str src/zope/interface/tests/test_adapter.py::Test_utils::test__normalize_name_unicode
src/zope/interface/adapter.py src/zope/interface/interfaces.py CHANGES.rst
src/zope/interface/adapter.py src/zope/interface/interfaces.py CHANGES.rst