[Checkins] SVN: zc.extrinsicreference/trunk/ modernized:
Benji York
benji at zope.com
Sat Feb 16 17:57:04 EST 2008
Log message for revision 83951:
modernized:
- added buildout
- enhanced setup.py
- reworked code style a bit
- bumped version to 0.2dev
Changed:
_U zc.extrinsicreference/trunk/
A zc.extrinsicreference/trunk/buildout.cfg
U zc.extrinsicreference/trunk/setup.py
A zc.extrinsicreference/trunk/src/zc/extrinsicreference/README.txt
D zc.extrinsicreference/trunk/src/zc/extrinsicreference/__init__.py
A zc.extrinsicreference/trunk/src/zc/extrinsicreference/__init__.py
U zc.extrinsicreference/trunk/src/zc/extrinsicreference/configure.zcml
D zc.extrinsicreference/trunk/src/zc/extrinsicreference/extrinsicreference.py
D zc.extrinsicreference/trunk/src/zc/extrinsicreference/extrinsicreference.txt
U zc.extrinsicreference/trunk/src/zc/extrinsicreference/interfaces.py
U zc.extrinsicreference/trunk/src/zc/extrinsicreference/tests.py
U zc.extrinsicreference/trunk/src/zc/extrinsicreference/track_shortcuts.zcml
-=-
Property changes on: zc.extrinsicreference/trunk
___________________________________________________________________
Name: svn:ignore
+ develop-eggs
bin
eggs
parts
.installed.cfg
dist
Copied: zc.extrinsicreference/trunk/buildout.cfg (from rev 83950, zc.extrinsicreference/branches/benji-modernize/buildout.cfg)
===================================================================
--- zc.extrinsicreference/trunk/buildout.cfg (rev 0)
+++ zc.extrinsicreference/trunk/buildout.cfg 2008-02-16 22:57:03 UTC (rev 83951)
@@ -0,0 +1,14 @@
+[buildout]
+develop = .
+parts = test interpreter
+index = http://download.zope.org/zope3.4
+
+[test]
+recipe = zc.recipe.testrunner
+defaults = ['-1']
+eggs = zc.extrinsicreference
+
+[interpreter]
+recipe = zc.recipe.egg
+eggs = zc.extrinsicreference
+interpreter = py
Modified: zc.extrinsicreference/trunk/setup.py
===================================================================
--- zc.extrinsicreference/trunk/setup.py 2008-02-16 22:45:36 UTC (rev 83950)
+++ zc.extrinsicreference/trunk/setup.py 2008-02-16 22:57:03 UTC (rev 83951)
@@ -2,11 +2,24 @@
setup(
name="zc.extrinsicreference",
- version="0.1dev",
+ version="1.0dev",
+ license = 'ZPL 2.1',
+ description = '',
+ author = 'Zope Corporation and Contributors',
+ author_email = 'zope-dev at zope.org',
packages=find_packages('src'),
package_dir={'':'src'},
namespace_packages=['zc'],
include_package_data=True,
- install_requirements = ['setuptools'],
+ install_requires = [
+ 'ZODB3',
+ 'setuptools',
+ 'zc.shortcut',
+ 'zope.app.keyreference',
+# 'zope.app.testing',
+ 'zope.interface',
+ 'zope.location',
+ 'zope.testing',
+ ],
zip_safe = False
)
Copied: zc.extrinsicreference/trunk/src/zc/extrinsicreference/README.txt (from rev 83950, zc.extrinsicreference/branches/benji-modernize/src/zc/extrinsicreference/README.txt)
===================================================================
--- zc.extrinsicreference/trunk/src/zc/extrinsicreference/README.txt (rev 0)
+++ zc.extrinsicreference/trunk/src/zc/extrinsicreference/README.txt 2008-02-16 22:57:03 UTC (rev 83951)
@@ -0,0 +1,136 @@
+====================
+Extrinsic References
+====================
+
+Extrinsic reference registries record a key and one or more values to which
+they refer. The key and all values must be adaptable to
+zope.app.keyreference.interfaces.IKeyReference.
+
+ >>> import zc.extrinsicreference
+ >>> references = zc.extrinsicreference.ExtrinsicReferences()
+ >>> references.add(1, 2)
+ Traceback (most recent call last):
+ ...
+ TypeError: ('Could not adapt', 1...
+ >>> from zope import interface, component
+ >>> from zope.app.keyreference.interfaces import IKeyReference
+ >>> class IMyObject(interface.Interface):
+ ... "An interface for which we register an IKeyReference adapter"
+ ... id = interface.Attribute("An id unique to IMyObject instances")
+ ...
+ >>> class MyObject(object):
+ ... interface.implements(IMyObject)
+ ... _id_counter = 0
+ ... @classmethod
+ ... def _getId(cls):
+ ... val = cls._id_counter
+ ... cls._id_counter += 1
+ ... return val
+ ... def __init__(self):
+ ... self.id = self._getId()
+ ...
+ >>> class DummyKeyReference(object):
+ ... interface.implements(IKeyReference)
+ ... component.adapts(IMyObject)
+ ... key_type_id = 'zc.extrinsicreference.doctest'
+ ... def __init__(self, obj):
+ ... self.object = obj
+ ... def __call__(self):
+ ... """Get the object this reference is linking to.
+ ... """
+ ... return self.object
+ ... def __hash__(self):
+ ... """Get a unique identifier of the referenced object.
+ ... """
+ ... return hash(self.object.id)
+ ... def __cmp__(self, other):
+ ... """Compare the reference to another reference.
+ ... """
+ ... if self.key_type_id == other.key_type_id:
+ ... return cmp(self.object.id, other.object.id)
+ ... return cmp(self.key_type_id, other.key_type_id)
+ ...
+ >>> component.provideAdapter(DummyKeyReference)
+ >>> object1 = MyObject()
+ >>> references.add(object1, 2)
+ Traceback (most recent call last):
+ ...
+ TypeError: ('Could not adapt', 2...
+ >>> value1 = MyObject()
+ >>> value2 = MyObject()
+ >>> references.add(object1, value1)
+ >>> references.add(object1, value2)
+
+Values can be retrieved by their key:
+
+ >>> set(references.get(object1)) == set((value1, value2))
+ True
+
+References can be removed:
+
+ >>> references.remove(object1, value1)
+ >>> list(references.get(object1)) == [value2]
+ True
+
+But if the reference is not registered, removing it raises a KeyError.
+
+ >>> references.remove(object1, value1)
+ Traceback (most recent call last):
+ ...
+ KeyError:...
+ >>> object2 = MyObject()
+ >>> references.remove(object2, value2)
+ Traceback (most recent call last):
+ ...
+ KeyError:...
+
+If you prefer to silently ignore these errors, use `discard`.
+
+ >>> references.discard(object1, value1)
+ >>> references.discard(object2, value2)
+
+Otherwise, you can use `contains` to determine if the reference exists:
+
+ >>> references.contains(object1, value1)
+ False
+ >>> references.contains(object2, value2)
+ False
+ >>> references.contains(object1, value2)
+ True
+
+If a key has no associated values, an empty iterable is returned:
+
+ >>> references.discard(object1, value2)
+ >>> list(references.get(object1))
+ []
+
+Adding a value more than once does not cause the value to be included
+in the result sequence more than once:
+
+ >>> references.add(object1, value1)
+ >>> references.add(object1, value1)
+ >>> list(references.get(object1)) == [value1]
+ True
+
+The `set` method destructively sets the given values for the object. Repeated
+objects are collapsed to a single instance.
+
+ >>> references.set(object1, (value2, object2, value2, value2, object2))
+ >>> references.contains(object1, value1)
+ False
+ >>> len(list(references.get(object1)))
+ 2
+ >>> set(references.get(object1)) == set((value2, object2))
+ True
+ >>> references.set(object1, ())
+ >>> len(list(references.get(object1)))
+ 0
+
+The `update` method adds values to the previous values, non-destructively.
+
+ >>> references.add(object1, value1)
+ >>> references.update(object1, (value2, object2, value2))
+ >>> len(list(references.get(object1)))
+ 3
+ >>> set(references.get(object1)) == set((value1, value2, object2))
+ True
Deleted: zc.extrinsicreference/trunk/src/zc/extrinsicreference/__init__.py
===================================================================
--- zc.extrinsicreference/trunk/src/zc/extrinsicreference/__init__.py 2008-02-16 22:45:36 UTC (rev 83950)
+++ zc.extrinsicreference/trunk/src/zc/extrinsicreference/__init__.py 2008-02-16 22:57:03 UTC (rev 83951)
@@ -1 +0,0 @@
-from extrinsicreference import *
Copied: zc.extrinsicreference/trunk/src/zc/extrinsicreference/__init__.py (from rev 83950, zc.extrinsicreference/branches/benji-modernize/src/zc/extrinsicreference/__init__.py)
===================================================================
--- zc.extrinsicreference/trunk/src/zc/extrinsicreference/__init__.py (rev 0)
+++ zc.extrinsicreference/trunk/src/zc/extrinsicreference/__init__.py 2008-02-16 22:57:03 UTC (rev 83951)
@@ -0,0 +1,107 @@
+##############################################################################
+#
+# Copyright (c) 2004 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Extrinsic references implementation"""
+
+from zc.extrinsicreference.interfaces import IExtrinsicReferences
+import BTrees
+import persistent
+import zope.app.keyreference.interfaces
+import zope.component
+import zope.interface
+
+
+class ExtrinsicReferences(persistent.Persistent):
+
+ zope.interface.implements(IExtrinsicReferences)
+
+ # To be usable as an ILocalUtility we have to have these.
+ __parent__ = __name__ = None
+
+ def __init__(self):
+ self.references = BTrees.OOBTree.OOBTree()
+
+ def add(self, obj, value):
+ key = zope.app.keyreference.interfaces.IKeyReference(obj)
+ refs = self.references.get(key)
+ if refs is None:
+ refs = self.references[key] = BTrees.OOBTree.OOTreeSet()
+ refs.insert(zope.app.keyreference.interfaces.IKeyReference(value))
+
+ def update(self, obj, values):
+ key = zope.app.keyreference.interfaces.IKeyReference(obj)
+ refs = self.references.get(key)
+ if refs is None:
+ refs = self.references[key] = BTrees.OOBTree.OOTreeSet()
+ refs.update(zope.app.keyreference.interfaces.IKeyReference(v)
+ for v in values)
+
+ def remove(self, obj, value):
+ key = zope.app.keyreference.interfaces.IKeyReference(obj)
+ refs = self.references.get(key)
+ if refs is not None:
+ # raises KeyError when the value isn't found
+ refs.remove(zope.app.keyreference.interfaces.IKeyReference(value))
+ else:
+ raise KeyError("Object and value pair does not exist")
+
+ def discard(self, obj, value):
+ try:
+ self.remove(obj, value)
+ except KeyError:
+ pass
+
+ def contains(self, obj, value):
+ key = zope.app.keyreference.interfaces.IKeyReference(obj)
+ refs = self.references.get(key)
+ if refs is not None:
+ return zope.app.keyreference.interfaces.IKeyReference(value) in refs
+ return False
+
+ def set(self, obj, values):
+ key = zope.app.keyreference.interfaces.IKeyReference(obj)
+ refs = self.references.get(key)
+ vals = map(zope.app.keyreference.interfaces.IKeyReference, values)
+ if not vals:
+ if refs is not None:
+ # del
+ del self.references[key]
+ else:
+ if refs is None:
+ refs = self.references[key] = BTrees.OOBTree.OOTreeSet()
+ else:
+ refs.clear()
+ refs.update(vals)
+
+ def get(self, obj):
+ key = zope.app.keyreference.interfaces.IKeyReference(obj)
+ refs = self.references.get(key, ())
+ for kr in refs:
+ yield kr()
+
+ @property
+ def shortcut_registry(self):
+ return zope.component.queryUtility(
+ zc.extrinsicreference.interfaces.IExtrinsicReferences, 'shortcuts')
+
+ def registerShortcut(shortcut, event):
+ """Subscriber to add an extrinsic reference."""
+ if self.shortcut_registry is not None:
+ # We use raw_target because we don't want a proxy.
+ registry.add(shortcut.raw_target, shortcut)
+
+ def unregisterShortcut(shortcut, event):
+ """Subscriber to remove an extrinsic reference."""
+ if self.shortcut_registry is not None:
+ # We use raw_target because we don't want a proxy.
+ registry.discard(shortcut.raw_target, shortcut)
Modified: zc.extrinsicreference/trunk/src/zc/extrinsicreference/configure.zcml
===================================================================
--- zc.extrinsicreference/trunk/src/zc/extrinsicreference/configure.zcml 2008-02-16 22:45:36 UTC (rev 83950)
+++ zc.extrinsicreference/trunk/src/zc/extrinsicreference/configure.zcml 2008-02-16 22:57:03 UTC (rev 83951)
@@ -1,17 +1,16 @@
<configure
- xmlns='http://namespaces.zope.org/zope'
- xmlns:browser='http://namespaces.zope.org/browser'
- i18n_domain="zc.intranet">
+ xmlns='http://namespaces.zope.org/zope'
+ xmlns:browser='http://namespaces.zope.org/browser'
+ i18n_domain="zc.intranet">
- <class class=".extrinsicreference.ExtrinsicReferences">
- <implements
- interface="zope.annotation.interfaces.IAttributeAnnotatable"/>
- </class>
+ <class class=".extrinsicreference.ExtrinsicReferences">
+ <implements interface="zope.annotation.interfaces.IAttributeAnnotatable"/>
+ </class>
- <browser:addMenuItem
- class=".extrinsicreference.ExtrinsicReferences"
- title="Extrinsic References"
- permission= "zope.ManageContent"
- />
+ <browser:addMenuItem
+ class=".extrinsicreference.ExtrinsicReferences"
+ title="Extrinsic References"
+ permission= "zope.ManageContent"
+ />
</configure>
Deleted: zc.extrinsicreference/trunk/src/zc/extrinsicreference/extrinsicreference.py
===================================================================
--- zc.extrinsicreference/trunk/src/zc/extrinsicreference/extrinsicreference.py 2008-02-16 22:45:36 UTC (rev 83950)
+++ zc.extrinsicreference/trunk/src/zc/extrinsicreference/extrinsicreference.py 2008-02-16 22:57:03 UTC (rev 83951)
@@ -1,109 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2004 Zope Corporation and Contributors.
-# All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE.
-#
-##############################################################################
-"""extrinsic references
-
-$Id$
-"""
-from BTrees import OOBTree
-from zc.extrinsicreference.interfaces import IExtrinsicReferences
-from zope import interface
-from zope.app import zapi
-from zope.app.keyreference.interfaces import IKeyReference
-import persistent
-
-class ExtrinsicReferences(persistent.Persistent):
-
- interface.implements(IExtrinsicReferences)
-
- # To be usable as an ILocalUtility we have to have these.
- __parent__ = __name__ = None
-
- def __init__(self):
- self.references = OOBTree.OOBTree()
-
- def add(self, obj, value):
- key = IKeyReference(obj)
- refs = self.references.get(key)
- if refs is None:
- refs = self.references[key] = OOBTree.OOTreeSet()
- refs.insert(IKeyReference(value))
-
- def update(self, obj, values):
- key = IKeyReference(obj)
- refs = self.references.get(key)
- if refs is None:
- refs = self.references[key] = OOBTree.OOTreeSet()
- refs.update(IKeyReference(v) for v in values)
-
- def remove(self, obj, value):
- key = IKeyReference(obj)
- refs = self.references.get(key)
- if refs is not None:
- refs.remove(IKeyReference(value)) # raises KeyError when we desire
- else:
- raise KeyError("Object and value pair does not exist")
-
- def discard(self, obj, value):
- try:
- self.remove(obj, value)
- except KeyError:
- pass
-
- def contains(self, obj, value):
- key = IKeyReference(obj)
- refs = self.references.get(key)
- if refs is not None:
- return IKeyReference(value) in refs
- return False
-
- def set(self, obj, values):
- key = IKeyReference(obj)
- refs = self.references.get(key)
- vals = [IKeyReference(v) for v in values]
- if not vals:
- if refs is not None:
- # del
- del self.references[key]
- else:
- if refs is None:
- refs = self.references[key] = OOBTree.OOTreeSet()
- else:
- refs.clear()
- refs.update(vals)
-
- def get(self, obj):
- key = IKeyReference(obj)
- refs = self.references.get(key, ())
- for kr in refs:
- yield kr()
-
-try:
- from zc.shortcut.interfaces import IShortcut
-
- def registerShortcut(shortcut, event):
- """Subscriber to add an extrinsic reference."""
- registry = zapi.queryUtility(IExtrinsicReferences, 'shortcuts')
- if registry is not None:
- # We use raw_target because we don't want a proxy.
- registry.add(shortcut.raw_target, shortcut)
-
- def unregisterShortcut(shortcut, event):
- """Subscriber to remove an extrinsic reference."""
- registry = zapi.queryUtility(IExtrinsicReferences, 'shortcuts')
- if registry is not None:
- # We use raw_target because we don't want a proxy.
- registry.discard(shortcut.raw_target, shortcut)
-except ImportError:
- # apparently zc.shortcut isn't around, skip it
- pass
Deleted: zc.extrinsicreference/trunk/src/zc/extrinsicreference/extrinsicreference.txt
===================================================================
--- zc.extrinsicreference/trunk/src/zc/extrinsicreference/extrinsicreference.txt 2008-02-16 22:45:36 UTC (rev 83950)
+++ zc.extrinsicreference/trunk/src/zc/extrinsicreference/extrinsicreference.txt 2008-02-16 22:57:03 UTC (rev 83951)
@@ -1,136 +0,0 @@
-====================
-Extrinsic References
-====================
-
-Extrinsic registries record a key and one or more values to which they
-refer. The key and all values must be adaptable to
-zope.app.keyreference.interfaces.IKeyReference.
-
- >>> from zc.extrinsicreference import ExtrinsicReferences
- >>> references = ExtrinsicReferences()
- >>> references.add(1, 2)
- Traceback (most recent call last):
- ...
- TypeError: ('Could not adapt', 1...
- >>> from zope import interface, component
- >>> from zope.app.keyreference.interfaces import IKeyReference
- >>> class IMyObject(interface.Interface):
- ... "An interface for which we register an IKeyReference adapter"
- ... id = interface.Attribute("An id unique to IMyObject instances")
- ...
- >>> class MyObject(object):
- ... interface.implements(IMyObject)
- ... _id_counter = 0
- ... @classmethod
- ... def _getId(cls):
- ... val = cls._id_counter
- ... cls._id_counter += 1
- ... return val
- ... def __init__(self):
- ... self.id = self._getId()
- ...
- >>> class DummyKeyReference(object):
- ... interface.implements(IKeyReference)
- ... component.adapts(IMyObject)
- ... key_type_id = 'zc.extrinsicreference.doctest'
- ... def __init__(self, obj):
- ... self.object = obj
- ... def __call__(self):
- ... """Get the object this reference is linking to.
- ... """
- ... return self.object
- ... def __hash__(self):
- ... """Get a unique identifier of the referenced object.
- ... """
- ... return hash(self.object.id)
- ... def __cmp__(self, other):
- ... """Compare the reference to another reference.
- ... """
- ... if self.key_type_id == other.key_type_id:
- ... return cmp(self.object.id, other.object.id)
- ... return cmp(self.key_type_id, other.key_type_id)
- ...
- >>> component.provideAdapter(DummyKeyReference)
- >>> object1 = MyObject()
- >>> references.add(object1, 2)
- Traceback (most recent call last):
- ...
- TypeError: ('Could not adapt', 2...
- >>> value1 = MyObject()
- >>> value2 = MyObject()
- >>> references.add(object1, value1)
- >>> references.add(object1, value2)
-
-Values can be retrieved by their key:
-
- >>> set(references.get(object1)) == set((value1, value2))
- True
-
-References can be removed:
-
- >>> references.remove(object1, value1)
- >>> list(references.get(object1)) == [value2]
- True
-
-But if the reference is not registered, removing it raises a KeyError.
-
- >>> references.remove(object1, value1)
- Traceback (most recent call last):
- ...
- KeyError:...
- >>> object2 = MyObject()
- >>> references.remove(object2, value2)
- Traceback (most recent call last):
- ...
- KeyError:...
-
-If you prefer to silently ignore these errors, use `discard`.
-
- >>> references.discard(object1, value1)
- >>> references.discard(object2, value2)
-
-Otherwise, you can use `contains` to determine if the reference exists:
-
- >>> references.contains(object1, value1)
- False
- >>> references.contains(object2, value2)
- False
- >>> references.contains(object1, value2)
- True
-
-If a key has no associated values, an empty iterable is returned:
-
- >>> references.discard(object1, value2)
- >>> list(references.get(object1))
- []
-
-Adding a value more than once does not cause the value to be included
-in the result sequence more than once:
-
- >>> references.add(object1, value1)
- >>> references.add(object1, value1)
- >>> list(references.get(object1)) == [value1]
- True
-
-The `set` method destructively sets the given values for the object. Repeated
-objects are collapsed to a single instance.
-
- >>> references.set(object1, (value2, object2, value2, value2, object2))
- >>> references.contains(object1, value1)
- False
- >>> len(list(references.get(object1)))
- 2
- >>> set(references.get(object1)) == set((value2, object2))
- True
- >>> references.set(object1, ())
- >>> len(list(references.get(object1)))
- 0
-
-The `update` method adds values to the previous values, non-destructively.
-
- >>> references.add(object1, value1)
- >>> references.update(object1, (value2, object2, value2))
- >>> len(list(references.get(object1)))
- 3
- >>> set(references.get(object1)) == set((value1, value2, object2))
- True
Modified: zc.extrinsicreference/trunk/src/zc/extrinsicreference/interfaces.py
===================================================================
--- zc.extrinsicreference/trunk/src/zc/extrinsicreference/interfaces.py 2008-02-16 22:45:36 UTC (rev 83950)
+++ zc.extrinsicreference/trunk/src/zc/extrinsicreference/interfaces.py 2008-02-16 22:57:03 UTC (rev 83951)
@@ -11,17 +11,18 @@
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
-from zope import interface
-class IExtrinsicReferences(interface.Interface):
+import zope.interface
+
+class IExtrinsicReferences(zope.interface.Interface):
"""An object that stores extrinsic references to another object
- All objects must be adaptable to
+ All objects must be adaptable to
zope.app.keyreference.interfaces.IKeyReference."""
def add(obj, value):
"""Add an object and an associated value to the registry.
-
+
Both object and value must be adaptable to IKeyReference.
Multiple values may be stored for a single key. Each value is
@@ -67,10 +68,10 @@
def set(obj, values):
"""Set the values for obj to the values in the given iterable.
- Replaces any previous values for obj. Object and each value must be
+ Replaces any previous values for obj. Object and each value must be
adaptable to IKeyReference. Identical values (as determined by
IKeyReference) are collapsed to a single instance (so, for instance,
- values of [A, B, B, C, B] will be collapsed to a logical set of
+ values of [A, B, B, C, B] will be collapsed to a logical set of
A, B, C).
Setting an empty values is the canonical way of clearing values for an
Modified: zc.extrinsicreference/trunk/src/zc/extrinsicreference/tests.py
===================================================================
--- zc.extrinsicreference/trunk/src/zc/extrinsicreference/tests.py 2008-02-16 22:45:36 UTC (rev 83950)
+++ zc.extrinsicreference/trunk/src/zc/extrinsicreference/tests.py 2008-02-16 22:57:03 UTC (rev 83951)
@@ -11,20 +11,15 @@
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
-"""extrinsicreference module test runner
+"""extrinsicreference module test runner"""
-$Id$
-"""
import unittest
-
from zope.testing import doctest
-from zope.app.testing import placelesssetup
+#from zope.app.testing import placelesssetup
+
def test_suite():
return doctest.DocFileSuite(
- 'extrinsicreference.txt',
- setUp=placelesssetup.setUp, tearDown=placelesssetup.tearDown,
+ 'README.txt',
+# setUp=placelesssetup.setUp, tearDown=placelesssetup.tearDown,
optionflags=doctest.ELLIPSIS)
-
-if __name__ == '__main__':
- unittest.main(defaultTest='test_suite')
Modified: zc.extrinsicreference/trunk/src/zc/extrinsicreference/track_shortcuts.zcml
===================================================================
--- zc.extrinsicreference/trunk/src/zc/extrinsicreference/track_shortcuts.zcml 2008-02-16 22:45:36 UTC (rev 83950)
+++ zc.extrinsicreference/trunk/src/zc/extrinsicreference/track_shortcuts.zcml 2008-02-16 22:57:03 UTC (rev 83951)
@@ -1,16 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<configure xmlns="http://namespaces.zope.org/zope">
- <subscriber
- for="zc.shortcut.interfaces.IShortcut
- zope.app.container.interfaces.IObjectAddedEvent"
- handler="zc.extrinsicreference.registerShortcut"
- />
+ <subscriber
+ for="zc.shortcut.interfaces.IShortcut
+ zope.app.container.interfaces.IObjectAddedEvent"
+ handler="zc.extrinsicreference.registerShortcut"
+ />
- <subscriber
- for="zc.shortcut.interfaces.IShortcut
- zope.app.container.interfaces.IObjectRemovedEvent"
- handler="zc.extrinsicreference.unregisterShortcut"
- />
+ <subscriber
+ for="zc.shortcut.interfaces.IShortcut
+ zope.app.container.interfaces.IObjectRemovedEvent"
+ handler="zc.extrinsicreference.unregisterShortcut"
+ />
</configure>
More information about the Checkins
mailing list