merged .py and .pyi

This commit is contained in:
Tim Riddermann 2023-07-18 15:38:40 +02:00
parent 1e7ced992d
commit 6b4a52e73a
2 changed files with 148 additions and 125 deletions

View file

@ -1,38 +1,170 @@
import binascii
import io
import typing as t
import pytest
from construct import *
from construct.lib import *
import construct_typed as cst
xfail = pytest.mark.xfail
skip = pytest.mark.skip
skipif = pytest.mark.skipif
import os, math, random, collections, itertools, io, hashlib, binascii
Buffer = t.Union[bytes, memoryview, bytearray]
ParsedType = t.TypeVar("ParsedType")
BuildTypes = t.TypeVar("BuildTypes")
ContainerType = t.TypeVar("ContainerType", bound=cst.TContainerMixin)
T = t.TypeVar("T")
from construct import *
from construct.lib import *
IdentType = t.TypeVar("IdentType")
class ZeroIO(io.BufferedIOBase):
def read(self, __size=None):
def read(self, __size: t.Optional[int] = None):
if __size is not None:
return bytes(__size)
else:
return bytes(0)
def read1(self, __size=0):
def read1(self, __size: int = 0):
return bytes(__size)
ident = lambda x: x
devzero = ZeroIO()
def ident(x: IdentType) -> IdentType:
return x
def raises(func, *args, **kw):
devzero: t.BinaryIO = ZeroIO() # type: ignore
def raises(
func: t.Callable[..., t.Any], *args: t.Any, **kw: t.Any
) -> t.Union[t.Any, Exception]:
try:
return func(*args, **kw)
except Exception as e:
return e.__class__
def common(format, datasample, objsample, sizesample=SizeofError, **kw):
@t.overload
def common(
format: cst.TStruct[ContainerType],
datasample: Buffer,
objsample: t.Union[ContainerType, t.Dict[str, t.Any]],
sizesample: t.Union[int, t.Type[Exception]] = ...,
**kw: t.Any
) -> None:
...
@t.overload
def common(
format: "Construct[ListContainer[ParsedType], t.Any]",
datasample: Buffer,
objsample: t.List[ParsedType],
sizesample: t.Union[int, t.Type[Exception]] = ...,
**kw: t.Any
) -> None:
...
@t.overload
def common(
format: "Construct[Container[t.Any], t.Any]",
datasample: Buffer,
objsample: t.Dict[str, t.Any],
sizesample: t.Union[int, t.Type[Exception]] = ...,
**kw: t.Any
) -> None:
...
@t.overload
def common(
format: "Construct[t.Union[EnumInteger, EnumIntegerString], t.Any]",
datasample: Buffer,
objsample: t.Union[int, str],
sizesample: t.Union[int, t.Type[Exception]] = ...,
**kw: t.Any
) -> None:
...
@t.overload
def common(
format: "Construct[HexDisplayedInteger, t.Any]",
datasample: Buffer,
objsample: t.Union[HexDisplayedInteger, int],
sizesample: t.Union[int, t.Type[Exception]] = ...,
**kw: t.Any
) -> None:
...
@t.overload
def common(
format: "Construct[HexDisplayedBytes, t.Any]",
datasample: Buffer,
objsample: t.Union[HexDisplayedBytes, bytes],
sizesample: t.Union[int, t.Type[Exception]] = ...,
**kw: t.Any
) -> None:
...
@t.overload
def common(
format: "Construct[HexDisplayedDict[str, t.Any], t.Any]",
datasample: Buffer,
objsample: t.Dict[str, t.Any],
sizesample: t.Union[int, t.Type[Exception]] = ...,
**kw: t.Any
) -> None:
...
@t.overload
def common(
format: "Construct[HexDumpDisplayedBytes, t.Any]",
datasample: Buffer,
objsample: t.Union[HexDumpDisplayedBytes, bytes],
sizesample: t.Union[int, t.Type[Exception]] = ...,
**kw: t.Any
) -> None:
...
@t.overload
def common(
format: "Construct[HexDumpDisplayedDict[str, t.Any], t.Any]",
datasample: Buffer,
objsample: t.Dict[str, t.Any],
sizesample: t.Union[int, t.Type[Exception]] = ...,
**kw: t.Any
) -> None:
...
@t.overload
def common(
format: "Construct[ParsedType, t.Any]",
datasample: Buffer,
objsample: ParsedType,
sizesample: t.Union[int, t.Type[Exception]] = ...,
**kw: t.Any
) -> None:
...
def common(
format: "Construct[t.Any, t.Any]",
datasample: Buffer,
objsample: t.Any,
sizesample: t.Union[int, t.Type[Exception]] = SizeofError,
**kw: t.Any
) -> None:
obj = format.parse(datasample, **kw)
assert obj == objsample
data = format.build(objsample, **kw)
@ -48,31 +180,31 @@ def common(format, datasample, objsample, sizesample=SizeofError, **kw):
assert size == sizesample
def setattrs(obj, **kwargs):
""" Set multiple named values of an object """
def setattrs(obj: T, **kwargs: t.Any) -> T:
"""Set multiple named values of an object"""
for name, value in kwargs.items():
setattr(obj, name, value)
return obj
def commonhex(format, hexdata):
def commonhex(format: "Construct[t.Any, t.Any]", hexdata: str):
commonbytes(format, binascii.unhexlify(hexdata))
def commondumpdeprecated(format, filename):
def commondumpdeprecated(format: "Construct[t.Any, t.Any]", filename: str):
filename = "tests/deprecated_gallery/blobs/" + filename
with open(filename, "rb") as f:
data = f.read()
commonbytes(format, data)
def commondump(format, filename):
def commondump(format: "Construct[t.Any, t.Any]", filename: str):
filename = "tests/gallery/blobs/" + filename
with open(filename, "rb") as f:
data = f.read()
commonbytes(format, data)
def commonbytes(format, data):
def commonbytes(format: "Construct[t.Any, t.Any]", data: bytes):
obj = format.parse(data)
data2 = format.build(obj)
format.build(obj)

View file

@ -1,109 +0,0 @@
import typing as t
from construct import *
from construct.lib import *
import construct_typed as cst
Buffer = t.Union[bytes, memoryview, bytearray]
ParsedType = t.TypeVar("ParsedType")
BuildTypes = t.TypeVar("BuildTypes")
ContainerType = t.TypeVar("ContainerType", bound=cst.TContainerMixin)
T = t.TypeVar("T")
IdentType = t.TypeVar("IdentType")
def ident(p1: IdentType) -> IdentType: ...
devzero: t.BinaryIO
def raises(
func: t.Callable[..., t.Any], *args: t.Any, **kw: t.Any
) -> t.Union[t.Any, Exception]: ...
@t.overload
def common(
format: cst.TStruct[ContainerType],
datasample: Buffer,
objsample: t.Union[ContainerType, t.Dict[str, t.Any]],
sizesample: t.Union[int, t.Type[Exception]] = ...,
**kw: t.Any
) -> None: ...
@t.overload
def common(
format: Construct[ListContainer[ParsedType], t.Any],
datasample: Buffer,
objsample: t.List[ParsedType],
sizesample: t.Union[int, t.Type[Exception]] = ...,
**kw: t.Any
) -> None: ...
@t.overload
def common(
format: Construct[Container[t.Any], t.Any],
datasample: Buffer,
objsample: t.Dict[str, t.Any],
sizesample: t.Union[int, t.Type[Exception]] = ...,
**kw: t.Any
) -> None: ...
@t.overload
def common(
format: Construct[t.Union[EnumInteger, EnumIntegerString], t.Any],
datasample: Buffer,
objsample: t.Union[int, str],
sizesample: t.Union[int, t.Type[Exception]] = ...,
**kw: t.Any
) -> None: ...
@t.overload
def common(
format: Construct[HexDisplayedInteger, t.Any],
datasample: Buffer,
objsample: t.Union[HexDisplayedInteger, int],
sizesample: t.Union[int, t.Type[Exception]] = ...,
**kw: t.Any
) -> None: ...
@t.overload
def common(
format: Construct[HexDisplayedBytes, t.Any],
datasample: Buffer,
objsample: t.Union[HexDisplayedBytes, bytes],
sizesample: t.Union[int, t.Type[Exception]] = ...,
**kw: t.Any
) -> None: ...
@t.overload
def common(
format: Construct[HexDisplayedDict[str, t.Any], t.Any],
datasample: Buffer,
objsample: t.Dict[str, t.Any],
sizesample: t.Union[int, t.Type[Exception]] = ...,
**kw: t.Any
) -> None: ...
@t.overload
def common(
format: Construct[HexDumpDisplayedBytes, t.Any],
datasample: Buffer,
objsample: t.Union[HexDumpDisplayedBytes, bytes],
sizesample: t.Union[int, t.Type[Exception]] = ...,
**kw: t.Any
) -> None: ...
@t.overload
def common(
format: Construct[HexDumpDisplayedDict[str, t.Any], t.Any],
datasample: Buffer,
objsample: t.Dict[str, t.Any],
sizesample: t.Union[int, t.Type[Exception]] = ...,
**kw: t.Any
) -> None: ...
@t.overload
def common(
format: Construct[ParsedType, t.Any],
datasample: Buffer,
objsample: ParsedType,
sizesample: t.Union[int, t.Type[Exception]] = ...,
**kw: t.Any
) -> None: ...
def setattrs(obj: T, **kwargs: t.Any) -> T: ...
def commonhex(format: Construct[t.Any, t.Any], hexdata: str) -> None: ...
def commondumpdeprecated(
format: Construct[t.Any, t.Any], filename: str
) -> None: ...
def commondump(format: Construct[t.Any, t.Any], filename: str) -> None: ...
def commonbytes(
format: Construct[ParsedType, t.Any], data: ParsedType
) -> None: ...