<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/python-packages/zope-interface.git/src/zope/interface/tests/test_ro.py, branch issue236</title>
<subtitle>github.com: zopefoundation/zope.interface.git
</subtitle>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/zope-interface.git/'/>
<entry>
<title>Update repr() and str() of some common objects.</title>
<updated>2021-03-25T15:30:47+00:00</updated>
<author>
<name>Jason Madden</name>
<email>jamadden@gmail.com</email>
</author>
<published>2021-03-25T15:30:47+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/zope-interface.git/commit/?id=ce8f66f8bf4ebffca7cdf95dbb8c5add02251e91'/>
<id>ce8f66f8bf4ebffca7cdf95dbb8c5add02251e91</id>
<content type='text'>
Only InterfaceClass got a str, so it now has a distinction. Other objects only got updated reprs.

Note: This may potentially break some doctests.

In many cases, the ``repr()`` is now something that can be evaluated
to produce an equal object. For example, what was previously printed
as ``&lt;implementedBy builtins.list&gt;`` is now shown as
``classImplements(list, IMutableSequence, IIterable)``.

Fixes #236

Here's a before with ZOPE_INTERFACE_LOG_CHANGED_IRO=1 in BTrees:
```
Object &lt;implementedBy builtins.list&gt; has different legacy and C3 MROs:
  Legacy RO (len=11)                                                        C3 RO (len=11; inconsistent=no)
  ==================================================================================================================================================
    &lt;implementedBy builtins.list&gt;                                             &lt;implementedBy builtins.list&gt;
    &lt;ABCInterfaceClass zope.interface.common.collections.IMutableSequence&gt;    &lt;ABCInterfaceClass zope.interface.common.collections.IMutableSequence&gt;
    &lt;ABCInterfaceClass zope.interface.common.collections.ISequence&gt;           &lt;ABCInterfaceClass zope.interface.common.collections.ISequence&gt;
    &lt;ABCInterfaceClass zope.interface.common.collections.IReversible&gt;         &lt;ABCInterfaceClass zope.interface.common.collections.IReversible&gt;
    &lt;ABCInterfaceClass zope.interface.common.collections.ICollection&gt;         &lt;ABCInterfaceClass zope.interface.common.collections.ICollection&gt;
    &lt;ABCInterfaceClass zope.interface.common.collections.ISized&gt;              &lt;ABCInterfaceClass zope.interface.common.collections.ISized&gt;
                                                                            + &lt;ABCInterfaceClass zope.interface.common.collections.IIterable&gt;
    &lt;ABCInterfaceClass zope.interface.common.collections.IContainer&gt;          &lt;ABCInterfaceClass zope.interface.common.collections.IContainer&gt;
  - &lt;ABCInterfaceClass zope.interface.common.collections.IIterable&gt;
    &lt;ABCInterfaceClass zope.interface.common.ABCInterface&gt;                    &lt;ABCInterfaceClass zope.interface.common.ABCInterface&gt;
                                                                            + &lt;implementedBy builtins.object&gt;
    &lt;InterfaceClass zope.interface.Interface&gt;                                 &lt;InterfaceClass zope.interface.Interface&gt;
  - &lt;implementedBy builtins.object&gt;
Object &lt;ABCInterfaceClass zope.interface.common.mapping.IFullMapping&gt; has different legacy and C3 MROs:
  Legacy RO (len=18)                                                       C3 RO (len=18; inconsistent=no)
  ================================================================================================================================================
    &lt;ABCInterfaceClass zope.interface.common.mapping.IFullMapping&gt;           &lt;ABCInterfaceClass zope.interface.common.mapping.IFullMapping&gt;
    &lt;ABCInterfaceClass zope.interface.common.collections.IMutableMapping&gt;    &lt;ABCInterfaceClass zope.interface.common.collections.IMutableMapping&gt;
    &lt;ABCInterfaceClass zope.interface.common.collections.IMapping&gt;           &lt;ABCInterfaceClass zope.interface.common.collections.IMapping&gt;
    &lt;ABCInterfaceClass zope.interface.common.collections.ICollection&gt;        &lt;ABCInterfaceClass zope.interface.common.collections.ICollection&gt;
  - &lt;ABCInterfaceClass zope.interface.common.collections.IIterable&gt;
    &lt;InterfaceClass zope.interface.common.mapping.IExtendedReadMapping&gt;      &lt;InterfaceClass zope.interface.common.mapping.IExtendedReadMapping&gt;
    &lt;InterfaceClass zope.interface.common.mapping.IIterableMapping&gt;          &lt;InterfaceClass zope.interface.common.mapping.IIterableMapping&gt;
    &lt;InterfaceClass zope.interface.common.mapping.IExtendedWriteMapping&gt;     &lt;InterfaceClass zope.interface.common.mapping.IExtendedWriteMapping&gt;
    &lt;InterfaceClass zope.interface.common.mapping.IClonableMapping&gt;          &lt;InterfaceClass zope.interface.common.mapping.IClonableMapping&gt;
    &lt;InterfaceClass zope.interface.common.mapping.IMapping&gt;                  &lt;InterfaceClass zope.interface.common.mapping.IMapping&gt;
    &lt;InterfaceClass zope.interface.common.mapping.IWriteMapping&gt;             &lt;InterfaceClass zope.interface.common.mapping.IWriteMapping&gt;
    &lt;InterfaceClass zope.interface.common.mapping.IEnumerableMapping&gt;        &lt;InterfaceClass zope.interface.common.mapping.IEnumerableMapping&gt;
    &lt;ABCInterfaceClass zope.interface.common.collections.ISized&gt;             &lt;ABCInterfaceClass zope.interface.common.collections.ISized&gt;
                                                                           + &lt;ABCInterfaceClass zope.interface.common.collections.IIterable&gt;
    &lt;InterfaceClass zope.interface.common.mapping.IReadMapping&gt;              &lt;InterfaceClass zope.interface.common.mapping.IReadMapping&gt;
    &lt;ABCInterfaceClass zope.interface.common.collections.IContainer&gt;         &lt;ABCInterfaceClass zope.interface.common.collections.IContainer&gt;
    &lt;ABCInterfaceClass zope.interface.common.ABCInterface&gt;                   &lt;ABCInterfaceClass zope.interface.common.ABCInterface&gt;
    &lt;InterfaceClass zope.interface.common.mapping.IItemMapping&gt;              &lt;InterfaceClass zope.interface.common.mapping.IItemMapping&gt;
    &lt;InterfaceClass zope.interface.Interface&gt;                                &lt;InterfaceClass zope.interface.Interface&gt;
Object &lt;InterfaceClass BTrees.Interfaces.ISet&gt; has different legacy and C3 MROs:
  Legacy RO (len=7)                                  C3 RO (len=7; inconsistent=no)
  ====================================================================================================
    &lt;InterfaceClass BTrees.Interfaces.ISet&gt;            &lt;InterfaceClass BTrees.Interfaces.ISet&gt;
    &lt;InterfaceClass BTrees.Interfaces.IKeySequence&gt;    &lt;InterfaceClass BTrees.Interfaces.IKeySequence&gt;
  - &lt;InterfaceClass BTrees.Interfaces.ISized&gt;
    &lt;InterfaceClass BTrees.Interfaces.ISetMutable&gt;     &lt;InterfaceClass BTrees.Interfaces.ISetMutable&gt;
    &lt;InterfaceClass BTrees.Interfaces.IKeyed&gt;          &lt;InterfaceClass BTrees.Interfaces.IKeyed&gt;
    &lt;InterfaceClass BTrees.Interfaces.ICollection&gt;     &lt;InterfaceClass BTrees.Interfaces.ICollection&gt;
                                                     + &lt;InterfaceClass BTrees.Interfaces.ISized&gt;
    &lt;InterfaceClass zope.interface.Interface&gt;          &lt;InterfaceClass zope.interface.Interface&gt;
```

