summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJean Jordaan <jean.jordaan@gmail.com>2016-12-06 10:24:23 +0700
committerJean Jordaan <jean.jordaan@gmail.com>2016-12-06 10:24:23 +0700
commit188d97b39de7ccc7156e16c69053b7b66df01a45 (patch)
treedbb4d46f4e1838bf667ce63884d4eb5b38cd7bf6 /src
parentf4a1c4869844da57977cf13c90fe8ae40d071fe5 (diff)
parentb8114b49cf14da404968bdb07eb50e9ae59c9422 (diff)
downloadzope-interface-188d97b39de7ccc7156e16c69053b7b66df01a45.tar.gz
Merge branch 'master' of github.com:zopefoundation/zope.interface
Conflicts: CHANGES.rst I think that was the simplest conflict resolution ever :-]
Diffstat (limited to 'src')
-rw-r--r--src/zope/interface/_zope_interface_coptimizations.c9
-rw-r--r--src/zope/interface/adapter.py4
-rw-r--r--src/zope/interface/declarations.py16
-rw-r--r--src/zope/interface/interface.py6
-rw-r--r--src/zope/interface/tests/test_adapter.py18
-rw-r--r--src/zope/interface/tests/test_declarations.py53
-rw-r--r--src/zope/interface/tests/test_interface.py32
7 files changed, 126 insertions, 12 deletions
diff --git a/src/zope/interface/_zope_interface_coptimizations.c b/src/zope/interface/_zope_interface_coptimizations.c
index b2088ee..e7b9517 100644
--- a/src/zope/interface/_zope_interface_coptimizations.c
+++ b/src/zope/interface/_zope_interface_coptimizations.c
@@ -25,6 +25,15 @@
#define Py_TYPE(o) ((o)->ob_type)
#endif
+#if PY_MAJOR_VERSION >= 3
+#define PY3K
+#endif
+
+#ifdef PY3K
+/* See http://bugs.python.org/issue15657 */
+#define METH_KEYWORDS 0x0003
+#endif
+
static PyObject *str__dict__, *str__implemented__, *strextends;
static PyObject *BuiltinImplementationSpecifications, *str__provides__;
static PyObject *str__class__, *str__providedBy__;
diff --git a/src/zope/interface/adapter.py b/src/zope/interface/adapter.py
index 69fa6c1..db2a49b 100644
--- a/src/zope/interface/adapter.py
+++ b/src/zope/interface/adapter.py
@@ -398,7 +398,7 @@ class LookupBaseFallback(object):
LookupBasePy = LookupBaseFallback # BBB
try:
- from _zope_interface_coptimizations import LookupBase
+ from zope.interface._zope_interface_coptimizations import LookupBase
except ImportError: #pragma NO COVER
LookupBase = LookupBaseFallback
@@ -434,7 +434,7 @@ class VerifyingBaseFallback(LookupBaseFallback):
VerifyingBasePy = VerifyingBaseFallback #BBB
try:
- from _zope_interface_coptimizations import VerifyingBase
+ from zope.interface._zope_interface_coptimizations import VerifyingBase
except ImportError: #pragma NO COVER
VerifyingBase = VerifyingBaseFallback
diff --git a/src/zope/interface/declarations.py b/src/zope/interface/declarations.py
index 48e459a..8ea56b9 100644
--- a/src/zope/interface/declarations.py
+++ b/src/zope/interface/declarations.py
@@ -640,11 +640,11 @@ ClassProvidesBase = ClassProvidesBaseFallback
# Try to get C base:
try:
- import _zope_interface_coptimizations
+ import zope.interface._zope_interface_coptimizations
except ImportError: #pragma NO COVERAGE
pass
else: #pragma NO COVERAGE
- from _zope_interface_coptimizations import ClassProvidesBase
+ from zope.interface._zope_interface_coptimizations import ClassProvidesBase
class ClassProvides(Declaration, ClassProvidesBase):
@@ -917,13 +917,15 @@ def _normalizeargs(sequence, output = None):
_empty = Declaration()
try:
- import _zope_interface_coptimizations
+ import zope.interface._zope_interface_coptimizations
except ImportError: #pragma NO COVER
pass
else: #pragma NO COVER PyPy
- from _zope_interface_coptimizations import implementedBy
- from _zope_interface_coptimizations import providedBy
- from _zope_interface_coptimizations import getObjectSpecification
- from _zope_interface_coptimizations import ObjectSpecificationDescriptor
+ from zope.interface._zope_interface_coptimizations import implementedBy
+ from zope.interface._zope_interface_coptimizations import providedBy
+ from zope.interface._zope_interface_coptimizations import (
+ getObjectSpecification)
+ from zope.interface._zope_interface_coptimizations import (
+ ObjectSpecificationDescriptor)
objectSpecificationDescriptor = ObjectSpecificationDescriptor()
diff --git a/src/zope/interface/interface.py b/src/zope/interface/interface.py
index e7eff5d..c7c3836 100644
--- a/src/zope/interface/interface.py
+++ b/src/zope/interface/interface.py
@@ -114,7 +114,7 @@ class SpecificationBasePy(object):
SpecificationBase = SpecificationBasePy
try:
- from _zope_interface_coptimizations import SpecificationBase
+ from zope.interface._zope_interface_coptimizations import SpecificationBase
except ImportError: #pragma NO COVER
pass
@@ -155,14 +155,14 @@ class InterfaceBasePy(object):
InterfaceBase = InterfaceBasePy
try:
- from _zope_interface_coptimizations import InterfaceBase
+ from zope.interface._zope_interface_coptimizations import InterfaceBase
except ImportError: #pragma NO COVER
pass
adapter_hooks = []
try:
- from _zope_interface_coptimizations import adapter_hooks
+ from zope.interface._zope_interface_coptimizations import adapter_hooks
except ImportError: #pragma NO COVER
pass
diff --git a/src/zope/interface/tests/test_adapter.py b/src/zope/interface/tests/test_adapter.py
index df16397..68074f9 100644
--- a/src/zope/interface/tests/test_adapter.py
+++ b/src/zope/interface/tests/test_adapter.py
@@ -527,6 +527,15 @@ class LookupBaseTests(LookupBaseFallbackTests):
from zope.interface.adapter import LookupBase
return LookupBase
+ def test_optimizations(self):
+ from zope.interface.adapter import LookupBaseFallback
+ try:
+ import zope.interface._zope_interface_coptimizations
+ except ImportError:
+ self.assertIs(self._getTargetClass(), LookupBaseFallback)
+ else:
+ self.assertIsNot(self._getTargetClass(), LookupBaseFallback)
+
class VerifyingBaseFallbackTests(unittest.TestCase):
@@ -689,6 +698,15 @@ class VerifyingBaseTests(VerifyingBaseFallbackTests):
from zope.interface.adapter import VerifyingBase
return VerifyingBase
+ def test_optimizations(self):
+ from zope.interface.adapter import VerifyingBaseFallback
+ try:
+ import zope.interface._zope_interface_coptimizations
+ except ImportError:
+ self.assertIs(self._getTargetClass(), VerifyingBaseFallback)
+ else:
+ self.assertIsNot(self._getTargetClass(), VerifyingBaseFallback)
+
class AdapterLookupBaseTests(unittest.TestCase):
diff --git a/src/zope/interface/tests/test_declarations.py b/src/zope/interface/tests/test_declarations.py
index 702a677..8e1ab9f 100644
--- a/src/zope/interface/tests/test_declarations.py
+++ b/src/zope/interface/tests/test_declarations.py
@@ -473,6 +473,16 @@ class Test_implementedBy(Test_implementedByFallback):
from zope.interface.declarations import implementedBy
return implementedBy(*args, **kw)
+ def test_optimizations(self):
+ from zope.interface.declarations import implementedByFallback
+ from zope.interface.declarations import implementedBy
+ try:
+ import zope.interface._zope_interface_coptimizations
+ except ImportError:
+ self.assertIs(implementedBy, implementedByFallback)
+ else:
+ self.assertIsNot(implementedBy, implementedByFallback)
+
class Test_classImplementsOnly(unittest.TestCase):
@@ -1123,6 +1133,15 @@ class ClassProvidesBaseTests(ClassProvidesBaseFallbackTests):
from zope.interface.declarations import ClassProvidesBase
return ClassProvidesBase
+ def test_optimizations(self):
+ from zope.interface.declarations import ClassProvidesBaseFallback
+ try:
+ import zope.interface._zope_interface_coptimizations
+ except ImportError:
+ self.assertIs(self._getTargetClass(), ClassProvidesBaseFallback)
+ else:
+ self.assertIsNot(self._getTargetClass(), ClassProvidesBaseFallback)
+
class ClassProvidesTests(unittest.TestCase):
@@ -1440,6 +1459,18 @@ class Test_getObjectSpecification(Test_getObjectSpecificationFallback):
from zope.interface.declarations import getObjectSpecification
return getObjectSpecification(*args, **kw)
+ def test_optimizations(self):
+ from zope.interface.declarations import getObjectSpecificationFallback
+ from zope.interface.declarations import getObjectSpecification
+ try:
+ import zope.interface._zope_interface_coptimizations
+ except ImportError:
+ self.assertIs(getObjectSpecification,
+ getObjectSpecificationFallback)
+ else:
+ self.assertIsNot(getObjectSpecification,
+ getObjectSpecificationFallback)
+
class Test_providedByFallback(unittest.TestCase):
@@ -1525,6 +1556,16 @@ class Test_providedBy(Test_providedByFallback):
from zope.interface.declarations import providedBy
return providedBy(*args, **kw)
+ def test_optimizations(self):
+ from zope.interface.declarations import providedByFallback
+ from zope.interface.declarations import providedBy
+ try:
+ import zope.interface._zope_interface_coptimizations
+ except ImportError:
+ self.assertIs(providedBy, providedByFallback)
+ else:
+ self.assertIsNot(providedBy, providedByFallback)
+
class ObjectSpecificationDescriptorFallbackTests(unittest.TestCase):
@@ -1586,6 +1627,18 @@ class ObjectSpecificationDescriptorTests(
from zope.interface.declarations import ObjectSpecificationDescriptor
return ObjectSpecificationDescriptor
+ def test_optimizations(self):
+ from zope.interface.declarations import (
+ ObjectSpecificationDescriptorFallback)
+ try:
+ import zope.interface._zope_interface_coptimizations
+ except ImportError:
+ self.assertIs(self._getTargetClass(),
+ ObjectSpecificationDescriptorFallback)
+ else:
+ self.assertIsNot(self._getTargetClass(),
+ ObjectSpecificationDescriptorFallback)
+
# Test _normalizeargs through its callers.
diff --git a/src/zope/interface/tests/test_interface.py b/src/zope/interface/tests/test_interface.py
index a3b7007..2b6f804 100644
--- a/src/zope/interface/tests/test_interface.py
+++ b/src/zope/interface/tests/test_interface.py
@@ -205,6 +205,22 @@ class SpecificationBasePyTests(unittest.TestCase):
self.assertTrue(sb(testing))
+class SpecificationBaseTests(unittest.TestCase):
+
+ def _getTargetClass(self):
+ from zope.interface.interface import SpecificationBase
+ return SpecificationBase
+
+ def test_optimizations(self):
+ from zope.interface.interface import SpecificationBasePy
+ try:
+ import zope.interface._zope_interface_coptimizations
+ except ImportError:
+ self.assertIs(self._getTargetClass(), SpecificationBasePy)
+ else:
+ self.assertIsNot(self._getTargetClass(), SpecificationBasePy)
+
+
class InterfaceBasePyTests(unittest.TestCase):
def _getTargetClass(self):
@@ -266,6 +282,22 @@ class InterfaceBasePyTests(unittest.TestCase):
self.assertEqual(_missed, [(ib, adapted)])
+class InterfaceBaseTests(unittest.TestCase):
+
+ def _getTargetClass(self):
+ from zope.interface.interface import InterfaceBase
+ return InterfaceBase
+
+ def test_optimizations(self):
+ from zope.interface.interface import InterfaceBasePy
+ try:
+ import zope.interface._zope_interface_coptimizations
+ except ImportError:
+ self.assertIs(self._getTargetClass(), InterfaceBasePy)
+ else:
+ self.assertIsNot(self._getTargetClass(), InterfaceBasePy)
+
+
class SpecificationTests(unittest.TestCase):
def _getTargetClass(self):