diff --git a/.travis.yml b/.travis.yml
index 4f47445..cb9713a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -2,6 +2,7 @@ language: python
 
 env:
   global:
+    ZOPE_INTERFACE_STRICT_IRO: 1
     TWINE_USERNAME: zope.wheelbuilder
     TWINE_PASSWORD:
       secure: "AyR5QxUuZKdmywiepdBG0r8hgFQfaEf2hTxOg/HiXisVNcs1sUPjephBP4MqQBbf1/qxLM95F6Mw3sKneO3gDDQSGCsmvY1MWlDc+6R5TgqVBuOoONji5zGQH7v9RR8IPOyple8BNlFePl1hQ8r0dOT1U6rDVh5FkNJgHYE9OJ4="
@@ -26,6 +27,7 @@ jobs:
         - sphinx-build -b html -d docs/_build/doctrees docs docs/_build/html
         - sphinx-build -b doctest -d docs/_build/doctrees docs docs/_build/doctest
       after_success:
+      env: ZOPE_INTERFACE_STRICT_IRO=0
 
     - name: CPython No C Extension
       env: PURE_PYTHON=1
diff --git a/CHANGES.rst b/CHANGES.rst
index 7e51290..a41b17b 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -5,7 +5,16 @@
 5.0.1 (unreleased)
 ==================
 
-- Nothing changed yet.
+- Ensure the resolution order for ``InterfaceClass`` is consistent.
+  See `issue 192 <https://github.com/zopefoundation/zope.interface/issues/192>`_.
+
+- Ensure the resolution order for ``collections.OrderedDict`` is
+  consistent on CPython 2. (It was already consistent on Python 3 and PyPy).
+
+- Fix the handling of the ``ZOPE_INTERFACE_STRICT_IRO`` environment
+  variable. Previously, ``ZOPE_INTERFACE_STRICT_RO`` was read, in
+  contrast with the documentation. See `issue 194
+  <https://github.com/zopefoundation/zope.interface/issues/194>`_.
 
 
 5.0.0 (2020-03-19)
diff --git a/src/zope/interface/common/collections.py b/src/zope/interface/common/collections.py
index 6c0496e..00e2b8c 100644
--- a/src/zope/interface/common/collections.py
+++ b/src/zope/interface/common/collections.py
@@ -41,7 +41,7 @@ try:
     from collections import abc
 except ImportError:
     import collections as abc
-
+from collections import OrderedDict
 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
@@ -58,7 +58,6 @@ except ImportError:
     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
@@ -221,7 +220,12 @@ class IMutableSet(ISet):
 
 class IMapping(ICollection):
     abc = abc.Mapping
-
+    extra_classes = (dict,)
+    # OrderedDict is a subclass of dict. On CPython 2,
+    # it winds up registered as a IMutableMapping, which
+    # produces an inconsistent IRO if we also try to register it
+    # here.
+    ignored_classes = (OrderedDict,)
     if PY2:
         @optional
         def __eq__(other):
@@ -234,8 +238,8 @@ class IMapping(ICollection):
 
 class IMutableMapping(IMapping):
     abc = abc.MutableMapping
-    extra_classes = (UserDict,)
-
+    extra_classes = (dict, UserDict,)
+    ignored_classes = (OrderedDict,)
 
 class IMappingView(ISized):
     abc = abc.MappingView
diff --git a/src/zope/interface/interface.py b/src/zope/interface/interface.py
index e654b27..6a1ca2a 100644
--- a/src/zope/interface/interface.py
+++ b/src/zope/interface/interface.py
@@ -651,7 +651,8 @@ class _InterfaceMetaClass(type):
 
 _InterfaceClassBase = _InterfaceMetaClass(
     'InterfaceClass',
-    (InterfaceBase, Element, Specification),
+    # From least specific to most specific.
+    (InterfaceBase, Specification, Element),
     {'__slots__': ()}
 )
 
@@ -1040,7 +1041,7 @@ def fromMethod(meth, interface=None, name=None):
 # Now we can create the interesting interfaces and wire them up:
 def _wire():
     from zope.interface.declarations import classImplements
-
+    # From lest specific to most specific.
     from zope.interface.interfaces import IElement
     classImplements(Element, IElement)
 