And here's after:

```
Object classImplements(list, IMutableSequence, IIterable) has different legacy and C3 MROs:
  Legacy RO (len=11)                                    C3 RO (len=11; inconsistent=no)
  ==========================================================================================================
    classImplements(list, IMutableSequence, IIterable)    classImplements(list, IMutableSequence, IIterable)
    zope.interface.common.collections.IMutableSequence    zope.interface.common.collections.IMutableSequence
    zope.interface.common.collections.ISequence           zope.interface.common.collections.ISequence
    zope.interface.common.collections.IReversible         zope.interface.common.collections.IReversible
    zope.interface.common.collections.ICollection         zope.interface.common.collections.ICollection
    zope.interface.common.collections.ISized              zope.interface.common.collections.ISized
                                                        + zope.interface.common.collections.IIterable
    zope.interface.common.collections.IContainer          zope.interface.common.collections.IContainer
  - zope.interface.common.collections.IIterable
    zope.interface.common.ABCInterface                    zope.interface.common.ABCInterface
                                                        + classImplements(object)
    zope.interface.Interface                              zope.interface.Interface
  - classImplements(object)
Object &lt;ABCInterfaceClass zope.interface.common.mapping.IFullMapping&gt; has different legacy and C3 MROs:
  Legacy RO (len=18)                                     C3 RO (len=18; inconsistent=no)
  ============================================================================================================
    zope.interface.common.mapping.IFullMapping             zope.interface.common.mapping.IFullMapping
    zope.interface.common.collections.IMutableMapping      zope.interface.common.collections.IMutableMapping
    zope.interface.common.collections.IMapping             zope.interface.common.collections.IMapping
    zope.interface.common.collections.ICollection          zope.interface.common.collections.ICollection
  - zope.interface.common.collections.IIterable
    zope.interface.common.mapping.IExtendedReadMapping     zope.interface.common.mapping.IExtendedReadMapping
    zope.interface.common.mapping.IIterableMapping         zope.interface.common.mapping.IIterableMapping
    zope.interface.common.mapping.IExtendedWriteMapping    zope.interface.common.mapping.IExtendedWriteMapping
    zope.interface.common.mapping.IClonableMapping         zope.interface.common.mapping.IClonableMapping
    zope.interface.common.mapping.IMapping                 zope.interface.common.mapping.IMapping
    zope.interface.common.mapping.IWriteMapping            zope.interface.common.mapping.IWriteMapping
    zope.interface.common.mapping.IEnumerableMapping       zope.interface.common.mapping.IEnumerableMapping
    zope.interface.common.collections.ISized               zope.interface.common.collections.ISized
                                                         + zope.interface.common.collections.IIterable
    zope.interface.common.mapping.IReadMapping             zope.interface.common.mapping.IReadMapping
    zope.interface.common.collections.IContainer           zope.interface.common.collections.IContainer
    zope.interface.common.ABCInterface                     zope.interface.common.ABCInterface
    zope.interface.common.mapping.IItemMapping             zope.interface.common.mapping.IItemMapping
    zope.interface.Interface                               zope.interface.Interface
Object &lt;InterfaceClass BTrees.Interfaces.ISet&gt; has different legacy and C3 MROs:
  Legacy RO (len=7)                 C3 RO (len=7; inconsistent=no)
  ==================================================================
    BTrees.Interfaces.ISet            BTrees.Interfaces.ISet
    BTrees.Interfaces.IKeySequence    BTrees.Interfaces.IKeySequence
  - BTrees.Interfaces.ISized
    BTrees.Interfaces.ISetMutable     BTrees.Interfaces.ISetMutable
    BTrees.Interfaces.IKeyed          BTrees.Interfaces.IKeyed
    BTrees.Interfaces.ICollection     BTrees.Interfaces.ICollection
                                    + BTrees.Interfaces.ISized
    zope.interface.Interface          zope.interface.Interface
```
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Only InterfaceClass got a str, so it now has a distinction. Other objects only got updated reprs.

