summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorINADA Naoki <methane@users.noreply.github.com>2018-11-14 16:35:37 +0900
committerGitHub <noreply@github.com>2018-11-14 16:35:37 +0900
commitd782464c9150e448ab3a8d81197ff335e1ac2c2b (patch)
treed008991560c7ca596e11e4e760a3e613fe252bc4
parent2b5f59166beeccde0ee230c8673cf50932c8daba (diff)
downloadmsgpack-python-d782464c9150e448ab3a8d81197ff335e1ac2c2b.tar.gz
Refactor Cython code (#328)
_msgpack -> _cmsgpack
-rw-r--r--.travis.yml2
-rw-r--r--Makefile2
-rw-r--r--appveyor.yml3
-rwxr-xr-xdocker/runtests.sh2
-rw-r--r--msgpack/__init__.py2
-rw-r--r--msgpack/_cmsgpack.pyx4
-rw-r--r--msgpack/_msgpack.pyx4
-rw-r--r--msgpack/_packer.pyx10
-rw-r--r--msgpack/_unpacker.pyx22
-rwxr-xr-xsetup.py6
10 files changed, 17 insertions, 40 deletions
diff --git a/.travis.yml b/.travis.yml
index 822ca9a..1adbdc2 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -45,7 +45,7 @@ install:
script:
- python -c 'import sys; print(hex(sys.maxsize))'
- - python -c 'from msgpack import _msgpack'
+ - python -c 'from msgpack import _cmsgpack'
- pytest -v test
- MSGPACK_PUREPYTHON=x pytest -v test
diff --git a/Makefile b/Makefile
index ff9a482..b65aa85 100644
--- a/Makefile
+++ b/Makefile
@@ -4,7 +4,7 @@ all: cython
.PHONY: cython
cython:
- cython --cplus msgpack/_msgpack.pyx
+ cython --cplus msgpack/_cmsgpack.pyx
.PHONY: test
test:
diff --git a/appveyor.yml b/appveyor.yml
index 72b334a..f0e21fc 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -6,8 +6,9 @@ environment:
install:
# We need wheel installed to build wheels
+ - "%PYTHON%\\python.exe -m pip install -U pip"
- "%PYTHON%\\python.exe -m pip install -U cython"
- - "%PYTHON%\\Scripts\\cython --cplus msgpack/_packer.pyx msgpack/_unpacker.pyx"
+ - "%PYTHON%\\Scripts\\cython --cplus msgpack/_cmsgpack.pyx"
build: off
diff --git a/docker/runtests.sh b/docker/runtests.sh
index f6c2c68..c6bbf60 100755
--- a/docker/runtests.sh
+++ b/docker/runtests.sh
@@ -8,7 +8,7 @@ for V in cp36-cp36m cp35-cp35m cp27-cp27m cp27-cp27mu; do
$PYBIN/pip install pytest
pushd test # prevent importing msgpack package in current directory.
$PYBIN/python -c 'import sys; print(hex(sys.maxsize))'
- $PYBIN/python -c 'from msgpack import _msgpack' # Ensure extension is available
+ $PYBIN/python -c 'from msgpack import _cmsgpack' # Ensure extension is available
$PYBIN/pytest -v .
popd
done
diff --git a/msgpack/__init__.py b/msgpack/__init__.py
index 7c5d4c0..7493c4c 100644
--- a/msgpack/__init__.py
+++ b/msgpack/__init__.py
@@ -22,7 +22,7 @@ if os.environ.get('MSGPACK_PUREPYTHON'):
from msgpack.fallback import Packer, unpackb, Unpacker
else:
try:
- from msgpack._msgpack import Packer, unpackb, Unpacker
+ from msgpack._cmsgpack import Packer, unpackb, Unpacker
except ImportError:
from msgpack.fallback import Packer, unpackb, Unpacker
diff --git a/msgpack/_cmsgpack.pyx b/msgpack/_cmsgpack.pyx
new file mode 100644
index 0000000..a48d5b5
--- /dev/null
+++ b/msgpack/_cmsgpack.pyx
@@ -0,0 +1,4 @@
+# coding: utf-8
+#cython: embedsignature=True, c_string_encoding=ascii, language_level=2
+include "_packer.pyx"
+include "_unpacker.pyx"
diff --git a/msgpack/_msgpack.pyx b/msgpack/_msgpack.pyx
deleted file mode 100644
index 4381394..0000000
--- a/msgpack/_msgpack.pyx
+++ /dev/null
@@ -1,4 +0,0 @@
-# coding: utf-8
-#cython: embedsignature=True, c_string_encoding=ascii
-include "_packer.pyx"
-include "_unpacker.pyx"
diff --git a/msgpack/_packer.pyx b/msgpack/_packer.pyx
index 2643f85..3be593f 100644
--- a/msgpack/_packer.pyx
+++ b/msgpack/_packer.pyx
@@ -1,9 +1,7 @@
# coding: utf-8
-#cython: embedsignature=True, c_string_encoding=ascii
from cpython cimport *
-from cpython.version cimport PY_MAJOR_VERSION
-from cpython.exc cimport PyErr_WarnEx
+from cpython.bytearray cimport PyByteArray_Check, PyByteArray_CheckExact
from msgpack import ExtType
@@ -11,8 +9,6 @@ from msgpack import ExtType
cdef extern from "Python.h":
int PyMemoryView_Check(object obj)
- int PyByteArray_Check(object obj)
- int PyByteArray_CheckExact(object obj)
char* PyUnicode_AsUTF8AndSize(object obj, Py_ssize_t *l) except NULL
@@ -204,7 +200,7 @@ cdef class Packer(object):
elif PyBytesLike_CheckExact(o) if strict_types else PyBytesLike_Check(o):
L = len(o)
if L > ITEM_LIMIT:
- raise ValueError("%s is too large" % type(o).__name__)
+ PyErr_Format(ValueError, b"%.200s object is too large", Py_TYPE(o).tp_name)
rawval = o
ret = msgpack_pack_bin(&self.pk, L)
if ret == 0:
@@ -280,7 +276,7 @@ cdef class Packer(object):
default_used = 1
continue
else:
- raise TypeError("can't serialize %r" % (o,))
+ PyErr_Format(TypeError, b"can not serialize '%.200s' object", Py_TYPE(o).tp_name)
return ret
cpdef pack(self, object obj):
diff --git a/msgpack/_unpacker.pyx b/msgpack/_unpacker.pyx
index e168587..aeebe2a 100644
--- a/msgpack/_unpacker.pyx
+++ b/msgpack/_unpacker.pyx
@@ -1,26 +1,6 @@
# coding: utf-8
-#cython: embedsignature=True, c_string_encoding=ascii
-from cpython.version cimport PY_MAJOR_VERSION
-from cpython.bytes cimport (
- PyBytes_AsString,
- PyBytes_FromStringAndSize,
- PyBytes_Size,
-)
-from cpython.buffer cimport (
- Py_buffer,
- PyObject_CheckBuffer,
- PyObject_GetBuffer,
- PyBuffer_Release,
- PyBuffer_IsContiguous,
- PyBUF_READ,
- PyBUF_SIMPLE,
- PyBUF_FULL_RO,
-)
-from cpython.mem cimport PyMem_Malloc, PyMem_Free
-from cpython.object cimport PyCallable_Check
-from cpython.ref cimport Py_DECREF
-from cpython.exc cimport PyErr_WarnEx
+from cpython cimport *
cdef extern from "Python.h":
ctypedef struct PyObject
diff --git a/setup.py b/setup.py
index 8b8f7bd..eb9403f 100755
--- a/setup.py
+++ b/setup.py
@@ -68,7 +68,7 @@ if len(version) > 3 and version[3] != 'final':
if have_cython:
class Sdist(sdist):
def __init__(self, *args, **kwargs):
- cythonize('msgpack/_msgpack.pyx')
+ cythonize('msgpack/_cmsgpack.pyx')
sdist.__init__(self, *args, **kwargs)
else:
Sdist = sdist
@@ -84,8 +84,8 @@ else:
ext_modules = []
if not hasattr(sys, 'pypy_version_info'):
- ext_modules.append(Extension('msgpack._msgpack',
- sources=['msgpack/_msgpack.cpp'],
+ ext_modules.append(Extension('msgpack._cmsgpack',
+ sources=['msgpack/_cmsgpack.cpp'],
libraries=libraries,
include_dirs=['.'],
define_macros=macros,