@@ -1050,11 +1051,12 @@ def _wire():
     from zope.interface.interfaces import IMethod
     classImplements(Method, IMethod)
 
+    from zope.interface.interfaces import ISpecification
+    classImplements(Specification, ISpecification)
+
     from zope.interface.interfaces import IInterface
     classImplements(InterfaceClass, IInterface)
 
-    from zope.interface.interfaces import ISpecification
-    classImplements(Specification, ISpecification)
 
 # We import this here to deal with module dependencies.
 # pylint:disable=wrong-import-position
diff --git a/src/zope/interface/ro.py b/src/zope/interface/ro.py
index 7cb4f55..20338ed 100644
--- a/src/zope/interface/ro.py
+++ b/src/zope/interface/ro.py
@@ -163,6 +163,14 @@ class InconsistentResolutionOrderError(TypeError):
         )
 
 
+class _NamedBool(int): # cannot actually inherit bool
+
+    def __new__(cls, val, name):
+        inst = super(cls, _NamedBool).__new__(cls, val)
+        inst.__name__ = name
+        return inst
+
+
 class _ClassBoolFromEnv(object):
     """
     Non-data descriptor that reads a transformed environment variable
@@ -184,6 +192,7 @@ class _ClassBoolFromEnv(object):
 
         env_name = 'ZOPE_INTERFACE_' + my_name
         val = os.environ.get(env_name, '') == '1'
+        val = _NamedBool(val, my_name)
         setattr(klass, my_name, val)
         setattr(klass, 'ORIG_' + my_name, self)
         return val
@@ -208,7 +217,7 @@ class C3(object):
 
     @staticmethod
     def resolver(C, strict, base_mros):
-        strict = strict if strict is not None else C3.STRICT_RO
+        strict = strict if strict is not None else C3.STRICT_IRO
         factory = C3
         if strict:
             factory = _StrictC3
@@ -263,7 +272,7 @@ class C3(object):
         return list(self.__legacy_ro)
 
     TRACK_BAD_IRO = _ClassBoolFromEnv()
-    STRICT_RO = _ClassBoolFromEnv()
+    STRICT_IRO = _ClassBoolFromEnv()
     WARN_BAD_IRO = _ClassBoolFromEnv()
     LOG_CHANGED_IRO = _ClassBoolFromEnv()
     USE_LEGACY_IRO = _ClassBoolFromEnv()
diff --git a/tox.ini b/tox.ini
index be90fe3..0b366cb 100644
--- a/tox.ini
+++ b/tox.ini
@@ -14,7 +14,8 @@ usedevelop = true
 commands =
     coverage run -p -m unittest discover -s src
 extras = test
-
+setenv =
+    ZOPE_INTERFACE_STRICT_IRO=1
 
 [testenv:py27-pure]
 setenv =
@@ -55,3 +56,5 @@ commands =
 deps =
     Sphinx
     repoze.sphinx.autointerface
+setenv =
+    ZOPE_INTERFACE_STRICT_IRO=0

Inconsistent RO for InterfaceClass
Noticed while working on https://github.com/zopefoundation/zope.schema/issues/80. It's an easy fix.
diff --git a/src/zope/interface/common/tests/test_collections.py b/src/zope/interface/common/tests/test_collections.py
index f06e12e..81eea0e 100644
--- a/src/zope/interface/common/tests/test_collections.py
+++ b/src/zope/interface/common/tests/test_collections.py
@@ -120,7 +120,6 @@ class TestVerifyClass(VerifyClassMixin, unittest.TestCase):
             type({}.viewkeys()),
         })
         NON_STRICT_RO = {
-            OrderedDict
         }
 
 add_abc_interface_tests(TestVerifyClass, collections.ISet.__module__)
diff --git a/src/zope/interface/tests/test_interfaces.py b/src/zope/interface/tests/test_interfaces.py
index 285d857..3f9a504 100644
--- a/src/zope/interface/tests/test_interfaces.py
+++ b/src/zope/interface/tests/test_interfaces.py
@@ -93,3 +93,36 @@ class UnregisteredTests(unittest.TestCase,
         from zope.interface.interfaces import IUnregistered
         from zope.interface.verify import verifyObject
         verifyObject(IUnregistered, self._makeOne())
+
+
+class InterfaceClassTests(unittest.TestCase):
+
+    def _getTargetClass(self):
+        from zope.interface.interface import InterfaceClass
+        return InterfaceClass
+
+    def _getTargetInterface(self):
+        from zope.interface.interfaces import IInterface
+        return IInterface
+
+    def _makeOne(self):
+        from zope.interface.interface import Interface
+        return Interface
+
+    def test_class_conforms(self):
+        from zope.interface.verify import verifyClass
+        verifyClass(self._getTargetInterface(), self._getTargetClass())
+
+    def test_instance_conforms(self):
+        from zope.interface.verify import verifyObject
+        verifyObject(self._getTargetInterface(), self._makeOne())
+
+    def test_instance_consistent__iro__(self):
+        from zope.interface import ro
+        self.assertTrue(ro.is_consistent(self._getTargetInterface()))
+
+    def test_class_consistent__iro__(self):
+        from zope.interface import ro
+        from zope.interface import implementedBy
+
+        self.assertTrue(ro.is_consistent(implementedBy(self._getTargetClass())))
diff --git a/src/zope/interface/tests/test_ro.py b/src/zope/interface/tests/test_ro.py
index ce0a6f4..61f92b6 100644
--- a/src/zope/interface/tests/test_ro.py
+++ b/src/zope/interface/tests/test_ro.py
@@ -176,6 +176,20 @@ class Test_ro(unittest.TestCase):
              implementedBy(object)])
 
 
+class C3Setting(object):
+
+    def __init__(self, setting, value):
+        self._setting = setting
+        self._value = value
+
+    def __enter__(self):
+        from zope.interface import ro
+        setattr(ro.C3, self._setting.__name__, self._value)
+
+    def __exit__(self, t, v, tb):
+        from zope.interface import ro
+        setattr(ro.C3, self._setting.__name__, self._setting)
+
 class Test_c3_ro(Test_ro):
 
     def setUp(self):
@@ -302,7 +316,7 @@ Object <InterfaceClass zope.interface.tests.test_ro.A> has different legacy and
 
         # We were able to resolve it, and in exactly the same way as
         # the legacy RO did, even though it is inconsistent.
-        result = self._callFUT(ExtendedPathIndex, log_changed_ro=True)
+        result = self._callFUT(ExtendedPathIndex, log_changed_ro=True, strict=False)
         self.assertEqual(result, [
             ExtendedPathIndex,
             ILimitedResultIndex,
@@ -348,30 +362,22 @@ Object <InterfaceClass zope.interface.tests.test_ro.A> has different legacy and
 
         with warnings.catch_warnings():
             warnings.simplefilter('error')
-            orig_val = ro.C3.WARN_BAD_IRO
-            ro.C3.WARN_BAD_IRO = True
-            try:
+            with C3Setting(ro.C3.WARN_BAD_IRO, True), C3Setting(ro.C3.STRICT_IRO, False):
                 with self.assertRaises(ro.InconsistentResolutionOrderWarning):
                     super(Test_c3_ro, self).test_non_orderable()
-            finally:
-                ro.C3.WARN_BAD_IRO = orig_val
 
         IOErr, _ = self._make_IOErr()
         with self.assertRaises(ro.InconsistentResolutionOrderError):
             self._callFUT(IOErr, strict=True)
 
-        old_val = ro.C3.TRACK_BAD_IRO
-        try:
-            ro.C3.TRACK_BAD_IRO = True
+        with C3Setting(ro.C3.TRACK_BAD_IRO, True), C3Setting(ro.C3.STRICT_IRO, False):
             with warnings.catch_warnings():
                 warnings.simplefilter('ignore')
                 self._callFUT(IOErr)
             self.assertIn(IOErr, ro.C3.BAD_IROS)
-        finally:
-            ro.C3.TRACK_BAD_IRO = old_val
 
-        iro = self._callFUT(IOErr)
-        legacy_iro = self._callFUT(IOErr, use_legacy_ro=True)
+        iro = self._callFUT(IOErr, strict=False)
+        legacy_iro = self._callFUT(IOErr, use_legacy_ro=True, strict=False)
         self.assertEqual(iro, legacy_iro)
 
 

pip install -e .[test,docs]
parse_log_pytest
requirements.txt
pytest coverage
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
zope.event==5.0
-e git+https://github.com/zopefoundation/zope.interface.git@3a50f2e88781e90f4d8133fdb2a3b522fc047ade#egg=zope.interface
zope.testing==5.1

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
      - zope-event==5.0
      - zope-testing==5.1
prefix: /opt/conda/envs/zope.interface

src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_dict_zope_interface_common_collections_IMapping src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_dict_zope_interface_common_collections_IMapping src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_dict_zope_interface_common_collections_IMapping src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_dict_zope_interface_common_collections_IMapping src/zope/interface/tests/test_ro.py::Test_c3_ro::test_non_orderable
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_zope_interface_common_collections_IMutableMapping src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_UserList_zope_interface_common_collections_IMutableSequence src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_UserString_zope_interface_common_collections_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_WeakSet_zope_interface_common_collections_IMutableSet src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_WeakSet_zope_interface_common_collections_ISet src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_async_generator_zope_interface_common_collections_IAsyncGenerator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_bytearray_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_bytearray_zope_interface_common_collections_IByteString src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_bytearray_zope_interface_common_collections_IMutableSequence src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_bytes_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_bytes_zope_interface_common_collections_IByteString src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_coroutine_zope_interface_common_collections_ICoroutine src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_deque_zope_interface_common_collections_IMutableSequence src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_dict_itemiterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_dict_items_zope_interface_common_collections_IItemsView src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_dict_keyiterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_dict_keys_zope_interface_common_collections_IKeysView src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_dict_valueiterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_dict_values_zope_interface_common_collections_IValuesView src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_dict_zope_interface_common_collections_IMutableMapping src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_frozenset_zope_interface_common_collections_ISet src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_generator_zope_interface_common_collections_IGenerator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_list_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_list_reverseiterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_list_zope_interface_common_collections_IMutableSequence src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_list_zope_interface_common_collections_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_longrange_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_mappingproxy_zope_interface_common_collections_IMapping src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_range_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_range_zope_interface_common_collections_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_UserDict_zope_interface_common_collections_IMutableMapping src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_UserList_zope_interface_common_collections_IMutableSequence src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_UserString_zope_interface_common_collections_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_WeakSet_zope_interface_common_collections_IMutableSet src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_WeakSet_zope_interface_common_collections_ISet src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_async_generator_zope_interface_common_collections_IAsyncGenerator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_bytearray_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_bytearray_zope_interface_common_collections_IByteString src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_bytearray_zope_interface_common_collections_IMutableSequence src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_bytes_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_bytes_zope_interface_common_collections_IByteString src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_coroutine_zope_interface_common_collections_ICoroutine src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_deque_zope_interface_common_collections_IMutableSequence src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_dict_itemiterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_dict_items_zope_interface_common_collections_IItemsView src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_dict_keyiterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_dict_keys_zope_interface_common_collections_IKeysView src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_dict_valueiterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_dict_values_zope_interface_common_collections_IValuesView src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_dict_zope_interface_common_collections_IMutableMapping src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_frozenset_zope_interface_common_collections_ISet src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_generator_zope_interface_common_collections_IGenerator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_list_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_list_reverseiterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_list_zope_interface_common_collections_IMutableSequence src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_list_zope_interface_common_collections_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_longrange_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_mappingproxy_zope_interface_common_collections_IMapping src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_memoryview_zope_interface_common_collections_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_range_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_range_zope_interface_common_collections_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_set_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_set_zope_interface_common_collections_IMutableSet src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_str_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_str_zope_interface_common_collections_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_tuple_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_tuple_zope_interface_common_collections_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_ro_zip_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_set_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_set_zope_interface_common_collections_IMutableSet src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_str_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_str_zope_interface_common_collections_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_tuple_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_tuple_zope_interface_common_collections_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyClass::test_auto_zip_zope_interface_common_collections_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_zope_interface_common_collections_IMutableMapping src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_UserList_zope_interface_common_collections_IMutableSequence src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_UserString_zope_interface_common_collections_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_WeakSet_zope_interface_common_collections_IMutableSet src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_WeakSet_zope_interface_common_collections_ISet src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_bytearray_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_bytearray_zope_interface_common_collections_IByteString src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_bytearray_zope_interface_common_collections_IMutableSequence src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_bytes_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_bytes_zope_interface_common_collections_IByteString src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_deque_zope_interface_common_collections_IMutableSequence src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_dict_itemiterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_dict_items_zope_interface_common_collections_IItemsView src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_dict_keyiterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_dict_keys_zope_interface_common_collections_IKeysView src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_dict_valueiterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_dict_values_zope_interface_common_collections_IValuesView src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_dict_zope_interface_common_collections_IMutableMapping src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_frozenset_zope_interface_common_collections_ISet src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_generator_zope_interface_common_collections_IGenerator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_list_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_list_reverseiterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_list_zope_interface_common_collections_IMutableSequence src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_list_zope_interface_common_collections_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_mappingproxy_zope_interface_common_collections_IMapping src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_range_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_range_zope_interface_common_collections_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_UserDict_zope_interface_common_collections_IMutableMapping src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_UserList_zope_interface_common_collections_IMutableSequence src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_UserString_zope_interface_common_collections_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_WeakSet_zope_interface_common_collections_IMutableSet src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_WeakSet_zope_interface_common_collections_ISet src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_async_generator_zope_interface_common_collections_IAsyncGenerator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_bytearray_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_bytearray_zope_interface_common_collections_IByteString src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_bytearray_zope_interface_common_collections_IMutableSequence src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_bytes_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_bytes_zope_interface_common_collections_IByteString src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_coroutine_zope_interface_common_collections_ICoroutine src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_deque_zope_interface_common_collections_IMutableSequence src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_dict_itemiterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_dict_items_zope_interface_common_collections_IItemsView src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_dict_keyiterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_dict_keys_zope_interface_common_collections_IKeysView src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_dict_valueiterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_dict_values_zope_interface_common_collections_IValuesView src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_dict_zope_interface_common_collections_IMutableMapping src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_frozenset_zope_interface_common_collections_ISet src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_generator_zope_interface_common_collections_IGenerator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_list_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_list_reverseiterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_list_zope_interface_common_collections_IMutableSequence src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_list_zope_interface_common_collections_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_longrange_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_mappingproxy_zope_interface_common_collections_IMapping src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_memoryview_zope_interface_common_collections_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_range_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_range_zope_interface_common_collections_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_set_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_set_zope_interface_common_collections_IMutableSet src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_str_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_str_zope_interface_common_collections_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_tuple_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_tuple_zope_interface_common_collections_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_ro_zip_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_set_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_set_zope_interface_common_collections_IMutableSet src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_str_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_str_zope_interface_common_collections_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_tuple_iterator_zope_interface_common_collections_IIterator src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_tuple_zope_interface_common_collections_ISequence src/zope/interface/common/tests/test_collections.py::TestVerifyObject::test_auto_zip_zope_interface_common_collections_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/tests/test_interfaces.py::ObjectEventTests::test_class_conforms_to_IObjectEvent src/zope/interface/tests/test_interfaces.py::ObjectEventTests::test_ctor src/zope/interface/tests/test_interfaces.py::ObjectEventTests::test_instance_conforms_to_IObjectEvent src/zope/interface/tests/test_interfaces.py::RegistrationEventTests::test___repr__ src/zope/interface/tests/test_interfaces.py::RegistrationEventTests::test_class_conforms_to_IObjectEvent src/zope/interface/tests/test_interfaces.py::RegistrationEventTests::test_class_conforms_to_IRegistrationEvent src/zope/interface/tests/test_interfaces.py::RegistrationEventTests::test_instance_conforms_to_IObjectEvent src/zope/interface/tests/test_interfaces.py::RegistrationEventTests::test_instance_conforms_to_IRegistrationEvent src/zope/interface/tests/test_interfaces.py::RegisteredTests::test_class_conforms_to_IObjectEvent src/zope/interface/tests/test_interfaces.py::RegisteredTests::test_class_conforms_to_IRegistered src/zope/interface/tests/test_interfaces.py::RegisteredTests::test_class_conforms_to_IRegistrationEvent src/zope/interface/tests/test_interfaces.py::RegisteredTests::test_instance_conforms_to_IObjectEvent src/zope/interface/tests/test_interfaces.py::RegisteredTests::test_instance_conforms_to_IRegistered src/zope/interface/tests/test_interfaces.py::RegisteredTests::test_instance_conforms_to_IRegistrationEvent src/zope/interface/tests/test_interfaces.py::UnregisteredTests::test_class_conforms_to_IObjectEvent src/zope/interface/tests/test_interfaces.py::UnregisteredTests::test_class_conforms_to_IRegistrationEvent src/zope/interface/tests/test_interfaces.py::UnregisteredTests::test_class_conforms_to_IUnregistered src/zope/interface/tests/test_interfaces.py::UnregisteredTests::test_instance_conforms_to_IObjectEvent src/zope/interface/tests/test_interfaces.py::UnregisteredTests::test_instance_conforms_to_IRegistrationEvent src/zope/interface/tests/test_interfaces.py::UnregisteredTests::test_instance_conforms_to_IUnregistered src/zope/interface/tests/test_interfaces.py::InterfaceClassTests::test_class_conforms src/zope/interface/tests/test_interfaces.py::InterfaceClassTests::test_class_consistent__iro__ src/zope/interface/tests/test_interfaces.py::InterfaceClassTests::test_instance_conforms src/zope/interface/tests/test_interfaces.py::InterfaceClassTests::test_instance_consistent__iro__ src/zope/interface/tests/test_ro.py::Test__mergeOrderings::test_empty src/zope/interface/tests/test_ro.py::Test__mergeOrderings::test_single src/zope/interface/tests/test_ro.py::Test__mergeOrderings::test_suffix_across_multiple_duplicates src/zope/interface/tests/test_ro.py::Test__mergeOrderings::test_w_duplicates src/zope/interface/tests/test_ro.py::Test__flatten::test_w_bases src/zope/interface/tests/test_ro.py::Test__flatten::test_w_diamond src/zope/interface/tests/test_ro.py::Test__flatten::test_w_empty_bases src/zope/interface/tests/test_ro.py::Test__flatten::test_w_single_base src/zope/interface/tests/test_ro.py::Test_ro::test_mixed_inheritance_and_implementation src/zope/interface/tests/test_ro.py::Test_ro::test_non_orderable src/zope/interface/tests/test_ro.py::Test_ro::test_w_bases src/zope/interface/tests/test_ro.py::Test_ro::test_w_diamond src/zope/interface/tests/test_ro.py::Test_ro::test_w_empty_bases src/zope/interface/tests/test_ro.py::Test_ro::test_w_single_base src/zope/interface/tests/test_ro.py::Test_c3_ro::test_ExtendedPathIndex_implement_thing_implementedby_super src/zope/interface/tests/test_ro.py::Test_c3_ro::test_OSError_IOError src/zope/interface/tests/test_ro.py::Test_c3_ro::test_complex_diamond src/zope/interface/tests/test_ro.py::Test_c3_ro::test_complex_diamond_compare_legacy_argument src/zope/interface/tests/test_ro.py::Test_c3_ro::test_complex_diamond_interface src/zope/interface/tests/test_ro.py::Test_c3_ro::test_complex_diamond_use_legacy_argument src/zope/interface/tests/test_ro.py::Test_c3_ro::test_mixed_inheritance_and_implementation src/zope/interface/tests/test_ro.py::Test_c3_ro::test_w_bases src/zope/interface/tests/test_ro.py::Test_c3_ro::test_w_diamond src/zope/interface/tests/test_ro.py::Test_c3_ro::test_w_empty_bases src/zope/interface/tests/test_ro.py::Test_c3_ro::test_w_single_base src/zope/interface/tests/test_ro.py::TestC3::test_base_mros_given src/zope/interface/tests/test_ro.py::TestC3::test_one_base_optimization src/zope/interface/tests/test_ro.py::Test_ROComparison::test_inconsistent_label
src/zope/interface/interface.py src/zope/interface/common/collections.py .travis.yml src/zope/interface/ro.py tox.ini CHANGES.rst
src/zope/interface/interface.py src/zope/interface/common/collections.py .travis.yml src/zope/interface/ro.py tox.ini CHANGES.rst