Note: This may potentially break some doctests.

In many cases, the ``repr()`` is now something that can be evaluated
to produce an equal object. For example, what was previously printed
as ``&lt;implementedBy builtins.list&gt;`` is now shown as
``classImplements(list, IMutableSequence, IIterable)``.

Fixes #236

Here's a before with ZOPE_INTERFACE_LOG_CHANGED_IRO=1 in BTrees:
```
Object &lt;implementedBy builtins.list&gt; has different legacy and C3 MROs:
  Legacy RO (len=11)                                                        C3 RO (len=11; inconsistent=no)
  ==================================================================================================================================================
    &lt;implementedBy builtins.list&gt;                                             &lt;implementedBy builtins.list&gt;
    &lt;ABCInterfaceClass zope.interface.common.collections.IMutableSequence&gt;    &lt;ABCInterfaceClass zope.interface.common.collections.IMutableSequence&gt;
    &lt;ABCInterfaceClass zope.interface.common.collections.ISequence&gt;           &lt;ABCInterfaceClass zope.interface.common.collections.ISequence&gt;
    &lt;ABCInterfaceClass zope.interface.common.collections.IReversible&gt;         &lt;ABCInterfaceClass zope.interface.common.collections.IReversible&gt;
    &lt;ABCInterfaceClass zope.interface.common.collections.ICollection&gt;         &lt;ABCInterfaceClass zope.interface.common.collections.ICollection&gt;
    &lt;ABCInterfaceClass zope.interface.common.collections.ISized&gt;              &lt;ABCInterfaceClass zope.interface.common.collections.ISized&gt;
                                                                            + &lt;ABCInterfaceClass zope.interface.common.collections.IIterable&gt;
    &lt;ABCInterfaceClass zope.interface.common.collections.IContainer&gt;          &lt;ABCInterfaceClass zope.interface.common.collections.IContainer&gt;
  - &lt;ABCInterfaceClass zope.interface.common.collections.IIterable&gt;
    &lt;ABCInterfaceClass zope.interface.common.ABCInterface&gt;                    &lt;ABCInterfaceClass zope.interface.common.ABCInterface&gt;
                                                                            + &lt;implementedBy builtins.object&gt;
    &lt;InterfaceClass zope.interface.Interface&gt;                                 &lt;InterfaceClass zope.interface.Interface&gt;
  - &lt;implementedBy builtins.object&gt;
Object &lt;ABCInterfaceClass zope.interface.common.mapping.IFullMapping&gt; has different legacy and C3 MROs:
  Legacy RO (len=18)                                                       C3 RO (len=18; inconsistent=no)
  ================================================================================================================================================
    &lt;ABCInterfaceClass zope.interface.common.mapping.IFullMapping&gt;           &lt;ABCInterfaceClass zope.interface.common.mapping.IFullMapping&gt;
    &lt;ABCInterfaceClass zope.interface.common.collections.IMutableMapping&gt;    &lt;ABCInterfaceClass zope.interface.common.collections.IMutableMapping&gt;
    &lt;ABCInterfaceClass zope.interface.common.collections.IMapping&gt;           &lt;ABCInterfaceClass zope.interface.common.collections.IMapping&gt;
    &lt;ABCInterfaceClass zope.interface.common.collections.ICollection&gt;        &lt;ABCInterfaceClass zope.interface.common.collections.ICollection&gt;
  - &lt;ABCInterfaceClass zope.interface.common.collections.IIterable&gt;
    &lt;InterfaceClass zope.interface.common.mapping.IExtendedReadMapping&gt;      &lt;InterfaceClass zope.interface.common.mapping.IExtendedReadMapping&gt;
    &lt;InterfaceClass zope.interface.common.mapping.IIterableMapping&gt;          &lt;InterfaceClass zope.interface.common.mapping.IIterableMapping&gt;
    &lt;InterfaceClass zope.interface.common.mapping.IExtendedWriteMapping&gt;     &lt;InterfaceClass zope.interface.common.mapping.IExtendedWriteMapping&gt;
    &lt;InterfaceClass zope.interface.common.mapping.IClonableMapping&gt;          &lt;InterfaceClass zope.interface.common.mapping.IClonableMapping&gt;
    &lt;InterfaceClass zope.interface.common.mapping.IMapping&gt;                  &lt;InterfaceClass zope.interface.common.mapping.IMapping&gt;
    &lt;InterfaceClass zope.interface.common.mapping.IWriteMapping&gt;             &lt;InterfaceClass zope.interface.common.mapping.IWriteMapping&gt;
    &lt;InterfaceClass zope.interface.common.mapping.IEnumerableMapping&gt;        &lt;InterfaceClass zope.interface.common.mapping.IEnumerableMapping&gt;
    &lt;ABCInterfaceClass zope.interface.common.collections.ISized&gt;             &lt;ABCInterfaceClass zope.interface.common.collections.ISized&gt;
                                                                           + &lt;ABCInterfaceClass zope.interface.common.collections.IIterable&gt;
    &lt;InterfaceClass zope.interface.common.mapping.IReadMapping&gt;              &lt;InterfaceClass zope.interface.common.mapping.IReadMapping&gt;
    &lt;ABCInterfaceClass zope.interface.common.collections.IContainer&gt;         &lt;ABCInterfaceClass zope.interface.common.collections.IContainer&gt;
    &lt;ABCInterfaceClass zope.interface.common.ABCInterface&gt;                   &lt;ABCInterfaceClass zope.interface.common.ABCInterface&gt;
    &lt;InterfaceClass zope.interface.common.mapping.IItemMapping&gt;              &lt;InterfaceClass zope.interface.common.mapping.IItemMapping&gt;
    &lt;InterfaceClass zope.interface.Interface&gt;                                &lt;InterfaceClass zope.interface.Interface&gt;
Object &lt;InterfaceClass BTrees.Interfaces.ISet&gt; has different legacy and C3 MROs:
  Legacy RO (len=7)                                  C3 RO (len=7; inconsistent=no)
  ====================================================================================================
    &lt;InterfaceClass BTrees.Interfaces.ISet&gt;            &lt;InterfaceClass BTrees.Interfaces.ISet&gt;
    &lt;InterfaceClass BTrees.Interfaces.IKeySequence&gt;    &lt;InterfaceClass BTrees.Interfaces.IKeySequence&gt;
  - &lt;InterfaceClass BTrees.Interfaces.ISized&gt;
    &lt;InterfaceClass BTrees.Interfaces.ISetMutable&gt;     &lt;InterfaceClass BTrees.Interfaces.ISetMutable&gt;
    &lt;InterfaceClass BTrees.Interfaces.IKeyed&gt;          &lt;InterfaceClass BTrees.Interfaces.IKeyed&gt;
    &lt;InterfaceClass BTrees.Interfaces.ICollection&gt;     &lt;InterfaceClass BTrees.Interfaces.ICollection&gt;
                                                     + &lt;InterfaceClass BTrees.Interfaces.ISized&gt;
    &lt;InterfaceClass zope.interface.Interface&gt;          &lt;InterfaceClass zope.interface.Interface&gt;
```

