mirror of
https://github.com/msgpack/msgpack-python.git
synced 2025-10-19 12:03:15 +00:00
Compare commits
4 commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
c1ecd23dbf | ||
![]() |
af45640970 | ||
![]() |
c2546eabc4 | ||
![]() |
ef4f83df16 |
8 changed files with 32 additions and 20 deletions
12
.github/workflows/test.yml
vendored
12
.github/workflows/test.yml
vendored
|
@ -10,10 +10,8 @@ jobs:
|
|||
strategy:
|
||||
matrix:
|
||||
os: ["ubuntu-latest", "windows-latest", "windows-11-arm", "macos-latest"]
|
||||
py: ["3.14-dev", "3.13", "3.12", "3.11", "3.10", "3.9"]
|
||||
py: ["3.14", "3.14t", "3.13", "3.12", "3.11", "3.10"]
|
||||
exclude:
|
||||
- os: windows-11-arm
|
||||
py: "3.9"
|
||||
- os: windows-11-arm
|
||||
py: "3.10"
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
@ -21,10 +19,10 @@ jobs:
|
|||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: ${{ matrix.py }}
|
||||
allow-prereleases: true
|
||||
|
@ -33,7 +31,6 @@ jobs:
|
|||
- name: Prepare
|
||||
shell: bash
|
||||
run: |
|
||||
python -m pip install -U pip
|
||||
python -m pip install -r requirements.txt pytest
|
||||
|
||||
- name: Build
|
||||
|
@ -55,8 +52,7 @@ jobs:
|
|||
- name: build packages
|
||||
shell: bash
|
||||
run: |
|
||||
pip install build
|
||||
python -m build
|
||||
python -m build -nv
|
||||
|
||||
- name: upload packages
|
||||
uses: actions/upload-artifact@v4
|
||||
|
|
6
.github/workflows/wheel.yml
vendored
6
.github/workflows/wheel.yml
vendored
|
@ -17,8 +17,8 @@ jobs:
|
|||
name: Build wheels on ${{ matrix.os }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v5
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: "3.x"
|
||||
cache: "pip"
|
||||
|
@ -33,7 +33,7 @@ jobs:
|
|||
env:
|
||||
CIBW_TEST_REQUIRES: "pytest"
|
||||
CIBW_TEST_COMMAND: "pytest {package}/test"
|
||||
CIBW_SKIP: "pp* cp38-* cp39-win_arm64 cp310-win_arm64"
|
||||
CIBW_SKIP: "pp* cp38-* cp39-* cp310-win_arm64"
|
||||
|
||||
- name: Build sdist
|
||||
if: runner.os == 'Linux' && runner.arch == 'X64'
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
include setup.py
|
||||
include COPYING
|
||||
include README.md
|
||||
recursive-include msgpack *.h *.c *.pyx *.cpp
|
||||
recursive-include msgpack *.h *.c *.pyx
|
||||
recursive-include test *.py
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# coding: utf-8
|
||||
#cython: embedsignature=True, c_string_encoding=ascii, language_level=3
|
||||
#cython: freethreading_compatible = True
|
||||
import cython
|
||||
from cpython.datetime cimport import_datetime, datetime_new
|
||||
import_datetime()
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# coding: utf-8
|
||||
|
||||
from cpython cimport *
|
||||
from cpython.bytearray cimport PyByteArray_Check, PyByteArray_CheckExact
|
||||
from cpython.datetime cimport (
|
||||
|
@ -129,6 +127,7 @@ cdef class Packer:
|
|||
if self.exports > 0:
|
||||
raise BufferError("Existing exports of data: Packer cannot be changed")
|
||||
|
||||
@cython.critical_section
|
||||
def __init__(self, *, default=None,
|
||||
bint use_single_float=False, bint autoreset=True, bint use_bin_type=True,
|
||||
bint strict_types=False, bint datetime=False, unicode_errors=None,
|
||||
|
@ -269,6 +268,7 @@ cdef class Packer:
|
|||
return ret
|
||||
return self._pack_inner(o, 0, nest_limit)
|
||||
|
||||
@cython.critical_section
|
||||
def pack(self, object obj):
|
||||
cdef int ret
|
||||
self._check_exports()
|
||||
|
@ -284,6 +284,7 @@ cdef class Packer:
|
|||
self.pk.length = 0
|
||||
return buf
|
||||
|
||||
@cython.critical_section
|
||||
def pack_ext_type(self, typecode, data):
|
||||
self._check_exports()
|
||||
if len(data) > ITEM_LIMIT:
|
||||
|
@ -291,6 +292,7 @@ cdef class Packer:
|
|||
msgpack_pack_ext(&self.pk, typecode, len(data))
|
||||
msgpack_pack_raw_body(&self.pk, data, len(data))
|
||||
|
||||
@cython.critical_section
|
||||
def pack_array_header(self, long long size):
|
||||
self._check_exports()
|
||||
if size > ITEM_LIMIT:
|
||||
|
@ -301,6 +303,7 @@ cdef class Packer:
|
|||
self.pk.length = 0
|
||||
return buf
|
||||
|
||||
@cython.critical_section
|
||||
def pack_map_header(self, long long size):
|
||||
self._check_exports()
|
||||
if size > ITEM_LIMIT:
|
||||
|
@ -311,6 +314,7 @@ cdef class Packer:
|
|||
self.pk.length = 0
|
||||
return buf
|
||||
|
||||
@cython.critical_section
|
||||
def pack_map_pairs(self, object pairs):
|
||||
"""
|
||||
Pack *pairs* as msgpack map type.
|
||||
|
@ -331,6 +335,7 @@ cdef class Packer:
|
|||
self.pk.length = 0
|
||||
return buf
|
||||
|
||||
@cython.critical_section
|
||||
def reset(self):
|
||||
"""Reset internal buffer.
|
||||
|
||||
|
@ -339,6 +344,7 @@ cdef class Packer:
|
|||
self._check_exports()
|
||||
self.pk.length = 0
|
||||
|
||||
@cython.critical_section
|
||||
def bytes(self):
|
||||
"""Return internal buffer contents as bytes object"""
|
||||
return PyBytes_FromStringAndSize(self.pk.buf, self.pk.length)
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
# coding: utf-8
|
||||
|
||||
from cpython cimport *
|
||||
cdef extern from "Python.h":
|
||||
ctypedef struct PyObject
|
||||
|
@ -324,6 +322,7 @@ cdef class Unpacker:
|
|||
PyMem_Free(self.buf)
|
||||
self.buf = NULL
|
||||
|
||||
@cython.critical_section
|
||||
def __init__(self, file_like=None, *, Py_ssize_t read_size=0,
|
||||
bint use_list=True, bint raw=False, int timestamp=0, bint strict_map_key=True,
|
||||
object object_hook=None, object object_pairs_hook=None, object list_hook=None,
|
||||
|
@ -384,6 +383,7 @@ cdef class Unpacker:
|
|||
max_str_len, max_bin_len, max_array_len,
|
||||
max_map_len, max_ext_len)
|
||||
|
||||
@cython.critical_section
|
||||
def feed(self, object next_bytes):
|
||||
"""Append `next_bytes` to internal buffer."""
|
||||
cdef Py_buffer pybuff
|
||||
|
@ -484,6 +484,7 @@ cdef class Unpacker:
|
|||
else:
|
||||
raise ValueError("Unpack failed: error = %d" % (ret,))
|
||||
|
||||
@cython.critical_section
|
||||
def read_bytes(self, Py_ssize_t nbytes):
|
||||
"""Read a specified number of raw bytes from the stream"""
|
||||
cdef Py_ssize_t nread
|
||||
|
@ -496,6 +497,7 @@ cdef class Unpacker:
|
|||
self.stream_offset += nread
|
||||
return ret
|
||||
|
||||
@cython.critical_section
|
||||
def unpack(self):
|
||||
"""Unpack one object
|
||||
|
||||
|
@ -503,6 +505,7 @@ cdef class Unpacker:
|
|||
"""
|
||||
return self._unpack(unpack_construct)
|
||||
|
||||
@cython.critical_section
|
||||
def skip(self):
|
||||
"""Read and ignore one object, returning None
|
||||
|
||||
|
@ -510,6 +513,7 @@ cdef class Unpacker:
|
|||
"""
|
||||
return self._unpack(unpack_skip)
|
||||
|
||||
@cython.critical_section
|
||||
def read_array_header(self):
|
||||
"""assuming the next object is an array, return its size n, such that
|
||||
the next n unpack() calls will iterate over its contents.
|
||||
|
@ -518,6 +522,7 @@ cdef class Unpacker:
|
|||
"""
|
||||
return self._unpack(read_array_header)
|
||||
|
||||
@cython.critical_section
|
||||
def read_map_header(self):
|
||||
"""assuming the next object is a map, return its size n, such that the
|
||||
next n * 2 unpack() calls will iterate over its key-value pairs.
|
||||
|
@ -526,6 +531,7 @@ cdef class Unpacker:
|
|||
"""
|
||||
return self._unpack(read_map_header)
|
||||
|
||||
@cython.critical_section
|
||||
def tell(self):
|
||||
"""Returns the current position of the Unpacker in bytes, i.e., the
|
||||
number of bytes that were read from the input, also the starting
|
||||
|
@ -536,6 +542,7 @@ cdef class Unpacker:
|
|||
def __iter__(self):
|
||||
return self
|
||||
|
||||
@cython.critical_section
|
||||
def __next__(self):
|
||||
return self._unpack(unpack_construct, 1)
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[build-system]
|
||||
requires = ["setuptools >= 80.9.0"]
|
||||
requires = ["setuptools >= 78.1.1"]
|
||||
build-backend = "setuptools.build_meta"
|
||||
|
||||
[project]
|
||||
|
@ -10,7 +10,7 @@ authors = [{name="Inada Naoki", email="songofacandy@gmail.com"}]
|
|||
description = "MessagePack serializer"
|
||||
readme = "README.md"
|
||||
keywords = ["msgpack", "messagepack", "serializer", "serialization", "binary"]
|
||||
requires-python = ">=3.9"
|
||||
requires-python = ">=3.10"
|
||||
classifiers = [
|
||||
"Development Status :: 5 - Production/Stable",
|
||||
"Operating System :: OS Independent",
|
||||
|
@ -36,7 +36,7 @@ version = {attr = "msgpack.__version__"}
|
|||
|
||||
[tool.ruff]
|
||||
line-length = 100
|
||||
target-version = "py39"
|
||||
target-version = "py310"
|
||||
lint.select = [
|
||||
"E", # pycodestyle
|
||||
"F", # Pyflakes
|
||||
|
|
|
@ -1 +1,3 @@
|
|||
Cython==3.1.4
|
||||
setuptools==78.1.1
|
||||
build
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue