diff options
| -rw-r--r-- | CHANGES.rst | 4 | ||||
| -rw-r--r-- | src/zope/interface/_zope_interface_coptimizations.c | 9 | ||||
| -rw-r--r-- | src/zope/interface/adapter.py | 4 | ||||
| -rw-r--r-- | src/zope/interface/declarations.py | 16 | ||||
| -rw-r--r-- | src/zope/interface/interface.py | 6 |
5 files changed, 26 insertions, 13 deletions
diff --git a/CHANGES.rst b/CHANGES.rst index 217afed..b4840ba 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -4,7 +4,9 @@ Changes 4.3.3 (unreleased) ------------------ -- Nothing changed yet. +- Fix C optimizations broken on Py3k. See the Python bug at: + http://bugs.python.org/issue15657 + (https://github.com/zopefoundation/zope.interface/issues/60) 4.3.2 (2016-09-05) 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 |
