Skip to content

Remaining issues with strict IRO in zopetoolkit #207

Open

Description

(Taken from #199 (comment))

#203 lets most of zopetoolkit's tests run in STRICT_IRO mode. There are a few exceptions:

  • ZODB's FileStorage redundantly declares multiple implemented interfaces. The fix is easy:
 @implementer(
-        IStorage,
         IStorageRestoreable,
         IStorageIteration,
         IStorageUndoable,

but…there's code in @implementer that attempts to detect things like that which should have caught and corrected it. I don't understand why it didn't work and need to investigate.

  • zope.session.http.CookieClientIdManager has a nearly identical issue.
  • zope.viewlet and zope.lifecycleevent both have the same issue in README.rst where some object is declared to @implementer(Interface), which is unnecessary and violates strict IRO. Probably the algorithm here that makes an exception for the sake of plone.app.caching.tests.test_etags should be aware of strict mode and not make that exception.
  • zope.location is being hit with DecoratorSpecificationDescriptor produces inconsistent resolution orders zope.proxy#41, which is the same issue zope.container recently fixed (Provides(cls, providedBy(proxy)) fails when cls and proxy overlap incompatibly in their orders). It makes me wonder if Provides() should automatically do the same thing that zope.container is currently manually doing?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions