summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTres Seaver <tseaver@palladion.com>2016-11-15 14:04:50 -0500
committerTres Seaver <tseaver@palladion.com>2016-11-15 14:04:50 -0500
commit53246e53624b0ed24cabbd6a819008e2bf1e6540 (patch)
tree5c1a6d91f5d0127af607a0f1deec58ca6e49820a /src
parent88c34a3ebb649ad19e5521df47cbc11c1374d2a9 (diff)
downloadzope-interface-53246e53624b0ed24cabbd6a819008e2bf1e6540.tar.gz
Fix C optimizations broken on Py3k.60-fix_c_optimizations-py3k
- The bare import of '_zope_c_optimizations' prevented them from being used. - After enabling them via absolute imports, they would fail due to http://bugs.python.org/issue15657. Fixes #60.
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
4 files changed, 23 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 625b7be..64274b7 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