Metadata-Version: 2.1
Name: experimental.broken
Version: 0.7
Summary: Better ZODB handling of broken interfaces and components
Home-page: https://github.com/rpatterson/experimental.broken
Author: Ross Patterson
Author-email: me@rpatterson.net
License: ZPL
Description: ========================================
        Experimental ZODB Broken Object Handling
        ========================================
        
        WARNING!  This package is highly experimental and should not be used
        by anyone but experts in the inner workings of the ZCA and the ZODB
        and it should never be used in production.
        
        The handling of broken objects by the ZODB can make an application
        with add-ons that use zope.interface far too fragile.  If marker
        interfaces from an add-on are used on objects in the ZODB, removing
        that add-on can make any zope.interface operation on that object fail.
        Even worse, if an add-on registers any components in a registry in the
        ZODB, that entire registry will become unusable for any ZCA
        operations.
        
        Since the interfaces and the ZCA are often core parts of an
        application using the ZODB, it may be appropriate to add special
        handling for broken objects to those services.The patches included in
        this package attempt to do just that.
        
        For objects in the ZODB which directly provide a marker interface,
        these patches allow that object to behave as without the application
        of the marker interface if the interface is no longer available.  If
        the interface is made available again, the full behavior of that
        interface is restored.  Similarly, if a component whose class,
        provided interface, or required interfaces are missing, these patches
        allow the registry to perform lookups it would have been able to do
        without the broken component registration.  If the component
        class, provided interface, and required interfaces are restored,
        then the component registration is fully restored.  If an object or
        registry in the ZODB is committed to the ZODB with broken interfaces
        or components, the commit will succeed and it is still possible to
        fully restore previous behavior if the missing classes and interfaces
        are restored.
        
        The one exception is when the class of a *non-persistent* component
        registered in a persistent registry is removed, the registry cannot be
        successfully committed back to the ZODB.  IOW, if your persistent
        registry contains a registration for a component whose base classes do
        *not* include persistent.Persistent, then you'll be able to *use* the
        registry but you won't be able to make any changes to the registry
        without first removing the broken component registration.
        
        The intention of this package is to see if the implementation of
        broken object handling is correct and robust enough to merge into
        zope.interface and zope.component themselves.  IOW, when this code is
        found to be robust enough to use more widely, this package won't be
        the home for it.  So once again, unless you are a senior Zope
        developer, do not use these patches.
        
        If you want to try this package out, work only on a copy of your ZODB,
        never on the live data, and simply add this package to your instance's
        eggs.  It uses z3c.autoinclude to automatically apply the patches
        under a Plone instance.
        
        
        Changelog
        =========
        
        0.7 - 2019-02-15
        ----------------
        
        - Fix broken release upload.
          [rpatterson]
        
        0.6 - 2019-02-15
        ----------------
        
        - Plone: Cleanup portlet types from code which has been removed.
          [rpatterson]
        
        - Tolerate empty ZODB.broken class cache.
          [rossp]
        
        - Fix broken class check, tolerate ExtensionClass as is the case in a
          Zope2 application.
          [rossp]
        
        0.5 - 2011-11-07
        ----------------
        
        - Update ZCML to include newer patches.
          [rossp]
        
        0.4 - 2011-11-07
        ----------------
        
        - Fix ZODB.broken.Broken pickling so that non-persistent component
          registrations don't interfere with committing changes to a
          persistent registry.
          [rossp]
        
        0.3 - 2011-11-07
        ----------------
        
        - Pickle broken interfaces in such a way that they can be unpickled
          without this package being installed.
          [rossp]
        
        - Fix component registrations such that they can be used to unregister
          broken registrations.
          [rossp]
        
        
        0.2 - 2011-11-06
        ----------------
        
        - Add configure.zcml and z3c.autoinclude support for applying the
          patches under Plone.
          [rossp]
        
        
        0.1 - 2011-11-06
        ----------------
        
        - Initial release.
          [rossp]
        
Platform: UNKNOWN
Classifier: Programming Language :: Python
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Provides-Extra: test
Provides-Extra: registry
Provides-Extra: zcml