And here's after:

```
Object classImplements(list, IMutableSequence, IIterable) has different legacy and C3 MROs:
  Legacy RO (len=11)                                    C3 RO (len=11; inconsistent=no)
  ==========================================================================================================
    classImplements(list, IMutableSequence, IIterable)    classImplements(list, IMutableSequence, IIterable)
    zope.interface.common.collections.IMutableSequence    zope.interface.common.collections.IMutableSequence
    zope.interface.common.collections.ISequence           zope.interface.common.collections.ISequence
    zope.interface.common.collections.IReversible         zope.interface.common.collections.IReversible
    zope.interface.common.collections.ICollection         zope.interface.common.collections.ICollection
    zope.interface.common.collections.ISized              zope.interface.common.collections.ISized
                                                        + zope.interface.common.collections.IIterable
    zope.interface.common.collections.IContainer          zope.interface.common.collections.IContainer
  - zope.interface.common.collections.IIterable
    zope.interface.common.ABCInterface                    zope.interface.common.ABCInterface
                                                        + classImplements(object)
    zope.interface.Interface                              zope.interface.Interface
  - classImplements(object)
Object &lt;ABCInterfaceClass zope.interface.common.mapping.IFullMapping&gt; has different legacy and C3 MROs:
  Legacy RO (len=18)                                     C3 RO (len=18; inconsistent=no)
  ============================================================================================================
    zope.interface.common.mapping.IFullMapping             zope.interface.common.mapping.IFullMapping
    zope.interface.common.collections.IMutableMapping      zope.interface.common.collections.IMutableMapping
    zope.interface.common.collections.IMapping             zope.interface.common.collections.IMapping
    zope.interface.common.collections.ICollection          zope.interface.common.collections.ICollection
  - zope.interface.common.collections.IIterable
    zope.interface.common.mapping.IExtendedReadMapping     zope.interface.common.mapping.IExtendedReadMapping
    zope.interface.common.mapping.IIterableMapping         zope.interface.common.mapping.IIterableMapping
    zope.interface.common.mapping.IExtendedWriteMapping    zope.interface.common.mapping.IExtendedWriteMapping
    zope.interface.common.mapping.IClonableMapping         zope.interface.common.mapping.IClonableMapping
    zope.interface.common.mapping.IMapping                 zope.interface.common.mapping.IMapping
    zope.interface.common.mapping.IWriteMapping            zope.interface.common.mapping.IWriteMapping
    zope.interface.common.mapping.IEnumerableMapping       zope.interface.common.mapping.IEnumerableMapping
    zope.interface.common.collections.ISized               zope.interface.common.collections.ISized
                                                         + zope.interface.common.collections.IIterable
    zope.interface.common.mapping.IReadMapping             zope.interface.common.mapping.IReadMapping
    zope.interface.common.collections.IContainer           zope.interface.common.collections.IContainer
    zope.interface.common.ABCInterface                     zope.interface.common.ABCInterface
    zope.interface.common.mapping.IItemMapping             zope.interface.common.mapping.IItemMapping
    zope.interface.Interface                               zope.interface.Interface
Object &lt;InterfaceClass BTrees.Interfaces.ISet&gt; has different legacy and C3 MROs:
  Legacy RO (len=7)                 C3 RO (len=7; inconsistent=no)
  ==================================================================
    BTrees.Interfaces.ISet            BTrees.Interfaces.ISet
    BTrees.Interfaces.IKeySequence    BTrees.Interfaces.IKeySequence
  - BTrees.Interfaces.ISized
    BTrees.Interfaces.ISetMutable     BTrees.Interfaces.ISetMutable
    BTrees.Interfaces.IKeyed          BTrees.Interfaces.IKeyed
    BTrees.Interfaces.ICollection     BTrees.Interfaces.ICollection
                                    + BTrees.Interfaces.ISized
    zope.interface.Interface          zope.interface.Interface
```
</pre>
</div>
</content>
</entry>
<entry>
<title>Make the RO for InterfaceClass consistent and fix handling of the STRICT_IRO env variable.</title>
<updated>2020-03-20T15:16:44+00:00</updated>
<author>
<name>Jason Madden</name>
<email>jamadden@gmail.com</email>
</author>
<published>2020-03-20T14:59:17+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/zope-interface.git/commit/?id=a11e1ea7cecb9a5cbd483f135e2657bce6d7b92a'/>
<id>a11e1ea7cecb9a5cbd483f135e2657bce6d7b92a</id>
<content type='text'>
Fixes #192 and fixes #194.

