Cleanup code and pyproject (#608)

* use isort
* fallback: use BytesIO instead of StringIO. We had dropped Python 2
already.
This commit is contained in:
Inada Naoki 2024-05-06 11:46:31 +09:00 committed by GitHub
parent e0f0e145f1
commit 33e0e86f4e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
21 changed files with 75 additions and 80 deletions

View file

@ -6,11 +6,11 @@ all: cython
.PHONY: format .PHONY: format
format: format:
pipx run ruff format $(PYTHON_SOURCES) ruff format $(PYTHON_SOURCES)
.PHONY: lint .PHONY: lint
lint: lint:
pipx run ruff check $(PYTHON_SOURCES) ruff check $(PYTHON_SOURCES)
.PHONY: doc .PHONY: doc
doc: doc:

View file

@ -1,20 +1,20 @@
from .exceptions import * # ruff: noqa: F401
from .ext import ExtType, Timestamp
import os import os
from .exceptions import * # noqa: F403
from .ext import ExtType, Timestamp
version = (1, 0, 8) version = (1, 0, 8)
__version__ = "1.0.8" __version__ = "1.0.8"
if os.environ.get("MSGPACK_PUREPYTHON"): if os.environ.get("MSGPACK_PUREPYTHON"):
from .fallback import Packer, unpackb, Unpacker from .fallback import Packer, Unpacker, unpackb
else: else:
try: try:
from ._cmsgpack import Packer, unpackb, Unpacker from ._cmsgpack import Packer, Unpacker, unpackb
except ImportError: except ImportError:
from .fallback import Packer, unpackb, Unpacker from .fallback import Packer, Unpacker, unpackb
def pack(o, stream, **kwargs): def pack(o, stream, **kwargs):

View file

@ -1,6 +1,6 @@
from collections import namedtuple
import datetime import datetime
import struct import struct
from collections import namedtuple
class ExtType(namedtuple("ExtType", "code data")): class ExtType(namedtuple("ExtType", "code data")):

View file

@ -1,28 +1,22 @@
"""Fallback pure Python implementation of msgpack""" """Fallback pure Python implementation of msgpack"""
from datetime import datetime as _DateTime
import sys
import struct import struct
import sys
from datetime import datetime as _DateTime
if hasattr(sys, "pypy_version_info"): if hasattr(sys, "pypy_version_info"):
# StringIO is slow on PyPy, StringIO is faster. However: PyPy's own
# StringBuilder is fastest.
from __pypy__ import newlist_hint from __pypy__ import newlist_hint
from __pypy__.builders import BytesBuilder
try: _USING_STRINGBUILDER = True
from __pypy__.builders import BytesBuilder as StringBuilder
except ImportError:
from __pypy__.builders import StringBuilder
USING_STRINGBUILDER = True
class StringIO: class BytesIO:
def __init__(self, s=b""): def __init__(self, s=b""):
if s: if s:
self.builder = StringBuilder(len(s)) self.builder = BytesBuilder(len(s))
self.builder.append(s) self.builder.append(s)
else: else:
self.builder = StringBuilder() self.builder = BytesBuilder()
def write(self, s): def write(self, s):
if isinstance(s, memoryview): if isinstance(s, memoryview):
@ -35,17 +29,17 @@ if hasattr(sys, "pypy_version_info"):
return self.builder.build() return self.builder.build()
else: else:
USING_STRINGBUILDER = False from io import BytesIO
from io import BytesIO as StringIO
newlist_hint = lambda size: [] _USING_STRINGBUILDER = False
def newlist_hint(size):
return []
from .exceptions import BufferFull, OutOfData, ExtraData, FormatError, StackError from .exceptions import BufferFull, ExtraData, FormatError, OutOfData, StackError
from .ext import ExtType, Timestamp from .ext import ExtType, Timestamp
EX_SKIP = 0 EX_SKIP = 0
EX_CONSTRUCT = 1 EX_CONSTRUCT = 1
EX_READ_ARRAY_HEADER = 2 EX_READ_ARRAY_HEADER = 2
@ -335,6 +329,7 @@ class Unpacker:
# Use extend here: INPLACE_ADD += doesn't reliably typecast memoryview in jython # Use extend here: INPLACE_ADD += doesn't reliably typecast memoryview in jython
self._buffer.extend(view) self._buffer.extend(view)
view.release()
def _consume(self): def _consume(self):
"""Gets rid of the used parts of the buffer.""" """Gets rid of the used parts of the buffer."""
@ -671,12 +666,11 @@ class Packer:
self._use_float = use_single_float self._use_float = use_single_float
self._autoreset = autoreset self._autoreset = autoreset
self._use_bin_type = use_bin_type self._use_bin_type = use_bin_type
self._buffer = StringIO() self._buffer = BytesIO()
self._datetime = bool(datetime) self._datetime = bool(datetime)
self._unicode_errors = unicode_errors or "strict" self._unicode_errors = unicode_errors or "strict"
if default is not None: if default is not None and not callable(default):
if not callable(default): raise TypeError("default must be callable")
raise TypeError("default must be callable")
self._default = default self._default = default
def _pack( def _pack(
@ -807,18 +801,18 @@ class Packer:
try: try:
self._pack(obj) self._pack(obj)
except: except:
self._buffer = StringIO() # force reset self._buffer = BytesIO() # force reset
raise raise
if self._autoreset: if self._autoreset:
ret = self._buffer.getvalue() ret = self._buffer.getvalue()
self._buffer = StringIO() self._buffer = BytesIO()
return ret return ret
def pack_map_pairs(self, pairs): def pack_map_pairs(self, pairs):
self._pack_map_pairs(len(pairs), pairs) self._pack_map_pairs(len(pairs), pairs)
if self._autoreset: if self._autoreset:
ret = self._buffer.getvalue() ret = self._buffer.getvalue()
self._buffer = StringIO() self._buffer = BytesIO()
return ret return ret
def pack_array_header(self, n): def pack_array_header(self, n):
@ -827,7 +821,7 @@ class Packer:
self._pack_array_header(n) self._pack_array_header(n)
if self._autoreset: if self._autoreset:
ret = self._buffer.getvalue() ret = self._buffer.getvalue()
self._buffer = StringIO() self._buffer = BytesIO()
return ret return ret
def pack_map_header(self, n): def pack_map_header(self, n):
@ -836,7 +830,7 @@ class Packer:
self._pack_map_header(n) self._pack_map_header(n)
if self._autoreset: if self._autoreset:
ret = self._buffer.getvalue() ret = self._buffer.getvalue()
self._buffer = StringIO() self._buffer = BytesIO()
return ret return ret
def pack_ext_type(self, typecode, data): def pack_ext_type(self, typecode, data):
@ -925,11 +919,11 @@ class Packer:
This method is useful only when autoreset=False. This method is useful only when autoreset=False.
""" """
self._buffer = StringIO() self._buffer = BytesIO()
def getbuffer(self): def getbuffer(self):
"""Return view of internal buffer.""" """Return view of internal buffer."""
if USING_STRINGBUILDER: if _USING_STRINGBUILDER:
return memoryview(self.bytes()) return memoryview(self.bytes())
else: else:
return self._buffer.getbuffer() return self._buffer.getbuffer()

View file

@ -45,17 +45,12 @@ include-package-data = false
[tool.setuptools.dynamic] [tool.setuptools.dynamic]
version = {attr = "msgpack.__version__"} version = {attr = "msgpack.__version__"}
[tool.black]
line-length = 100
target-version = ["py37"]
skip_string_normalization = true
[tool.ruff] [tool.ruff]
line-length = 100 line-length = 100
target-version = "py38" target-version = "py38"
lint.ignore = [] lint.select = [
"E", # pycodestyle
[tool.ruff.lint.per-file-ignores] "F", # Pyflakes
"msgpack/__init__.py" = ["F401", "F403"] "I", # isort
"msgpack/fallback.py" = ["E731"] #"UP", pyupgrade
"test/test_seq.py" = ["E501"] ]

View file

@ -1,11 +1,11 @@
#!/usr/bin/env python #!/usr/bin/env python
import os import os
import sys import sys
from setuptools import setup, Extension
from setuptools import Extension, setup
from setuptools.command.build_ext import build_ext from setuptools.command.build_ext import build_ext
from setuptools.command.sdist import sdist from setuptools.command.sdist import sdist
PYPY = hasattr(sys, "pypy_version_info") PYPY = hasattr(sys, "pypy_version_info")

View file

@ -1,6 +1,6 @@
from pytest import raises from pytest import raises
from msgpack import packb, unpackb, Packer from msgpack import Packer, packb, unpackb
def test_unpack_buffer(): def test_unpack_buffer():

View file

@ -1,10 +1,11 @@
#!/usr/bin/env python #!/usr/bin/env python
from pytest import raises
from msgpack import packb, unpackb, Unpacker, FormatError, StackError, OutOfData
import datetime import datetime
from pytest import raises
from msgpack import FormatError, OutOfData, StackError, Unpacker, packb, unpackb
class DummyException(Exception): class DummyException(Exception):
pass pass

View file

@ -1,4 +1,5 @@
import array import array
import msgpack import msgpack
from msgpack import ExtType from msgpack import ExtType

View file

@ -2,14 +2,14 @@
import pytest import pytest
from msgpack import ( from msgpack import (
packb,
unpackb,
Packer,
Unpacker,
ExtType, ExtType,
Packer,
PackOverflowError, PackOverflowError,
PackValueError, PackValueError,
Unpacker,
UnpackValueError, UnpackValueError,
packb,
unpackb,
) )

View file

@ -1,6 +1,7 @@
#!/usr/bin/env python #!/usr/bin/env python
from array import array from array import array
from msgpack import packb, unpackb from msgpack import packb, unpackb

View file

@ -1,4 +1,4 @@
from msgpack import packb, unpackb, ExtType from msgpack import ExtType, packb, unpackb
def test_str8(): def test_str8():

View file

@ -1,6 +1,7 @@
#!/usr/bin/env python #!/usr/bin/env python
from pytest import raises from pytest import raises
from msgpack import packb, unpackb from msgpack import packb, unpackb

View file

@ -1,12 +1,12 @@
#!/usr/bin/env python #!/usr/bin/env python
import struct
from collections import OrderedDict from collections import OrderedDict
from io import BytesIO from io import BytesIO
import struct
import pytest import pytest
from msgpack import packb, unpackb, Unpacker, Packer from msgpack import Packer, Unpacker, packb, unpackb
def check(data, use_list=False): def check(data, use_list=False):

View file

@ -1,6 +1,6 @@
"""Test Unpacker's read_array_header and read_map_header methods""" """Test Unpacker's read_array_header and read_map_header methods"""
from msgpack import packb, Unpacker, OutOfData from msgpack import OutOfData, Unpacker, packb
UnexpectedTypeException = ValueError UnexpectedTypeException = ValueError

View file

@ -1,8 +1,8 @@
#!/usr/bin/env python # ruff: noqa: E501
# ignore line length limit for long comments
import io import io
import msgpack
import msgpack
binarydata = bytes(bytearray(range(256))) binarydata = bytes(bytearray(range(256)))

View file

@ -1,10 +1,11 @@
#!/usr/bin/env python #!/usr/bin/env python
import io import io
from msgpack import Unpacker, BufferFull
from msgpack import pack, packb
from msgpack.exceptions import OutOfData
from pytest import raises from pytest import raises
from msgpack import BufferFull, Unpacker, pack, packb
from msgpack.exceptions import OutOfData
def test_partialdata(): def test_partialdata():
unpacker = Unpacker() unpacker = Unpacker()

View file

@ -1,5 +1,6 @@
from collections import namedtuple from collections import namedtuple
from msgpack import packb, unpackb, ExtType
from msgpack import ExtType, packb, unpackb
def test_namedtuple(): def test_namedtuple():

View file

@ -1,8 +1,9 @@
#!/usr/bin/env python #!/usr/bin/env python
from msgpack import packb
from collections import namedtuple from collections import namedtuple
from msgpack import packb
class MyList(list): class MyList(list):
pass pass

View file

@ -1,5 +1,7 @@
import pytest
import datetime import datetime
import pytest
import msgpack import msgpack
from msgpack.ext import Timestamp from msgpack.ext import Timestamp

View file

@ -1,12 +1,9 @@
from io import BytesIO
import sys import sys
from msgpack import Unpacker, packb, OutOfData, ExtType from io import BytesIO
from pytest import raises, mark
try: from pytest import mark, raises
from itertools import izip as zip
except ImportError: from msgpack import ExtType, OutOfData, Unpacker, packb
pass
def test_unpack_array_header_from_file(): def test_unpack_array_header_from_file():