mirror of
				https://github.com/msgpack/msgpack-python.git
				synced 2025-10-31 17:40:54 +00:00 
			
		
		
		
	Merge branch 'main' into nogil
This commit is contained in:
		
						commit
						80191651eb
					
				
					 8 changed files with 34 additions and 23 deletions
				
			
		
							
								
								
									
										14
									
								
								.github/workflows/test.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								.github/workflows/test.yml
									
										
									
									
										vendored
									
									
								
							|  | @ -9,11 +9,9 @@ jobs: | |||
|   test: | ||||
|     strategy: | ||||
|       matrix: | ||||
|         os: ["ubuntu-latest", "windows-latest", "macos-latest"] | ||||
|         py: ["3.14", "3.14t", "3.13", "3.13t", "3.12", "3.11", "3.10", "3.9"] | ||||
|         os: ["ubuntu-latest", "windows-latest", "windows-11-arm", "macos-latest"] | ||||
|         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" | ||||
| 
 | ||||
|  | @ -22,10 +20,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 | ||||
|  | @ -34,7 +32,6 @@ jobs: | |||
|       - name: Prepare | ||||
|         shell: bash | ||||
|         run: | | ||||
|           python -m pip install -U pip | ||||
|           python -m pip install -r requirements.txt pytest | ||||
| 
 | ||||
|       - name: Install pytest-run-parallel under free-threading | ||||
|  | @ -75,8 +72,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 | ||||
|  |  | |||
							
								
								
									
										7
									
								
								.github/workflows/wheel.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								.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,8 +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_ENABLE: cpython-freethreading | ||||
|           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, freethreading_compatible=True | ||||
| #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 | ||||
| # cython: freethreading_compatible = True  | ||||
| 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 | ||||
| # cython: freethreading_compatible = True  | ||||
| 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
	
	 Inada Naoki
						Inada Naoki