Also fix the IRO for OrderedDict on CPython 2
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes #192 and fixes #194.

Also fix the IRO for OrderedDict on CPython 2
</pre>
</div>
</content>
</entry>
<entry>
<title>Move the one-base optimization down a level, and enable using pre-calculated __sro__ for caching.</title>
<updated>2020-03-18T17:06:17+00:00</updated>
<author>
<name>Jason Madden</name>
<email>jamadden@gmail.com</email>
</author>
<published>2020-03-17T13:28:12+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/zope-interface.git/commit/?id=9e399071f0d033e36dd92cf2cc35d7c09505f9af'/>
<id>9e399071f0d033e36dd92cf2cc35d7c09505f9af</id>
<content type='text'>
In my local 'load the world' test, this went from ~7800 full C3 merges to about ~1100.

Also take steps to avoid triggering false positive warnings about changed ROs when it's *just* Interface that moved.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In my local 'load the world' test, this went from ~7800 full C3 merges to about ~1100.

Also take steps to avoid triggering false positive warnings about changed ROs when it's *just* Interface that moved.
</pre>
</div>
</content>
</entry>
<entry>
<title>Use C3 (mostly) to compute IRO.</title>
<updated>2020-03-15T14:56:14+00:00</updated>
<author>
<name>Jason Madden</name>
<email>jamadden@gmail.com</email>
</author>
<published>2020-03-05T20:38:39+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/zope-interface.git/commit/?id=024f6432270afd021da2d9fff5c3f496f788e54d'/>
<id>024f6432270afd021da2d9fff5c3f496f788e54d</id>
<content type='text'>
Fixes #21

