[Checkins] SVN: z3c.caching/t tagging 2.0a1

Ricardo Newbery ric at digitalmarbles.com
Thu Apr 22 05:07:00 EDT 2010


Log message for revision 111252:
  tagging 2.0a1
  

Changed:
  A   z3c.caching/tags/2.0a1/
  U   z3c.caching/tags/2.0a1/docs/HISTORY.txt
  D   z3c.caching/tags/2.0a1/setup.cfg
  D   z3c.caching/tags/2.0a1/src/z3c/caching/registry.py
  A   z3c.caching/tags/2.0a1/src/z3c/caching/registry.py
  U   z3c.caching/trunk/docs/HISTORY.txt

-=-
Modified: z3c.caching/tags/2.0a1/docs/HISTORY.txt
===================================================================
--- z3c.caching/trunk/docs/HISTORY.txt	2010-04-21 22:02:05 UTC (rev 111250)
+++ z3c.caching/tags/2.0a1/docs/HISTORY.txt	2010-04-22 09:07:00 UTC (rev 111252)
@@ -1,8 +1,8 @@
 Changelog
 =========
 
-2.0a1 - Unreleased
-------------------
+2.0a1 - April 22, 2010
+----------------------
 
 * Added `Purge`` event and ``IPurgeable` and ``IPurgePaths`` interfaces.
   Although this package doesn't provide any purging support, it is convenient

Deleted: z3c.caching/tags/2.0a1/setup.cfg
===================================================================
--- z3c.caching/trunk/setup.cfg	2010-04-21 22:02:05 UTC (rev 111250)
+++ z3c.caching/tags/2.0a1/setup.cfg	2010-04-22 09:07:00 UTC (rev 111252)
@@ -1,4 +0,0 @@
-[egg_info]
-tag_build = dev
-tag_svn_revision = true
-

Deleted: z3c.caching/tags/2.0a1/src/z3c/caching/registry.py
===================================================================
--- z3c.caching/trunk/src/z3c/caching/registry.py	2010-04-21 22:02:05 UTC (rev 111250)
+++ z3c.caching/tags/2.0a1/src/z3c/caching/registry.py	2010-04-22 09:07:00 UTC (rev 111252)
@@ -1,177 +0,0 @@
-""" Rulesets are registered for entities, which can be a type or an interface.
-This means the lookup mechanism needs to be aware of all of those and deal
-with things like derived classes as well. Luckily we have a framework which
-already implements that: zope.component.
-
-We will (ab)use the zope.component registries by registering a dummy adapter
-for the entity to a special ICacheRule interface and which will always return
-the ruleset id.
-"""
-
-import warnings
-
-from zope.interface import implements, Interface, Attribute
-
-from zope.component import adapts, queryUtility, getUtilitiesFor, getGlobalSiteManager
-from zope.component.interfaces import IComponents
-
-from z3c.caching.interfaces import IRulesetRegistry
-from z3c.caching.interfaces import IRulesetType
-
-class ICacheRule(Interface):
-    """Represents the cache rule applied to an object.    
-    This is strictly an implementation detail of IRulesetRegistry.
-    """
-    
-    id = Attribute("The identifier of this cache rule")
-
-class CacheRule(object):
-    __slots__ = ("id")
-    implements(ICacheRule)
-    
-    def __init__(self, identifier):
-        self.id = identifier
-
-class RulesetType(object):
-    __slots__ = ('name', 'title', 'description',)
-    implements(IRulesetType)
-    
-    def __init__(self, name, title, description):
-        self.name = name
-        self.title = title
-        self.description = description
-
-def get_context_to_cacherule_adapter_factory(rule):
-    """Given a cache rule return an adapter factory which expects an object 
-    but only returns the pre-specified cache rule."""
-    def CacheRuleFactory(context):
-        return CacheRule(rule)
-    CacheRuleFactory.id = rule
-    return CacheRuleFactory
-
-class RulesetRegistry(object):
-
-    implements(IRulesetRegistry)
-    adapts(IComponents)
-
-    def __init__(self, registry):
-        self.registry = registry
-        
-    def register(self, obj, rule):
-        rule = str(rule) # We only want ascii, tyvm
-        
-        if self.explicit and queryUtility(IRulesetType, rule) is None:
-            raise LookupError("Explicit mode set and ruleset %s not found" % rule)
-        
-        factory = get_context_to_cacherule_adapter_factory(rule)
-        existing = self.directLookup(obj)
-        if existing is None:
-            # Only register if we haven't got this one already
-            self.registry.registerAdapter(factory, provided=ICacheRule, required=(obj,))
-        else:
-            warnings.warn("Ignoring attempted to register caching rule %s for %s.  %s is already registered." % (rule, `obj`, existing))
-        return None
-
-
-    def unregister(self, obj):
-        self.registry.unregisterAdapter(provided=ICacheRule, required=(obj,))
-        return None
-
-    def clear(self):
-        # We force the iterator to be evaluated to start with as the backing
-        # storage will be changing size
-        for rule in list(self.registry.registeredAdapters()):
-            if rule.provided != ICacheRule:
-                continue # Not our responsibility
-            else:
-                self.registry.unregisterAdapter(factory=rule.factory,
-                                                provided=rule.provided, 
-                                                required=rule.required)
-        
-        for type_ in list(self.registry.registeredUtilities()):
-            if type_.provided != IRulesetType:
-                continue # Not our responsibility
-            else:
-                self.registry.unregisterUtility(component=type_.component,
-                                                provided=IRulesetType, 
-                                                name=type_.name)
-        
-        self.explicit = False
-        return None
-
-    def lookup(self, obj):
-        rule = ICacheRule(obj, None)
-        if rule is not None:
-            return rule.id
-        return None
-    
-    __getitem__ = lookup
-    
-    def declareType(self, name, title, description):
-        type_ = RulesetType(name, title, description)
-        self.registry.registerUtility(type_, IRulesetType, name=name)
-    
-    def enumerateTypes(self):
-        for name, type_ in getUtilitiesFor(IRulesetType):
-            yield type_
-    
-    def _get_explicit(self):
-        return getattr(self.registry, '_z3c_caching_explicit', False)
-    def _set_explicit(self, value):
-        setattr(self.registry, '_z3c_caching_explicit', value)
-    explicit = property(_get_explicit, _set_explicit)
-    
-    # Helper methods
-    
-    def directLookup(self, obj):
-        """Find a rule _directly_ assigned to `obj`"""
-        for rule in self.registry.registeredAdapters():
-            if rule.provided != ICacheRule:
-                continue
-            if rule.required == (obj, ):
-                return rule.factory(None).id
-        return None
-
-def getGlobalRulesetRegistry():
-    return IRulesetRegistry(getGlobalSiteManager(), None)
-
-# Convenience API
-
-def register(obj, rule):
-    registry = getGlobalRulesetRegistry()
-    if registry is None:
-        raise LookupError("Global registry initialised")
-    return registry.register(obj, rule)
-
-def unregister(obj):
-    registry = getGlobalRulesetRegistry()
-    if registry is None:
-        raise LookupError("Global registry initialised")
-    return registry.unregister(obj)
-
-def lookup(obj):
-    registry = getGlobalRulesetRegistry()
-    if registry is None:
-        return None
-    return registry.lookup(obj)
-
-def enumerateTypes():
-    registry = getGlobalRulesetRegistry()
-    if registry is None:
-        raise LookupError("Global registry initialised")
-    return registry.enumerateTypes()
-
-def declareType(name, title, description):
-    registry = getGlobalRulesetRegistry()
-    if registry is None:
-        raise LookupError("Global registry initialised")
-    registry.declareType(name, title, description)
-
-def setExplicitMode(mode=True):
-    registry = getGlobalRulesetRegistry()
-    if registry is None:
-        raise LookupError("Global registry initialised")
-    registry.explicit = mode
-
-__all__ = ['getGlobalRulesetRegistry', 'register', 'unregister', 'lookup',
-           'enumerate', 'declareType', 'setExplicitMode']

Copied: z3c.caching/tags/2.0a1/src/z3c/caching/registry.py (from rev 111251, z3c.caching/trunk/src/z3c/caching/registry.py)
===================================================================
--- z3c.caching/tags/2.0a1/src/z3c/caching/registry.py	                        (rev 0)
+++ z3c.caching/tags/2.0a1/src/z3c/caching/registry.py	2010-04-22 09:07:00 UTC (rev 111252)
@@ -0,0 +1,177 @@
+""" Rulesets are registered for entities, which can be a type or an interface.
+This means the lookup mechanism needs to be aware of all of those and deal
+with things like derived classes as well. Luckily we have a framework which
+already implements that: zope.component.
+
+We will (ab)use the zope.component registries by registering a dummy adapter
+for the entity to a special ICacheRule interface and which will always return
+the ruleset id.
+"""
+
+import warnings
+
+from zope.interface import implements, Interface, Attribute
+
+from zope.component import adapts, queryUtility, getUtilitiesFor, getGlobalSiteManager
+from zope.component.interfaces import IComponents
+
+from z3c.caching.interfaces import IRulesetRegistry
+from z3c.caching.interfaces import IRulesetType
+
+class ICacheRule(Interface):
+    """Represents the cache rule applied to an object.    
+    This is strictly an implementation detail of IRulesetRegistry.
+    """
+    
+    id = Attribute("The identifier of this cache rule")
+
+class CacheRule(object):
+    __slots__ = ("id")
+    implements(ICacheRule)
+    
+    def __init__(self, identifier):
+        self.id = identifier
+
+class RulesetType(object):
+    __slots__ = ('name', 'title', 'description',)
+    implements(IRulesetType)
+    
+    def __init__(self, name, title, description):
+        self.name = name
+        self.title = title
+        self.description = description
+
+def get_context_to_cacherule_adapter_factory(rule):
+    """Given a cache rule return an adapter factory which expects an object 
+    but only returns the pre-specified cache rule."""
+    def CacheRuleFactory(context):
+        return CacheRule(rule)
+    CacheRuleFactory.id = rule
+    return CacheRuleFactory
+
+class RulesetRegistry(object):
+
+    implements(IRulesetRegistry)
+    adapts(IComponents)
+
+    def __init__(self, registry):
+        self.registry = registry
+        
+    def register(self, obj, rule):
+        rule = str(rule) # We only want ascii, tyvm
+        
+        if self.explicit and queryUtility(IRulesetType, rule) is None:
+            raise LookupError("Explicit mode set and ruleset %s not found" % rule)
+        
+        factory = get_context_to_cacherule_adapter_factory(rule)
+        existing = self.directLookup(obj)
+        if existing is None:
+            # Only register if we haven't got this one already
+            self.registry.registerAdapter(factory, provided=ICacheRule, required=(obj,))
+        else:
+            warnings.warn("Ignoring attempted to register caching rule %s for %s.  %s is already registered." % (rule, `obj`, existing))
+        return None
+
+
+    def unregister(self, obj):
+        self.registry.unregisterAdapter(provided=ICacheRule, required=(obj,))
+        return None
+
+    def clear(self):
+        # We force the iterator to be evaluated to start with as the backing
+        # storage will be changing size
+        for rule in list(self.registry.registeredAdapters()):
+            if rule.provided != ICacheRule:
+                continue # Not our responsibility
+            else:
+                self.registry.unregisterAdapter(factory=rule.factory,
+                                                provided=rule.provided, 
+                                                required=rule.required)
+        
+        for type_ in list(self.registry.registeredUtilities()):
+            if type_.provided != IRulesetType:
+                continue # Not our responsibility
+            else:
+                self.registry.unregisterUtility(component=type_.component,
+                                                provided=IRulesetType, 
+                                                name=type_.name)
+        
+        self.explicit = False
+        return None
+
+    def lookup(self, obj):
+        rule = ICacheRule(obj, None)
+        if rule is not None:
+            return rule.id
+        return None
+    
+    __getitem__ = lookup
+    
+    def declareType(self, name, title, description):
+        type_ = RulesetType(name, title, description)
+        self.registry.registerUtility(type_, IRulesetType, name=name)
+    
+    def enumerateTypes(self):
+        for name, type_ in getUtilitiesFor(IRulesetType):
+            yield type_
+    
+    def _get_explicit(self):
+        return getattr(self.registry, '_z3c_caching_explicit', False)
+    def _set_explicit(self, value):
+        setattr(self.registry, '_z3c_caching_explicit', value)
+    explicit = property(_get_explicit, _set_explicit)
+    
+    # Helper methods
+    
+    def directLookup(self, obj):
+        """Find a rule _directly_ assigned to `obj`"""
+        for rule in self.registry.registeredAdapters():
+            if rule.provided != ICacheRule:
+                continue
+            if rule.required == (obj, ):
+                return rule.factory(None).id
+        return None
+
+def getGlobalRulesetRegistry():
+    return IRulesetRegistry(getGlobalSiteManager(), None)
+
+# Convenience API
+
+def register(obj, rule):
+    registry = getGlobalRulesetRegistry()
+    if registry is None:
+        raise LookupError("Global registry initialised")
+    return registry.register(obj, rule)
+
+def unregister(obj):
+    registry = getGlobalRulesetRegistry()
+    if registry is None:
+        raise LookupError("Global registry initialised")
+    return registry.unregister(obj)
+
+def lookup(obj):
+    registry = getGlobalRulesetRegistry()
+    if registry is None:
+        return None
+    return registry.lookup(obj)
+
+def enumerateTypes():
+    registry = getGlobalRulesetRegistry()
+    if registry is None:
+        raise LookupError("Global registry initialised")
+    return registry.enumerateTypes()
+
+def declareType(name, title, description):
+    registry = getGlobalRulesetRegistry()
+    if registry is None:
+        raise LookupError("Global registry initialised")
+    registry.declareType(name, title, description)
+
+def setExplicitMode(mode=True):
+    registry = getGlobalRulesetRegistry()
+    if registry is None:
+        raise LookupError("Global registry initialised")
+    registry.explicit = mode
+
+__all__ = ['getGlobalRulesetRegistry', 'register', 'unregister', 'lookup',
+           'enumerateTypes', 'declareType', 'setExplicitMode']

Modified: z3c.caching/trunk/docs/HISTORY.txt
===================================================================
--- z3c.caching/trunk/docs/HISTORY.txt	2010-04-22 08:56:28 UTC (rev 111251)
+++ z3c.caching/trunk/docs/HISTORY.txt	2010-04-22 09:07:00 UTC (rev 111252)
@@ -1,8 +1,8 @@
 Changelog
 =========
 
-2.0a1 - Unreleased
-------------------
+2.0a1 - April 22, 2010
+----------------------
 
 * Added `Purge`` event and ``IPurgeable` and ``IPurgePaths`` interfaces.
   Although this package doesn't provide any purging support, it is convenient



More information about the checkins mailing list