The 'mostly' is because interfaces are used in cases that C3 forbids;
when there's a conflict, we fallback to the legacy algorithm. It turns
out there are few conflicts (13K out of 149K total orderings in Plone).

I hoped the fix for #8 might shake out automatically, but it didn't.

Optimize the extremely common case of a __bases__ of length one.

In the benchmark, 4/5 of the interfaces and related objects have a base of length one.

Fix the bad IROs in the bundled ABC interfaces, and implement a way to get warnings or errors.

In running plone/buildout.coredev and tracking the RO requests, the
stats for equal, not equal, and inconsistent-so-fallback, I got
{'ros': 148868, 'eq': 138461, 'ne': 10407, 'inconsistent': 12934}

Add the interface module to the Attribute str.

This was extremely helpful tracking down the Plone problem; IDate is defined in multiple modules.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes #21

The 'mostly' is because interfaces are used in cases that C3 forbids;
when there's a conflict, we fallback to the legacy algorithm. It turns
out there are few conflicts (13K out of 149K total orderings in Plone).

I hoped the fix for #8 might shake out automatically, but it didn't.

Optimize the extremely common case of a __bases__ of length one.

In the benchmark, 4/5 of the interfaces and related objects have a base of length one.

Fix the bad IROs in the bundled ABC interfaces, and implement a way to get warnings or errors.

In running plone/buildout.coredev and tracking the RO requests, the
stats for equal, not equal, and inconsistent-so-fallback, I got
{'ros': 148868, 'eq': 138461, 'ne': 10407, 'inconsistent': 12934}

Add the interface module to the Attribute str.

This was extremely helpful tracking down the Plone problem; IDate is defined in multiple modules.
</pre>
</div>
</content>
</entry>
<entry>
<title>100% branch coverage for 'zope.interface.ro'.</title>
<updated>2014-12-08T18:14:30+00:00</updated>
<author>
<name>Tres Seaver</name>
<email>tseaver@palladion.com</email>
</author>
<published>2014-12-08T18:11:38+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/zope-interface.git/commit/?id=859cdddeb89613c2ab8474e1723e641b10d1a5d8'/>
<id>859cdddeb89613c2ab8474e1723e641b10d1a5d8</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
