From 4ac65ff0ee72177243a3e8b04270161145cbd205 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Mon, 29 Sep 2025 22:00:06 -0400 Subject: [PATCH 01/98] chore: add build deps --- pyproject.toml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 080d07c..2edc694 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,7 @@ +[build-system] +requires = ["setuptools", "wheel", "mypy[mypyc]>=1.14.1,<1.18.3"] +build-backend = "setuptools.build_meta" + [tool.autoflake] exclude = "__init__.py" remove_all_unused_imports = true From acce3fc05c84bcd3588a2a7c335f2a4dfa343350 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Mon, 29 Sep 2025 22:03:55 -0400 Subject: [PATCH 02/98] Update setup.py --- setup.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/setup.py b/setup.py index 0028d8f..04fc12b 100644 --- a/setup.py +++ b/setup.py @@ -3,6 +3,7 @@ find_packages, setup, ) +from mypyc.build import mypycify extras_require = { "dev": [ @@ -38,11 +39,17 @@ long_description = readme.read() +if sys.version_info >= (3, 9): + ext_modules = mypycify(["faster_hexbytes/", "--strict", "--pretty"]) +else: + # we can't compile on python3.8 but we can still let the user install + ext_modules = [] + setup( - name="hexbytes", + name="faster_hexbytes", # *IMPORTANT*: Don't manually change the version here. See Contributing docs for the release process. version="1.3.1", - description="""hexbytes: Python `bytes` subclass that decodes hex, with a readable console output""", + description="""A faster fork of hexbytes: Python `bytes` subclass that decodes hex, with a readable console output. Implemented in C.""", long_description=long_description, long_description_content_type="text/markdown", author="The Ethereum Foundation", @@ -52,12 +59,13 @@ install_requires=[], python_requires=">=3.8, <4", extras_require=extras_require, - py_modules=["hexbytes"], + py_modules=["faster_hexbytes"], license="MIT", zip_safe=False, keywords="ethereum", packages=find_packages(exclude=["scripts", "scripts.*", "tests", "tests.*"]), - package_data={"hexbytes": ["py.typed"]}, + ext_modules=ext_modules, + package_data={"faster_hexbytes": ["py.typed"]}, classifiers=[ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", @@ -70,5 +78,6 @@ "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", ], ) From 95741981e7e0fdf2269bfb1c00a958da87c8888a Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Mon, 29 Sep 2025 22:04:45 -0400 Subject: [PATCH 03/98] Rename __init__.py to __init__.py --- {hexbytes => faster_hexbytes}/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {hexbytes => faster_hexbytes}/__init__.py (100%) diff --git a/hexbytes/__init__.py b/faster_hexbytes/__init__.py similarity index 100% rename from hexbytes/__init__.py rename to faster_hexbytes/__init__.py From c746be49665cf24e4172148909e63561ab1c6265 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Mon, 29 Sep 2025 22:05:07 -0400 Subject: [PATCH 04/98] Rename main.py to main.py --- {hexbytes => faster_hexbytes}/main.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {hexbytes => faster_hexbytes}/main.py (100%) diff --git a/hexbytes/main.py b/faster_hexbytes/main.py similarity index 100% rename from hexbytes/main.py rename to faster_hexbytes/main.py From f9ca755fe2f497b17b946e67926b2736fee00658 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Mon, 29 Sep 2025 22:05:25 -0400 Subject: [PATCH 05/98] Rename _utils.py to _utils.py --- {hexbytes => faster_hexbytes}/_utils.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {hexbytes => faster_hexbytes}/_utils.py (100%) diff --git a/hexbytes/_utils.py b/faster_hexbytes/_utils.py similarity index 100% rename from hexbytes/_utils.py rename to faster_hexbytes/_utils.py From 908ec37bb036fdf49125d8f14aab94a7536668e7 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Mon, 29 Sep 2025 22:05:40 -0400 Subject: [PATCH 06/98] Rename py.typed to py.typed --- faster_hexbytes/py.typed | 1 + hexbytes/py.typed | 0 2 files changed, 1 insertion(+) create mode 100644 faster_hexbytes/py.typed delete mode 100644 hexbytes/py.typed diff --git a/faster_hexbytes/py.typed b/faster_hexbytes/py.typed new file mode 100644 index 0000000..d3f5a12 --- /dev/null +++ b/faster_hexbytes/py.typed @@ -0,0 +1 @@ + diff --git a/hexbytes/py.typed b/hexbytes/py.typed deleted file mode 100644 index e69de29..0000000 From 77d2094a839d2700adc638f828e8e2050b0e798f Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Mon, 29 Sep 2025 22:06:11 -0400 Subject: [PATCH 07/98] Update test_hexbytes.py --- tests/core/test_hexbytes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/core/test_hexbytes.py b/tests/core/test_hexbytes.py index 3da3c39..9a196ea 100644 --- a/tests/core/test_hexbytes.py +++ b/tests/core/test_hexbytes.py @@ -11,7 +11,7 @@ strategies as st, ) -from hexbytes import ( +from faster_hexbytes import ( HexBytes, ) From fcac0b10c93668c6facb81c668cd2c159997fb30 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Mon, 29 Sep 2025 22:06:24 -0400 Subject: [PATCH 08/98] Update test_import_and_version.py --- tests/core/test_import_and_version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/core/test_import_and_version.py b/tests/core/test_import_and_version.py index 6807263..84b61da 100644 --- a/tests/core/test_import_and_version.py +++ b/tests/core/test_import_and_version.py @@ -1,4 +1,4 @@ def test_import_and_version(): - import hexbytes + import faster_hexbytes assert isinstance(hexbytes.__version__, str) From 390c77c5bbad6f912efe8ae2729aef9a1f6c7ec0 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Mon, 29 Sep 2025 22:08:47 -0400 Subject: [PATCH 09/98] Create compile.yaml --- .github/workflows/compile.yaml | 47 ++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 .github/workflows/compile.yaml diff --git a/.github/workflows/compile.yaml b/.github/workflows/compile.yaml new file mode 100644 index 0000000..dcda9f6 --- /dev/null +++ b/.github/workflows/compile.yaml @@ -0,0 +1,47 @@ +name: Compile + +on: + pull_request: + branches: + - master + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build-ubuntu: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + with: + # Check out the PR branch + ref: ${{ github.head_ref }} + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.13" + + - name: Install Faster Hexbytes + env: + MYPYC_STRICT_DUNDER_TYPING: 1 + run: pip install . + + - name: Check for changes + run: | + if [[ -n $(git status --porcelain) ]]; then + echo "changes_detected=true" >> $GITHUB_ENV + else + echo "changes_detected=false" >> $GITHUB_ENV + fi + + - name: Commit changes + if: env.changes_detected == 'true' + run: | + git config --local user.name "github-actions[bot]" + git config --local user.email "github-actions[bot]@users.noreply.github.com" + git add . + git commit -m "chore: compile C files for source control" + git push From 351021850c4ea35ee3f5aed1ead835f6625ae205 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Mon, 29 Sep 2025 22:09:58 -0400 Subject: [PATCH 10/98] Update compile.yaml --- .github/workflows/compile.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/compile.yaml b/.github/workflows/compile.yaml index dcda9f6..71baa09 100644 --- a/.github/workflows/compile.yaml +++ b/.github/workflows/compile.yaml @@ -4,6 +4,9 @@ on: pull_request: branches: - master + push: + branches: + - master concurrency: group: ${{ github.workflow }}-${{ github.ref }} From 648d247b60ebcfc3c638b3d82532fb64d964c69a Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Mon, 29 Sep 2025 22:11:41 -0400 Subject: [PATCH 11/98] Update setup.py --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index 04fc12b..83cea33 100644 --- a/setup.py +++ b/setup.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +import sys from setuptools import ( find_packages, setup, From f31d06c487af70c445d8911383f080a08f836e28 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Mon, 29 Sep 2025 22:14:03 -0400 Subject: [PATCH 12/98] Update main.py --- faster_hexbytes/main.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/faster_hexbytes/main.py b/faster_hexbytes/main.py index ca24783..fa25a61 100644 --- a/faster_hexbytes/main.py +++ b/faster_hexbytes/main.py @@ -8,6 +8,13 @@ overload, ) +from mypy_extensions import ( + mypyc_attr, +) +from typing_extensions import ( + Self, +) + from ._utils import ( to_bytes, ) @@ -20,6 +27,7 @@ BytesLike = Union[bool, bytearray, bytes, int, str, memoryview] +@mypy_extensions.mypyc_attr(native_class=False) class HexBytes(bytes): """ Thin wrapper around the python built-in :class:`bytes` class. @@ -31,9 +39,9 @@ class HexBytes(bytes): 3. ``to_0x_hex`` returns a 0x-prefixed hex string """ - def __new__(cls: Type[bytes], val: BytesLike) -> "HexBytes": + def __new__(cls, val: BytesLike) -> Self: bytesval = to_bytes(val) - return cast(HexBytes, super().__new__(cls, bytesval)) # type: ignore # https://github.com/python/typeshed/issues/2630 # noqa: E501 + return super().__new__(cls, bytesval) @overload def __getitem__(self, key: "SupportsIndex") -> int: # noqa: F811 From 8adfdc2a5d47b3e5ee9716df552d496695e6fab7 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Mon, 29 Sep 2025 22:14:22 -0400 Subject: [PATCH 13/98] Update main.py --- faster_hexbytes/main.py | 1 - 1 file changed, 1 deletion(-) diff --git a/faster_hexbytes/main.py b/faster_hexbytes/main.py index fa25a61..8efcf9d 100644 --- a/faster_hexbytes/main.py +++ b/faster_hexbytes/main.py @@ -4,7 +4,6 @@ Tuple, Type, Union, - cast, overload, ) From b749aa54a0a10f4316851dac22c1089ca8b5b0d8 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Mon, 29 Sep 2025 22:15:26 -0400 Subject: [PATCH 14/98] Update main.py --- faster_hexbytes/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faster_hexbytes/main.py b/faster_hexbytes/main.py index 8efcf9d..a91ce49 100644 --- a/faster_hexbytes/main.py +++ b/faster_hexbytes/main.py @@ -26,7 +26,7 @@ BytesLike = Union[bool, bytearray, bytes, int, str, memoryview] -@mypy_extensions.mypyc_attr(native_class=False) +@mypyc_attr(native_class=False) class HexBytes(bytes): """ Thin wrapper around the python built-in :class:`bytes` class. From d5aa75800c333d2d8278434bdaa12a74e27e3286 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Mon, 29 Sep 2025 22:17:48 -0400 Subject: [PATCH 15/98] Update main.py --- faster_hexbytes/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faster_hexbytes/main.py b/faster_hexbytes/main.py index a91ce49..b987a6c 100644 --- a/faster_hexbytes/main.py +++ b/faster_hexbytes/main.py @@ -40,7 +40,7 @@ class HexBytes(bytes): def __new__(cls, val: BytesLike) -> Self: bytesval = to_bytes(val) - return super().__new__(cls, bytesval) + return bytes.__new__(cls, bytesval) @overload def __getitem__(self, key: "SupportsIndex") -> int: # noqa: F811 From 28398268ded846b8443cfcfd31db6b8fdc0fa79c Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Mon, 29 Sep 2025 22:20:34 -0400 Subject: [PATCH 16/98] Update .gitignore --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 2eb3d43..c3a466e 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,8 @@ *.egg *.egg-info dist -build +build/**/*.py +build/**/*.typed .build eggs .eggs From 512b58c537f8228dc2be1b82b39206ca77c2e4ba Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 30 Sep 2025 02:20:55 +0000 Subject: [PATCH 17/98] chore: compile C files for source control --- build/__native_6a32f4913d613d6a7ddf.c | 2975 +++++++++++++++++ build/__native_6a32f4913d613d6a7ddf.h | 72 + .../__native_internal_6a32f4913d613d6a7ddf.h | 75 + build/faster_hexbytes.c | 21 + build/faster_hexbytes/_utils.c | 21 + build/faster_hexbytes/main.c | 21 + build/ops.txt | 1375 ++++++++ .../build/__native_6a32f4913d613d6a7ddf.o | Bin 0 -> 342400 bytes .../build/faster_hexbytes.o | Bin 0 -> 5296 bytes .../build/faster_hexbytes/_utils.o | Bin 0 -> 5296 bytes .../build/faster_hexbytes/main.o | Bin 0 -> 5280 bytes 11 files changed, 4560 insertions(+) create mode 100644 build/__native_6a32f4913d613d6a7ddf.c create mode 100644 build/__native_6a32f4913d613d6a7ddf.h create mode 100644 build/__native_internal_6a32f4913d613d6a7ddf.h create mode 100644 build/faster_hexbytes.c create mode 100644 build/faster_hexbytes/_utils.c create mode 100644 build/faster_hexbytes/main.c create mode 100644 build/ops.txt create mode 100644 build/temp.linux-x86_64-cpython-313/build/__native_6a32f4913d613d6a7ddf.o create mode 100644 build/temp.linux-x86_64-cpython-313/build/faster_hexbytes.o create mode 100644 build/temp.linux-x86_64-cpython-313/build/faster_hexbytes/_utils.o create mode 100644 build/temp.linux-x86_64-cpython-313/build/faster_hexbytes/main.o diff --git a/build/__native_6a32f4913d613d6a7ddf.c b/build/__native_6a32f4913d613d6a7ddf.c new file mode 100644 index 0000000..136c015 --- /dev/null +++ b/build/__native_6a32f4913d613d6a7ddf.c @@ -0,0 +1,2975 @@ +#include "init.c" +#include "getargs.c" +#include "getargsfast.c" +#include "int_ops.c" +#include "float_ops.c" +#include "str_ops.c" +#include "bytes_ops.c" +#include "list_ops.c" +#include "dict_ops.c" +#include "set_ops.c" +#include "tuple_ops.c" +#include "exc_ops.c" +#include "misc_ops.c" +#include "generic_ops.c" +#include "pythonsupport.c" +#include "__native_6a32f4913d613d6a7ddf.h" +#include "__native_internal_6a32f4913d613d6a7ddf.h" +static PyMethodDef faster_hexbytesmodule_methods[] = { + {NULL, NULL, 0, NULL} +}; + +int CPyExec_faster_hexbytes(PyObject *module) +{ + PyObject* modname = NULL; + modname = PyObject_GetAttrString((PyObject *)CPyModule_faster_hexbytes__internal, "__name__"); + CPyStatic_faster_hexbytes___globals = PyModule_GetDict(CPyModule_faster_hexbytes__internal); + if (unlikely(CPyStatic_faster_hexbytes___globals == NULL)) + goto fail; + if (CPyGlobalsInit() < 0) + goto fail; + char result = CPyDef_faster_hexbytes_____top_level__(); + if (result == 2) + goto fail; + Py_DECREF(modname); + return 0; + fail: + Py_CLEAR(CPyModule_faster_hexbytes__internal); + Py_CLEAR(modname); + return -1; +} +static struct PyModuleDef faster_hexbytesmodule = { + PyModuleDef_HEAD_INIT, + "faster_hexbytes", + NULL, /* docstring */ + 0, /* size of per-interpreter state of the module */ + faster_hexbytesmodule_methods, + NULL, +}; + +PyObject *CPyInit_faster_hexbytes(void) +{ + if (CPyModule_faster_hexbytes__internal) { + Py_INCREF(CPyModule_faster_hexbytes__internal); + return CPyModule_faster_hexbytes__internal; + } + CPyModule_faster_hexbytes__internal = PyModule_Create(&faster_hexbytesmodule); + if (unlikely(CPyModule_faster_hexbytes__internal == NULL)) + goto fail; + if (CPyExec_faster_hexbytes(CPyModule_faster_hexbytes__internal) != 0) + goto fail; + return CPyModule_faster_hexbytes__internal; + fail: + return NULL; +} + +char CPyDef_faster_hexbytes_____top_level__(void) { + PyObject *cpy_r_r0; + PyObject *cpy_r_r1; + char cpy_r_r2; + PyObject *cpy_r_r3; + PyObject *cpy_r_r4; + PyObject *cpy_r_r5; + PyObject *cpy_r_r6; + PyObject *cpy_r_r7; + PyObject *cpy_r_r8; + PyObject *cpy_r_r9; + PyObject *cpy_r_r10; + PyObject *cpy_r_r11; + PyObject *cpy_r_r12; + PyObject *cpy_r_r13; + PyObject *cpy_r_r14; + PyObject *cpy_r_r15; + CPyPtr cpy_r_r16; + CPyPtr cpy_r_r17; + PyObject *cpy_r_r18; + PyObject *cpy_r_r19; + int32_t cpy_r_r20; + char cpy_r_r21; + PyObject *cpy_r_r22; + PyObject *cpy_r_r23; + PyObject *cpy_r_r24; + PyObject *cpy_r_r25; + PyObject **cpy_r_r27; + PyObject *cpy_r_r28; + PyObject *cpy_r_r29; + PyObject *cpy_r_r30; + PyObject *cpy_r_r31; + int32_t cpy_r_r32; + char cpy_r_r33; + char cpy_r_r34; + cpy_r_r0 = CPyModule_builtins; + cpy_r_r1 = (PyObject *)&_Py_NoneStruct; + cpy_r_r2 = cpy_r_r0 != cpy_r_r1; + if (cpy_r_r2) goto CPyL3; + cpy_r_r3 = CPyStatics[3]; /* 'builtins' */ + cpy_r_r4 = PyImport_Import(cpy_r_r3); + if (unlikely(cpy_r_r4 == NULL)) { + CPy_AddTraceback("faster_hexbytes/__init__.py", "", -1, CPyStatic_faster_hexbytes___globals); + goto CPyL12; + } + CPyModule_builtins = cpy_r_r4; + CPy_INCREF(CPyModule_builtins); + CPy_DECREF(cpy_r_r4); +CPyL3: ; + cpy_r_r5 = CPyStatics[67]; /* ('version',) */ + cpy_r_r6 = CPyStatics[68]; /* ('__version',) */ + cpy_r_r7 = CPyStatics[6]; /* 'importlib.metadata' */ + cpy_r_r8 = CPyStatic_faster_hexbytes___globals; + cpy_r_r9 = CPyImport_ImportFromMany(cpy_r_r7, cpy_r_r5, cpy_r_r6, cpy_r_r8); + if (unlikely(cpy_r_r9 == NULL)) { + CPy_AddTraceback("faster_hexbytes/__init__.py", "", 1, CPyStatic_faster_hexbytes___globals); + goto CPyL12; + } + CPyModule_importlib___metadata = cpy_r_r9; + CPy_INCREF(CPyModule_importlib___metadata); + CPy_DECREF(cpy_r_r9); + cpy_r_r10 = CPyStatics[69]; /* ('HexBytes',) */ + cpy_r_r11 = CPyStatics[8]; /* 'faster_hexbytes.main' */ + cpy_r_r12 = CPyStatic_faster_hexbytes___globals; + cpy_r_r13 = CPyImport_ImportFromMany(cpy_r_r11, cpy_r_r10, cpy_r_r10, cpy_r_r12); + if (unlikely(cpy_r_r13 == NULL)) { + CPy_AddTraceback("faster_hexbytes/__init__.py", "", 5, CPyStatic_faster_hexbytes___globals); + goto CPyL12; + } + CPyModule_faster_hexbytes___main = cpy_r_r13; + CPy_INCREF(CPyModule_faster_hexbytes___main); + CPy_DECREF(cpy_r_r13); + cpy_r_r14 = CPyStatics[7]; /* 'HexBytes' */ + cpy_r_r15 = PyList_New(1); + if (unlikely(cpy_r_r15 == NULL)) { + CPy_AddTraceback("faster_hexbytes/__init__.py", "", 9, CPyStatic_faster_hexbytes___globals); + goto CPyL12; + } + cpy_r_r16 = (CPyPtr)&((PyListObject *)cpy_r_r15)->ob_item; + cpy_r_r17 = *(CPyPtr *)cpy_r_r16; + CPy_INCREF(cpy_r_r14); + *(PyObject * *)cpy_r_r17 = cpy_r_r14; + cpy_r_r18 = CPyStatic_faster_hexbytes___globals; + cpy_r_r19 = CPyStatics[9]; /* '__all__' */ + cpy_r_r20 = CPyDict_SetItem(cpy_r_r18, cpy_r_r19, cpy_r_r15); + CPy_DECREF_NO_IMM(cpy_r_r15); + cpy_r_r21 = cpy_r_r20 >= 0; + if (unlikely(!cpy_r_r21)) { + CPy_AddTraceback("faster_hexbytes/__init__.py", "", 9, CPyStatic_faster_hexbytes___globals); + goto CPyL12; + } + cpy_r_r22 = CPyStatics[10]; /* 'hexbytes' */ + cpy_r_r23 = CPyStatic_faster_hexbytes___globals; + cpy_r_r24 = CPyStatics[5]; /* '__version' */ + cpy_r_r25 = CPyDict_GetItem(cpy_r_r23, cpy_r_r24); + if (unlikely(cpy_r_r25 == NULL)) { + CPy_AddTraceback("faster_hexbytes/__init__.py", "", 11, CPyStatic_faster_hexbytes___globals); + goto CPyL12; + } + PyObject *cpy_r_r26[1] = {cpy_r_r22}; + cpy_r_r27 = (PyObject **)&cpy_r_r26; + cpy_r_r28 = PyObject_Vectorcall(cpy_r_r25, cpy_r_r27, 1, 0); + CPy_DECREF(cpy_r_r25); + if (unlikely(cpy_r_r28 == NULL)) { + CPy_AddTraceback("faster_hexbytes/__init__.py", "", 11, CPyStatic_faster_hexbytes___globals); + goto CPyL12; + } + if (likely(PyUnicode_Check(cpy_r_r28))) + cpy_r_r29 = cpy_r_r28; + else { + CPy_TypeErrorTraceback("faster_hexbytes/__init__.py", "", 11, CPyStatic_faster_hexbytes___globals, "str", cpy_r_r28); + goto CPyL12; + } + cpy_r_r30 = CPyStatic_faster_hexbytes___globals; + cpy_r_r31 = CPyStatics[11]; /* '__version__' */ + cpy_r_r32 = CPyDict_SetItem(cpy_r_r30, cpy_r_r31, cpy_r_r29); + CPy_DECREF(cpy_r_r29); + cpy_r_r33 = cpy_r_r32 >= 0; + if (unlikely(!cpy_r_r33)) { + CPy_AddTraceback("faster_hexbytes/__init__.py", "", 11, CPyStatic_faster_hexbytes___globals); + goto CPyL12; + } + return 1; +CPyL12: ; + cpy_r_r34 = 2; + return cpy_r_r34; +} +static PyMethodDef _utilsmodule_methods[] = { + {"to_bytes", (PyCFunction)CPyPy__utils___to_bytes, METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("to_bytes(val)\n--\n\n") /* docstring */}, + {"hexstr_to_bytes", (PyCFunction)CPyPy__utils___hexstr_to_bytes, METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("hexstr_to_bytes(hexstr)\n--\n\n") /* docstring */}, + {NULL, NULL, 0, NULL} +}; + +int CPyExec_faster_hexbytes____utils(PyObject *module) +{ + PyObject* modname = NULL; + modname = PyObject_GetAttrString((PyObject *)CPyModule_faster_hexbytes____utils__internal, "__name__"); + CPyStatic__utils___globals = PyModule_GetDict(CPyModule_faster_hexbytes____utils__internal); + if (unlikely(CPyStatic__utils___globals == NULL)) + goto fail; + if (CPyGlobalsInit() < 0) + goto fail; + char result = CPyDef__utils_____top_level__(); + if (result == 2) + goto fail; + Py_DECREF(modname); + return 0; + fail: + Py_CLEAR(CPyModule_faster_hexbytes____utils__internal); + Py_CLEAR(modname); + return -1; +} +static struct PyModuleDef _utilsmodule = { + PyModuleDef_HEAD_INIT, + "faster_hexbytes._utils", + NULL, /* docstring */ + 0, /* size of per-interpreter state of the module */ + _utilsmodule_methods, + NULL, +}; + +PyObject *CPyInit_faster_hexbytes____utils(void) +{ + if (CPyModule_faster_hexbytes____utils__internal) { + Py_INCREF(CPyModule_faster_hexbytes____utils__internal); + return CPyModule_faster_hexbytes____utils__internal; + } + CPyModule_faster_hexbytes____utils__internal = PyModule_Create(&_utilsmodule); + if (unlikely(CPyModule_faster_hexbytes____utils__internal == NULL)) + goto fail; + if (CPyExec_faster_hexbytes____utils(CPyModule_faster_hexbytes____utils__internal) != 0) + goto fail; + return CPyModule_faster_hexbytes____utils__internal; + fail: + return NULL; +} + +PyObject *CPyDef__utils___to_bytes(PyObject *cpy_r_val) { + char cpy_r_r0; + PyObject *cpy_r_r1; + char cpy_r_r2; + PyObject *cpy_r_r3; + PyObject *cpy_r_r4; + char cpy_r_r5; + PyObject *cpy_r_r6; + PyObject **cpy_r_r8; + PyObject *cpy_r_r9; + PyObject *cpy_r_r10; + char cpy_r_r11; + char cpy_r_r12; + PyObject *cpy_r_r13; + PyObject *cpy_r_r14; + PyObject *cpy_r_r15; + char cpy_r_r16; + CPyTagged cpy_r_r17; + int64_t cpy_r_r18; + char cpy_r_r19; + int64_t cpy_r_r20; + char cpy_r_r21; + char cpy_r_r22; + char cpy_r_r23; + char cpy_r_r24; + PyObject *cpy_r_r25; + CPyTagged cpy_r_r26; + PyObject *cpy_r_r27; + PyObject *cpy_r_r28; + PyObject *cpy_r_r29; + PyObject *cpy_r_r30; + PyObject *cpy_r_r31; + PyObject *cpy_r_r32; + PyObject **cpy_r_r34; + PyObject *cpy_r_r35; + CPyTagged cpy_r_r36; + PyObject *cpy_r_r37; + PyObject *cpy_r_r38; + PyObject *cpy_r_r39; + PyObject *cpy_r_r40; + PyObject **cpy_r_r42; + PyObject *cpy_r_r43; + PyObject *cpy_r_r44; + PyObject *cpy_r_r45; + PyObject *cpy_r_r46; + PyObject *cpy_r_r47; + PyObject *cpy_r_r48; + int32_t cpy_r_r49; + char cpy_r_r50; + char cpy_r_r51; + PyObject *cpy_r_r52; + PyObject **cpy_r_r54; + PyObject *cpy_r_r55; + PyObject *cpy_r_r56; + PyObject *cpy_r_r57; + PyObject *cpy_r_r58; + PyObject *cpy_r_r59; + PyObject *cpy_r_r60; + PyObject *cpy_r_r61; + PyObject **cpy_r_r63; + PyObject *cpy_r_r64; + PyObject *cpy_r_r65; + PyObject *cpy_r_r66; + PyObject *cpy_r_r67; + PyObject *cpy_r_r68; + PyObject *cpy_r_r69; + PyObject **cpy_r_r71; + PyObject *cpy_r_r72; + PyObject *cpy_r_r73; + PyObject *cpy_r_r74; + CPyPtr cpy_r_r75; + CPyPtr cpy_r_r76; + CPyPtr cpy_r_r77; + CPyPtr cpy_r_r78; + CPyPtr cpy_r_r79; + CPyPtr cpy_r_r80; + PyObject *cpy_r_r81; + PyObject *cpy_r_r82; + PyObject *cpy_r_r83; + PyObject *cpy_r_r84; + PyObject **cpy_r_r86; + PyObject *cpy_r_r87; + PyObject *cpy_r_r88; + cpy_r_r0 = PyBytes_Check(cpy_r_val); + if (!cpy_r_r0) goto CPyL3; + CPy_INCREF(cpy_r_val); + if (likely(PyBytes_Check(cpy_r_val) || PyByteArray_Check(cpy_r_val))) + cpy_r_r1 = cpy_r_val; + else { + CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "to_bytes", 15, CPyStatic__utils___globals, "bytes", cpy_r_val); + goto CPyL51; + } + return cpy_r_r1; +CPyL3: ; + cpy_r_r2 = PyUnicode_Check(cpy_r_val); + if (!cpy_r_r2) goto CPyL7; + CPy_INCREF(cpy_r_val); + if (likely(PyUnicode_Check(cpy_r_val))) + cpy_r_r3 = cpy_r_val; + else { + CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "to_bytes", 17, CPyStatic__utils___globals, "str", cpy_r_val); + goto CPyL51; + } + cpy_r_r4 = CPyDef__utils___hexstr_to_bytes(cpy_r_r3); + CPy_DECREF(cpy_r_r3); + if (unlikely(cpy_r_r4 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 17, CPyStatic__utils___globals); + goto CPyL51; + } + return cpy_r_r4; +CPyL7: ; + cpy_r_r5 = PyByteArray_Check(cpy_r_val); + if (!cpy_r_r5) goto CPyL11; + cpy_r_r6 = (PyObject *)&PyBytes_Type; + PyObject *cpy_r_r7[1] = {cpy_r_val}; + cpy_r_r8 = (PyObject **)&cpy_r_r7; + cpy_r_r9 = PyObject_Vectorcall(cpy_r_r6, cpy_r_r8, 1, 0); + if (unlikely(cpy_r_r9 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 19, CPyStatic__utils___globals); + goto CPyL51; + } + if (likely(PyBytes_Check(cpy_r_r9) || PyByteArray_Check(cpy_r_r9))) + cpy_r_r10 = cpy_r_r9; + else { + CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "to_bytes", 19, CPyStatic__utils___globals, "bytes", cpy_r_r9); + goto CPyL51; + } + return cpy_r_r10; +CPyL11: ; + cpy_r_r11 = PyBool_Check(cpy_r_val); + if (!cpy_r_r11) goto CPyL17; + if (unlikely(!PyBool_Check(cpy_r_val))) { + CPy_TypeError("bool", cpy_r_val); cpy_r_r12 = 2; + } else + cpy_r_r12 = cpy_r_val == Py_True; + if (unlikely(cpy_r_r12 == 2)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 21, CPyStatic__utils___globals); + goto CPyL51; + } + if (!cpy_r_r12) goto CPyL15; + cpy_r_r13 = CPyStatics[65]; /* b'\x01' */ + CPy_INCREF(cpy_r_r13); + cpy_r_r14 = cpy_r_r13; + goto CPyL16; +CPyL15: ; + cpy_r_r15 = CPyStatics[66]; /* b'\x00' */ + CPy_INCREF(cpy_r_r15); + cpy_r_r14 = cpy_r_r15; +CPyL16: ; + return cpy_r_r14; +CPyL17: ; + cpy_r_r16 = PyLong_Check(cpy_r_val); + if (!cpy_r_r16) goto CPyL37; + if (likely(PyLong_Check(cpy_r_val))) + cpy_r_r17 = CPyTagged_FromObject(cpy_r_val); + else { + CPy_TypeError("int", cpy_r_val); cpy_r_r17 = CPY_INT_TAG; + } + if (unlikely(cpy_r_r17 == CPY_INT_TAG)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 25, CPyStatic__utils___globals); + goto CPyL51; + } + cpy_r_r18 = cpy_r_r17 & 1; + cpy_r_r19 = cpy_r_r18 != 0; + if (cpy_r_r19) goto CPyL21; + cpy_r_r20 = 0 & 1; + cpy_r_r21 = cpy_r_r20 != 0; + if (!cpy_r_r21) goto CPyL22; +CPyL21: ; + cpy_r_r22 = CPyTagged_IsLt_(cpy_r_r17, 0); + cpy_r_r23 = cpy_r_r22; + goto CPyL23; +CPyL22: ; + cpy_r_r24 = (Py_ssize_t)cpy_r_r17 < (Py_ssize_t)0; + cpy_r_r23 = cpy_r_r24; +CPyL23: ; + CPyTagged_DECREF(cpy_r_r17); + if (!cpy_r_r23) goto CPyL31; + cpy_r_r25 = CPyStatics[12]; /* 'Cannot convert negative integer ' */ + if (likely(PyLong_Check(cpy_r_val))) + cpy_r_r26 = CPyTagged_FromObject(cpy_r_val); + else { + CPy_TypeError("int", cpy_r_val); cpy_r_r26 = CPY_INT_TAG; + } + if (unlikely(cpy_r_r26 == CPY_INT_TAG)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 26, CPyStatic__utils___globals); + goto CPyL51; + } + cpy_r_r27 = CPyTagged_Str(cpy_r_r26); + CPyTagged_DECREF(cpy_r_r26); + if (unlikely(cpy_r_r27 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 26, CPyStatic__utils___globals); + goto CPyL51; + } + cpy_r_r28 = CPyStatics[13]; /* ' to bytes' */ + cpy_r_r29 = CPyStr_Build(3, cpy_r_r25, cpy_r_r27, cpy_r_r28); + CPy_DECREF(cpy_r_r27); + if (unlikely(cpy_r_r29 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 26, CPyStatic__utils___globals); + goto CPyL51; + } + cpy_r_r30 = CPyModule_builtins; + cpy_r_r31 = CPyStatics[14]; /* 'ValueError' */ + cpy_r_r32 = CPyObject_GetAttr(cpy_r_r30, cpy_r_r31); + if (unlikely(cpy_r_r32 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 26, CPyStatic__utils___globals); + goto CPyL52; + } + PyObject *cpy_r_r33[1] = {cpy_r_r29}; + cpy_r_r34 = (PyObject **)&cpy_r_r33; + cpy_r_r35 = PyObject_Vectorcall(cpy_r_r32, cpy_r_r34, 1, 0); + CPy_DECREF(cpy_r_r32); + if (unlikely(cpy_r_r35 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 26, CPyStatic__utils___globals); + goto CPyL52; + } + CPy_DECREF(cpy_r_r29); + CPy_Raise(cpy_r_r35); + CPy_DECREF(cpy_r_r35); + if (unlikely(!0)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 26, CPyStatic__utils___globals); + goto CPyL51; + } + CPy_Unreachable(); +CPyL31: ; + if (likely(PyLong_Check(cpy_r_val))) + cpy_r_r36 = CPyTagged_FromObject(cpy_r_val); + else { + CPy_TypeError("int", cpy_r_val); cpy_r_r36 = CPY_INT_TAG; + } + if (unlikely(cpy_r_r36 == CPY_INT_TAG)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 28, CPyStatic__utils___globals); + goto CPyL51; + } + cpy_r_r37 = CPyModule_builtins; + cpy_r_r38 = CPyStatics[15]; /* 'hex' */ + cpy_r_r39 = CPyObject_GetAttr(cpy_r_r37, cpy_r_r38); + if (unlikely(cpy_r_r39 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 28, CPyStatic__utils___globals); + goto CPyL53; + } + cpy_r_r40 = CPyTagged_StealAsObject(cpy_r_r36); + PyObject *cpy_r_r41[1] = {cpy_r_r40}; + cpy_r_r42 = (PyObject **)&cpy_r_r41; + cpy_r_r43 = PyObject_Vectorcall(cpy_r_r39, cpy_r_r42, 1, 0); + CPy_DECREF(cpy_r_r39); + if (unlikely(cpy_r_r43 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 28, CPyStatic__utils___globals); + goto CPyL54; + } + CPy_DECREF(cpy_r_r40); + if (likely(PyUnicode_Check(cpy_r_r43))) + cpy_r_r44 = cpy_r_r43; + else { + CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "to_bytes", 28, CPyStatic__utils___globals, "str", cpy_r_r43); + goto CPyL51; + } + cpy_r_r45 = CPyDef__utils___to_bytes(cpy_r_r44); + CPy_DECREF(cpy_r_r44); + if (unlikely(cpy_r_r45 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 28, CPyStatic__utils___globals); + goto CPyL51; + } + return cpy_r_r45; +CPyL37: ; + cpy_r_r46 = CPyModule_builtins; + cpy_r_r47 = CPyStatics[16]; /* 'memoryview' */ + cpy_r_r48 = CPyObject_GetAttr(cpy_r_r46, cpy_r_r47); + if (unlikely(cpy_r_r48 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 29, CPyStatic__utils___globals); + goto CPyL51; + } + cpy_r_r49 = PyObject_IsInstance(cpy_r_val, cpy_r_r48); + CPy_DECREF(cpy_r_r48); + cpy_r_r50 = cpy_r_r49 >= 0; + if (unlikely(!cpy_r_r50)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 29, CPyStatic__utils___globals); + goto CPyL51; + } + cpy_r_r51 = cpy_r_r49; + if (!cpy_r_r51) goto CPyL43; + cpy_r_r52 = (PyObject *)&PyBytes_Type; + PyObject *cpy_r_r53[1] = {cpy_r_val}; + cpy_r_r54 = (PyObject **)&cpy_r_r53; + cpy_r_r55 = PyObject_Vectorcall(cpy_r_r52, cpy_r_r54, 1, 0); + if (unlikely(cpy_r_r55 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 30, CPyStatic__utils___globals); + goto CPyL51; + } + if (likely(PyBytes_Check(cpy_r_r55) || PyByteArray_Check(cpy_r_r55))) + cpy_r_r56 = cpy_r_r55; + else { + CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "to_bytes", 30, CPyStatic__utils___globals, "bytes", cpy_r_r55); + goto CPyL51; + } + return cpy_r_r56; +CPyL43: ; + cpy_r_r57 = CPyStatics[17]; /* '' */ + cpy_r_r58 = CPyStatics[18]; /* 'Cannot convert ' */ + cpy_r_r59 = CPyStatics[19]; /* '{!r:{}}' */ + cpy_r_r60 = CPyStatics[17]; /* '' */ + cpy_r_r61 = CPyStatics[20]; /* 'format' */ + PyObject *cpy_r_r62[3] = {cpy_r_r59, cpy_r_val, cpy_r_r60}; + cpy_r_r63 = (PyObject **)&cpy_r_r62; + cpy_r_r64 = PyObject_VectorcallMethod(cpy_r_r61, cpy_r_r63, 9223372036854775811ULL, 0); + if (unlikely(cpy_r_r64 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals); + goto CPyL51; + } + cpy_r_r65 = CPyStatics[21]; /* ' of type ' */ + cpy_r_r66 = CPyStatics[22]; /* '{:{}}' */ + cpy_r_r67 = CPy_TYPE(cpy_r_val); + cpy_r_r68 = CPyStatics[17]; /* '' */ + cpy_r_r69 = CPyStatics[20]; /* 'format' */ + PyObject *cpy_r_r70[3] = {cpy_r_r66, cpy_r_r67, cpy_r_r68}; + cpy_r_r71 = (PyObject **)&cpy_r_r70; + cpy_r_r72 = PyObject_VectorcallMethod(cpy_r_r69, cpy_r_r71, 9223372036854775811ULL, 0); + if (unlikely(cpy_r_r72 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals); + goto CPyL55; + } + CPy_DECREF(cpy_r_r67); + cpy_r_r73 = CPyStatics[13]; /* ' to bytes' */ + cpy_r_r74 = PyList_New(5); + if (unlikely(cpy_r_r74 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals); + goto CPyL56; + } + cpy_r_r75 = (CPyPtr)&((PyListObject *)cpy_r_r74)->ob_item; + cpy_r_r76 = *(CPyPtr *)cpy_r_r75; + CPy_INCREF(cpy_r_r58); + *(PyObject * *)cpy_r_r76 = cpy_r_r58; + cpy_r_r77 = cpy_r_r76 + 8; + *(PyObject * *)cpy_r_r77 = cpy_r_r64; + CPy_INCREF(cpy_r_r65); + cpy_r_r78 = cpy_r_r76 + 16; + *(PyObject * *)cpy_r_r78 = cpy_r_r65; + cpy_r_r79 = cpy_r_r76 + 24; + *(PyObject * *)cpy_r_r79 = cpy_r_r72; + CPy_INCREF(cpy_r_r73); + cpy_r_r80 = cpy_r_r76 + 32; + *(PyObject * *)cpy_r_r80 = cpy_r_r73; + cpy_r_r81 = PyUnicode_Join(cpy_r_r57, cpy_r_r74); + CPy_DECREF_NO_IMM(cpy_r_r74); + if (unlikely(cpy_r_r81 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals); + goto CPyL51; + } + cpy_r_r82 = CPyModule_builtins; + cpy_r_r83 = CPyStatics[23]; /* 'TypeError' */ + cpy_r_r84 = CPyObject_GetAttr(cpy_r_r82, cpy_r_r83); + if (unlikely(cpy_r_r84 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals); + goto CPyL57; + } + PyObject *cpy_r_r85[1] = {cpy_r_r81}; + cpy_r_r86 = (PyObject **)&cpy_r_r85; + cpy_r_r87 = PyObject_Vectorcall(cpy_r_r84, cpy_r_r86, 1, 0); + CPy_DECREF(cpy_r_r84); + if (unlikely(cpy_r_r87 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals); + goto CPyL57; + } + CPy_DECREF(cpy_r_r81); + CPy_Raise(cpy_r_r87); + CPy_DECREF(cpy_r_r87); + if (unlikely(!0)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals); + goto CPyL51; + } + CPy_Unreachable(); +CPyL51: ; + cpy_r_r88 = NULL; + return cpy_r_r88; +CPyL52: ; + CPy_DecRef(cpy_r_r29); + goto CPyL51; +CPyL53: ; + CPyTagged_DecRef(cpy_r_r36); + goto CPyL51; +CPyL54: ; + CPy_DecRef(cpy_r_r40); + goto CPyL51; +CPyL55: ; + CPy_DecRef(cpy_r_r64); + CPy_DecRef(cpy_r_r67); + goto CPyL51; +CPyL56: ; + CPy_DecRef(cpy_r_r64); + CPy_DecRef(cpy_r_r72); + goto CPyL51; +CPyL57: ; + CPy_DecRef(cpy_r_r81); + goto CPyL51; +} + +PyObject *CPyPy__utils___to_bytes(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + static const char * const kwlist[] = {"val", 0}; + static CPyArg_Parser parser = {"O:to_bytes", kwlist, 0}; + PyObject *obj_val; + if (!CPyArg_ParseStackAndKeywordsOneArg(args, nargs, kwnames, &parser, &obj_val)) { + return NULL; + } + PyObject *arg_val; + if (PyBool_Check(obj_val)) + arg_val = obj_val; + else { + arg_val = NULL; + } + if (arg_val != NULL) goto __LL1; + arg_val = obj_val; + if (arg_val != NULL) goto __LL1; + if (PyBytes_Check(obj_val) || PyByteArray_Check(obj_val)) + arg_val = obj_val; + else { + arg_val = NULL; + } + if (arg_val != NULL) goto __LL1; + if (PyLong_Check(obj_val)) + arg_val = obj_val; + else { + arg_val = NULL; + } + if (arg_val != NULL) goto __LL1; + if (PyUnicode_Check(obj_val)) + arg_val = obj_val; + else { + arg_val = NULL; + } + if (arg_val != NULL) goto __LL1; + CPy_TypeError("union[bool, object, bytes, int, str]", obj_val); + goto fail; +__LL1: ; + PyObject *retval = CPyDef__utils___to_bytes(arg_val); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 7, CPyStatic__utils___globals); + return NULL; +} + +PyObject *CPyDef__utils___hexstr_to_bytes(PyObject *cpy_r_hexstr) { + PyObject *cpy_r_r0; + PyObject *cpy_r_r1; + tuple_T2OO cpy_r_r2; + PyObject *cpy_r_r3; + char cpy_r_r4; + PyObject *cpy_r_r5; + PyObject *cpy_r_r6; + PyObject *cpy_r_non_prefixed_hex; + int64_t cpy_r_r7; + char cpy_r_r8; + CPyTagged cpy_r_r9; + CPyTagged cpy_r_r10; + char cpy_r_r11; + PyObject *cpy_r_r12; + PyObject *cpy_r_r13; + PyObject *cpy_r_padded_hex; + PyObject *cpy_r_r14; + tuple_T3OOO cpy_r_r15; + PyObject *cpy_r_r16; + PyObject *cpy_r_r17; + PyObject *cpy_r_r18; + char cpy_r_r19; + PyObject *cpy_r_r20; + PyObject *cpy_r_r21; + PyObject *cpy_r_r22; + PyObject *cpy_r_r23; + PyObject *cpy_r_r24; + PyObject *cpy_r_r25; + PyObject **cpy_r_r27; + PyObject *cpy_r_r28; + char cpy_r_r29; + PyObject *cpy_r_r30; + PyObject *cpy_r_r31; + PyObject *cpy_r_r32; + PyObject **cpy_r_r34; + PyObject *cpy_r_r35; + PyObject *cpy_r_r36; + PyObject *cpy_r_r37; + cpy_r_r0 = CPyStatics[24]; /* '0x' */ + cpy_r_r1 = CPyStatics[25]; /* '0X' */ + CPy_INCREF(cpy_r_r0); + CPy_INCREF(cpy_r_r1); + cpy_r_r2.f0 = cpy_r_r0; + cpy_r_r2.f1 = cpy_r_r1; + cpy_r_r3 = PyTuple_New(2); + if (unlikely(cpy_r_r3 == NULL)) + CPyError_OutOfMemory(); + PyObject *__tmp2 = cpy_r_r2.f0; + PyTuple_SET_ITEM(cpy_r_r3, 0, __tmp2); + PyObject *__tmp3 = cpy_r_r2.f1; + PyTuple_SET_ITEM(cpy_r_r3, 1, __tmp3); + cpy_r_r4 = CPyStr_Startswith(cpy_r_hexstr, cpy_r_r3); + CPy_DECREF(cpy_r_r3); + if (unlikely(cpy_r_r4 == 2)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 36, CPyStatic__utils___globals); + goto CPyL29; + } + if (!cpy_r_r4) goto CPyL5; + cpy_r_r5 = CPyStr_GetSlice(cpy_r_hexstr, 4, 9223372036854775806LL); + if (unlikely(cpy_r_r5 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 37, CPyStatic__utils___globals); + goto CPyL29; + } + if (likely(PyUnicode_Check(cpy_r_r5))) + cpy_r_r6 = cpy_r_r5; + else { + CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 37, CPyStatic__utils___globals, "str", cpy_r_r5); + goto CPyL29; + } + cpy_r_non_prefixed_hex = cpy_r_r6; + goto CPyL6; +CPyL5: ; + CPy_INCREF(cpy_r_hexstr); + cpy_r_non_prefixed_hex = cpy_r_hexstr; +CPyL6: ; + cpy_r_r7 = CPyStr_Size_size_t(cpy_r_hexstr); + cpy_r_r8 = cpy_r_r7 >= 0; + if (unlikely(!cpy_r_r8)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 42, CPyStatic__utils___globals); + goto CPyL30; + } + cpy_r_r9 = cpy_r_r7 << 1; + cpy_r_r10 = CPyTagged_Remainder(cpy_r_r9, 4); + if (unlikely(cpy_r_r10 == CPY_INT_TAG)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 42, CPyStatic__utils___globals); + goto CPyL30; + } + cpy_r_r11 = cpy_r_r10 != 0; + CPyTagged_DECREF(cpy_r_r10); + if (!cpy_r_r11) goto CPyL11; + cpy_r_r12 = CPyStatics[26]; /* '0' */ + cpy_r_r13 = PyUnicode_Concat(cpy_r_r12, cpy_r_non_prefixed_hex); + CPy_DECREF(cpy_r_non_prefixed_hex); + if (unlikely(cpy_r_r13 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 43, CPyStatic__utils___globals); + goto CPyL29; + } + cpy_r_padded_hex = cpy_r_r13; + goto CPyL12; +CPyL11: ; + cpy_r_padded_hex = cpy_r_non_prefixed_hex; +CPyL12: ; + cpy_r_r14 = PyUnicode_AsASCIIString(cpy_r_padded_hex); + if (unlikely(cpy_r_r14 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 48, CPyStatic__utils___globals); + goto CPyL14; + } else + goto CPyL31; +CPyL13: ; + goto CPyL25; +CPyL14: ; + cpy_r_r15 = CPy_CatchError(); + cpy_r_r16 = CPyModule_builtins; + cpy_r_r17 = CPyStatics[27]; /* 'UnicodeDecodeError' */ + cpy_r_r18 = CPyObject_GetAttr(cpy_r_r16, cpy_r_r17); + if (unlikely(cpy_r_r18 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 49, CPyStatic__utils___globals); + goto CPyL32; + } + cpy_r_r19 = CPy_ExceptionMatches(cpy_r_r18); + CPy_DecRef(cpy_r_r18); + if (!cpy_r_r19) goto CPyL33; + cpy_r_r20 = CPyStatics[28]; /* 'hex string ' */ + cpy_r_r21 = CPyStatics[29]; /* ' may only contain [0-9a-fA-F] characters' */ + cpy_r_r22 = CPyStr_Build(3, cpy_r_r20, cpy_r_padded_hex, cpy_r_r21); + CPy_DecRef(cpy_r_padded_hex); + if (unlikely(cpy_r_r22 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 51, CPyStatic__utils___globals); + goto CPyL23; + } + cpy_r_r23 = CPyModule_builtins; + cpy_r_r24 = CPyStatics[14]; /* 'ValueError' */ + cpy_r_r25 = CPyObject_GetAttr(cpy_r_r23, cpy_r_r24); + if (unlikely(cpy_r_r25 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 50, CPyStatic__utils___globals); + goto CPyL34; + } + PyObject *cpy_r_r26[1] = {cpy_r_r22}; + cpy_r_r27 = (PyObject **)&cpy_r_r26; + cpy_r_r28 = PyObject_Vectorcall(cpy_r_r25, cpy_r_r27, 1, 0); + CPy_DecRef(cpy_r_r25); + if (unlikely(cpy_r_r28 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 50, CPyStatic__utils___globals); + goto CPyL34; + } + CPy_DecRef(cpy_r_r22); + CPy_Raise(cpy_r_r28); + CPy_DecRef(cpy_r_r28); + if (unlikely(!0)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 50, CPyStatic__utils___globals); + goto CPyL23; + } else + goto CPyL35; +CPyL20: ; + CPy_Unreachable(); +CPyL21: ; + CPy_Reraise(); + if (!0) { + goto CPyL23; + } else + goto CPyL36; +CPyL22: ; + CPy_Unreachable(); +CPyL23: ; + CPy_RestoreExcInfo(cpy_r_r15); + CPy_DecRef(cpy_r_r15.f0); + CPy_DecRef(cpy_r_r15.f1); + CPy_DecRef(cpy_r_r15.f2); + cpy_r_r29 = CPy_KeepPropagating(); + if (!cpy_r_r29) goto CPyL29; + CPy_Unreachable(); +CPyL25: ; + cpy_r_r30 = CPyModule_binascii; + cpy_r_r31 = CPyStatics[30]; /* 'unhexlify' */ + cpy_r_r32 = CPyObject_GetAttr(cpy_r_r30, cpy_r_r31); + if (unlikely(cpy_r_r32 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 54, CPyStatic__utils___globals); + goto CPyL37; + } + PyObject *cpy_r_r33[1] = {cpy_r_r14}; + cpy_r_r34 = (PyObject **)&cpy_r_r33; + cpy_r_r35 = PyObject_Vectorcall(cpy_r_r32, cpy_r_r34, 1, 0); + CPy_DECREF(cpy_r_r32); + if (unlikely(cpy_r_r35 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 54, CPyStatic__utils___globals); + goto CPyL37; + } + CPy_DECREF(cpy_r_r14); + if (likely(PyBytes_Check(cpy_r_r35) || PyByteArray_Check(cpy_r_r35))) + cpy_r_r36 = cpy_r_r35; + else { + CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 54, CPyStatic__utils___globals, "bytes", cpy_r_r35); + goto CPyL29; + } + return cpy_r_r36; +CPyL29: ; + cpy_r_r37 = NULL; + return cpy_r_r37; +CPyL30: ; + CPy_DecRef(cpy_r_non_prefixed_hex); + goto CPyL29; +CPyL31: ; + CPy_DECREF(cpy_r_padded_hex); + goto CPyL13; +CPyL32: ; + CPy_DecRef(cpy_r_padded_hex); + goto CPyL23; +CPyL33: ; + CPy_DecRef(cpy_r_padded_hex); + goto CPyL21; +CPyL34: ; + CPy_DecRef(cpy_r_r22); + goto CPyL23; +CPyL35: ; + CPy_DecRef(cpy_r_r15.f0); + CPy_DecRef(cpy_r_r15.f1); + CPy_DecRef(cpy_r_r15.f2); + goto CPyL20; +CPyL36: ; + CPy_DecRef(cpy_r_r15.f0); + CPy_DecRef(cpy_r_r15.f1); + CPy_DecRef(cpy_r_r15.f2); + goto CPyL22; +CPyL37: ; + CPy_DecRef(cpy_r_r14); + goto CPyL29; +} + +PyObject *CPyPy__utils___hexstr_to_bytes(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + static const char * const kwlist[] = {"hexstr", 0}; + static CPyArg_Parser parser = {"O:hexstr_to_bytes", kwlist, 0}; + PyObject *obj_hexstr; + if (!CPyArg_ParseStackAndKeywordsOneArg(args, nargs, kwnames, &parser, &obj_hexstr)) { + return NULL; + } + PyObject *arg_hexstr; + if (likely(PyUnicode_Check(obj_hexstr))) + arg_hexstr = obj_hexstr; + else { + CPy_TypeError("str", obj_hexstr); + goto fail; + } + PyObject *retval = CPyDef__utils___hexstr_to_bytes(arg_hexstr); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 35, CPyStatic__utils___globals); + return NULL; +} + +char CPyDef__utils_____top_level__(void) { + PyObject *cpy_r_r0; + PyObject *cpy_r_r1; + char cpy_r_r2; + PyObject *cpy_r_r3; + PyObject *cpy_r_r4; + PyObject **cpy_r_r5; + void *cpy_r_r7; + void *cpy_r_r9; + PyObject *cpy_r_r10; + PyObject *cpy_r_r11; + PyObject *cpy_r_r12; + PyObject *cpy_r_r13; + char cpy_r_r14; + PyObject *cpy_r_r15; + PyObject *cpy_r_r16; + PyObject *cpy_r_r17; + PyObject *cpy_r_r18; + char cpy_r_r19; + cpy_r_r0 = CPyModule_builtins; + cpy_r_r1 = (PyObject *)&_Py_NoneStruct; + cpy_r_r2 = cpy_r_r0 != cpy_r_r1; + if (cpy_r_r2) goto CPyL3; + cpy_r_r3 = CPyStatics[3]; /* 'builtins' */ + cpy_r_r4 = PyImport_Import(cpy_r_r3); + if (unlikely(cpy_r_r4 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "", -1, CPyStatic__utils___globals); + goto CPyL6; + } + CPyModule_builtins = cpy_r_r4; + CPy_INCREF(CPyModule_builtins); + CPy_DECREF(cpy_r_r4); +CPyL3: ; + cpy_r_r5 = (PyObject **)&CPyModule_binascii; + PyObject **cpy_r_r6[1] = {cpy_r_r5}; + cpy_r_r7 = (void *)&cpy_r_r6; + int64_t cpy_r_r8[1] = {1}; + cpy_r_r9 = (void *)&cpy_r_r8; + cpy_r_r10 = CPyStatics[71]; /* (('binascii', 'binascii', 'binascii'),) */ + cpy_r_r11 = CPyStatic__utils___globals; + cpy_r_r12 = CPyStatics[32]; /* 'faster_hexbytes/_utils.py' */ + cpy_r_r13 = CPyStatics[33]; /* '' */ + cpy_r_r14 = CPyImport_ImportMany(cpy_r_r10, cpy_r_r7, cpy_r_r11, cpy_r_r12, cpy_r_r13, cpy_r_r9); + if (!cpy_r_r14) goto CPyL6; + cpy_r_r15 = CPyStatics[72]; /* ('Union',) */ + cpy_r_r16 = CPyStatics[35]; /* 'typing' */ + cpy_r_r17 = CPyStatic__utils___globals; + cpy_r_r18 = CPyImport_ImportFromMany(cpy_r_r16, cpy_r_r15, cpy_r_r15, cpy_r_r17); + if (unlikely(cpy_r_r18 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "", 2, CPyStatic__utils___globals); + goto CPyL6; + } + CPyModule_typing = cpy_r_r18; + CPy_INCREF(CPyModule_typing); + CPy_DECREF(cpy_r_r18); + return 1; +CPyL6: ; + cpy_r_r19 = 2; + return cpy_r_r19; +} + +static PyObject *CPyDunder___get__main_____new___3_HexBytes_obj(PyObject *self, PyObject *instance, PyObject *owner) { + instance = instance ? instance : Py_None; + return CPyDef_main_____new___3_HexBytes_obj_____get__(self, instance, owner); +} +PyObject *CPyDef_main_____mypyc___3__new___3_HexBytes_obj_setup(PyObject *cpy_r_type); +PyObject *CPyDef_main_____new___3_HexBytes_obj(void); + +static PyObject * +main_____new___3_HexBytes_obj_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + if (type != CPyType_main_____new___3_HexBytes_obj) { + PyErr_SetString(PyExc_TypeError, "interpreted classes cannot inherit from compiled"); + return NULL; + } + PyObject *self = CPyDef_main_____mypyc___3__new___3_HexBytes_obj_setup((PyObject*)type); + if (self == NULL) + return NULL; + return self; +} + +static int +main_____new___3_HexBytes_obj_traverse(faster_hexbytes___main_____new___3_HexBytes_objObject *self, visitproc visit, void *arg) +{ + return 0; +} + +static int +main_____new___3_HexBytes_obj_clear(faster_hexbytes___main_____new___3_HexBytes_objObject *self) +{ + return 0; +} + +static void +main_____new___3_HexBytes_obj_dealloc(faster_hexbytes___main_____new___3_HexBytes_objObject *self) +{ + PyObject_GC_UnTrack(self); + if (main_____new___3_HexBytes_obj_free_instance == NULL) { + main_____new___3_HexBytes_obj_free_instance = self; + return; + } + CPy_TRASHCAN_BEGIN(self, main_____new___3_HexBytes_obj_dealloc) + main_____new___3_HexBytes_obj_clear(self); + Py_TYPE(self)->tp_free((PyObject *)self); + CPy_TRASHCAN_END(self) +} + +static CPyVTableItem main_____new___3_HexBytes_obj_vtable[2]; +static bool +CPyDef_main_____new___3_HexBytes_obj_trait_vtable_setup(void) +{ + CPyVTableItem main_____new___3_HexBytes_obj_vtable_scratch[] = { + (CPyVTableItem)CPyDef_main_____new___3_HexBytes_obj_____call__, + (CPyVTableItem)CPyDef_main_____new___3_HexBytes_obj_____get__, + }; + memcpy(main_____new___3_HexBytes_obj_vtable, main_____new___3_HexBytes_obj_vtable_scratch, sizeof(main_____new___3_HexBytes_obj_vtable)); + return 1; +} + +static PyMethodDef main_____new___3_HexBytes_obj_methods[] = { + {"__call__", + (PyCFunction)CPyPy_main_____new___3_HexBytes_obj_____call__, + METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__call__($cls, val)\n--\n\n")}, + {"__get__", + (PyCFunction)CPyPy_main_____new___3_HexBytes_obj_____get__, + METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__get__($instance, owner)\n--\n\n")}, + {"__setstate__", (PyCFunction)CPyPickle_SetState, METH_O, NULL}, + {"__getstate__", (PyCFunction)CPyPickle_GetState, METH_NOARGS, NULL}, + {NULL} /* Sentinel */ +}; + +static PyTypeObject CPyType_main_____new___3_HexBytes_obj_template_ = { + PyVarObject_HEAD_INIT(NULL, 0) + .tp_name = "__new___HexBytes_obj", + .tp_new = main_____new___3_HexBytes_obj_new, + .tp_dealloc = (destructor)main_____new___3_HexBytes_obj_dealloc, + .tp_traverse = (traverseproc)main_____new___3_HexBytes_obj_traverse, + .tp_clear = (inquiry)main_____new___3_HexBytes_obj_clear, + .tp_methods = main_____new___3_HexBytes_obj_methods, + .tp_call = PyVectorcall_Call, + .tp_descr_get = CPyDunder___get__main_____new___3_HexBytes_obj, + .tp_basicsize = sizeof(faster_hexbytes___main_____new___3_HexBytes_objObject), + .tp_vectorcall_offset = offsetof(faster_hexbytes___main_____new___3_HexBytes_objObject, vectorcall), + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | _Py_TPFLAGS_HAVE_VECTORCALL, + .tp_doc = PyDoc_STR("__new___HexBytes_obj()\n--\n\n"), +}; +static PyTypeObject *CPyType_main_____new___3_HexBytes_obj_template = &CPyType_main_____new___3_HexBytes_obj_template_; + +PyObject *CPyDef_main_____mypyc___3__new___3_HexBytes_obj_setup(PyObject *cpy_r_type) +{ + PyTypeObject *type = (PyTypeObject*)cpy_r_type; + faster_hexbytes___main_____new___3_HexBytes_objObject *self; + if (main_____new___3_HexBytes_obj_free_instance != NULL) { + self = main_____new___3_HexBytes_obj_free_instance; + main_____new___3_HexBytes_obj_free_instance = NULL; + Py_SET_REFCNT(self, 1); + PyObject_GC_Track(self); + return (PyObject *)self; + } + self = (faster_hexbytes___main_____new___3_HexBytes_objObject *)type->tp_alloc(type, 0); + if (self == NULL) + return NULL; + self->vtable = main_____new___3_HexBytes_obj_vtable; + self->vectorcall = CPyPy_main_____new___3_HexBytes_obj_____call__; + return (PyObject *)self; +} + +PyObject *CPyDef_main_____new___3_HexBytes_obj(void) +{ + PyObject *self = CPyDef_main_____mypyc___3__new___3_HexBytes_obj_setup((PyObject *)CPyType_main_____new___3_HexBytes_obj); + if (self == NULL) + return NULL; + return self; +} + + +static PyObject *CPyDunder___get__main_____getitem___3_HexBytes_obj(PyObject *self, PyObject *instance, PyObject *owner) { + instance = instance ? instance : Py_None; + return CPyDef_main_____getitem___3_HexBytes_obj_____get__(self, instance, owner); +} +PyObject *CPyDef_main_____mypyc___3__getitem___3_HexBytes_obj_setup(PyObject *cpy_r_type); +PyObject *CPyDef_main_____getitem___3_HexBytes_obj(void); + +static PyObject * +main_____getitem___3_HexBytes_obj_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + if (type != CPyType_main_____getitem___3_HexBytes_obj) { + PyErr_SetString(PyExc_TypeError, "interpreted classes cannot inherit from compiled"); + return NULL; + } + PyObject *self = CPyDef_main_____mypyc___3__getitem___3_HexBytes_obj_setup((PyObject*)type); + if (self == NULL) + return NULL; + return self; +} + +static int +main_____getitem___3_HexBytes_obj_traverse(faster_hexbytes___main_____getitem___3_HexBytes_objObject *self, visitproc visit, void *arg) +{ + return 0; +} + +static int +main_____getitem___3_HexBytes_obj_clear(faster_hexbytes___main_____getitem___3_HexBytes_objObject *self) +{ + return 0; +} + +static void +main_____getitem___3_HexBytes_obj_dealloc(faster_hexbytes___main_____getitem___3_HexBytes_objObject *self) +{ + PyObject_GC_UnTrack(self); + if (main_____getitem___3_HexBytes_obj_free_instance == NULL) { + main_____getitem___3_HexBytes_obj_free_instance = self; + return; + } + CPy_TRASHCAN_BEGIN(self, main_____getitem___3_HexBytes_obj_dealloc) + main_____getitem___3_HexBytes_obj_clear(self); + Py_TYPE(self)->tp_free((PyObject *)self); + CPy_TRASHCAN_END(self) +} + +static CPyVTableItem main_____getitem___3_HexBytes_obj_vtable[2]; +static bool +CPyDef_main_____getitem___3_HexBytes_obj_trait_vtable_setup(void) +{ + CPyVTableItem main_____getitem___3_HexBytes_obj_vtable_scratch[] = { + (CPyVTableItem)CPyDef_main_____getitem___3_HexBytes_obj_____call__, + (CPyVTableItem)CPyDef_main_____getitem___3_HexBytes_obj_____get__, + }; + memcpy(main_____getitem___3_HexBytes_obj_vtable, main_____getitem___3_HexBytes_obj_vtable_scratch, sizeof(main_____getitem___3_HexBytes_obj_vtable)); + return 1; +} + +static PyMethodDef main_____getitem___3_HexBytes_obj_methods[] = { + {"__call__", + (PyCFunction)CPyPy_main_____getitem___3_HexBytes_obj_____call__, + METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__call__($self, key, /)\n--\n\n")}, + {"__get__", + (PyCFunction)CPyPy_main_____getitem___3_HexBytes_obj_____get__, + METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__get__($instance, owner)\n--\n\n")}, + {"__setstate__", (PyCFunction)CPyPickle_SetState, METH_O, NULL}, + {"__getstate__", (PyCFunction)CPyPickle_GetState, METH_NOARGS, NULL}, + {NULL} /* Sentinel */ +}; + +static PyTypeObject CPyType_main_____getitem___3_HexBytes_obj_template_ = { + PyVarObject_HEAD_INIT(NULL, 0) + .tp_name = "__getitem___HexBytes_obj", + .tp_new = main_____getitem___3_HexBytes_obj_new, + .tp_dealloc = (destructor)main_____getitem___3_HexBytes_obj_dealloc, + .tp_traverse = (traverseproc)main_____getitem___3_HexBytes_obj_traverse, + .tp_clear = (inquiry)main_____getitem___3_HexBytes_obj_clear, + .tp_methods = main_____getitem___3_HexBytes_obj_methods, + .tp_call = PyVectorcall_Call, + .tp_descr_get = CPyDunder___get__main_____getitem___3_HexBytes_obj, + .tp_basicsize = sizeof(faster_hexbytes___main_____getitem___3_HexBytes_objObject), + .tp_vectorcall_offset = offsetof(faster_hexbytes___main_____getitem___3_HexBytes_objObject, vectorcall), + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | _Py_TPFLAGS_HAVE_VECTORCALL, + .tp_doc = PyDoc_STR("__getitem___HexBytes_obj()\n--\n\n"), +}; +static PyTypeObject *CPyType_main_____getitem___3_HexBytes_obj_template = &CPyType_main_____getitem___3_HexBytes_obj_template_; + +PyObject *CPyDef_main_____mypyc___3__getitem___3_HexBytes_obj_setup(PyObject *cpy_r_type) +{ + PyTypeObject *type = (PyTypeObject*)cpy_r_type; + faster_hexbytes___main_____getitem___3_HexBytes_objObject *self; + if (main_____getitem___3_HexBytes_obj_free_instance != NULL) { + self = main_____getitem___3_HexBytes_obj_free_instance; + main_____getitem___3_HexBytes_obj_free_instance = NULL; + Py_SET_REFCNT(self, 1); + PyObject_GC_Track(self); + return (PyObject *)self; + } + self = (faster_hexbytes___main_____getitem___3_HexBytes_objObject *)type->tp_alloc(type, 0); + if (self == NULL) + return NULL; + self->vtable = main_____getitem___3_HexBytes_obj_vtable; + self->vectorcall = CPyPy_main_____getitem___3_HexBytes_obj_____call__; + return (PyObject *)self; +} + +PyObject *CPyDef_main_____getitem___3_HexBytes_obj(void) +{ + PyObject *self = CPyDef_main_____mypyc___3__getitem___3_HexBytes_obj_setup((PyObject *)CPyType_main_____getitem___3_HexBytes_obj); + if (self == NULL) + return NULL; + return self; +} + + +static PyObject *CPyDunder___get__main_____repr___3_HexBytes_obj(PyObject *self, PyObject *instance, PyObject *owner) { + instance = instance ? instance : Py_None; + return CPyDef_main_____repr___3_HexBytes_obj_____get__(self, instance, owner); +} +PyObject *CPyDef_main_____mypyc___3__repr___3_HexBytes_obj_setup(PyObject *cpy_r_type); +PyObject *CPyDef_main_____repr___3_HexBytes_obj(void); + +static PyObject * +main_____repr___3_HexBytes_obj_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + if (type != CPyType_main_____repr___3_HexBytes_obj) { + PyErr_SetString(PyExc_TypeError, "interpreted classes cannot inherit from compiled"); + return NULL; + } + PyObject *self = CPyDef_main_____mypyc___3__repr___3_HexBytes_obj_setup((PyObject*)type); + if (self == NULL) + return NULL; + return self; +} + +static int +main_____repr___3_HexBytes_obj_traverse(faster_hexbytes___main_____repr___3_HexBytes_objObject *self, visitproc visit, void *arg) +{ + return 0; +} + +static int +main_____repr___3_HexBytes_obj_clear(faster_hexbytes___main_____repr___3_HexBytes_objObject *self) +{ + return 0; +} + +static void +main_____repr___3_HexBytes_obj_dealloc(faster_hexbytes___main_____repr___3_HexBytes_objObject *self) +{ + PyObject_GC_UnTrack(self); + if (main_____repr___3_HexBytes_obj_free_instance == NULL) { + main_____repr___3_HexBytes_obj_free_instance = self; + return; + } + CPy_TRASHCAN_BEGIN(self, main_____repr___3_HexBytes_obj_dealloc) + main_____repr___3_HexBytes_obj_clear(self); + Py_TYPE(self)->tp_free((PyObject *)self); + CPy_TRASHCAN_END(self) +} + +static CPyVTableItem main_____repr___3_HexBytes_obj_vtable[2]; +static bool +CPyDef_main_____repr___3_HexBytes_obj_trait_vtable_setup(void) +{ + CPyVTableItem main_____repr___3_HexBytes_obj_vtable_scratch[] = { + (CPyVTableItem)CPyDef_main_____repr___3_HexBytes_obj_____call__, + (CPyVTableItem)CPyDef_main_____repr___3_HexBytes_obj_____get__, + }; + memcpy(main_____repr___3_HexBytes_obj_vtable, main_____repr___3_HexBytes_obj_vtable_scratch, sizeof(main_____repr___3_HexBytes_obj_vtable)); + return 1; +} + +static PyMethodDef main_____repr___3_HexBytes_obj_methods[] = { + {"__call__", + (PyCFunction)CPyPy_main_____repr___3_HexBytes_obj_____call__, + METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__call__($self, /)\n--\n\n")}, + {"__get__", + (PyCFunction)CPyPy_main_____repr___3_HexBytes_obj_____get__, + METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__get__($instance, owner)\n--\n\n")}, + {"__setstate__", (PyCFunction)CPyPickle_SetState, METH_O, NULL}, + {"__getstate__", (PyCFunction)CPyPickle_GetState, METH_NOARGS, NULL}, + {NULL} /* Sentinel */ +}; + +static PyTypeObject CPyType_main_____repr___3_HexBytes_obj_template_ = { + PyVarObject_HEAD_INIT(NULL, 0) + .tp_name = "__repr___HexBytes_obj", + .tp_new = main_____repr___3_HexBytes_obj_new, + .tp_dealloc = (destructor)main_____repr___3_HexBytes_obj_dealloc, + .tp_traverse = (traverseproc)main_____repr___3_HexBytes_obj_traverse, + .tp_clear = (inquiry)main_____repr___3_HexBytes_obj_clear, + .tp_methods = main_____repr___3_HexBytes_obj_methods, + .tp_call = PyVectorcall_Call, + .tp_descr_get = CPyDunder___get__main_____repr___3_HexBytes_obj, + .tp_basicsize = sizeof(faster_hexbytes___main_____repr___3_HexBytes_objObject), + .tp_vectorcall_offset = offsetof(faster_hexbytes___main_____repr___3_HexBytes_objObject, vectorcall), + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | _Py_TPFLAGS_HAVE_VECTORCALL, + .tp_doc = PyDoc_STR("__repr___HexBytes_obj()\n--\n\n"), +}; +static PyTypeObject *CPyType_main_____repr___3_HexBytes_obj_template = &CPyType_main_____repr___3_HexBytes_obj_template_; + +PyObject *CPyDef_main_____mypyc___3__repr___3_HexBytes_obj_setup(PyObject *cpy_r_type) +{ + PyTypeObject *type = (PyTypeObject*)cpy_r_type; + faster_hexbytes___main_____repr___3_HexBytes_objObject *self; + if (main_____repr___3_HexBytes_obj_free_instance != NULL) { + self = main_____repr___3_HexBytes_obj_free_instance; + main_____repr___3_HexBytes_obj_free_instance = NULL; + Py_SET_REFCNT(self, 1); + PyObject_GC_Track(self); + return (PyObject *)self; + } + self = (faster_hexbytes___main_____repr___3_HexBytes_objObject *)type->tp_alloc(type, 0); + if (self == NULL) + return NULL; + self->vtable = main_____repr___3_HexBytes_obj_vtable; + self->vectorcall = CPyPy_main_____repr___3_HexBytes_obj_____call__; + return (PyObject *)self; +} + +PyObject *CPyDef_main_____repr___3_HexBytes_obj(void) +{ + PyObject *self = CPyDef_main_____mypyc___3__repr___3_HexBytes_obj_setup((PyObject *)CPyType_main_____repr___3_HexBytes_obj); + if (self == NULL) + return NULL; + return self; +} + + +static PyObject *CPyDunder___get__main___to_0x_hex_HexBytes_obj(PyObject *self, PyObject *instance, PyObject *owner) { + instance = instance ? instance : Py_None; + return CPyDef_main___to_0x_hex_HexBytes_obj_____get__(self, instance, owner); +} +PyObject *CPyDef_main_____mypyc__to_0x_hex_HexBytes_obj_setup(PyObject *cpy_r_type); +PyObject *CPyDef_main___to_0x_hex_HexBytes_obj(void); + +static PyObject * +main___to_0x_hex_HexBytes_obj_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + if (type != CPyType_main___to_0x_hex_HexBytes_obj) { + PyErr_SetString(PyExc_TypeError, "interpreted classes cannot inherit from compiled"); + return NULL; + } + PyObject *self = CPyDef_main_____mypyc__to_0x_hex_HexBytes_obj_setup((PyObject*)type); + if (self == NULL) + return NULL; + return self; +} + +static int +main___to_0x_hex_HexBytes_obj_traverse(faster_hexbytes___main___to_0x_hex_HexBytes_objObject *self, visitproc visit, void *arg) +{ + return 0; +} + +static int +main___to_0x_hex_HexBytes_obj_clear(faster_hexbytes___main___to_0x_hex_HexBytes_objObject *self) +{ + return 0; +} + +static void +main___to_0x_hex_HexBytes_obj_dealloc(faster_hexbytes___main___to_0x_hex_HexBytes_objObject *self) +{ + PyObject_GC_UnTrack(self); + if (main___to_0x_hex_HexBytes_obj_free_instance == NULL) { + main___to_0x_hex_HexBytes_obj_free_instance = self; + return; + } + CPy_TRASHCAN_BEGIN(self, main___to_0x_hex_HexBytes_obj_dealloc) + main___to_0x_hex_HexBytes_obj_clear(self); + Py_TYPE(self)->tp_free((PyObject *)self); + CPy_TRASHCAN_END(self) +} + +static CPyVTableItem main___to_0x_hex_HexBytes_obj_vtable[2]; +static bool +CPyDef_main___to_0x_hex_HexBytes_obj_trait_vtable_setup(void) +{ + CPyVTableItem main___to_0x_hex_HexBytes_obj_vtable_scratch[] = { + (CPyVTableItem)CPyDef_main___to_0x_hex_HexBytes_obj_____call__, + (CPyVTableItem)CPyDef_main___to_0x_hex_HexBytes_obj_____get__, + }; + memcpy(main___to_0x_hex_HexBytes_obj_vtable, main___to_0x_hex_HexBytes_obj_vtable_scratch, sizeof(main___to_0x_hex_HexBytes_obj_vtable)); + return 1; +} + +static PyMethodDef main___to_0x_hex_HexBytes_obj_methods[] = { + {"__call__", + (PyCFunction)CPyPy_main___to_0x_hex_HexBytes_obj_____call__, + METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__call__($self)\n--\n\n")}, + {"__get__", + (PyCFunction)CPyPy_main___to_0x_hex_HexBytes_obj_____get__, + METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__get__($instance, owner)\n--\n\n")}, + {"__setstate__", (PyCFunction)CPyPickle_SetState, METH_O, NULL}, + {"__getstate__", (PyCFunction)CPyPickle_GetState, METH_NOARGS, NULL}, + {NULL} /* Sentinel */ +}; + +static PyTypeObject CPyType_main___to_0x_hex_HexBytes_obj_template_ = { + PyVarObject_HEAD_INIT(NULL, 0) + .tp_name = "to_0x_hex_HexBytes_obj", + .tp_new = main___to_0x_hex_HexBytes_obj_new, + .tp_dealloc = (destructor)main___to_0x_hex_HexBytes_obj_dealloc, + .tp_traverse = (traverseproc)main___to_0x_hex_HexBytes_obj_traverse, + .tp_clear = (inquiry)main___to_0x_hex_HexBytes_obj_clear, + .tp_methods = main___to_0x_hex_HexBytes_obj_methods, + .tp_call = PyVectorcall_Call, + .tp_descr_get = CPyDunder___get__main___to_0x_hex_HexBytes_obj, + .tp_basicsize = sizeof(faster_hexbytes___main___to_0x_hex_HexBytes_objObject), + .tp_vectorcall_offset = offsetof(faster_hexbytes___main___to_0x_hex_HexBytes_objObject, vectorcall), + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | _Py_TPFLAGS_HAVE_VECTORCALL, + .tp_doc = PyDoc_STR("to_0x_hex_HexBytes_obj()\n--\n\n"), +}; +static PyTypeObject *CPyType_main___to_0x_hex_HexBytes_obj_template = &CPyType_main___to_0x_hex_HexBytes_obj_template_; + +PyObject *CPyDef_main_____mypyc__to_0x_hex_HexBytes_obj_setup(PyObject *cpy_r_type) +{ + PyTypeObject *type = (PyTypeObject*)cpy_r_type; + faster_hexbytes___main___to_0x_hex_HexBytes_objObject *self; + if (main___to_0x_hex_HexBytes_obj_free_instance != NULL) { + self = main___to_0x_hex_HexBytes_obj_free_instance; + main___to_0x_hex_HexBytes_obj_free_instance = NULL; + Py_SET_REFCNT(self, 1); + PyObject_GC_Track(self); + return (PyObject *)self; + } + self = (faster_hexbytes___main___to_0x_hex_HexBytes_objObject *)type->tp_alloc(type, 0); + if (self == NULL) + return NULL; + self->vtable = main___to_0x_hex_HexBytes_obj_vtable; + self->vectorcall = CPyPy_main___to_0x_hex_HexBytes_obj_____call__; + return (PyObject *)self; +} + +PyObject *CPyDef_main___to_0x_hex_HexBytes_obj(void) +{ + PyObject *self = CPyDef_main_____mypyc__to_0x_hex_HexBytes_obj_setup((PyObject *)CPyType_main___to_0x_hex_HexBytes_obj); + if (self == NULL) + return NULL; + return self; +} + + +static PyObject *CPyDunder___get__main_____reduce___3_HexBytes_obj(PyObject *self, PyObject *instance, PyObject *owner) { + instance = instance ? instance : Py_None; + return CPyDef_main_____reduce___3_HexBytes_obj_____get__(self, instance, owner); +} +PyObject *CPyDef_main_____mypyc___3__reduce___3_HexBytes_obj_setup(PyObject *cpy_r_type); +PyObject *CPyDef_main_____reduce___3_HexBytes_obj(void); + +static PyObject * +main_____reduce___3_HexBytes_obj_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + if (type != CPyType_main_____reduce___3_HexBytes_obj) { + PyErr_SetString(PyExc_TypeError, "interpreted classes cannot inherit from compiled"); + return NULL; + } + PyObject *self = CPyDef_main_____mypyc___3__reduce___3_HexBytes_obj_setup((PyObject*)type); + if (self == NULL) + return NULL; + return self; +} + +static int +main_____reduce___3_HexBytes_obj_traverse(faster_hexbytes___main_____reduce___3_HexBytes_objObject *self, visitproc visit, void *arg) +{ + return 0; +} + +static int +main_____reduce___3_HexBytes_obj_clear(faster_hexbytes___main_____reduce___3_HexBytes_objObject *self) +{ + return 0; +} + +static void +main_____reduce___3_HexBytes_obj_dealloc(faster_hexbytes___main_____reduce___3_HexBytes_objObject *self) +{ + PyObject_GC_UnTrack(self); + if (main_____reduce___3_HexBytes_obj_free_instance == NULL) { + main_____reduce___3_HexBytes_obj_free_instance = self; + return; + } + CPy_TRASHCAN_BEGIN(self, main_____reduce___3_HexBytes_obj_dealloc) + main_____reduce___3_HexBytes_obj_clear(self); + Py_TYPE(self)->tp_free((PyObject *)self); + CPy_TRASHCAN_END(self) +} + +static CPyVTableItem main_____reduce___3_HexBytes_obj_vtable[2]; +static bool +CPyDef_main_____reduce___3_HexBytes_obj_trait_vtable_setup(void) +{ + CPyVTableItem main_____reduce___3_HexBytes_obj_vtable_scratch[] = { + (CPyVTableItem)CPyDef_main_____reduce___3_HexBytes_obj_____call__, + (CPyVTableItem)CPyDef_main_____reduce___3_HexBytes_obj_____get__, + }; + memcpy(main_____reduce___3_HexBytes_obj_vtable, main_____reduce___3_HexBytes_obj_vtable_scratch, sizeof(main_____reduce___3_HexBytes_obj_vtable)); + return 1; +} + +static PyMethodDef main_____reduce___3_HexBytes_obj_methods[] = { + {"__call__", + (PyCFunction)CPyPy_main_____reduce___3_HexBytes_obj_____call__, + METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__call__($self)\n--\n\n")}, + {"__get__", + (PyCFunction)CPyPy_main_____reduce___3_HexBytes_obj_____get__, + METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__get__($instance, owner)\n--\n\n")}, + {"__setstate__", (PyCFunction)CPyPickle_SetState, METH_O, NULL}, + {"__getstate__", (PyCFunction)CPyPickle_GetState, METH_NOARGS, NULL}, + {NULL} /* Sentinel */ +}; + +static PyTypeObject CPyType_main_____reduce___3_HexBytes_obj_template_ = { + PyVarObject_HEAD_INIT(NULL, 0) + .tp_name = "__reduce___HexBytes_obj", + .tp_new = main_____reduce___3_HexBytes_obj_new, + .tp_dealloc = (destructor)main_____reduce___3_HexBytes_obj_dealloc, + .tp_traverse = (traverseproc)main_____reduce___3_HexBytes_obj_traverse, + .tp_clear = (inquiry)main_____reduce___3_HexBytes_obj_clear, + .tp_methods = main_____reduce___3_HexBytes_obj_methods, + .tp_call = PyVectorcall_Call, + .tp_descr_get = CPyDunder___get__main_____reduce___3_HexBytes_obj, + .tp_basicsize = sizeof(faster_hexbytes___main_____reduce___3_HexBytes_objObject), + .tp_vectorcall_offset = offsetof(faster_hexbytes___main_____reduce___3_HexBytes_objObject, vectorcall), + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | _Py_TPFLAGS_HAVE_VECTORCALL, + .tp_doc = PyDoc_STR("__reduce___HexBytes_obj()\n--\n\n"), +}; +static PyTypeObject *CPyType_main_____reduce___3_HexBytes_obj_template = &CPyType_main_____reduce___3_HexBytes_obj_template_; + +PyObject *CPyDef_main_____mypyc___3__reduce___3_HexBytes_obj_setup(PyObject *cpy_r_type) +{ + PyTypeObject *type = (PyTypeObject*)cpy_r_type; + faster_hexbytes___main_____reduce___3_HexBytes_objObject *self; + if (main_____reduce___3_HexBytes_obj_free_instance != NULL) { + self = main_____reduce___3_HexBytes_obj_free_instance; + main_____reduce___3_HexBytes_obj_free_instance = NULL; + Py_SET_REFCNT(self, 1); + PyObject_GC_Track(self); + return (PyObject *)self; + } + self = (faster_hexbytes___main_____reduce___3_HexBytes_objObject *)type->tp_alloc(type, 0); + if (self == NULL) + return NULL; + self->vtable = main_____reduce___3_HexBytes_obj_vtable; + self->vectorcall = CPyPy_main_____reduce___3_HexBytes_obj_____call__; + return (PyObject *)self; +} + +PyObject *CPyDef_main_____reduce___3_HexBytes_obj(void) +{ + PyObject *self = CPyDef_main_____mypyc___3__reduce___3_HexBytes_obj_setup((PyObject *)CPyType_main_____reduce___3_HexBytes_obj); + if (self == NULL) + return NULL; + return self; +} + +static PyMethodDef mainmodule_methods[] = { + {NULL, NULL, 0, NULL} +}; + +int CPyExec_faster_hexbytes___main(PyObject *module) +{ + PyObject* modname = NULL; + modname = PyObject_GetAttrString((PyObject *)CPyModule_faster_hexbytes___main__internal, "__name__"); + CPyStatic_main___globals = PyModule_GetDict(CPyModule_faster_hexbytes___main__internal); + if (unlikely(CPyStatic_main___globals == NULL)) + goto fail; + CPyType_main_____new___3_HexBytes_obj = (PyTypeObject *)CPyType_FromTemplate((PyObject *)CPyType_main_____new___3_HexBytes_obj_template, NULL, modname); + if (unlikely(!CPyType_main_____new___3_HexBytes_obj)) + goto fail; + CPyType_main_____getitem___3_HexBytes_obj = (PyTypeObject *)CPyType_FromTemplate((PyObject *)CPyType_main_____getitem___3_HexBytes_obj_template, NULL, modname); + if (unlikely(!CPyType_main_____getitem___3_HexBytes_obj)) + goto fail; + CPyType_main_____repr___3_HexBytes_obj = (PyTypeObject *)CPyType_FromTemplate((PyObject *)CPyType_main_____repr___3_HexBytes_obj_template, NULL, modname); + if (unlikely(!CPyType_main_____repr___3_HexBytes_obj)) + goto fail; + CPyType_main___to_0x_hex_HexBytes_obj = (PyTypeObject *)CPyType_FromTemplate((PyObject *)CPyType_main___to_0x_hex_HexBytes_obj_template, NULL, modname); + if (unlikely(!CPyType_main___to_0x_hex_HexBytes_obj)) + goto fail; + CPyType_main_____reduce___3_HexBytes_obj = (PyTypeObject *)CPyType_FromTemplate((PyObject *)CPyType_main_____reduce___3_HexBytes_obj_template, NULL, modname); + if (unlikely(!CPyType_main_____reduce___3_HexBytes_obj)) + goto fail; + if (CPyGlobalsInit() < 0) + goto fail; + char result = CPyDef_main_____top_level__(); + if (result == 2) + goto fail; + Py_DECREF(modname); + return 0; + fail: + Py_CLEAR(CPyModule_faster_hexbytes___main__internal); + Py_CLEAR(modname); + Py_CLEAR(CPyType_main___HexBytes); + Py_CLEAR(CPyType_main_____new___3_HexBytes_obj); + Py_CLEAR(CPyType_main_____getitem___3_HexBytes_obj); + Py_CLEAR(CPyType_main_____repr___3_HexBytes_obj); + Py_CLEAR(CPyType_main___to_0x_hex_HexBytes_obj); + Py_CLEAR(CPyType_main_____reduce___3_HexBytes_obj); + return -1; +} +static struct PyModuleDef mainmodule = { + PyModuleDef_HEAD_INIT, + "faster_hexbytes.main", + NULL, /* docstring */ + 0, /* size of per-interpreter state of the module */ + mainmodule_methods, + NULL, +}; + +PyObject *CPyInit_faster_hexbytes___main(void) +{ + if (CPyModule_faster_hexbytes___main__internal) { + Py_INCREF(CPyModule_faster_hexbytes___main__internal); + return CPyModule_faster_hexbytes___main__internal; + } + CPyModule_faster_hexbytes___main__internal = PyModule_Create(&mainmodule); + if (unlikely(CPyModule_faster_hexbytes___main__internal == NULL)) + goto fail; + if (CPyExec_faster_hexbytes___main(CPyModule_faster_hexbytes___main__internal) != 0) + goto fail; + return CPyModule_faster_hexbytes___main__internal; + fail: + return NULL; +} + +PyObject *CPyDef_main_____new___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner) { + PyObject *cpy_r_r0; + char cpy_r_r1; + PyObject *cpy_r_r2; + PyObject *cpy_r_r3; + cpy_r_r0 = (PyObject *)&_Py_NoneStruct; + cpy_r_r1 = cpy_r_instance == cpy_r_r0; + if (!cpy_r_r1) goto CPyL2; + CPy_INCREF(cpy_r___mypyc_self__); + return cpy_r___mypyc_self__; +CPyL2: ; + cpy_r_r2 = PyMethod_New(cpy_r___mypyc_self__, cpy_r_instance); + if (cpy_r_r2 == NULL) goto CPyL4; + return cpy_r_r2; +CPyL4: ; + cpy_r_r3 = NULL; + return cpy_r_r3; +} + +PyObject *CPyPy_main_____new___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + PyObject *obj___mypyc_self__ = self; + static const char * const kwlist[] = {"instance", "owner", 0}; + static CPyArg_Parser parser = {"OO:__get__", kwlist, 0}; + PyObject *obj_instance; + PyObject *obj_owner; + if (!CPyArg_ParseStackAndKeywordsSimple(args, nargs, kwnames, &parser, &obj_instance, &obj_owner)) { + return NULL; + } + PyObject *arg___mypyc_self__ = obj___mypyc_self__; + PyObject *arg_instance = obj_instance; + PyObject *arg_owner = obj_owner; + PyObject *retval = CPyDef_main_____new___3_HexBytes_obj_____get__(arg___mypyc_self__, arg_instance, arg_owner); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/main.py", "__get__", -1, CPyStatic_main___globals); + return NULL; +} + +PyObject *CPyDef_main_____new___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_cls, PyObject *cpy_r_val) { + PyObject *cpy_r_r0; + PyObject *cpy_r_r1; + PyObject *cpy_r_r2; + PyObject **cpy_r_r4; + PyObject *cpy_r_r5; + PyObject *cpy_r_r6; + PyObject *cpy_r_r7; + cpy_r_r0 = CPyDef__utils___to_bytes(cpy_r_val); + if (unlikely(cpy_r_r0 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__new__", 42, CPyStatic_main___globals); + goto CPyL4; + } + cpy_r_r1 = (PyObject *)&PyBytes_Type; + cpy_r_r2 = CPyStatics[36]; /* '__new__' */ + PyObject *cpy_r_r3[3] = {cpy_r_r1, cpy_r_cls, cpy_r_r0}; + cpy_r_r4 = (PyObject **)&cpy_r_r3; + cpy_r_r5 = PyObject_VectorcallMethod(cpy_r_r2, cpy_r_r4, 9223372036854775811ULL, 0); + if (unlikely(cpy_r_r5 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__new__", 43, CPyStatic_main___globals); + goto CPyL5; + } + CPy_DECREF(cpy_r_r0); + if (likely(Py_TYPE(cpy_r_r5) == CPyType_main___HexBytes)) + cpy_r_r6 = cpy_r_r5; + else { + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__new__", 43, CPyStatic_main___globals, "faster_hexbytes.main.HexBytes", cpy_r_r5); + goto CPyL4; + } + return cpy_r_r6; +CPyL4: ; + cpy_r_r7 = NULL; + return cpy_r_r7; +CPyL5: ; + CPy_DecRef(cpy_r_r0); + goto CPyL4; +} + +PyObject *CPyPy_main_____new___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + PyObject *obj___mypyc_self__ = self; + static const char * const kwlist[] = {"cls", "val", 0}; + static CPyArg_Parser parser = {"OO:__call__", kwlist, 0}; + PyObject *obj_cls; + PyObject *obj_val; + if (!CPyArg_ParseStackAndKeywordsSimple(args, PyVectorcall_NARGS(nargs), kwnames, &parser, &obj_cls, &obj_val)) { + return NULL; + } + PyObject *arg___mypyc_self__ = obj___mypyc_self__; + PyObject *arg_cls = obj_cls; + PyObject *arg_val; + if (PyBool_Check(obj_val)) + arg_val = obj_val; + else { + arg_val = NULL; + } + if (arg_val != NULL) goto __LL4; + arg_val = obj_val; + if (arg_val != NULL) goto __LL4; + if (PyBytes_Check(obj_val) || PyByteArray_Check(obj_val)) + arg_val = obj_val; + else { + arg_val = NULL; + } + if (arg_val != NULL) goto __LL4; + if (PyLong_Check(obj_val)) + arg_val = obj_val; + else { + arg_val = NULL; + } + if (arg_val != NULL) goto __LL4; + if (PyUnicode_Check(obj_val)) + arg_val = obj_val; + else { + arg_val = NULL; + } + if (arg_val != NULL) goto __LL4; + CPy_TypeError("union[bool, object, bytes, int, str]", obj_val); + goto fail; +__LL4: ; + PyObject *retval = CPyDef_main_____new___3_HexBytes_obj_____call__(arg___mypyc_self__, arg_cls, arg_val); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/main.py", "__new__", 41, CPyStatic_main___globals); + return NULL; +} + +PyObject *CPyDef_main_____getitem___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner) { + PyObject *cpy_r_r0; + char cpy_r_r1; + PyObject *cpy_r_r2; + PyObject *cpy_r_r3; + cpy_r_r0 = (PyObject *)&_Py_NoneStruct; + cpy_r_r1 = cpy_r_instance == cpy_r_r0; + if (!cpy_r_r1) goto CPyL2; + CPy_INCREF(cpy_r___mypyc_self__); + return cpy_r___mypyc_self__; +CPyL2: ; + cpy_r_r2 = PyMethod_New(cpy_r___mypyc_self__, cpy_r_instance); + if (cpy_r_r2 == NULL) goto CPyL4; + return cpy_r_r2; +CPyL4: ; + cpy_r_r3 = NULL; + return cpy_r_r3; +} + +PyObject *CPyPy_main_____getitem___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + PyObject *obj___mypyc_self__ = self; + static const char * const kwlist[] = {"instance", "owner", 0}; + static CPyArg_Parser parser = {"OO:__get__", kwlist, 0}; + PyObject *obj_instance; + PyObject *obj_owner; + if (!CPyArg_ParseStackAndKeywordsSimple(args, nargs, kwnames, &parser, &obj_instance, &obj_owner)) { + return NULL; + } + PyObject *arg___mypyc_self__ = obj___mypyc_self__; + PyObject *arg_instance = obj_instance; + PyObject *arg_owner = obj_owner; + PyObject *retval = CPyDef_main_____getitem___3_HexBytes_obj_____get__(arg___mypyc_self__, arg_instance, arg_owner); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/main.py", "__get__", -1, CPyStatic_main___globals); + return NULL; +} + +PyObject *CPyDef_main_____getitem___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self, PyObject *cpy_r_key) { + PyObject *cpy_r_r0; + PyObject *cpy_r_r1; + PyObject *cpy_r_r2; + PyObject *cpy_r_r3; + PyObject **cpy_r_r5; + PyObject *cpy_r_r6; + PyObject *cpy_r_r7; + PyObject *cpy_r_r8; + PyObject **cpy_r_r10; + PyObject *cpy_r_r11; + PyObject *cpy_r_r12; + PyObject *cpy_r_r13; + char cpy_r_r14; + PyObject *cpy_r_r15; + PyObject **cpy_r_r17; + PyObject *cpy_r_r18; + PyObject *cpy_r_r19; + CPyTagged cpy_r_r20; + PyObject *cpy_r_r21; + PyObject *cpy_r_r22; + cpy_r_r0 = CPyModule_builtins; + cpy_r_r1 = CPyStatics[37]; /* 'super' */ + cpy_r_r2 = CPyObject_GetAttr(cpy_r_r0, cpy_r_r1); + if (unlikely(cpy_r_r2 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 56, CPyStatic_main___globals); + goto CPyL11; + } + cpy_r_r3 = (PyObject *)CPyType_main___HexBytes; + PyObject *cpy_r_r4[2] = {cpy_r_r3, cpy_r_self}; + cpy_r_r5 = (PyObject **)&cpy_r_r4; + cpy_r_r6 = PyObject_Vectorcall(cpy_r_r2, cpy_r_r5, 2, 0); + CPy_DECREF(cpy_r_r2); + if (unlikely(cpy_r_r6 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 56, CPyStatic_main___globals); + goto CPyL11; + } + cpy_r_r7 = CPyStatics[38]; /* '__getitem__' */ + cpy_r_r8 = CPyObject_GetAttr(cpy_r_r6, cpy_r_r7); + CPy_DECREF(cpy_r_r6); + if (unlikely(cpy_r_r8 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 56, CPyStatic_main___globals); + goto CPyL11; + } + PyObject *cpy_r_r9[1] = {cpy_r_key}; + cpy_r_r10 = (PyObject **)&cpy_r_r9; + cpy_r_r11 = PyObject_Vectorcall(cpy_r_r8, cpy_r_r10, 1, 0); + CPy_DECREF(cpy_r_r8); + if (unlikely(cpy_r_r11 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 56, CPyStatic_main___globals); + goto CPyL11; + } + if (PyLong_Check(cpy_r_r11)) + cpy_r_r12 = cpy_r_r11; + else { + cpy_r_r12 = NULL; + } + if (cpy_r_r12 != NULL) goto __LL5; + if (PyBytes_Check(cpy_r_r11) || PyByteArray_Check(cpy_r_r11)) + cpy_r_r12 = cpy_r_r11; + else { + cpy_r_r12 = NULL; + } + if (cpy_r_r12 != NULL) goto __LL5; + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__getitem__", 56, CPyStatic_main___globals, "union[int, bytes]", cpy_r_r11); + goto CPyL11; +__LL5: ; + cpy_r_r13 = CPyStatics[15]; /* 'hex' */ + cpy_r_r14 = PyObject_HasAttr(cpy_r_r12, cpy_r_r13); + if (!cpy_r_r14) goto CPyL9; + cpy_r_r15 = CPy_TYPE(cpy_r_self); + PyObject *cpy_r_r16[1] = {cpy_r_r12}; + cpy_r_r17 = (PyObject **)&cpy_r_r16; + cpy_r_r18 = PyObject_Vectorcall(cpy_r_r15, cpy_r_r17, 1, 0); + CPy_DECREF(cpy_r_r15); + if (unlikely(cpy_r_r18 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 58, CPyStatic_main___globals); + goto CPyL12; + } + CPy_DECREF(cpy_r_r12); + if (likely(Py_TYPE(cpy_r_r18) == CPyType_main___HexBytes)) + cpy_r_r19 = cpy_r_r18; + else { + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__getitem__", 58, CPyStatic_main___globals, "faster_hexbytes.main.HexBytes", cpy_r_r18); + goto CPyL11; + } + return cpy_r_r19; +CPyL9: ; + if (likely(PyLong_Check(cpy_r_r12))) + cpy_r_r20 = CPyTagged_FromObject(cpy_r_r12); + else { + CPy_TypeError("int", cpy_r_r12); cpy_r_r20 = CPY_INT_TAG; + } + CPy_DECREF(cpy_r_r12); + if (unlikely(cpy_r_r20 == CPY_INT_TAG)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 60, CPyStatic_main___globals); + goto CPyL11; + } + cpy_r_r21 = CPyTagged_StealAsObject(cpy_r_r20); + return cpy_r_r21; +CPyL11: ; + cpy_r_r22 = NULL; + return cpy_r_r22; +CPyL12: ; + CPy_DecRef(cpy_r_r12); + goto CPyL11; +} + +PyObject *CPyPy_main_____getitem___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + PyObject *obj___mypyc_self__ = self; + static const char * const kwlist[] = {"self", "key", 0}; + static CPyArg_Parser parser = {"OO:__call__", kwlist, 0}; + PyObject *obj_self; + PyObject *obj_key; + if (!CPyArg_ParseStackAndKeywordsSimple(args, PyVectorcall_NARGS(nargs), kwnames, &parser, &obj_self, &obj_key)) { + return NULL; + } + PyObject *arg___mypyc_self__ = obj___mypyc_self__; + PyObject *arg_self; + if (likely(Py_TYPE(obj_self) == CPyType_main___HexBytes)) + arg_self = obj_self; + else { + CPy_TypeError("faster_hexbytes.main.HexBytes", obj_self); + goto fail; + } + PyObject *arg_key = obj_key; + PyObject *retval = CPyDef_main_____getitem___3_HexBytes_obj_____call__(arg___mypyc_self__, arg_self, arg_key); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 53, CPyStatic_main___globals); + return NULL; +} + +PyObject *CPyDef_main_____repr___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner) { + PyObject *cpy_r_r0; + char cpy_r_r1; + PyObject *cpy_r_r2; + PyObject *cpy_r_r3; + cpy_r_r0 = (PyObject *)&_Py_NoneStruct; + cpy_r_r1 = cpy_r_instance == cpy_r_r0; + if (!cpy_r_r1) goto CPyL2; + CPy_INCREF(cpy_r___mypyc_self__); + return cpy_r___mypyc_self__; +CPyL2: ; + cpy_r_r2 = PyMethod_New(cpy_r___mypyc_self__, cpy_r_instance); + if (cpy_r_r2 == NULL) goto CPyL4; + return cpy_r_r2; +CPyL4: ; + cpy_r_r3 = NULL; + return cpy_r_r3; +} + +PyObject *CPyPy_main_____repr___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + PyObject *obj___mypyc_self__ = self; + static const char * const kwlist[] = {"instance", "owner", 0}; + static CPyArg_Parser parser = {"OO:__get__", kwlist, 0}; + PyObject *obj_instance; + PyObject *obj_owner; + if (!CPyArg_ParseStackAndKeywordsSimple(args, nargs, kwnames, &parser, &obj_instance, &obj_owner)) { + return NULL; + } + PyObject *arg___mypyc_self__ = obj___mypyc_self__; + PyObject *arg_instance = obj_instance; + PyObject *arg_owner = obj_owner; + PyObject *retval = CPyDef_main_____repr___3_HexBytes_obj_____get__(arg___mypyc_self__, arg_instance, arg_owner); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/main.py", "__get__", -1, CPyStatic_main___globals); + return NULL; +} + +PyObject *CPyDef_main_____repr___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self) { + PyObject *cpy_r_r0; + PyObject *cpy_r_r1; + PyObject *cpy_r_r2; + PyObject *cpy_r_r3; + PyObject *cpy_r_r4; + PyObject **cpy_r_r6; + PyObject *cpy_r_r7; + PyObject *cpy_r_r8; + PyObject *cpy_r_r9; + PyObject *cpy_r_r10; + PyObject *cpy_r_r11; + PyObject **cpy_r_r13; + PyObject *cpy_r_r14; + PyObject *cpy_r_r15; + PyObject *cpy_r_r16; + PyObject *cpy_r_r17; + CPyPtr cpy_r_r18; + CPyPtr cpy_r_r19; + CPyPtr cpy_r_r20; + CPyPtr cpy_r_r21; + PyObject *cpy_r_r22; + PyObject *cpy_r_r23; + cpy_r_r0 = CPyStatics[17]; /* '' */ + cpy_r_r1 = CPyStatics[39]; /* 'HexBytes(' */ + cpy_r_r2 = CPyStatics[19]; /* '{!r:{}}' */ + cpy_r_r3 = CPyStatics[24]; /* '0x' */ + cpy_r_r4 = CPyStatics[15]; /* 'hex' */ + PyObject *cpy_r_r5[1] = {cpy_r_self}; + cpy_r_r6 = (PyObject **)&cpy_r_r5; + cpy_r_r7 = PyObject_VectorcallMethod(cpy_r_r4, cpy_r_r6, 9223372036854775809ULL, 0); + if (unlikely(cpy_r_r7 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 63, CPyStatic_main___globals); + goto CPyL8; + } + if (likely(PyUnicode_Check(cpy_r_r7))) + cpy_r_r8 = cpy_r_r7; + else { + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__repr__", 63, CPyStatic_main___globals, "str", cpy_r_r7); + goto CPyL8; + } + cpy_r_r9 = PyUnicode_Concat(cpy_r_r3, cpy_r_r8); + CPy_DECREF(cpy_r_r8); + if (unlikely(cpy_r_r9 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 63, CPyStatic_main___globals); + goto CPyL8; + } + cpy_r_r10 = CPyStatics[17]; /* '' */ + cpy_r_r11 = CPyStatics[20]; /* 'format' */ + PyObject *cpy_r_r12[3] = {cpy_r_r2, cpy_r_r9, cpy_r_r10}; + cpy_r_r13 = (PyObject **)&cpy_r_r12; + cpy_r_r14 = PyObject_VectorcallMethod(cpy_r_r11, cpy_r_r13, 9223372036854775811ULL, 0); + if (unlikely(cpy_r_r14 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 63, CPyStatic_main___globals); + goto CPyL9; + } + CPy_DECREF(cpy_r_r9); + if (likely(PyUnicode_Check(cpy_r_r14))) + cpy_r_r15 = cpy_r_r14; + else { + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__repr__", 63, CPyStatic_main___globals, "str", cpy_r_r14); + goto CPyL8; + } + cpy_r_r16 = CPyStatics[40]; /* ')' */ + cpy_r_r17 = PyList_New(3); + if (unlikely(cpy_r_r17 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 63, CPyStatic_main___globals); + goto CPyL10; + } + cpy_r_r18 = (CPyPtr)&((PyListObject *)cpy_r_r17)->ob_item; + cpy_r_r19 = *(CPyPtr *)cpy_r_r18; + CPy_INCREF(cpy_r_r1); + *(PyObject * *)cpy_r_r19 = cpy_r_r1; + cpy_r_r20 = cpy_r_r19 + 8; + *(PyObject * *)cpy_r_r20 = cpy_r_r15; + CPy_INCREF(cpy_r_r16); + cpy_r_r21 = cpy_r_r19 + 16; + *(PyObject * *)cpy_r_r21 = cpy_r_r16; + cpy_r_r22 = PyUnicode_Join(cpy_r_r0, cpy_r_r17); + CPy_DECREF_NO_IMM(cpy_r_r17); + if (unlikely(cpy_r_r22 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 63, CPyStatic_main___globals); + goto CPyL8; + } + return cpy_r_r22; +CPyL8: ; + cpy_r_r23 = NULL; + return cpy_r_r23; +CPyL9: ; + CPy_DecRef(cpy_r_r9); + goto CPyL8; +CPyL10: ; + CPy_DecRef(cpy_r_r15); + goto CPyL8; +} + +PyObject *CPyPy_main_____repr___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + PyObject *obj___mypyc_self__ = self; + static const char * const kwlist[] = {"self", 0}; + static CPyArg_Parser parser = {"O:__call__", kwlist, 0}; + PyObject *obj_self; + if (!CPyArg_ParseStackAndKeywordsOneArg(args, PyVectorcall_NARGS(nargs), kwnames, &parser, &obj_self)) { + return NULL; + } + PyObject *arg___mypyc_self__ = obj___mypyc_self__; + PyObject *arg_self; + if (likely(Py_TYPE(obj_self) == CPyType_main___HexBytes)) + arg_self = obj_self; + else { + CPy_TypeError("faster_hexbytes.main.HexBytes", obj_self); + goto fail; + } + PyObject *retval = CPyDef_main_____repr___3_HexBytes_obj_____call__(arg___mypyc_self__, arg_self); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 62, CPyStatic_main___globals); + return NULL; +} + +PyObject *CPyDef_main___to_0x_hex_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner) { + PyObject *cpy_r_r0; + char cpy_r_r1; + PyObject *cpy_r_r2; + PyObject *cpy_r_r3; + cpy_r_r0 = (PyObject *)&_Py_NoneStruct; + cpy_r_r1 = cpy_r_instance == cpy_r_r0; + if (!cpy_r_r1) goto CPyL2; + CPy_INCREF(cpy_r___mypyc_self__); + return cpy_r___mypyc_self__; +CPyL2: ; + cpy_r_r2 = PyMethod_New(cpy_r___mypyc_self__, cpy_r_instance); + if (cpy_r_r2 == NULL) goto CPyL4; + return cpy_r_r2; +CPyL4: ; + cpy_r_r3 = NULL; + return cpy_r_r3; +} + +PyObject *CPyPy_main___to_0x_hex_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + PyObject *obj___mypyc_self__ = self; + static const char * const kwlist[] = {"instance", "owner", 0}; + static CPyArg_Parser parser = {"OO:__get__", kwlist, 0}; + PyObject *obj_instance; + PyObject *obj_owner; + if (!CPyArg_ParseStackAndKeywordsSimple(args, nargs, kwnames, &parser, &obj_instance, &obj_owner)) { + return NULL; + } + PyObject *arg___mypyc_self__ = obj___mypyc_self__; + PyObject *arg_instance = obj_instance; + PyObject *arg_owner = obj_owner; + PyObject *retval = CPyDef_main___to_0x_hex_HexBytes_obj_____get__(arg___mypyc_self__, arg_instance, arg_owner); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/main.py", "__get__", -1, CPyStatic_main___globals); + return NULL; +} + +PyObject *CPyDef_main___to_0x_hex_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self) { + PyObject *cpy_r_r0; + PyObject *cpy_r_r1; + PyObject **cpy_r_r3; + PyObject *cpy_r_r4; + PyObject *cpy_r_r5; + PyObject *cpy_r_r6; + PyObject *cpy_r_r7; + cpy_r_r0 = CPyStatics[24]; /* '0x' */ + cpy_r_r1 = CPyStatics[15]; /* 'hex' */ + PyObject *cpy_r_r2[1] = {cpy_r_self}; + cpy_r_r3 = (PyObject **)&cpy_r_r2; + cpy_r_r4 = PyObject_VectorcallMethod(cpy_r_r1, cpy_r_r3, 9223372036854775809ULL, 0); + if (unlikely(cpy_r_r4 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "to_0x_hex", 69, CPyStatic_main___globals); + goto CPyL4; + } + if (likely(PyUnicode_Check(cpy_r_r4))) + cpy_r_r5 = cpy_r_r4; + else { + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "to_0x_hex", 69, CPyStatic_main___globals, "str", cpy_r_r4); + goto CPyL4; + } + cpy_r_r6 = PyUnicode_Concat(cpy_r_r0, cpy_r_r5); + CPy_DECREF(cpy_r_r5); + if (unlikely(cpy_r_r6 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "to_0x_hex", 69, CPyStatic_main___globals); + goto CPyL4; + } + return cpy_r_r6; +CPyL4: ; + cpy_r_r7 = NULL; + return cpy_r_r7; +} + +PyObject *CPyPy_main___to_0x_hex_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + PyObject *obj___mypyc_self__ = self; + static const char * const kwlist[] = {"self", 0}; + static CPyArg_Parser parser = {"O:__call__", kwlist, 0}; + PyObject *obj_self; + if (!CPyArg_ParseStackAndKeywordsOneArg(args, PyVectorcall_NARGS(nargs), kwnames, &parser, &obj_self)) { + return NULL; + } + PyObject *arg___mypyc_self__ = obj___mypyc_self__; + PyObject *arg_self; + if (likely(Py_TYPE(obj_self) == CPyType_main___HexBytes)) + arg_self = obj_self; + else { + CPy_TypeError("faster_hexbytes.main.HexBytes", obj_self); + goto fail; + } + PyObject *retval = CPyDef_main___to_0x_hex_HexBytes_obj_____call__(arg___mypyc_self__, arg_self); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/main.py", "to_0x_hex", 65, CPyStatic_main___globals); + return NULL; +} + +PyObject *CPyDef_main_____reduce___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner) { + PyObject *cpy_r_r0; + char cpy_r_r1; + PyObject *cpy_r_r2; + PyObject *cpy_r_r3; + cpy_r_r0 = (PyObject *)&_Py_NoneStruct; + cpy_r_r1 = cpy_r_instance == cpy_r_r0; + if (!cpy_r_r1) goto CPyL2; + CPy_INCREF(cpy_r___mypyc_self__); + return cpy_r___mypyc_self__; +CPyL2: ; + cpy_r_r2 = PyMethod_New(cpy_r___mypyc_self__, cpy_r_instance); + if (cpy_r_r2 == NULL) goto CPyL4; + return cpy_r_r2; +CPyL4: ; + cpy_r_r3 = NULL; + return cpy_r_r3; +} + +PyObject *CPyPy_main_____reduce___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + PyObject *obj___mypyc_self__ = self; + static const char * const kwlist[] = {"instance", "owner", 0}; + static CPyArg_Parser parser = {"OO:__get__", kwlist, 0}; + PyObject *obj_instance; + PyObject *obj_owner; + if (!CPyArg_ParseStackAndKeywordsSimple(args, nargs, kwnames, &parser, &obj_instance, &obj_owner)) { + return NULL; + } + PyObject *arg___mypyc_self__ = obj___mypyc_self__; + PyObject *arg_instance = obj_instance; + PyObject *arg_owner = obj_owner; + PyObject *retval = CPyDef_main_____reduce___3_HexBytes_obj_____get__(arg___mypyc_self__, arg_instance, arg_owner); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/main.py", "__get__", -1, CPyStatic_main___globals); + return NULL; +} + +tuple_T2OT2OO CPyDef_main_____reduce___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self) { + PyObject *cpy_r_r0; + PyObject *cpy_r_r1; + PyObject *cpy_r_r2; + PyObject *cpy_r_r3; + PyObject *cpy_r_r4; + PyObject **cpy_r_r6; + PyObject *cpy_r_r7; + PyObject *cpy_r_r8; + tuple_T2OO cpy_r_r9; + tuple_T2OT2OO cpy_r_r10; + tuple_T2OT2OO cpy_r_r11; + cpy_r_r0 = (PyObject *)&PyBytes_Type; + cpy_r_r1 = CPyStatics[36]; /* '__new__' */ + cpy_r_r2 = CPyObject_GetAttr(cpy_r_r0, cpy_r_r1); + if (unlikely(cpy_r_r2 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__reduce__", 79, CPyStatic_main___globals); + goto CPyL4; + } + cpy_r_r3 = CPy_TYPE(cpy_r_self); + cpy_r_r4 = (PyObject *)&PyBytes_Type; + PyObject *cpy_r_r5[1] = {cpy_r_self}; + cpy_r_r6 = (PyObject **)&cpy_r_r5; + cpy_r_r7 = PyObject_Vectorcall(cpy_r_r4, cpy_r_r6, 1, 0); + if (unlikely(cpy_r_r7 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__reduce__", 79, CPyStatic_main___globals); + goto CPyL5; + } + if (likely(PyBytes_Check(cpy_r_r7) || PyByteArray_Check(cpy_r_r7))) + cpy_r_r8 = cpy_r_r7; + else { + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__reduce__", 79, CPyStatic_main___globals, "bytes", cpy_r_r7); + goto CPyL5; + } + cpy_r_r9.f0 = cpy_r_r3; + cpy_r_r9.f1 = cpy_r_r8; + cpy_r_r10.f0 = cpy_r_r2; + cpy_r_r10.f1 = cpy_r_r9; + return cpy_r_r10; +CPyL4: ; + tuple_T2OT2OO __tmp6 = { NULL, (tuple_T2OO) { NULL, NULL } }; + cpy_r_r11 = __tmp6; + return cpy_r_r11; +CPyL5: ; + CPy_DecRef(cpy_r_r2); + CPy_DecRef(cpy_r_r3); + goto CPyL4; +} + +PyObject *CPyPy_main_____reduce___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + PyObject *obj___mypyc_self__ = self; + static const char * const kwlist[] = {"self", 0}; + static CPyArg_Parser parser = {"O:__call__", kwlist, 0}; + PyObject *obj_self; + if (!CPyArg_ParseStackAndKeywordsOneArg(args, PyVectorcall_NARGS(nargs), kwnames, &parser, &obj_self)) { + return NULL; + } + PyObject *arg___mypyc_self__ = obj___mypyc_self__; + PyObject *arg_self; + if (likely(Py_TYPE(obj_self) == CPyType_main___HexBytes)) + arg_self = obj_self; + else { + CPy_TypeError("faster_hexbytes.main.HexBytes", obj_self); + goto fail; + } + tuple_T2OT2OO retval = CPyDef_main_____reduce___3_HexBytes_obj_____call__(arg___mypyc_self__, arg_self); + if (retval.f0 == NULL) { + return NULL; + } + PyObject *retbox = PyTuple_New(2); + if (unlikely(retbox == NULL)) + CPyError_OutOfMemory(); + PyObject *__tmp7 = retval.f0; + PyTuple_SET_ITEM(retbox, 0, __tmp7); + PyObject *__tmp8 = PyTuple_New(2); + if (unlikely(__tmp8 == NULL)) + CPyError_OutOfMemory(); + PyObject *__tmp9 = retval.f1.f0; + PyTuple_SET_ITEM(__tmp8, 0, __tmp9); + PyObject *__tmp10 = retval.f1.f1; + PyTuple_SET_ITEM(__tmp8, 1, __tmp10); + PyTuple_SET_ITEM(retbox, 1, __tmp8); + return retbox; +fail: ; + CPy_AddTraceback("faster_hexbytes/main.py", "__reduce__", 71, CPyStatic_main___globals); + return NULL; +} + +char CPyDef_main_____top_level__(void) { + PyObject *cpy_r_r0; + PyObject *cpy_r_r1; + char cpy_r_r2; + PyObject *cpy_r_r3; + PyObject *cpy_r_r4; + PyObject *cpy_r_r5; + PyObject *cpy_r_r6; + PyObject *cpy_r_r7; + PyObject *cpy_r_r8; + PyObject *cpy_r_r9; + PyObject *cpy_r_r10; + PyObject *cpy_r_r11; + PyObject *cpy_r_r12; + PyObject *cpy_r_r13; + PyObject *cpy_r_r14; + PyObject *cpy_r_r15; + PyObject *cpy_r_r16; + PyObject *cpy_r_r17; + PyObject *cpy_r_r18; + PyObject *cpy_r_r19; + PyObject *cpy_r_r20; + PyObject *cpy_r_r21; + PyObject *cpy_r_r22; + PyObject *cpy_r_r23; + PyObject *cpy_r_r24; + PyObject *cpy_r_r25; + PyObject *cpy_r_r26; + PyObject *cpy_r_r27; + PyObject *cpy_r_r28; + PyObject *cpy_r_r29; + PyObject *cpy_r_r30; + PyObject *cpy_r_r31; + PyObject *cpy_r_r32; + PyObject *cpy_r_r33; + tuple_T6OOOOOO cpy_r_r34; + PyObject *cpy_r_r35; + PyObject *cpy_r_r36; + PyObject *cpy_r_r37; + PyObject *cpy_r_r38; + int32_t cpy_r_r39; + char cpy_r_r40; + PyObject *cpy_r_r41; + PyObject *cpy_r_r42; + PyObject *cpy_r_r43; + PyObject *cpy_r_r44; + PyObject *cpy_r_r45; + PyObject *cpy_r_r46; + PyObject *cpy_r_r47; + char cpy_r_r48; + PyObject *cpy_r_r49; + PyObject *cpy_r_r50; + PyObject *cpy_r_r51; + PyObject **cpy_r_r53; + PyObject *cpy_r_r54; + PyObject *cpy_r_r55; + PyObject *cpy_r_r56; + PyObject *cpy_r_r57; + PyObject *cpy_r_r58; + PyObject *cpy_r_r59; + PyObject *cpy_r_r60; + PyObject *cpy_r_r61; + PyObject *cpy_r_r62; + PyObject **cpy_r_r64; + PyObject *cpy_r_r65; + PyObject *cpy_r_r66; + int32_t cpy_r_r67; + char cpy_r_r68; + PyObject *cpy_r_r69; + PyObject *cpy_r_r70; + int32_t cpy_r_r71; + char cpy_r_r72; + PyObject *cpy_r_r73; + PyObject *cpy_r_r74; + int32_t cpy_r_r75; + char cpy_r_r76; + PyObject *cpy_r_r77; + PyObject *cpy_r_r78; + int32_t cpy_r_r79; + char cpy_r_r80; + PyObject *cpy_r_r81; + PyObject *cpy_r_r82; + int32_t cpy_r_r83; + char cpy_r_r84; + PyObject *cpy_r_r85; + PyObject *cpy_r_r86; + int32_t cpy_r_r87; + char cpy_r_r88; + PyObject *cpy_r_r89; + PyObject *cpy_r_r90; + int32_t cpy_r_r91; + char cpy_r_r92; + PyObject *cpy_r_r93; + PyObject *cpy_r_r94; + int32_t cpy_r_r95; + char cpy_r_r96; + PyObject **cpy_r_r98; + PyObject *cpy_r_r99; + PyObject *cpy_r_r100; + PyObject *cpy_r_r101; + PyObject *cpy_r_r102; + PyObject *cpy_r_r103; + PyObject **cpy_r_r105; + PyObject *cpy_r_r106; + PyObject *cpy_r_r107; + PyObject **cpy_r_r109; + PyObject *cpy_r_r110; + PyObject *cpy_r_r111; + PyObject *cpy_r_r112; + int32_t cpy_r_r113; + char cpy_r_r114; + PyObject *cpy_r_r115; + char cpy_r_r116; + cpy_r_r0 = CPyModule_builtins; + cpy_r_r1 = (PyObject *)&_Py_NoneStruct; + cpy_r_r2 = cpy_r_r0 != cpy_r_r1; + if (cpy_r_r2) goto CPyL3; + cpy_r_r3 = CPyStatics[3]; /* 'builtins' */ + cpy_r_r4 = PyImport_Import(cpy_r_r3); + if (unlikely(cpy_r_r4 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", -1, CPyStatic_main___globals); + goto CPyL45; + } + CPyModule_builtins = cpy_r_r4; + CPy_INCREF(CPyModule_builtins); + CPy_DECREF(cpy_r_r4); +CPyL3: ; + cpy_r_r5 = CPyStatics[73]; /* ('TYPE_CHECKING', 'Callable', 'Tuple', 'Type', 'Union', + 'overload') */ + cpy_r_r6 = CPyStatics[35]; /* 'typing' */ + cpy_r_r7 = CPyStatic_main___globals; + cpy_r_r8 = CPyImport_ImportFromMany(cpy_r_r6, cpy_r_r5, cpy_r_r5, cpy_r_r7); + if (unlikely(cpy_r_r8 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 1, CPyStatic_main___globals); + goto CPyL45; + } + CPyModule_typing = cpy_r_r8; + CPy_INCREF(CPyModule_typing); + CPy_DECREF(cpy_r_r8); + cpy_r_r9 = CPyStatics[74]; /* ('mypyc_attr',) */ + cpy_r_r10 = CPyStatics[47]; /* 'mypy_extensions' */ + cpy_r_r11 = CPyStatic_main___globals; + cpy_r_r12 = CPyImport_ImportFromMany(cpy_r_r10, cpy_r_r9, cpy_r_r9, cpy_r_r11); + if (unlikely(cpy_r_r12 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 10, CPyStatic_main___globals); + goto CPyL45; + } + CPyModule_mypy_extensions = cpy_r_r12; + CPy_INCREF(CPyModule_mypy_extensions); + CPy_DECREF(cpy_r_r12); + cpy_r_r13 = CPyStatics[75]; /* ('Self',) */ + cpy_r_r14 = CPyStatics[49]; /* 'typing_extensions' */ + cpy_r_r15 = CPyStatic_main___globals; + cpy_r_r16 = CPyImport_ImportFromMany(cpy_r_r14, cpy_r_r13, cpy_r_r13, cpy_r_r15); + if (unlikely(cpy_r_r16 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 13, CPyStatic_main___globals); + goto CPyL45; + } + CPyModule_typing_extensions = cpy_r_r16; + CPy_INCREF(CPyModule_typing_extensions); + CPy_DECREF(cpy_r_r16); + cpy_r_r17 = CPyStatics[76]; /* ('to_bytes',) */ + cpy_r_r18 = CPyStatics[51]; /* 'faster_hexbytes._utils' */ + cpy_r_r19 = CPyStatic_main___globals; + cpy_r_r20 = CPyImport_ImportFromMany(cpy_r_r18, cpy_r_r17, cpy_r_r17, cpy_r_r19); + if (unlikely(cpy_r_r20 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 17, CPyStatic_main___globals); + goto CPyL45; + } + CPyModule_faster_hexbytes____utils = cpy_r_r20; + CPy_INCREF(CPyModule_faster_hexbytes____utils); + CPy_DECREF(cpy_r_r20); + cpy_r_r21 = CPyStatic_main___globals; + cpy_r_r22 = CPyStatics[34]; /* 'Union' */ + cpy_r_r23 = CPyDict_GetItem(cpy_r_r21, cpy_r_r22); + if (unlikely(cpy_r_r23 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 26, CPyStatic_main___globals); + goto CPyL45; + } + cpy_r_r24 = (PyObject *)&PyBool_Type; + cpy_r_r25 = CPyModule_builtins; + cpy_r_r26 = CPyStatics[52]; /* 'bytearray' */ + cpy_r_r27 = CPyObject_GetAttr(cpy_r_r25, cpy_r_r26); + if (unlikely(cpy_r_r27 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 26, CPyStatic_main___globals); + goto CPyL46; + } + cpy_r_r28 = (PyObject *)&PyBytes_Type; + cpy_r_r29 = (PyObject *)&PyLong_Type; + cpy_r_r30 = (PyObject *)&PyUnicode_Type; + cpy_r_r31 = CPyModule_builtins; + cpy_r_r32 = CPyStatics[16]; /* 'memoryview' */ + cpy_r_r33 = CPyObject_GetAttr(cpy_r_r31, cpy_r_r32); + if (unlikely(cpy_r_r33 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 26, CPyStatic_main___globals); + goto CPyL47; + } + CPy_INCREF(cpy_r_r24); + CPy_INCREF(cpy_r_r28); + CPy_INCREF(cpy_r_r29); + CPy_INCREF(cpy_r_r30); + cpy_r_r34.f0 = cpy_r_r24; + cpy_r_r34.f1 = cpy_r_r27; + cpy_r_r34.f2 = cpy_r_r28; + cpy_r_r34.f3 = cpy_r_r29; + cpy_r_r34.f4 = cpy_r_r30; + cpy_r_r34.f5 = cpy_r_r33; + cpy_r_r35 = PyTuple_New(6); + if (unlikely(cpy_r_r35 == NULL)) + CPyError_OutOfMemory(); + PyObject *__tmp11 = cpy_r_r34.f0; + PyTuple_SET_ITEM(cpy_r_r35, 0, __tmp11); + PyObject *__tmp12 = cpy_r_r34.f1; + PyTuple_SET_ITEM(cpy_r_r35, 1, __tmp12); + PyObject *__tmp13 = cpy_r_r34.f2; + PyTuple_SET_ITEM(cpy_r_r35, 2, __tmp13); + PyObject *__tmp14 = cpy_r_r34.f3; + PyTuple_SET_ITEM(cpy_r_r35, 3, __tmp14); + PyObject *__tmp15 = cpy_r_r34.f4; + PyTuple_SET_ITEM(cpy_r_r35, 4, __tmp15); + PyObject *__tmp16 = cpy_r_r34.f5; + PyTuple_SET_ITEM(cpy_r_r35, 5, __tmp16); + cpy_r_r36 = PyObject_GetItem(cpy_r_r23, cpy_r_r35); + CPy_DECREF(cpy_r_r23); + CPy_DECREF(cpy_r_r35); + if (unlikely(cpy_r_r36 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 26, CPyStatic_main___globals); + goto CPyL45; + } + cpy_r_r37 = CPyStatic_main___globals; + cpy_r_r38 = CPyStatics[53]; /* 'BytesLike' */ + cpy_r_r39 = CPyDict_SetItem(cpy_r_r37, cpy_r_r38, cpy_r_r36); + CPy_DECREF(cpy_r_r36); + cpy_r_r40 = cpy_r_r39 >= 0; + if (unlikely(!cpy_r_r40)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 26, CPyStatic_main___globals); + goto CPyL45; + } + cpy_r_r41 = CPyModule_builtins; + cpy_r_r42 = CPyStatics[54]; /* 'bytes' */ + cpy_r_r43 = CPyObject_GetAttr(cpy_r_r41, cpy_r_r42); + if (unlikely(cpy_r_r43 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 30, CPyStatic_main___globals); + goto CPyL45; + } + cpy_r_r44 = PyTuple_Pack(1, cpy_r_r43); + CPy_DECREF(cpy_r_r43); + if (unlikely(cpy_r_r44 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 30, CPyStatic_main___globals); + goto CPyL45; + } + cpy_r_r45 = (PyObject *)&PyType_Type; + cpy_r_r46 = CPy_CalculateMetaclass(cpy_r_r45, cpy_r_r44); + if (unlikely(cpy_r_r46 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 30, CPyStatic_main___globals); + goto CPyL48; + } + cpy_r_r47 = CPyStatics[55]; /* '__prepare__' */ + cpy_r_r48 = PyObject_HasAttr(cpy_r_r46, cpy_r_r47); + if (!cpy_r_r48) goto CPyL21; + cpy_r_r49 = CPyStatics[7]; /* 'HexBytes' */ + cpy_r_r50 = CPyStatics[55]; /* '__prepare__' */ + cpy_r_r51 = CPyObject_GetAttr(cpy_r_r46, cpy_r_r50); + if (unlikely(cpy_r_r51 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 30, CPyStatic_main___globals); + goto CPyL48; + } + PyObject *cpy_r_r52[2] = {cpy_r_r49, cpy_r_r44}; + cpy_r_r53 = (PyObject **)&cpy_r_r52; + cpy_r_r54 = PyObject_Vectorcall(cpy_r_r51, cpy_r_r53, 2, 0); + CPy_DECREF(cpy_r_r51); + if (unlikely(cpy_r_r54 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 30, CPyStatic_main___globals); + goto CPyL48; + } + if (likely(PyDict_Check(cpy_r_r54))) + cpy_r_r55 = cpy_r_r54; + else { + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "", 30, CPyStatic_main___globals, "dict", cpy_r_r54); + goto CPyL48; + } + cpy_r_r56 = cpy_r_r55; + goto CPyL23; +CPyL21: ; + cpy_r_r57 = PyDict_New(); + if (unlikely(cpy_r_r57 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 30, CPyStatic_main___globals); + goto CPyL48; + } + cpy_r_r56 = cpy_r_r57; +CPyL23: ; + cpy_r_r58 = PyDict_New(); + if (unlikely(cpy_r_r58 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 30, CPyStatic_main___globals); + goto CPyL49; + } + cpy_r_r59 = CPyDef_main_____new___3_HexBytes_obj(); + if (unlikely(cpy_r_r59 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 41, CPyStatic_main___globals); + goto CPyL50; + } + cpy_r_r60 = CPyModule_builtins; + cpy_r_r61 = CPyStatics[56]; /* 'staticmethod' */ + cpy_r_r62 = CPyObject_GetAttr(cpy_r_r60, cpy_r_r61); + if (unlikely(cpy_r_r62 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 41, CPyStatic_main___globals); + goto CPyL51; + } + PyObject *cpy_r_r63[1] = {cpy_r_r59}; + cpy_r_r64 = (PyObject **)&cpy_r_r63; + cpy_r_r65 = PyObject_Vectorcall(cpy_r_r62, cpy_r_r64, 1, 0); + CPy_DECREF(cpy_r_r62); + if (unlikely(cpy_r_r65 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 41, CPyStatic_main___globals); + goto CPyL51; + } + CPy_DECREF_NO_IMM(cpy_r_r59); + cpy_r_r66 = CPyStatics[36]; /* '__new__' */ + cpy_r_r67 = CPyDict_SetItem(cpy_r_r56, cpy_r_r66, cpy_r_r65); + CPy_DECREF(cpy_r_r65); + cpy_r_r68 = cpy_r_r67 >= 0; + if (unlikely(!cpy_r_r68)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 41, CPyStatic_main___globals); + goto CPyL50; + } + cpy_r_r69 = CPyDef_main_____getitem___3_HexBytes_obj(); + if (unlikely(cpy_r_r69 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 53, CPyStatic_main___globals); + goto CPyL50; + } + cpy_r_r70 = CPyStatics[38]; /* '__getitem__' */ + cpy_r_r71 = CPyDict_SetItem(cpy_r_r56, cpy_r_r70, cpy_r_r69); + CPy_DECREF_NO_IMM(cpy_r_r69); + cpy_r_r72 = cpy_r_r71 >= 0; + if (unlikely(!cpy_r_r72)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 53, CPyStatic_main___globals); + goto CPyL50; + } + cpy_r_r73 = CPyDef_main_____repr___3_HexBytes_obj(); + if (unlikely(cpy_r_r73 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 62, CPyStatic_main___globals); + goto CPyL50; + } + cpy_r_r74 = CPyStatics[57]; /* '__repr__' */ + cpy_r_r75 = CPyDict_SetItem(cpy_r_r56, cpy_r_r74, cpy_r_r73); + CPy_DECREF_NO_IMM(cpy_r_r73); + cpy_r_r76 = cpy_r_r75 >= 0; + if (unlikely(!cpy_r_r76)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 62, CPyStatic_main___globals); + goto CPyL50; + } + cpy_r_r77 = CPyDef_main___to_0x_hex_HexBytes_obj(); + if (unlikely(cpy_r_r77 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 65, CPyStatic_main___globals); + goto CPyL50; + } + cpy_r_r78 = CPyStatics[58]; /* 'to_0x_hex' */ + cpy_r_r79 = CPyDict_SetItem(cpy_r_r56, cpy_r_r78, cpy_r_r77); + CPy_DECREF_NO_IMM(cpy_r_r77); + cpy_r_r80 = cpy_r_r79 >= 0; + if (unlikely(!cpy_r_r80)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 65, CPyStatic_main___globals); + goto CPyL50; + } + cpy_r_r81 = CPyDef_main_____reduce___3_HexBytes_obj(); + if (unlikely(cpy_r_r81 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 71, CPyStatic_main___globals); + goto CPyL50; + } + cpy_r_r82 = CPyStatics[59]; /* '__reduce__' */ + cpy_r_r83 = CPyDict_SetItem(cpy_r_r56, cpy_r_r82, cpy_r_r81); + CPy_DECREF_NO_IMM(cpy_r_r81); + cpy_r_r84 = cpy_r_r83 >= 0; + if (unlikely(!cpy_r_r84)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 71, CPyStatic_main___globals); + goto CPyL50; + } + cpy_r_r85 = CPyStatics[7]; /* 'HexBytes' */ + cpy_r_r86 = CPyStatics[60]; /* '__annotations__' */ + cpy_r_r87 = CPyDict_SetItem(cpy_r_r56, cpy_r_r86, cpy_r_r58); + CPy_DECREF(cpy_r_r58); + cpy_r_r88 = cpy_r_r87 >= 0; + if (unlikely(!cpy_r_r88)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 30, CPyStatic_main___globals); + goto CPyL49; + } + cpy_r_r89 = CPyStatics[61]; /* 'mypyc filler docstring' */ + cpy_r_r90 = CPyStatics[62]; /* '__doc__' */ + cpy_r_r91 = CPyDict_SetItem(cpy_r_r56, cpy_r_r90, cpy_r_r89); + cpy_r_r92 = cpy_r_r91 >= 0; + if (unlikely(!cpy_r_r92)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 30, CPyStatic_main___globals); + goto CPyL49; + } + cpy_r_r93 = CPyStatics[8]; /* 'faster_hexbytes.main' */ + cpy_r_r94 = CPyStatics[63]; /* '__module__' */ + cpy_r_r95 = CPyDict_SetItem(cpy_r_r56, cpy_r_r94, cpy_r_r93); + cpy_r_r96 = cpy_r_r95 >= 0; + if (unlikely(!cpy_r_r96)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 30, CPyStatic_main___globals); + goto CPyL49; + } + PyObject *cpy_r_r97[3] = {cpy_r_r85, cpy_r_r44, cpy_r_r56}; + cpy_r_r98 = (PyObject **)&cpy_r_r97; + cpy_r_r99 = PyObject_Vectorcall(cpy_r_r46, cpy_r_r98, 3, 0); + if (unlikely(cpy_r_r99 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 30, CPyStatic_main___globals); + goto CPyL49; + } + CPy_DECREF(cpy_r_r56); + CPy_DECREF(cpy_r_r44); + cpy_r_r100 = CPyStatic_main___globals; + cpy_r_r101 = CPyStatics[46]; /* 'mypyc_attr' */ + cpy_r_r102 = CPyDict_GetItem(cpy_r_r100, cpy_r_r101); + if (unlikely(cpy_r_r102 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 29, CPyStatic_main___globals); + goto CPyL52; + } + cpy_r_r103 = 0 ? Py_True : Py_False; + PyObject *cpy_r_r104[1] = {cpy_r_r103}; + cpy_r_r105 = (PyObject **)&cpy_r_r104; + cpy_r_r106 = CPyStatics[77]; /* ('native_class',) */ + cpy_r_r107 = PyObject_Vectorcall(cpy_r_r102, cpy_r_r105, 0, cpy_r_r106); + CPy_DECREF(cpy_r_r102); + if (unlikely(cpy_r_r107 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 29, CPyStatic_main___globals); + goto CPyL52; + } + PyObject *cpy_r_r108[1] = {cpy_r_r99}; + cpy_r_r109 = (PyObject **)&cpy_r_r108; + cpy_r_r110 = PyObject_Vectorcall(cpy_r_r107, cpy_r_r109, 1, 0); + CPy_DECREF(cpy_r_r107); + if (unlikely(cpy_r_r110 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 30, CPyStatic_main___globals); + goto CPyL52; + } + CPy_DECREF(cpy_r_r99); + CPyType_main___HexBytes = (PyTypeObject *)cpy_r_r110; + CPy_INCREF(CPyType_main___HexBytes); + cpy_r_r111 = CPyStatic_main___globals; + cpy_r_r112 = CPyStatics[7]; /* 'HexBytes' */ + cpy_r_r113 = PyDict_SetItem(cpy_r_r111, cpy_r_r112, cpy_r_r110); + CPy_DECREF(cpy_r_r110); + cpy_r_r114 = cpy_r_r113 >= 0; + if (unlikely(!cpy_r_r114)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 30, CPyStatic_main___globals); + goto CPyL45; + } + cpy_r_r115 = (PyObject *)CPyType_main___HexBytes; + return 1; +CPyL45: ; + cpy_r_r116 = 2; + return cpy_r_r116; +CPyL46: ; + CPy_DecRef(cpy_r_r23); + goto CPyL45; +CPyL47: ; + CPy_DecRef(cpy_r_r23); + CPy_DecRef(cpy_r_r27); + goto CPyL45; +CPyL48: ; + CPy_DecRef(cpy_r_r44); + goto CPyL45; +CPyL49: ; + CPy_DecRef(cpy_r_r44); + CPy_DecRef(cpy_r_r56); + goto CPyL45; +CPyL50: ; + CPy_DecRef(cpy_r_r44); + CPy_DecRef(cpy_r_r56); + CPy_DecRef(cpy_r_r58); + goto CPyL45; +CPyL51: ; + CPy_DecRef(cpy_r_r44); + CPy_DecRef(cpy_r_r56); + CPy_DecRef(cpy_r_r58); + CPy_DecRef(cpy_r_r59); + goto CPyL45; +CPyL52: ; + CPy_DecRef(cpy_r_r99); + goto CPyL45; +} + +int CPyGlobalsInit(void) +{ + static int is_initialized = 0; + if (is_initialized) return 0; + + CPy_Init(); + CPyModule_faster_hexbytes = Py_None; + CPyModule_builtins = Py_None; + CPyModule_importlib___metadata = Py_None; + CPyModule_faster_hexbytes___main = Py_None; + CPyModule_faster_hexbytes____utils = Py_None; + CPyModule_builtins = Py_None; + CPyModule_binascii = Py_None; + CPyModule_typing = Py_None; + CPyModule_faster_hexbytes___main = Py_None; + CPyModule_builtins = Py_None; + CPyModule_typing = Py_None; + CPyModule_mypy_extensions = Py_None; + CPyModule_typing_extensions = Py_None; + CPyModule_faster_hexbytes____utils = Py_None; + if (CPyStatics_Initialize(CPyStatics, CPyLit_Str, CPyLit_Bytes, CPyLit_Int, CPyLit_Float, CPyLit_Complex, CPyLit_Tuple, CPyLit_FrozenSet) < 0) { + return -1; + } + is_initialized = 1; + return 0; +} + +PyObject *CPyStatics[78]; +const char * const CPyLit_Str[] = { + "\005\bbuiltins\aversion\t__version\022importlib.metadata\bHexBytes", + "\004\024faster_hexbytes.main\a__all__\bhexbytes\v__version__", + "\006 Cannot convert negative integer \t to bytes\nValueError\003hex\nmemoryview\000", + "\t\017Cannot convert \a{!r:{}}\006format\t of type \005{:{}}\tTypeError\0020x\0020X\0010", + "\002\022UnicodeDecodeError\vhex string ", + "\003( may only contain [0-9a-fA-F] characters\tunhexlify\bbinascii", + "\006\031faster_hexbytes/_utils.py\b\005Union\006typing\a__new__\005super", + "\b\v__getitem__\tHexBytes(\001)\rTYPE_CHECKING\bCallable\005Tuple\004Type\boverload", + "\005\nmypyc_attr\017mypy_extensions\004Self\021typing_extensions\bto_bytes", + "\005\026faster_hexbytes._utils\tbytearray\tBytesLike\005bytes\v__prepare__", + "\005\fstaticmethod\b__repr__\tto_0x_hex\n__reduce__\017__annotations__", + "\004\026mypyc filler docstring\a__doc__\n__module__\fnative_class", + "", +}; +const char * const CPyLit_Bytes[] = { + "\002\001\001\001\000", + "", +}; +const char * const CPyLit_Int[] = { + "", +}; +const double CPyLit_Float[] = {0}; +const double CPyLit_Complex[] = {0}; +const int CPyLit_Tuple[] = { + 11, 1, 4, 1, 5, 1, 7, 3, 31, 31, 31, 1, 70, 1, 34, 6, 41, 42, 43, + 44, 34, 45, 1, 46, 1, 48, 1, 50, 1, 64 +}; +const int CPyLit_FrozenSet[] = {0}; +CPyModule *CPyModule_faster_hexbytes__internal = NULL; +CPyModule *CPyModule_faster_hexbytes; +PyObject *CPyStatic_faster_hexbytes___globals; +CPyModule *CPyModule_builtins; +CPyModule *CPyModule_importlib___metadata; +CPyModule *CPyModule_faster_hexbytes___main__internal = NULL; +CPyModule *CPyModule_faster_hexbytes___main; +CPyModule *CPyModule_faster_hexbytes____utils__internal = NULL; +CPyModule *CPyModule_faster_hexbytes____utils; +PyObject *CPyStatic__utils___globals; +CPyModule *CPyModule_binascii; +CPyModule *CPyModule_typing; +PyObject *CPyStatic_main___globals; +CPyModule *CPyModule_mypy_extensions; +CPyModule *CPyModule_typing_extensions; +char CPyDef_faster_hexbytes_____top_level__(void); +PyObject *CPyDef__utils___to_bytes(PyObject *cpy_r_val); +PyObject *CPyPy__utils___to_bytes(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +PyObject *CPyDef__utils___hexstr_to_bytes(PyObject *cpy_r_hexstr); +PyObject *CPyPy__utils___hexstr_to_bytes(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +char CPyDef__utils_____top_level__(void); +PyTypeObject *CPyType_main___HexBytes; +PyTypeObject *CPyType_main_____new___3_HexBytes_obj; +PyObject *CPyDef_main_____new___3_HexBytes_obj(void); +CPyThreadLocal faster_hexbytes___main_____new___3_HexBytes_objObject *main_____new___3_HexBytes_obj_free_instance; +PyTypeObject *CPyType_main_____getitem___3_HexBytes_obj; +PyObject *CPyDef_main_____getitem___3_HexBytes_obj(void); +CPyThreadLocal faster_hexbytes___main_____getitem___3_HexBytes_objObject *main_____getitem___3_HexBytes_obj_free_instance; +PyTypeObject *CPyType_main_____repr___3_HexBytes_obj; +PyObject *CPyDef_main_____repr___3_HexBytes_obj(void); +CPyThreadLocal faster_hexbytes___main_____repr___3_HexBytes_objObject *main_____repr___3_HexBytes_obj_free_instance; +PyTypeObject *CPyType_main___to_0x_hex_HexBytes_obj; +PyObject *CPyDef_main___to_0x_hex_HexBytes_obj(void); +CPyThreadLocal faster_hexbytes___main___to_0x_hex_HexBytes_objObject *main___to_0x_hex_HexBytes_obj_free_instance; +PyTypeObject *CPyType_main_____reduce___3_HexBytes_obj; +PyObject *CPyDef_main_____reduce___3_HexBytes_obj(void); +CPyThreadLocal faster_hexbytes___main_____reduce___3_HexBytes_objObject *main_____reduce___3_HexBytes_obj_free_instance; +PyObject *CPyDef_main_____new___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); +PyObject *CPyPy_main_____new___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +PyObject *CPyDef_main_____new___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_cls, PyObject *cpy_r_val); +PyObject *CPyPy_main_____new___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +PyObject *CPyDef_main_____getitem___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); +PyObject *CPyPy_main_____getitem___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +PyObject *CPyDef_main_____getitem___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self, PyObject *cpy_r_key); +PyObject *CPyPy_main_____getitem___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +PyObject *CPyDef_main_____repr___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); +PyObject *CPyPy_main_____repr___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +PyObject *CPyDef_main_____repr___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self); +PyObject *CPyPy_main_____repr___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +PyObject *CPyDef_main___to_0x_hex_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); +PyObject *CPyPy_main___to_0x_hex_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +PyObject *CPyDef_main___to_0x_hex_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self); +PyObject *CPyPy_main___to_0x_hex_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +PyObject *CPyDef_main_____reduce___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); +PyObject *CPyPy_main_____reduce___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +tuple_T2OT2OO CPyDef_main_____reduce___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self); +PyObject *CPyPy_main_____reduce___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +char CPyDef_main_____top_level__(void); + +static int exec_6a32f4913d613d6a7ddf__mypyc(PyObject *module) +{ + int res; + PyObject *capsule; + PyObject *tmp; + + extern PyObject *CPyInit_faster_hexbytes(void); + capsule = PyCapsule_New((void *)CPyInit_faster_hexbytes, "6a32f4913d613d6a7ddf__mypyc.init_faster_hexbytes", NULL); + if (!capsule) { + goto fail; + } + res = PyObject_SetAttrString(module, "init_faster_hexbytes", capsule); + Py_DECREF(capsule); + if (res < 0) { + goto fail; + } + + extern PyObject *CPyInit_faster_hexbytes____utils(void); + capsule = PyCapsule_New((void *)CPyInit_faster_hexbytes____utils, "6a32f4913d613d6a7ddf__mypyc.init_faster_hexbytes____utils", NULL); + if (!capsule) { + goto fail; + } + res = PyObject_SetAttrString(module, "init_faster_hexbytes____utils", capsule); + Py_DECREF(capsule); + if (res < 0) { + goto fail; + } + + extern PyObject *CPyInit_faster_hexbytes___main(void); + capsule = PyCapsule_New((void *)CPyInit_faster_hexbytes___main, "6a32f4913d613d6a7ddf__mypyc.init_faster_hexbytes___main", NULL); + if (!capsule) { + goto fail; + } + res = PyObject_SetAttrString(module, "init_faster_hexbytes___main", capsule); + Py_DECREF(capsule); + if (res < 0) { + goto fail; + } + + return 0; + fail: + return -1; +} +static PyModuleDef module_def_6a32f4913d613d6a7ddf__mypyc = { + PyModuleDef_HEAD_INIT, + .m_name = "6a32f4913d613d6a7ddf__mypyc", + .m_doc = NULL, + .m_size = -1, + .m_methods = NULL, +}; +PyMODINIT_FUNC PyInit_6a32f4913d613d6a7ddf__mypyc(void) { + static PyObject *module = NULL; + if (module) { + Py_INCREF(module); + return module; + } + module = PyModule_Create(&module_def_6a32f4913d613d6a7ddf__mypyc); + if (!module) { + return NULL; + } + if (exec_6a32f4913d613d6a7ddf__mypyc(module) < 0) { + Py_DECREF(module); + return NULL; + } + return module; +} diff --git a/build/__native_6a32f4913d613d6a7ddf.h b/build/__native_6a32f4913d613d6a7ddf.h new file mode 100644 index 0000000..d1ad01d --- /dev/null +++ b/build/__native_6a32f4913d613d6a7ddf.h @@ -0,0 +1,72 @@ +#ifndef MYPYC_NATIVE_6a32f4913d613d6a7ddf_H +#define MYPYC_NATIVE_6a32f4913d613d6a7ddf_H +#include +#include +#ifndef MYPYC_DECLARED_tuple_T2OO +#define MYPYC_DECLARED_tuple_T2OO +typedef struct tuple_T2OO { + PyObject *f0; + PyObject *f1; +} tuple_T2OO; +#endif + +#ifndef MYPYC_DECLARED_tuple_T3OOO +#define MYPYC_DECLARED_tuple_T3OOO +typedef struct tuple_T3OOO { + PyObject *f0; + PyObject *f1; + PyObject *f2; +} tuple_T3OOO; +#endif + +#ifndef MYPYC_DECLARED_tuple_T2OT2OO +#define MYPYC_DECLARED_tuple_T2OT2OO +typedef struct tuple_T2OT2OO { + PyObject *f0; + tuple_T2OO f1; +} tuple_T2OT2OO; +#endif + +#ifndef MYPYC_DECLARED_tuple_T6OOOOOO +#define MYPYC_DECLARED_tuple_T6OOOOOO +typedef struct tuple_T6OOOOOO { + PyObject *f0; + PyObject *f1; + PyObject *f2; + PyObject *f3; + PyObject *f4; + PyObject *f5; +} tuple_T6OOOOOO; +#endif + +typedef struct { + PyObject_HEAD + CPyVTableItem *vtable; + vectorcallfunc vectorcall; +} faster_hexbytes___main_____new___3_HexBytes_objObject; + +typedef struct { + PyObject_HEAD + CPyVTableItem *vtable; + vectorcallfunc vectorcall; +} faster_hexbytes___main_____getitem___3_HexBytes_objObject; + +typedef struct { + PyObject_HEAD + CPyVTableItem *vtable; + vectorcallfunc vectorcall; +} faster_hexbytes___main_____repr___3_HexBytes_objObject; + +typedef struct { + PyObject_HEAD + CPyVTableItem *vtable; + vectorcallfunc vectorcall; +} faster_hexbytes___main___to_0x_hex_HexBytes_objObject; + +typedef struct { + PyObject_HEAD + CPyVTableItem *vtable; + vectorcallfunc vectorcall; +} faster_hexbytes___main_____reduce___3_HexBytes_objObject; + +#endif diff --git a/build/__native_internal_6a32f4913d613d6a7ddf.h b/build/__native_internal_6a32f4913d613d6a7ddf.h new file mode 100644 index 0000000..9277403 --- /dev/null +++ b/build/__native_internal_6a32f4913d613d6a7ddf.h @@ -0,0 +1,75 @@ +#ifndef MYPYC_NATIVE_INTERNAL_6a32f4913d613d6a7ddf_H +#define MYPYC_NATIVE_INTERNAL_6a32f4913d613d6a7ddf_H +#include +#include +#include "__native_6a32f4913d613d6a7ddf.h" + +int CPyGlobalsInit(void); + +extern PyObject *CPyStatics[78]; +extern const char * const CPyLit_Str[]; +extern const char * const CPyLit_Bytes[]; +extern const char * const CPyLit_Int[]; +extern const double CPyLit_Float[]; +extern const double CPyLit_Complex[]; +extern const int CPyLit_Tuple[]; +extern const int CPyLit_FrozenSet[]; +extern CPyModule *CPyModule_faster_hexbytes__internal; +extern CPyModule *CPyModule_faster_hexbytes; +extern PyObject *CPyStatic_faster_hexbytes___globals; +extern CPyModule *CPyModule_builtins; +extern CPyModule *CPyModule_importlib___metadata; +extern CPyModule *CPyModule_faster_hexbytes___main__internal; +extern CPyModule *CPyModule_faster_hexbytes___main; +extern CPyModule *CPyModule_faster_hexbytes____utils__internal; +extern CPyModule *CPyModule_faster_hexbytes____utils; +extern PyObject *CPyStatic__utils___globals; +extern CPyModule *CPyModule_binascii; +extern CPyModule *CPyModule_typing; +extern PyObject *CPyStatic_main___globals; +extern CPyModule *CPyModule_mypy_extensions; +extern CPyModule *CPyModule_typing_extensions; +extern char CPyDef_faster_hexbytes_____top_level__(void); +extern PyObject *CPyDef__utils___to_bytes(PyObject *cpy_r_val); +extern PyObject *CPyPy__utils___to_bytes(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +extern PyObject *CPyDef__utils___hexstr_to_bytes(PyObject *cpy_r_hexstr); +extern PyObject *CPyPy__utils___hexstr_to_bytes(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +extern char CPyDef__utils_____top_level__(void); +extern PyTypeObject *CPyType_main___HexBytes; +extern PyTypeObject *CPyType_main_____new___3_HexBytes_obj; +extern PyObject *CPyDef_main_____new___3_HexBytes_obj(void); +extern CPyThreadLocal faster_hexbytes___main_____new___3_HexBytes_objObject *main_____new___3_HexBytes_obj_free_instance; +extern PyTypeObject *CPyType_main_____getitem___3_HexBytes_obj; +extern PyObject *CPyDef_main_____getitem___3_HexBytes_obj(void); +extern CPyThreadLocal faster_hexbytes___main_____getitem___3_HexBytes_objObject *main_____getitem___3_HexBytes_obj_free_instance; +extern PyTypeObject *CPyType_main_____repr___3_HexBytes_obj; +extern PyObject *CPyDef_main_____repr___3_HexBytes_obj(void); +extern CPyThreadLocal faster_hexbytes___main_____repr___3_HexBytes_objObject *main_____repr___3_HexBytes_obj_free_instance; +extern PyTypeObject *CPyType_main___to_0x_hex_HexBytes_obj; +extern PyObject *CPyDef_main___to_0x_hex_HexBytes_obj(void); +extern CPyThreadLocal faster_hexbytes___main___to_0x_hex_HexBytes_objObject *main___to_0x_hex_HexBytes_obj_free_instance; +extern PyTypeObject *CPyType_main_____reduce___3_HexBytes_obj; +extern PyObject *CPyDef_main_____reduce___3_HexBytes_obj(void); +extern CPyThreadLocal faster_hexbytes___main_____reduce___3_HexBytes_objObject *main_____reduce___3_HexBytes_obj_free_instance; +extern PyObject *CPyDef_main_____new___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); +extern PyObject *CPyPy_main_____new___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +extern PyObject *CPyDef_main_____new___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_cls, PyObject *cpy_r_val); +extern PyObject *CPyPy_main_____new___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +extern PyObject *CPyDef_main_____getitem___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); +extern PyObject *CPyPy_main_____getitem___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +extern PyObject *CPyDef_main_____getitem___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self, PyObject *cpy_r_key); +extern PyObject *CPyPy_main_____getitem___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +extern PyObject *CPyDef_main_____repr___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); +extern PyObject *CPyPy_main_____repr___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +extern PyObject *CPyDef_main_____repr___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self); +extern PyObject *CPyPy_main_____repr___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +extern PyObject *CPyDef_main___to_0x_hex_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); +extern PyObject *CPyPy_main___to_0x_hex_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +extern PyObject *CPyDef_main___to_0x_hex_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self); +extern PyObject *CPyPy_main___to_0x_hex_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +extern PyObject *CPyDef_main_____reduce___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); +extern PyObject *CPyPy_main_____reduce___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +extern tuple_T2OT2OO CPyDef_main_____reduce___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self); +extern PyObject *CPyPy_main_____reduce___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +extern char CPyDef_main_____top_level__(void); +#endif diff --git a/build/faster_hexbytes.c b/build/faster_hexbytes.c new file mode 100644 index 0000000..c09d246 --- /dev/null +++ b/build/faster_hexbytes.c @@ -0,0 +1,21 @@ +#include + +PyMODINIT_FUNC +PyInit_faster_hexbytes(void) +{ + PyObject *tmp; + if (!(tmp = PyImport_ImportModule("6a32f4913d613d6a7ddf__mypyc"))) return NULL; + PyObject *capsule = PyObject_GetAttrString(tmp, "init_faster_hexbytes"); + Py_DECREF(tmp); + if (capsule == NULL) return NULL; + void *init_func = PyCapsule_GetPointer(capsule, "6a32f4913d613d6a7ddf__mypyc.init_faster_hexbytes"); + Py_DECREF(capsule); + if (!init_func) { + return NULL; + } + return ((PyObject *(*)(void))init_func)(); +} + +// distutils sometimes spuriously tells cl to export CPyInit___init__, +// so provide that so it chills out +PyMODINIT_FUNC PyInit___init__(void) { return PyInit_faster_hexbytes(); } diff --git a/build/faster_hexbytes/_utils.c b/build/faster_hexbytes/_utils.c new file mode 100644 index 0000000..d9858f5 --- /dev/null +++ b/build/faster_hexbytes/_utils.c @@ -0,0 +1,21 @@ +#include + +PyMODINIT_FUNC +PyInit__utils(void) +{ + PyObject *tmp; + if (!(tmp = PyImport_ImportModule("6a32f4913d613d6a7ddf__mypyc"))) return NULL; + PyObject *capsule = PyObject_GetAttrString(tmp, "init_faster_hexbytes____utils"); + Py_DECREF(tmp); + if (capsule == NULL) return NULL; + void *init_func = PyCapsule_GetPointer(capsule, "6a32f4913d613d6a7ddf__mypyc.init_faster_hexbytes____utils"); + Py_DECREF(capsule); + if (!init_func) { + return NULL; + } + return ((PyObject *(*)(void))init_func)(); +} + +// distutils sometimes spuriously tells cl to export CPyInit___init__, +// so provide that so it chills out +PyMODINIT_FUNC PyInit___init__(void) { return PyInit__utils(); } diff --git a/build/faster_hexbytes/main.c b/build/faster_hexbytes/main.c new file mode 100644 index 0000000..12ae3ec --- /dev/null +++ b/build/faster_hexbytes/main.c @@ -0,0 +1,21 @@ +#include + +PyMODINIT_FUNC +PyInit_main(void) +{ + PyObject *tmp; + if (!(tmp = PyImport_ImportModule("6a32f4913d613d6a7ddf__mypyc"))) return NULL; + PyObject *capsule = PyObject_GetAttrString(tmp, "init_faster_hexbytes___main"); + Py_DECREF(tmp); + if (capsule == NULL) return NULL; + void *init_func = PyCapsule_GetPointer(capsule, "6a32f4913d613d6a7ddf__mypyc.init_faster_hexbytes___main"); + Py_DECREF(capsule); + if (!init_func) { + return NULL; + } + return ((PyObject *(*)(void))init_func)(); +} + +// distutils sometimes spuriously tells cl to export CPyInit___init__, +// so provide that so it chills out +PyMODINIT_FUNC PyInit___init__(void) { return PyInit_main(); } diff --git a/build/ops.txt b/build/ops.txt new file mode 100644 index 0000000..88781dd --- /dev/null +++ b/build/ops.txt @@ -0,0 +1,1375 @@ +def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def __new___HexBytes_obj.__call__(__mypyc_self__, cls, val): + __mypyc_self__ :: faster_hexbytes.main.__new___HexBytes_obj + cls :: object + val :: union[bool, object, bytes, int, str] + r0 :: bytes + r1 :: object + r2 :: str + r3 :: object[3] + r4 :: object_ptr + r5 :: object + r6, r7 :: faster_hexbytes.main.HexBytes +L0: + r0 = to_bytes(val) + if is_error(r0) goto L4 (error at __new__:42) else goto L1 +L1: + r1 = load_address PyBytes_Type + r2 = '__new__' + r3 = [r1, cls, r0] + r4 = load_address r3 + r5 = PyObject_VectorcallMethod(r2, r4, 9223372036854775811, 0) + if is_error(r5) goto L5 (error at __new__:43) else goto L2 +L2: + dec_ref r0 + r6 = cast(faster_hexbytes.main.HexBytes, r5) + if is_error(r6) goto L4 (error at __new__:43) else goto L3 +L3: + return r6 +L4: + r7 = :: faster_hexbytes.main.HexBytes + return r7 +L5: + dec_ref r0 + goto L4 + +def __getitem___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def __getitem___HexBytes_obj.__call__(__mypyc_self__, self, key): + __mypyc_self__ :: faster_hexbytes.main.__getitem___HexBytes_obj + self :: faster_hexbytes.main.HexBytes + key, r0 :: object + r1 :: str + r2, r3 :: object + r4 :: object[2] + r5 :: object_ptr + r6 :: object + r7 :: str + r8 :: object + r9 :: object[1] + r10 :: object_ptr + r11 :: object + r12 :: union[int, bytes] + r13 :: str + r14 :: bool + r15 :: object + r16 :: object[1] + r17 :: object_ptr + r18 :: object + r19 :: faster_hexbytes.main.HexBytes + r20 :: int + r21 :: object + r22 :: union[int, bytes, faster_hexbytes.main.HexBytes] +L0: + r0 = builtins :: module + r1 = 'super' + r2 = CPyObject_GetAttr(r0, r1) + if is_error(r2) goto L11 (error at __getitem__:56) else goto L1 +L1: + r3 = faster_hexbytes.main.HexBytes :: type + r4 = [r3, self] + r5 = load_address r4 + r6 = PyObject_Vectorcall(r2, r5, 2, 0) + dec_ref r2 + if is_error(r6) goto L11 (error at __getitem__:56) else goto L2 +L2: + r7 = '__getitem__' + r8 = CPyObject_GetAttr(r6, r7) + dec_ref r6 + if is_error(r8) goto L11 (error at __getitem__:56) else goto L3 +L3: + r9 = [key] + r10 = load_address r9 + r11 = PyObject_Vectorcall(r8, r10, 1, 0) + dec_ref r8 + if is_error(r11) goto L11 (error at __getitem__:56) else goto L4 +L4: + r12 = cast(union[int, bytes], r11) + if is_error(r12) goto L11 (error at __getitem__:56) else goto L5 +L5: + r13 = 'hex' + r14 = PyObject_HasAttr(r12, r13) + if r14 goto L6 else goto L9 :: bool +L6: + r15 = CPy_TYPE(self) + r16 = [r12] + r17 = load_address r16 + r18 = PyObject_Vectorcall(r15, r17, 1, 0) + dec_ref r15 + if is_error(r18) goto L12 (error at __getitem__:58) else goto L7 +L7: + dec_ref r12 + r19 = cast(faster_hexbytes.main.HexBytes, r18) + if is_error(r19) goto L11 (error at __getitem__:58) else goto L8 +L8: + return r19 +L9: + r20 = unbox(int, r12) + dec_ref r12 + if is_error(r20) goto L11 (error at __getitem__:60) else goto L10 +L10: + r21 = box(int, r20) + return r21 +L11: + r22 = :: union[int, bytes, faster_hexbytes.main.HexBytes] + return r22 +L12: + dec_ref r12 + goto L11 + +def __repr___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def __repr___HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.__repr___HexBytes_obj + self :: faster_hexbytes.main.HexBytes + r0, r1, r2, r3, r4 :: str + r5 :: object[1] + r6 :: object_ptr + r7 :: object + r8, r9, r10, r11 :: str + r12 :: object[3] + r13 :: object_ptr + r14 :: object + r15, r16 :: str + r17 :: list + r18, r19, r20, r21 :: ptr + r22, r23 :: str +L0: + r0 = '' + r1 = 'HexBytes(' + r2 = '{!r:{}}' + r3 = '0x' + r4 = 'hex' + r5 = [self] + r6 = load_address r5 + r7 = PyObject_VectorcallMethod(r4, r6, 9223372036854775809, 0) + if is_error(r7) goto L8 (error at __repr__:63) else goto L1 +L1: + r8 = cast(str, r7) + if is_error(r8) goto L8 (error at __repr__:63) else goto L2 +L2: + r9 = PyUnicode_Concat(r3, r8) + dec_ref r8 + if is_error(r9) goto L8 (error at __repr__:63) else goto L3 +L3: + r10 = '' + r11 = 'format' + r12 = [r2, r9, r10] + r13 = load_address r12 + r14 = PyObject_VectorcallMethod(r11, r13, 9223372036854775811, 0) + if is_error(r14) goto L9 (error at __repr__:63) else goto L4 +L4: + dec_ref r9 + r15 = cast(str, r14) + if is_error(r15) goto L8 (error at __repr__:63) else goto L5 +L5: + r16 = ')' + r17 = PyList_New(3) + if is_error(r17) goto L10 (error at __repr__:63) else goto L6 +L6: + r18 = get_element_ptr r17 ob_item :: PyListObject + r19 = load_mem r18 :: ptr* + inc_ref r1 + set_mem r19, r1 :: builtins.object* + r20 = r19 + 8 + set_mem r20, r15 :: builtins.object* + inc_ref r16 + r21 = r19 + 16 + set_mem r21, r16 :: builtins.object* + r22 = PyUnicode_Join(r0, r17) + dec_ref r17 + if is_error(r22) goto L8 (error at __repr__:63) else goto L7 +L7: + return r22 +L8: + r23 = :: str + return r23 +L9: + dec_ref r9 + goto L8 +L10: + dec_ref r15 + goto L8 + +def to_0x_hex_HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def to_0x_hex_HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.to_0x_hex_HexBytes_obj + self :: faster_hexbytes.main.HexBytes + r0, r1 :: str + r2 :: object[1] + r3 :: object_ptr + r4 :: object + r5, r6, r7 :: str +L0: + r0 = '0x' + r1 = 'hex' + r2 = [self] + r3 = load_address r2 + r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775809, 0) + if is_error(r4) goto L4 (error at to_0x_hex:69) else goto L1 +L1: + r5 = cast(str, r4) + if is_error(r5) goto L4 (error at to_0x_hex:69) else goto L2 +L2: + r6 = PyUnicode_Concat(r0, r5) + dec_ref r5 + if is_error(r6) goto L4 (error at to_0x_hex:69) else goto L3 +L3: + return r6 +L4: + r7 = :: str + return r7 + +def __reduce___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def __reduce___HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.__reduce___HexBytes_obj + self :: faster_hexbytes.main.HexBytes + r0 :: object + r1 :: str + r2, r3, r4 :: object + r5 :: object[1] + r6 :: object_ptr + r7 :: object + r8 :: bytes + r9 :: tuple[object, bytes] + r10, r11 :: tuple[object, tuple[object, bytes]] +L0: + r0 = load_address PyBytes_Type + r1 = '__new__' + r2 = CPyObject_GetAttr(r0, r1) + if is_error(r2) goto L4 (error at __reduce__:79) else goto L1 +L1: + r3 = CPy_TYPE(self) + r4 = load_address PyBytes_Type + r5 = [self] + r6 = load_address r5 + r7 = PyObject_Vectorcall(r4, r6, 1, 0) + if is_error(r7) goto L5 (error at __reduce__:79) else goto L2 +L2: + r8 = cast(bytes, r7) + if is_error(r8) goto L5 (error at __reduce__:79) else goto L3 +L3: + r9 = (r3, r8) + r10 = (r2, r9) + return r10 +L4: + r11 = :: tuple[object, tuple[object, bytes]] + return r11 +L5: + dec_ref r2 + dec_ref r3 + goto L4 + +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4, r5 :: object + r6 :: str + r7 :: dict + r8, r9 :: object + r10 :: str + r11 :: dict + r12, r13 :: object + r14 :: str + r15 :: dict + r16, r17 :: object + r18 :: str + r19 :: dict + r20 :: object + r21 :: dict + r22 :: str + r23, r24, r25 :: object + r26 :: str + r27, r28, r29, r30, r31 :: object + r32 :: str + r33 :: object + r34 :: tuple[object, object, object, object, object, object] + r35, r36 :: object + r37 :: dict + r38 :: str + r39 :: i32 + r40 :: bit + r41 :: object + r42 :: str + r43 :: object + r44 :: tuple + r45, r46 :: object + r47 :: str + r48 :: bool + r49, r50 :: str + r51 :: object + r52 :: object[2] + r53 :: object_ptr + r54 :: object + r55, r56, r57, r58 :: dict + r59 :: faster_hexbytes.main.__new___HexBytes_obj + r60 :: object + r61 :: str + r62 :: object + r63 :: object[1] + r64 :: object_ptr + r65 :: object + r66 :: str + r67 :: i32 + r68 :: bit + r69 :: faster_hexbytes.main.__getitem___HexBytes_obj + r70 :: str + r71 :: i32 + r72 :: bit + r73 :: faster_hexbytes.main.__repr___HexBytes_obj + r74 :: str + r75 :: i32 + r76 :: bit + r77 :: faster_hexbytes.main.to_0x_hex_HexBytes_obj + r78 :: str + r79 :: i32 + r80 :: bit + r81 :: faster_hexbytes.main.__reduce___HexBytes_obj + r82 :: str + r83 :: i32 + r84 :: bit + r85, r86 :: str + r87 :: i32 + r88 :: bit + r89, r90 :: str + r91 :: i32 + r92 :: bit + r93, r94 :: str + r95 :: i32 + r96 :: bit + r97 :: object[3] + r98 :: object_ptr + r99 :: object + r100 :: dict + r101 :: str + r102, r103 :: object + r104 :: object[1] + r105 :: object_ptr + r106, r107 :: object + r108 :: object[1] + r109 :: object_ptr + r110 :: object + r111 :: dict + r112 :: str + r113 :: i32 + r114 :: bit + r115 :: object + r116 :: None +L0: + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool +L1: + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L45 (error at :-1) else goto L2 +L2: + builtins = r4 :: module + dec_ref r4 +L3: + r5 = ('TYPE_CHECKING', 'Callable', 'Tuple', 'Type', 'Union', 'overload') + r6 = 'typing' + r7 = faster_hexbytes.main.globals :: static + r8 = CPyImport_ImportFromMany(r6, r5, r5, r7) + if is_error(r8) goto L45 (error at :1) else goto L4 +L4: + typing = r8 :: module + dec_ref r8 + r9 = ('mypyc_attr',) + r10 = 'mypy_extensions' + r11 = faster_hexbytes.main.globals :: static + r12 = CPyImport_ImportFromMany(r10, r9, r9, r11) + if is_error(r12) goto L45 (error at :10) else goto L5 +L5: + mypy_extensions = r12 :: module + dec_ref r12 + r13 = ('Self',) + r14 = 'typing_extensions' + r15 = faster_hexbytes.main.globals :: static + r16 = CPyImport_ImportFromMany(r14, r13, r13, r15) + if is_error(r16) goto L45 (error at :13) else goto L6 +L6: + typing_extensions = r16 :: module + dec_ref r16 + r17 = ('to_bytes',) + r18 = 'faster_hexbytes._utils' + r19 = faster_hexbytes.main.globals :: static + r20 = CPyImport_ImportFromMany(r18, r17, r17, r19) + if is_error(r20) goto L45 (error at :17) else goto L7 +L7: + faster_hexbytes._utils = r20 :: module + dec_ref r20 + if 0 goto L8 else goto L8 :: bool +L8: + r21 = faster_hexbytes.main.globals :: static + r22 = 'Union' + r23 = CPyDict_GetItem(r21, r22) + if is_error(r23) goto L45 (error at :26) else goto L9 +L9: + r24 = load_address PyBool_Type + r25 = builtins :: module + r26 = 'bytearray' + r27 = CPyObject_GetAttr(r25, r26) + if is_error(r27) goto L46 (error at :26) else goto L10 +L10: + r28 = load_address PyBytes_Type + r29 = load_address PyLong_Type + r30 = load_address PyUnicode_Type + r31 = builtins :: module + r32 = 'memoryview' + r33 = CPyObject_GetAttr(r31, r32) + if is_error(r33) goto L47 (error at :26) else goto L11 +L11: + inc_ref r24 + inc_ref r28 + inc_ref r29 + inc_ref r30 + r34 = (r24, r27, r28, r29, r30, r33) + r35 = box(tuple[object, object, object, object, object, object], r34) + r36 = PyObject_GetItem(r23, r35) + dec_ref r23 + dec_ref r35 + if is_error(r36) goto L45 (error at :26) else goto L12 +L12: + r37 = faster_hexbytes.main.globals :: static + r38 = 'BytesLike' + r39 = CPyDict_SetItem(r37, r38, r36) + dec_ref r36 + r40 = r39 >= 0 :: signed + if not r40 goto L45 (error at :26) else goto L13 :: bool +L13: + r41 = builtins :: module + r42 = 'bytes' + r43 = CPyObject_GetAttr(r41, r42) + if is_error(r43) goto L45 (error at :30) else goto L14 +L14: + r44 = PyTuple_Pack(1, r43) + dec_ref r43 + if is_error(r44) goto L45 (error at :30) else goto L15 +L15: + r45 = load_address PyType_Type + r46 = CPy_CalculateMetaclass(r45, r44) + if is_error(r46) goto L48 (error at :30) else goto L16 +L16: + r47 = '__prepare__' + r48 = PyObject_HasAttr(r46, r47) + if r48 goto L17 else goto L21 :: bool +L17: + r49 = 'HexBytes' + r50 = '__prepare__' + r51 = CPyObject_GetAttr(r46, r50) + if is_error(r51) goto L48 (error at :30) else goto L18 +L18: + r52 = [r49, r44] + r53 = load_address r52 + r54 = PyObject_Vectorcall(r51, r53, 2, 0) + dec_ref r51 + if is_error(r54) goto L48 (error at :30) else goto L19 +L19: + r55 = cast(dict, r54) + if is_error(r55) goto L48 (error at :30) else goto L20 +L20: + r56 = r55 + goto L23 +L21: + r57 = PyDict_New() + if is_error(r57) goto L48 (error at :30) else goto L22 +L22: + r56 = r57 +L23: + r58 = PyDict_New() + if is_error(r58) goto L49 (error at :30) else goto L24 +L24: + r59 = __new___HexBytes_obj() + if is_error(r59) goto L50 (error at :41) else goto L25 +L25: + r60 = builtins :: module + r61 = 'staticmethod' + r62 = CPyObject_GetAttr(r60, r61) + if is_error(r62) goto L51 (error at :41) else goto L26 +L26: + r63 = [r59] + r64 = load_address r63 + r65 = PyObject_Vectorcall(r62, r64, 1, 0) + dec_ref r62 + if is_error(r65) goto L51 (error at :41) else goto L27 +L27: + dec_ref r59 + r66 = '__new__' + r67 = CPyDict_SetItem(r56, r66, r65) + dec_ref r65 + r68 = r67 >= 0 :: signed + if not r68 goto L50 (error at :41) else goto L28 :: bool +L28: + r69 = __getitem___HexBytes_obj() + if is_error(r69) goto L50 (error at :53) else goto L29 +L29: + r70 = '__getitem__' + r71 = CPyDict_SetItem(r56, r70, r69) + dec_ref r69 + r72 = r71 >= 0 :: signed + if not r72 goto L50 (error at :53) else goto L30 :: bool +L30: + r73 = __repr___HexBytes_obj() + if is_error(r73) goto L50 (error at :62) else goto L31 +L31: + r74 = '__repr__' + r75 = CPyDict_SetItem(r56, r74, r73) + dec_ref r73 + r76 = r75 >= 0 :: signed + if not r76 goto L50 (error at :62) else goto L32 :: bool +L32: + r77 = to_0x_hex_HexBytes_obj() + if is_error(r77) goto L50 (error at :65) else goto L33 +L33: + r78 = 'to_0x_hex' + r79 = CPyDict_SetItem(r56, r78, r77) + dec_ref r77 + r80 = r79 >= 0 :: signed + if not r80 goto L50 (error at :65) else goto L34 :: bool +L34: + r81 = __reduce___HexBytes_obj() + if is_error(r81) goto L50 (error at :71) else goto L35 +L35: + r82 = '__reduce__' + r83 = CPyDict_SetItem(r56, r82, r81) + dec_ref r81 + r84 = r83 >= 0 :: signed + if not r84 goto L50 (error at :71) else goto L36 :: bool +L36: + r85 = 'HexBytes' + r86 = '__annotations__' + r87 = CPyDict_SetItem(r56, r86, r58) + dec_ref r58 + r88 = r87 >= 0 :: signed + if not r88 goto L49 (error at :30) else goto L37 :: bool +L37: + r89 = 'mypyc filler docstring' + r90 = '__doc__' + r91 = CPyDict_SetItem(r56, r90, r89) + r92 = r91 >= 0 :: signed + if not r92 goto L49 (error at :30) else goto L38 :: bool +L38: + r93 = 'faster_hexbytes.main' + r94 = '__module__' + r95 = CPyDict_SetItem(r56, r94, r93) + r96 = r95 >= 0 :: signed + if not r96 goto L49 (error at :30) else goto L39 :: bool +L39: + r97 = [r85, r44, r56] + r98 = load_address r97 + r99 = PyObject_Vectorcall(r46, r98, 3, 0) + if is_error(r99) goto L49 (error at :30) else goto L40 +L40: + dec_ref r56 + dec_ref r44 + r100 = faster_hexbytes.main.globals :: static + r101 = 'mypyc_attr' + r102 = CPyDict_GetItem(r100, r101) + if is_error(r102) goto L52 (error at :29) else goto L41 +L41: + r103 = box(bool, 0) + r104 = [r103] + r105 = load_address r104 + r106 = ('native_class',) + r107 = PyObject_Vectorcall(r102, r105, 0, r106) + dec_ref r102 + if is_error(r107) goto L52 (error at :29) else goto L42 +L42: + r108 = [r99] + r109 = load_address r108 + r110 = PyObject_Vectorcall(r107, r109, 1, 0) + dec_ref r107 + if is_error(r110) goto L52 (error at :30) else goto L43 +L43: + dec_ref r99 + faster_hexbytes.main.HexBytes = r110 :: type + r111 = faster_hexbytes.main.globals :: static + r112 = 'HexBytes' + r113 = PyDict_SetItem(r111, r112, r110) + dec_ref r110 + r114 = r113 >= 0 :: signed + if not r114 goto L45 (error at :30) else goto L44 :: bool +L44: + r115 = faster_hexbytes.main.HexBytes :: type + return 1 +L45: + r116 = :: None + return r116 +L46: + dec_ref r23 + goto L45 +L47: + dec_ref r23 + dec_ref r27 + goto L45 +L48: + dec_ref r44 + goto L45 +L49: + dec_ref r44 + dec_ref r56 + goto L45 +L50: + dec_ref r44 + dec_ref r56 + dec_ref r58 + goto L45 +L51: + dec_ref r44 + dec_ref r56 + dec_ref r58 + dec_ref r59 + goto L45 +L52: + dec_ref r99 + goto L45 + +def to_bytes(val): + val :: union[bool, object, bytes, int, str] + r0 :: bit + r1 :: bytes + r2 :: bit + r3 :: str + r4 :: bytes + r5 :: bit + r6 :: object + r7 :: object[1] + r8 :: object_ptr + r9 :: object + r10 :: bytes + r11 :: bit + r12 :: bool + r13, r14, r15 :: bytes + r16 :: bit + r17 :: int + r18 :: native_int + r19 :: bit + r20 :: native_int + r21, r22 :: bit + r23 :: bool + r24 :: bit + r25 :: str + r26 :: int + r27, r28, r29 :: str + r30 :: object + r31 :: str + r32 :: object + r33 :: object[1] + r34 :: object_ptr + r35 :: object + r36 :: int + r37 :: object + r38 :: str + r39, r40 :: object + r41 :: object[1] + r42 :: object_ptr + r43 :: object + r44 :: str + r45 :: bytes + r46 :: object + r47 :: str + r48 :: object + r49 :: i32 + r50 :: bit + r51 :: bool + r52 :: object + r53 :: object[1] + r54 :: object_ptr + r55 :: object + r56 :: bytes + r57, r58, r59, r60, r61 :: str + r62 :: object[3] + r63 :: object_ptr + r64 :: object + r65, r66 :: str + r67 :: object + r68, r69 :: str + r70 :: object[3] + r71 :: object_ptr + r72 :: object + r73 :: str + r74 :: list + r75, r76, r77, r78, r79, r80 :: ptr + r81 :: str + r82 :: object + r83 :: str + r84 :: object + r85 :: object[1] + r86 :: object_ptr + r87 :: object + r88 :: bytes +L0: + r0 = PyBytes_Check(val) + if r0 goto L1 else goto L3 :: bool +L1: + inc_ref val + r1 = cast(bytes, val) + if is_error(r1) goto L51 (error at to_bytes:15) else goto L2 +L2: + return r1 +L3: + r2 = PyUnicode_Check(val) + if r2 goto L4 else goto L7 :: bool +L4: + inc_ref val + r3 = cast(str, val) + if is_error(r3) goto L51 (error at to_bytes:17) else goto L5 +L5: + r4 = hexstr_to_bytes(r3) + dec_ref r3 + if is_error(r4) goto L51 (error at to_bytes:17) else goto L6 +L6: + return r4 +L7: + r5 = PyByteArray_Check(val) + if r5 goto L8 else goto L11 :: bool +L8: + r6 = load_address PyBytes_Type + r7 = [val] + r8 = load_address r7 + r9 = PyObject_Vectorcall(r6, r8, 1, 0) + if is_error(r9) goto L51 (error at to_bytes:19) else goto L9 +L9: + r10 = cast(bytes, r9) + if is_error(r10) goto L51 (error at to_bytes:19) else goto L10 +L10: + return r10 +L11: + r11 = PyBool_Check(val) + if r11 goto L12 else goto L17 :: bool +L12: + r12 = unbox(bool, val) + if is_error(r12) goto L51 (error at to_bytes:21) else goto L13 +L13: + if r12 goto L14 else goto L15 :: bool +L14: + r13 = b'\x01' + inc_ref r13 + r14 = r13 + goto L16 +L15: + r15 = b'\x00' + inc_ref r15 + r14 = r15 +L16: + return r14 +L17: + r16 = PyLong_Check(val) + if r16 goto L18 else goto L37 :: bool +L18: + r17 = unbox(int, val) + if is_error(r17) goto L51 (error at to_bytes:25) else goto L19 +L19: + r18 = r17 & 1 + r19 = r18 != 0 + if r19 goto L21 else goto L20 :: bool +L20: + r20 = 0 & 1 + r21 = r20 != 0 + if r21 goto L21 else goto L22 :: bool +L21: + r22 = CPyTagged_IsLt_(r17, 0) + r23 = r22 + goto L23 +L22: + r24 = r17 < 0 :: signed + r23 = r24 +L23: + dec_ref r17 :: int + if r23 goto L24 else goto L31 :: bool +L24: + r25 = 'Cannot convert negative integer ' + r26 = unbox(int, val) + if is_error(r26) goto L51 (error at to_bytes:26) else goto L25 +L25: + r27 = CPyTagged_Str(r26) + dec_ref r26 :: int + if is_error(r27) goto L51 (error at to_bytes:26) else goto L26 +L26: + r28 = ' to bytes' + r29 = CPyStr_Build(3, r25, r27, r28) + dec_ref r27 + if is_error(r29) goto L51 (error at to_bytes:26) else goto L27 +L27: + r30 = builtins :: module + r31 = 'ValueError' + r32 = CPyObject_GetAttr(r30, r31) + if is_error(r32) goto L52 (error at to_bytes:26) else goto L28 +L28: + r33 = [r29] + r34 = load_address r33 + r35 = PyObject_Vectorcall(r32, r34, 1, 0) + dec_ref r32 + if is_error(r35) goto L52 (error at to_bytes:26) else goto L29 +L29: + dec_ref r29 + CPy_Raise(r35) + dec_ref r35 + if not 0 goto L51 (error at to_bytes:26) else goto L30 :: bool +L30: + unreachable +L31: + r36 = unbox(int, val) + if is_error(r36) goto L51 (error at to_bytes:28) else goto L32 +L32: + r37 = builtins :: module + r38 = 'hex' + r39 = CPyObject_GetAttr(r37, r38) + if is_error(r39) goto L53 (error at to_bytes:28) else goto L33 +L33: + r40 = box(int, r36) + r41 = [r40] + r42 = load_address r41 + r43 = PyObject_Vectorcall(r39, r42, 1, 0) + dec_ref r39 + if is_error(r43) goto L54 (error at to_bytes:28) else goto L34 +L34: + dec_ref r40 + r44 = cast(str, r43) + if is_error(r44) goto L51 (error at to_bytes:28) else goto L35 +L35: + r45 = to_bytes(r44) + dec_ref r44 + if is_error(r45) goto L51 (error at to_bytes:28) else goto L36 +L36: + return r45 +L37: + r46 = builtins :: module + r47 = 'memoryview' + r48 = CPyObject_GetAttr(r46, r47) + if is_error(r48) goto L51 (error at to_bytes:29) else goto L38 +L38: + r49 = PyObject_IsInstance(val, r48) + dec_ref r48 + r50 = r49 >= 0 :: signed + if not r50 goto L51 (error at to_bytes:29) else goto L39 :: bool +L39: + r51 = truncate r49: i32 to builtins.bool + if r51 goto L40 else goto L43 :: bool +L40: + r52 = load_address PyBytes_Type + r53 = [val] + r54 = load_address r53 + r55 = PyObject_Vectorcall(r52, r54, 1, 0) + if is_error(r55) goto L51 (error at to_bytes:30) else goto L41 +L41: + r56 = cast(bytes, r55) + if is_error(r56) goto L51 (error at to_bytes:30) else goto L42 +L42: + return r56 +L43: + r57 = '' + r58 = 'Cannot convert ' + r59 = '{!r:{}}' + r60 = '' + r61 = 'format' + r62 = [r59, val, r60] + r63 = load_address r62 + r64 = PyObject_VectorcallMethod(r61, r63, 9223372036854775811, 0) + if is_error(r64) goto L51 (error at to_bytes:32) else goto L44 +L44: + r65 = ' of type ' + r66 = '{:{}}' + r67 = CPy_TYPE(val) + r68 = '' + r69 = 'format' + r70 = [r66, r67, r68] + r71 = load_address r70 + r72 = PyObject_VectorcallMethod(r69, r71, 9223372036854775811, 0) + if is_error(r72) goto L55 (error at to_bytes:32) else goto L45 +L45: + dec_ref r67 + r73 = ' to bytes' + r74 = PyList_New(5) + if is_error(r74) goto L56 (error at to_bytes:32) else goto L46 +L46: + r75 = get_element_ptr r74 ob_item :: PyListObject + r76 = load_mem r75 :: ptr* + inc_ref r58 + set_mem r76, r58 :: builtins.object* + r77 = r76 + 8 + set_mem r77, r64 :: builtins.object* + inc_ref r65 + r78 = r76 + 16 + set_mem r78, r65 :: builtins.object* + r79 = r76 + 24 + set_mem r79, r72 :: builtins.object* + inc_ref r73 + r80 = r76 + 32 + set_mem r80, r73 :: builtins.object* + r81 = PyUnicode_Join(r57, r74) + dec_ref r74 + if is_error(r81) goto L51 (error at to_bytes:32) else goto L47 +L47: + r82 = builtins :: module + r83 = 'TypeError' + r84 = CPyObject_GetAttr(r82, r83) + if is_error(r84) goto L57 (error at to_bytes:32) else goto L48 +L48: + r85 = [r81] + r86 = load_address r85 + r87 = PyObject_Vectorcall(r84, r86, 1, 0) + dec_ref r84 + if is_error(r87) goto L57 (error at to_bytes:32) else goto L49 +L49: + dec_ref r81 + CPy_Raise(r87) + dec_ref r87 + if not 0 goto L51 (error at to_bytes:32) else goto L50 :: bool +L50: + unreachable +L51: + r88 = :: bytes + return r88 +L52: + dec_ref r29 + goto L51 +L53: + dec_ref r36 :: int + goto L51 +L54: + dec_ref r40 + goto L51 +L55: + dec_ref r64 + dec_ref r67 + goto L51 +L56: + dec_ref r64 + dec_ref r72 + goto L51 +L57: + dec_ref r81 + goto L51 + +def hexstr_to_bytes(hexstr): + hexstr, r0, r1 :: str + r2 :: tuple[str, str] + r3 :: object + r4 :: bool + r5 :: object + r6, non_prefixed_hex :: str + r7 :: native_int + r8 :: bit + r9 :: short_int + r10 :: int + r11 :: bit + r12, r13, padded_hex :: str + r14 :: bytes + r15 :: tuple[object, object, object] + r16 :: object + r17 :: str + r18 :: object + r19 :: bit + r20, r21, r22 :: str + r23 :: object + r24 :: str + r25 :: object + r26 :: object[1] + r27 :: object_ptr + r28 :: object + r29 :: bit + r30 :: object + r31 :: str + r32 :: object + r33 :: object[1] + r34 :: object_ptr + r35 :: object + r36, r37 :: bytes +L0: + r0 = '0x' + r1 = '0X' + inc_ref r0 + inc_ref r1 + r2 = (r0, r1) + r3 = box(tuple[str, str], r2) + r4 = CPyStr_Startswith(hexstr, r3) + dec_ref r3 + if is_error(r4) goto L29 (error at hexstr_to_bytes:36) else goto L1 +L1: + if r4 goto L2 else goto L5 :: bool +L2: + r5 = CPyStr_GetSlice(hexstr, 4, 9223372036854775806) + if is_error(r5) goto L29 (error at hexstr_to_bytes:37) else goto L3 +L3: + r6 = cast(str, r5) + if is_error(r6) goto L29 (error at hexstr_to_bytes:37) else goto L4 +L4: + non_prefixed_hex = r6 + goto L6 +L5: + inc_ref hexstr + non_prefixed_hex = hexstr +L6: + r7 = CPyStr_Size_size_t(hexstr) + r8 = r7 >= 0 :: signed + if not r8 goto L30 (error at hexstr_to_bytes:42) else goto L7 :: bool +L7: + r9 = r7 << 1 + r10 = CPyTagged_Remainder(r9, 4) + if is_error(r10) goto L30 (error at hexstr_to_bytes:42) else goto L8 +L8: + r11 = r10 != 0 + dec_ref r10 :: int + if r11 goto L9 else goto L11 :: bool +L9: + r12 = '0' + r13 = PyUnicode_Concat(r12, non_prefixed_hex) + dec_ref non_prefixed_hex + if is_error(r13) goto L29 (error at hexstr_to_bytes:43) else goto L10 +L10: + padded_hex = r13 + goto L12 +L11: + padded_hex = non_prefixed_hex +L12: + r14 = PyUnicode_AsASCIIString(padded_hex) + if is_error(r14) goto L14 (error at hexstr_to_bytes:48) else goto L31 +L13: + goto L25 +L14: + r15 = CPy_CatchError() + r16 = builtins :: module + r17 = 'UnicodeDecodeError' + r18 = CPyObject_GetAttr(r16, r17) + if is_error(r18) goto L32 (error at hexstr_to_bytes:49) else goto L15 +L15: + r19 = CPy_ExceptionMatches(r18) + dec_ref r18 + if r19 goto L16 else goto L33 :: bool +L16: + r20 = 'hex string ' + r21 = ' may only contain [0-9a-fA-F] characters' + r22 = CPyStr_Build(3, r20, padded_hex, r21) + dec_ref padded_hex + if is_error(r22) goto L23 (error at hexstr_to_bytes:51) else goto L17 +L17: + r23 = builtins :: module + r24 = 'ValueError' + r25 = CPyObject_GetAttr(r23, r24) + if is_error(r25) goto L34 (error at hexstr_to_bytes:50) else goto L18 +L18: + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L34 (error at hexstr_to_bytes:50) else goto L19 +L19: + dec_ref r22 + CPy_Raise(r28) + dec_ref r28 + if not 0 goto L23 (error at hexstr_to_bytes:50) else goto L35 :: bool +L20: + unreachable +L21: + CPy_Reraise() + if not 0 goto L23 else goto L36 :: bool +L22: + unreachable +L23: + CPy_RestoreExcInfo(r15) + dec_ref r15 + r29 = CPy_KeepPropagating() + if not r29 goto L29 else goto L24 :: bool +L24: + unreachable +L25: + r30 = binascii :: module + r31 = 'unhexlify' + r32 = CPyObject_GetAttr(r30, r31) + if is_error(r32) goto L37 (error at hexstr_to_bytes:54) else goto L26 +L26: + r33 = [r14] + r34 = load_address r33 + r35 = PyObject_Vectorcall(r32, r34, 1, 0) + dec_ref r32 + if is_error(r35) goto L37 (error at hexstr_to_bytes:54) else goto L27 +L27: + dec_ref r14 + r36 = cast(bytes, r35) + if is_error(r36) goto L29 (error at hexstr_to_bytes:54) else goto L28 +L28: + return r36 +L29: + r37 = :: bytes + return r37 +L30: + dec_ref non_prefixed_hex + goto L29 +L31: + dec_ref padded_hex + goto L13 +L32: + dec_ref padded_hex + goto L23 +L33: + dec_ref padded_hex + goto L21 +L34: + dec_ref r22 + goto L23 +L35: + dec_ref r15 + goto L20 +L36: + dec_ref r15 + goto L22 +L37: + dec_ref r14 + goto L29 + +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4 :: object + r5 :: object_ptr + r6 :: object_ptr[1] + r7 :: c_ptr + r8 :: native_int[1] + r9 :: c_ptr + r10 :: object + r11 :: dict + r12, r13 :: str + r14 :: bit + r15 :: object + r16 :: str + r17 :: dict + r18 :: object + r19 :: None +L0: + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool +L1: + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L6 (error at :-1) else goto L2 +L2: + builtins = r4 :: module + dec_ref r4 +L3: + r5 = load_address binascii :: module + r6 = [r5] + r7 = load_address r6 + r8 = [1] + r9 = load_address r8 + r10 = (('binascii', 'binascii', 'binascii'),) + r11 = faster_hexbytes._utils.globals :: static + r12 = 'faster_hexbytes/_utils.py' + r13 = '' + r14 = CPyImport_ImportMany(r10, r7, r11, r12, r13, r9) + if not r14 goto L6 else goto L4 :: bool +L4: + r15 = ('Union',) + r16 = 'typing' + r17 = faster_hexbytes._utils.globals :: static + r18 = CPyImport_ImportFromMany(r16, r15, r15, r17) + if is_error(r18) goto L6 (error at :2) else goto L5 +L5: + typing = r18 :: module + dec_ref r18 + return 1 +L6: + r19 = :: None + return r19 + +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4, r5, r6 :: object + r7 :: str + r8 :: dict + r9, r10 :: object + r11 :: str + r12 :: dict + r13 :: object + r14 :: str + r15 :: list + r16, r17 :: ptr + r18 :: dict + r19 :: str + r20 :: i32 + r21 :: bit + r22 :: str + r23 :: dict + r24 :: str + r25 :: object + r26 :: object[1] + r27 :: object_ptr + r28 :: object + r29 :: str + r30 :: dict + r31 :: str + r32 :: i32 + r33 :: bit + r34 :: None +L0: + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool +L1: + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L12 (error at :-1) else goto L2 +L2: + builtins = r4 :: module + dec_ref r4 +L3: + r5 = ('version',) + r6 = ('__version',) + r7 = 'importlib.metadata' + r8 = faster_hexbytes.globals :: static + r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) + if is_error(r9) goto L12 (error at :1) else goto L4 +L4: + importlib.metadata = r9 :: module + dec_ref r9 + r10 = ('HexBytes',) + r11 = 'faster_hexbytes.main' + r12 = faster_hexbytes.globals :: static + r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) + if is_error(r13) goto L12 (error at :5) else goto L5 +L5: + faster_hexbytes.main = r13 :: module + dec_ref r13 + r14 = 'HexBytes' + r15 = PyList_New(1) + if is_error(r15) goto L12 (error at :9) else goto L6 +L6: + r16 = get_element_ptr r15 ob_item :: PyListObject + r17 = load_mem r16 :: ptr* + inc_ref r14 + set_mem r17, r14 :: builtins.object* + r18 = faster_hexbytes.globals :: static + r19 = '__all__' + r20 = CPyDict_SetItem(r18, r19, r15) + dec_ref r15 + r21 = r20 >= 0 :: signed + if not r21 goto L12 (error at :9) else goto L7 :: bool +L7: + r22 = 'hexbytes' + r23 = faster_hexbytes.globals :: static + r24 = '__version' + r25 = CPyDict_GetItem(r23, r24) + if is_error(r25) goto L12 (error at :11) else goto L8 +L8: + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L12 (error at :11) else goto L9 +L9: + r29 = cast(str, r28) + if is_error(r29) goto L12 (error at :11) else goto L10 +L10: + r30 = faster_hexbytes.globals :: static + r31 = '__version__' + r32 = CPyDict_SetItem(r30, r31, r29) + dec_ref r29 + r33 = r32 >= 0 :: signed + if not r33 goto L12 (error at :11) else goto L11 :: bool +L11: + return 1 +L12: + r34 = :: None + return r34 diff --git a/build/temp.linux-x86_64-cpython-313/build/__native_6a32f4913d613d6a7ddf.o b/build/temp.linux-x86_64-cpython-313/build/__native_6a32f4913d613d6a7ddf.o new file mode 100644 index 0000000000000000000000000000000000000000..1907731f39aa85a2d9082a8983b6ca9763541e53 GIT binary patch literal 342400 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 EAAG~M2LJ#7 literal 0 HcmV?d00001 diff --git a/build/temp.linux-x86_64-cpython-313/build/faster_hexbytes.o b/build/temp.linux-x86_64-cpython-313/build/faster_hexbytes.o new file mode 100644 index 0000000000000000000000000000000000000000..bd807a3eac9d395a8928f92ae5e1e99f74e5fddd GIT binary patch literal 5296 zcmbtYU2Gdw7QWZxAx_;oX#+H+TjD@LQ1CcTLYhJguACCLu+$U+DSu{ck7I*9V~xku zUJxKcK~Yty+I?89v=2yh-`G`!Kw@83S$@-DSx@tvt9ERT z9et;}F2DE{D9tfv2l~4#zxd|x{STf$GcYm(JuH19d-}Gsj4hev`yYIxdLqAcF26Lh zJtiFi_x0=5sx~n4ERKbp!0~>G+>|~sUY*>PnW#+Rr|+y(s>Ncn*Xos7-K;yss@`@C zyI3>2rJiH7(FW*e%(PImZ@@@pJch<97Td7!)8Bo9So-zKrU+un=*2>wjtmPqIx&0^ z;{1|9tdRQMit#`9A;+WM-ktPXJ^?Oq}cwz166M!uAmWe_P#Vu6M`rVO%?xpI+`&4dY8Do(spI5gWjz-iC%BPXo z0T)tEM|Z3Jcc`%gQLen#omV%z8XreK_Y@9z3Lkc>Dt|!TV1So?K&>}tb0l1x<#`*Tq0?Vee# z*_LT_+Nq9tq;6JHj$UdQZD?#edil{*%eEY&>{vEBu}p9-8_Es6U8Cl@WkN%_>XTWa zw?FJ)7kURvkATPGtl{i+9Q!U9o4EkmIla~HGz`QGR^5bbz;F%rxA!-jmhI>b@>nd2 zqhCb1*@C8`Tm9CmfIXnanSHrK`)+0Fn$Q~T^n?amwlm$GnoQTta-&l*(k;<~4QzF44cj6ZcJV?SL&EfM}|jgsw2elC&wqXvB_&CjHf{456otG5+JDX zG%jN<2sZ68Hv+;ccDX| zvu@?B13fTlFHoOyHL4CueHxDx*%gvOecbomQocHXKP=@P0UYxN(xh8?@$-U|F%Kb; z|Ce16e$BW<_?uGB1#nuId;tGY%7MXz;q-ues;Pq0;HXd8itlPS| z0Ka3ThHWl1>TL%*xZt8uHw{vN4v9s$DCDx$Y#JsE(1b^r1{XFw!r)ORN4^}hxWDA1rhM7aK#*QtM6|Azq!>;Fz^_g855Q&6`JjX@0c z|0C_k{Kg@=CSYOXpO%T5>~Z{*bI>J?{~6%J`qyMY1phk_)cxZc_P0sL%bIevfqI3pc7_q$|ve)!pnt%?5O_78ukU5 z5b%8YiR`F84UNS6^_~bO6xkTmeIIa)OBpVni>IZ1(nDN^){kI(kD$+>{R`5*MvAfy z+J6Oj*#2d4vw&z{F#hn)Cwq#&u)fhQhLZw1B_|C3Z4qyepgpF^VD3V@*Q6rGr=NoB Sw-Fk{>|1jDl*h literal 0 HcmV?d00001 diff --git a/build/temp.linux-x86_64-cpython-313/build/faster_hexbytes/_utils.o b/build/temp.linux-x86_64-cpython-313/build/faster_hexbytes/_utils.o new file mode 100644 index 0000000000000000000000000000000000000000..7ddfb93457e2ef5222e2e705b143a120055f2dea GIT binary patch literal 5296 zcmbtYU2Gf25#HtTBFdC0*-m0Qt|O{Q(!?;2qNK{QW5+ZoN3@Z~suMMG5|=%aN0AA6 zM;wnfS+q$JRRshifY3Yy1^O2EEiL@eqUcMZG%egd^d&(4fFN;!0CCb7ZqcWv0o<9r zozrPe1x-3IZ)U!onVsF8ojdvY6OTL`;hYh1_7L092xY95*pPEV%&|Qz$^JEb_h$=* z7mp(JSYi3o4fg%`gmNcn*Xos7-L8AZ zs@e7|w^*~frJiTCi$EQ(-e{xq7rGl??EWcu>x{=RijI$c_z2VQLW($xA#G;_F>UO2 zq0dB;LXS=+Z$q5lF@g+f&}WSQd;ldL4G!~CF!BLNF?@uH59+@LUHd2mY9tTdVm+j9 zvW$`?6Vj{Ny@HqdJ&YUd*d8r$cr5auekguq4`UID#2<|NfVPiickSRi2NuU7XU8rN zJTV5#h#D;LN{vA(`VM|?Vpm)n-8+i5BfA;9EgT8KT#~T?gNq48cpv1uV8#1*cGnrc zuzN9nHvU8$p~1}%tlmPGG%_p-LL8ZRh*bQC&e@=!8Q9*b?|4$@E{OI%Z*>>--M+>9kq-ldQ-Q&|-Kx%?*0);_Wl;OY zfEVR@OnbBYg3gNqx-{@AK=)}^yRi@T%&7=eFfY#cinEs4XgFmy_vk_@pFNn$P8yTO zcq-lWI<|Fm$+9iCUIx{4%eAB3nd$WOR4Tm$|FWs{=}G@rwVia^13NG6oVVO+!?}=3 zSLaXW;c2#ecDd#{w$o{+JNAXTT}gXpsbRHYuJR0}K~?vVF4IbX?DD zfXzv462+pp>_ya@Ef^~L>|0I+`~fY_p2(j$@o-@8w~$h&-l$}h4wLcwi&18on$xs0 zZpVh*%Up2WXEW4=0^xtM={pU}I4uumfbLfD9H&t>%QY)A-}7pYotZS?01sxm(^Hwc zU2b$LR;DFJaDW8~27)8@&!{nIoBp1GTo*e50-MX{52x;5D0OVFBTFMa-4W` z_|yXu#v6cyZ3CMbUIeHqyo~FJ(N(z}WF-FmGmLjf_}-y`*c#lGDZsuaMi{$<{6u2p zCy_!Txvb45#v|X|mPj5?j2utI=HlN5IWOdVoMF7jr62W9srF@fEu-w8H~S50eczmz zyXeKYxM)GQ-aMqSq0NBQG`4*Ue0U2ycr66u+k_>kq(Ohb#ao6T!Ljk} z46Rq}Ibh#_->tJUh93z1aNPTTczp}J131om88}jKWZj!fzTe$hVTav1VVfK^dh`~AQ0Ne;Yav9 zfr$t)z&xop;}F&u66ND-5KjtdkM)q3`h5z%B=!9Y{zIux zDfn-ten`RBrT&nD|3&IFKjrg=#0!f3`%*t6xw@{D#Ia_>b-SqGR42@6_nPnl1KfiT z3FI}BT&rOkp4Ii3Q87J}8Kric8Lop0nr98@X<>B+RP?D>rOpz3iBui%6tY<=xz_nj z!=`K6OBMw5EnIu4QEz)V!A6Ki-L}X8CL|HzqR`7uvuW9opbg(#2E3r*n+v|dq`qW# z4EP#rS+3WUajjah>Y7bUZpZ)4QV;>pfa;F|=A=OPfpDrv()WUZ{VPX+lcfsEkg0Nl@57#^n{2L#A2yMf302GY*RsFNzi!mqQ7bcqja2N!c<|m$$nCd?x z4OD+xKlx+7AQ{AfTnYXoKzu>9#lG5a|L@0(2s9!u5$-?sA)24||9gO`F#%#F>Gw-i zLZsT_pYJM$=EL$p#zVd+sAFh9Vx2yaA3SbzM)(N7ZBN!CuureX3#D4`g{ru0%PtuP> zl#K`Z5&!)b{^w*v!21;@@*{o)21yRvt*Q-04yv|q1CDhm%Pk18CjCEM!zI33h1(2@NST?BvgNFld{x6 d+Mqv6!<7w4Nb3IW0JNWfOXg2~jKZk?{{`I{k&FNU literal 0 HcmV?d00001 diff --git a/build/temp.linux-x86_64-cpython-313/build/faster_hexbytes/main.o b/build/temp.linux-x86_64-cpython-313/build/faster_hexbytes/main.o new file mode 100644 index 0000000000000000000000000000000000000000..41dc0be36002681a3541b61a8b812b5d299ead6d GIT binary patch literal 5280 zcmbVPZ){uD6~EWdk2rPWq%ET^U5Ud0K~+D;NtULC4o6OjTLH~lGEx|GpY7+^V87=* zKT~^~1|xJ*R3TO41DdoCljy#&sUL;}(lmv2Q@_BMN!yr&ph!p*M%7LGv<;~{=iYl> zUS1uvaTLFM&hPxW=iYnnc`wf$dHA6S=ZuK6Z?FxCP{vLtHu#)ib8I(DvVV@;@$aR= zONS9USy=rnc@??B*>&&f!b@Kl{MzNh+9e6E{h@G9JGn(10+9W~kYC!e}hJzrS6 zURayIE2aVg_qX3wtH#LKiLkNJLr+>ALjS)D$ZovO^>&pc46REx!CuhlEFx?T5* zRkQ6`Zn0){OFhqO7eQ&(ZFEKY0(aw!+&=?fo$(mP(DAVsA3=IEAc&I~(so1;)5dQV z@@yn2tH)9cn#P5$wK-)7JaN5JV0)Xs{Ry4B_>8eglrQVM zPemj8u=Zgjc1%Lr<>&+Y;G=r%Sd?pj?k?-Qq{aJ@k9>n;zQJF+Rh@rZAGRRMp!SOa zFUs|p_NVR(Ixh<7!oX_)-J@OU#y-+B$0AU{ytvpa&Rb@q;gs3Jqf4oL_CP8-WlR|p zsdUrp*w*0{%eLHl8AQ`9*A91QXVNp%sq_l`WmD@#({lJ?9}!)k-F?V06g(k<8Vtg`307{sw5xKflGX1hk} zx?_W)Tn)%?-my#jFFY_&TL3-Lv#ZbKJfxY(oZqs^w{dS(M` zj$(@_7R6OBqTFnOswjs?oC^2@TAV+UKXK$CvKI}c)TuWrnNWAhpvow-OwDOp8MkA@ z&SlOx?lT$cKR)w6+4P-+Wt^4=GeBRfc#hL3o8_97S?qZ=$IeU{aCiqY-I?i3-7Yse z6)V#c8dNZqo*EpnZ$^zlvy^)Ud|m7SFl-^8Ka{$6snoH(jw*@tOh<^5Kb)L4CZ_LG zFx+#fXKY_s`cOr9{ninq%W*64Nc?*z81IhqJwpSr^Kd(+0sE@ZFm?gQBZ<);M+%AL zsy3gPh5FZg_%VZ6tbA9YJ5_8ssdM%h1Z^iyhm-;|iU=)O0( zXnud*tkT%fWg_&_xF&LI|L)%D+GxV+AZ4=Sg+V~ zz`h2*n`dS0;1>Ae7Pz$q{$0Rv-it6I`Ddm|(ResN!Qhd_$KG&@SY|fb5=QkwDeU$Z$drkNq$`9?g1@QY6j)Ek-%=x*VV+cnb%kS|n9qI{ zr=@VRS0XzX!Y7pcvKlcC-cs7nR~1fi$eun$2&Z25RwxekIiz>w;O{fpUr{*ae@u3E_C}k@m^Kuaoa9c{+qsy<&es zqWHg&BK-FviSSEG&WG@~m0SqnR6i#a9$r^U;aCg7x?K+87nRJ6cCQJaEHHZT>40O6 zIM-^JhG%s>W>ieiWJamoW`^safaX~Px>``21rdEJR;jZB-yT&5JOyu-O0M1V9lfIU-;-lXd9&cAYjZd>z@T*j5!IvAkqA@K@fPFpT?ZR!v3?$AnZ@; zCx7f0!~^S7OM!p)5y^yYv9I>q|0G^epiy;+aR0I2(EPOjrvVGc1c;qhe!oN^Kw;Z9 z=)xG9532*22>2o!w#9$=`{jSHYSiS9`BTrqIF$bjz=va^{;-;#-iL@Gg>7HygQ49M z%Kr)q0Sf#71a$rKUsn0Qt9&tke7A@9|5d;+Can`#L5DCX5Y>^CHu9%Deg%qt{w}`k zfIgIi|0F*ee+!y^{wGyK!21;>@}u!GD2Wf+Jr`~$N*T8O3*cCns@(h#&ny3wk4T30 zkKpUTV9c=p&y|0T4AmI+{}k|k=Qn|e1w`k9=ZEin@~8UiH#hpla8W=P)q?T+9!nzZ kk8M(w8gLu*hBExo1|&EY&PTTc*U$g7%AfieIfVWH3oqV@6aWAK literal 0 HcmV?d00001 From d0c74e89091533843ffb8d1ff62c27454df163c2 Mon Sep 17 00:00:00 2001 From: BobTheBuidler Date: Tue, 30 Sep 2025 04:31:46 +0000 Subject: [PATCH 18/98] comiple --- faster_hexbytes/_utils.py | 8 ++++++-- faster_hexbytes/main.py | 16 ++++++++++------ pyproject.toml | 2 +- setup.py | 8 ++++++-- tests/core/test_import_and_version.py | 2 +- 5 files changed, 24 insertions(+), 12 deletions(-) diff --git a/faster_hexbytes/_utils.py b/faster_hexbytes/_utils.py index 5551728..991307f 100644 --- a/faster_hexbytes/_utils.py +++ b/faster_hexbytes/_utils.py @@ -1,10 +1,14 @@ import binascii from typing import ( + Final, Union, ) -def to_bytes(val: Union[bool, bytearray, bytes, int, str, memoryview]) -> bytes: +unhexlify: Final = binascii.unhexlify + + +def to_bytes(val: Union[bytes, str, bytearray, bool, int, memoryview]) -> bytes: """ Equivalent to: `eth_utils.hexstr_if_str(eth_utils.to_bytes, val)` . @@ -51,4 +55,4 @@ def hexstr_to_bytes(hexstr: str) -> bytes: f"hex string {padded_hex} may only contain [0-9a-fA-F] characters" ) else: - return binascii.unhexlify(ascii_hex) + return unhexlify(ascii_hex) diff --git a/faster_hexbytes/main.py b/faster_hexbytes/main.py index b987a6c..88c3944 100644 --- a/faster_hexbytes/main.py +++ b/faster_hexbytes/main.py @@ -1,12 +1,14 @@ from typing import ( TYPE_CHECKING, Callable, + Final, Tuple, Type, Union, overload, ) +import hexbytes from mypy_extensions import ( mypyc_attr, ) @@ -23,11 +25,13 @@ SupportsIndex, ) -BytesLike = Union[bool, bytearray, bytes, int, str, memoryview] +BytesLike = Union[bytes, str, bool, bytearray, int, memoryview] + +_bytes_new: Final = bytes.__new__ @mypyc_attr(native_class=False) -class HexBytes(bytes): +class HexBytes(hexbytes.HexBytes): """ Thin wrapper around the python built-in :class:`bytes` class. @@ -40,7 +44,7 @@ class HexBytes(bytes): def __new__(cls, val: BytesLike) -> Self: bytesval = to_bytes(val) - return bytes.__new__(cls, bytesval) + return _bytes_new(cls, bytesval) @overload def __getitem__(self, key: "SupportsIndex") -> int: # noqa: F811 @@ -53,7 +57,7 @@ def __getitem__(self, key: slice) -> "HexBytes": # noqa: F811 def __getitem__( # noqa: F811 self, key: Union["SupportsIndex", slice] ) -> Union[int, bytes, "HexBytes"]: - result = super().__getitem__(key) + result = bytes.__getitem__(self, key) if hasattr(result, "hex"): return type(self)(result) else: @@ -66,7 +70,7 @@ def to_0x_hex(self) -> str: """ Convert the bytes to a 0x-prefixed hex string """ - return "0x" + self.hex() + return f"0x{self.hex()}" def __reduce__( self, @@ -76,4 +80,4 @@ def __reduce__( ``HexBytes.__new__`` since an existing HexBytes instance has already been validated when created. """ - return bytes.__new__, (type(self), bytes(self)) + return _bytes_new, (type(self), bytes(self)) diff --git a/pyproject.toml b/pyproject.toml index 2edc694..0515243 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [build-system] -requires = ["setuptools", "wheel", "mypy[mypyc]>=1.14.1,<1.18.3"] +requires = ["setuptools", "wheel", "mypy[mypyc]==1.18.2", "hexbytes==1.3.1"] build-backend = "setuptools.build_meta" [tool.autoflake] diff --git a/setup.py b/setup.py index 83cea33..11d4714 100644 --- a/setup.py +++ b/setup.py @@ -6,6 +6,9 @@ ) from mypyc.build import mypycify + +version = "1.3.1" + extras_require = { "dev": [ "build>=0.9.0", @@ -46,10 +49,11 @@ # we can't compile on python3.8 but we can still let the user install ext_modules = [] + setup( name="faster_hexbytes", # *IMPORTANT*: Don't manually change the version here. See Contributing docs for the release process. - version="1.3.1", + version=version, description="""A faster fork of hexbytes: Python `bytes` subclass that decodes hex, with a readable console output. Implemented in C.""", long_description=long_description, long_description_content_type="text/markdown", @@ -57,7 +61,7 @@ author_email="snakecharmers@ethereum.org", url="https://github.com/ethereum/hexbytes", include_package_data=True, - install_requires=[], + install_requires=[f"hexbytes=={version}"], python_requires=">=3.8, <4", extras_require=extras_require, py_modules=["faster_hexbytes"], diff --git a/tests/core/test_import_and_version.py b/tests/core/test_import_and_version.py index 84b61da..55418fe 100644 --- a/tests/core/test_import_and_version.py +++ b/tests/core/test_import_and_version.py @@ -1,4 +1,4 @@ def test_import_and_version(): import faster_hexbytes - assert isinstance(hexbytes.__version__, str) + assert isinstance(faster_hexbytes.__version__, str) From 8872a62a2970259ee32be5a903b2b746c620c1c4 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Tue, 30 Sep 2025 00:44:50 -0400 Subject: [PATCH 19/98] microoptimize __getitem__ --- faster_hexbytes/main.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/faster_hexbytes/main.py b/faster_hexbytes/main.py index 88c3944..476454a 100644 --- a/faster_hexbytes/main.py +++ b/faster_hexbytes/main.py @@ -16,7 +16,7 @@ Self, ) -from ._utils import ( +from faster_hexbytes._utils import ( to_bytes, ) @@ -51,17 +51,20 @@ def __getitem__(self, key: "SupportsIndex") -> int: # noqa: F811 ... @overload # noqa: F811 - def __getitem__(self, key: slice) -> "HexBytes": # noqa: F811 + def __getitem__(self, key: slice) -> Self: # noqa: F811 ... def __getitem__( # noqa: F811 self, key: Union["SupportsIndex", slice] - ) -> Union[int, bytes, "HexBytes"]: + ) -> Union[int, Self]: result = bytes.__getitem__(self, key) - if hasattr(result, "hex"): - return type(self)(result) - else: + if isinstance(result, int): return result + cls = type(self) + if cls is HexBytes: + # fast-path case with faster C code for non-subclass + return HexBytes(result) + return cls(result) def __repr__(self) -> str: return f"HexBytes({'0x' + self.hex()!r})" From 3570529d8585f370af06b154970a4c257507a4fe Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Tue, 30 Sep 2025 00:45:43 -0400 Subject: [PATCH 20/98] fix compile err --- faster_hexbytes/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faster_hexbytes/__init__.py b/faster_hexbytes/__init__.py index bf32717..dbacf8e 100644 --- a/faster_hexbytes/__init__.py +++ b/faster_hexbytes/__init__.py @@ -2,7 +2,7 @@ version as __version, ) -from .main import ( +from faster_hexbytes.main import ( HexBytes, ) From df3e297fc68836cacbaaf113b865b43525831b6d Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Tue, 30 Sep 2025 00:46:13 -0400 Subject: [PATCH 21/98] Update .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index c3a466e..85311be 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ dist build/**/*.py build/**/*.typed +build/**/*.o .build eggs .eggs From cbcc7b6f157b539b2b5ba9dd203e3f5497a1430c Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Tue, 30 Sep 2025 00:46:38 -0400 Subject: [PATCH 22/98] Delete build directory --- build/__native_6a32f4913d613d6a7ddf.c | 2975 ----------------- build/__native_6a32f4913d613d6a7ddf.h | 72 - .../__native_internal_6a32f4913d613d6a7ddf.h | 75 - build/faster_hexbytes.c | 21 - build/faster_hexbytes/_utils.c | 21 - build/faster_hexbytes/main.c | 21 - build/ops.txt | 1375 -------- .../build/__native_6a32f4913d613d6a7ddf.o | Bin 342400 -> 0 bytes .../build/faster_hexbytes.o | Bin 5296 -> 0 bytes .../build/faster_hexbytes/_utils.o | Bin 5296 -> 0 bytes .../build/faster_hexbytes/main.o | Bin 5280 -> 0 bytes 11 files changed, 4560 deletions(-) delete mode 100644 build/__native_6a32f4913d613d6a7ddf.c delete mode 100644 build/__native_6a32f4913d613d6a7ddf.h delete mode 100644 build/__native_internal_6a32f4913d613d6a7ddf.h delete mode 100644 build/faster_hexbytes.c delete mode 100644 build/faster_hexbytes/_utils.c delete mode 100644 build/faster_hexbytes/main.c delete mode 100644 build/ops.txt delete mode 100644 build/temp.linux-x86_64-cpython-313/build/__native_6a32f4913d613d6a7ddf.o delete mode 100644 build/temp.linux-x86_64-cpython-313/build/faster_hexbytes.o delete mode 100644 build/temp.linux-x86_64-cpython-313/build/faster_hexbytes/_utils.o delete mode 100644 build/temp.linux-x86_64-cpython-313/build/faster_hexbytes/main.o diff --git a/build/__native_6a32f4913d613d6a7ddf.c b/build/__native_6a32f4913d613d6a7ddf.c deleted file mode 100644 index 136c015..0000000 --- a/build/__native_6a32f4913d613d6a7ddf.c +++ /dev/null @@ -1,2975 +0,0 @@ -#include "init.c" -#include "getargs.c" -#include "getargsfast.c" -#include "int_ops.c" -#include "float_ops.c" -#include "str_ops.c" -#include "bytes_ops.c" -#include "list_ops.c" -#include "dict_ops.c" -#include "set_ops.c" -#include "tuple_ops.c" -#include "exc_ops.c" -#include "misc_ops.c" -#include "generic_ops.c" -#include "pythonsupport.c" -#include "__native_6a32f4913d613d6a7ddf.h" -#include "__native_internal_6a32f4913d613d6a7ddf.h" -static PyMethodDef faster_hexbytesmodule_methods[] = { - {NULL, NULL, 0, NULL} -}; - -int CPyExec_faster_hexbytes(PyObject *module) -{ - PyObject* modname = NULL; - modname = PyObject_GetAttrString((PyObject *)CPyModule_faster_hexbytes__internal, "__name__"); - CPyStatic_faster_hexbytes___globals = PyModule_GetDict(CPyModule_faster_hexbytes__internal); - if (unlikely(CPyStatic_faster_hexbytes___globals == NULL)) - goto fail; - if (CPyGlobalsInit() < 0) - goto fail; - char result = CPyDef_faster_hexbytes_____top_level__(); - if (result == 2) - goto fail; - Py_DECREF(modname); - return 0; - fail: - Py_CLEAR(CPyModule_faster_hexbytes__internal); - Py_CLEAR(modname); - return -1; -} -static struct PyModuleDef faster_hexbytesmodule = { - PyModuleDef_HEAD_INIT, - "faster_hexbytes", - NULL, /* docstring */ - 0, /* size of per-interpreter state of the module */ - faster_hexbytesmodule_methods, - NULL, -}; - -PyObject *CPyInit_faster_hexbytes(void) -{ - if (CPyModule_faster_hexbytes__internal) { - Py_INCREF(CPyModule_faster_hexbytes__internal); - return CPyModule_faster_hexbytes__internal; - } - CPyModule_faster_hexbytes__internal = PyModule_Create(&faster_hexbytesmodule); - if (unlikely(CPyModule_faster_hexbytes__internal == NULL)) - goto fail; - if (CPyExec_faster_hexbytes(CPyModule_faster_hexbytes__internal) != 0) - goto fail; - return CPyModule_faster_hexbytes__internal; - fail: - return NULL; -} - -char CPyDef_faster_hexbytes_____top_level__(void) { - PyObject *cpy_r_r0; - PyObject *cpy_r_r1; - char cpy_r_r2; - PyObject *cpy_r_r3; - PyObject *cpy_r_r4; - PyObject *cpy_r_r5; - PyObject *cpy_r_r6; - PyObject *cpy_r_r7; - PyObject *cpy_r_r8; - PyObject *cpy_r_r9; - PyObject *cpy_r_r10; - PyObject *cpy_r_r11; - PyObject *cpy_r_r12; - PyObject *cpy_r_r13; - PyObject *cpy_r_r14; - PyObject *cpy_r_r15; - CPyPtr cpy_r_r16; - CPyPtr cpy_r_r17; - PyObject *cpy_r_r18; - PyObject *cpy_r_r19; - int32_t cpy_r_r20; - char cpy_r_r21; - PyObject *cpy_r_r22; - PyObject *cpy_r_r23; - PyObject *cpy_r_r24; - PyObject *cpy_r_r25; - PyObject **cpy_r_r27; - PyObject *cpy_r_r28; - PyObject *cpy_r_r29; - PyObject *cpy_r_r30; - PyObject *cpy_r_r31; - int32_t cpy_r_r32; - char cpy_r_r33; - char cpy_r_r34; - cpy_r_r0 = CPyModule_builtins; - cpy_r_r1 = (PyObject *)&_Py_NoneStruct; - cpy_r_r2 = cpy_r_r0 != cpy_r_r1; - if (cpy_r_r2) goto CPyL3; - cpy_r_r3 = CPyStatics[3]; /* 'builtins' */ - cpy_r_r4 = PyImport_Import(cpy_r_r3); - if (unlikely(cpy_r_r4 == NULL)) { - CPy_AddTraceback("faster_hexbytes/__init__.py", "", -1, CPyStatic_faster_hexbytes___globals); - goto CPyL12; - } - CPyModule_builtins = cpy_r_r4; - CPy_INCREF(CPyModule_builtins); - CPy_DECREF(cpy_r_r4); -CPyL3: ; - cpy_r_r5 = CPyStatics[67]; /* ('version',) */ - cpy_r_r6 = CPyStatics[68]; /* ('__version',) */ - cpy_r_r7 = CPyStatics[6]; /* 'importlib.metadata' */ - cpy_r_r8 = CPyStatic_faster_hexbytes___globals; - cpy_r_r9 = CPyImport_ImportFromMany(cpy_r_r7, cpy_r_r5, cpy_r_r6, cpy_r_r8); - if (unlikely(cpy_r_r9 == NULL)) { - CPy_AddTraceback("faster_hexbytes/__init__.py", "", 1, CPyStatic_faster_hexbytes___globals); - goto CPyL12; - } - CPyModule_importlib___metadata = cpy_r_r9; - CPy_INCREF(CPyModule_importlib___metadata); - CPy_DECREF(cpy_r_r9); - cpy_r_r10 = CPyStatics[69]; /* ('HexBytes',) */ - cpy_r_r11 = CPyStatics[8]; /* 'faster_hexbytes.main' */ - cpy_r_r12 = CPyStatic_faster_hexbytes___globals; - cpy_r_r13 = CPyImport_ImportFromMany(cpy_r_r11, cpy_r_r10, cpy_r_r10, cpy_r_r12); - if (unlikely(cpy_r_r13 == NULL)) { - CPy_AddTraceback("faster_hexbytes/__init__.py", "", 5, CPyStatic_faster_hexbytes___globals); - goto CPyL12; - } - CPyModule_faster_hexbytes___main = cpy_r_r13; - CPy_INCREF(CPyModule_faster_hexbytes___main); - CPy_DECREF(cpy_r_r13); - cpy_r_r14 = CPyStatics[7]; /* 'HexBytes' */ - cpy_r_r15 = PyList_New(1); - if (unlikely(cpy_r_r15 == NULL)) { - CPy_AddTraceback("faster_hexbytes/__init__.py", "", 9, CPyStatic_faster_hexbytes___globals); - goto CPyL12; - } - cpy_r_r16 = (CPyPtr)&((PyListObject *)cpy_r_r15)->ob_item; - cpy_r_r17 = *(CPyPtr *)cpy_r_r16; - CPy_INCREF(cpy_r_r14); - *(PyObject * *)cpy_r_r17 = cpy_r_r14; - cpy_r_r18 = CPyStatic_faster_hexbytes___globals; - cpy_r_r19 = CPyStatics[9]; /* '__all__' */ - cpy_r_r20 = CPyDict_SetItem(cpy_r_r18, cpy_r_r19, cpy_r_r15); - CPy_DECREF_NO_IMM(cpy_r_r15); - cpy_r_r21 = cpy_r_r20 >= 0; - if (unlikely(!cpy_r_r21)) { - CPy_AddTraceback("faster_hexbytes/__init__.py", "", 9, CPyStatic_faster_hexbytes___globals); - goto CPyL12; - } - cpy_r_r22 = CPyStatics[10]; /* 'hexbytes' */ - cpy_r_r23 = CPyStatic_faster_hexbytes___globals; - cpy_r_r24 = CPyStatics[5]; /* '__version' */ - cpy_r_r25 = CPyDict_GetItem(cpy_r_r23, cpy_r_r24); - if (unlikely(cpy_r_r25 == NULL)) { - CPy_AddTraceback("faster_hexbytes/__init__.py", "", 11, CPyStatic_faster_hexbytes___globals); - goto CPyL12; - } - PyObject *cpy_r_r26[1] = {cpy_r_r22}; - cpy_r_r27 = (PyObject **)&cpy_r_r26; - cpy_r_r28 = PyObject_Vectorcall(cpy_r_r25, cpy_r_r27, 1, 0); - CPy_DECREF(cpy_r_r25); - if (unlikely(cpy_r_r28 == NULL)) { - CPy_AddTraceback("faster_hexbytes/__init__.py", "", 11, CPyStatic_faster_hexbytes___globals); - goto CPyL12; - } - if (likely(PyUnicode_Check(cpy_r_r28))) - cpy_r_r29 = cpy_r_r28; - else { - CPy_TypeErrorTraceback("faster_hexbytes/__init__.py", "", 11, CPyStatic_faster_hexbytes___globals, "str", cpy_r_r28); - goto CPyL12; - } - cpy_r_r30 = CPyStatic_faster_hexbytes___globals; - cpy_r_r31 = CPyStatics[11]; /* '__version__' */ - cpy_r_r32 = CPyDict_SetItem(cpy_r_r30, cpy_r_r31, cpy_r_r29); - CPy_DECREF(cpy_r_r29); - cpy_r_r33 = cpy_r_r32 >= 0; - if (unlikely(!cpy_r_r33)) { - CPy_AddTraceback("faster_hexbytes/__init__.py", "", 11, CPyStatic_faster_hexbytes___globals); - goto CPyL12; - } - return 1; -CPyL12: ; - cpy_r_r34 = 2; - return cpy_r_r34; -} -static PyMethodDef _utilsmodule_methods[] = { - {"to_bytes", (PyCFunction)CPyPy__utils___to_bytes, METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("to_bytes(val)\n--\n\n") /* docstring */}, - {"hexstr_to_bytes", (PyCFunction)CPyPy__utils___hexstr_to_bytes, METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("hexstr_to_bytes(hexstr)\n--\n\n") /* docstring */}, - {NULL, NULL, 0, NULL} -}; - -int CPyExec_faster_hexbytes____utils(PyObject *module) -{ - PyObject* modname = NULL; - modname = PyObject_GetAttrString((PyObject *)CPyModule_faster_hexbytes____utils__internal, "__name__"); - CPyStatic__utils___globals = PyModule_GetDict(CPyModule_faster_hexbytes____utils__internal); - if (unlikely(CPyStatic__utils___globals == NULL)) - goto fail; - if (CPyGlobalsInit() < 0) - goto fail; - char result = CPyDef__utils_____top_level__(); - if (result == 2) - goto fail; - Py_DECREF(modname); - return 0; - fail: - Py_CLEAR(CPyModule_faster_hexbytes____utils__internal); - Py_CLEAR(modname); - return -1; -} -static struct PyModuleDef _utilsmodule = { - PyModuleDef_HEAD_INIT, - "faster_hexbytes._utils", - NULL, /* docstring */ - 0, /* size of per-interpreter state of the module */ - _utilsmodule_methods, - NULL, -}; - -PyObject *CPyInit_faster_hexbytes____utils(void) -{ - if (CPyModule_faster_hexbytes____utils__internal) { - Py_INCREF(CPyModule_faster_hexbytes____utils__internal); - return CPyModule_faster_hexbytes____utils__internal; - } - CPyModule_faster_hexbytes____utils__internal = PyModule_Create(&_utilsmodule); - if (unlikely(CPyModule_faster_hexbytes____utils__internal == NULL)) - goto fail; - if (CPyExec_faster_hexbytes____utils(CPyModule_faster_hexbytes____utils__internal) != 0) - goto fail; - return CPyModule_faster_hexbytes____utils__internal; - fail: - return NULL; -} - -PyObject *CPyDef__utils___to_bytes(PyObject *cpy_r_val) { - char cpy_r_r0; - PyObject *cpy_r_r1; - char cpy_r_r2; - PyObject *cpy_r_r3; - PyObject *cpy_r_r4; - char cpy_r_r5; - PyObject *cpy_r_r6; - PyObject **cpy_r_r8; - PyObject *cpy_r_r9; - PyObject *cpy_r_r10; - char cpy_r_r11; - char cpy_r_r12; - PyObject *cpy_r_r13; - PyObject *cpy_r_r14; - PyObject *cpy_r_r15; - char cpy_r_r16; - CPyTagged cpy_r_r17; - int64_t cpy_r_r18; - char cpy_r_r19; - int64_t cpy_r_r20; - char cpy_r_r21; - char cpy_r_r22; - char cpy_r_r23; - char cpy_r_r24; - PyObject *cpy_r_r25; - CPyTagged cpy_r_r26; - PyObject *cpy_r_r27; - PyObject *cpy_r_r28; - PyObject *cpy_r_r29; - PyObject *cpy_r_r30; - PyObject *cpy_r_r31; - PyObject *cpy_r_r32; - PyObject **cpy_r_r34; - PyObject *cpy_r_r35; - CPyTagged cpy_r_r36; - PyObject *cpy_r_r37; - PyObject *cpy_r_r38; - PyObject *cpy_r_r39; - PyObject *cpy_r_r40; - PyObject **cpy_r_r42; - PyObject *cpy_r_r43; - PyObject *cpy_r_r44; - PyObject *cpy_r_r45; - PyObject *cpy_r_r46; - PyObject *cpy_r_r47; - PyObject *cpy_r_r48; - int32_t cpy_r_r49; - char cpy_r_r50; - char cpy_r_r51; - PyObject *cpy_r_r52; - PyObject **cpy_r_r54; - PyObject *cpy_r_r55; - PyObject *cpy_r_r56; - PyObject *cpy_r_r57; - PyObject *cpy_r_r58; - PyObject *cpy_r_r59; - PyObject *cpy_r_r60; - PyObject *cpy_r_r61; - PyObject **cpy_r_r63; - PyObject *cpy_r_r64; - PyObject *cpy_r_r65; - PyObject *cpy_r_r66; - PyObject *cpy_r_r67; - PyObject *cpy_r_r68; - PyObject *cpy_r_r69; - PyObject **cpy_r_r71; - PyObject *cpy_r_r72; - PyObject *cpy_r_r73; - PyObject *cpy_r_r74; - CPyPtr cpy_r_r75; - CPyPtr cpy_r_r76; - CPyPtr cpy_r_r77; - CPyPtr cpy_r_r78; - CPyPtr cpy_r_r79; - CPyPtr cpy_r_r80; - PyObject *cpy_r_r81; - PyObject *cpy_r_r82; - PyObject *cpy_r_r83; - PyObject *cpy_r_r84; - PyObject **cpy_r_r86; - PyObject *cpy_r_r87; - PyObject *cpy_r_r88; - cpy_r_r0 = PyBytes_Check(cpy_r_val); - if (!cpy_r_r0) goto CPyL3; - CPy_INCREF(cpy_r_val); - if (likely(PyBytes_Check(cpy_r_val) || PyByteArray_Check(cpy_r_val))) - cpy_r_r1 = cpy_r_val; - else { - CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "to_bytes", 15, CPyStatic__utils___globals, "bytes", cpy_r_val); - goto CPyL51; - } - return cpy_r_r1; -CPyL3: ; - cpy_r_r2 = PyUnicode_Check(cpy_r_val); - if (!cpy_r_r2) goto CPyL7; - CPy_INCREF(cpy_r_val); - if (likely(PyUnicode_Check(cpy_r_val))) - cpy_r_r3 = cpy_r_val; - else { - CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "to_bytes", 17, CPyStatic__utils___globals, "str", cpy_r_val); - goto CPyL51; - } - cpy_r_r4 = CPyDef__utils___hexstr_to_bytes(cpy_r_r3); - CPy_DECREF(cpy_r_r3); - if (unlikely(cpy_r_r4 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 17, CPyStatic__utils___globals); - goto CPyL51; - } - return cpy_r_r4; -CPyL7: ; - cpy_r_r5 = PyByteArray_Check(cpy_r_val); - if (!cpy_r_r5) goto CPyL11; - cpy_r_r6 = (PyObject *)&PyBytes_Type; - PyObject *cpy_r_r7[1] = {cpy_r_val}; - cpy_r_r8 = (PyObject **)&cpy_r_r7; - cpy_r_r9 = PyObject_Vectorcall(cpy_r_r6, cpy_r_r8, 1, 0); - if (unlikely(cpy_r_r9 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 19, CPyStatic__utils___globals); - goto CPyL51; - } - if (likely(PyBytes_Check(cpy_r_r9) || PyByteArray_Check(cpy_r_r9))) - cpy_r_r10 = cpy_r_r9; - else { - CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "to_bytes", 19, CPyStatic__utils___globals, "bytes", cpy_r_r9); - goto CPyL51; - } - return cpy_r_r10; -CPyL11: ; - cpy_r_r11 = PyBool_Check(cpy_r_val); - if (!cpy_r_r11) goto CPyL17; - if (unlikely(!PyBool_Check(cpy_r_val))) { - CPy_TypeError("bool", cpy_r_val); cpy_r_r12 = 2; - } else - cpy_r_r12 = cpy_r_val == Py_True; - if (unlikely(cpy_r_r12 == 2)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 21, CPyStatic__utils___globals); - goto CPyL51; - } - if (!cpy_r_r12) goto CPyL15; - cpy_r_r13 = CPyStatics[65]; /* b'\x01' */ - CPy_INCREF(cpy_r_r13); - cpy_r_r14 = cpy_r_r13; - goto CPyL16; -CPyL15: ; - cpy_r_r15 = CPyStatics[66]; /* b'\x00' */ - CPy_INCREF(cpy_r_r15); - cpy_r_r14 = cpy_r_r15; -CPyL16: ; - return cpy_r_r14; -CPyL17: ; - cpy_r_r16 = PyLong_Check(cpy_r_val); - if (!cpy_r_r16) goto CPyL37; - if (likely(PyLong_Check(cpy_r_val))) - cpy_r_r17 = CPyTagged_FromObject(cpy_r_val); - else { - CPy_TypeError("int", cpy_r_val); cpy_r_r17 = CPY_INT_TAG; - } - if (unlikely(cpy_r_r17 == CPY_INT_TAG)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 25, CPyStatic__utils___globals); - goto CPyL51; - } - cpy_r_r18 = cpy_r_r17 & 1; - cpy_r_r19 = cpy_r_r18 != 0; - if (cpy_r_r19) goto CPyL21; - cpy_r_r20 = 0 & 1; - cpy_r_r21 = cpy_r_r20 != 0; - if (!cpy_r_r21) goto CPyL22; -CPyL21: ; - cpy_r_r22 = CPyTagged_IsLt_(cpy_r_r17, 0); - cpy_r_r23 = cpy_r_r22; - goto CPyL23; -CPyL22: ; - cpy_r_r24 = (Py_ssize_t)cpy_r_r17 < (Py_ssize_t)0; - cpy_r_r23 = cpy_r_r24; -CPyL23: ; - CPyTagged_DECREF(cpy_r_r17); - if (!cpy_r_r23) goto CPyL31; - cpy_r_r25 = CPyStatics[12]; /* 'Cannot convert negative integer ' */ - if (likely(PyLong_Check(cpy_r_val))) - cpy_r_r26 = CPyTagged_FromObject(cpy_r_val); - else { - CPy_TypeError("int", cpy_r_val); cpy_r_r26 = CPY_INT_TAG; - } - if (unlikely(cpy_r_r26 == CPY_INT_TAG)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 26, CPyStatic__utils___globals); - goto CPyL51; - } - cpy_r_r27 = CPyTagged_Str(cpy_r_r26); - CPyTagged_DECREF(cpy_r_r26); - if (unlikely(cpy_r_r27 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 26, CPyStatic__utils___globals); - goto CPyL51; - } - cpy_r_r28 = CPyStatics[13]; /* ' to bytes' */ - cpy_r_r29 = CPyStr_Build(3, cpy_r_r25, cpy_r_r27, cpy_r_r28); - CPy_DECREF(cpy_r_r27); - if (unlikely(cpy_r_r29 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 26, CPyStatic__utils___globals); - goto CPyL51; - } - cpy_r_r30 = CPyModule_builtins; - cpy_r_r31 = CPyStatics[14]; /* 'ValueError' */ - cpy_r_r32 = CPyObject_GetAttr(cpy_r_r30, cpy_r_r31); - if (unlikely(cpy_r_r32 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 26, CPyStatic__utils___globals); - goto CPyL52; - } - PyObject *cpy_r_r33[1] = {cpy_r_r29}; - cpy_r_r34 = (PyObject **)&cpy_r_r33; - cpy_r_r35 = PyObject_Vectorcall(cpy_r_r32, cpy_r_r34, 1, 0); - CPy_DECREF(cpy_r_r32); - if (unlikely(cpy_r_r35 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 26, CPyStatic__utils___globals); - goto CPyL52; - } - CPy_DECREF(cpy_r_r29); - CPy_Raise(cpy_r_r35); - CPy_DECREF(cpy_r_r35); - if (unlikely(!0)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 26, CPyStatic__utils___globals); - goto CPyL51; - } - CPy_Unreachable(); -CPyL31: ; - if (likely(PyLong_Check(cpy_r_val))) - cpy_r_r36 = CPyTagged_FromObject(cpy_r_val); - else { - CPy_TypeError("int", cpy_r_val); cpy_r_r36 = CPY_INT_TAG; - } - if (unlikely(cpy_r_r36 == CPY_INT_TAG)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 28, CPyStatic__utils___globals); - goto CPyL51; - } - cpy_r_r37 = CPyModule_builtins; - cpy_r_r38 = CPyStatics[15]; /* 'hex' */ - cpy_r_r39 = CPyObject_GetAttr(cpy_r_r37, cpy_r_r38); - if (unlikely(cpy_r_r39 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 28, CPyStatic__utils___globals); - goto CPyL53; - } - cpy_r_r40 = CPyTagged_StealAsObject(cpy_r_r36); - PyObject *cpy_r_r41[1] = {cpy_r_r40}; - cpy_r_r42 = (PyObject **)&cpy_r_r41; - cpy_r_r43 = PyObject_Vectorcall(cpy_r_r39, cpy_r_r42, 1, 0); - CPy_DECREF(cpy_r_r39); - if (unlikely(cpy_r_r43 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 28, CPyStatic__utils___globals); - goto CPyL54; - } - CPy_DECREF(cpy_r_r40); - if (likely(PyUnicode_Check(cpy_r_r43))) - cpy_r_r44 = cpy_r_r43; - else { - CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "to_bytes", 28, CPyStatic__utils___globals, "str", cpy_r_r43); - goto CPyL51; - } - cpy_r_r45 = CPyDef__utils___to_bytes(cpy_r_r44); - CPy_DECREF(cpy_r_r44); - if (unlikely(cpy_r_r45 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 28, CPyStatic__utils___globals); - goto CPyL51; - } - return cpy_r_r45; -CPyL37: ; - cpy_r_r46 = CPyModule_builtins; - cpy_r_r47 = CPyStatics[16]; /* 'memoryview' */ - cpy_r_r48 = CPyObject_GetAttr(cpy_r_r46, cpy_r_r47); - if (unlikely(cpy_r_r48 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 29, CPyStatic__utils___globals); - goto CPyL51; - } - cpy_r_r49 = PyObject_IsInstance(cpy_r_val, cpy_r_r48); - CPy_DECREF(cpy_r_r48); - cpy_r_r50 = cpy_r_r49 >= 0; - if (unlikely(!cpy_r_r50)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 29, CPyStatic__utils___globals); - goto CPyL51; - } - cpy_r_r51 = cpy_r_r49; - if (!cpy_r_r51) goto CPyL43; - cpy_r_r52 = (PyObject *)&PyBytes_Type; - PyObject *cpy_r_r53[1] = {cpy_r_val}; - cpy_r_r54 = (PyObject **)&cpy_r_r53; - cpy_r_r55 = PyObject_Vectorcall(cpy_r_r52, cpy_r_r54, 1, 0); - if (unlikely(cpy_r_r55 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 30, CPyStatic__utils___globals); - goto CPyL51; - } - if (likely(PyBytes_Check(cpy_r_r55) || PyByteArray_Check(cpy_r_r55))) - cpy_r_r56 = cpy_r_r55; - else { - CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "to_bytes", 30, CPyStatic__utils___globals, "bytes", cpy_r_r55); - goto CPyL51; - } - return cpy_r_r56; -CPyL43: ; - cpy_r_r57 = CPyStatics[17]; /* '' */ - cpy_r_r58 = CPyStatics[18]; /* 'Cannot convert ' */ - cpy_r_r59 = CPyStatics[19]; /* '{!r:{}}' */ - cpy_r_r60 = CPyStatics[17]; /* '' */ - cpy_r_r61 = CPyStatics[20]; /* 'format' */ - PyObject *cpy_r_r62[3] = {cpy_r_r59, cpy_r_val, cpy_r_r60}; - cpy_r_r63 = (PyObject **)&cpy_r_r62; - cpy_r_r64 = PyObject_VectorcallMethod(cpy_r_r61, cpy_r_r63, 9223372036854775811ULL, 0); - if (unlikely(cpy_r_r64 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals); - goto CPyL51; - } - cpy_r_r65 = CPyStatics[21]; /* ' of type ' */ - cpy_r_r66 = CPyStatics[22]; /* '{:{}}' */ - cpy_r_r67 = CPy_TYPE(cpy_r_val); - cpy_r_r68 = CPyStatics[17]; /* '' */ - cpy_r_r69 = CPyStatics[20]; /* 'format' */ - PyObject *cpy_r_r70[3] = {cpy_r_r66, cpy_r_r67, cpy_r_r68}; - cpy_r_r71 = (PyObject **)&cpy_r_r70; - cpy_r_r72 = PyObject_VectorcallMethod(cpy_r_r69, cpy_r_r71, 9223372036854775811ULL, 0); - if (unlikely(cpy_r_r72 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals); - goto CPyL55; - } - CPy_DECREF(cpy_r_r67); - cpy_r_r73 = CPyStatics[13]; /* ' to bytes' */ - cpy_r_r74 = PyList_New(5); - if (unlikely(cpy_r_r74 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals); - goto CPyL56; - } - cpy_r_r75 = (CPyPtr)&((PyListObject *)cpy_r_r74)->ob_item; - cpy_r_r76 = *(CPyPtr *)cpy_r_r75; - CPy_INCREF(cpy_r_r58); - *(PyObject * *)cpy_r_r76 = cpy_r_r58; - cpy_r_r77 = cpy_r_r76 + 8; - *(PyObject * *)cpy_r_r77 = cpy_r_r64; - CPy_INCREF(cpy_r_r65); - cpy_r_r78 = cpy_r_r76 + 16; - *(PyObject * *)cpy_r_r78 = cpy_r_r65; - cpy_r_r79 = cpy_r_r76 + 24; - *(PyObject * *)cpy_r_r79 = cpy_r_r72; - CPy_INCREF(cpy_r_r73); - cpy_r_r80 = cpy_r_r76 + 32; - *(PyObject * *)cpy_r_r80 = cpy_r_r73; - cpy_r_r81 = PyUnicode_Join(cpy_r_r57, cpy_r_r74); - CPy_DECREF_NO_IMM(cpy_r_r74); - if (unlikely(cpy_r_r81 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals); - goto CPyL51; - } - cpy_r_r82 = CPyModule_builtins; - cpy_r_r83 = CPyStatics[23]; /* 'TypeError' */ - cpy_r_r84 = CPyObject_GetAttr(cpy_r_r82, cpy_r_r83); - if (unlikely(cpy_r_r84 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals); - goto CPyL57; - } - PyObject *cpy_r_r85[1] = {cpy_r_r81}; - cpy_r_r86 = (PyObject **)&cpy_r_r85; - cpy_r_r87 = PyObject_Vectorcall(cpy_r_r84, cpy_r_r86, 1, 0); - CPy_DECREF(cpy_r_r84); - if (unlikely(cpy_r_r87 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals); - goto CPyL57; - } - CPy_DECREF(cpy_r_r81); - CPy_Raise(cpy_r_r87); - CPy_DECREF(cpy_r_r87); - if (unlikely(!0)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals); - goto CPyL51; - } - CPy_Unreachable(); -CPyL51: ; - cpy_r_r88 = NULL; - return cpy_r_r88; -CPyL52: ; - CPy_DecRef(cpy_r_r29); - goto CPyL51; -CPyL53: ; - CPyTagged_DecRef(cpy_r_r36); - goto CPyL51; -CPyL54: ; - CPy_DecRef(cpy_r_r40); - goto CPyL51; -CPyL55: ; - CPy_DecRef(cpy_r_r64); - CPy_DecRef(cpy_r_r67); - goto CPyL51; -CPyL56: ; - CPy_DecRef(cpy_r_r64); - CPy_DecRef(cpy_r_r72); - goto CPyL51; -CPyL57: ; - CPy_DecRef(cpy_r_r81); - goto CPyL51; -} - -PyObject *CPyPy__utils___to_bytes(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { - static const char * const kwlist[] = {"val", 0}; - static CPyArg_Parser parser = {"O:to_bytes", kwlist, 0}; - PyObject *obj_val; - if (!CPyArg_ParseStackAndKeywordsOneArg(args, nargs, kwnames, &parser, &obj_val)) { - return NULL; - } - PyObject *arg_val; - if (PyBool_Check(obj_val)) - arg_val = obj_val; - else { - arg_val = NULL; - } - if (arg_val != NULL) goto __LL1; - arg_val = obj_val; - if (arg_val != NULL) goto __LL1; - if (PyBytes_Check(obj_val) || PyByteArray_Check(obj_val)) - arg_val = obj_val; - else { - arg_val = NULL; - } - if (arg_val != NULL) goto __LL1; - if (PyLong_Check(obj_val)) - arg_val = obj_val; - else { - arg_val = NULL; - } - if (arg_val != NULL) goto __LL1; - if (PyUnicode_Check(obj_val)) - arg_val = obj_val; - else { - arg_val = NULL; - } - if (arg_val != NULL) goto __LL1; - CPy_TypeError("union[bool, object, bytes, int, str]", obj_val); - goto fail; -__LL1: ; - PyObject *retval = CPyDef__utils___to_bytes(arg_val); - return retval; -fail: ; - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 7, CPyStatic__utils___globals); - return NULL; -} - -PyObject *CPyDef__utils___hexstr_to_bytes(PyObject *cpy_r_hexstr) { - PyObject *cpy_r_r0; - PyObject *cpy_r_r1; - tuple_T2OO cpy_r_r2; - PyObject *cpy_r_r3; - char cpy_r_r4; - PyObject *cpy_r_r5; - PyObject *cpy_r_r6; - PyObject *cpy_r_non_prefixed_hex; - int64_t cpy_r_r7; - char cpy_r_r8; - CPyTagged cpy_r_r9; - CPyTagged cpy_r_r10; - char cpy_r_r11; - PyObject *cpy_r_r12; - PyObject *cpy_r_r13; - PyObject *cpy_r_padded_hex; - PyObject *cpy_r_r14; - tuple_T3OOO cpy_r_r15; - PyObject *cpy_r_r16; - PyObject *cpy_r_r17; - PyObject *cpy_r_r18; - char cpy_r_r19; - PyObject *cpy_r_r20; - PyObject *cpy_r_r21; - PyObject *cpy_r_r22; - PyObject *cpy_r_r23; - PyObject *cpy_r_r24; - PyObject *cpy_r_r25; - PyObject **cpy_r_r27; - PyObject *cpy_r_r28; - char cpy_r_r29; - PyObject *cpy_r_r30; - PyObject *cpy_r_r31; - PyObject *cpy_r_r32; - PyObject **cpy_r_r34; - PyObject *cpy_r_r35; - PyObject *cpy_r_r36; - PyObject *cpy_r_r37; - cpy_r_r0 = CPyStatics[24]; /* '0x' */ - cpy_r_r1 = CPyStatics[25]; /* '0X' */ - CPy_INCREF(cpy_r_r0); - CPy_INCREF(cpy_r_r1); - cpy_r_r2.f0 = cpy_r_r0; - cpy_r_r2.f1 = cpy_r_r1; - cpy_r_r3 = PyTuple_New(2); - if (unlikely(cpy_r_r3 == NULL)) - CPyError_OutOfMemory(); - PyObject *__tmp2 = cpy_r_r2.f0; - PyTuple_SET_ITEM(cpy_r_r3, 0, __tmp2); - PyObject *__tmp3 = cpy_r_r2.f1; - PyTuple_SET_ITEM(cpy_r_r3, 1, __tmp3); - cpy_r_r4 = CPyStr_Startswith(cpy_r_hexstr, cpy_r_r3); - CPy_DECREF(cpy_r_r3); - if (unlikely(cpy_r_r4 == 2)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 36, CPyStatic__utils___globals); - goto CPyL29; - } - if (!cpy_r_r4) goto CPyL5; - cpy_r_r5 = CPyStr_GetSlice(cpy_r_hexstr, 4, 9223372036854775806LL); - if (unlikely(cpy_r_r5 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 37, CPyStatic__utils___globals); - goto CPyL29; - } - if (likely(PyUnicode_Check(cpy_r_r5))) - cpy_r_r6 = cpy_r_r5; - else { - CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 37, CPyStatic__utils___globals, "str", cpy_r_r5); - goto CPyL29; - } - cpy_r_non_prefixed_hex = cpy_r_r6; - goto CPyL6; -CPyL5: ; - CPy_INCREF(cpy_r_hexstr); - cpy_r_non_prefixed_hex = cpy_r_hexstr; -CPyL6: ; - cpy_r_r7 = CPyStr_Size_size_t(cpy_r_hexstr); - cpy_r_r8 = cpy_r_r7 >= 0; - if (unlikely(!cpy_r_r8)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 42, CPyStatic__utils___globals); - goto CPyL30; - } - cpy_r_r9 = cpy_r_r7 << 1; - cpy_r_r10 = CPyTagged_Remainder(cpy_r_r9, 4); - if (unlikely(cpy_r_r10 == CPY_INT_TAG)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 42, CPyStatic__utils___globals); - goto CPyL30; - } - cpy_r_r11 = cpy_r_r10 != 0; - CPyTagged_DECREF(cpy_r_r10); - if (!cpy_r_r11) goto CPyL11; - cpy_r_r12 = CPyStatics[26]; /* '0' */ - cpy_r_r13 = PyUnicode_Concat(cpy_r_r12, cpy_r_non_prefixed_hex); - CPy_DECREF(cpy_r_non_prefixed_hex); - if (unlikely(cpy_r_r13 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 43, CPyStatic__utils___globals); - goto CPyL29; - } - cpy_r_padded_hex = cpy_r_r13; - goto CPyL12; -CPyL11: ; - cpy_r_padded_hex = cpy_r_non_prefixed_hex; -CPyL12: ; - cpy_r_r14 = PyUnicode_AsASCIIString(cpy_r_padded_hex); - if (unlikely(cpy_r_r14 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 48, CPyStatic__utils___globals); - goto CPyL14; - } else - goto CPyL31; -CPyL13: ; - goto CPyL25; -CPyL14: ; - cpy_r_r15 = CPy_CatchError(); - cpy_r_r16 = CPyModule_builtins; - cpy_r_r17 = CPyStatics[27]; /* 'UnicodeDecodeError' */ - cpy_r_r18 = CPyObject_GetAttr(cpy_r_r16, cpy_r_r17); - if (unlikely(cpy_r_r18 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 49, CPyStatic__utils___globals); - goto CPyL32; - } - cpy_r_r19 = CPy_ExceptionMatches(cpy_r_r18); - CPy_DecRef(cpy_r_r18); - if (!cpy_r_r19) goto CPyL33; - cpy_r_r20 = CPyStatics[28]; /* 'hex string ' */ - cpy_r_r21 = CPyStatics[29]; /* ' may only contain [0-9a-fA-F] characters' */ - cpy_r_r22 = CPyStr_Build(3, cpy_r_r20, cpy_r_padded_hex, cpy_r_r21); - CPy_DecRef(cpy_r_padded_hex); - if (unlikely(cpy_r_r22 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 51, CPyStatic__utils___globals); - goto CPyL23; - } - cpy_r_r23 = CPyModule_builtins; - cpy_r_r24 = CPyStatics[14]; /* 'ValueError' */ - cpy_r_r25 = CPyObject_GetAttr(cpy_r_r23, cpy_r_r24); - if (unlikely(cpy_r_r25 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 50, CPyStatic__utils___globals); - goto CPyL34; - } - PyObject *cpy_r_r26[1] = {cpy_r_r22}; - cpy_r_r27 = (PyObject **)&cpy_r_r26; - cpy_r_r28 = PyObject_Vectorcall(cpy_r_r25, cpy_r_r27, 1, 0); - CPy_DecRef(cpy_r_r25); - if (unlikely(cpy_r_r28 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 50, CPyStatic__utils___globals); - goto CPyL34; - } - CPy_DecRef(cpy_r_r22); - CPy_Raise(cpy_r_r28); - CPy_DecRef(cpy_r_r28); - if (unlikely(!0)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 50, CPyStatic__utils___globals); - goto CPyL23; - } else - goto CPyL35; -CPyL20: ; - CPy_Unreachable(); -CPyL21: ; - CPy_Reraise(); - if (!0) { - goto CPyL23; - } else - goto CPyL36; -CPyL22: ; - CPy_Unreachable(); -CPyL23: ; - CPy_RestoreExcInfo(cpy_r_r15); - CPy_DecRef(cpy_r_r15.f0); - CPy_DecRef(cpy_r_r15.f1); - CPy_DecRef(cpy_r_r15.f2); - cpy_r_r29 = CPy_KeepPropagating(); - if (!cpy_r_r29) goto CPyL29; - CPy_Unreachable(); -CPyL25: ; - cpy_r_r30 = CPyModule_binascii; - cpy_r_r31 = CPyStatics[30]; /* 'unhexlify' */ - cpy_r_r32 = CPyObject_GetAttr(cpy_r_r30, cpy_r_r31); - if (unlikely(cpy_r_r32 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 54, CPyStatic__utils___globals); - goto CPyL37; - } - PyObject *cpy_r_r33[1] = {cpy_r_r14}; - cpy_r_r34 = (PyObject **)&cpy_r_r33; - cpy_r_r35 = PyObject_Vectorcall(cpy_r_r32, cpy_r_r34, 1, 0); - CPy_DECREF(cpy_r_r32); - if (unlikely(cpy_r_r35 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 54, CPyStatic__utils___globals); - goto CPyL37; - } - CPy_DECREF(cpy_r_r14); - if (likely(PyBytes_Check(cpy_r_r35) || PyByteArray_Check(cpy_r_r35))) - cpy_r_r36 = cpy_r_r35; - else { - CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 54, CPyStatic__utils___globals, "bytes", cpy_r_r35); - goto CPyL29; - } - return cpy_r_r36; -CPyL29: ; - cpy_r_r37 = NULL; - return cpy_r_r37; -CPyL30: ; - CPy_DecRef(cpy_r_non_prefixed_hex); - goto CPyL29; -CPyL31: ; - CPy_DECREF(cpy_r_padded_hex); - goto CPyL13; -CPyL32: ; - CPy_DecRef(cpy_r_padded_hex); - goto CPyL23; -CPyL33: ; - CPy_DecRef(cpy_r_padded_hex); - goto CPyL21; -CPyL34: ; - CPy_DecRef(cpy_r_r22); - goto CPyL23; -CPyL35: ; - CPy_DecRef(cpy_r_r15.f0); - CPy_DecRef(cpy_r_r15.f1); - CPy_DecRef(cpy_r_r15.f2); - goto CPyL20; -CPyL36: ; - CPy_DecRef(cpy_r_r15.f0); - CPy_DecRef(cpy_r_r15.f1); - CPy_DecRef(cpy_r_r15.f2); - goto CPyL22; -CPyL37: ; - CPy_DecRef(cpy_r_r14); - goto CPyL29; -} - -PyObject *CPyPy__utils___hexstr_to_bytes(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { - static const char * const kwlist[] = {"hexstr", 0}; - static CPyArg_Parser parser = {"O:hexstr_to_bytes", kwlist, 0}; - PyObject *obj_hexstr; - if (!CPyArg_ParseStackAndKeywordsOneArg(args, nargs, kwnames, &parser, &obj_hexstr)) { - return NULL; - } - PyObject *arg_hexstr; - if (likely(PyUnicode_Check(obj_hexstr))) - arg_hexstr = obj_hexstr; - else { - CPy_TypeError("str", obj_hexstr); - goto fail; - } - PyObject *retval = CPyDef__utils___hexstr_to_bytes(arg_hexstr); - return retval; -fail: ; - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 35, CPyStatic__utils___globals); - return NULL; -} - -char CPyDef__utils_____top_level__(void) { - PyObject *cpy_r_r0; - PyObject *cpy_r_r1; - char cpy_r_r2; - PyObject *cpy_r_r3; - PyObject *cpy_r_r4; - PyObject **cpy_r_r5; - void *cpy_r_r7; - void *cpy_r_r9; - PyObject *cpy_r_r10; - PyObject *cpy_r_r11; - PyObject *cpy_r_r12; - PyObject *cpy_r_r13; - char cpy_r_r14; - PyObject *cpy_r_r15; - PyObject *cpy_r_r16; - PyObject *cpy_r_r17; - PyObject *cpy_r_r18; - char cpy_r_r19; - cpy_r_r0 = CPyModule_builtins; - cpy_r_r1 = (PyObject *)&_Py_NoneStruct; - cpy_r_r2 = cpy_r_r0 != cpy_r_r1; - if (cpy_r_r2) goto CPyL3; - cpy_r_r3 = CPyStatics[3]; /* 'builtins' */ - cpy_r_r4 = PyImport_Import(cpy_r_r3); - if (unlikely(cpy_r_r4 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "", -1, CPyStatic__utils___globals); - goto CPyL6; - } - CPyModule_builtins = cpy_r_r4; - CPy_INCREF(CPyModule_builtins); - CPy_DECREF(cpy_r_r4); -CPyL3: ; - cpy_r_r5 = (PyObject **)&CPyModule_binascii; - PyObject **cpy_r_r6[1] = {cpy_r_r5}; - cpy_r_r7 = (void *)&cpy_r_r6; - int64_t cpy_r_r8[1] = {1}; - cpy_r_r9 = (void *)&cpy_r_r8; - cpy_r_r10 = CPyStatics[71]; /* (('binascii', 'binascii', 'binascii'),) */ - cpy_r_r11 = CPyStatic__utils___globals; - cpy_r_r12 = CPyStatics[32]; /* 'faster_hexbytes/_utils.py' */ - cpy_r_r13 = CPyStatics[33]; /* '' */ - cpy_r_r14 = CPyImport_ImportMany(cpy_r_r10, cpy_r_r7, cpy_r_r11, cpy_r_r12, cpy_r_r13, cpy_r_r9); - if (!cpy_r_r14) goto CPyL6; - cpy_r_r15 = CPyStatics[72]; /* ('Union',) */ - cpy_r_r16 = CPyStatics[35]; /* 'typing' */ - cpy_r_r17 = CPyStatic__utils___globals; - cpy_r_r18 = CPyImport_ImportFromMany(cpy_r_r16, cpy_r_r15, cpy_r_r15, cpy_r_r17); - if (unlikely(cpy_r_r18 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "", 2, CPyStatic__utils___globals); - goto CPyL6; - } - CPyModule_typing = cpy_r_r18; - CPy_INCREF(CPyModule_typing); - CPy_DECREF(cpy_r_r18); - return 1; -CPyL6: ; - cpy_r_r19 = 2; - return cpy_r_r19; -} - -static PyObject *CPyDunder___get__main_____new___3_HexBytes_obj(PyObject *self, PyObject *instance, PyObject *owner) { - instance = instance ? instance : Py_None; - return CPyDef_main_____new___3_HexBytes_obj_____get__(self, instance, owner); -} -PyObject *CPyDef_main_____mypyc___3__new___3_HexBytes_obj_setup(PyObject *cpy_r_type); -PyObject *CPyDef_main_____new___3_HexBytes_obj(void); - -static PyObject * -main_____new___3_HexBytes_obj_new(PyTypeObject *type, PyObject *args, PyObject *kwds) -{ - if (type != CPyType_main_____new___3_HexBytes_obj) { - PyErr_SetString(PyExc_TypeError, "interpreted classes cannot inherit from compiled"); - return NULL; - } - PyObject *self = CPyDef_main_____mypyc___3__new___3_HexBytes_obj_setup((PyObject*)type); - if (self == NULL) - return NULL; - return self; -} - -static int -main_____new___3_HexBytes_obj_traverse(faster_hexbytes___main_____new___3_HexBytes_objObject *self, visitproc visit, void *arg) -{ - return 0; -} - -static int -main_____new___3_HexBytes_obj_clear(faster_hexbytes___main_____new___3_HexBytes_objObject *self) -{ - return 0; -} - -static void -main_____new___3_HexBytes_obj_dealloc(faster_hexbytes___main_____new___3_HexBytes_objObject *self) -{ - PyObject_GC_UnTrack(self); - if (main_____new___3_HexBytes_obj_free_instance == NULL) { - main_____new___3_HexBytes_obj_free_instance = self; - return; - } - CPy_TRASHCAN_BEGIN(self, main_____new___3_HexBytes_obj_dealloc) - main_____new___3_HexBytes_obj_clear(self); - Py_TYPE(self)->tp_free((PyObject *)self); - CPy_TRASHCAN_END(self) -} - -static CPyVTableItem main_____new___3_HexBytes_obj_vtable[2]; -static bool -CPyDef_main_____new___3_HexBytes_obj_trait_vtable_setup(void) -{ - CPyVTableItem main_____new___3_HexBytes_obj_vtable_scratch[] = { - (CPyVTableItem)CPyDef_main_____new___3_HexBytes_obj_____call__, - (CPyVTableItem)CPyDef_main_____new___3_HexBytes_obj_____get__, - }; - memcpy(main_____new___3_HexBytes_obj_vtable, main_____new___3_HexBytes_obj_vtable_scratch, sizeof(main_____new___3_HexBytes_obj_vtable)); - return 1; -} - -static PyMethodDef main_____new___3_HexBytes_obj_methods[] = { - {"__call__", - (PyCFunction)CPyPy_main_____new___3_HexBytes_obj_____call__, - METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__call__($cls, val)\n--\n\n")}, - {"__get__", - (PyCFunction)CPyPy_main_____new___3_HexBytes_obj_____get__, - METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__get__($instance, owner)\n--\n\n")}, - {"__setstate__", (PyCFunction)CPyPickle_SetState, METH_O, NULL}, - {"__getstate__", (PyCFunction)CPyPickle_GetState, METH_NOARGS, NULL}, - {NULL} /* Sentinel */ -}; - -static PyTypeObject CPyType_main_____new___3_HexBytes_obj_template_ = { - PyVarObject_HEAD_INIT(NULL, 0) - .tp_name = "__new___HexBytes_obj", - .tp_new = main_____new___3_HexBytes_obj_new, - .tp_dealloc = (destructor)main_____new___3_HexBytes_obj_dealloc, - .tp_traverse = (traverseproc)main_____new___3_HexBytes_obj_traverse, - .tp_clear = (inquiry)main_____new___3_HexBytes_obj_clear, - .tp_methods = main_____new___3_HexBytes_obj_methods, - .tp_call = PyVectorcall_Call, - .tp_descr_get = CPyDunder___get__main_____new___3_HexBytes_obj, - .tp_basicsize = sizeof(faster_hexbytes___main_____new___3_HexBytes_objObject), - .tp_vectorcall_offset = offsetof(faster_hexbytes___main_____new___3_HexBytes_objObject, vectorcall), - .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | _Py_TPFLAGS_HAVE_VECTORCALL, - .tp_doc = PyDoc_STR("__new___HexBytes_obj()\n--\n\n"), -}; -static PyTypeObject *CPyType_main_____new___3_HexBytes_obj_template = &CPyType_main_____new___3_HexBytes_obj_template_; - -PyObject *CPyDef_main_____mypyc___3__new___3_HexBytes_obj_setup(PyObject *cpy_r_type) -{ - PyTypeObject *type = (PyTypeObject*)cpy_r_type; - faster_hexbytes___main_____new___3_HexBytes_objObject *self; - if (main_____new___3_HexBytes_obj_free_instance != NULL) { - self = main_____new___3_HexBytes_obj_free_instance; - main_____new___3_HexBytes_obj_free_instance = NULL; - Py_SET_REFCNT(self, 1); - PyObject_GC_Track(self); - return (PyObject *)self; - } - self = (faster_hexbytes___main_____new___3_HexBytes_objObject *)type->tp_alloc(type, 0); - if (self == NULL) - return NULL; - self->vtable = main_____new___3_HexBytes_obj_vtable; - self->vectorcall = CPyPy_main_____new___3_HexBytes_obj_____call__; - return (PyObject *)self; -} - -PyObject *CPyDef_main_____new___3_HexBytes_obj(void) -{ - PyObject *self = CPyDef_main_____mypyc___3__new___3_HexBytes_obj_setup((PyObject *)CPyType_main_____new___3_HexBytes_obj); - if (self == NULL) - return NULL; - return self; -} - - -static PyObject *CPyDunder___get__main_____getitem___3_HexBytes_obj(PyObject *self, PyObject *instance, PyObject *owner) { - instance = instance ? instance : Py_None; - return CPyDef_main_____getitem___3_HexBytes_obj_____get__(self, instance, owner); -} -PyObject *CPyDef_main_____mypyc___3__getitem___3_HexBytes_obj_setup(PyObject *cpy_r_type); -PyObject *CPyDef_main_____getitem___3_HexBytes_obj(void); - -static PyObject * -main_____getitem___3_HexBytes_obj_new(PyTypeObject *type, PyObject *args, PyObject *kwds) -{ - if (type != CPyType_main_____getitem___3_HexBytes_obj) { - PyErr_SetString(PyExc_TypeError, "interpreted classes cannot inherit from compiled"); - return NULL; - } - PyObject *self = CPyDef_main_____mypyc___3__getitem___3_HexBytes_obj_setup((PyObject*)type); - if (self == NULL) - return NULL; - return self; -} - -static int -main_____getitem___3_HexBytes_obj_traverse(faster_hexbytes___main_____getitem___3_HexBytes_objObject *self, visitproc visit, void *arg) -{ - return 0; -} - -static int -main_____getitem___3_HexBytes_obj_clear(faster_hexbytes___main_____getitem___3_HexBytes_objObject *self) -{ - return 0; -} - -static void -main_____getitem___3_HexBytes_obj_dealloc(faster_hexbytes___main_____getitem___3_HexBytes_objObject *self) -{ - PyObject_GC_UnTrack(self); - if (main_____getitem___3_HexBytes_obj_free_instance == NULL) { - main_____getitem___3_HexBytes_obj_free_instance = self; - return; - } - CPy_TRASHCAN_BEGIN(self, main_____getitem___3_HexBytes_obj_dealloc) - main_____getitem___3_HexBytes_obj_clear(self); - Py_TYPE(self)->tp_free((PyObject *)self); - CPy_TRASHCAN_END(self) -} - -static CPyVTableItem main_____getitem___3_HexBytes_obj_vtable[2]; -static bool -CPyDef_main_____getitem___3_HexBytes_obj_trait_vtable_setup(void) -{ - CPyVTableItem main_____getitem___3_HexBytes_obj_vtable_scratch[] = { - (CPyVTableItem)CPyDef_main_____getitem___3_HexBytes_obj_____call__, - (CPyVTableItem)CPyDef_main_____getitem___3_HexBytes_obj_____get__, - }; - memcpy(main_____getitem___3_HexBytes_obj_vtable, main_____getitem___3_HexBytes_obj_vtable_scratch, sizeof(main_____getitem___3_HexBytes_obj_vtable)); - return 1; -} - -static PyMethodDef main_____getitem___3_HexBytes_obj_methods[] = { - {"__call__", - (PyCFunction)CPyPy_main_____getitem___3_HexBytes_obj_____call__, - METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__call__($self, key, /)\n--\n\n")}, - {"__get__", - (PyCFunction)CPyPy_main_____getitem___3_HexBytes_obj_____get__, - METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__get__($instance, owner)\n--\n\n")}, - {"__setstate__", (PyCFunction)CPyPickle_SetState, METH_O, NULL}, - {"__getstate__", (PyCFunction)CPyPickle_GetState, METH_NOARGS, NULL}, - {NULL} /* Sentinel */ -}; - -static PyTypeObject CPyType_main_____getitem___3_HexBytes_obj_template_ = { - PyVarObject_HEAD_INIT(NULL, 0) - .tp_name = "__getitem___HexBytes_obj", - .tp_new = main_____getitem___3_HexBytes_obj_new, - .tp_dealloc = (destructor)main_____getitem___3_HexBytes_obj_dealloc, - .tp_traverse = (traverseproc)main_____getitem___3_HexBytes_obj_traverse, - .tp_clear = (inquiry)main_____getitem___3_HexBytes_obj_clear, - .tp_methods = main_____getitem___3_HexBytes_obj_methods, - .tp_call = PyVectorcall_Call, - .tp_descr_get = CPyDunder___get__main_____getitem___3_HexBytes_obj, - .tp_basicsize = sizeof(faster_hexbytes___main_____getitem___3_HexBytes_objObject), - .tp_vectorcall_offset = offsetof(faster_hexbytes___main_____getitem___3_HexBytes_objObject, vectorcall), - .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | _Py_TPFLAGS_HAVE_VECTORCALL, - .tp_doc = PyDoc_STR("__getitem___HexBytes_obj()\n--\n\n"), -}; -static PyTypeObject *CPyType_main_____getitem___3_HexBytes_obj_template = &CPyType_main_____getitem___3_HexBytes_obj_template_; - -PyObject *CPyDef_main_____mypyc___3__getitem___3_HexBytes_obj_setup(PyObject *cpy_r_type) -{ - PyTypeObject *type = (PyTypeObject*)cpy_r_type; - faster_hexbytes___main_____getitem___3_HexBytes_objObject *self; - if (main_____getitem___3_HexBytes_obj_free_instance != NULL) { - self = main_____getitem___3_HexBytes_obj_free_instance; - main_____getitem___3_HexBytes_obj_free_instance = NULL; - Py_SET_REFCNT(self, 1); - PyObject_GC_Track(self); - return (PyObject *)self; - } - self = (faster_hexbytes___main_____getitem___3_HexBytes_objObject *)type->tp_alloc(type, 0); - if (self == NULL) - return NULL; - self->vtable = main_____getitem___3_HexBytes_obj_vtable; - self->vectorcall = CPyPy_main_____getitem___3_HexBytes_obj_____call__; - return (PyObject *)self; -} - -PyObject *CPyDef_main_____getitem___3_HexBytes_obj(void) -{ - PyObject *self = CPyDef_main_____mypyc___3__getitem___3_HexBytes_obj_setup((PyObject *)CPyType_main_____getitem___3_HexBytes_obj); - if (self == NULL) - return NULL; - return self; -} - - -static PyObject *CPyDunder___get__main_____repr___3_HexBytes_obj(PyObject *self, PyObject *instance, PyObject *owner) { - instance = instance ? instance : Py_None; - return CPyDef_main_____repr___3_HexBytes_obj_____get__(self, instance, owner); -} -PyObject *CPyDef_main_____mypyc___3__repr___3_HexBytes_obj_setup(PyObject *cpy_r_type); -PyObject *CPyDef_main_____repr___3_HexBytes_obj(void); - -static PyObject * -main_____repr___3_HexBytes_obj_new(PyTypeObject *type, PyObject *args, PyObject *kwds) -{ - if (type != CPyType_main_____repr___3_HexBytes_obj) { - PyErr_SetString(PyExc_TypeError, "interpreted classes cannot inherit from compiled"); - return NULL; - } - PyObject *self = CPyDef_main_____mypyc___3__repr___3_HexBytes_obj_setup((PyObject*)type); - if (self == NULL) - return NULL; - return self; -} - -static int -main_____repr___3_HexBytes_obj_traverse(faster_hexbytes___main_____repr___3_HexBytes_objObject *self, visitproc visit, void *arg) -{ - return 0; -} - -static int -main_____repr___3_HexBytes_obj_clear(faster_hexbytes___main_____repr___3_HexBytes_objObject *self) -{ - return 0; -} - -static void -main_____repr___3_HexBytes_obj_dealloc(faster_hexbytes___main_____repr___3_HexBytes_objObject *self) -{ - PyObject_GC_UnTrack(self); - if (main_____repr___3_HexBytes_obj_free_instance == NULL) { - main_____repr___3_HexBytes_obj_free_instance = self; - return; - } - CPy_TRASHCAN_BEGIN(self, main_____repr___3_HexBytes_obj_dealloc) - main_____repr___3_HexBytes_obj_clear(self); - Py_TYPE(self)->tp_free((PyObject *)self); - CPy_TRASHCAN_END(self) -} - -static CPyVTableItem main_____repr___3_HexBytes_obj_vtable[2]; -static bool -CPyDef_main_____repr___3_HexBytes_obj_trait_vtable_setup(void) -{ - CPyVTableItem main_____repr___3_HexBytes_obj_vtable_scratch[] = { - (CPyVTableItem)CPyDef_main_____repr___3_HexBytes_obj_____call__, - (CPyVTableItem)CPyDef_main_____repr___3_HexBytes_obj_____get__, - }; - memcpy(main_____repr___3_HexBytes_obj_vtable, main_____repr___3_HexBytes_obj_vtable_scratch, sizeof(main_____repr___3_HexBytes_obj_vtable)); - return 1; -} - -static PyMethodDef main_____repr___3_HexBytes_obj_methods[] = { - {"__call__", - (PyCFunction)CPyPy_main_____repr___3_HexBytes_obj_____call__, - METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__call__($self, /)\n--\n\n")}, - {"__get__", - (PyCFunction)CPyPy_main_____repr___3_HexBytes_obj_____get__, - METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__get__($instance, owner)\n--\n\n")}, - {"__setstate__", (PyCFunction)CPyPickle_SetState, METH_O, NULL}, - {"__getstate__", (PyCFunction)CPyPickle_GetState, METH_NOARGS, NULL}, - {NULL} /* Sentinel */ -}; - -static PyTypeObject CPyType_main_____repr___3_HexBytes_obj_template_ = { - PyVarObject_HEAD_INIT(NULL, 0) - .tp_name = "__repr___HexBytes_obj", - .tp_new = main_____repr___3_HexBytes_obj_new, - .tp_dealloc = (destructor)main_____repr___3_HexBytes_obj_dealloc, - .tp_traverse = (traverseproc)main_____repr___3_HexBytes_obj_traverse, - .tp_clear = (inquiry)main_____repr___3_HexBytes_obj_clear, - .tp_methods = main_____repr___3_HexBytes_obj_methods, - .tp_call = PyVectorcall_Call, - .tp_descr_get = CPyDunder___get__main_____repr___3_HexBytes_obj, - .tp_basicsize = sizeof(faster_hexbytes___main_____repr___3_HexBytes_objObject), - .tp_vectorcall_offset = offsetof(faster_hexbytes___main_____repr___3_HexBytes_objObject, vectorcall), - .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | _Py_TPFLAGS_HAVE_VECTORCALL, - .tp_doc = PyDoc_STR("__repr___HexBytes_obj()\n--\n\n"), -}; -static PyTypeObject *CPyType_main_____repr___3_HexBytes_obj_template = &CPyType_main_____repr___3_HexBytes_obj_template_; - -PyObject *CPyDef_main_____mypyc___3__repr___3_HexBytes_obj_setup(PyObject *cpy_r_type) -{ - PyTypeObject *type = (PyTypeObject*)cpy_r_type; - faster_hexbytes___main_____repr___3_HexBytes_objObject *self; - if (main_____repr___3_HexBytes_obj_free_instance != NULL) { - self = main_____repr___3_HexBytes_obj_free_instance; - main_____repr___3_HexBytes_obj_free_instance = NULL; - Py_SET_REFCNT(self, 1); - PyObject_GC_Track(self); - return (PyObject *)self; - } - self = (faster_hexbytes___main_____repr___3_HexBytes_objObject *)type->tp_alloc(type, 0); - if (self == NULL) - return NULL; - self->vtable = main_____repr___3_HexBytes_obj_vtable; - self->vectorcall = CPyPy_main_____repr___3_HexBytes_obj_____call__; - return (PyObject *)self; -} - -PyObject *CPyDef_main_____repr___3_HexBytes_obj(void) -{ - PyObject *self = CPyDef_main_____mypyc___3__repr___3_HexBytes_obj_setup((PyObject *)CPyType_main_____repr___3_HexBytes_obj); - if (self == NULL) - return NULL; - return self; -} - - -static PyObject *CPyDunder___get__main___to_0x_hex_HexBytes_obj(PyObject *self, PyObject *instance, PyObject *owner) { - instance = instance ? instance : Py_None; - return CPyDef_main___to_0x_hex_HexBytes_obj_____get__(self, instance, owner); -} -PyObject *CPyDef_main_____mypyc__to_0x_hex_HexBytes_obj_setup(PyObject *cpy_r_type); -PyObject *CPyDef_main___to_0x_hex_HexBytes_obj(void); - -static PyObject * -main___to_0x_hex_HexBytes_obj_new(PyTypeObject *type, PyObject *args, PyObject *kwds) -{ - if (type != CPyType_main___to_0x_hex_HexBytes_obj) { - PyErr_SetString(PyExc_TypeError, "interpreted classes cannot inherit from compiled"); - return NULL; - } - PyObject *self = CPyDef_main_____mypyc__to_0x_hex_HexBytes_obj_setup((PyObject*)type); - if (self == NULL) - return NULL; - return self; -} - -static int -main___to_0x_hex_HexBytes_obj_traverse(faster_hexbytes___main___to_0x_hex_HexBytes_objObject *self, visitproc visit, void *arg) -{ - return 0; -} - -static int -main___to_0x_hex_HexBytes_obj_clear(faster_hexbytes___main___to_0x_hex_HexBytes_objObject *self) -{ - return 0; -} - -static void -main___to_0x_hex_HexBytes_obj_dealloc(faster_hexbytes___main___to_0x_hex_HexBytes_objObject *self) -{ - PyObject_GC_UnTrack(self); - if (main___to_0x_hex_HexBytes_obj_free_instance == NULL) { - main___to_0x_hex_HexBytes_obj_free_instance = self; - return; - } - CPy_TRASHCAN_BEGIN(self, main___to_0x_hex_HexBytes_obj_dealloc) - main___to_0x_hex_HexBytes_obj_clear(self); - Py_TYPE(self)->tp_free((PyObject *)self); - CPy_TRASHCAN_END(self) -} - -static CPyVTableItem main___to_0x_hex_HexBytes_obj_vtable[2]; -static bool -CPyDef_main___to_0x_hex_HexBytes_obj_trait_vtable_setup(void) -{ - CPyVTableItem main___to_0x_hex_HexBytes_obj_vtable_scratch[] = { - (CPyVTableItem)CPyDef_main___to_0x_hex_HexBytes_obj_____call__, - (CPyVTableItem)CPyDef_main___to_0x_hex_HexBytes_obj_____get__, - }; - memcpy(main___to_0x_hex_HexBytes_obj_vtable, main___to_0x_hex_HexBytes_obj_vtable_scratch, sizeof(main___to_0x_hex_HexBytes_obj_vtable)); - return 1; -} - -static PyMethodDef main___to_0x_hex_HexBytes_obj_methods[] = { - {"__call__", - (PyCFunction)CPyPy_main___to_0x_hex_HexBytes_obj_____call__, - METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__call__($self)\n--\n\n")}, - {"__get__", - (PyCFunction)CPyPy_main___to_0x_hex_HexBytes_obj_____get__, - METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__get__($instance, owner)\n--\n\n")}, - {"__setstate__", (PyCFunction)CPyPickle_SetState, METH_O, NULL}, - {"__getstate__", (PyCFunction)CPyPickle_GetState, METH_NOARGS, NULL}, - {NULL} /* Sentinel */ -}; - -static PyTypeObject CPyType_main___to_0x_hex_HexBytes_obj_template_ = { - PyVarObject_HEAD_INIT(NULL, 0) - .tp_name = "to_0x_hex_HexBytes_obj", - .tp_new = main___to_0x_hex_HexBytes_obj_new, - .tp_dealloc = (destructor)main___to_0x_hex_HexBytes_obj_dealloc, - .tp_traverse = (traverseproc)main___to_0x_hex_HexBytes_obj_traverse, - .tp_clear = (inquiry)main___to_0x_hex_HexBytes_obj_clear, - .tp_methods = main___to_0x_hex_HexBytes_obj_methods, - .tp_call = PyVectorcall_Call, - .tp_descr_get = CPyDunder___get__main___to_0x_hex_HexBytes_obj, - .tp_basicsize = sizeof(faster_hexbytes___main___to_0x_hex_HexBytes_objObject), - .tp_vectorcall_offset = offsetof(faster_hexbytes___main___to_0x_hex_HexBytes_objObject, vectorcall), - .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | _Py_TPFLAGS_HAVE_VECTORCALL, - .tp_doc = PyDoc_STR("to_0x_hex_HexBytes_obj()\n--\n\n"), -}; -static PyTypeObject *CPyType_main___to_0x_hex_HexBytes_obj_template = &CPyType_main___to_0x_hex_HexBytes_obj_template_; - -PyObject *CPyDef_main_____mypyc__to_0x_hex_HexBytes_obj_setup(PyObject *cpy_r_type) -{ - PyTypeObject *type = (PyTypeObject*)cpy_r_type; - faster_hexbytes___main___to_0x_hex_HexBytes_objObject *self; - if (main___to_0x_hex_HexBytes_obj_free_instance != NULL) { - self = main___to_0x_hex_HexBytes_obj_free_instance; - main___to_0x_hex_HexBytes_obj_free_instance = NULL; - Py_SET_REFCNT(self, 1); - PyObject_GC_Track(self); - return (PyObject *)self; - } - self = (faster_hexbytes___main___to_0x_hex_HexBytes_objObject *)type->tp_alloc(type, 0); - if (self == NULL) - return NULL; - self->vtable = main___to_0x_hex_HexBytes_obj_vtable; - self->vectorcall = CPyPy_main___to_0x_hex_HexBytes_obj_____call__; - return (PyObject *)self; -} - -PyObject *CPyDef_main___to_0x_hex_HexBytes_obj(void) -{ - PyObject *self = CPyDef_main_____mypyc__to_0x_hex_HexBytes_obj_setup((PyObject *)CPyType_main___to_0x_hex_HexBytes_obj); - if (self == NULL) - return NULL; - return self; -} - - -static PyObject *CPyDunder___get__main_____reduce___3_HexBytes_obj(PyObject *self, PyObject *instance, PyObject *owner) { - instance = instance ? instance : Py_None; - return CPyDef_main_____reduce___3_HexBytes_obj_____get__(self, instance, owner); -} -PyObject *CPyDef_main_____mypyc___3__reduce___3_HexBytes_obj_setup(PyObject *cpy_r_type); -PyObject *CPyDef_main_____reduce___3_HexBytes_obj(void); - -static PyObject * -main_____reduce___3_HexBytes_obj_new(PyTypeObject *type, PyObject *args, PyObject *kwds) -{ - if (type != CPyType_main_____reduce___3_HexBytes_obj) { - PyErr_SetString(PyExc_TypeError, "interpreted classes cannot inherit from compiled"); - return NULL; - } - PyObject *self = CPyDef_main_____mypyc___3__reduce___3_HexBytes_obj_setup((PyObject*)type); - if (self == NULL) - return NULL; - return self; -} - -static int -main_____reduce___3_HexBytes_obj_traverse(faster_hexbytes___main_____reduce___3_HexBytes_objObject *self, visitproc visit, void *arg) -{ - return 0; -} - -static int -main_____reduce___3_HexBytes_obj_clear(faster_hexbytes___main_____reduce___3_HexBytes_objObject *self) -{ - return 0; -} - -static void -main_____reduce___3_HexBytes_obj_dealloc(faster_hexbytes___main_____reduce___3_HexBytes_objObject *self) -{ - PyObject_GC_UnTrack(self); - if (main_____reduce___3_HexBytes_obj_free_instance == NULL) { - main_____reduce___3_HexBytes_obj_free_instance = self; - return; - } - CPy_TRASHCAN_BEGIN(self, main_____reduce___3_HexBytes_obj_dealloc) - main_____reduce___3_HexBytes_obj_clear(self); - Py_TYPE(self)->tp_free((PyObject *)self); - CPy_TRASHCAN_END(self) -} - -static CPyVTableItem main_____reduce___3_HexBytes_obj_vtable[2]; -static bool -CPyDef_main_____reduce___3_HexBytes_obj_trait_vtable_setup(void) -{ - CPyVTableItem main_____reduce___3_HexBytes_obj_vtable_scratch[] = { - (CPyVTableItem)CPyDef_main_____reduce___3_HexBytes_obj_____call__, - (CPyVTableItem)CPyDef_main_____reduce___3_HexBytes_obj_____get__, - }; - memcpy(main_____reduce___3_HexBytes_obj_vtable, main_____reduce___3_HexBytes_obj_vtable_scratch, sizeof(main_____reduce___3_HexBytes_obj_vtable)); - return 1; -} - -static PyMethodDef main_____reduce___3_HexBytes_obj_methods[] = { - {"__call__", - (PyCFunction)CPyPy_main_____reduce___3_HexBytes_obj_____call__, - METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__call__($self)\n--\n\n")}, - {"__get__", - (PyCFunction)CPyPy_main_____reduce___3_HexBytes_obj_____get__, - METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__get__($instance, owner)\n--\n\n")}, - {"__setstate__", (PyCFunction)CPyPickle_SetState, METH_O, NULL}, - {"__getstate__", (PyCFunction)CPyPickle_GetState, METH_NOARGS, NULL}, - {NULL} /* Sentinel */ -}; - -static PyTypeObject CPyType_main_____reduce___3_HexBytes_obj_template_ = { - PyVarObject_HEAD_INIT(NULL, 0) - .tp_name = "__reduce___HexBytes_obj", - .tp_new = main_____reduce___3_HexBytes_obj_new, - .tp_dealloc = (destructor)main_____reduce___3_HexBytes_obj_dealloc, - .tp_traverse = (traverseproc)main_____reduce___3_HexBytes_obj_traverse, - .tp_clear = (inquiry)main_____reduce___3_HexBytes_obj_clear, - .tp_methods = main_____reduce___3_HexBytes_obj_methods, - .tp_call = PyVectorcall_Call, - .tp_descr_get = CPyDunder___get__main_____reduce___3_HexBytes_obj, - .tp_basicsize = sizeof(faster_hexbytes___main_____reduce___3_HexBytes_objObject), - .tp_vectorcall_offset = offsetof(faster_hexbytes___main_____reduce___3_HexBytes_objObject, vectorcall), - .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | _Py_TPFLAGS_HAVE_VECTORCALL, - .tp_doc = PyDoc_STR("__reduce___HexBytes_obj()\n--\n\n"), -}; -static PyTypeObject *CPyType_main_____reduce___3_HexBytes_obj_template = &CPyType_main_____reduce___3_HexBytes_obj_template_; - -PyObject *CPyDef_main_____mypyc___3__reduce___3_HexBytes_obj_setup(PyObject *cpy_r_type) -{ - PyTypeObject *type = (PyTypeObject*)cpy_r_type; - faster_hexbytes___main_____reduce___3_HexBytes_objObject *self; - if (main_____reduce___3_HexBytes_obj_free_instance != NULL) { - self = main_____reduce___3_HexBytes_obj_free_instance; - main_____reduce___3_HexBytes_obj_free_instance = NULL; - Py_SET_REFCNT(self, 1); - PyObject_GC_Track(self); - return (PyObject *)self; - } - self = (faster_hexbytes___main_____reduce___3_HexBytes_objObject *)type->tp_alloc(type, 0); - if (self == NULL) - return NULL; - self->vtable = main_____reduce___3_HexBytes_obj_vtable; - self->vectorcall = CPyPy_main_____reduce___3_HexBytes_obj_____call__; - return (PyObject *)self; -} - -PyObject *CPyDef_main_____reduce___3_HexBytes_obj(void) -{ - PyObject *self = CPyDef_main_____mypyc___3__reduce___3_HexBytes_obj_setup((PyObject *)CPyType_main_____reduce___3_HexBytes_obj); - if (self == NULL) - return NULL; - return self; -} - -static PyMethodDef mainmodule_methods[] = { - {NULL, NULL, 0, NULL} -}; - -int CPyExec_faster_hexbytes___main(PyObject *module) -{ - PyObject* modname = NULL; - modname = PyObject_GetAttrString((PyObject *)CPyModule_faster_hexbytes___main__internal, "__name__"); - CPyStatic_main___globals = PyModule_GetDict(CPyModule_faster_hexbytes___main__internal); - if (unlikely(CPyStatic_main___globals == NULL)) - goto fail; - CPyType_main_____new___3_HexBytes_obj = (PyTypeObject *)CPyType_FromTemplate((PyObject *)CPyType_main_____new___3_HexBytes_obj_template, NULL, modname); - if (unlikely(!CPyType_main_____new___3_HexBytes_obj)) - goto fail; - CPyType_main_____getitem___3_HexBytes_obj = (PyTypeObject *)CPyType_FromTemplate((PyObject *)CPyType_main_____getitem___3_HexBytes_obj_template, NULL, modname); - if (unlikely(!CPyType_main_____getitem___3_HexBytes_obj)) - goto fail; - CPyType_main_____repr___3_HexBytes_obj = (PyTypeObject *)CPyType_FromTemplate((PyObject *)CPyType_main_____repr___3_HexBytes_obj_template, NULL, modname); - if (unlikely(!CPyType_main_____repr___3_HexBytes_obj)) - goto fail; - CPyType_main___to_0x_hex_HexBytes_obj = (PyTypeObject *)CPyType_FromTemplate((PyObject *)CPyType_main___to_0x_hex_HexBytes_obj_template, NULL, modname); - if (unlikely(!CPyType_main___to_0x_hex_HexBytes_obj)) - goto fail; - CPyType_main_____reduce___3_HexBytes_obj = (PyTypeObject *)CPyType_FromTemplate((PyObject *)CPyType_main_____reduce___3_HexBytes_obj_template, NULL, modname); - if (unlikely(!CPyType_main_____reduce___3_HexBytes_obj)) - goto fail; - if (CPyGlobalsInit() < 0) - goto fail; - char result = CPyDef_main_____top_level__(); - if (result == 2) - goto fail; - Py_DECREF(modname); - return 0; - fail: - Py_CLEAR(CPyModule_faster_hexbytes___main__internal); - Py_CLEAR(modname); - Py_CLEAR(CPyType_main___HexBytes); - Py_CLEAR(CPyType_main_____new___3_HexBytes_obj); - Py_CLEAR(CPyType_main_____getitem___3_HexBytes_obj); - Py_CLEAR(CPyType_main_____repr___3_HexBytes_obj); - Py_CLEAR(CPyType_main___to_0x_hex_HexBytes_obj); - Py_CLEAR(CPyType_main_____reduce___3_HexBytes_obj); - return -1; -} -static struct PyModuleDef mainmodule = { - PyModuleDef_HEAD_INIT, - "faster_hexbytes.main", - NULL, /* docstring */ - 0, /* size of per-interpreter state of the module */ - mainmodule_methods, - NULL, -}; - -PyObject *CPyInit_faster_hexbytes___main(void) -{ - if (CPyModule_faster_hexbytes___main__internal) { - Py_INCREF(CPyModule_faster_hexbytes___main__internal); - return CPyModule_faster_hexbytes___main__internal; - } - CPyModule_faster_hexbytes___main__internal = PyModule_Create(&mainmodule); - if (unlikely(CPyModule_faster_hexbytes___main__internal == NULL)) - goto fail; - if (CPyExec_faster_hexbytes___main(CPyModule_faster_hexbytes___main__internal) != 0) - goto fail; - return CPyModule_faster_hexbytes___main__internal; - fail: - return NULL; -} - -PyObject *CPyDef_main_____new___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner) { - PyObject *cpy_r_r0; - char cpy_r_r1; - PyObject *cpy_r_r2; - PyObject *cpy_r_r3; - cpy_r_r0 = (PyObject *)&_Py_NoneStruct; - cpy_r_r1 = cpy_r_instance == cpy_r_r0; - if (!cpy_r_r1) goto CPyL2; - CPy_INCREF(cpy_r___mypyc_self__); - return cpy_r___mypyc_self__; -CPyL2: ; - cpy_r_r2 = PyMethod_New(cpy_r___mypyc_self__, cpy_r_instance); - if (cpy_r_r2 == NULL) goto CPyL4; - return cpy_r_r2; -CPyL4: ; - cpy_r_r3 = NULL; - return cpy_r_r3; -} - -PyObject *CPyPy_main_____new___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { - PyObject *obj___mypyc_self__ = self; - static const char * const kwlist[] = {"instance", "owner", 0}; - static CPyArg_Parser parser = {"OO:__get__", kwlist, 0}; - PyObject *obj_instance; - PyObject *obj_owner; - if (!CPyArg_ParseStackAndKeywordsSimple(args, nargs, kwnames, &parser, &obj_instance, &obj_owner)) { - return NULL; - } - PyObject *arg___mypyc_self__ = obj___mypyc_self__; - PyObject *arg_instance = obj_instance; - PyObject *arg_owner = obj_owner; - PyObject *retval = CPyDef_main_____new___3_HexBytes_obj_____get__(arg___mypyc_self__, arg_instance, arg_owner); - return retval; -fail: ; - CPy_AddTraceback("faster_hexbytes/main.py", "__get__", -1, CPyStatic_main___globals); - return NULL; -} - -PyObject *CPyDef_main_____new___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_cls, PyObject *cpy_r_val) { - PyObject *cpy_r_r0; - PyObject *cpy_r_r1; - PyObject *cpy_r_r2; - PyObject **cpy_r_r4; - PyObject *cpy_r_r5; - PyObject *cpy_r_r6; - PyObject *cpy_r_r7; - cpy_r_r0 = CPyDef__utils___to_bytes(cpy_r_val); - if (unlikely(cpy_r_r0 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__new__", 42, CPyStatic_main___globals); - goto CPyL4; - } - cpy_r_r1 = (PyObject *)&PyBytes_Type; - cpy_r_r2 = CPyStatics[36]; /* '__new__' */ - PyObject *cpy_r_r3[3] = {cpy_r_r1, cpy_r_cls, cpy_r_r0}; - cpy_r_r4 = (PyObject **)&cpy_r_r3; - cpy_r_r5 = PyObject_VectorcallMethod(cpy_r_r2, cpy_r_r4, 9223372036854775811ULL, 0); - if (unlikely(cpy_r_r5 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__new__", 43, CPyStatic_main___globals); - goto CPyL5; - } - CPy_DECREF(cpy_r_r0); - if (likely(Py_TYPE(cpy_r_r5) == CPyType_main___HexBytes)) - cpy_r_r6 = cpy_r_r5; - else { - CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__new__", 43, CPyStatic_main___globals, "faster_hexbytes.main.HexBytes", cpy_r_r5); - goto CPyL4; - } - return cpy_r_r6; -CPyL4: ; - cpy_r_r7 = NULL; - return cpy_r_r7; -CPyL5: ; - CPy_DecRef(cpy_r_r0); - goto CPyL4; -} - -PyObject *CPyPy_main_____new___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { - PyObject *obj___mypyc_self__ = self; - static const char * const kwlist[] = {"cls", "val", 0}; - static CPyArg_Parser parser = {"OO:__call__", kwlist, 0}; - PyObject *obj_cls; - PyObject *obj_val; - if (!CPyArg_ParseStackAndKeywordsSimple(args, PyVectorcall_NARGS(nargs), kwnames, &parser, &obj_cls, &obj_val)) { - return NULL; - } - PyObject *arg___mypyc_self__ = obj___mypyc_self__; - PyObject *arg_cls = obj_cls; - PyObject *arg_val; - if (PyBool_Check(obj_val)) - arg_val = obj_val; - else { - arg_val = NULL; - } - if (arg_val != NULL) goto __LL4; - arg_val = obj_val; - if (arg_val != NULL) goto __LL4; - if (PyBytes_Check(obj_val) || PyByteArray_Check(obj_val)) - arg_val = obj_val; - else { - arg_val = NULL; - } - if (arg_val != NULL) goto __LL4; - if (PyLong_Check(obj_val)) - arg_val = obj_val; - else { - arg_val = NULL; - } - if (arg_val != NULL) goto __LL4; - if (PyUnicode_Check(obj_val)) - arg_val = obj_val; - else { - arg_val = NULL; - } - if (arg_val != NULL) goto __LL4; - CPy_TypeError("union[bool, object, bytes, int, str]", obj_val); - goto fail; -__LL4: ; - PyObject *retval = CPyDef_main_____new___3_HexBytes_obj_____call__(arg___mypyc_self__, arg_cls, arg_val); - return retval; -fail: ; - CPy_AddTraceback("faster_hexbytes/main.py", "__new__", 41, CPyStatic_main___globals); - return NULL; -} - -PyObject *CPyDef_main_____getitem___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner) { - PyObject *cpy_r_r0; - char cpy_r_r1; - PyObject *cpy_r_r2; - PyObject *cpy_r_r3; - cpy_r_r0 = (PyObject *)&_Py_NoneStruct; - cpy_r_r1 = cpy_r_instance == cpy_r_r0; - if (!cpy_r_r1) goto CPyL2; - CPy_INCREF(cpy_r___mypyc_self__); - return cpy_r___mypyc_self__; -CPyL2: ; - cpy_r_r2 = PyMethod_New(cpy_r___mypyc_self__, cpy_r_instance); - if (cpy_r_r2 == NULL) goto CPyL4; - return cpy_r_r2; -CPyL4: ; - cpy_r_r3 = NULL; - return cpy_r_r3; -} - -PyObject *CPyPy_main_____getitem___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { - PyObject *obj___mypyc_self__ = self; - static const char * const kwlist[] = {"instance", "owner", 0}; - static CPyArg_Parser parser = {"OO:__get__", kwlist, 0}; - PyObject *obj_instance; - PyObject *obj_owner; - if (!CPyArg_ParseStackAndKeywordsSimple(args, nargs, kwnames, &parser, &obj_instance, &obj_owner)) { - return NULL; - } - PyObject *arg___mypyc_self__ = obj___mypyc_self__; - PyObject *arg_instance = obj_instance; - PyObject *arg_owner = obj_owner; - PyObject *retval = CPyDef_main_____getitem___3_HexBytes_obj_____get__(arg___mypyc_self__, arg_instance, arg_owner); - return retval; -fail: ; - CPy_AddTraceback("faster_hexbytes/main.py", "__get__", -1, CPyStatic_main___globals); - return NULL; -} - -PyObject *CPyDef_main_____getitem___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self, PyObject *cpy_r_key) { - PyObject *cpy_r_r0; - PyObject *cpy_r_r1; - PyObject *cpy_r_r2; - PyObject *cpy_r_r3; - PyObject **cpy_r_r5; - PyObject *cpy_r_r6; - PyObject *cpy_r_r7; - PyObject *cpy_r_r8; - PyObject **cpy_r_r10; - PyObject *cpy_r_r11; - PyObject *cpy_r_r12; - PyObject *cpy_r_r13; - char cpy_r_r14; - PyObject *cpy_r_r15; - PyObject **cpy_r_r17; - PyObject *cpy_r_r18; - PyObject *cpy_r_r19; - CPyTagged cpy_r_r20; - PyObject *cpy_r_r21; - PyObject *cpy_r_r22; - cpy_r_r0 = CPyModule_builtins; - cpy_r_r1 = CPyStatics[37]; /* 'super' */ - cpy_r_r2 = CPyObject_GetAttr(cpy_r_r0, cpy_r_r1); - if (unlikely(cpy_r_r2 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 56, CPyStatic_main___globals); - goto CPyL11; - } - cpy_r_r3 = (PyObject *)CPyType_main___HexBytes; - PyObject *cpy_r_r4[2] = {cpy_r_r3, cpy_r_self}; - cpy_r_r5 = (PyObject **)&cpy_r_r4; - cpy_r_r6 = PyObject_Vectorcall(cpy_r_r2, cpy_r_r5, 2, 0); - CPy_DECREF(cpy_r_r2); - if (unlikely(cpy_r_r6 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 56, CPyStatic_main___globals); - goto CPyL11; - } - cpy_r_r7 = CPyStatics[38]; /* '__getitem__' */ - cpy_r_r8 = CPyObject_GetAttr(cpy_r_r6, cpy_r_r7); - CPy_DECREF(cpy_r_r6); - if (unlikely(cpy_r_r8 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 56, CPyStatic_main___globals); - goto CPyL11; - } - PyObject *cpy_r_r9[1] = {cpy_r_key}; - cpy_r_r10 = (PyObject **)&cpy_r_r9; - cpy_r_r11 = PyObject_Vectorcall(cpy_r_r8, cpy_r_r10, 1, 0); - CPy_DECREF(cpy_r_r8); - if (unlikely(cpy_r_r11 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 56, CPyStatic_main___globals); - goto CPyL11; - } - if (PyLong_Check(cpy_r_r11)) - cpy_r_r12 = cpy_r_r11; - else { - cpy_r_r12 = NULL; - } - if (cpy_r_r12 != NULL) goto __LL5; - if (PyBytes_Check(cpy_r_r11) || PyByteArray_Check(cpy_r_r11)) - cpy_r_r12 = cpy_r_r11; - else { - cpy_r_r12 = NULL; - } - if (cpy_r_r12 != NULL) goto __LL5; - CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__getitem__", 56, CPyStatic_main___globals, "union[int, bytes]", cpy_r_r11); - goto CPyL11; -__LL5: ; - cpy_r_r13 = CPyStatics[15]; /* 'hex' */ - cpy_r_r14 = PyObject_HasAttr(cpy_r_r12, cpy_r_r13); - if (!cpy_r_r14) goto CPyL9; - cpy_r_r15 = CPy_TYPE(cpy_r_self); - PyObject *cpy_r_r16[1] = {cpy_r_r12}; - cpy_r_r17 = (PyObject **)&cpy_r_r16; - cpy_r_r18 = PyObject_Vectorcall(cpy_r_r15, cpy_r_r17, 1, 0); - CPy_DECREF(cpy_r_r15); - if (unlikely(cpy_r_r18 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 58, CPyStatic_main___globals); - goto CPyL12; - } - CPy_DECREF(cpy_r_r12); - if (likely(Py_TYPE(cpy_r_r18) == CPyType_main___HexBytes)) - cpy_r_r19 = cpy_r_r18; - else { - CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__getitem__", 58, CPyStatic_main___globals, "faster_hexbytes.main.HexBytes", cpy_r_r18); - goto CPyL11; - } - return cpy_r_r19; -CPyL9: ; - if (likely(PyLong_Check(cpy_r_r12))) - cpy_r_r20 = CPyTagged_FromObject(cpy_r_r12); - else { - CPy_TypeError("int", cpy_r_r12); cpy_r_r20 = CPY_INT_TAG; - } - CPy_DECREF(cpy_r_r12); - if (unlikely(cpy_r_r20 == CPY_INT_TAG)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 60, CPyStatic_main___globals); - goto CPyL11; - } - cpy_r_r21 = CPyTagged_StealAsObject(cpy_r_r20); - return cpy_r_r21; -CPyL11: ; - cpy_r_r22 = NULL; - return cpy_r_r22; -CPyL12: ; - CPy_DecRef(cpy_r_r12); - goto CPyL11; -} - -PyObject *CPyPy_main_____getitem___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { - PyObject *obj___mypyc_self__ = self; - static const char * const kwlist[] = {"self", "key", 0}; - static CPyArg_Parser parser = {"OO:__call__", kwlist, 0}; - PyObject *obj_self; - PyObject *obj_key; - if (!CPyArg_ParseStackAndKeywordsSimple(args, PyVectorcall_NARGS(nargs), kwnames, &parser, &obj_self, &obj_key)) { - return NULL; - } - PyObject *arg___mypyc_self__ = obj___mypyc_self__; - PyObject *arg_self; - if (likely(Py_TYPE(obj_self) == CPyType_main___HexBytes)) - arg_self = obj_self; - else { - CPy_TypeError("faster_hexbytes.main.HexBytes", obj_self); - goto fail; - } - PyObject *arg_key = obj_key; - PyObject *retval = CPyDef_main_____getitem___3_HexBytes_obj_____call__(arg___mypyc_self__, arg_self, arg_key); - return retval; -fail: ; - CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 53, CPyStatic_main___globals); - return NULL; -} - -PyObject *CPyDef_main_____repr___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner) { - PyObject *cpy_r_r0; - char cpy_r_r1; - PyObject *cpy_r_r2; - PyObject *cpy_r_r3; - cpy_r_r0 = (PyObject *)&_Py_NoneStruct; - cpy_r_r1 = cpy_r_instance == cpy_r_r0; - if (!cpy_r_r1) goto CPyL2; - CPy_INCREF(cpy_r___mypyc_self__); - return cpy_r___mypyc_self__; -CPyL2: ; - cpy_r_r2 = PyMethod_New(cpy_r___mypyc_self__, cpy_r_instance); - if (cpy_r_r2 == NULL) goto CPyL4; - return cpy_r_r2; -CPyL4: ; - cpy_r_r3 = NULL; - return cpy_r_r3; -} - -PyObject *CPyPy_main_____repr___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { - PyObject *obj___mypyc_self__ = self; - static const char * const kwlist[] = {"instance", "owner", 0}; - static CPyArg_Parser parser = {"OO:__get__", kwlist, 0}; - PyObject *obj_instance; - PyObject *obj_owner; - if (!CPyArg_ParseStackAndKeywordsSimple(args, nargs, kwnames, &parser, &obj_instance, &obj_owner)) { - return NULL; - } - PyObject *arg___mypyc_self__ = obj___mypyc_self__; - PyObject *arg_instance = obj_instance; - PyObject *arg_owner = obj_owner; - PyObject *retval = CPyDef_main_____repr___3_HexBytes_obj_____get__(arg___mypyc_self__, arg_instance, arg_owner); - return retval; -fail: ; - CPy_AddTraceback("faster_hexbytes/main.py", "__get__", -1, CPyStatic_main___globals); - return NULL; -} - -PyObject *CPyDef_main_____repr___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self) { - PyObject *cpy_r_r0; - PyObject *cpy_r_r1; - PyObject *cpy_r_r2; - PyObject *cpy_r_r3; - PyObject *cpy_r_r4; - PyObject **cpy_r_r6; - PyObject *cpy_r_r7; - PyObject *cpy_r_r8; - PyObject *cpy_r_r9; - PyObject *cpy_r_r10; - PyObject *cpy_r_r11; - PyObject **cpy_r_r13; - PyObject *cpy_r_r14; - PyObject *cpy_r_r15; - PyObject *cpy_r_r16; - PyObject *cpy_r_r17; - CPyPtr cpy_r_r18; - CPyPtr cpy_r_r19; - CPyPtr cpy_r_r20; - CPyPtr cpy_r_r21; - PyObject *cpy_r_r22; - PyObject *cpy_r_r23; - cpy_r_r0 = CPyStatics[17]; /* '' */ - cpy_r_r1 = CPyStatics[39]; /* 'HexBytes(' */ - cpy_r_r2 = CPyStatics[19]; /* '{!r:{}}' */ - cpy_r_r3 = CPyStatics[24]; /* '0x' */ - cpy_r_r4 = CPyStatics[15]; /* 'hex' */ - PyObject *cpy_r_r5[1] = {cpy_r_self}; - cpy_r_r6 = (PyObject **)&cpy_r_r5; - cpy_r_r7 = PyObject_VectorcallMethod(cpy_r_r4, cpy_r_r6, 9223372036854775809ULL, 0); - if (unlikely(cpy_r_r7 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 63, CPyStatic_main___globals); - goto CPyL8; - } - if (likely(PyUnicode_Check(cpy_r_r7))) - cpy_r_r8 = cpy_r_r7; - else { - CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__repr__", 63, CPyStatic_main___globals, "str", cpy_r_r7); - goto CPyL8; - } - cpy_r_r9 = PyUnicode_Concat(cpy_r_r3, cpy_r_r8); - CPy_DECREF(cpy_r_r8); - if (unlikely(cpy_r_r9 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 63, CPyStatic_main___globals); - goto CPyL8; - } - cpy_r_r10 = CPyStatics[17]; /* '' */ - cpy_r_r11 = CPyStatics[20]; /* 'format' */ - PyObject *cpy_r_r12[3] = {cpy_r_r2, cpy_r_r9, cpy_r_r10}; - cpy_r_r13 = (PyObject **)&cpy_r_r12; - cpy_r_r14 = PyObject_VectorcallMethod(cpy_r_r11, cpy_r_r13, 9223372036854775811ULL, 0); - if (unlikely(cpy_r_r14 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 63, CPyStatic_main___globals); - goto CPyL9; - } - CPy_DECREF(cpy_r_r9); - if (likely(PyUnicode_Check(cpy_r_r14))) - cpy_r_r15 = cpy_r_r14; - else { - CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__repr__", 63, CPyStatic_main___globals, "str", cpy_r_r14); - goto CPyL8; - } - cpy_r_r16 = CPyStatics[40]; /* ')' */ - cpy_r_r17 = PyList_New(3); - if (unlikely(cpy_r_r17 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 63, CPyStatic_main___globals); - goto CPyL10; - } - cpy_r_r18 = (CPyPtr)&((PyListObject *)cpy_r_r17)->ob_item; - cpy_r_r19 = *(CPyPtr *)cpy_r_r18; - CPy_INCREF(cpy_r_r1); - *(PyObject * *)cpy_r_r19 = cpy_r_r1; - cpy_r_r20 = cpy_r_r19 + 8; - *(PyObject * *)cpy_r_r20 = cpy_r_r15; - CPy_INCREF(cpy_r_r16); - cpy_r_r21 = cpy_r_r19 + 16; - *(PyObject * *)cpy_r_r21 = cpy_r_r16; - cpy_r_r22 = PyUnicode_Join(cpy_r_r0, cpy_r_r17); - CPy_DECREF_NO_IMM(cpy_r_r17); - if (unlikely(cpy_r_r22 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 63, CPyStatic_main___globals); - goto CPyL8; - } - return cpy_r_r22; -CPyL8: ; - cpy_r_r23 = NULL; - return cpy_r_r23; -CPyL9: ; - CPy_DecRef(cpy_r_r9); - goto CPyL8; -CPyL10: ; - CPy_DecRef(cpy_r_r15); - goto CPyL8; -} - -PyObject *CPyPy_main_____repr___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { - PyObject *obj___mypyc_self__ = self; - static const char * const kwlist[] = {"self", 0}; - static CPyArg_Parser parser = {"O:__call__", kwlist, 0}; - PyObject *obj_self; - if (!CPyArg_ParseStackAndKeywordsOneArg(args, PyVectorcall_NARGS(nargs), kwnames, &parser, &obj_self)) { - return NULL; - } - PyObject *arg___mypyc_self__ = obj___mypyc_self__; - PyObject *arg_self; - if (likely(Py_TYPE(obj_self) == CPyType_main___HexBytes)) - arg_self = obj_self; - else { - CPy_TypeError("faster_hexbytes.main.HexBytes", obj_self); - goto fail; - } - PyObject *retval = CPyDef_main_____repr___3_HexBytes_obj_____call__(arg___mypyc_self__, arg_self); - return retval; -fail: ; - CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 62, CPyStatic_main___globals); - return NULL; -} - -PyObject *CPyDef_main___to_0x_hex_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner) { - PyObject *cpy_r_r0; - char cpy_r_r1; - PyObject *cpy_r_r2; - PyObject *cpy_r_r3; - cpy_r_r0 = (PyObject *)&_Py_NoneStruct; - cpy_r_r1 = cpy_r_instance == cpy_r_r0; - if (!cpy_r_r1) goto CPyL2; - CPy_INCREF(cpy_r___mypyc_self__); - return cpy_r___mypyc_self__; -CPyL2: ; - cpy_r_r2 = PyMethod_New(cpy_r___mypyc_self__, cpy_r_instance); - if (cpy_r_r2 == NULL) goto CPyL4; - return cpy_r_r2; -CPyL4: ; - cpy_r_r3 = NULL; - return cpy_r_r3; -} - -PyObject *CPyPy_main___to_0x_hex_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { - PyObject *obj___mypyc_self__ = self; - static const char * const kwlist[] = {"instance", "owner", 0}; - static CPyArg_Parser parser = {"OO:__get__", kwlist, 0}; - PyObject *obj_instance; - PyObject *obj_owner; - if (!CPyArg_ParseStackAndKeywordsSimple(args, nargs, kwnames, &parser, &obj_instance, &obj_owner)) { - return NULL; - } - PyObject *arg___mypyc_self__ = obj___mypyc_self__; - PyObject *arg_instance = obj_instance; - PyObject *arg_owner = obj_owner; - PyObject *retval = CPyDef_main___to_0x_hex_HexBytes_obj_____get__(arg___mypyc_self__, arg_instance, arg_owner); - return retval; -fail: ; - CPy_AddTraceback("faster_hexbytes/main.py", "__get__", -1, CPyStatic_main___globals); - return NULL; -} - -PyObject *CPyDef_main___to_0x_hex_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self) { - PyObject *cpy_r_r0; - PyObject *cpy_r_r1; - PyObject **cpy_r_r3; - PyObject *cpy_r_r4; - PyObject *cpy_r_r5; - PyObject *cpy_r_r6; - PyObject *cpy_r_r7; - cpy_r_r0 = CPyStatics[24]; /* '0x' */ - cpy_r_r1 = CPyStatics[15]; /* 'hex' */ - PyObject *cpy_r_r2[1] = {cpy_r_self}; - cpy_r_r3 = (PyObject **)&cpy_r_r2; - cpy_r_r4 = PyObject_VectorcallMethod(cpy_r_r1, cpy_r_r3, 9223372036854775809ULL, 0); - if (unlikely(cpy_r_r4 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "to_0x_hex", 69, CPyStatic_main___globals); - goto CPyL4; - } - if (likely(PyUnicode_Check(cpy_r_r4))) - cpy_r_r5 = cpy_r_r4; - else { - CPy_TypeErrorTraceback("faster_hexbytes/main.py", "to_0x_hex", 69, CPyStatic_main___globals, "str", cpy_r_r4); - goto CPyL4; - } - cpy_r_r6 = PyUnicode_Concat(cpy_r_r0, cpy_r_r5); - CPy_DECREF(cpy_r_r5); - if (unlikely(cpy_r_r6 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "to_0x_hex", 69, CPyStatic_main___globals); - goto CPyL4; - } - return cpy_r_r6; -CPyL4: ; - cpy_r_r7 = NULL; - return cpy_r_r7; -} - -PyObject *CPyPy_main___to_0x_hex_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { - PyObject *obj___mypyc_self__ = self; - static const char * const kwlist[] = {"self", 0}; - static CPyArg_Parser parser = {"O:__call__", kwlist, 0}; - PyObject *obj_self; - if (!CPyArg_ParseStackAndKeywordsOneArg(args, PyVectorcall_NARGS(nargs), kwnames, &parser, &obj_self)) { - return NULL; - } - PyObject *arg___mypyc_self__ = obj___mypyc_self__; - PyObject *arg_self; - if (likely(Py_TYPE(obj_self) == CPyType_main___HexBytes)) - arg_self = obj_self; - else { - CPy_TypeError("faster_hexbytes.main.HexBytes", obj_self); - goto fail; - } - PyObject *retval = CPyDef_main___to_0x_hex_HexBytes_obj_____call__(arg___mypyc_self__, arg_self); - return retval; -fail: ; - CPy_AddTraceback("faster_hexbytes/main.py", "to_0x_hex", 65, CPyStatic_main___globals); - return NULL; -} - -PyObject *CPyDef_main_____reduce___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner) { - PyObject *cpy_r_r0; - char cpy_r_r1; - PyObject *cpy_r_r2; - PyObject *cpy_r_r3; - cpy_r_r0 = (PyObject *)&_Py_NoneStruct; - cpy_r_r1 = cpy_r_instance == cpy_r_r0; - if (!cpy_r_r1) goto CPyL2; - CPy_INCREF(cpy_r___mypyc_self__); - return cpy_r___mypyc_self__; -CPyL2: ; - cpy_r_r2 = PyMethod_New(cpy_r___mypyc_self__, cpy_r_instance); - if (cpy_r_r2 == NULL) goto CPyL4; - return cpy_r_r2; -CPyL4: ; - cpy_r_r3 = NULL; - return cpy_r_r3; -} - -PyObject *CPyPy_main_____reduce___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { - PyObject *obj___mypyc_self__ = self; - static const char * const kwlist[] = {"instance", "owner", 0}; - static CPyArg_Parser parser = {"OO:__get__", kwlist, 0}; - PyObject *obj_instance; - PyObject *obj_owner; - if (!CPyArg_ParseStackAndKeywordsSimple(args, nargs, kwnames, &parser, &obj_instance, &obj_owner)) { - return NULL; - } - PyObject *arg___mypyc_self__ = obj___mypyc_self__; - PyObject *arg_instance = obj_instance; - PyObject *arg_owner = obj_owner; - PyObject *retval = CPyDef_main_____reduce___3_HexBytes_obj_____get__(arg___mypyc_self__, arg_instance, arg_owner); - return retval; -fail: ; - CPy_AddTraceback("faster_hexbytes/main.py", "__get__", -1, CPyStatic_main___globals); - return NULL; -} - -tuple_T2OT2OO CPyDef_main_____reduce___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self) { - PyObject *cpy_r_r0; - PyObject *cpy_r_r1; - PyObject *cpy_r_r2; - PyObject *cpy_r_r3; - PyObject *cpy_r_r4; - PyObject **cpy_r_r6; - PyObject *cpy_r_r7; - PyObject *cpy_r_r8; - tuple_T2OO cpy_r_r9; - tuple_T2OT2OO cpy_r_r10; - tuple_T2OT2OO cpy_r_r11; - cpy_r_r0 = (PyObject *)&PyBytes_Type; - cpy_r_r1 = CPyStatics[36]; /* '__new__' */ - cpy_r_r2 = CPyObject_GetAttr(cpy_r_r0, cpy_r_r1); - if (unlikely(cpy_r_r2 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__reduce__", 79, CPyStatic_main___globals); - goto CPyL4; - } - cpy_r_r3 = CPy_TYPE(cpy_r_self); - cpy_r_r4 = (PyObject *)&PyBytes_Type; - PyObject *cpy_r_r5[1] = {cpy_r_self}; - cpy_r_r6 = (PyObject **)&cpy_r_r5; - cpy_r_r7 = PyObject_Vectorcall(cpy_r_r4, cpy_r_r6, 1, 0); - if (unlikely(cpy_r_r7 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__reduce__", 79, CPyStatic_main___globals); - goto CPyL5; - } - if (likely(PyBytes_Check(cpy_r_r7) || PyByteArray_Check(cpy_r_r7))) - cpy_r_r8 = cpy_r_r7; - else { - CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__reduce__", 79, CPyStatic_main___globals, "bytes", cpy_r_r7); - goto CPyL5; - } - cpy_r_r9.f0 = cpy_r_r3; - cpy_r_r9.f1 = cpy_r_r8; - cpy_r_r10.f0 = cpy_r_r2; - cpy_r_r10.f1 = cpy_r_r9; - return cpy_r_r10; -CPyL4: ; - tuple_T2OT2OO __tmp6 = { NULL, (tuple_T2OO) { NULL, NULL } }; - cpy_r_r11 = __tmp6; - return cpy_r_r11; -CPyL5: ; - CPy_DecRef(cpy_r_r2); - CPy_DecRef(cpy_r_r3); - goto CPyL4; -} - -PyObject *CPyPy_main_____reduce___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { - PyObject *obj___mypyc_self__ = self; - static const char * const kwlist[] = {"self", 0}; - static CPyArg_Parser parser = {"O:__call__", kwlist, 0}; - PyObject *obj_self; - if (!CPyArg_ParseStackAndKeywordsOneArg(args, PyVectorcall_NARGS(nargs), kwnames, &parser, &obj_self)) { - return NULL; - } - PyObject *arg___mypyc_self__ = obj___mypyc_self__; - PyObject *arg_self; - if (likely(Py_TYPE(obj_self) == CPyType_main___HexBytes)) - arg_self = obj_self; - else { - CPy_TypeError("faster_hexbytes.main.HexBytes", obj_self); - goto fail; - } - tuple_T2OT2OO retval = CPyDef_main_____reduce___3_HexBytes_obj_____call__(arg___mypyc_self__, arg_self); - if (retval.f0 == NULL) { - return NULL; - } - PyObject *retbox = PyTuple_New(2); - if (unlikely(retbox == NULL)) - CPyError_OutOfMemory(); - PyObject *__tmp7 = retval.f0; - PyTuple_SET_ITEM(retbox, 0, __tmp7); - PyObject *__tmp8 = PyTuple_New(2); - if (unlikely(__tmp8 == NULL)) - CPyError_OutOfMemory(); - PyObject *__tmp9 = retval.f1.f0; - PyTuple_SET_ITEM(__tmp8, 0, __tmp9); - PyObject *__tmp10 = retval.f1.f1; - PyTuple_SET_ITEM(__tmp8, 1, __tmp10); - PyTuple_SET_ITEM(retbox, 1, __tmp8); - return retbox; -fail: ; - CPy_AddTraceback("faster_hexbytes/main.py", "__reduce__", 71, CPyStatic_main___globals); - return NULL; -} - -char CPyDef_main_____top_level__(void) { - PyObject *cpy_r_r0; - PyObject *cpy_r_r1; - char cpy_r_r2; - PyObject *cpy_r_r3; - PyObject *cpy_r_r4; - PyObject *cpy_r_r5; - PyObject *cpy_r_r6; - PyObject *cpy_r_r7; - PyObject *cpy_r_r8; - PyObject *cpy_r_r9; - PyObject *cpy_r_r10; - PyObject *cpy_r_r11; - PyObject *cpy_r_r12; - PyObject *cpy_r_r13; - PyObject *cpy_r_r14; - PyObject *cpy_r_r15; - PyObject *cpy_r_r16; - PyObject *cpy_r_r17; - PyObject *cpy_r_r18; - PyObject *cpy_r_r19; - PyObject *cpy_r_r20; - PyObject *cpy_r_r21; - PyObject *cpy_r_r22; - PyObject *cpy_r_r23; - PyObject *cpy_r_r24; - PyObject *cpy_r_r25; - PyObject *cpy_r_r26; - PyObject *cpy_r_r27; - PyObject *cpy_r_r28; - PyObject *cpy_r_r29; - PyObject *cpy_r_r30; - PyObject *cpy_r_r31; - PyObject *cpy_r_r32; - PyObject *cpy_r_r33; - tuple_T6OOOOOO cpy_r_r34; - PyObject *cpy_r_r35; - PyObject *cpy_r_r36; - PyObject *cpy_r_r37; - PyObject *cpy_r_r38; - int32_t cpy_r_r39; - char cpy_r_r40; - PyObject *cpy_r_r41; - PyObject *cpy_r_r42; - PyObject *cpy_r_r43; - PyObject *cpy_r_r44; - PyObject *cpy_r_r45; - PyObject *cpy_r_r46; - PyObject *cpy_r_r47; - char cpy_r_r48; - PyObject *cpy_r_r49; - PyObject *cpy_r_r50; - PyObject *cpy_r_r51; - PyObject **cpy_r_r53; - PyObject *cpy_r_r54; - PyObject *cpy_r_r55; - PyObject *cpy_r_r56; - PyObject *cpy_r_r57; - PyObject *cpy_r_r58; - PyObject *cpy_r_r59; - PyObject *cpy_r_r60; - PyObject *cpy_r_r61; - PyObject *cpy_r_r62; - PyObject **cpy_r_r64; - PyObject *cpy_r_r65; - PyObject *cpy_r_r66; - int32_t cpy_r_r67; - char cpy_r_r68; - PyObject *cpy_r_r69; - PyObject *cpy_r_r70; - int32_t cpy_r_r71; - char cpy_r_r72; - PyObject *cpy_r_r73; - PyObject *cpy_r_r74; - int32_t cpy_r_r75; - char cpy_r_r76; - PyObject *cpy_r_r77; - PyObject *cpy_r_r78; - int32_t cpy_r_r79; - char cpy_r_r80; - PyObject *cpy_r_r81; - PyObject *cpy_r_r82; - int32_t cpy_r_r83; - char cpy_r_r84; - PyObject *cpy_r_r85; - PyObject *cpy_r_r86; - int32_t cpy_r_r87; - char cpy_r_r88; - PyObject *cpy_r_r89; - PyObject *cpy_r_r90; - int32_t cpy_r_r91; - char cpy_r_r92; - PyObject *cpy_r_r93; - PyObject *cpy_r_r94; - int32_t cpy_r_r95; - char cpy_r_r96; - PyObject **cpy_r_r98; - PyObject *cpy_r_r99; - PyObject *cpy_r_r100; - PyObject *cpy_r_r101; - PyObject *cpy_r_r102; - PyObject *cpy_r_r103; - PyObject **cpy_r_r105; - PyObject *cpy_r_r106; - PyObject *cpy_r_r107; - PyObject **cpy_r_r109; - PyObject *cpy_r_r110; - PyObject *cpy_r_r111; - PyObject *cpy_r_r112; - int32_t cpy_r_r113; - char cpy_r_r114; - PyObject *cpy_r_r115; - char cpy_r_r116; - cpy_r_r0 = CPyModule_builtins; - cpy_r_r1 = (PyObject *)&_Py_NoneStruct; - cpy_r_r2 = cpy_r_r0 != cpy_r_r1; - if (cpy_r_r2) goto CPyL3; - cpy_r_r3 = CPyStatics[3]; /* 'builtins' */ - cpy_r_r4 = PyImport_Import(cpy_r_r3); - if (unlikely(cpy_r_r4 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", -1, CPyStatic_main___globals); - goto CPyL45; - } - CPyModule_builtins = cpy_r_r4; - CPy_INCREF(CPyModule_builtins); - CPy_DECREF(cpy_r_r4); -CPyL3: ; - cpy_r_r5 = CPyStatics[73]; /* ('TYPE_CHECKING', 'Callable', 'Tuple', 'Type', 'Union', - 'overload') */ - cpy_r_r6 = CPyStatics[35]; /* 'typing' */ - cpy_r_r7 = CPyStatic_main___globals; - cpy_r_r8 = CPyImport_ImportFromMany(cpy_r_r6, cpy_r_r5, cpy_r_r5, cpy_r_r7); - if (unlikely(cpy_r_r8 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 1, CPyStatic_main___globals); - goto CPyL45; - } - CPyModule_typing = cpy_r_r8; - CPy_INCREF(CPyModule_typing); - CPy_DECREF(cpy_r_r8); - cpy_r_r9 = CPyStatics[74]; /* ('mypyc_attr',) */ - cpy_r_r10 = CPyStatics[47]; /* 'mypy_extensions' */ - cpy_r_r11 = CPyStatic_main___globals; - cpy_r_r12 = CPyImport_ImportFromMany(cpy_r_r10, cpy_r_r9, cpy_r_r9, cpy_r_r11); - if (unlikely(cpy_r_r12 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 10, CPyStatic_main___globals); - goto CPyL45; - } - CPyModule_mypy_extensions = cpy_r_r12; - CPy_INCREF(CPyModule_mypy_extensions); - CPy_DECREF(cpy_r_r12); - cpy_r_r13 = CPyStatics[75]; /* ('Self',) */ - cpy_r_r14 = CPyStatics[49]; /* 'typing_extensions' */ - cpy_r_r15 = CPyStatic_main___globals; - cpy_r_r16 = CPyImport_ImportFromMany(cpy_r_r14, cpy_r_r13, cpy_r_r13, cpy_r_r15); - if (unlikely(cpy_r_r16 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 13, CPyStatic_main___globals); - goto CPyL45; - } - CPyModule_typing_extensions = cpy_r_r16; - CPy_INCREF(CPyModule_typing_extensions); - CPy_DECREF(cpy_r_r16); - cpy_r_r17 = CPyStatics[76]; /* ('to_bytes',) */ - cpy_r_r18 = CPyStatics[51]; /* 'faster_hexbytes._utils' */ - cpy_r_r19 = CPyStatic_main___globals; - cpy_r_r20 = CPyImport_ImportFromMany(cpy_r_r18, cpy_r_r17, cpy_r_r17, cpy_r_r19); - if (unlikely(cpy_r_r20 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 17, CPyStatic_main___globals); - goto CPyL45; - } - CPyModule_faster_hexbytes____utils = cpy_r_r20; - CPy_INCREF(CPyModule_faster_hexbytes____utils); - CPy_DECREF(cpy_r_r20); - cpy_r_r21 = CPyStatic_main___globals; - cpy_r_r22 = CPyStatics[34]; /* 'Union' */ - cpy_r_r23 = CPyDict_GetItem(cpy_r_r21, cpy_r_r22); - if (unlikely(cpy_r_r23 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 26, CPyStatic_main___globals); - goto CPyL45; - } - cpy_r_r24 = (PyObject *)&PyBool_Type; - cpy_r_r25 = CPyModule_builtins; - cpy_r_r26 = CPyStatics[52]; /* 'bytearray' */ - cpy_r_r27 = CPyObject_GetAttr(cpy_r_r25, cpy_r_r26); - if (unlikely(cpy_r_r27 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 26, CPyStatic_main___globals); - goto CPyL46; - } - cpy_r_r28 = (PyObject *)&PyBytes_Type; - cpy_r_r29 = (PyObject *)&PyLong_Type; - cpy_r_r30 = (PyObject *)&PyUnicode_Type; - cpy_r_r31 = CPyModule_builtins; - cpy_r_r32 = CPyStatics[16]; /* 'memoryview' */ - cpy_r_r33 = CPyObject_GetAttr(cpy_r_r31, cpy_r_r32); - if (unlikely(cpy_r_r33 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 26, CPyStatic_main___globals); - goto CPyL47; - } - CPy_INCREF(cpy_r_r24); - CPy_INCREF(cpy_r_r28); - CPy_INCREF(cpy_r_r29); - CPy_INCREF(cpy_r_r30); - cpy_r_r34.f0 = cpy_r_r24; - cpy_r_r34.f1 = cpy_r_r27; - cpy_r_r34.f2 = cpy_r_r28; - cpy_r_r34.f3 = cpy_r_r29; - cpy_r_r34.f4 = cpy_r_r30; - cpy_r_r34.f5 = cpy_r_r33; - cpy_r_r35 = PyTuple_New(6); - if (unlikely(cpy_r_r35 == NULL)) - CPyError_OutOfMemory(); - PyObject *__tmp11 = cpy_r_r34.f0; - PyTuple_SET_ITEM(cpy_r_r35, 0, __tmp11); - PyObject *__tmp12 = cpy_r_r34.f1; - PyTuple_SET_ITEM(cpy_r_r35, 1, __tmp12); - PyObject *__tmp13 = cpy_r_r34.f2; - PyTuple_SET_ITEM(cpy_r_r35, 2, __tmp13); - PyObject *__tmp14 = cpy_r_r34.f3; - PyTuple_SET_ITEM(cpy_r_r35, 3, __tmp14); - PyObject *__tmp15 = cpy_r_r34.f4; - PyTuple_SET_ITEM(cpy_r_r35, 4, __tmp15); - PyObject *__tmp16 = cpy_r_r34.f5; - PyTuple_SET_ITEM(cpy_r_r35, 5, __tmp16); - cpy_r_r36 = PyObject_GetItem(cpy_r_r23, cpy_r_r35); - CPy_DECREF(cpy_r_r23); - CPy_DECREF(cpy_r_r35); - if (unlikely(cpy_r_r36 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 26, CPyStatic_main___globals); - goto CPyL45; - } - cpy_r_r37 = CPyStatic_main___globals; - cpy_r_r38 = CPyStatics[53]; /* 'BytesLike' */ - cpy_r_r39 = CPyDict_SetItem(cpy_r_r37, cpy_r_r38, cpy_r_r36); - CPy_DECREF(cpy_r_r36); - cpy_r_r40 = cpy_r_r39 >= 0; - if (unlikely(!cpy_r_r40)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 26, CPyStatic_main___globals); - goto CPyL45; - } - cpy_r_r41 = CPyModule_builtins; - cpy_r_r42 = CPyStatics[54]; /* 'bytes' */ - cpy_r_r43 = CPyObject_GetAttr(cpy_r_r41, cpy_r_r42); - if (unlikely(cpy_r_r43 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 30, CPyStatic_main___globals); - goto CPyL45; - } - cpy_r_r44 = PyTuple_Pack(1, cpy_r_r43); - CPy_DECREF(cpy_r_r43); - if (unlikely(cpy_r_r44 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 30, CPyStatic_main___globals); - goto CPyL45; - } - cpy_r_r45 = (PyObject *)&PyType_Type; - cpy_r_r46 = CPy_CalculateMetaclass(cpy_r_r45, cpy_r_r44); - if (unlikely(cpy_r_r46 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 30, CPyStatic_main___globals); - goto CPyL48; - } - cpy_r_r47 = CPyStatics[55]; /* '__prepare__' */ - cpy_r_r48 = PyObject_HasAttr(cpy_r_r46, cpy_r_r47); - if (!cpy_r_r48) goto CPyL21; - cpy_r_r49 = CPyStatics[7]; /* 'HexBytes' */ - cpy_r_r50 = CPyStatics[55]; /* '__prepare__' */ - cpy_r_r51 = CPyObject_GetAttr(cpy_r_r46, cpy_r_r50); - if (unlikely(cpy_r_r51 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 30, CPyStatic_main___globals); - goto CPyL48; - } - PyObject *cpy_r_r52[2] = {cpy_r_r49, cpy_r_r44}; - cpy_r_r53 = (PyObject **)&cpy_r_r52; - cpy_r_r54 = PyObject_Vectorcall(cpy_r_r51, cpy_r_r53, 2, 0); - CPy_DECREF(cpy_r_r51); - if (unlikely(cpy_r_r54 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 30, CPyStatic_main___globals); - goto CPyL48; - } - if (likely(PyDict_Check(cpy_r_r54))) - cpy_r_r55 = cpy_r_r54; - else { - CPy_TypeErrorTraceback("faster_hexbytes/main.py", "", 30, CPyStatic_main___globals, "dict", cpy_r_r54); - goto CPyL48; - } - cpy_r_r56 = cpy_r_r55; - goto CPyL23; -CPyL21: ; - cpy_r_r57 = PyDict_New(); - if (unlikely(cpy_r_r57 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 30, CPyStatic_main___globals); - goto CPyL48; - } - cpy_r_r56 = cpy_r_r57; -CPyL23: ; - cpy_r_r58 = PyDict_New(); - if (unlikely(cpy_r_r58 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 30, CPyStatic_main___globals); - goto CPyL49; - } - cpy_r_r59 = CPyDef_main_____new___3_HexBytes_obj(); - if (unlikely(cpy_r_r59 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 41, CPyStatic_main___globals); - goto CPyL50; - } - cpy_r_r60 = CPyModule_builtins; - cpy_r_r61 = CPyStatics[56]; /* 'staticmethod' */ - cpy_r_r62 = CPyObject_GetAttr(cpy_r_r60, cpy_r_r61); - if (unlikely(cpy_r_r62 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 41, CPyStatic_main___globals); - goto CPyL51; - } - PyObject *cpy_r_r63[1] = {cpy_r_r59}; - cpy_r_r64 = (PyObject **)&cpy_r_r63; - cpy_r_r65 = PyObject_Vectorcall(cpy_r_r62, cpy_r_r64, 1, 0); - CPy_DECREF(cpy_r_r62); - if (unlikely(cpy_r_r65 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 41, CPyStatic_main___globals); - goto CPyL51; - } - CPy_DECREF_NO_IMM(cpy_r_r59); - cpy_r_r66 = CPyStatics[36]; /* '__new__' */ - cpy_r_r67 = CPyDict_SetItem(cpy_r_r56, cpy_r_r66, cpy_r_r65); - CPy_DECREF(cpy_r_r65); - cpy_r_r68 = cpy_r_r67 >= 0; - if (unlikely(!cpy_r_r68)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 41, CPyStatic_main___globals); - goto CPyL50; - } - cpy_r_r69 = CPyDef_main_____getitem___3_HexBytes_obj(); - if (unlikely(cpy_r_r69 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 53, CPyStatic_main___globals); - goto CPyL50; - } - cpy_r_r70 = CPyStatics[38]; /* '__getitem__' */ - cpy_r_r71 = CPyDict_SetItem(cpy_r_r56, cpy_r_r70, cpy_r_r69); - CPy_DECREF_NO_IMM(cpy_r_r69); - cpy_r_r72 = cpy_r_r71 >= 0; - if (unlikely(!cpy_r_r72)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 53, CPyStatic_main___globals); - goto CPyL50; - } - cpy_r_r73 = CPyDef_main_____repr___3_HexBytes_obj(); - if (unlikely(cpy_r_r73 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 62, CPyStatic_main___globals); - goto CPyL50; - } - cpy_r_r74 = CPyStatics[57]; /* '__repr__' */ - cpy_r_r75 = CPyDict_SetItem(cpy_r_r56, cpy_r_r74, cpy_r_r73); - CPy_DECREF_NO_IMM(cpy_r_r73); - cpy_r_r76 = cpy_r_r75 >= 0; - if (unlikely(!cpy_r_r76)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 62, CPyStatic_main___globals); - goto CPyL50; - } - cpy_r_r77 = CPyDef_main___to_0x_hex_HexBytes_obj(); - if (unlikely(cpy_r_r77 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 65, CPyStatic_main___globals); - goto CPyL50; - } - cpy_r_r78 = CPyStatics[58]; /* 'to_0x_hex' */ - cpy_r_r79 = CPyDict_SetItem(cpy_r_r56, cpy_r_r78, cpy_r_r77); - CPy_DECREF_NO_IMM(cpy_r_r77); - cpy_r_r80 = cpy_r_r79 >= 0; - if (unlikely(!cpy_r_r80)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 65, CPyStatic_main___globals); - goto CPyL50; - } - cpy_r_r81 = CPyDef_main_____reduce___3_HexBytes_obj(); - if (unlikely(cpy_r_r81 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 71, CPyStatic_main___globals); - goto CPyL50; - } - cpy_r_r82 = CPyStatics[59]; /* '__reduce__' */ - cpy_r_r83 = CPyDict_SetItem(cpy_r_r56, cpy_r_r82, cpy_r_r81); - CPy_DECREF_NO_IMM(cpy_r_r81); - cpy_r_r84 = cpy_r_r83 >= 0; - if (unlikely(!cpy_r_r84)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 71, CPyStatic_main___globals); - goto CPyL50; - } - cpy_r_r85 = CPyStatics[7]; /* 'HexBytes' */ - cpy_r_r86 = CPyStatics[60]; /* '__annotations__' */ - cpy_r_r87 = CPyDict_SetItem(cpy_r_r56, cpy_r_r86, cpy_r_r58); - CPy_DECREF(cpy_r_r58); - cpy_r_r88 = cpy_r_r87 >= 0; - if (unlikely(!cpy_r_r88)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 30, CPyStatic_main___globals); - goto CPyL49; - } - cpy_r_r89 = CPyStatics[61]; /* 'mypyc filler docstring' */ - cpy_r_r90 = CPyStatics[62]; /* '__doc__' */ - cpy_r_r91 = CPyDict_SetItem(cpy_r_r56, cpy_r_r90, cpy_r_r89); - cpy_r_r92 = cpy_r_r91 >= 0; - if (unlikely(!cpy_r_r92)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 30, CPyStatic_main___globals); - goto CPyL49; - } - cpy_r_r93 = CPyStatics[8]; /* 'faster_hexbytes.main' */ - cpy_r_r94 = CPyStatics[63]; /* '__module__' */ - cpy_r_r95 = CPyDict_SetItem(cpy_r_r56, cpy_r_r94, cpy_r_r93); - cpy_r_r96 = cpy_r_r95 >= 0; - if (unlikely(!cpy_r_r96)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 30, CPyStatic_main___globals); - goto CPyL49; - } - PyObject *cpy_r_r97[3] = {cpy_r_r85, cpy_r_r44, cpy_r_r56}; - cpy_r_r98 = (PyObject **)&cpy_r_r97; - cpy_r_r99 = PyObject_Vectorcall(cpy_r_r46, cpy_r_r98, 3, 0); - if (unlikely(cpy_r_r99 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 30, CPyStatic_main___globals); - goto CPyL49; - } - CPy_DECREF(cpy_r_r56); - CPy_DECREF(cpy_r_r44); - cpy_r_r100 = CPyStatic_main___globals; - cpy_r_r101 = CPyStatics[46]; /* 'mypyc_attr' */ - cpy_r_r102 = CPyDict_GetItem(cpy_r_r100, cpy_r_r101); - if (unlikely(cpy_r_r102 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 29, CPyStatic_main___globals); - goto CPyL52; - } - cpy_r_r103 = 0 ? Py_True : Py_False; - PyObject *cpy_r_r104[1] = {cpy_r_r103}; - cpy_r_r105 = (PyObject **)&cpy_r_r104; - cpy_r_r106 = CPyStatics[77]; /* ('native_class',) */ - cpy_r_r107 = PyObject_Vectorcall(cpy_r_r102, cpy_r_r105, 0, cpy_r_r106); - CPy_DECREF(cpy_r_r102); - if (unlikely(cpy_r_r107 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 29, CPyStatic_main___globals); - goto CPyL52; - } - PyObject *cpy_r_r108[1] = {cpy_r_r99}; - cpy_r_r109 = (PyObject **)&cpy_r_r108; - cpy_r_r110 = PyObject_Vectorcall(cpy_r_r107, cpy_r_r109, 1, 0); - CPy_DECREF(cpy_r_r107); - if (unlikely(cpy_r_r110 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 30, CPyStatic_main___globals); - goto CPyL52; - } - CPy_DECREF(cpy_r_r99); - CPyType_main___HexBytes = (PyTypeObject *)cpy_r_r110; - CPy_INCREF(CPyType_main___HexBytes); - cpy_r_r111 = CPyStatic_main___globals; - cpy_r_r112 = CPyStatics[7]; /* 'HexBytes' */ - cpy_r_r113 = PyDict_SetItem(cpy_r_r111, cpy_r_r112, cpy_r_r110); - CPy_DECREF(cpy_r_r110); - cpy_r_r114 = cpy_r_r113 >= 0; - if (unlikely(!cpy_r_r114)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 30, CPyStatic_main___globals); - goto CPyL45; - } - cpy_r_r115 = (PyObject *)CPyType_main___HexBytes; - return 1; -CPyL45: ; - cpy_r_r116 = 2; - return cpy_r_r116; -CPyL46: ; - CPy_DecRef(cpy_r_r23); - goto CPyL45; -CPyL47: ; - CPy_DecRef(cpy_r_r23); - CPy_DecRef(cpy_r_r27); - goto CPyL45; -CPyL48: ; - CPy_DecRef(cpy_r_r44); - goto CPyL45; -CPyL49: ; - CPy_DecRef(cpy_r_r44); - CPy_DecRef(cpy_r_r56); - goto CPyL45; -CPyL50: ; - CPy_DecRef(cpy_r_r44); - CPy_DecRef(cpy_r_r56); - CPy_DecRef(cpy_r_r58); - goto CPyL45; -CPyL51: ; - CPy_DecRef(cpy_r_r44); - CPy_DecRef(cpy_r_r56); - CPy_DecRef(cpy_r_r58); - CPy_DecRef(cpy_r_r59); - goto CPyL45; -CPyL52: ; - CPy_DecRef(cpy_r_r99); - goto CPyL45; -} - -int CPyGlobalsInit(void) -{ - static int is_initialized = 0; - if (is_initialized) return 0; - - CPy_Init(); - CPyModule_faster_hexbytes = Py_None; - CPyModule_builtins = Py_None; - CPyModule_importlib___metadata = Py_None; - CPyModule_faster_hexbytes___main = Py_None; - CPyModule_faster_hexbytes____utils = Py_None; - CPyModule_builtins = Py_None; - CPyModule_binascii = Py_None; - CPyModule_typing = Py_None; - CPyModule_faster_hexbytes___main = Py_None; - CPyModule_builtins = Py_None; - CPyModule_typing = Py_None; - CPyModule_mypy_extensions = Py_None; - CPyModule_typing_extensions = Py_None; - CPyModule_faster_hexbytes____utils = Py_None; - if (CPyStatics_Initialize(CPyStatics, CPyLit_Str, CPyLit_Bytes, CPyLit_Int, CPyLit_Float, CPyLit_Complex, CPyLit_Tuple, CPyLit_FrozenSet) < 0) { - return -1; - } - is_initialized = 1; - return 0; -} - -PyObject *CPyStatics[78]; -const char * const CPyLit_Str[] = { - "\005\bbuiltins\aversion\t__version\022importlib.metadata\bHexBytes", - "\004\024faster_hexbytes.main\a__all__\bhexbytes\v__version__", - "\006 Cannot convert negative integer \t to bytes\nValueError\003hex\nmemoryview\000", - "\t\017Cannot convert \a{!r:{}}\006format\t of type \005{:{}}\tTypeError\0020x\0020X\0010", - "\002\022UnicodeDecodeError\vhex string ", - "\003( may only contain [0-9a-fA-F] characters\tunhexlify\bbinascii", - "\006\031faster_hexbytes/_utils.py\b\005Union\006typing\a__new__\005super", - "\b\v__getitem__\tHexBytes(\001)\rTYPE_CHECKING\bCallable\005Tuple\004Type\boverload", - "\005\nmypyc_attr\017mypy_extensions\004Self\021typing_extensions\bto_bytes", - "\005\026faster_hexbytes._utils\tbytearray\tBytesLike\005bytes\v__prepare__", - "\005\fstaticmethod\b__repr__\tto_0x_hex\n__reduce__\017__annotations__", - "\004\026mypyc filler docstring\a__doc__\n__module__\fnative_class", - "", -}; -const char * const CPyLit_Bytes[] = { - "\002\001\001\001\000", - "", -}; -const char * const CPyLit_Int[] = { - "", -}; -const double CPyLit_Float[] = {0}; -const double CPyLit_Complex[] = {0}; -const int CPyLit_Tuple[] = { - 11, 1, 4, 1, 5, 1, 7, 3, 31, 31, 31, 1, 70, 1, 34, 6, 41, 42, 43, - 44, 34, 45, 1, 46, 1, 48, 1, 50, 1, 64 -}; -const int CPyLit_FrozenSet[] = {0}; -CPyModule *CPyModule_faster_hexbytes__internal = NULL; -CPyModule *CPyModule_faster_hexbytes; -PyObject *CPyStatic_faster_hexbytes___globals; -CPyModule *CPyModule_builtins; -CPyModule *CPyModule_importlib___metadata; -CPyModule *CPyModule_faster_hexbytes___main__internal = NULL; -CPyModule *CPyModule_faster_hexbytes___main; -CPyModule *CPyModule_faster_hexbytes____utils__internal = NULL; -CPyModule *CPyModule_faster_hexbytes____utils; -PyObject *CPyStatic__utils___globals; -CPyModule *CPyModule_binascii; -CPyModule *CPyModule_typing; -PyObject *CPyStatic_main___globals; -CPyModule *CPyModule_mypy_extensions; -CPyModule *CPyModule_typing_extensions; -char CPyDef_faster_hexbytes_____top_level__(void); -PyObject *CPyDef__utils___to_bytes(PyObject *cpy_r_val); -PyObject *CPyPy__utils___to_bytes(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -PyObject *CPyDef__utils___hexstr_to_bytes(PyObject *cpy_r_hexstr); -PyObject *CPyPy__utils___hexstr_to_bytes(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -char CPyDef__utils_____top_level__(void); -PyTypeObject *CPyType_main___HexBytes; -PyTypeObject *CPyType_main_____new___3_HexBytes_obj; -PyObject *CPyDef_main_____new___3_HexBytes_obj(void); -CPyThreadLocal faster_hexbytes___main_____new___3_HexBytes_objObject *main_____new___3_HexBytes_obj_free_instance; -PyTypeObject *CPyType_main_____getitem___3_HexBytes_obj; -PyObject *CPyDef_main_____getitem___3_HexBytes_obj(void); -CPyThreadLocal faster_hexbytes___main_____getitem___3_HexBytes_objObject *main_____getitem___3_HexBytes_obj_free_instance; -PyTypeObject *CPyType_main_____repr___3_HexBytes_obj; -PyObject *CPyDef_main_____repr___3_HexBytes_obj(void); -CPyThreadLocal faster_hexbytes___main_____repr___3_HexBytes_objObject *main_____repr___3_HexBytes_obj_free_instance; -PyTypeObject *CPyType_main___to_0x_hex_HexBytes_obj; -PyObject *CPyDef_main___to_0x_hex_HexBytes_obj(void); -CPyThreadLocal faster_hexbytes___main___to_0x_hex_HexBytes_objObject *main___to_0x_hex_HexBytes_obj_free_instance; -PyTypeObject *CPyType_main_____reduce___3_HexBytes_obj; -PyObject *CPyDef_main_____reduce___3_HexBytes_obj(void); -CPyThreadLocal faster_hexbytes___main_____reduce___3_HexBytes_objObject *main_____reduce___3_HexBytes_obj_free_instance; -PyObject *CPyDef_main_____new___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); -PyObject *CPyPy_main_____new___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -PyObject *CPyDef_main_____new___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_cls, PyObject *cpy_r_val); -PyObject *CPyPy_main_____new___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -PyObject *CPyDef_main_____getitem___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); -PyObject *CPyPy_main_____getitem___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -PyObject *CPyDef_main_____getitem___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self, PyObject *cpy_r_key); -PyObject *CPyPy_main_____getitem___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -PyObject *CPyDef_main_____repr___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); -PyObject *CPyPy_main_____repr___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -PyObject *CPyDef_main_____repr___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self); -PyObject *CPyPy_main_____repr___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -PyObject *CPyDef_main___to_0x_hex_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); -PyObject *CPyPy_main___to_0x_hex_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -PyObject *CPyDef_main___to_0x_hex_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self); -PyObject *CPyPy_main___to_0x_hex_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -PyObject *CPyDef_main_____reduce___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); -PyObject *CPyPy_main_____reduce___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -tuple_T2OT2OO CPyDef_main_____reduce___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self); -PyObject *CPyPy_main_____reduce___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -char CPyDef_main_____top_level__(void); - -static int exec_6a32f4913d613d6a7ddf__mypyc(PyObject *module) -{ - int res; - PyObject *capsule; - PyObject *tmp; - - extern PyObject *CPyInit_faster_hexbytes(void); - capsule = PyCapsule_New((void *)CPyInit_faster_hexbytes, "6a32f4913d613d6a7ddf__mypyc.init_faster_hexbytes", NULL); - if (!capsule) { - goto fail; - } - res = PyObject_SetAttrString(module, "init_faster_hexbytes", capsule); - Py_DECREF(capsule); - if (res < 0) { - goto fail; - } - - extern PyObject *CPyInit_faster_hexbytes____utils(void); - capsule = PyCapsule_New((void *)CPyInit_faster_hexbytes____utils, "6a32f4913d613d6a7ddf__mypyc.init_faster_hexbytes____utils", NULL); - if (!capsule) { - goto fail; - } - res = PyObject_SetAttrString(module, "init_faster_hexbytes____utils", capsule); - Py_DECREF(capsule); - if (res < 0) { - goto fail; - } - - extern PyObject *CPyInit_faster_hexbytes___main(void); - capsule = PyCapsule_New((void *)CPyInit_faster_hexbytes___main, "6a32f4913d613d6a7ddf__mypyc.init_faster_hexbytes___main", NULL); - if (!capsule) { - goto fail; - } - res = PyObject_SetAttrString(module, "init_faster_hexbytes___main", capsule); - Py_DECREF(capsule); - if (res < 0) { - goto fail; - } - - return 0; - fail: - return -1; -} -static PyModuleDef module_def_6a32f4913d613d6a7ddf__mypyc = { - PyModuleDef_HEAD_INIT, - .m_name = "6a32f4913d613d6a7ddf__mypyc", - .m_doc = NULL, - .m_size = -1, - .m_methods = NULL, -}; -PyMODINIT_FUNC PyInit_6a32f4913d613d6a7ddf__mypyc(void) { - static PyObject *module = NULL; - if (module) { - Py_INCREF(module); - return module; - } - module = PyModule_Create(&module_def_6a32f4913d613d6a7ddf__mypyc); - if (!module) { - return NULL; - } - if (exec_6a32f4913d613d6a7ddf__mypyc(module) < 0) { - Py_DECREF(module); - return NULL; - } - return module; -} diff --git a/build/__native_6a32f4913d613d6a7ddf.h b/build/__native_6a32f4913d613d6a7ddf.h deleted file mode 100644 index d1ad01d..0000000 --- a/build/__native_6a32f4913d613d6a7ddf.h +++ /dev/null @@ -1,72 +0,0 @@ -#ifndef MYPYC_NATIVE_6a32f4913d613d6a7ddf_H -#define MYPYC_NATIVE_6a32f4913d613d6a7ddf_H -#include -#include -#ifndef MYPYC_DECLARED_tuple_T2OO -#define MYPYC_DECLARED_tuple_T2OO -typedef struct tuple_T2OO { - PyObject *f0; - PyObject *f1; -} tuple_T2OO; -#endif - -#ifndef MYPYC_DECLARED_tuple_T3OOO -#define MYPYC_DECLARED_tuple_T3OOO -typedef struct tuple_T3OOO { - PyObject *f0; - PyObject *f1; - PyObject *f2; -} tuple_T3OOO; -#endif - -#ifndef MYPYC_DECLARED_tuple_T2OT2OO -#define MYPYC_DECLARED_tuple_T2OT2OO -typedef struct tuple_T2OT2OO { - PyObject *f0; - tuple_T2OO f1; -} tuple_T2OT2OO; -#endif - -#ifndef MYPYC_DECLARED_tuple_T6OOOOOO -#define MYPYC_DECLARED_tuple_T6OOOOOO -typedef struct tuple_T6OOOOOO { - PyObject *f0; - PyObject *f1; - PyObject *f2; - PyObject *f3; - PyObject *f4; - PyObject *f5; -} tuple_T6OOOOOO; -#endif - -typedef struct { - PyObject_HEAD - CPyVTableItem *vtable; - vectorcallfunc vectorcall; -} faster_hexbytes___main_____new___3_HexBytes_objObject; - -typedef struct { - PyObject_HEAD - CPyVTableItem *vtable; - vectorcallfunc vectorcall; -} faster_hexbytes___main_____getitem___3_HexBytes_objObject; - -typedef struct { - PyObject_HEAD - CPyVTableItem *vtable; - vectorcallfunc vectorcall; -} faster_hexbytes___main_____repr___3_HexBytes_objObject; - -typedef struct { - PyObject_HEAD - CPyVTableItem *vtable; - vectorcallfunc vectorcall; -} faster_hexbytes___main___to_0x_hex_HexBytes_objObject; - -typedef struct { - PyObject_HEAD - CPyVTableItem *vtable; - vectorcallfunc vectorcall; -} faster_hexbytes___main_____reduce___3_HexBytes_objObject; - -#endif diff --git a/build/__native_internal_6a32f4913d613d6a7ddf.h b/build/__native_internal_6a32f4913d613d6a7ddf.h deleted file mode 100644 index 9277403..0000000 --- a/build/__native_internal_6a32f4913d613d6a7ddf.h +++ /dev/null @@ -1,75 +0,0 @@ -#ifndef MYPYC_NATIVE_INTERNAL_6a32f4913d613d6a7ddf_H -#define MYPYC_NATIVE_INTERNAL_6a32f4913d613d6a7ddf_H -#include -#include -#include "__native_6a32f4913d613d6a7ddf.h" - -int CPyGlobalsInit(void); - -extern PyObject *CPyStatics[78]; -extern const char * const CPyLit_Str[]; -extern const char * const CPyLit_Bytes[]; -extern const char * const CPyLit_Int[]; -extern const double CPyLit_Float[]; -extern const double CPyLit_Complex[]; -extern const int CPyLit_Tuple[]; -extern const int CPyLit_FrozenSet[]; -extern CPyModule *CPyModule_faster_hexbytes__internal; -extern CPyModule *CPyModule_faster_hexbytes; -extern PyObject *CPyStatic_faster_hexbytes___globals; -extern CPyModule *CPyModule_builtins; -extern CPyModule *CPyModule_importlib___metadata; -extern CPyModule *CPyModule_faster_hexbytes___main__internal; -extern CPyModule *CPyModule_faster_hexbytes___main; -extern CPyModule *CPyModule_faster_hexbytes____utils__internal; -extern CPyModule *CPyModule_faster_hexbytes____utils; -extern PyObject *CPyStatic__utils___globals; -extern CPyModule *CPyModule_binascii; -extern CPyModule *CPyModule_typing; -extern PyObject *CPyStatic_main___globals; -extern CPyModule *CPyModule_mypy_extensions; -extern CPyModule *CPyModule_typing_extensions; -extern char CPyDef_faster_hexbytes_____top_level__(void); -extern PyObject *CPyDef__utils___to_bytes(PyObject *cpy_r_val); -extern PyObject *CPyPy__utils___to_bytes(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -extern PyObject *CPyDef__utils___hexstr_to_bytes(PyObject *cpy_r_hexstr); -extern PyObject *CPyPy__utils___hexstr_to_bytes(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -extern char CPyDef__utils_____top_level__(void); -extern PyTypeObject *CPyType_main___HexBytes; -extern PyTypeObject *CPyType_main_____new___3_HexBytes_obj; -extern PyObject *CPyDef_main_____new___3_HexBytes_obj(void); -extern CPyThreadLocal faster_hexbytes___main_____new___3_HexBytes_objObject *main_____new___3_HexBytes_obj_free_instance; -extern PyTypeObject *CPyType_main_____getitem___3_HexBytes_obj; -extern PyObject *CPyDef_main_____getitem___3_HexBytes_obj(void); -extern CPyThreadLocal faster_hexbytes___main_____getitem___3_HexBytes_objObject *main_____getitem___3_HexBytes_obj_free_instance; -extern PyTypeObject *CPyType_main_____repr___3_HexBytes_obj; -extern PyObject *CPyDef_main_____repr___3_HexBytes_obj(void); -extern CPyThreadLocal faster_hexbytes___main_____repr___3_HexBytes_objObject *main_____repr___3_HexBytes_obj_free_instance; -extern PyTypeObject *CPyType_main___to_0x_hex_HexBytes_obj; -extern PyObject *CPyDef_main___to_0x_hex_HexBytes_obj(void); -extern CPyThreadLocal faster_hexbytes___main___to_0x_hex_HexBytes_objObject *main___to_0x_hex_HexBytes_obj_free_instance; -extern PyTypeObject *CPyType_main_____reduce___3_HexBytes_obj; -extern PyObject *CPyDef_main_____reduce___3_HexBytes_obj(void); -extern CPyThreadLocal faster_hexbytes___main_____reduce___3_HexBytes_objObject *main_____reduce___3_HexBytes_obj_free_instance; -extern PyObject *CPyDef_main_____new___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); -extern PyObject *CPyPy_main_____new___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -extern PyObject *CPyDef_main_____new___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_cls, PyObject *cpy_r_val); -extern PyObject *CPyPy_main_____new___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -extern PyObject *CPyDef_main_____getitem___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); -extern PyObject *CPyPy_main_____getitem___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -extern PyObject *CPyDef_main_____getitem___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self, PyObject *cpy_r_key); -extern PyObject *CPyPy_main_____getitem___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -extern PyObject *CPyDef_main_____repr___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); -extern PyObject *CPyPy_main_____repr___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -extern PyObject *CPyDef_main_____repr___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self); -extern PyObject *CPyPy_main_____repr___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -extern PyObject *CPyDef_main___to_0x_hex_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); -extern PyObject *CPyPy_main___to_0x_hex_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -extern PyObject *CPyDef_main___to_0x_hex_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self); -extern PyObject *CPyPy_main___to_0x_hex_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -extern PyObject *CPyDef_main_____reduce___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); -extern PyObject *CPyPy_main_____reduce___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -extern tuple_T2OT2OO CPyDef_main_____reduce___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self); -extern PyObject *CPyPy_main_____reduce___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -extern char CPyDef_main_____top_level__(void); -#endif diff --git a/build/faster_hexbytes.c b/build/faster_hexbytes.c deleted file mode 100644 index c09d246..0000000 --- a/build/faster_hexbytes.c +++ /dev/null @@ -1,21 +0,0 @@ -#include - -PyMODINIT_FUNC -PyInit_faster_hexbytes(void) -{ - PyObject *tmp; - if (!(tmp = PyImport_ImportModule("6a32f4913d613d6a7ddf__mypyc"))) return NULL; - PyObject *capsule = PyObject_GetAttrString(tmp, "init_faster_hexbytes"); - Py_DECREF(tmp); - if (capsule == NULL) return NULL; - void *init_func = PyCapsule_GetPointer(capsule, "6a32f4913d613d6a7ddf__mypyc.init_faster_hexbytes"); - Py_DECREF(capsule); - if (!init_func) { - return NULL; - } - return ((PyObject *(*)(void))init_func)(); -} - -// distutils sometimes spuriously tells cl to export CPyInit___init__, -// so provide that so it chills out -PyMODINIT_FUNC PyInit___init__(void) { return PyInit_faster_hexbytes(); } diff --git a/build/faster_hexbytes/_utils.c b/build/faster_hexbytes/_utils.c deleted file mode 100644 index d9858f5..0000000 --- a/build/faster_hexbytes/_utils.c +++ /dev/null @@ -1,21 +0,0 @@ -#include - -PyMODINIT_FUNC -PyInit__utils(void) -{ - PyObject *tmp; - if (!(tmp = PyImport_ImportModule("6a32f4913d613d6a7ddf__mypyc"))) return NULL; - PyObject *capsule = PyObject_GetAttrString(tmp, "init_faster_hexbytes____utils"); - Py_DECREF(tmp); - if (capsule == NULL) return NULL; - void *init_func = PyCapsule_GetPointer(capsule, "6a32f4913d613d6a7ddf__mypyc.init_faster_hexbytes____utils"); - Py_DECREF(capsule); - if (!init_func) { - return NULL; - } - return ((PyObject *(*)(void))init_func)(); -} - -// distutils sometimes spuriously tells cl to export CPyInit___init__, -// so provide that so it chills out -PyMODINIT_FUNC PyInit___init__(void) { return PyInit__utils(); } diff --git a/build/faster_hexbytes/main.c b/build/faster_hexbytes/main.c deleted file mode 100644 index 12ae3ec..0000000 --- a/build/faster_hexbytes/main.c +++ /dev/null @@ -1,21 +0,0 @@ -#include - -PyMODINIT_FUNC -PyInit_main(void) -{ - PyObject *tmp; - if (!(tmp = PyImport_ImportModule("6a32f4913d613d6a7ddf__mypyc"))) return NULL; - PyObject *capsule = PyObject_GetAttrString(tmp, "init_faster_hexbytes___main"); - Py_DECREF(tmp); - if (capsule == NULL) return NULL; - void *init_func = PyCapsule_GetPointer(capsule, "6a32f4913d613d6a7ddf__mypyc.init_faster_hexbytes___main"); - Py_DECREF(capsule); - if (!init_func) { - return NULL; - } - return ((PyObject *(*)(void))init_func)(); -} - -// distutils sometimes spuriously tells cl to export CPyInit___init__, -// so provide that so it chills out -PyMODINIT_FUNC PyInit___init__(void) { return PyInit_main(); } diff --git a/build/ops.txt b/build/ops.txt deleted file mode 100644 index 88781dd..0000000 --- a/build/ops.txt +++ /dev/null @@ -1,1375 +0,0 @@ -def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __new___HexBytes_obj.__call__(__mypyc_self__, cls, val): - __mypyc_self__ :: faster_hexbytes.main.__new___HexBytes_obj - cls :: object - val :: union[bool, object, bytes, int, str] - r0 :: bytes - r1 :: object - r2 :: str - r3 :: object[3] - r4 :: object_ptr - r5 :: object - r6, r7 :: faster_hexbytes.main.HexBytes -L0: - r0 = to_bytes(val) - if is_error(r0) goto L4 (error at __new__:42) else goto L1 -L1: - r1 = load_address PyBytes_Type - r2 = '__new__' - r3 = [r1, cls, r0] - r4 = load_address r3 - r5 = PyObject_VectorcallMethod(r2, r4, 9223372036854775811, 0) - if is_error(r5) goto L5 (error at __new__:43) else goto L2 -L2: - dec_ref r0 - r6 = cast(faster_hexbytes.main.HexBytes, r5) - if is_error(r6) goto L4 (error at __new__:43) else goto L3 -L3: - return r6 -L4: - r7 = :: faster_hexbytes.main.HexBytes - return r7 -L5: - dec_ref r0 - goto L4 - -def __getitem___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __getitem___HexBytes_obj.__call__(__mypyc_self__, self, key): - __mypyc_self__ :: faster_hexbytes.main.__getitem___HexBytes_obj - self :: faster_hexbytes.main.HexBytes - key, r0 :: object - r1 :: str - r2, r3 :: object - r4 :: object[2] - r5 :: object_ptr - r6 :: object - r7 :: str - r8 :: object - r9 :: object[1] - r10 :: object_ptr - r11 :: object - r12 :: union[int, bytes] - r13 :: str - r14 :: bool - r15 :: object - r16 :: object[1] - r17 :: object_ptr - r18 :: object - r19 :: faster_hexbytes.main.HexBytes - r20 :: int - r21 :: object - r22 :: union[int, bytes, faster_hexbytes.main.HexBytes] -L0: - r0 = builtins :: module - r1 = 'super' - r2 = CPyObject_GetAttr(r0, r1) - if is_error(r2) goto L11 (error at __getitem__:56) else goto L1 -L1: - r3 = faster_hexbytes.main.HexBytes :: type - r4 = [r3, self] - r5 = load_address r4 - r6 = PyObject_Vectorcall(r2, r5, 2, 0) - dec_ref r2 - if is_error(r6) goto L11 (error at __getitem__:56) else goto L2 -L2: - r7 = '__getitem__' - r8 = CPyObject_GetAttr(r6, r7) - dec_ref r6 - if is_error(r8) goto L11 (error at __getitem__:56) else goto L3 -L3: - r9 = [key] - r10 = load_address r9 - r11 = PyObject_Vectorcall(r8, r10, 1, 0) - dec_ref r8 - if is_error(r11) goto L11 (error at __getitem__:56) else goto L4 -L4: - r12 = cast(union[int, bytes], r11) - if is_error(r12) goto L11 (error at __getitem__:56) else goto L5 -L5: - r13 = 'hex' - r14 = PyObject_HasAttr(r12, r13) - if r14 goto L6 else goto L9 :: bool -L6: - r15 = CPy_TYPE(self) - r16 = [r12] - r17 = load_address r16 - r18 = PyObject_Vectorcall(r15, r17, 1, 0) - dec_ref r15 - if is_error(r18) goto L12 (error at __getitem__:58) else goto L7 -L7: - dec_ref r12 - r19 = cast(faster_hexbytes.main.HexBytes, r18) - if is_error(r19) goto L11 (error at __getitem__:58) else goto L8 -L8: - return r19 -L9: - r20 = unbox(int, r12) - dec_ref r12 - if is_error(r20) goto L11 (error at __getitem__:60) else goto L10 -L10: - r21 = box(int, r20) - return r21 -L11: - r22 = :: union[int, bytes, faster_hexbytes.main.HexBytes] - return r22 -L12: - dec_ref r12 - goto L11 - -def __repr___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __repr___HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.__repr___HexBytes_obj - self :: faster_hexbytes.main.HexBytes - r0, r1, r2, r3, r4 :: str - r5 :: object[1] - r6 :: object_ptr - r7 :: object - r8, r9, r10, r11 :: str - r12 :: object[3] - r13 :: object_ptr - r14 :: object - r15, r16 :: str - r17 :: list - r18, r19, r20, r21 :: ptr - r22, r23 :: str -L0: - r0 = '' - r1 = 'HexBytes(' - r2 = '{!r:{}}' - r3 = '0x' - r4 = 'hex' - r5 = [self] - r6 = load_address r5 - r7 = PyObject_VectorcallMethod(r4, r6, 9223372036854775809, 0) - if is_error(r7) goto L8 (error at __repr__:63) else goto L1 -L1: - r8 = cast(str, r7) - if is_error(r8) goto L8 (error at __repr__:63) else goto L2 -L2: - r9 = PyUnicode_Concat(r3, r8) - dec_ref r8 - if is_error(r9) goto L8 (error at __repr__:63) else goto L3 -L3: - r10 = '' - r11 = 'format' - r12 = [r2, r9, r10] - r13 = load_address r12 - r14 = PyObject_VectorcallMethod(r11, r13, 9223372036854775811, 0) - if is_error(r14) goto L9 (error at __repr__:63) else goto L4 -L4: - dec_ref r9 - r15 = cast(str, r14) - if is_error(r15) goto L8 (error at __repr__:63) else goto L5 -L5: - r16 = ')' - r17 = PyList_New(3) - if is_error(r17) goto L10 (error at __repr__:63) else goto L6 -L6: - r18 = get_element_ptr r17 ob_item :: PyListObject - r19 = load_mem r18 :: ptr* - inc_ref r1 - set_mem r19, r1 :: builtins.object* - r20 = r19 + 8 - set_mem r20, r15 :: builtins.object* - inc_ref r16 - r21 = r19 + 16 - set_mem r21, r16 :: builtins.object* - r22 = PyUnicode_Join(r0, r17) - dec_ref r17 - if is_error(r22) goto L8 (error at __repr__:63) else goto L7 -L7: - return r22 -L8: - r23 = :: str - return r23 -L9: - dec_ref r9 - goto L8 -L10: - dec_ref r15 - goto L8 - -def to_0x_hex_HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def to_0x_hex_HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.to_0x_hex_HexBytes_obj - self :: faster_hexbytes.main.HexBytes - r0, r1 :: str - r2 :: object[1] - r3 :: object_ptr - r4 :: object - r5, r6, r7 :: str -L0: - r0 = '0x' - r1 = 'hex' - r2 = [self] - r3 = load_address r2 - r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775809, 0) - if is_error(r4) goto L4 (error at to_0x_hex:69) else goto L1 -L1: - r5 = cast(str, r4) - if is_error(r5) goto L4 (error at to_0x_hex:69) else goto L2 -L2: - r6 = PyUnicode_Concat(r0, r5) - dec_ref r5 - if is_error(r6) goto L4 (error at to_0x_hex:69) else goto L3 -L3: - return r6 -L4: - r7 = :: str - return r7 - -def __reduce___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __reduce___HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.__reduce___HexBytes_obj - self :: faster_hexbytes.main.HexBytes - r0 :: object - r1 :: str - r2, r3, r4 :: object - r5 :: object[1] - r6 :: object_ptr - r7 :: object - r8 :: bytes - r9 :: tuple[object, bytes] - r10, r11 :: tuple[object, tuple[object, bytes]] -L0: - r0 = load_address PyBytes_Type - r1 = '__new__' - r2 = CPyObject_GetAttr(r0, r1) - if is_error(r2) goto L4 (error at __reduce__:79) else goto L1 -L1: - r3 = CPy_TYPE(self) - r4 = load_address PyBytes_Type - r5 = [self] - r6 = load_address r5 - r7 = PyObject_Vectorcall(r4, r6, 1, 0) - if is_error(r7) goto L5 (error at __reduce__:79) else goto L2 -L2: - r8 = cast(bytes, r7) - if is_error(r8) goto L5 (error at __reduce__:79) else goto L3 -L3: - r9 = (r3, r8) - r10 = (r2, r9) - return r10 -L4: - r11 = :: tuple[object, tuple[object, bytes]] - return r11 -L5: - dec_ref r2 - dec_ref r3 - goto L4 - -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4, r5 :: object - r6 :: str - r7 :: dict - r8, r9 :: object - r10 :: str - r11 :: dict - r12, r13 :: object - r14 :: str - r15 :: dict - r16, r17 :: object - r18 :: str - r19 :: dict - r20 :: object - r21 :: dict - r22 :: str - r23, r24, r25 :: object - r26 :: str - r27, r28, r29, r30, r31 :: object - r32 :: str - r33 :: object - r34 :: tuple[object, object, object, object, object, object] - r35, r36 :: object - r37 :: dict - r38 :: str - r39 :: i32 - r40 :: bit - r41 :: object - r42 :: str - r43 :: object - r44 :: tuple - r45, r46 :: object - r47 :: str - r48 :: bool - r49, r50 :: str - r51 :: object - r52 :: object[2] - r53 :: object_ptr - r54 :: object - r55, r56, r57, r58 :: dict - r59 :: faster_hexbytes.main.__new___HexBytes_obj - r60 :: object - r61 :: str - r62 :: object - r63 :: object[1] - r64 :: object_ptr - r65 :: object - r66 :: str - r67 :: i32 - r68 :: bit - r69 :: faster_hexbytes.main.__getitem___HexBytes_obj - r70 :: str - r71 :: i32 - r72 :: bit - r73 :: faster_hexbytes.main.__repr___HexBytes_obj - r74 :: str - r75 :: i32 - r76 :: bit - r77 :: faster_hexbytes.main.to_0x_hex_HexBytes_obj - r78 :: str - r79 :: i32 - r80 :: bit - r81 :: faster_hexbytes.main.__reduce___HexBytes_obj - r82 :: str - r83 :: i32 - r84 :: bit - r85, r86 :: str - r87 :: i32 - r88 :: bit - r89, r90 :: str - r91 :: i32 - r92 :: bit - r93, r94 :: str - r95 :: i32 - r96 :: bit - r97 :: object[3] - r98 :: object_ptr - r99 :: object - r100 :: dict - r101 :: str - r102, r103 :: object - r104 :: object[1] - r105 :: object_ptr - r106, r107 :: object - r108 :: object[1] - r109 :: object_ptr - r110 :: object - r111 :: dict - r112 :: str - r113 :: i32 - r114 :: bit - r115 :: object - r116 :: None -L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool -L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L45 (error at :-1) else goto L2 -L2: - builtins = r4 :: module - dec_ref r4 -L3: - r5 = ('TYPE_CHECKING', 'Callable', 'Tuple', 'Type', 'Union', 'overload') - r6 = 'typing' - r7 = faster_hexbytes.main.globals :: static - r8 = CPyImport_ImportFromMany(r6, r5, r5, r7) - if is_error(r8) goto L45 (error at :1) else goto L4 -L4: - typing = r8 :: module - dec_ref r8 - r9 = ('mypyc_attr',) - r10 = 'mypy_extensions' - r11 = faster_hexbytes.main.globals :: static - r12 = CPyImport_ImportFromMany(r10, r9, r9, r11) - if is_error(r12) goto L45 (error at :10) else goto L5 -L5: - mypy_extensions = r12 :: module - dec_ref r12 - r13 = ('Self',) - r14 = 'typing_extensions' - r15 = faster_hexbytes.main.globals :: static - r16 = CPyImport_ImportFromMany(r14, r13, r13, r15) - if is_error(r16) goto L45 (error at :13) else goto L6 -L6: - typing_extensions = r16 :: module - dec_ref r16 - r17 = ('to_bytes',) - r18 = 'faster_hexbytes._utils' - r19 = faster_hexbytes.main.globals :: static - r20 = CPyImport_ImportFromMany(r18, r17, r17, r19) - if is_error(r20) goto L45 (error at :17) else goto L7 -L7: - faster_hexbytes._utils = r20 :: module - dec_ref r20 - if 0 goto L8 else goto L8 :: bool -L8: - r21 = faster_hexbytes.main.globals :: static - r22 = 'Union' - r23 = CPyDict_GetItem(r21, r22) - if is_error(r23) goto L45 (error at :26) else goto L9 -L9: - r24 = load_address PyBool_Type - r25 = builtins :: module - r26 = 'bytearray' - r27 = CPyObject_GetAttr(r25, r26) - if is_error(r27) goto L46 (error at :26) else goto L10 -L10: - r28 = load_address PyBytes_Type - r29 = load_address PyLong_Type - r30 = load_address PyUnicode_Type - r31 = builtins :: module - r32 = 'memoryview' - r33 = CPyObject_GetAttr(r31, r32) - if is_error(r33) goto L47 (error at :26) else goto L11 -L11: - inc_ref r24 - inc_ref r28 - inc_ref r29 - inc_ref r30 - r34 = (r24, r27, r28, r29, r30, r33) - r35 = box(tuple[object, object, object, object, object, object], r34) - r36 = PyObject_GetItem(r23, r35) - dec_ref r23 - dec_ref r35 - if is_error(r36) goto L45 (error at :26) else goto L12 -L12: - r37 = faster_hexbytes.main.globals :: static - r38 = 'BytesLike' - r39 = CPyDict_SetItem(r37, r38, r36) - dec_ref r36 - r40 = r39 >= 0 :: signed - if not r40 goto L45 (error at :26) else goto L13 :: bool -L13: - r41 = builtins :: module - r42 = 'bytes' - r43 = CPyObject_GetAttr(r41, r42) - if is_error(r43) goto L45 (error at :30) else goto L14 -L14: - r44 = PyTuple_Pack(1, r43) - dec_ref r43 - if is_error(r44) goto L45 (error at :30) else goto L15 -L15: - r45 = load_address PyType_Type - r46 = CPy_CalculateMetaclass(r45, r44) - if is_error(r46) goto L48 (error at :30) else goto L16 -L16: - r47 = '__prepare__' - r48 = PyObject_HasAttr(r46, r47) - if r48 goto L17 else goto L21 :: bool -L17: - r49 = 'HexBytes' - r50 = '__prepare__' - r51 = CPyObject_GetAttr(r46, r50) - if is_error(r51) goto L48 (error at :30) else goto L18 -L18: - r52 = [r49, r44] - r53 = load_address r52 - r54 = PyObject_Vectorcall(r51, r53, 2, 0) - dec_ref r51 - if is_error(r54) goto L48 (error at :30) else goto L19 -L19: - r55 = cast(dict, r54) - if is_error(r55) goto L48 (error at :30) else goto L20 -L20: - r56 = r55 - goto L23 -L21: - r57 = PyDict_New() - if is_error(r57) goto L48 (error at :30) else goto L22 -L22: - r56 = r57 -L23: - r58 = PyDict_New() - if is_error(r58) goto L49 (error at :30) else goto L24 -L24: - r59 = __new___HexBytes_obj() - if is_error(r59) goto L50 (error at :41) else goto L25 -L25: - r60 = builtins :: module - r61 = 'staticmethod' - r62 = CPyObject_GetAttr(r60, r61) - if is_error(r62) goto L51 (error at :41) else goto L26 -L26: - r63 = [r59] - r64 = load_address r63 - r65 = PyObject_Vectorcall(r62, r64, 1, 0) - dec_ref r62 - if is_error(r65) goto L51 (error at :41) else goto L27 -L27: - dec_ref r59 - r66 = '__new__' - r67 = CPyDict_SetItem(r56, r66, r65) - dec_ref r65 - r68 = r67 >= 0 :: signed - if not r68 goto L50 (error at :41) else goto L28 :: bool -L28: - r69 = __getitem___HexBytes_obj() - if is_error(r69) goto L50 (error at :53) else goto L29 -L29: - r70 = '__getitem__' - r71 = CPyDict_SetItem(r56, r70, r69) - dec_ref r69 - r72 = r71 >= 0 :: signed - if not r72 goto L50 (error at :53) else goto L30 :: bool -L30: - r73 = __repr___HexBytes_obj() - if is_error(r73) goto L50 (error at :62) else goto L31 -L31: - r74 = '__repr__' - r75 = CPyDict_SetItem(r56, r74, r73) - dec_ref r73 - r76 = r75 >= 0 :: signed - if not r76 goto L50 (error at :62) else goto L32 :: bool -L32: - r77 = to_0x_hex_HexBytes_obj() - if is_error(r77) goto L50 (error at :65) else goto L33 -L33: - r78 = 'to_0x_hex' - r79 = CPyDict_SetItem(r56, r78, r77) - dec_ref r77 - r80 = r79 >= 0 :: signed - if not r80 goto L50 (error at :65) else goto L34 :: bool -L34: - r81 = __reduce___HexBytes_obj() - if is_error(r81) goto L50 (error at :71) else goto L35 -L35: - r82 = '__reduce__' - r83 = CPyDict_SetItem(r56, r82, r81) - dec_ref r81 - r84 = r83 >= 0 :: signed - if not r84 goto L50 (error at :71) else goto L36 :: bool -L36: - r85 = 'HexBytes' - r86 = '__annotations__' - r87 = CPyDict_SetItem(r56, r86, r58) - dec_ref r58 - r88 = r87 >= 0 :: signed - if not r88 goto L49 (error at :30) else goto L37 :: bool -L37: - r89 = 'mypyc filler docstring' - r90 = '__doc__' - r91 = CPyDict_SetItem(r56, r90, r89) - r92 = r91 >= 0 :: signed - if not r92 goto L49 (error at :30) else goto L38 :: bool -L38: - r93 = 'faster_hexbytes.main' - r94 = '__module__' - r95 = CPyDict_SetItem(r56, r94, r93) - r96 = r95 >= 0 :: signed - if not r96 goto L49 (error at :30) else goto L39 :: bool -L39: - r97 = [r85, r44, r56] - r98 = load_address r97 - r99 = PyObject_Vectorcall(r46, r98, 3, 0) - if is_error(r99) goto L49 (error at :30) else goto L40 -L40: - dec_ref r56 - dec_ref r44 - r100 = faster_hexbytes.main.globals :: static - r101 = 'mypyc_attr' - r102 = CPyDict_GetItem(r100, r101) - if is_error(r102) goto L52 (error at :29) else goto L41 -L41: - r103 = box(bool, 0) - r104 = [r103] - r105 = load_address r104 - r106 = ('native_class',) - r107 = PyObject_Vectorcall(r102, r105, 0, r106) - dec_ref r102 - if is_error(r107) goto L52 (error at :29) else goto L42 -L42: - r108 = [r99] - r109 = load_address r108 - r110 = PyObject_Vectorcall(r107, r109, 1, 0) - dec_ref r107 - if is_error(r110) goto L52 (error at :30) else goto L43 -L43: - dec_ref r99 - faster_hexbytes.main.HexBytes = r110 :: type - r111 = faster_hexbytes.main.globals :: static - r112 = 'HexBytes' - r113 = PyDict_SetItem(r111, r112, r110) - dec_ref r110 - r114 = r113 >= 0 :: signed - if not r114 goto L45 (error at :30) else goto L44 :: bool -L44: - r115 = faster_hexbytes.main.HexBytes :: type - return 1 -L45: - r116 = :: None - return r116 -L46: - dec_ref r23 - goto L45 -L47: - dec_ref r23 - dec_ref r27 - goto L45 -L48: - dec_ref r44 - goto L45 -L49: - dec_ref r44 - dec_ref r56 - goto L45 -L50: - dec_ref r44 - dec_ref r56 - dec_ref r58 - goto L45 -L51: - dec_ref r44 - dec_ref r56 - dec_ref r58 - dec_ref r59 - goto L45 -L52: - dec_ref r99 - goto L45 - -def to_bytes(val): - val :: union[bool, object, bytes, int, str] - r0 :: bit - r1 :: bytes - r2 :: bit - r3 :: str - r4 :: bytes - r5 :: bit - r6 :: object - r7 :: object[1] - r8 :: object_ptr - r9 :: object - r10 :: bytes - r11 :: bit - r12 :: bool - r13, r14, r15 :: bytes - r16 :: bit - r17 :: int - r18 :: native_int - r19 :: bit - r20 :: native_int - r21, r22 :: bit - r23 :: bool - r24 :: bit - r25 :: str - r26 :: int - r27, r28, r29 :: str - r30 :: object - r31 :: str - r32 :: object - r33 :: object[1] - r34 :: object_ptr - r35 :: object - r36 :: int - r37 :: object - r38 :: str - r39, r40 :: object - r41 :: object[1] - r42 :: object_ptr - r43 :: object - r44 :: str - r45 :: bytes - r46 :: object - r47 :: str - r48 :: object - r49 :: i32 - r50 :: bit - r51 :: bool - r52 :: object - r53 :: object[1] - r54 :: object_ptr - r55 :: object - r56 :: bytes - r57, r58, r59, r60, r61 :: str - r62 :: object[3] - r63 :: object_ptr - r64 :: object - r65, r66 :: str - r67 :: object - r68, r69 :: str - r70 :: object[3] - r71 :: object_ptr - r72 :: object - r73 :: str - r74 :: list - r75, r76, r77, r78, r79, r80 :: ptr - r81 :: str - r82 :: object - r83 :: str - r84 :: object - r85 :: object[1] - r86 :: object_ptr - r87 :: object - r88 :: bytes -L0: - r0 = PyBytes_Check(val) - if r0 goto L1 else goto L3 :: bool -L1: - inc_ref val - r1 = cast(bytes, val) - if is_error(r1) goto L51 (error at to_bytes:15) else goto L2 -L2: - return r1 -L3: - r2 = PyUnicode_Check(val) - if r2 goto L4 else goto L7 :: bool -L4: - inc_ref val - r3 = cast(str, val) - if is_error(r3) goto L51 (error at to_bytes:17) else goto L5 -L5: - r4 = hexstr_to_bytes(r3) - dec_ref r3 - if is_error(r4) goto L51 (error at to_bytes:17) else goto L6 -L6: - return r4 -L7: - r5 = PyByteArray_Check(val) - if r5 goto L8 else goto L11 :: bool -L8: - r6 = load_address PyBytes_Type - r7 = [val] - r8 = load_address r7 - r9 = PyObject_Vectorcall(r6, r8, 1, 0) - if is_error(r9) goto L51 (error at to_bytes:19) else goto L9 -L9: - r10 = cast(bytes, r9) - if is_error(r10) goto L51 (error at to_bytes:19) else goto L10 -L10: - return r10 -L11: - r11 = PyBool_Check(val) - if r11 goto L12 else goto L17 :: bool -L12: - r12 = unbox(bool, val) - if is_error(r12) goto L51 (error at to_bytes:21) else goto L13 -L13: - if r12 goto L14 else goto L15 :: bool -L14: - r13 = b'\x01' - inc_ref r13 - r14 = r13 - goto L16 -L15: - r15 = b'\x00' - inc_ref r15 - r14 = r15 -L16: - return r14 -L17: - r16 = PyLong_Check(val) - if r16 goto L18 else goto L37 :: bool -L18: - r17 = unbox(int, val) - if is_error(r17) goto L51 (error at to_bytes:25) else goto L19 -L19: - r18 = r17 & 1 - r19 = r18 != 0 - if r19 goto L21 else goto L20 :: bool -L20: - r20 = 0 & 1 - r21 = r20 != 0 - if r21 goto L21 else goto L22 :: bool -L21: - r22 = CPyTagged_IsLt_(r17, 0) - r23 = r22 - goto L23 -L22: - r24 = r17 < 0 :: signed - r23 = r24 -L23: - dec_ref r17 :: int - if r23 goto L24 else goto L31 :: bool -L24: - r25 = 'Cannot convert negative integer ' - r26 = unbox(int, val) - if is_error(r26) goto L51 (error at to_bytes:26) else goto L25 -L25: - r27 = CPyTagged_Str(r26) - dec_ref r26 :: int - if is_error(r27) goto L51 (error at to_bytes:26) else goto L26 -L26: - r28 = ' to bytes' - r29 = CPyStr_Build(3, r25, r27, r28) - dec_ref r27 - if is_error(r29) goto L51 (error at to_bytes:26) else goto L27 -L27: - r30 = builtins :: module - r31 = 'ValueError' - r32 = CPyObject_GetAttr(r30, r31) - if is_error(r32) goto L52 (error at to_bytes:26) else goto L28 -L28: - r33 = [r29] - r34 = load_address r33 - r35 = PyObject_Vectorcall(r32, r34, 1, 0) - dec_ref r32 - if is_error(r35) goto L52 (error at to_bytes:26) else goto L29 -L29: - dec_ref r29 - CPy_Raise(r35) - dec_ref r35 - if not 0 goto L51 (error at to_bytes:26) else goto L30 :: bool -L30: - unreachable -L31: - r36 = unbox(int, val) - if is_error(r36) goto L51 (error at to_bytes:28) else goto L32 -L32: - r37 = builtins :: module - r38 = 'hex' - r39 = CPyObject_GetAttr(r37, r38) - if is_error(r39) goto L53 (error at to_bytes:28) else goto L33 -L33: - r40 = box(int, r36) - r41 = [r40] - r42 = load_address r41 - r43 = PyObject_Vectorcall(r39, r42, 1, 0) - dec_ref r39 - if is_error(r43) goto L54 (error at to_bytes:28) else goto L34 -L34: - dec_ref r40 - r44 = cast(str, r43) - if is_error(r44) goto L51 (error at to_bytes:28) else goto L35 -L35: - r45 = to_bytes(r44) - dec_ref r44 - if is_error(r45) goto L51 (error at to_bytes:28) else goto L36 -L36: - return r45 -L37: - r46 = builtins :: module - r47 = 'memoryview' - r48 = CPyObject_GetAttr(r46, r47) - if is_error(r48) goto L51 (error at to_bytes:29) else goto L38 -L38: - r49 = PyObject_IsInstance(val, r48) - dec_ref r48 - r50 = r49 >= 0 :: signed - if not r50 goto L51 (error at to_bytes:29) else goto L39 :: bool -L39: - r51 = truncate r49: i32 to builtins.bool - if r51 goto L40 else goto L43 :: bool -L40: - r52 = load_address PyBytes_Type - r53 = [val] - r54 = load_address r53 - r55 = PyObject_Vectorcall(r52, r54, 1, 0) - if is_error(r55) goto L51 (error at to_bytes:30) else goto L41 -L41: - r56 = cast(bytes, r55) - if is_error(r56) goto L51 (error at to_bytes:30) else goto L42 -L42: - return r56 -L43: - r57 = '' - r58 = 'Cannot convert ' - r59 = '{!r:{}}' - r60 = '' - r61 = 'format' - r62 = [r59, val, r60] - r63 = load_address r62 - r64 = PyObject_VectorcallMethod(r61, r63, 9223372036854775811, 0) - if is_error(r64) goto L51 (error at to_bytes:32) else goto L44 -L44: - r65 = ' of type ' - r66 = '{:{}}' - r67 = CPy_TYPE(val) - r68 = '' - r69 = 'format' - r70 = [r66, r67, r68] - r71 = load_address r70 - r72 = PyObject_VectorcallMethod(r69, r71, 9223372036854775811, 0) - if is_error(r72) goto L55 (error at to_bytes:32) else goto L45 -L45: - dec_ref r67 - r73 = ' to bytes' - r74 = PyList_New(5) - if is_error(r74) goto L56 (error at to_bytes:32) else goto L46 -L46: - r75 = get_element_ptr r74 ob_item :: PyListObject - r76 = load_mem r75 :: ptr* - inc_ref r58 - set_mem r76, r58 :: builtins.object* - r77 = r76 + 8 - set_mem r77, r64 :: builtins.object* - inc_ref r65 - r78 = r76 + 16 - set_mem r78, r65 :: builtins.object* - r79 = r76 + 24 - set_mem r79, r72 :: builtins.object* - inc_ref r73 - r80 = r76 + 32 - set_mem r80, r73 :: builtins.object* - r81 = PyUnicode_Join(r57, r74) - dec_ref r74 - if is_error(r81) goto L51 (error at to_bytes:32) else goto L47 -L47: - r82 = builtins :: module - r83 = 'TypeError' - r84 = CPyObject_GetAttr(r82, r83) - if is_error(r84) goto L57 (error at to_bytes:32) else goto L48 -L48: - r85 = [r81] - r86 = load_address r85 - r87 = PyObject_Vectorcall(r84, r86, 1, 0) - dec_ref r84 - if is_error(r87) goto L57 (error at to_bytes:32) else goto L49 -L49: - dec_ref r81 - CPy_Raise(r87) - dec_ref r87 - if not 0 goto L51 (error at to_bytes:32) else goto L50 :: bool -L50: - unreachable -L51: - r88 = :: bytes - return r88 -L52: - dec_ref r29 - goto L51 -L53: - dec_ref r36 :: int - goto L51 -L54: - dec_ref r40 - goto L51 -L55: - dec_ref r64 - dec_ref r67 - goto L51 -L56: - dec_ref r64 - dec_ref r72 - goto L51 -L57: - dec_ref r81 - goto L51 - -def hexstr_to_bytes(hexstr): - hexstr, r0, r1 :: str - r2 :: tuple[str, str] - r3 :: object - r4 :: bool - r5 :: object - r6, non_prefixed_hex :: str - r7 :: native_int - r8 :: bit - r9 :: short_int - r10 :: int - r11 :: bit - r12, r13, padded_hex :: str - r14 :: bytes - r15 :: tuple[object, object, object] - r16 :: object - r17 :: str - r18 :: object - r19 :: bit - r20, r21, r22 :: str - r23 :: object - r24 :: str - r25 :: object - r26 :: object[1] - r27 :: object_ptr - r28 :: object - r29 :: bit - r30 :: object - r31 :: str - r32 :: object - r33 :: object[1] - r34 :: object_ptr - r35 :: object - r36, r37 :: bytes -L0: - r0 = '0x' - r1 = '0X' - inc_ref r0 - inc_ref r1 - r2 = (r0, r1) - r3 = box(tuple[str, str], r2) - r4 = CPyStr_Startswith(hexstr, r3) - dec_ref r3 - if is_error(r4) goto L29 (error at hexstr_to_bytes:36) else goto L1 -L1: - if r4 goto L2 else goto L5 :: bool -L2: - r5 = CPyStr_GetSlice(hexstr, 4, 9223372036854775806) - if is_error(r5) goto L29 (error at hexstr_to_bytes:37) else goto L3 -L3: - r6 = cast(str, r5) - if is_error(r6) goto L29 (error at hexstr_to_bytes:37) else goto L4 -L4: - non_prefixed_hex = r6 - goto L6 -L5: - inc_ref hexstr - non_prefixed_hex = hexstr -L6: - r7 = CPyStr_Size_size_t(hexstr) - r8 = r7 >= 0 :: signed - if not r8 goto L30 (error at hexstr_to_bytes:42) else goto L7 :: bool -L7: - r9 = r7 << 1 - r10 = CPyTagged_Remainder(r9, 4) - if is_error(r10) goto L30 (error at hexstr_to_bytes:42) else goto L8 -L8: - r11 = r10 != 0 - dec_ref r10 :: int - if r11 goto L9 else goto L11 :: bool -L9: - r12 = '0' - r13 = PyUnicode_Concat(r12, non_prefixed_hex) - dec_ref non_prefixed_hex - if is_error(r13) goto L29 (error at hexstr_to_bytes:43) else goto L10 -L10: - padded_hex = r13 - goto L12 -L11: - padded_hex = non_prefixed_hex -L12: - r14 = PyUnicode_AsASCIIString(padded_hex) - if is_error(r14) goto L14 (error at hexstr_to_bytes:48) else goto L31 -L13: - goto L25 -L14: - r15 = CPy_CatchError() - r16 = builtins :: module - r17 = 'UnicodeDecodeError' - r18 = CPyObject_GetAttr(r16, r17) - if is_error(r18) goto L32 (error at hexstr_to_bytes:49) else goto L15 -L15: - r19 = CPy_ExceptionMatches(r18) - dec_ref r18 - if r19 goto L16 else goto L33 :: bool -L16: - r20 = 'hex string ' - r21 = ' may only contain [0-9a-fA-F] characters' - r22 = CPyStr_Build(3, r20, padded_hex, r21) - dec_ref padded_hex - if is_error(r22) goto L23 (error at hexstr_to_bytes:51) else goto L17 -L17: - r23 = builtins :: module - r24 = 'ValueError' - r25 = CPyObject_GetAttr(r23, r24) - if is_error(r25) goto L34 (error at hexstr_to_bytes:50) else goto L18 -L18: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L34 (error at hexstr_to_bytes:50) else goto L19 -L19: - dec_ref r22 - CPy_Raise(r28) - dec_ref r28 - if not 0 goto L23 (error at hexstr_to_bytes:50) else goto L35 :: bool -L20: - unreachable -L21: - CPy_Reraise() - if not 0 goto L23 else goto L36 :: bool -L22: - unreachable -L23: - CPy_RestoreExcInfo(r15) - dec_ref r15 - r29 = CPy_KeepPropagating() - if not r29 goto L29 else goto L24 :: bool -L24: - unreachable -L25: - r30 = binascii :: module - r31 = 'unhexlify' - r32 = CPyObject_GetAttr(r30, r31) - if is_error(r32) goto L37 (error at hexstr_to_bytes:54) else goto L26 -L26: - r33 = [r14] - r34 = load_address r33 - r35 = PyObject_Vectorcall(r32, r34, 1, 0) - dec_ref r32 - if is_error(r35) goto L37 (error at hexstr_to_bytes:54) else goto L27 -L27: - dec_ref r14 - r36 = cast(bytes, r35) - if is_error(r36) goto L29 (error at hexstr_to_bytes:54) else goto L28 -L28: - return r36 -L29: - r37 = :: bytes - return r37 -L30: - dec_ref non_prefixed_hex - goto L29 -L31: - dec_ref padded_hex - goto L13 -L32: - dec_ref padded_hex - goto L23 -L33: - dec_ref padded_hex - goto L21 -L34: - dec_ref r22 - goto L23 -L35: - dec_ref r15 - goto L20 -L36: - dec_ref r15 - goto L22 -L37: - dec_ref r14 - goto L29 - -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4 :: object - r5 :: object_ptr - r6 :: object_ptr[1] - r7 :: c_ptr - r8 :: native_int[1] - r9 :: c_ptr - r10 :: object - r11 :: dict - r12, r13 :: str - r14 :: bit - r15 :: object - r16 :: str - r17 :: dict - r18 :: object - r19 :: None -L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool -L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L6 (error at :-1) else goto L2 -L2: - builtins = r4 :: module - dec_ref r4 -L3: - r5 = load_address binascii :: module - r6 = [r5] - r7 = load_address r6 - r8 = [1] - r9 = load_address r8 - r10 = (('binascii', 'binascii', 'binascii'),) - r11 = faster_hexbytes._utils.globals :: static - r12 = 'faster_hexbytes/_utils.py' - r13 = '' - r14 = CPyImport_ImportMany(r10, r7, r11, r12, r13, r9) - if not r14 goto L6 else goto L4 :: bool -L4: - r15 = ('Union',) - r16 = 'typing' - r17 = faster_hexbytes._utils.globals :: static - r18 = CPyImport_ImportFromMany(r16, r15, r15, r17) - if is_error(r18) goto L6 (error at :2) else goto L5 -L5: - typing = r18 :: module - dec_ref r18 - return 1 -L6: - r19 = :: None - return r19 - -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4, r5, r6 :: object - r7 :: str - r8 :: dict - r9, r10 :: object - r11 :: str - r12 :: dict - r13 :: object - r14 :: str - r15 :: list - r16, r17 :: ptr - r18 :: dict - r19 :: str - r20 :: i32 - r21 :: bit - r22 :: str - r23 :: dict - r24 :: str - r25 :: object - r26 :: object[1] - r27 :: object_ptr - r28 :: object - r29 :: str - r30 :: dict - r31 :: str - r32 :: i32 - r33 :: bit - r34 :: None -L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool -L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L12 (error at :-1) else goto L2 -L2: - builtins = r4 :: module - dec_ref r4 -L3: - r5 = ('version',) - r6 = ('__version',) - r7 = 'importlib.metadata' - r8 = faster_hexbytes.globals :: static - r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) - if is_error(r9) goto L12 (error at :1) else goto L4 -L4: - importlib.metadata = r9 :: module - dec_ref r9 - r10 = ('HexBytes',) - r11 = 'faster_hexbytes.main' - r12 = faster_hexbytes.globals :: static - r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) - if is_error(r13) goto L12 (error at :5) else goto L5 -L5: - faster_hexbytes.main = r13 :: module - dec_ref r13 - r14 = 'HexBytes' - r15 = PyList_New(1) - if is_error(r15) goto L12 (error at :9) else goto L6 -L6: - r16 = get_element_ptr r15 ob_item :: PyListObject - r17 = load_mem r16 :: ptr* - inc_ref r14 - set_mem r17, r14 :: builtins.object* - r18 = faster_hexbytes.globals :: static - r19 = '__all__' - r20 = CPyDict_SetItem(r18, r19, r15) - dec_ref r15 - r21 = r20 >= 0 :: signed - if not r21 goto L12 (error at :9) else goto L7 :: bool -L7: - r22 = 'hexbytes' - r23 = faster_hexbytes.globals :: static - r24 = '__version' - r25 = CPyDict_GetItem(r23, r24) - if is_error(r25) goto L12 (error at :11) else goto L8 -L8: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L12 (error at :11) else goto L9 -L9: - r29 = cast(str, r28) - if is_error(r29) goto L12 (error at :11) else goto L10 -L10: - r30 = faster_hexbytes.globals :: static - r31 = '__version__' - r32 = CPyDict_SetItem(r30, r31, r29) - dec_ref r29 - r33 = r32 >= 0 :: signed - if not r33 goto L12 (error at :11) else goto L11 :: bool -L11: - return 1 -L12: - r34 = :: None - return r34 diff --git a/build/temp.linux-x86_64-cpython-313/build/__native_6a32f4913d613d6a7ddf.o b/build/temp.linux-x86_64-cpython-313/build/__native_6a32f4913d613d6a7ddf.o deleted file mode 100644 index 1907731f39aa85a2d9082a8983b6ca9763541e53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 342400 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 EAAG~M2LJ#7 diff --git a/build/temp.linux-x86_64-cpython-313/build/faster_hexbytes.o b/build/temp.linux-x86_64-cpython-313/build/faster_hexbytes.o deleted file mode 100644 index bd807a3eac9d395a8928f92ae5e1e99f74e5fddd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5296 zcmbtYU2Gdw7QWZxAx_;oX#+H+TjD@LQ1CcTLYhJguACCLu+$U+DSu{ck7I*9V~xku zUJxKcK~Yty+I?89v=2yh-`G`!Kw@83S$@-DSx@tvt9ERT z9et;}F2DE{D9tfv2l~4#zxd|x{STf$GcYm(JuH19d-}Gsj4hev`yYIxdLqAcF26Lh zJtiFi_x0=5sx~n4ERKbp!0~>G+>|~sUY*>PnW#+Rr|+y(s>Ncn*Xos7-K;yss@`@C zyI3>2rJiH7(FW*e%(PImZ@@@pJch<97Td7!)8Bo9So-zKrU+un=*2>wjtmPqIx&0^ z;{1|9tdRQMit#`9A;+WM-ktPXJ^?Oq}cwz166M!uAmWe_P#Vu6M`rVO%?xpI+`&4dY8Do(spI5gWjz-iC%BPXo z0T)tEM|Z3Jcc`%gQLen#omV%z8XreK_Y@9z3Lkc>Dt|!TV1So?K&>}tb0l1x<#`*Tq0?Vee# z*_LT_+Nq9tq;6JHj$UdQZD?#edil{*%eEY&>{vEBu}p9-8_Es6U8Cl@WkN%_>XTWa zw?FJ)7kURvkATPGtl{i+9Q!U9o4EkmIla~HGz`QGR^5bbz;F%rxA!-jmhI>b@>nd2 zqhCb1*@C8`Tm9CmfIXnanSHrK`)+0Fn$Q~T^n?amwlm$GnoQTta-&l*(k;<~4QzF44cj6ZcJV?SL&EfM}|jgsw2elC&wqXvB_&CjHf{456otG5+JDX zG%jN<2sZ68Hv+;ccDX| zvu@?B13fTlFHoOyHL4CueHxDx*%gvOecbomQocHXKP=@P0UYxN(xh8?@$-U|F%Kb; z|Ce16e$BW<_?uGB1#nuId;tGY%7MXz;q-ues;Pq0;HXd8itlPS| z0Ka3ThHWl1>TL%*xZt8uHw{vN4v9s$DCDx$Y#JsE(1b^r1{XFw!r)ORN4^}hxWDA1rhM7aK#*QtM6|Azq!>;Fz^_g855Q&6`JjX@0c z|0C_k{Kg@=CSYOXpO%T5>~Z{*bI>J?{~6%J`qyMY1phk_)cxZc_P0sL%bIevfqI3pc7_q$|ve)!pnt%?5O_78ukU5 z5b%8YiR`F84UNS6^_~bO6xkTmeIIa)OBpVni>IZ1(nDN^){kI(kD$+>{R`5*MvAfy z+J6Oj*#2d4vw&z{F#hn)Cwq#&u)fhQhLZw1B_|C3Z4qyepgpF^VD3V@*Q6rGr=NoB Sw-Fk{>|1jDl*h diff --git a/build/temp.linux-x86_64-cpython-313/build/faster_hexbytes/_utils.o b/build/temp.linux-x86_64-cpython-313/build/faster_hexbytes/_utils.o deleted file mode 100644 index 7ddfb93457e2ef5222e2e705b143a120055f2dea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5296 zcmbtYU2Gf25#HtTBFdC0*-m0Qt|O{Q(!?;2qNK{QW5+ZoN3@Z~suMMG5|=%aN0AA6 zM;wnfS+q$JRRshifY3Yy1^O2EEiL@eqUcMZG%egd^d&(4fFN;!0CCb7ZqcWv0o<9r zozrPe1x-3IZ)U!onVsF8ojdvY6OTL`;hYh1_7L092xY95*pPEV%&|Qz$^JEb_h$=* z7mp(JSYi3o4fg%`gmNcn*Xos7-L8AZ zs@e7|w^*~frJiTCi$EQ(-e{xq7rGl??EWcu>x{=RijI$c_z2VQLW($xA#G;_F>UO2 zq0dB;LXS=+Z$q5lF@g+f&}WSQd;ldL4G!~CF!BLNF?@uH59+@LUHd2mY9tTdVm+j9 zvW$`?6Vj{Ny@HqdJ&YUd*d8r$cr5auekguq4`UID#2<|NfVPiickSRi2NuU7XU8rN zJTV5#h#D;LN{vA(`VM|?Vpm)n-8+i5BfA;9EgT8KT#~T?gNq48cpv1uV8#1*cGnrc zuzN9nHvU8$p~1}%tlmPGG%_p-LL8ZRh*bQC&e@=!8Q9*b?|4$@E{OI%Z*>>--M+>9kq-ldQ-Q&|-Kx%?*0);_Wl;OY zfEVR@OnbBYg3gNqx-{@AK=)}^yRi@T%&7=eFfY#cinEs4XgFmy_vk_@pFNn$P8yTO zcq-lWI<|Fm$+9iCUIx{4%eAB3nd$WOR4Tm$|FWs{=}G@rwVia^13NG6oVVO+!?}=3 zSLaXW;c2#ecDd#{w$o{+JNAXTT}gXpsbRHYuJR0}K~?vVF4IbX?DD zfXzv462+pp>_ya@Ef^~L>|0I+`~fY_p2(j$@o-@8w~$h&-l$}h4wLcwi&18on$xs0 zZpVh*%Up2WXEW4=0^xtM={pU}I4uumfbLfD9H&t>%QY)A-}7pYotZS?01sxm(^Hwc zU2b$LR;DFJaDW8~27)8@&!{nIoBp1GTo*e50-MX{52x;5D0OVFBTFMa-4W` z_|yXu#v6cyZ3CMbUIeHqyo~FJ(N(z}WF-FmGmLjf_}-y`*c#lGDZsuaMi{$<{6u2p zCy_!Txvb45#v|X|mPj5?j2utI=HlN5IWOdVoMF7jr62W9srF@fEu-w8H~S50eczmz zyXeKYxM)GQ-aMqSq0NBQG`4*Ue0U2ycr66u+k_>kq(Ohb#ao6T!Ljk} z46Rq}Ibh#_->tJUh93z1aNPTTczp}J131om88}jKWZj!fzTe$hVTav1VVfK^dh`~AQ0Ne;Yav9 zfr$t)z&xop;}F&u66ND-5KjtdkM)q3`h5z%B=!9Y{zIux zDfn-ten`RBrT&nD|3&IFKjrg=#0!f3`%*t6xw@{D#Ia_>b-SqGR42@6_nPnl1KfiT z3FI}BT&rOkp4Ii3Q87J}8Kric8Lop0nr98@X<>B+RP?D>rOpz3iBui%6tY<=xz_nj z!=`K6OBMw5EnIu4QEz)V!A6Ki-L}X8CL|HzqR`7uvuW9opbg(#2E3r*n+v|dq`qW# z4EP#rS+3WUajjah>Y7bUZpZ)4QV;>pfa;F|=A=OPfpDrv()WUZ{VPX+lcfsEkg0Nl@57#^n{2L#A2yMf302GY*RsFNzi!mqQ7bcqja2N!c<|m$$nCd?x z4OD+xKlx+7AQ{AfTnYXoKzu>9#lG5a|L@0(2s9!u5$-?sA)24||9gO`F#%#F>Gw-i zLZsT_pYJM$=EL$p#zVd+sAFh9Vx2yaA3SbzM)(N7ZBN!CuureX3#D4`g{ru0%PtuP> zl#K`Z5&!)b{^w*v!21;@@*{o)21yRvt*Q-04yv|q1CDhm%Pk18CjCEM!zI33h1(2@NST?BvgNFld{x6 d+Mqv6!<7w4Nb3IW0JNWfOXg2~jKZk?{{`I{k&FNU diff --git a/build/temp.linux-x86_64-cpython-313/build/faster_hexbytes/main.o b/build/temp.linux-x86_64-cpython-313/build/faster_hexbytes/main.o deleted file mode 100644 index 41dc0be36002681a3541b61a8b812b5d299ead6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5280 zcmbVPZ){uD6~EWdk2rPWq%ET^U5Ud0K~+D;NtULC4o6OjTLH~lGEx|GpY7+^V87=* zKT~^~1|xJ*R3TO41DdoCljy#&sUL;}(lmv2Q@_BMN!yr&ph!p*M%7LGv<;~{=iYl> zUS1uvaTLFM&hPxW=iYnnc`wf$dHA6S=ZuK6Z?FxCP{vLtHu#)ib8I(DvVV@;@$aR= zONS9USy=rnc@??B*>&&f!b@Kl{MzNh+9e6E{h@G9JGn(10+9W~kYC!e}hJzrS6 zURayIE2aVg_qX3wtH#LKiLkNJLr+>ALjS)D$ZovO^>&pc46REx!CuhlEFx?T5* zRkQ6`Zn0){OFhqO7eQ&(ZFEKY0(aw!+&=?fo$(mP(DAVsA3=IEAc&I~(so1;)5dQV z@@yn2tH)9cn#P5$wK-)7JaN5JV0)Xs{Ry4B_>8eglrQVM zPemj8u=Zgjc1%Lr<>&+Y;G=r%Sd?pj?k?-Qq{aJ@k9>n;zQJF+Rh@rZAGRRMp!SOa zFUs|p_NVR(Ixh<7!oX_)-J@OU#y-+B$0AU{ytvpa&Rb@q;gs3Jqf4oL_CP8-WlR|p zsdUrp*w*0{%eLHl8AQ`9*A91QXVNp%sq_l`WmD@#({lJ?9}!)k-F?V06g(k<8Vtg`307{sw5xKflGX1hk} zx?_W)Tn)%?-my#jFFY_&TL3-Lv#ZbKJfxY(oZqs^w{dS(M` zj$(@_7R6OBqTFnOswjs?oC^2@TAV+UKXK$CvKI}c)TuWrnNWAhpvow-OwDOp8MkA@ z&SlOx?lT$cKR)w6+4P-+Wt^4=GeBRfc#hL3o8_97S?qZ=$IeU{aCiqY-I?i3-7Yse z6)V#c8dNZqo*EpnZ$^zlvy^)Ud|m7SFl-^8Ka{$6snoH(jw*@tOh<^5Kb)L4CZ_LG zFx+#fXKY_s`cOr9{ninq%W*64Nc?*z81IhqJwpSr^Kd(+0sE@ZFm?gQBZ<);M+%AL zsy3gPh5FZg_%VZ6tbA9YJ5_8ssdM%h1Z^iyhm-;|iU=)O0( zXnud*tkT%fWg_&_xF&LI|L)%D+GxV+AZ4=Sg+V~ zz`h2*n`dS0;1>Ae7Pz$q{$0Rv-it6I`Ddm|(ResN!Qhd_$KG&@SY|fb5=QkwDeU$Z$drkNq$`9?g1@QY6j)Ek-%=x*VV+cnb%kS|n9qI{ zr=@VRS0XzX!Y7pcvKlcC-cs7nR~1fi$eun$2&Z25RwxekIiz>w;O{fpUr{*ae@u3E_C}k@m^Kuaoa9c{+qsy<&es zqWHg&BK-FviSSEG&WG@~m0SqnR6i#a9$r^U;aCg7x?K+87nRJ6cCQJaEHHZT>40O6 zIM-^JhG%s>W>ieiWJamoW`^safaX~Px>``21rdEJR;jZB-yT&5JOyu-O0M1V9lfIU-;-lXd9&cAYjZd>z@T*j5!IvAkqA@K@fPFpT?ZR!v3?$AnZ@; zCx7f0!~^S7OM!p)5y^yYv9I>q|0G^epiy;+aR0I2(EPOjrvVGc1c;qhe!oN^Kw;Z9 z=)xG9532*22>2o!w#9$=`{jSHYSiS9`BTrqIF$bjz=va^{;-;#-iL@Gg>7HygQ49M z%Kr)q0Sf#71a$rKUsn0Qt9&tke7A@9|5d;+Can`#L5DCX5Y>^CHu9%Deg%qt{w}`k zfIgIi|0F*ee+!y^{wGyK!21;>@}u!GD2Wf+Jr`~$N*T8O3*cCns@(h#&ny3wk4T30 zkKpUTV9c=p&y|0T4AmI+{}k|k=Qn|e1w`k9=ZEin@~8UiH#hpla8W=P)q?T+9!nzZ kk8M(w8gLu*hBExo1|&EY&PTTc*U$g7%AfieIfVWH3oqV@6aWAK From 5b7bfcda2b177eeb4ca995730a3af33103e398e0 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Tue, 30 Sep 2025 00:48:19 -0400 Subject: [PATCH 23/98] fix mypy err --- faster_hexbytes/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faster_hexbytes/main.py b/faster_hexbytes/main.py index 476454a..7f5fad7 100644 --- a/faster_hexbytes/main.py +++ b/faster_hexbytes/main.py @@ -63,7 +63,7 @@ def __getitem__( # noqa: F811 cls = type(self) if cls is HexBytes: # fast-path case with faster C code for non-subclass - return HexBytes(result) + return HexBytes(result) # type: ignore [return-value] return cls(result) def __repr__(self) -> str: From 919d553d2002b2a93804285ececc36495c9c9fe6 Mon Sep 17 00:00:00 2001 From: BobTheBuidler Date: Tue, 30 Sep 2025 05:09:22 +0000 Subject: [PATCH 24/98] fix mypy err --- faster_hexbytes/main.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/faster_hexbytes/main.py b/faster_hexbytes/main.py index 7f5fad7..ae9958a 100644 --- a/faster_hexbytes/main.py +++ b/faster_hexbytes/main.py @@ -8,7 +8,10 @@ overload, ) -import hexbytes +# accessing hexbytes.HexBytes after `import hexbytes` +# fails because mypyc tries to lookup HexBytes from +# CPyModule_hexbytes___main which was never imported +import hexbytes.main as hexbytes from mypy_extensions import ( mypyc_attr, ) From 5f450b57e310e1556de2643e25ef4c8c70fff2b2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 30 Sep 2025 05:09:49 +0000 Subject: [PATCH 25/98] chore: compile C files for source control --- build/__native_6a32f4913d613d6a7ddf.c | 3101 +++++++++++++++++ build/__native_6a32f4913d613d6a7ddf.h | 72 + .../__native_internal_6a32f4913d613d6a7ddf.h | 78 + build/faster_hexbytes.c | 21 + build/faster_hexbytes/_utils.c | 21 + build/faster_hexbytes/main.c | 21 + build/ops.txt | 1466 ++++++++ 7 files changed, 4780 insertions(+) create mode 100644 build/__native_6a32f4913d613d6a7ddf.c create mode 100644 build/__native_6a32f4913d613d6a7ddf.h create mode 100644 build/__native_internal_6a32f4913d613d6a7ddf.h create mode 100644 build/faster_hexbytes.c create mode 100644 build/faster_hexbytes/_utils.c create mode 100644 build/faster_hexbytes/main.c create mode 100644 build/ops.txt diff --git a/build/__native_6a32f4913d613d6a7ddf.c b/build/__native_6a32f4913d613d6a7ddf.c new file mode 100644 index 0000000..7e84d32 --- /dev/null +++ b/build/__native_6a32f4913d613d6a7ddf.c @@ -0,0 +1,3101 @@ +#include "init.c" +#include "getargs.c" +#include "getargsfast.c" +#include "int_ops.c" +#include "float_ops.c" +#include "str_ops.c" +#include "bytes_ops.c" +#include "list_ops.c" +#include "dict_ops.c" +#include "set_ops.c" +#include "tuple_ops.c" +#include "exc_ops.c" +#include "misc_ops.c" +#include "generic_ops.c" +#include "pythonsupport.c" +#include "__native_6a32f4913d613d6a7ddf.h" +#include "__native_internal_6a32f4913d613d6a7ddf.h" +static PyMethodDef faster_hexbytesmodule_methods[] = { + {NULL, NULL, 0, NULL} +}; + +int CPyExec_faster_hexbytes(PyObject *module) +{ + PyObject* modname = NULL; + modname = PyObject_GetAttrString((PyObject *)CPyModule_faster_hexbytes__internal, "__name__"); + CPyStatic_faster_hexbytes___globals = PyModule_GetDict(CPyModule_faster_hexbytes__internal); + if (unlikely(CPyStatic_faster_hexbytes___globals == NULL)) + goto fail; + if (CPyGlobalsInit() < 0) + goto fail; + char result = CPyDef_faster_hexbytes_____top_level__(); + if (result == 2) + goto fail; + Py_DECREF(modname); + return 0; + fail: + Py_CLEAR(CPyModule_faster_hexbytes__internal); + Py_CLEAR(modname); + return -1; +} +static struct PyModuleDef faster_hexbytesmodule = { + PyModuleDef_HEAD_INIT, + "faster_hexbytes", + NULL, /* docstring */ + 0, /* size of per-interpreter state of the module */ + faster_hexbytesmodule_methods, + NULL, +}; + +PyObject *CPyInit_faster_hexbytes(void) +{ + if (CPyModule_faster_hexbytes__internal) { + Py_INCREF(CPyModule_faster_hexbytes__internal); + return CPyModule_faster_hexbytes__internal; + } + CPyModule_faster_hexbytes__internal = PyModule_Create(&faster_hexbytesmodule); + if (unlikely(CPyModule_faster_hexbytes__internal == NULL)) + goto fail; + if (CPyExec_faster_hexbytes(CPyModule_faster_hexbytes__internal) != 0) + goto fail; + return CPyModule_faster_hexbytes__internal; + fail: + return NULL; +} + +char CPyDef_faster_hexbytes_____top_level__(void) { + PyObject *cpy_r_r0; + PyObject *cpy_r_r1; + char cpy_r_r2; + PyObject *cpy_r_r3; + PyObject *cpy_r_r4; + PyObject *cpy_r_r5; + PyObject *cpy_r_r6; + PyObject *cpy_r_r7; + PyObject *cpy_r_r8; + PyObject *cpy_r_r9; + PyObject *cpy_r_r10; + PyObject *cpy_r_r11; + PyObject *cpy_r_r12; + PyObject *cpy_r_r13; + PyObject *cpy_r_r14; + PyObject *cpy_r_r15; + CPyPtr cpy_r_r16; + CPyPtr cpy_r_r17; + PyObject *cpy_r_r18; + PyObject *cpy_r_r19; + int32_t cpy_r_r20; + char cpy_r_r21; + PyObject *cpy_r_r22; + PyObject *cpy_r_r23; + PyObject *cpy_r_r24; + PyObject *cpy_r_r25; + PyObject **cpy_r_r27; + PyObject *cpy_r_r28; + PyObject *cpy_r_r29; + PyObject *cpy_r_r30; + PyObject *cpy_r_r31; + int32_t cpy_r_r32; + char cpy_r_r33; + char cpy_r_r34; + cpy_r_r0 = CPyModule_builtins; + cpy_r_r1 = (PyObject *)&_Py_NoneStruct; + cpy_r_r2 = cpy_r_r0 != cpy_r_r1; + if (cpy_r_r2) goto CPyL3; + cpy_r_r3 = CPyStatics[3]; /* 'builtins' */ + cpy_r_r4 = PyImport_Import(cpy_r_r3); + if (unlikely(cpy_r_r4 == NULL)) { + CPy_AddTraceback("faster_hexbytes/__init__.py", "", -1, CPyStatic_faster_hexbytes___globals); + goto CPyL12; + } + CPyModule_builtins = cpy_r_r4; + CPy_INCREF(CPyModule_builtins); + CPy_DECREF(cpy_r_r4); +CPyL3: ; + cpy_r_r5 = CPyStatics[69]; /* ('version',) */ + cpy_r_r6 = CPyStatics[70]; /* ('__version',) */ + cpy_r_r7 = CPyStatics[6]; /* 'importlib.metadata' */ + cpy_r_r8 = CPyStatic_faster_hexbytes___globals; + cpy_r_r9 = CPyImport_ImportFromMany(cpy_r_r7, cpy_r_r5, cpy_r_r6, cpy_r_r8); + if (unlikely(cpy_r_r9 == NULL)) { + CPy_AddTraceback("faster_hexbytes/__init__.py", "", 1, CPyStatic_faster_hexbytes___globals); + goto CPyL12; + } + CPyModule_importlib___metadata = cpy_r_r9; + CPy_INCREF(CPyModule_importlib___metadata); + CPy_DECREF(cpy_r_r9); + cpy_r_r10 = CPyStatics[71]; /* ('HexBytes',) */ + cpy_r_r11 = CPyStatics[8]; /* 'faster_hexbytes.main' */ + cpy_r_r12 = CPyStatic_faster_hexbytes___globals; + cpy_r_r13 = CPyImport_ImportFromMany(cpy_r_r11, cpy_r_r10, cpy_r_r10, cpy_r_r12); + if (unlikely(cpy_r_r13 == NULL)) { + CPy_AddTraceback("faster_hexbytes/__init__.py", "", 5, CPyStatic_faster_hexbytes___globals); + goto CPyL12; + } + CPyModule_faster_hexbytes___main = cpy_r_r13; + CPy_INCREF(CPyModule_faster_hexbytes___main); + CPy_DECREF(cpy_r_r13); + cpy_r_r14 = CPyStatics[7]; /* 'HexBytes' */ + cpy_r_r15 = PyList_New(1); + if (unlikely(cpy_r_r15 == NULL)) { + CPy_AddTraceback("faster_hexbytes/__init__.py", "", 9, CPyStatic_faster_hexbytes___globals); + goto CPyL12; + } + cpy_r_r16 = (CPyPtr)&((PyListObject *)cpy_r_r15)->ob_item; + cpy_r_r17 = *(CPyPtr *)cpy_r_r16; + CPy_INCREF(cpy_r_r14); + *(PyObject * *)cpy_r_r17 = cpy_r_r14; + cpy_r_r18 = CPyStatic_faster_hexbytes___globals; + cpy_r_r19 = CPyStatics[9]; /* '__all__' */ + cpy_r_r20 = CPyDict_SetItem(cpy_r_r18, cpy_r_r19, cpy_r_r15); + CPy_DECREF_NO_IMM(cpy_r_r15); + cpy_r_r21 = cpy_r_r20 >= 0; + if (unlikely(!cpy_r_r21)) { + CPy_AddTraceback("faster_hexbytes/__init__.py", "", 9, CPyStatic_faster_hexbytes___globals); + goto CPyL12; + } + cpy_r_r22 = CPyStatics[10]; /* 'hexbytes' */ + cpy_r_r23 = CPyStatic_faster_hexbytes___globals; + cpy_r_r24 = CPyStatics[5]; /* '__version' */ + cpy_r_r25 = CPyDict_GetItem(cpy_r_r23, cpy_r_r24); + if (unlikely(cpy_r_r25 == NULL)) { + CPy_AddTraceback("faster_hexbytes/__init__.py", "", 11, CPyStatic_faster_hexbytes___globals); + goto CPyL12; + } + PyObject *cpy_r_r26[1] = {cpy_r_r22}; + cpy_r_r27 = (PyObject **)&cpy_r_r26; + cpy_r_r28 = PyObject_Vectorcall(cpy_r_r25, cpy_r_r27, 1, 0); + CPy_DECREF(cpy_r_r25); + if (unlikely(cpy_r_r28 == NULL)) { + CPy_AddTraceback("faster_hexbytes/__init__.py", "", 11, CPyStatic_faster_hexbytes___globals); + goto CPyL12; + } + if (likely(PyUnicode_Check(cpy_r_r28))) + cpy_r_r29 = cpy_r_r28; + else { + CPy_TypeErrorTraceback("faster_hexbytes/__init__.py", "", 11, CPyStatic_faster_hexbytes___globals, "str", cpy_r_r28); + goto CPyL12; + } + cpy_r_r30 = CPyStatic_faster_hexbytes___globals; + cpy_r_r31 = CPyStatics[11]; /* '__version__' */ + cpy_r_r32 = CPyDict_SetItem(cpy_r_r30, cpy_r_r31, cpy_r_r29); + CPy_DECREF(cpy_r_r29); + cpy_r_r33 = cpy_r_r32 >= 0; + if (unlikely(!cpy_r_r33)) { + CPy_AddTraceback("faster_hexbytes/__init__.py", "", 11, CPyStatic_faster_hexbytes___globals); + goto CPyL12; + } + return 1; +CPyL12: ; + cpy_r_r34 = 2; + return cpy_r_r34; +} +static PyMethodDef _utilsmodule_methods[] = { + {"to_bytes", (PyCFunction)CPyPy__utils___to_bytes, METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("to_bytes(val)\n--\n\n") /* docstring */}, + {"hexstr_to_bytes", (PyCFunction)CPyPy__utils___hexstr_to_bytes, METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("hexstr_to_bytes(hexstr)\n--\n\n") /* docstring */}, + {NULL, NULL, 0, NULL} +}; + +int CPyExec_faster_hexbytes____utils(PyObject *module) +{ + PyObject* modname = NULL; + modname = PyObject_GetAttrString((PyObject *)CPyModule_faster_hexbytes____utils__internal, "__name__"); + CPyStatic__utils___globals = PyModule_GetDict(CPyModule_faster_hexbytes____utils__internal); + if (unlikely(CPyStatic__utils___globals == NULL)) + goto fail; + if (CPyGlobalsInit() < 0) + goto fail; + char result = CPyDef__utils_____top_level__(); + if (result == 2) + goto fail; + Py_DECREF(modname); + return 0; + fail: + Py_CLEAR(CPyModule_faster_hexbytes____utils__internal); + Py_CLEAR(modname); + CPy_XDECREF(CPyStatic__utils___unhexlify); + CPyStatic__utils___unhexlify = NULL; + return -1; +} +static struct PyModuleDef _utilsmodule = { + PyModuleDef_HEAD_INIT, + "faster_hexbytes._utils", + NULL, /* docstring */ + 0, /* size of per-interpreter state of the module */ + _utilsmodule_methods, + NULL, +}; + +PyObject *CPyInit_faster_hexbytes____utils(void) +{ + if (CPyModule_faster_hexbytes____utils__internal) { + Py_INCREF(CPyModule_faster_hexbytes____utils__internal); + return CPyModule_faster_hexbytes____utils__internal; + } + CPyModule_faster_hexbytes____utils__internal = PyModule_Create(&_utilsmodule); + if (unlikely(CPyModule_faster_hexbytes____utils__internal == NULL)) + goto fail; + if (CPyExec_faster_hexbytes____utils(CPyModule_faster_hexbytes____utils__internal) != 0) + goto fail; + return CPyModule_faster_hexbytes____utils__internal; + fail: + return NULL; +} + +PyObject *CPyDef__utils___to_bytes(PyObject *cpy_r_val) { + char cpy_r_r0; + PyObject *cpy_r_r1; + char cpy_r_r2; + PyObject *cpy_r_r3; + PyObject *cpy_r_r4; + char cpy_r_r5; + PyObject *cpy_r_r6; + PyObject **cpy_r_r8; + PyObject *cpy_r_r9; + PyObject *cpy_r_r10; + char cpy_r_r11; + char cpy_r_r12; + PyObject *cpy_r_r13; + PyObject *cpy_r_r14; + PyObject *cpy_r_r15; + char cpy_r_r16; + CPyTagged cpy_r_r17; + int64_t cpy_r_r18; + char cpy_r_r19; + int64_t cpy_r_r20; + char cpy_r_r21; + char cpy_r_r22; + char cpy_r_r23; + char cpy_r_r24; + PyObject *cpy_r_r25; + CPyTagged cpy_r_r26; + PyObject *cpy_r_r27; + PyObject *cpy_r_r28; + PyObject *cpy_r_r29; + PyObject *cpy_r_r30; + PyObject *cpy_r_r31; + PyObject *cpy_r_r32; + PyObject **cpy_r_r34; + PyObject *cpy_r_r35; + CPyTagged cpy_r_r36; + PyObject *cpy_r_r37; + PyObject *cpy_r_r38; + PyObject *cpy_r_r39; + PyObject *cpy_r_r40; + PyObject **cpy_r_r42; + PyObject *cpy_r_r43; + PyObject *cpy_r_r44; + PyObject *cpy_r_r45; + PyObject *cpy_r_r46; + PyObject *cpy_r_r47; + PyObject *cpy_r_r48; + int32_t cpy_r_r49; + char cpy_r_r50; + char cpy_r_r51; + PyObject *cpy_r_r52; + PyObject **cpy_r_r54; + PyObject *cpy_r_r55; + PyObject *cpy_r_r56; + PyObject *cpy_r_r57; + PyObject *cpy_r_r58; + PyObject *cpy_r_r59; + PyObject *cpy_r_r60; + PyObject *cpy_r_r61; + PyObject **cpy_r_r63; + PyObject *cpy_r_r64; + PyObject *cpy_r_r65; + PyObject *cpy_r_r66; + PyObject *cpy_r_r67; + PyObject *cpy_r_r68; + PyObject *cpy_r_r69; + PyObject **cpy_r_r71; + PyObject *cpy_r_r72; + PyObject *cpy_r_r73; + PyObject *cpy_r_r74; + CPyPtr cpy_r_r75; + CPyPtr cpy_r_r76; + CPyPtr cpy_r_r77; + CPyPtr cpy_r_r78; + CPyPtr cpy_r_r79; + CPyPtr cpy_r_r80; + PyObject *cpy_r_r81; + PyObject *cpy_r_r82; + PyObject *cpy_r_r83; + PyObject *cpy_r_r84; + PyObject **cpy_r_r86; + PyObject *cpy_r_r87; + PyObject *cpy_r_r88; + cpy_r_r0 = PyBytes_Check(cpy_r_val); + if (!cpy_r_r0) goto CPyL3; + CPy_INCREF(cpy_r_val); + if (likely(PyBytes_Check(cpy_r_val) || PyByteArray_Check(cpy_r_val))) + cpy_r_r1 = cpy_r_val; + else { + CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "to_bytes", 19, CPyStatic__utils___globals, "bytes", cpy_r_val); + goto CPyL51; + } + return cpy_r_r1; +CPyL3: ; + cpy_r_r2 = PyUnicode_Check(cpy_r_val); + if (!cpy_r_r2) goto CPyL7; + CPy_INCREF(cpy_r_val); + if (likely(PyUnicode_Check(cpy_r_val))) + cpy_r_r3 = cpy_r_val; + else { + CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "to_bytes", 21, CPyStatic__utils___globals, "str", cpy_r_val); + goto CPyL51; + } + cpy_r_r4 = CPyDef__utils___hexstr_to_bytes(cpy_r_r3); + CPy_DECREF(cpy_r_r3); + if (unlikely(cpy_r_r4 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 21, CPyStatic__utils___globals); + goto CPyL51; + } + return cpy_r_r4; +CPyL7: ; + cpy_r_r5 = PyByteArray_Check(cpy_r_val); + if (!cpy_r_r5) goto CPyL11; + cpy_r_r6 = (PyObject *)&PyBytes_Type; + PyObject *cpy_r_r7[1] = {cpy_r_val}; + cpy_r_r8 = (PyObject **)&cpy_r_r7; + cpy_r_r9 = PyObject_Vectorcall(cpy_r_r6, cpy_r_r8, 1, 0); + if (unlikely(cpy_r_r9 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 23, CPyStatic__utils___globals); + goto CPyL51; + } + if (likely(PyBytes_Check(cpy_r_r9) || PyByteArray_Check(cpy_r_r9))) + cpy_r_r10 = cpy_r_r9; + else { + CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "to_bytes", 23, CPyStatic__utils___globals, "bytes", cpy_r_r9); + goto CPyL51; + } + return cpy_r_r10; +CPyL11: ; + cpy_r_r11 = PyBool_Check(cpy_r_val); + if (!cpy_r_r11) goto CPyL17; + if (unlikely(!PyBool_Check(cpy_r_val))) { + CPy_TypeError("bool", cpy_r_val); cpy_r_r12 = 2; + } else + cpy_r_r12 = cpy_r_val == Py_True; + if (unlikely(cpy_r_r12 == 2)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 25, CPyStatic__utils___globals); + goto CPyL51; + } + if (!cpy_r_r12) goto CPyL15; + cpy_r_r13 = CPyStatics[67]; /* b'\x01' */ + CPy_INCREF(cpy_r_r13); + cpy_r_r14 = cpy_r_r13; + goto CPyL16; +CPyL15: ; + cpy_r_r15 = CPyStatics[68]; /* b'\x00' */ + CPy_INCREF(cpy_r_r15); + cpy_r_r14 = cpy_r_r15; +CPyL16: ; + return cpy_r_r14; +CPyL17: ; + cpy_r_r16 = PyLong_Check(cpy_r_val); + if (!cpy_r_r16) goto CPyL37; + if (likely(PyLong_Check(cpy_r_val))) + cpy_r_r17 = CPyTagged_FromObject(cpy_r_val); + else { + CPy_TypeError("int", cpy_r_val); cpy_r_r17 = CPY_INT_TAG; + } + if (unlikely(cpy_r_r17 == CPY_INT_TAG)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 29, CPyStatic__utils___globals); + goto CPyL51; + } + cpy_r_r18 = cpy_r_r17 & 1; + cpy_r_r19 = cpy_r_r18 != 0; + if (cpy_r_r19) goto CPyL21; + cpy_r_r20 = 0 & 1; + cpy_r_r21 = cpy_r_r20 != 0; + if (!cpy_r_r21) goto CPyL22; +CPyL21: ; + cpy_r_r22 = CPyTagged_IsLt_(cpy_r_r17, 0); + cpy_r_r23 = cpy_r_r22; + goto CPyL23; +CPyL22: ; + cpy_r_r24 = (Py_ssize_t)cpy_r_r17 < (Py_ssize_t)0; + cpy_r_r23 = cpy_r_r24; +CPyL23: ; + CPyTagged_DECREF(cpy_r_r17); + if (!cpy_r_r23) goto CPyL31; + cpy_r_r25 = CPyStatics[12]; /* 'Cannot convert negative integer ' */ + if (likely(PyLong_Check(cpy_r_val))) + cpy_r_r26 = CPyTagged_FromObject(cpy_r_val); + else { + CPy_TypeError("int", cpy_r_val); cpy_r_r26 = CPY_INT_TAG; + } + if (unlikely(cpy_r_r26 == CPY_INT_TAG)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 30, CPyStatic__utils___globals); + goto CPyL51; + } + cpy_r_r27 = CPyTagged_Str(cpy_r_r26); + CPyTagged_DECREF(cpy_r_r26); + if (unlikely(cpy_r_r27 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 30, CPyStatic__utils___globals); + goto CPyL51; + } + cpy_r_r28 = CPyStatics[13]; /* ' to bytes' */ + cpy_r_r29 = CPyStr_Build(3, cpy_r_r25, cpy_r_r27, cpy_r_r28); + CPy_DECREF(cpy_r_r27); + if (unlikely(cpy_r_r29 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 30, CPyStatic__utils___globals); + goto CPyL51; + } + cpy_r_r30 = CPyModule_builtins; + cpy_r_r31 = CPyStatics[14]; /* 'ValueError' */ + cpy_r_r32 = CPyObject_GetAttr(cpy_r_r30, cpy_r_r31); + if (unlikely(cpy_r_r32 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 30, CPyStatic__utils___globals); + goto CPyL52; + } + PyObject *cpy_r_r33[1] = {cpy_r_r29}; + cpy_r_r34 = (PyObject **)&cpy_r_r33; + cpy_r_r35 = PyObject_Vectorcall(cpy_r_r32, cpy_r_r34, 1, 0); + CPy_DECREF(cpy_r_r32); + if (unlikely(cpy_r_r35 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 30, CPyStatic__utils___globals); + goto CPyL52; + } + CPy_DECREF(cpy_r_r29); + CPy_Raise(cpy_r_r35); + CPy_DECREF(cpy_r_r35); + if (unlikely(!0)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 30, CPyStatic__utils___globals); + goto CPyL51; + } + CPy_Unreachable(); +CPyL31: ; + if (likely(PyLong_Check(cpy_r_val))) + cpy_r_r36 = CPyTagged_FromObject(cpy_r_val); + else { + CPy_TypeError("int", cpy_r_val); cpy_r_r36 = CPY_INT_TAG; + } + if (unlikely(cpy_r_r36 == CPY_INT_TAG)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals); + goto CPyL51; + } + cpy_r_r37 = CPyModule_builtins; + cpy_r_r38 = CPyStatics[15]; /* 'hex' */ + cpy_r_r39 = CPyObject_GetAttr(cpy_r_r37, cpy_r_r38); + if (unlikely(cpy_r_r39 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals); + goto CPyL53; + } + cpy_r_r40 = CPyTagged_StealAsObject(cpy_r_r36); + PyObject *cpy_r_r41[1] = {cpy_r_r40}; + cpy_r_r42 = (PyObject **)&cpy_r_r41; + cpy_r_r43 = PyObject_Vectorcall(cpy_r_r39, cpy_r_r42, 1, 0); + CPy_DECREF(cpy_r_r39); + if (unlikely(cpy_r_r43 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals); + goto CPyL54; + } + CPy_DECREF(cpy_r_r40); + if (likely(PyUnicode_Check(cpy_r_r43))) + cpy_r_r44 = cpy_r_r43; + else { + CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals, "str", cpy_r_r43); + goto CPyL51; + } + cpy_r_r45 = CPyDef__utils___to_bytes(cpy_r_r44); + CPy_DECREF(cpy_r_r44); + if (unlikely(cpy_r_r45 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals); + goto CPyL51; + } + return cpy_r_r45; +CPyL37: ; + cpy_r_r46 = CPyModule_builtins; + cpy_r_r47 = CPyStatics[16]; /* 'memoryview' */ + cpy_r_r48 = CPyObject_GetAttr(cpy_r_r46, cpy_r_r47); + if (unlikely(cpy_r_r48 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 33, CPyStatic__utils___globals); + goto CPyL51; + } + cpy_r_r49 = PyObject_IsInstance(cpy_r_val, cpy_r_r48); + CPy_DECREF(cpy_r_r48); + cpy_r_r50 = cpy_r_r49 >= 0; + if (unlikely(!cpy_r_r50)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 33, CPyStatic__utils___globals); + goto CPyL51; + } + cpy_r_r51 = cpy_r_r49; + if (!cpy_r_r51) goto CPyL43; + cpy_r_r52 = (PyObject *)&PyBytes_Type; + PyObject *cpy_r_r53[1] = {cpy_r_val}; + cpy_r_r54 = (PyObject **)&cpy_r_r53; + cpy_r_r55 = PyObject_Vectorcall(cpy_r_r52, cpy_r_r54, 1, 0); + if (unlikely(cpy_r_r55 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 34, CPyStatic__utils___globals); + goto CPyL51; + } + if (likely(PyBytes_Check(cpy_r_r55) || PyByteArray_Check(cpy_r_r55))) + cpy_r_r56 = cpy_r_r55; + else { + CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "to_bytes", 34, CPyStatic__utils___globals, "bytes", cpy_r_r55); + goto CPyL51; + } + return cpy_r_r56; +CPyL43: ; + cpy_r_r57 = CPyStatics[17]; /* '' */ + cpy_r_r58 = CPyStatics[18]; /* 'Cannot convert ' */ + cpy_r_r59 = CPyStatics[19]; /* '{!r:{}}' */ + cpy_r_r60 = CPyStatics[17]; /* '' */ + cpy_r_r61 = CPyStatics[20]; /* 'format' */ + PyObject *cpy_r_r62[3] = {cpy_r_r59, cpy_r_val, cpy_r_r60}; + cpy_r_r63 = (PyObject **)&cpy_r_r62; + cpy_r_r64 = PyObject_VectorcallMethod(cpy_r_r61, cpy_r_r63, 9223372036854775811ULL, 0); + if (unlikely(cpy_r_r64 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 36, CPyStatic__utils___globals); + goto CPyL51; + } + cpy_r_r65 = CPyStatics[21]; /* ' of type ' */ + cpy_r_r66 = CPyStatics[22]; /* '{:{}}' */ + cpy_r_r67 = CPy_TYPE(cpy_r_val); + cpy_r_r68 = CPyStatics[17]; /* '' */ + cpy_r_r69 = CPyStatics[20]; /* 'format' */ + PyObject *cpy_r_r70[3] = {cpy_r_r66, cpy_r_r67, cpy_r_r68}; + cpy_r_r71 = (PyObject **)&cpy_r_r70; + cpy_r_r72 = PyObject_VectorcallMethod(cpy_r_r69, cpy_r_r71, 9223372036854775811ULL, 0); + if (unlikely(cpy_r_r72 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 36, CPyStatic__utils___globals); + goto CPyL55; + } + CPy_DECREF(cpy_r_r67); + cpy_r_r73 = CPyStatics[13]; /* ' to bytes' */ + cpy_r_r74 = PyList_New(5); + if (unlikely(cpy_r_r74 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 36, CPyStatic__utils___globals); + goto CPyL56; + } + cpy_r_r75 = (CPyPtr)&((PyListObject *)cpy_r_r74)->ob_item; + cpy_r_r76 = *(CPyPtr *)cpy_r_r75; + CPy_INCREF(cpy_r_r58); + *(PyObject * *)cpy_r_r76 = cpy_r_r58; + cpy_r_r77 = cpy_r_r76 + 8; + *(PyObject * *)cpy_r_r77 = cpy_r_r64; + CPy_INCREF(cpy_r_r65); + cpy_r_r78 = cpy_r_r76 + 16; + *(PyObject * *)cpy_r_r78 = cpy_r_r65; + cpy_r_r79 = cpy_r_r76 + 24; + *(PyObject * *)cpy_r_r79 = cpy_r_r72; + CPy_INCREF(cpy_r_r73); + cpy_r_r80 = cpy_r_r76 + 32; + *(PyObject * *)cpy_r_r80 = cpy_r_r73; + cpy_r_r81 = PyUnicode_Join(cpy_r_r57, cpy_r_r74); + CPy_DECREF_NO_IMM(cpy_r_r74); + if (unlikely(cpy_r_r81 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 36, CPyStatic__utils___globals); + goto CPyL51; + } + cpy_r_r82 = CPyModule_builtins; + cpy_r_r83 = CPyStatics[23]; /* 'TypeError' */ + cpy_r_r84 = CPyObject_GetAttr(cpy_r_r82, cpy_r_r83); + if (unlikely(cpy_r_r84 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 36, CPyStatic__utils___globals); + goto CPyL57; + } + PyObject *cpy_r_r85[1] = {cpy_r_r81}; + cpy_r_r86 = (PyObject **)&cpy_r_r85; + cpy_r_r87 = PyObject_Vectorcall(cpy_r_r84, cpy_r_r86, 1, 0); + CPy_DECREF(cpy_r_r84); + if (unlikely(cpy_r_r87 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 36, CPyStatic__utils___globals); + goto CPyL57; + } + CPy_DECREF(cpy_r_r81); + CPy_Raise(cpy_r_r87); + CPy_DECREF(cpy_r_r87); + if (unlikely(!0)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 36, CPyStatic__utils___globals); + goto CPyL51; + } + CPy_Unreachable(); +CPyL51: ; + cpy_r_r88 = NULL; + return cpy_r_r88; +CPyL52: ; + CPy_DecRef(cpy_r_r29); + goto CPyL51; +CPyL53: ; + CPyTagged_DecRef(cpy_r_r36); + goto CPyL51; +CPyL54: ; + CPy_DecRef(cpy_r_r40); + goto CPyL51; +CPyL55: ; + CPy_DecRef(cpy_r_r64); + CPy_DecRef(cpy_r_r67); + goto CPyL51; +CPyL56: ; + CPy_DecRef(cpy_r_r64); + CPy_DecRef(cpy_r_r72); + goto CPyL51; +CPyL57: ; + CPy_DecRef(cpy_r_r81); + goto CPyL51; +} + +PyObject *CPyPy__utils___to_bytes(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + static const char * const kwlist[] = {"val", 0}; + static CPyArg_Parser parser = {"O:to_bytes", kwlist, 0}; + PyObject *obj_val; + if (!CPyArg_ParseStackAndKeywordsOneArg(args, nargs, kwnames, &parser, &obj_val)) { + return NULL; + } + PyObject *arg_val; + if (PyBytes_Check(obj_val) || PyByteArray_Check(obj_val)) + arg_val = obj_val; + else { + arg_val = NULL; + } + if (arg_val != NULL) goto __LL1; + if (PyUnicode_Check(obj_val)) + arg_val = obj_val; + else { + arg_val = NULL; + } + if (arg_val != NULL) goto __LL1; + arg_val = obj_val; + if (arg_val != NULL) goto __LL1; + if (PyBool_Check(obj_val)) + arg_val = obj_val; + else { + arg_val = NULL; + } + if (arg_val != NULL) goto __LL1; + if (PyLong_Check(obj_val)) + arg_val = obj_val; + else { + arg_val = NULL; + } + if (arg_val != NULL) goto __LL1; + CPy_TypeError("union[bytes, str, object, bool, int]", obj_val); + goto fail; +__LL1: ; + PyObject *retval = CPyDef__utils___to_bytes(arg_val); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 11, CPyStatic__utils___globals); + return NULL; +} + +PyObject *CPyDef__utils___hexstr_to_bytes(PyObject *cpy_r_hexstr) { + PyObject *cpy_r_r0; + PyObject *cpy_r_r1; + tuple_T2OO cpy_r_r2; + PyObject *cpy_r_r3; + char cpy_r_r4; + PyObject *cpy_r_r5; + PyObject *cpy_r_r6; + PyObject *cpy_r_non_prefixed_hex; + int64_t cpy_r_r7; + char cpy_r_r8; + CPyTagged cpy_r_r9; + CPyTagged cpy_r_r10; + char cpy_r_r11; + PyObject *cpy_r_r12; + PyObject *cpy_r_r13; + PyObject *cpy_r_padded_hex; + PyObject *cpy_r_r14; + tuple_T3OOO cpy_r_r15; + PyObject *cpy_r_r16; + PyObject *cpy_r_r17; + PyObject *cpy_r_r18; + char cpy_r_r19; + PyObject *cpy_r_r20; + PyObject *cpy_r_r21; + PyObject *cpy_r_r22; + PyObject *cpy_r_r23; + PyObject *cpy_r_r24; + PyObject *cpy_r_r25; + PyObject **cpy_r_r27; + PyObject *cpy_r_r28; + char cpy_r_r29; + PyObject *cpy_r_r30; + char cpy_r_r31; + PyObject **cpy_r_r33; + PyObject *cpy_r_r34; + PyObject *cpy_r_r35; + PyObject *cpy_r_r36; + cpy_r_r0 = CPyStatics[24]; /* '0x' */ + cpy_r_r1 = CPyStatics[25]; /* '0X' */ + CPy_INCREF(cpy_r_r0); + CPy_INCREF(cpy_r_r1); + cpy_r_r2.f0 = cpy_r_r0; + cpy_r_r2.f1 = cpy_r_r1; + cpy_r_r3 = PyTuple_New(2); + if (unlikely(cpy_r_r3 == NULL)) + CPyError_OutOfMemory(); + PyObject *__tmp2 = cpy_r_r2.f0; + PyTuple_SET_ITEM(cpy_r_r3, 0, __tmp2); + PyObject *__tmp3 = cpy_r_r2.f1; + PyTuple_SET_ITEM(cpy_r_r3, 1, __tmp3); + cpy_r_r4 = CPyStr_Startswith(cpy_r_hexstr, cpy_r_r3); + CPy_DECREF(cpy_r_r3); + if (unlikely(cpy_r_r4 == 2)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 40, CPyStatic__utils___globals); + goto CPyL31; + } + if (!cpy_r_r4) goto CPyL5; + cpy_r_r5 = CPyStr_GetSlice(cpy_r_hexstr, 4, 9223372036854775806LL); + if (unlikely(cpy_r_r5 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 41, CPyStatic__utils___globals); + goto CPyL31; + } + if (likely(PyUnicode_Check(cpy_r_r5))) + cpy_r_r6 = cpy_r_r5; + else { + CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 41, CPyStatic__utils___globals, "str", cpy_r_r5); + goto CPyL31; + } + cpy_r_non_prefixed_hex = cpy_r_r6; + goto CPyL6; +CPyL5: ; + CPy_INCREF(cpy_r_hexstr); + cpy_r_non_prefixed_hex = cpy_r_hexstr; +CPyL6: ; + cpy_r_r7 = CPyStr_Size_size_t(cpy_r_hexstr); + cpy_r_r8 = cpy_r_r7 >= 0; + if (unlikely(!cpy_r_r8)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 46, CPyStatic__utils___globals); + goto CPyL32; + } + cpy_r_r9 = cpy_r_r7 << 1; + cpy_r_r10 = CPyTagged_Remainder(cpy_r_r9, 4); + if (unlikely(cpy_r_r10 == CPY_INT_TAG)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 46, CPyStatic__utils___globals); + goto CPyL32; + } + cpy_r_r11 = cpy_r_r10 != 0; + CPyTagged_DECREF(cpy_r_r10); + if (!cpy_r_r11) goto CPyL11; + cpy_r_r12 = CPyStatics[26]; /* '0' */ + cpy_r_r13 = PyUnicode_Concat(cpy_r_r12, cpy_r_non_prefixed_hex); + CPy_DECREF(cpy_r_non_prefixed_hex); + if (unlikely(cpy_r_r13 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 47, CPyStatic__utils___globals); + goto CPyL31; + } + cpy_r_padded_hex = cpy_r_r13; + goto CPyL12; +CPyL11: ; + cpy_r_padded_hex = cpy_r_non_prefixed_hex; +CPyL12: ; + cpy_r_r14 = PyUnicode_AsASCIIString(cpy_r_padded_hex); + if (unlikely(cpy_r_r14 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 52, CPyStatic__utils___globals); + goto CPyL14; + } else + goto CPyL33; +CPyL13: ; + goto CPyL25; +CPyL14: ; + cpy_r_r15 = CPy_CatchError(); + cpy_r_r16 = CPyModule_builtins; + cpy_r_r17 = CPyStatics[27]; /* 'UnicodeDecodeError' */ + cpy_r_r18 = CPyObject_GetAttr(cpy_r_r16, cpy_r_r17); + if (unlikely(cpy_r_r18 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 53, CPyStatic__utils___globals); + goto CPyL34; + } + cpy_r_r19 = CPy_ExceptionMatches(cpy_r_r18); + CPy_DecRef(cpy_r_r18); + if (!cpy_r_r19) goto CPyL35; + cpy_r_r20 = CPyStatics[28]; /* 'hex string ' */ + cpy_r_r21 = CPyStatics[29]; /* ' may only contain [0-9a-fA-F] characters' */ + cpy_r_r22 = CPyStr_Build(3, cpy_r_r20, cpy_r_padded_hex, cpy_r_r21); + CPy_DecRef(cpy_r_padded_hex); + if (unlikely(cpy_r_r22 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 55, CPyStatic__utils___globals); + goto CPyL23; + } + cpy_r_r23 = CPyModule_builtins; + cpy_r_r24 = CPyStatics[14]; /* 'ValueError' */ + cpy_r_r25 = CPyObject_GetAttr(cpy_r_r23, cpy_r_r24); + if (unlikely(cpy_r_r25 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 54, CPyStatic__utils___globals); + goto CPyL36; + } + PyObject *cpy_r_r26[1] = {cpy_r_r22}; + cpy_r_r27 = (PyObject **)&cpy_r_r26; + cpy_r_r28 = PyObject_Vectorcall(cpy_r_r25, cpy_r_r27, 1, 0); + CPy_DecRef(cpy_r_r25); + if (unlikely(cpy_r_r28 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 54, CPyStatic__utils___globals); + goto CPyL36; + } + CPy_DecRef(cpy_r_r22); + CPy_Raise(cpy_r_r28); + CPy_DecRef(cpy_r_r28); + if (unlikely(!0)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 54, CPyStatic__utils___globals); + goto CPyL23; + } else + goto CPyL37; +CPyL20: ; + CPy_Unreachable(); +CPyL21: ; + CPy_Reraise(); + if (!0) { + goto CPyL23; + } else + goto CPyL38; +CPyL22: ; + CPy_Unreachable(); +CPyL23: ; + CPy_RestoreExcInfo(cpy_r_r15); + CPy_DecRef(cpy_r_r15.f0); + CPy_DecRef(cpy_r_r15.f1); + CPy_DecRef(cpy_r_r15.f2); + cpy_r_r29 = CPy_KeepPropagating(); + if (!cpy_r_r29) goto CPyL31; + CPy_Unreachable(); +CPyL25: ; + cpy_r_r30 = CPyStatic__utils___unhexlify; + if (unlikely(cpy_r_r30 == NULL)) { + goto CPyL39; + } else + goto CPyL28; +CPyL26: ; + PyErr_SetString(PyExc_NameError, "value for final name \"unhexlify\" was not set"); + cpy_r_r31 = 0; + if (unlikely(!cpy_r_r31)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 58, CPyStatic__utils___globals); + goto CPyL31; + } + CPy_Unreachable(); +CPyL28: ; + PyObject *cpy_r_r32[1] = {cpy_r_r14}; + cpy_r_r33 = (PyObject **)&cpy_r_r32; + cpy_r_r34 = PyObject_Vectorcall(cpy_r_r30, cpy_r_r33, 1, 0); + if (unlikely(cpy_r_r34 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 58, CPyStatic__utils___globals); + goto CPyL40; + } + CPy_DECREF(cpy_r_r14); + if (likely(PyBytes_Check(cpy_r_r34) || PyByteArray_Check(cpy_r_r34))) + cpy_r_r35 = cpy_r_r34; + else { + CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 58, CPyStatic__utils___globals, "bytes", cpy_r_r34); + goto CPyL31; + } + return cpy_r_r35; +CPyL31: ; + cpy_r_r36 = NULL; + return cpy_r_r36; +CPyL32: ; + CPy_DecRef(cpy_r_non_prefixed_hex); + goto CPyL31; +CPyL33: ; + CPy_DECREF(cpy_r_padded_hex); + goto CPyL13; +CPyL34: ; + CPy_DecRef(cpy_r_padded_hex); + goto CPyL23; +CPyL35: ; + CPy_DecRef(cpy_r_padded_hex); + goto CPyL21; +CPyL36: ; + CPy_DecRef(cpy_r_r22); + goto CPyL23; +CPyL37: ; + CPy_DecRef(cpy_r_r15.f0); + CPy_DecRef(cpy_r_r15.f1); + CPy_DecRef(cpy_r_r15.f2); + goto CPyL20; +CPyL38: ; + CPy_DecRef(cpy_r_r15.f0); + CPy_DecRef(cpy_r_r15.f1); + CPy_DecRef(cpy_r_r15.f2); + goto CPyL22; +CPyL39: ; + CPy_DecRef(cpy_r_r14); + goto CPyL26; +CPyL40: ; + CPy_DecRef(cpy_r_r14); + goto CPyL31; +} + +PyObject *CPyPy__utils___hexstr_to_bytes(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + static const char * const kwlist[] = {"hexstr", 0}; + static CPyArg_Parser parser = {"O:hexstr_to_bytes", kwlist, 0}; + PyObject *obj_hexstr; + if (!CPyArg_ParseStackAndKeywordsOneArg(args, nargs, kwnames, &parser, &obj_hexstr)) { + return NULL; + } + PyObject *arg_hexstr; + if (likely(PyUnicode_Check(obj_hexstr))) + arg_hexstr = obj_hexstr; + else { + CPy_TypeError("str", obj_hexstr); + goto fail; + } + PyObject *retval = CPyDef__utils___hexstr_to_bytes(arg_hexstr); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 39, CPyStatic__utils___globals); + return NULL; +} + +char CPyDef__utils_____top_level__(void) { + PyObject *cpy_r_r0; + PyObject *cpy_r_r1; + char cpy_r_r2; + PyObject *cpy_r_r3; + PyObject *cpy_r_r4; + PyObject **cpy_r_r5; + void *cpy_r_r7; + void *cpy_r_r9; + PyObject *cpy_r_r10; + PyObject *cpy_r_r11; + PyObject *cpy_r_r12; + PyObject *cpy_r_r13; + char cpy_r_r14; + PyObject *cpy_r_r15; + PyObject *cpy_r_r16; + PyObject *cpy_r_r17; + PyObject *cpy_r_r18; + PyObject *cpy_r_r19; + PyObject *cpy_r_r20; + PyObject *cpy_r_r21; + PyObject *cpy_r_r22; + PyObject *cpy_r_r23; + int32_t cpy_r_r24; + char cpy_r_r25; + char cpy_r_r26; + cpy_r_r0 = CPyModule_builtins; + cpy_r_r1 = (PyObject *)&_Py_NoneStruct; + cpy_r_r2 = cpy_r_r0 != cpy_r_r1; + if (cpy_r_r2) goto CPyL3; + cpy_r_r3 = CPyStatics[3]; /* 'builtins' */ + cpy_r_r4 = PyImport_Import(cpy_r_r3); + if (unlikely(cpy_r_r4 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "", -1, CPyStatic__utils___globals); + goto CPyL8; + } + CPyModule_builtins = cpy_r_r4; + CPy_INCREF(CPyModule_builtins); + CPy_DECREF(cpy_r_r4); +CPyL3: ; + cpy_r_r5 = (PyObject **)&CPyModule_binascii; + PyObject **cpy_r_r6[1] = {cpy_r_r5}; + cpy_r_r7 = (void *)&cpy_r_r6; + int64_t cpy_r_r8[1] = {1}; + cpy_r_r9 = (void *)&cpy_r_r8; + cpy_r_r10 = CPyStatics[73]; /* (('binascii', 'binascii', 'binascii'),) */ + cpy_r_r11 = CPyStatic__utils___globals; + cpy_r_r12 = CPyStatics[31]; /* 'faster_hexbytes/_utils.py' */ + cpy_r_r13 = CPyStatics[32]; /* '' */ + cpy_r_r14 = CPyImport_ImportMany(cpy_r_r10, cpy_r_r7, cpy_r_r11, cpy_r_r12, cpy_r_r13, cpy_r_r9); + if (!cpy_r_r14) goto CPyL8; + cpy_r_r15 = CPyStatics[74]; /* ('Final', 'Union') */ + cpy_r_r16 = CPyStatics[35]; /* 'typing' */ + cpy_r_r17 = CPyStatic__utils___globals; + cpy_r_r18 = CPyImport_ImportFromMany(cpy_r_r16, cpy_r_r15, cpy_r_r15, cpy_r_r17); + if (unlikely(cpy_r_r18 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "", 2, CPyStatic__utils___globals); + goto CPyL8; + } + CPyModule_typing = cpy_r_r18; + CPy_INCREF(CPyModule_typing); + CPy_DECREF(cpy_r_r18); + cpy_r_r19 = CPyModule_binascii; + cpy_r_r20 = CPyStatics[36]; /* 'unhexlify' */ + cpy_r_r21 = CPyObject_GetAttr(cpy_r_r19, cpy_r_r20); + if (unlikely(cpy_r_r21 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "", 8, CPyStatic__utils___globals); + goto CPyL8; + } + CPyStatic__utils___unhexlify = cpy_r_r21; + CPy_INCREF(CPyStatic__utils___unhexlify); + cpy_r_r22 = CPyStatic__utils___globals; + cpy_r_r23 = CPyStatics[36]; /* 'unhexlify' */ + cpy_r_r24 = CPyDict_SetItem(cpy_r_r22, cpy_r_r23, cpy_r_r21); + CPy_DECREF(cpy_r_r21); + cpy_r_r25 = cpy_r_r24 >= 0; + if (unlikely(!cpy_r_r25)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "", 8, CPyStatic__utils___globals); + goto CPyL8; + } + return 1; +CPyL8: ; + cpy_r_r26 = 2; + return cpy_r_r26; +} + +static PyObject *CPyDunder___get__main_____new___3_HexBytes_obj(PyObject *self, PyObject *instance, PyObject *owner) { + instance = instance ? instance : Py_None; + return CPyDef_main_____new___3_HexBytes_obj_____get__(self, instance, owner); +} +PyObject *CPyDef_main_____mypyc___3__new___3_HexBytes_obj_setup(PyObject *cpy_r_type); +PyObject *CPyDef_main_____new___3_HexBytes_obj(void); + +static PyObject * +main_____new___3_HexBytes_obj_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + if (type != CPyType_main_____new___3_HexBytes_obj) { + PyErr_SetString(PyExc_TypeError, "interpreted classes cannot inherit from compiled"); + return NULL; + } + PyObject *self = CPyDef_main_____mypyc___3__new___3_HexBytes_obj_setup((PyObject*)type); + if (self == NULL) + return NULL; + return self; +} + +static int +main_____new___3_HexBytes_obj_traverse(faster_hexbytes___main_____new___3_HexBytes_objObject *self, visitproc visit, void *arg) +{ + return 0; +} + +static int +main_____new___3_HexBytes_obj_clear(faster_hexbytes___main_____new___3_HexBytes_objObject *self) +{ + return 0; +} + +static void +main_____new___3_HexBytes_obj_dealloc(faster_hexbytes___main_____new___3_HexBytes_objObject *self) +{ + PyObject_GC_UnTrack(self); + if (main_____new___3_HexBytes_obj_free_instance == NULL) { + main_____new___3_HexBytes_obj_free_instance = self; + return; + } + CPy_TRASHCAN_BEGIN(self, main_____new___3_HexBytes_obj_dealloc) + main_____new___3_HexBytes_obj_clear(self); + Py_TYPE(self)->tp_free((PyObject *)self); + CPy_TRASHCAN_END(self) +} + +static CPyVTableItem main_____new___3_HexBytes_obj_vtable[2]; +static bool +CPyDef_main_____new___3_HexBytes_obj_trait_vtable_setup(void) +{ + CPyVTableItem main_____new___3_HexBytes_obj_vtable_scratch[] = { + (CPyVTableItem)CPyDef_main_____new___3_HexBytes_obj_____call__, + (CPyVTableItem)CPyDef_main_____new___3_HexBytes_obj_____get__, + }; + memcpy(main_____new___3_HexBytes_obj_vtable, main_____new___3_HexBytes_obj_vtable_scratch, sizeof(main_____new___3_HexBytes_obj_vtable)); + return 1; +} + +static PyMethodDef main_____new___3_HexBytes_obj_methods[] = { + {"__call__", + (PyCFunction)CPyPy_main_____new___3_HexBytes_obj_____call__, + METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__call__($cls, val)\n--\n\n")}, + {"__get__", + (PyCFunction)CPyPy_main_____new___3_HexBytes_obj_____get__, + METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__get__($instance, owner)\n--\n\n")}, + {"__setstate__", (PyCFunction)CPyPickle_SetState, METH_O, NULL}, + {"__getstate__", (PyCFunction)CPyPickle_GetState, METH_NOARGS, NULL}, + {NULL} /* Sentinel */ +}; + +static PyTypeObject CPyType_main_____new___3_HexBytes_obj_template_ = { + PyVarObject_HEAD_INIT(NULL, 0) + .tp_name = "__new___HexBytes_obj", + .tp_new = main_____new___3_HexBytes_obj_new, + .tp_dealloc = (destructor)main_____new___3_HexBytes_obj_dealloc, + .tp_traverse = (traverseproc)main_____new___3_HexBytes_obj_traverse, + .tp_clear = (inquiry)main_____new___3_HexBytes_obj_clear, + .tp_methods = main_____new___3_HexBytes_obj_methods, + .tp_call = PyVectorcall_Call, + .tp_descr_get = CPyDunder___get__main_____new___3_HexBytes_obj, + .tp_basicsize = sizeof(faster_hexbytes___main_____new___3_HexBytes_objObject), + .tp_vectorcall_offset = offsetof(faster_hexbytes___main_____new___3_HexBytes_objObject, vectorcall), + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | _Py_TPFLAGS_HAVE_VECTORCALL, + .tp_doc = PyDoc_STR("__new___HexBytes_obj()\n--\n\n"), +}; +static PyTypeObject *CPyType_main_____new___3_HexBytes_obj_template = &CPyType_main_____new___3_HexBytes_obj_template_; + +PyObject *CPyDef_main_____mypyc___3__new___3_HexBytes_obj_setup(PyObject *cpy_r_type) +{ + PyTypeObject *type = (PyTypeObject*)cpy_r_type; + faster_hexbytes___main_____new___3_HexBytes_objObject *self; + if (main_____new___3_HexBytes_obj_free_instance != NULL) { + self = main_____new___3_HexBytes_obj_free_instance; + main_____new___3_HexBytes_obj_free_instance = NULL; + Py_SET_REFCNT(self, 1); + PyObject_GC_Track(self); + return (PyObject *)self; + } + self = (faster_hexbytes___main_____new___3_HexBytes_objObject *)type->tp_alloc(type, 0); + if (self == NULL) + return NULL; + self->vtable = main_____new___3_HexBytes_obj_vtable; + self->vectorcall = CPyPy_main_____new___3_HexBytes_obj_____call__; + return (PyObject *)self; +} + +PyObject *CPyDef_main_____new___3_HexBytes_obj(void) +{ + PyObject *self = CPyDef_main_____mypyc___3__new___3_HexBytes_obj_setup((PyObject *)CPyType_main_____new___3_HexBytes_obj); + if (self == NULL) + return NULL; + return self; +} + + +static PyObject *CPyDunder___get__main_____getitem___3_HexBytes_obj(PyObject *self, PyObject *instance, PyObject *owner) { + instance = instance ? instance : Py_None; + return CPyDef_main_____getitem___3_HexBytes_obj_____get__(self, instance, owner); +} +PyObject *CPyDef_main_____mypyc___3__getitem___3_HexBytes_obj_setup(PyObject *cpy_r_type); +PyObject *CPyDef_main_____getitem___3_HexBytes_obj(void); + +static PyObject * +main_____getitem___3_HexBytes_obj_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + if (type != CPyType_main_____getitem___3_HexBytes_obj) { + PyErr_SetString(PyExc_TypeError, "interpreted classes cannot inherit from compiled"); + return NULL; + } + PyObject *self = CPyDef_main_____mypyc___3__getitem___3_HexBytes_obj_setup((PyObject*)type); + if (self == NULL) + return NULL; + return self; +} + +static int +main_____getitem___3_HexBytes_obj_traverse(faster_hexbytes___main_____getitem___3_HexBytes_objObject *self, visitproc visit, void *arg) +{ + return 0; +} + +static int +main_____getitem___3_HexBytes_obj_clear(faster_hexbytes___main_____getitem___3_HexBytes_objObject *self) +{ + return 0; +} + +static void +main_____getitem___3_HexBytes_obj_dealloc(faster_hexbytes___main_____getitem___3_HexBytes_objObject *self) +{ + PyObject_GC_UnTrack(self); + if (main_____getitem___3_HexBytes_obj_free_instance == NULL) { + main_____getitem___3_HexBytes_obj_free_instance = self; + return; + } + CPy_TRASHCAN_BEGIN(self, main_____getitem___3_HexBytes_obj_dealloc) + main_____getitem___3_HexBytes_obj_clear(self); + Py_TYPE(self)->tp_free((PyObject *)self); + CPy_TRASHCAN_END(self) +} + +static CPyVTableItem main_____getitem___3_HexBytes_obj_vtable[2]; +static bool +CPyDef_main_____getitem___3_HexBytes_obj_trait_vtable_setup(void) +{ + CPyVTableItem main_____getitem___3_HexBytes_obj_vtable_scratch[] = { + (CPyVTableItem)CPyDef_main_____getitem___3_HexBytes_obj_____call__, + (CPyVTableItem)CPyDef_main_____getitem___3_HexBytes_obj_____get__, + }; + memcpy(main_____getitem___3_HexBytes_obj_vtable, main_____getitem___3_HexBytes_obj_vtable_scratch, sizeof(main_____getitem___3_HexBytes_obj_vtable)); + return 1; +} + +static PyMethodDef main_____getitem___3_HexBytes_obj_methods[] = { + {"__call__", + (PyCFunction)CPyPy_main_____getitem___3_HexBytes_obj_____call__, + METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__call__($self, key, /)\n--\n\n")}, + {"__get__", + (PyCFunction)CPyPy_main_____getitem___3_HexBytes_obj_____get__, + METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__get__($instance, owner)\n--\n\n")}, + {"__setstate__", (PyCFunction)CPyPickle_SetState, METH_O, NULL}, + {"__getstate__", (PyCFunction)CPyPickle_GetState, METH_NOARGS, NULL}, + {NULL} /* Sentinel */ +}; + +static PyTypeObject CPyType_main_____getitem___3_HexBytes_obj_template_ = { + PyVarObject_HEAD_INIT(NULL, 0) + .tp_name = "__getitem___HexBytes_obj", + .tp_new = main_____getitem___3_HexBytes_obj_new, + .tp_dealloc = (destructor)main_____getitem___3_HexBytes_obj_dealloc, + .tp_traverse = (traverseproc)main_____getitem___3_HexBytes_obj_traverse, + .tp_clear = (inquiry)main_____getitem___3_HexBytes_obj_clear, + .tp_methods = main_____getitem___3_HexBytes_obj_methods, + .tp_call = PyVectorcall_Call, + .tp_descr_get = CPyDunder___get__main_____getitem___3_HexBytes_obj, + .tp_basicsize = sizeof(faster_hexbytes___main_____getitem___3_HexBytes_objObject), + .tp_vectorcall_offset = offsetof(faster_hexbytes___main_____getitem___3_HexBytes_objObject, vectorcall), + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | _Py_TPFLAGS_HAVE_VECTORCALL, + .tp_doc = PyDoc_STR("__getitem___HexBytes_obj()\n--\n\n"), +}; +static PyTypeObject *CPyType_main_____getitem___3_HexBytes_obj_template = &CPyType_main_____getitem___3_HexBytes_obj_template_; + +PyObject *CPyDef_main_____mypyc___3__getitem___3_HexBytes_obj_setup(PyObject *cpy_r_type) +{ + PyTypeObject *type = (PyTypeObject*)cpy_r_type; + faster_hexbytes___main_____getitem___3_HexBytes_objObject *self; + if (main_____getitem___3_HexBytes_obj_free_instance != NULL) { + self = main_____getitem___3_HexBytes_obj_free_instance; + main_____getitem___3_HexBytes_obj_free_instance = NULL; + Py_SET_REFCNT(self, 1); + PyObject_GC_Track(self); + return (PyObject *)self; + } + self = (faster_hexbytes___main_____getitem___3_HexBytes_objObject *)type->tp_alloc(type, 0); + if (self == NULL) + return NULL; + self->vtable = main_____getitem___3_HexBytes_obj_vtable; + self->vectorcall = CPyPy_main_____getitem___3_HexBytes_obj_____call__; + return (PyObject *)self; +} + +PyObject *CPyDef_main_____getitem___3_HexBytes_obj(void) +{ + PyObject *self = CPyDef_main_____mypyc___3__getitem___3_HexBytes_obj_setup((PyObject *)CPyType_main_____getitem___3_HexBytes_obj); + if (self == NULL) + return NULL; + return self; +} + + +static PyObject *CPyDunder___get__main_____repr___3_HexBytes_obj(PyObject *self, PyObject *instance, PyObject *owner) { + instance = instance ? instance : Py_None; + return CPyDef_main_____repr___3_HexBytes_obj_____get__(self, instance, owner); +} +PyObject *CPyDef_main_____mypyc___3__repr___3_HexBytes_obj_setup(PyObject *cpy_r_type); +PyObject *CPyDef_main_____repr___3_HexBytes_obj(void); + +static PyObject * +main_____repr___3_HexBytes_obj_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + if (type != CPyType_main_____repr___3_HexBytes_obj) { + PyErr_SetString(PyExc_TypeError, "interpreted classes cannot inherit from compiled"); + return NULL; + } + PyObject *self = CPyDef_main_____mypyc___3__repr___3_HexBytes_obj_setup((PyObject*)type); + if (self == NULL) + return NULL; + return self; +} + +static int +main_____repr___3_HexBytes_obj_traverse(faster_hexbytes___main_____repr___3_HexBytes_objObject *self, visitproc visit, void *arg) +{ + return 0; +} + +static int +main_____repr___3_HexBytes_obj_clear(faster_hexbytes___main_____repr___3_HexBytes_objObject *self) +{ + return 0; +} + +static void +main_____repr___3_HexBytes_obj_dealloc(faster_hexbytes___main_____repr___3_HexBytes_objObject *self) +{ + PyObject_GC_UnTrack(self); + if (main_____repr___3_HexBytes_obj_free_instance == NULL) { + main_____repr___3_HexBytes_obj_free_instance = self; + return; + } + CPy_TRASHCAN_BEGIN(self, main_____repr___3_HexBytes_obj_dealloc) + main_____repr___3_HexBytes_obj_clear(self); + Py_TYPE(self)->tp_free((PyObject *)self); + CPy_TRASHCAN_END(self) +} + +static CPyVTableItem main_____repr___3_HexBytes_obj_vtable[2]; +static bool +CPyDef_main_____repr___3_HexBytes_obj_trait_vtable_setup(void) +{ + CPyVTableItem main_____repr___3_HexBytes_obj_vtable_scratch[] = { + (CPyVTableItem)CPyDef_main_____repr___3_HexBytes_obj_____call__, + (CPyVTableItem)CPyDef_main_____repr___3_HexBytes_obj_____get__, + }; + memcpy(main_____repr___3_HexBytes_obj_vtable, main_____repr___3_HexBytes_obj_vtable_scratch, sizeof(main_____repr___3_HexBytes_obj_vtable)); + return 1; +} + +static PyMethodDef main_____repr___3_HexBytes_obj_methods[] = { + {"__call__", + (PyCFunction)CPyPy_main_____repr___3_HexBytes_obj_____call__, + METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__call__($self, /)\n--\n\n")}, + {"__get__", + (PyCFunction)CPyPy_main_____repr___3_HexBytes_obj_____get__, + METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__get__($instance, owner)\n--\n\n")}, + {"__setstate__", (PyCFunction)CPyPickle_SetState, METH_O, NULL}, + {"__getstate__", (PyCFunction)CPyPickle_GetState, METH_NOARGS, NULL}, + {NULL} /* Sentinel */ +}; + +static PyTypeObject CPyType_main_____repr___3_HexBytes_obj_template_ = { + PyVarObject_HEAD_INIT(NULL, 0) + .tp_name = "__repr___HexBytes_obj", + .tp_new = main_____repr___3_HexBytes_obj_new, + .tp_dealloc = (destructor)main_____repr___3_HexBytes_obj_dealloc, + .tp_traverse = (traverseproc)main_____repr___3_HexBytes_obj_traverse, + .tp_clear = (inquiry)main_____repr___3_HexBytes_obj_clear, + .tp_methods = main_____repr___3_HexBytes_obj_methods, + .tp_call = PyVectorcall_Call, + .tp_descr_get = CPyDunder___get__main_____repr___3_HexBytes_obj, + .tp_basicsize = sizeof(faster_hexbytes___main_____repr___3_HexBytes_objObject), + .tp_vectorcall_offset = offsetof(faster_hexbytes___main_____repr___3_HexBytes_objObject, vectorcall), + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | _Py_TPFLAGS_HAVE_VECTORCALL, + .tp_doc = PyDoc_STR("__repr___HexBytes_obj()\n--\n\n"), +}; +static PyTypeObject *CPyType_main_____repr___3_HexBytes_obj_template = &CPyType_main_____repr___3_HexBytes_obj_template_; + +PyObject *CPyDef_main_____mypyc___3__repr___3_HexBytes_obj_setup(PyObject *cpy_r_type) +{ + PyTypeObject *type = (PyTypeObject*)cpy_r_type; + faster_hexbytes___main_____repr___3_HexBytes_objObject *self; + if (main_____repr___3_HexBytes_obj_free_instance != NULL) { + self = main_____repr___3_HexBytes_obj_free_instance; + main_____repr___3_HexBytes_obj_free_instance = NULL; + Py_SET_REFCNT(self, 1); + PyObject_GC_Track(self); + return (PyObject *)self; + } + self = (faster_hexbytes___main_____repr___3_HexBytes_objObject *)type->tp_alloc(type, 0); + if (self == NULL) + return NULL; + self->vtable = main_____repr___3_HexBytes_obj_vtable; + self->vectorcall = CPyPy_main_____repr___3_HexBytes_obj_____call__; + return (PyObject *)self; +} + +PyObject *CPyDef_main_____repr___3_HexBytes_obj(void) +{ + PyObject *self = CPyDef_main_____mypyc___3__repr___3_HexBytes_obj_setup((PyObject *)CPyType_main_____repr___3_HexBytes_obj); + if (self == NULL) + return NULL; + return self; +} + + +static PyObject *CPyDunder___get__main___to_0x_hex_HexBytes_obj(PyObject *self, PyObject *instance, PyObject *owner) { + instance = instance ? instance : Py_None; + return CPyDef_main___to_0x_hex_HexBytes_obj_____get__(self, instance, owner); +} +PyObject *CPyDef_main_____mypyc__to_0x_hex_HexBytes_obj_setup(PyObject *cpy_r_type); +PyObject *CPyDef_main___to_0x_hex_HexBytes_obj(void); + +static PyObject * +main___to_0x_hex_HexBytes_obj_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + if (type != CPyType_main___to_0x_hex_HexBytes_obj) { + PyErr_SetString(PyExc_TypeError, "interpreted classes cannot inherit from compiled"); + return NULL; + } + PyObject *self = CPyDef_main_____mypyc__to_0x_hex_HexBytes_obj_setup((PyObject*)type); + if (self == NULL) + return NULL; + return self; +} + +static int +main___to_0x_hex_HexBytes_obj_traverse(faster_hexbytes___main___to_0x_hex_HexBytes_objObject *self, visitproc visit, void *arg) +{ + return 0; +} + +static int +main___to_0x_hex_HexBytes_obj_clear(faster_hexbytes___main___to_0x_hex_HexBytes_objObject *self) +{ + return 0; +} + +static void +main___to_0x_hex_HexBytes_obj_dealloc(faster_hexbytes___main___to_0x_hex_HexBytes_objObject *self) +{ + PyObject_GC_UnTrack(self); + if (main___to_0x_hex_HexBytes_obj_free_instance == NULL) { + main___to_0x_hex_HexBytes_obj_free_instance = self; + return; + } + CPy_TRASHCAN_BEGIN(self, main___to_0x_hex_HexBytes_obj_dealloc) + main___to_0x_hex_HexBytes_obj_clear(self); + Py_TYPE(self)->tp_free((PyObject *)self); + CPy_TRASHCAN_END(self) +} + +static CPyVTableItem main___to_0x_hex_HexBytes_obj_vtable[2]; +static bool +CPyDef_main___to_0x_hex_HexBytes_obj_trait_vtable_setup(void) +{ + CPyVTableItem main___to_0x_hex_HexBytes_obj_vtable_scratch[] = { + (CPyVTableItem)CPyDef_main___to_0x_hex_HexBytes_obj_____call__, + (CPyVTableItem)CPyDef_main___to_0x_hex_HexBytes_obj_____get__, + }; + memcpy(main___to_0x_hex_HexBytes_obj_vtable, main___to_0x_hex_HexBytes_obj_vtable_scratch, sizeof(main___to_0x_hex_HexBytes_obj_vtable)); + return 1; +} + +static PyMethodDef main___to_0x_hex_HexBytes_obj_methods[] = { + {"__call__", + (PyCFunction)CPyPy_main___to_0x_hex_HexBytes_obj_____call__, + METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__call__($self)\n--\n\n")}, + {"__get__", + (PyCFunction)CPyPy_main___to_0x_hex_HexBytes_obj_____get__, + METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__get__($instance, owner)\n--\n\n")}, + {"__setstate__", (PyCFunction)CPyPickle_SetState, METH_O, NULL}, + {"__getstate__", (PyCFunction)CPyPickle_GetState, METH_NOARGS, NULL}, + {NULL} /* Sentinel */ +}; + +static PyTypeObject CPyType_main___to_0x_hex_HexBytes_obj_template_ = { + PyVarObject_HEAD_INIT(NULL, 0) + .tp_name = "to_0x_hex_HexBytes_obj", + .tp_new = main___to_0x_hex_HexBytes_obj_new, + .tp_dealloc = (destructor)main___to_0x_hex_HexBytes_obj_dealloc, + .tp_traverse = (traverseproc)main___to_0x_hex_HexBytes_obj_traverse, + .tp_clear = (inquiry)main___to_0x_hex_HexBytes_obj_clear, + .tp_methods = main___to_0x_hex_HexBytes_obj_methods, + .tp_call = PyVectorcall_Call, + .tp_descr_get = CPyDunder___get__main___to_0x_hex_HexBytes_obj, + .tp_basicsize = sizeof(faster_hexbytes___main___to_0x_hex_HexBytes_objObject), + .tp_vectorcall_offset = offsetof(faster_hexbytes___main___to_0x_hex_HexBytes_objObject, vectorcall), + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | _Py_TPFLAGS_HAVE_VECTORCALL, + .tp_doc = PyDoc_STR("to_0x_hex_HexBytes_obj()\n--\n\n"), +}; +static PyTypeObject *CPyType_main___to_0x_hex_HexBytes_obj_template = &CPyType_main___to_0x_hex_HexBytes_obj_template_; + +PyObject *CPyDef_main_____mypyc__to_0x_hex_HexBytes_obj_setup(PyObject *cpy_r_type) +{ + PyTypeObject *type = (PyTypeObject*)cpy_r_type; + faster_hexbytes___main___to_0x_hex_HexBytes_objObject *self; + if (main___to_0x_hex_HexBytes_obj_free_instance != NULL) { + self = main___to_0x_hex_HexBytes_obj_free_instance; + main___to_0x_hex_HexBytes_obj_free_instance = NULL; + Py_SET_REFCNT(self, 1); + PyObject_GC_Track(self); + return (PyObject *)self; + } + self = (faster_hexbytes___main___to_0x_hex_HexBytes_objObject *)type->tp_alloc(type, 0); + if (self == NULL) + return NULL; + self->vtable = main___to_0x_hex_HexBytes_obj_vtable; + self->vectorcall = CPyPy_main___to_0x_hex_HexBytes_obj_____call__; + return (PyObject *)self; +} + +PyObject *CPyDef_main___to_0x_hex_HexBytes_obj(void) +{ + PyObject *self = CPyDef_main_____mypyc__to_0x_hex_HexBytes_obj_setup((PyObject *)CPyType_main___to_0x_hex_HexBytes_obj); + if (self == NULL) + return NULL; + return self; +} + + +static PyObject *CPyDunder___get__main_____reduce___3_HexBytes_obj(PyObject *self, PyObject *instance, PyObject *owner) { + instance = instance ? instance : Py_None; + return CPyDef_main_____reduce___3_HexBytes_obj_____get__(self, instance, owner); +} +PyObject *CPyDef_main_____mypyc___3__reduce___3_HexBytes_obj_setup(PyObject *cpy_r_type); +PyObject *CPyDef_main_____reduce___3_HexBytes_obj(void); + +static PyObject * +main_____reduce___3_HexBytes_obj_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + if (type != CPyType_main_____reduce___3_HexBytes_obj) { + PyErr_SetString(PyExc_TypeError, "interpreted classes cannot inherit from compiled"); + return NULL; + } + PyObject *self = CPyDef_main_____mypyc___3__reduce___3_HexBytes_obj_setup((PyObject*)type); + if (self == NULL) + return NULL; + return self; +} + +static int +main_____reduce___3_HexBytes_obj_traverse(faster_hexbytes___main_____reduce___3_HexBytes_objObject *self, visitproc visit, void *arg) +{ + return 0; +} + +static int +main_____reduce___3_HexBytes_obj_clear(faster_hexbytes___main_____reduce___3_HexBytes_objObject *self) +{ + return 0; +} + +static void +main_____reduce___3_HexBytes_obj_dealloc(faster_hexbytes___main_____reduce___3_HexBytes_objObject *self) +{ + PyObject_GC_UnTrack(self); + if (main_____reduce___3_HexBytes_obj_free_instance == NULL) { + main_____reduce___3_HexBytes_obj_free_instance = self; + return; + } + CPy_TRASHCAN_BEGIN(self, main_____reduce___3_HexBytes_obj_dealloc) + main_____reduce___3_HexBytes_obj_clear(self); + Py_TYPE(self)->tp_free((PyObject *)self); + CPy_TRASHCAN_END(self) +} + +static CPyVTableItem main_____reduce___3_HexBytes_obj_vtable[2]; +static bool +CPyDef_main_____reduce___3_HexBytes_obj_trait_vtable_setup(void) +{ + CPyVTableItem main_____reduce___3_HexBytes_obj_vtable_scratch[] = { + (CPyVTableItem)CPyDef_main_____reduce___3_HexBytes_obj_____call__, + (CPyVTableItem)CPyDef_main_____reduce___3_HexBytes_obj_____get__, + }; + memcpy(main_____reduce___3_HexBytes_obj_vtable, main_____reduce___3_HexBytes_obj_vtable_scratch, sizeof(main_____reduce___3_HexBytes_obj_vtable)); + return 1; +} + +static PyMethodDef main_____reduce___3_HexBytes_obj_methods[] = { + {"__call__", + (PyCFunction)CPyPy_main_____reduce___3_HexBytes_obj_____call__, + METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__call__($self)\n--\n\n")}, + {"__get__", + (PyCFunction)CPyPy_main_____reduce___3_HexBytes_obj_____get__, + METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__get__($instance, owner)\n--\n\n")}, + {"__setstate__", (PyCFunction)CPyPickle_SetState, METH_O, NULL}, + {"__getstate__", (PyCFunction)CPyPickle_GetState, METH_NOARGS, NULL}, + {NULL} /* Sentinel */ +}; + +static PyTypeObject CPyType_main_____reduce___3_HexBytes_obj_template_ = { + PyVarObject_HEAD_INIT(NULL, 0) + .tp_name = "__reduce___HexBytes_obj", + .tp_new = main_____reduce___3_HexBytes_obj_new, + .tp_dealloc = (destructor)main_____reduce___3_HexBytes_obj_dealloc, + .tp_traverse = (traverseproc)main_____reduce___3_HexBytes_obj_traverse, + .tp_clear = (inquiry)main_____reduce___3_HexBytes_obj_clear, + .tp_methods = main_____reduce___3_HexBytes_obj_methods, + .tp_call = PyVectorcall_Call, + .tp_descr_get = CPyDunder___get__main_____reduce___3_HexBytes_obj, + .tp_basicsize = sizeof(faster_hexbytes___main_____reduce___3_HexBytes_objObject), + .tp_vectorcall_offset = offsetof(faster_hexbytes___main_____reduce___3_HexBytes_objObject, vectorcall), + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | _Py_TPFLAGS_HAVE_VECTORCALL, + .tp_doc = PyDoc_STR("__reduce___HexBytes_obj()\n--\n\n"), +}; +static PyTypeObject *CPyType_main_____reduce___3_HexBytes_obj_template = &CPyType_main_____reduce___3_HexBytes_obj_template_; + +PyObject *CPyDef_main_____mypyc___3__reduce___3_HexBytes_obj_setup(PyObject *cpy_r_type) +{ + PyTypeObject *type = (PyTypeObject*)cpy_r_type; + faster_hexbytes___main_____reduce___3_HexBytes_objObject *self; + if (main_____reduce___3_HexBytes_obj_free_instance != NULL) { + self = main_____reduce___3_HexBytes_obj_free_instance; + main_____reduce___3_HexBytes_obj_free_instance = NULL; + Py_SET_REFCNT(self, 1); + PyObject_GC_Track(self); + return (PyObject *)self; + } + self = (faster_hexbytes___main_____reduce___3_HexBytes_objObject *)type->tp_alloc(type, 0); + if (self == NULL) + return NULL; + self->vtable = main_____reduce___3_HexBytes_obj_vtable; + self->vectorcall = CPyPy_main_____reduce___3_HexBytes_obj_____call__; + return (PyObject *)self; +} + +PyObject *CPyDef_main_____reduce___3_HexBytes_obj(void) +{ + PyObject *self = CPyDef_main_____mypyc___3__reduce___3_HexBytes_obj_setup((PyObject *)CPyType_main_____reduce___3_HexBytes_obj); + if (self == NULL) + return NULL; + return self; +} + +static PyMethodDef mainmodule_methods[] = { + {NULL, NULL, 0, NULL} +}; + +int CPyExec_faster_hexbytes___main(PyObject *module) +{ + PyObject* modname = NULL; + modname = PyObject_GetAttrString((PyObject *)CPyModule_faster_hexbytes___main__internal, "__name__"); + CPyStatic_main___globals = PyModule_GetDict(CPyModule_faster_hexbytes___main__internal); + if (unlikely(CPyStatic_main___globals == NULL)) + goto fail; + CPyType_main_____new___3_HexBytes_obj = (PyTypeObject *)CPyType_FromTemplate((PyObject *)CPyType_main_____new___3_HexBytes_obj_template, NULL, modname); + if (unlikely(!CPyType_main_____new___3_HexBytes_obj)) + goto fail; + CPyType_main_____getitem___3_HexBytes_obj = (PyTypeObject *)CPyType_FromTemplate((PyObject *)CPyType_main_____getitem___3_HexBytes_obj_template, NULL, modname); + if (unlikely(!CPyType_main_____getitem___3_HexBytes_obj)) + goto fail; + CPyType_main_____repr___3_HexBytes_obj = (PyTypeObject *)CPyType_FromTemplate((PyObject *)CPyType_main_____repr___3_HexBytes_obj_template, NULL, modname); + if (unlikely(!CPyType_main_____repr___3_HexBytes_obj)) + goto fail; + CPyType_main___to_0x_hex_HexBytes_obj = (PyTypeObject *)CPyType_FromTemplate((PyObject *)CPyType_main___to_0x_hex_HexBytes_obj_template, NULL, modname); + if (unlikely(!CPyType_main___to_0x_hex_HexBytes_obj)) + goto fail; + CPyType_main_____reduce___3_HexBytes_obj = (PyTypeObject *)CPyType_FromTemplate((PyObject *)CPyType_main_____reduce___3_HexBytes_obj_template, NULL, modname); + if (unlikely(!CPyType_main_____reduce___3_HexBytes_obj)) + goto fail; + if (CPyGlobalsInit() < 0) + goto fail; + char result = CPyDef_main_____top_level__(); + if (result == 2) + goto fail; + Py_DECREF(modname); + return 0; + fail: + Py_CLEAR(CPyModule_faster_hexbytes___main__internal); + Py_CLEAR(modname); + CPy_XDECREF(CPyStatic_main____bytes_new); + CPyStatic_main____bytes_new = NULL; + Py_CLEAR(CPyType_main___HexBytes); + Py_CLEAR(CPyType_main_____new___3_HexBytes_obj); + Py_CLEAR(CPyType_main_____getitem___3_HexBytes_obj); + Py_CLEAR(CPyType_main_____repr___3_HexBytes_obj); + Py_CLEAR(CPyType_main___to_0x_hex_HexBytes_obj); + Py_CLEAR(CPyType_main_____reduce___3_HexBytes_obj); + return -1; +} +static struct PyModuleDef mainmodule = { + PyModuleDef_HEAD_INIT, + "faster_hexbytes.main", + NULL, /* docstring */ + 0, /* size of per-interpreter state of the module */ + mainmodule_methods, + NULL, +}; + +PyObject *CPyInit_faster_hexbytes___main(void) +{ + if (CPyModule_faster_hexbytes___main__internal) { + Py_INCREF(CPyModule_faster_hexbytes___main__internal); + return CPyModule_faster_hexbytes___main__internal; + } + CPyModule_faster_hexbytes___main__internal = PyModule_Create(&mainmodule); + if (unlikely(CPyModule_faster_hexbytes___main__internal == NULL)) + goto fail; + if (CPyExec_faster_hexbytes___main(CPyModule_faster_hexbytes___main__internal) != 0) + goto fail; + return CPyModule_faster_hexbytes___main__internal; + fail: + return NULL; +} + +PyObject *CPyDef_main_____new___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner) { + PyObject *cpy_r_r0; + char cpy_r_r1; + PyObject *cpy_r_r2; + PyObject *cpy_r_r3; + cpy_r_r0 = (PyObject *)&_Py_NoneStruct; + cpy_r_r1 = cpy_r_instance == cpy_r_r0; + if (!cpy_r_r1) goto CPyL2; + CPy_INCREF(cpy_r___mypyc_self__); + return cpy_r___mypyc_self__; +CPyL2: ; + cpy_r_r2 = PyMethod_New(cpy_r___mypyc_self__, cpy_r_instance); + if (cpy_r_r2 == NULL) goto CPyL4; + return cpy_r_r2; +CPyL4: ; + cpy_r_r3 = NULL; + return cpy_r_r3; +} + +PyObject *CPyPy_main_____new___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + PyObject *obj___mypyc_self__ = self; + static const char * const kwlist[] = {"instance", "owner", 0}; + static CPyArg_Parser parser = {"OO:__get__", kwlist, 0}; + PyObject *obj_instance; + PyObject *obj_owner; + if (!CPyArg_ParseStackAndKeywordsSimple(args, nargs, kwnames, &parser, &obj_instance, &obj_owner)) { + return NULL; + } + PyObject *arg___mypyc_self__ = obj___mypyc_self__; + PyObject *arg_instance = obj_instance; + PyObject *arg_owner = obj_owner; + PyObject *retval = CPyDef_main_____new___3_HexBytes_obj_____get__(arg___mypyc_self__, arg_instance, arg_owner); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/main.py", "__get__", -1, CPyStatic_main___globals); + return NULL; +} + +PyObject *CPyDef_main_____new___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_cls, PyObject *cpy_r_val) { + PyObject *cpy_r_r0; + PyObject *cpy_r_r1; + char cpy_r_r2; + PyObject **cpy_r_r4; + PyObject *cpy_r_r5; + PyObject *cpy_r_r6; + PyObject *cpy_r_r7; + cpy_r_r0 = CPyDef__utils___to_bytes(cpy_r_val); + if (unlikely(cpy_r_r0 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__new__", 49, CPyStatic_main___globals); + goto CPyL7; + } + cpy_r_r1 = CPyStatic_main____bytes_new; + if (unlikely(cpy_r_r1 == NULL)) { + goto CPyL8; + } else + goto CPyL4; +CPyL2: ; + PyErr_SetString(PyExc_NameError, "value for final name \"_bytes_new\" was not set"); + cpy_r_r2 = 0; + if (unlikely(!cpy_r_r2)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__new__", 50, CPyStatic_main___globals); + goto CPyL7; + } + CPy_Unreachable(); +CPyL4: ; + PyObject *cpy_r_r3[2] = {cpy_r_cls, cpy_r_r0}; + cpy_r_r4 = (PyObject **)&cpy_r_r3; + cpy_r_r5 = PyObject_Vectorcall(cpy_r_r1, cpy_r_r4, 2, 0); + if (unlikely(cpy_r_r5 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__new__", 50, CPyStatic_main___globals); + goto CPyL9; + } + CPy_DECREF(cpy_r_r0); + if (likely(Py_TYPE(cpy_r_r5) == CPyType_main___HexBytes)) + cpy_r_r6 = cpy_r_r5; + else { + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__new__", 50, CPyStatic_main___globals, "faster_hexbytes.main.HexBytes", cpy_r_r5); + goto CPyL7; + } + return cpy_r_r6; +CPyL7: ; + cpy_r_r7 = NULL; + return cpy_r_r7; +CPyL8: ; + CPy_DecRef(cpy_r_r0); + goto CPyL2; +CPyL9: ; + CPy_DecRef(cpy_r_r0); + goto CPyL7; +} + +PyObject *CPyPy_main_____new___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + PyObject *obj___mypyc_self__ = self; + static const char * const kwlist[] = {"cls", "val", 0}; + static CPyArg_Parser parser = {"OO:__call__", kwlist, 0}; + PyObject *obj_cls; + PyObject *obj_val; + if (!CPyArg_ParseStackAndKeywordsSimple(args, PyVectorcall_NARGS(nargs), kwnames, &parser, &obj_cls, &obj_val)) { + return NULL; + } + PyObject *arg___mypyc_self__ = obj___mypyc_self__; + PyObject *arg_cls = obj_cls; + PyObject *arg_val; + if (PyBytes_Check(obj_val) || PyByteArray_Check(obj_val)) + arg_val = obj_val; + else { + arg_val = NULL; + } + if (arg_val != NULL) goto __LL4; + if (PyUnicode_Check(obj_val)) + arg_val = obj_val; + else { + arg_val = NULL; + } + if (arg_val != NULL) goto __LL4; + if (PyBool_Check(obj_val)) + arg_val = obj_val; + else { + arg_val = NULL; + } + if (arg_val != NULL) goto __LL4; + arg_val = obj_val; + if (arg_val != NULL) goto __LL4; + if (PyLong_Check(obj_val)) + arg_val = obj_val; + else { + arg_val = NULL; + } + if (arg_val != NULL) goto __LL4; + CPy_TypeError("union[bytes, str, bool, object, int]", obj_val); + goto fail; +__LL4: ; + PyObject *retval = CPyDef_main_____new___3_HexBytes_obj_____call__(arg___mypyc_self__, arg_cls, arg_val); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/main.py", "__new__", 48, CPyStatic_main___globals); + return NULL; +} + +PyObject *CPyDef_main_____getitem___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner) { + PyObject *cpy_r_r0; + char cpy_r_r1; + PyObject *cpy_r_r2; + PyObject *cpy_r_r3; + cpy_r_r0 = (PyObject *)&_Py_NoneStruct; + cpy_r_r1 = cpy_r_instance == cpy_r_r0; + if (!cpy_r_r1) goto CPyL2; + CPy_INCREF(cpy_r___mypyc_self__); + return cpy_r___mypyc_self__; +CPyL2: ; + cpy_r_r2 = PyMethod_New(cpy_r___mypyc_self__, cpy_r_instance); + if (cpy_r_r2 == NULL) goto CPyL4; + return cpy_r_r2; +CPyL4: ; + cpy_r_r3 = NULL; + return cpy_r_r3; +} + +PyObject *CPyPy_main_____getitem___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + PyObject *obj___mypyc_self__ = self; + static const char * const kwlist[] = {"instance", "owner", 0}; + static CPyArg_Parser parser = {"OO:__get__", kwlist, 0}; + PyObject *obj_instance; + PyObject *obj_owner; + if (!CPyArg_ParseStackAndKeywordsSimple(args, nargs, kwnames, &parser, &obj_instance, &obj_owner)) { + return NULL; + } + PyObject *arg___mypyc_self__ = obj___mypyc_self__; + PyObject *arg_instance = obj_instance; + PyObject *arg_owner = obj_owner; + PyObject *retval = CPyDef_main_____getitem___3_HexBytes_obj_____get__(arg___mypyc_self__, arg_instance, arg_owner); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/main.py", "__get__", -1, CPyStatic_main___globals); + return NULL; +} + +PyObject *CPyDef_main_____getitem___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self, PyObject *cpy_r_key) { + PyObject *cpy_r_r0; + PyObject *cpy_r_r1; + PyObject **cpy_r_r3; + PyObject *cpy_r_r4; + PyObject *cpy_r_r5; + char cpy_r_r6; + CPyTagged cpy_r_r7; + PyObject *cpy_r_r8; + PyObject *cpy_r_r9; + PyObject *cpy_r_r10; + char cpy_r_r11; + PyObject *cpy_r_r12; + PyObject *cpy_r_r13; + PyObject **cpy_r_r15; + PyObject *cpy_r_r16; + PyObject *cpy_r_r17; + PyObject *cpy_r_r18; + PyObject **cpy_r_r20; + PyObject *cpy_r_r21; + PyObject *cpy_r_r22; + PyObject *cpy_r_r23; + cpy_r_r0 = (PyObject *)&PyBytes_Type; + cpy_r_r1 = CPyStatics[37]; /* '__getitem__' */ + PyObject *cpy_r_r2[3] = {cpy_r_r0, cpy_r_self, cpy_r_key}; + cpy_r_r3 = (PyObject **)&cpy_r_r2; + cpy_r_r4 = PyObject_VectorcallMethod(cpy_r_r1, cpy_r_r3, 9223372036854775811ULL, 0); + if (unlikely(cpy_r_r4 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 63, CPyStatic_main___globals); + goto CPyL14; + } + if (PyLong_Check(cpy_r_r4)) + cpy_r_r5 = cpy_r_r4; + else { + cpy_r_r5 = NULL; + } + if (cpy_r_r5 != NULL) goto __LL5; + if (PyBytes_Check(cpy_r_r4) || PyByteArray_Check(cpy_r_r4)) + cpy_r_r5 = cpy_r_r4; + else { + cpy_r_r5 = NULL; + } + if (cpy_r_r5 != NULL) goto __LL5; + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__getitem__", 63, CPyStatic_main___globals, "union[int, bytes]", cpy_r_r4); + goto CPyL14; +__LL5: ; + cpy_r_r6 = PyLong_Check(cpy_r_r5); + if (!cpy_r_r6) goto CPyL5; + if (likely(PyLong_Check(cpy_r_r5))) + cpy_r_r7 = CPyTagged_FromObject(cpy_r_r5); + else { + CPy_TypeError("int", cpy_r_r5); cpy_r_r7 = CPY_INT_TAG; + } + CPy_DECREF(cpy_r_r5); + if (unlikely(cpy_r_r7 == CPY_INT_TAG)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 65, CPyStatic_main___globals); + goto CPyL14; + } + cpy_r_r8 = CPyTagged_StealAsObject(cpy_r_r7); + return cpy_r_r8; +CPyL5: ; + cpy_r_r9 = CPy_TYPE(cpy_r_self); + cpy_r_r10 = (PyObject *)CPyType_main___HexBytes; + cpy_r_r11 = cpy_r_r9 == cpy_r_r10; + if (cpy_r_r11) { + goto CPyL15; + } else + goto CPyL10; +CPyL6: ; + if (likely(PyBytes_Check(cpy_r_r5) || PyByteArray_Check(cpy_r_r5))) + cpy_r_r12 = cpy_r_r5; + else { + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__getitem__", 69, CPyStatic_main___globals, "bytes", cpy_r_r5); + goto CPyL14; + } + cpy_r_r13 = (PyObject *)CPyType_main___HexBytes; + PyObject *cpy_r_r14[1] = {cpy_r_r12}; + cpy_r_r15 = (PyObject **)&cpy_r_r14; + cpy_r_r16 = PyObject_Vectorcall(cpy_r_r13, cpy_r_r15, 1, 0); + if (unlikely(cpy_r_r16 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 69, CPyStatic_main___globals); + goto CPyL16; + } + CPy_DECREF(cpy_r_r12); + if (likely(Py_TYPE(cpy_r_r16) == CPyType_main___HexBytes)) + cpy_r_r17 = cpy_r_r16; + else { + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__getitem__", 69, CPyStatic_main___globals, "faster_hexbytes.main.HexBytes", cpy_r_r16); + goto CPyL14; + } + return cpy_r_r17; +CPyL10: ; + if (likely(PyBytes_Check(cpy_r_r5) || PyByteArray_Check(cpy_r_r5))) + cpy_r_r18 = cpy_r_r5; + else { + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__getitem__", 70, CPyStatic_main___globals, "bytes", cpy_r_r5); + goto CPyL17; + } + PyObject *cpy_r_r19[1] = {cpy_r_r18}; + cpy_r_r20 = (PyObject **)&cpy_r_r19; + cpy_r_r21 = PyObject_Vectorcall(cpy_r_r9, cpy_r_r20, 1, 0); + CPy_DECREF(cpy_r_r9); + if (unlikely(cpy_r_r21 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 70, CPyStatic_main___globals); + goto CPyL18; + } + CPy_DECREF(cpy_r_r18); + if (likely(Py_TYPE(cpy_r_r21) == CPyType_main___HexBytes)) + cpy_r_r22 = cpy_r_r21; + else { + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__getitem__", 70, CPyStatic_main___globals, "faster_hexbytes.main.HexBytes", cpy_r_r21); + goto CPyL14; + } + return cpy_r_r22; +CPyL14: ; + cpy_r_r23 = NULL; + return cpy_r_r23; +CPyL15: ; + CPy_DECREF(cpy_r_r9); + goto CPyL6; +CPyL16: ; + CPy_DecRef(cpy_r_r12); + goto CPyL14; +CPyL17: ; + CPy_DecRef(cpy_r_r9); + goto CPyL14; +CPyL18: ; + CPy_DecRef(cpy_r_r18); + goto CPyL14; +} + +PyObject *CPyPy_main_____getitem___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + PyObject *obj___mypyc_self__ = self; + static const char * const kwlist[] = {"self", "key", 0}; + static CPyArg_Parser parser = {"OO:__call__", kwlist, 0}; + PyObject *obj_self; + PyObject *obj_key; + if (!CPyArg_ParseStackAndKeywordsSimple(args, PyVectorcall_NARGS(nargs), kwnames, &parser, &obj_self, &obj_key)) { + return NULL; + } + PyObject *arg___mypyc_self__ = obj___mypyc_self__; + PyObject *arg_self; + if (likely(Py_TYPE(obj_self) == CPyType_main___HexBytes)) + arg_self = obj_self; + else { + CPy_TypeError("faster_hexbytes.main.HexBytes", obj_self); + goto fail; + } + PyObject *arg_key = obj_key; + PyObject *retval = CPyDef_main_____getitem___3_HexBytes_obj_____call__(arg___mypyc_self__, arg_self, arg_key); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 60, CPyStatic_main___globals); + return NULL; +} + +PyObject *CPyDef_main_____repr___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner) { + PyObject *cpy_r_r0; + char cpy_r_r1; + PyObject *cpy_r_r2; + PyObject *cpy_r_r3; + cpy_r_r0 = (PyObject *)&_Py_NoneStruct; + cpy_r_r1 = cpy_r_instance == cpy_r_r0; + if (!cpy_r_r1) goto CPyL2; + CPy_INCREF(cpy_r___mypyc_self__); + return cpy_r___mypyc_self__; +CPyL2: ; + cpy_r_r2 = PyMethod_New(cpy_r___mypyc_self__, cpy_r_instance); + if (cpy_r_r2 == NULL) goto CPyL4; + return cpy_r_r2; +CPyL4: ; + cpy_r_r3 = NULL; + return cpy_r_r3; +} + +PyObject *CPyPy_main_____repr___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + PyObject *obj___mypyc_self__ = self; + static const char * const kwlist[] = {"instance", "owner", 0}; + static CPyArg_Parser parser = {"OO:__get__", kwlist, 0}; + PyObject *obj_instance; + PyObject *obj_owner; + if (!CPyArg_ParseStackAndKeywordsSimple(args, nargs, kwnames, &parser, &obj_instance, &obj_owner)) { + return NULL; + } + PyObject *arg___mypyc_self__ = obj___mypyc_self__; + PyObject *arg_instance = obj_instance; + PyObject *arg_owner = obj_owner; + PyObject *retval = CPyDef_main_____repr___3_HexBytes_obj_____get__(arg___mypyc_self__, arg_instance, arg_owner); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/main.py", "__get__", -1, CPyStatic_main___globals); + return NULL; +} + +PyObject *CPyDef_main_____repr___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self) { + PyObject *cpy_r_r0; + PyObject *cpy_r_r1; + PyObject *cpy_r_r2; + PyObject *cpy_r_r3; + PyObject *cpy_r_r4; + PyObject **cpy_r_r6; + PyObject *cpy_r_r7; + PyObject *cpy_r_r8; + PyObject *cpy_r_r9; + PyObject *cpy_r_r10; + PyObject *cpy_r_r11; + PyObject **cpy_r_r13; + PyObject *cpy_r_r14; + PyObject *cpy_r_r15; + PyObject *cpy_r_r16; + PyObject *cpy_r_r17; + CPyPtr cpy_r_r18; + CPyPtr cpy_r_r19; + CPyPtr cpy_r_r20; + CPyPtr cpy_r_r21; + PyObject *cpy_r_r22; + PyObject *cpy_r_r23; + cpy_r_r0 = CPyStatics[17]; /* '' */ + cpy_r_r1 = CPyStatics[38]; /* 'HexBytes(' */ + cpy_r_r2 = CPyStatics[19]; /* '{!r:{}}' */ + cpy_r_r3 = CPyStatics[24]; /* '0x' */ + cpy_r_r4 = CPyStatics[15]; /* 'hex' */ + PyObject *cpy_r_r5[1] = {cpy_r_self}; + cpy_r_r6 = (PyObject **)&cpy_r_r5; + cpy_r_r7 = PyObject_VectorcallMethod(cpy_r_r4, cpy_r_r6, 9223372036854775809ULL, 0); + if (unlikely(cpy_r_r7 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 73, CPyStatic_main___globals); + goto CPyL8; + } + if (likely(PyUnicode_Check(cpy_r_r7))) + cpy_r_r8 = cpy_r_r7; + else { + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__repr__", 73, CPyStatic_main___globals, "str", cpy_r_r7); + goto CPyL8; + } + cpy_r_r9 = PyUnicode_Concat(cpy_r_r3, cpy_r_r8); + CPy_DECREF(cpy_r_r8); + if (unlikely(cpy_r_r9 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 73, CPyStatic_main___globals); + goto CPyL8; + } + cpy_r_r10 = CPyStatics[17]; /* '' */ + cpy_r_r11 = CPyStatics[20]; /* 'format' */ + PyObject *cpy_r_r12[3] = {cpy_r_r2, cpy_r_r9, cpy_r_r10}; + cpy_r_r13 = (PyObject **)&cpy_r_r12; + cpy_r_r14 = PyObject_VectorcallMethod(cpy_r_r11, cpy_r_r13, 9223372036854775811ULL, 0); + if (unlikely(cpy_r_r14 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 73, CPyStatic_main___globals); + goto CPyL9; + } + CPy_DECREF(cpy_r_r9); + if (likely(PyUnicode_Check(cpy_r_r14))) + cpy_r_r15 = cpy_r_r14; + else { + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__repr__", 73, CPyStatic_main___globals, "str", cpy_r_r14); + goto CPyL8; + } + cpy_r_r16 = CPyStatics[39]; /* ')' */ + cpy_r_r17 = PyList_New(3); + if (unlikely(cpy_r_r17 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 73, CPyStatic_main___globals); + goto CPyL10; + } + cpy_r_r18 = (CPyPtr)&((PyListObject *)cpy_r_r17)->ob_item; + cpy_r_r19 = *(CPyPtr *)cpy_r_r18; + CPy_INCREF(cpy_r_r1); + *(PyObject * *)cpy_r_r19 = cpy_r_r1; + cpy_r_r20 = cpy_r_r19 + 8; + *(PyObject * *)cpy_r_r20 = cpy_r_r15; + CPy_INCREF(cpy_r_r16); + cpy_r_r21 = cpy_r_r19 + 16; + *(PyObject * *)cpy_r_r21 = cpy_r_r16; + cpy_r_r22 = PyUnicode_Join(cpy_r_r0, cpy_r_r17); + CPy_DECREF_NO_IMM(cpy_r_r17); + if (unlikely(cpy_r_r22 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 73, CPyStatic_main___globals); + goto CPyL8; + } + return cpy_r_r22; +CPyL8: ; + cpy_r_r23 = NULL; + return cpy_r_r23; +CPyL9: ; + CPy_DecRef(cpy_r_r9); + goto CPyL8; +CPyL10: ; + CPy_DecRef(cpy_r_r15); + goto CPyL8; +} + +PyObject *CPyPy_main_____repr___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + PyObject *obj___mypyc_self__ = self; + static const char * const kwlist[] = {"self", 0}; + static CPyArg_Parser parser = {"O:__call__", kwlist, 0}; + PyObject *obj_self; + if (!CPyArg_ParseStackAndKeywordsOneArg(args, PyVectorcall_NARGS(nargs), kwnames, &parser, &obj_self)) { + return NULL; + } + PyObject *arg___mypyc_self__ = obj___mypyc_self__; + PyObject *arg_self; + if (likely(Py_TYPE(obj_self) == CPyType_main___HexBytes)) + arg_self = obj_self; + else { + CPy_TypeError("faster_hexbytes.main.HexBytes", obj_self); + goto fail; + } + PyObject *retval = CPyDef_main_____repr___3_HexBytes_obj_____call__(arg___mypyc_self__, arg_self); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 72, CPyStatic_main___globals); + return NULL; +} + +PyObject *CPyDef_main___to_0x_hex_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner) { + PyObject *cpy_r_r0; + char cpy_r_r1; + PyObject *cpy_r_r2; + PyObject *cpy_r_r3; + cpy_r_r0 = (PyObject *)&_Py_NoneStruct; + cpy_r_r1 = cpy_r_instance == cpy_r_r0; + if (!cpy_r_r1) goto CPyL2; + CPy_INCREF(cpy_r___mypyc_self__); + return cpy_r___mypyc_self__; +CPyL2: ; + cpy_r_r2 = PyMethod_New(cpy_r___mypyc_self__, cpy_r_instance); + if (cpy_r_r2 == NULL) goto CPyL4; + return cpy_r_r2; +CPyL4: ; + cpy_r_r3 = NULL; + return cpy_r_r3; +} + +PyObject *CPyPy_main___to_0x_hex_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + PyObject *obj___mypyc_self__ = self; + static const char * const kwlist[] = {"instance", "owner", 0}; + static CPyArg_Parser parser = {"OO:__get__", kwlist, 0}; + PyObject *obj_instance; + PyObject *obj_owner; + if (!CPyArg_ParseStackAndKeywordsSimple(args, nargs, kwnames, &parser, &obj_instance, &obj_owner)) { + return NULL; + } + PyObject *arg___mypyc_self__ = obj___mypyc_self__; + PyObject *arg_instance = obj_instance; + PyObject *arg_owner = obj_owner; + PyObject *retval = CPyDef_main___to_0x_hex_HexBytes_obj_____get__(arg___mypyc_self__, arg_instance, arg_owner); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/main.py", "__get__", -1, CPyStatic_main___globals); + return NULL; +} + +PyObject *CPyDef_main___to_0x_hex_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self) { + PyObject *cpy_r_r0; + PyObject *cpy_r_r1; + PyObject **cpy_r_r3; + PyObject *cpy_r_r4; + PyObject *cpy_r_r5; + PyObject *cpy_r_r6; + PyObject *cpy_r_r7; + cpy_r_r0 = CPyStatics[24]; /* '0x' */ + cpy_r_r1 = CPyStatics[15]; /* 'hex' */ + PyObject *cpy_r_r2[1] = {cpy_r_self}; + cpy_r_r3 = (PyObject **)&cpy_r_r2; + cpy_r_r4 = PyObject_VectorcallMethod(cpy_r_r1, cpy_r_r3, 9223372036854775809ULL, 0); + if (unlikely(cpy_r_r4 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "to_0x_hex", 79, CPyStatic_main___globals); + goto CPyL4; + } + if (likely(PyUnicode_Check(cpy_r_r4))) + cpy_r_r5 = cpy_r_r4; + else { + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "to_0x_hex", 79, CPyStatic_main___globals, "str", cpy_r_r4); + goto CPyL4; + } + cpy_r_r6 = CPyStr_Build(2, cpy_r_r0, cpy_r_r5); + CPy_DECREF(cpy_r_r5); + if (unlikely(cpy_r_r6 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "to_0x_hex", 79, CPyStatic_main___globals); + goto CPyL4; + } + return cpy_r_r6; +CPyL4: ; + cpy_r_r7 = NULL; + return cpy_r_r7; +} + +PyObject *CPyPy_main___to_0x_hex_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + PyObject *obj___mypyc_self__ = self; + static const char * const kwlist[] = {"self", 0}; + static CPyArg_Parser parser = {"O:__call__", kwlist, 0}; + PyObject *obj_self; + if (!CPyArg_ParseStackAndKeywordsOneArg(args, PyVectorcall_NARGS(nargs), kwnames, &parser, &obj_self)) { + return NULL; + } + PyObject *arg___mypyc_self__ = obj___mypyc_self__; + PyObject *arg_self; + if (likely(Py_TYPE(obj_self) == CPyType_main___HexBytes)) + arg_self = obj_self; + else { + CPy_TypeError("faster_hexbytes.main.HexBytes", obj_self); + goto fail; + } + PyObject *retval = CPyDef_main___to_0x_hex_HexBytes_obj_____call__(arg___mypyc_self__, arg_self); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/main.py", "to_0x_hex", 75, CPyStatic_main___globals); + return NULL; +} + +PyObject *CPyDef_main_____reduce___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner) { + PyObject *cpy_r_r0; + char cpy_r_r1; + PyObject *cpy_r_r2; + PyObject *cpy_r_r3; + cpy_r_r0 = (PyObject *)&_Py_NoneStruct; + cpy_r_r1 = cpy_r_instance == cpy_r_r0; + if (!cpy_r_r1) goto CPyL2; + CPy_INCREF(cpy_r___mypyc_self__); + return cpy_r___mypyc_self__; +CPyL2: ; + cpy_r_r2 = PyMethod_New(cpy_r___mypyc_self__, cpy_r_instance); + if (cpy_r_r2 == NULL) goto CPyL4; + return cpy_r_r2; +CPyL4: ; + cpy_r_r3 = NULL; + return cpy_r_r3; +} + +PyObject *CPyPy_main_____reduce___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + PyObject *obj___mypyc_self__ = self; + static const char * const kwlist[] = {"instance", "owner", 0}; + static CPyArg_Parser parser = {"OO:__get__", kwlist, 0}; + PyObject *obj_instance; + PyObject *obj_owner; + if (!CPyArg_ParseStackAndKeywordsSimple(args, nargs, kwnames, &parser, &obj_instance, &obj_owner)) { + return NULL; + } + PyObject *arg___mypyc_self__ = obj___mypyc_self__; + PyObject *arg_instance = obj_instance; + PyObject *arg_owner = obj_owner; + PyObject *retval = CPyDef_main_____reduce___3_HexBytes_obj_____get__(arg___mypyc_self__, arg_instance, arg_owner); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/main.py", "__get__", -1, CPyStatic_main___globals); + return NULL; +} + +tuple_T2OT2OO CPyDef_main_____reduce___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self) { + PyObject *cpy_r_r0; + char cpy_r_r1; + PyObject *cpy_r_r2; + PyObject *cpy_r_r3; + PyObject **cpy_r_r5; + PyObject *cpy_r_r6; + PyObject *cpy_r_r7; + tuple_T2OO cpy_r_r8; + tuple_T2OT2OO cpy_r_r9; + tuple_T2OT2OO cpy_r_r10; + cpy_r_r0 = CPyStatic_main____bytes_new; + if (likely(cpy_r_r0 != NULL)) goto CPyL3; + PyErr_SetString(PyExc_NameError, "value for final name \"_bytes_new\" was not set"); + cpy_r_r1 = 0; + if (unlikely(!cpy_r_r1)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__reduce__", 89, CPyStatic_main___globals); + goto CPyL6; + } + CPy_Unreachable(); +CPyL3: ; + cpy_r_r2 = CPy_TYPE(cpy_r_self); + cpy_r_r3 = (PyObject *)&PyBytes_Type; + PyObject *cpy_r_r4[1] = {cpy_r_self}; + cpy_r_r5 = (PyObject **)&cpy_r_r4; + cpy_r_r6 = PyObject_Vectorcall(cpy_r_r3, cpy_r_r5, 1, 0); + if (unlikely(cpy_r_r6 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__reduce__", 89, CPyStatic_main___globals); + goto CPyL7; + } + if (likely(PyBytes_Check(cpy_r_r6) || PyByteArray_Check(cpy_r_r6))) + cpy_r_r7 = cpy_r_r6; + else { + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__reduce__", 89, CPyStatic_main___globals, "bytes", cpy_r_r6); + goto CPyL7; + } + cpy_r_r8.f0 = cpy_r_r2; + cpy_r_r8.f1 = cpy_r_r7; + CPy_INCREF(cpy_r_r0); + cpy_r_r9.f0 = cpy_r_r0; + cpy_r_r9.f1 = cpy_r_r8; + return cpy_r_r9; +CPyL6: ; + tuple_T2OT2OO __tmp6 = { NULL, (tuple_T2OO) { NULL, NULL } }; + cpy_r_r10 = __tmp6; + return cpy_r_r10; +CPyL7: ; + CPy_DecRef(cpy_r_r2); + goto CPyL6; +} + +PyObject *CPyPy_main_____reduce___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + PyObject *obj___mypyc_self__ = self; + static const char * const kwlist[] = {"self", 0}; + static CPyArg_Parser parser = {"O:__call__", kwlist, 0}; + PyObject *obj_self; + if (!CPyArg_ParseStackAndKeywordsOneArg(args, PyVectorcall_NARGS(nargs), kwnames, &parser, &obj_self)) { + return NULL; + } + PyObject *arg___mypyc_self__ = obj___mypyc_self__; + PyObject *arg_self; + if (likely(Py_TYPE(obj_self) == CPyType_main___HexBytes)) + arg_self = obj_self; + else { + CPy_TypeError("faster_hexbytes.main.HexBytes", obj_self); + goto fail; + } + tuple_T2OT2OO retval = CPyDef_main_____reduce___3_HexBytes_obj_____call__(arg___mypyc_self__, arg_self); + if (retval.f0 == NULL) { + return NULL; + } + PyObject *retbox = PyTuple_New(2); + if (unlikely(retbox == NULL)) + CPyError_OutOfMemory(); + PyObject *__tmp7 = retval.f0; + PyTuple_SET_ITEM(retbox, 0, __tmp7); + PyObject *__tmp8 = PyTuple_New(2); + if (unlikely(__tmp8 == NULL)) + CPyError_OutOfMemory(); + PyObject *__tmp9 = retval.f1.f0; + PyTuple_SET_ITEM(__tmp8, 0, __tmp9); + PyObject *__tmp10 = retval.f1.f1; + PyTuple_SET_ITEM(__tmp8, 1, __tmp10); + PyTuple_SET_ITEM(retbox, 1, __tmp8); + return retbox; +fail: ; + CPy_AddTraceback("faster_hexbytes/main.py", "__reduce__", 81, CPyStatic_main___globals); + return NULL; +} + +char CPyDef_main_____top_level__(void) { + PyObject *cpy_r_r0; + PyObject *cpy_r_r1; + char cpy_r_r2; + PyObject *cpy_r_r3; + PyObject *cpy_r_r4; + PyObject *cpy_r_r5; + PyObject *cpy_r_r6; + PyObject *cpy_r_r7; + PyObject *cpy_r_r8; + PyObject **cpy_r_r9; + void *cpy_r_r11; + void *cpy_r_r13; + PyObject *cpy_r_r14; + PyObject *cpy_r_r15; + PyObject *cpy_r_r16; + PyObject *cpy_r_r17; + char cpy_r_r18; + PyObject *cpy_r_r19; + PyObject *cpy_r_r20; + PyObject *cpy_r_r21; + PyObject *cpy_r_r22; + PyObject *cpy_r_r23; + PyObject *cpy_r_r24; + PyObject *cpy_r_r25; + PyObject *cpy_r_r26; + PyObject *cpy_r_r27; + PyObject *cpy_r_r28; + PyObject *cpy_r_r29; + PyObject *cpy_r_r30; + PyObject *cpy_r_r31; + PyObject *cpy_r_r32; + PyObject *cpy_r_r33; + PyObject *cpy_r_r34; + PyObject *cpy_r_r35; + PyObject *cpy_r_r36; + PyObject *cpy_r_r37; + PyObject *cpy_r_r38; + PyObject *cpy_r_r39; + PyObject *cpy_r_r40; + PyObject *cpy_r_r41; + PyObject *cpy_r_r42; + PyObject *cpy_r_r43; + tuple_T6OOOOOO cpy_r_r44; + PyObject *cpy_r_r45; + PyObject *cpy_r_r46; + PyObject *cpy_r_r47; + PyObject *cpy_r_r48; + int32_t cpy_r_r49; + char cpy_r_r50; + PyObject *cpy_r_r51; + PyObject *cpy_r_r52; + PyObject *cpy_r_r53; + PyObject *cpy_r_r54; + PyObject *cpy_r_r55; + int32_t cpy_r_r56; + char cpy_r_r57; + PyObject *cpy_r_r58; + PyObject *cpy_r_r59; + PyObject *cpy_r_r60; + PyObject *cpy_r_r61; + PyObject *cpy_r_r62; + PyObject *cpy_r_r63; + PyObject *cpy_r_r64; + char cpy_r_r65; + PyObject *cpy_r_r66; + PyObject *cpy_r_r67; + PyObject *cpy_r_r68; + PyObject **cpy_r_r70; + PyObject *cpy_r_r71; + PyObject *cpy_r_r72; + PyObject *cpy_r_r73; + PyObject *cpy_r_r74; + PyObject *cpy_r_r75; + PyObject *cpy_r_r76; + PyObject *cpy_r_r77; + PyObject *cpy_r_r78; + PyObject *cpy_r_r79; + PyObject **cpy_r_r81; + PyObject *cpy_r_r82; + PyObject *cpy_r_r83; + int32_t cpy_r_r84; + char cpy_r_r85; + PyObject *cpy_r_r86; + PyObject *cpy_r_r87; + int32_t cpy_r_r88; + char cpy_r_r89; + PyObject *cpy_r_r90; + PyObject *cpy_r_r91; + int32_t cpy_r_r92; + char cpy_r_r93; + PyObject *cpy_r_r94; + PyObject *cpy_r_r95; + int32_t cpy_r_r96; + char cpy_r_r97; + PyObject *cpy_r_r98; + PyObject *cpy_r_r99; + int32_t cpy_r_r100; + char cpy_r_r101; + PyObject *cpy_r_r102; + PyObject *cpy_r_r103; + int32_t cpy_r_r104; + char cpy_r_r105; + PyObject *cpy_r_r106; + PyObject *cpy_r_r107; + int32_t cpy_r_r108; + char cpy_r_r109; + PyObject *cpy_r_r110; + PyObject *cpy_r_r111; + int32_t cpy_r_r112; + char cpy_r_r113; + PyObject **cpy_r_r115; + PyObject *cpy_r_r116; + PyObject *cpy_r_r117; + PyObject *cpy_r_r118; + PyObject *cpy_r_r119; + PyObject *cpy_r_r120; + PyObject **cpy_r_r122; + PyObject *cpy_r_r123; + PyObject *cpy_r_r124; + PyObject **cpy_r_r126; + PyObject *cpy_r_r127; + PyObject *cpy_r_r128; + PyObject *cpy_r_r129; + int32_t cpy_r_r130; + char cpy_r_r131; + PyObject *cpy_r_r132; + char cpy_r_r133; + cpy_r_r0 = CPyModule_builtins; + cpy_r_r1 = (PyObject *)&_Py_NoneStruct; + cpy_r_r2 = cpy_r_r0 != cpy_r_r1; + if (cpy_r_r2) goto CPyL3; + cpy_r_r3 = CPyStatics[3]; /* 'builtins' */ + cpy_r_r4 = PyImport_Import(cpy_r_r3); + if (unlikely(cpy_r_r4 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", -1, CPyStatic_main___globals); + goto CPyL48; + } + CPyModule_builtins = cpy_r_r4; + CPy_INCREF(CPyModule_builtins); + CPy_DECREF(cpy_r_r4); +CPyL3: ; + cpy_r_r5 = CPyStatics[75]; /* ('TYPE_CHECKING', 'Callable', 'Final', 'Tuple', 'Type', + 'Union', 'overload') */ + cpy_r_r6 = CPyStatics[35]; /* 'typing' */ + cpy_r_r7 = CPyStatic_main___globals; + cpy_r_r8 = CPyImport_ImportFromMany(cpy_r_r6, cpy_r_r5, cpy_r_r5, cpy_r_r7); + if (unlikely(cpy_r_r8 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 1, CPyStatic_main___globals); + goto CPyL48; + } + CPyModule_typing = cpy_r_r8; + CPy_INCREF(CPyModule_typing); + CPy_DECREF(cpy_r_r8); + cpy_r_r9 = (PyObject **)&CPyModule_hexbytes___main; + PyObject **cpy_r_r10[1] = {cpy_r_r9}; + cpy_r_r11 = (void *)&cpy_r_r10; + int64_t cpy_r_r12[1] = {14}; + cpy_r_r13 = (void *)&cpy_r_r12; + cpy_r_r14 = CPyStatics[77]; /* (('hexbytes.main', 'hexbytes.main', 'hexbytes'),) */ + cpy_r_r15 = CPyStatic_main___globals; + cpy_r_r16 = CPyStatics[46]; /* 'faster_hexbytes/main.py' */ + cpy_r_r17 = CPyStatics[32]; /* '' */ + cpy_r_r18 = CPyImport_ImportMany(cpy_r_r14, cpy_r_r11, cpy_r_r15, cpy_r_r16, cpy_r_r17, cpy_r_r13); + if (!cpy_r_r18) goto CPyL48; + cpy_r_r19 = CPyStatics[78]; /* ('mypyc_attr',) */ + cpy_r_r20 = CPyStatics[48]; /* 'mypy_extensions' */ + cpy_r_r21 = CPyStatic_main___globals; + cpy_r_r22 = CPyImport_ImportFromMany(cpy_r_r20, cpy_r_r19, cpy_r_r19, cpy_r_r21); + if (unlikely(cpy_r_r22 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 15, CPyStatic_main___globals); + goto CPyL48; + } + CPyModule_mypy_extensions = cpy_r_r22; + CPy_INCREF(CPyModule_mypy_extensions); + CPy_DECREF(cpy_r_r22); + cpy_r_r23 = CPyStatics[79]; /* ('Self',) */ + cpy_r_r24 = CPyStatics[50]; /* 'typing_extensions' */ + cpy_r_r25 = CPyStatic_main___globals; + cpy_r_r26 = CPyImport_ImportFromMany(cpy_r_r24, cpy_r_r23, cpy_r_r23, cpy_r_r25); + if (unlikely(cpy_r_r26 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 18, CPyStatic_main___globals); + goto CPyL48; + } + CPyModule_typing_extensions = cpy_r_r26; + CPy_INCREF(CPyModule_typing_extensions); + CPy_DECREF(cpy_r_r26); + cpy_r_r27 = CPyStatics[80]; /* ('to_bytes',) */ + cpy_r_r28 = CPyStatics[52]; /* 'faster_hexbytes._utils' */ + cpy_r_r29 = CPyStatic_main___globals; + cpy_r_r30 = CPyImport_ImportFromMany(cpy_r_r28, cpy_r_r27, cpy_r_r27, cpy_r_r29); + if (unlikely(cpy_r_r30 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 22, CPyStatic_main___globals); + goto CPyL48; + } + CPyModule_faster_hexbytes____utils = cpy_r_r30; + CPy_INCREF(CPyModule_faster_hexbytes____utils); + CPy_DECREF(cpy_r_r30); + cpy_r_r31 = CPyStatic_main___globals; + cpy_r_r32 = CPyStatics[34]; /* 'Union' */ + cpy_r_r33 = CPyDict_GetItem(cpy_r_r31, cpy_r_r32); + if (unlikely(cpy_r_r33 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 31, CPyStatic_main___globals); + goto CPyL48; + } + cpy_r_r34 = (PyObject *)&PyBytes_Type; + cpy_r_r35 = (PyObject *)&PyUnicode_Type; + cpy_r_r36 = (PyObject *)&PyBool_Type; + cpy_r_r37 = CPyModule_builtins; + cpy_r_r38 = CPyStatics[53]; /* 'bytearray' */ + cpy_r_r39 = CPyObject_GetAttr(cpy_r_r37, cpy_r_r38); + if (unlikely(cpy_r_r39 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 31, CPyStatic_main___globals); + goto CPyL49; + } + cpy_r_r40 = (PyObject *)&PyLong_Type; + cpy_r_r41 = CPyModule_builtins; + cpy_r_r42 = CPyStatics[16]; /* 'memoryview' */ + cpy_r_r43 = CPyObject_GetAttr(cpy_r_r41, cpy_r_r42); + if (unlikely(cpy_r_r43 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 31, CPyStatic_main___globals); + goto CPyL50; + } + CPy_INCREF(cpy_r_r34); + CPy_INCREF(cpy_r_r35); + CPy_INCREF(cpy_r_r36); + CPy_INCREF(cpy_r_r40); + cpy_r_r44.f0 = cpy_r_r34; + cpy_r_r44.f1 = cpy_r_r35; + cpy_r_r44.f2 = cpy_r_r36; + cpy_r_r44.f3 = cpy_r_r39; + cpy_r_r44.f4 = cpy_r_r40; + cpy_r_r44.f5 = cpy_r_r43; + cpy_r_r45 = PyTuple_New(6); + if (unlikely(cpy_r_r45 == NULL)) + CPyError_OutOfMemory(); + PyObject *__tmp11 = cpy_r_r44.f0; + PyTuple_SET_ITEM(cpy_r_r45, 0, __tmp11); + PyObject *__tmp12 = cpy_r_r44.f1; + PyTuple_SET_ITEM(cpy_r_r45, 1, __tmp12); + PyObject *__tmp13 = cpy_r_r44.f2; + PyTuple_SET_ITEM(cpy_r_r45, 2, __tmp13); + PyObject *__tmp14 = cpy_r_r44.f3; + PyTuple_SET_ITEM(cpy_r_r45, 3, __tmp14); + PyObject *__tmp15 = cpy_r_r44.f4; + PyTuple_SET_ITEM(cpy_r_r45, 4, __tmp15); + PyObject *__tmp16 = cpy_r_r44.f5; + PyTuple_SET_ITEM(cpy_r_r45, 5, __tmp16); + cpy_r_r46 = PyObject_GetItem(cpy_r_r33, cpy_r_r45); + CPy_DECREF(cpy_r_r33); + CPy_DECREF(cpy_r_r45); + if (unlikely(cpy_r_r46 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 31, CPyStatic_main___globals); + goto CPyL48; + } + cpy_r_r47 = CPyStatic_main___globals; + cpy_r_r48 = CPyStatics[54]; /* 'BytesLike' */ + cpy_r_r49 = CPyDict_SetItem(cpy_r_r47, cpy_r_r48, cpy_r_r46); + CPy_DECREF(cpy_r_r46); + cpy_r_r50 = cpy_r_r49 >= 0; + if (unlikely(!cpy_r_r50)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 31, CPyStatic_main___globals); + goto CPyL48; + } + cpy_r_r51 = (PyObject *)&PyBytes_Type; + cpy_r_r52 = CPyStatics[55]; /* '__new__' */ + cpy_r_r53 = CPyObject_GetAttr(cpy_r_r51, cpy_r_r52); + if (unlikely(cpy_r_r53 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 33, CPyStatic_main___globals); + goto CPyL48; + } + CPyStatic_main____bytes_new = cpy_r_r53; + CPy_INCREF(CPyStatic_main____bytes_new); + cpy_r_r54 = CPyStatic_main___globals; + cpy_r_r55 = CPyStatics[56]; /* '_bytes_new' */ + cpy_r_r56 = CPyDict_SetItem(cpy_r_r54, cpy_r_r55, cpy_r_r53); + CPy_DECREF(cpy_r_r53); + cpy_r_r57 = cpy_r_r56 >= 0; + if (unlikely(!cpy_r_r57)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 33, CPyStatic_main___globals); + goto CPyL48; + } + cpy_r_r58 = CPyModule_hexbytes___main; + cpy_r_r59 = CPyStatics[7]; /* 'HexBytes' */ + cpy_r_r60 = CPyObject_GetAttr(cpy_r_r58, cpy_r_r59); + if (unlikely(cpy_r_r60 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals); + goto CPyL48; + } + cpy_r_r61 = PyTuple_Pack(1, cpy_r_r60); + CPy_DECREF(cpy_r_r60); + if (unlikely(cpy_r_r61 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals); + goto CPyL48; + } + cpy_r_r62 = (PyObject *)&PyType_Type; + cpy_r_r63 = CPy_CalculateMetaclass(cpy_r_r62, cpy_r_r61); + if (unlikely(cpy_r_r63 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals); + goto CPyL51; + } + cpy_r_r64 = CPyStatics[57]; /* '__prepare__' */ + cpy_r_r65 = PyObject_HasAttr(cpy_r_r63, cpy_r_r64); + if (!cpy_r_r65) goto CPyL24; + cpy_r_r66 = CPyStatics[7]; /* 'HexBytes' */ + cpy_r_r67 = CPyStatics[57]; /* '__prepare__' */ + cpy_r_r68 = CPyObject_GetAttr(cpy_r_r63, cpy_r_r67); + if (unlikely(cpy_r_r68 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals); + goto CPyL51; + } + PyObject *cpy_r_r69[2] = {cpy_r_r66, cpy_r_r61}; + cpy_r_r70 = (PyObject **)&cpy_r_r69; + cpy_r_r71 = PyObject_Vectorcall(cpy_r_r68, cpy_r_r70, 2, 0); + CPy_DECREF(cpy_r_r68); + if (unlikely(cpy_r_r71 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals); + goto CPyL51; + } + if (likely(PyDict_Check(cpy_r_r71))) + cpy_r_r72 = cpy_r_r71; + else { + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals, "dict", cpy_r_r71); + goto CPyL51; + } + cpy_r_r73 = cpy_r_r72; + goto CPyL26; +CPyL24: ; + cpy_r_r74 = PyDict_New(); + if (unlikely(cpy_r_r74 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals); + goto CPyL51; + } + cpy_r_r73 = cpy_r_r74; +CPyL26: ; + cpy_r_r75 = PyDict_New(); + if (unlikely(cpy_r_r75 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals); + goto CPyL52; + } + cpy_r_r76 = CPyDef_main_____new___3_HexBytes_obj(); + if (unlikely(cpy_r_r76 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 48, CPyStatic_main___globals); + goto CPyL53; + } + cpy_r_r77 = CPyModule_builtins; + cpy_r_r78 = CPyStatics[58]; /* 'staticmethod' */ + cpy_r_r79 = CPyObject_GetAttr(cpy_r_r77, cpy_r_r78); + if (unlikely(cpy_r_r79 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 48, CPyStatic_main___globals); + goto CPyL54; + } + PyObject *cpy_r_r80[1] = {cpy_r_r76}; + cpy_r_r81 = (PyObject **)&cpy_r_r80; + cpy_r_r82 = PyObject_Vectorcall(cpy_r_r79, cpy_r_r81, 1, 0); + CPy_DECREF(cpy_r_r79); + if (unlikely(cpy_r_r82 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 48, CPyStatic_main___globals); + goto CPyL54; + } + CPy_DECREF_NO_IMM(cpy_r_r76); + cpy_r_r83 = CPyStatics[55]; /* '__new__' */ + cpy_r_r84 = CPyDict_SetItem(cpy_r_r73, cpy_r_r83, cpy_r_r82); + CPy_DECREF(cpy_r_r82); + cpy_r_r85 = cpy_r_r84 >= 0; + if (unlikely(!cpy_r_r85)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 48, CPyStatic_main___globals); + goto CPyL53; + } + cpy_r_r86 = CPyDef_main_____getitem___3_HexBytes_obj(); + if (unlikely(cpy_r_r86 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 60, CPyStatic_main___globals); + goto CPyL53; + } + cpy_r_r87 = CPyStatics[37]; /* '__getitem__' */ + cpy_r_r88 = CPyDict_SetItem(cpy_r_r73, cpy_r_r87, cpy_r_r86); + CPy_DECREF_NO_IMM(cpy_r_r86); + cpy_r_r89 = cpy_r_r88 >= 0; + if (unlikely(!cpy_r_r89)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 60, CPyStatic_main___globals); + goto CPyL53; + } + cpy_r_r90 = CPyDef_main_____repr___3_HexBytes_obj(); + if (unlikely(cpy_r_r90 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 72, CPyStatic_main___globals); + goto CPyL53; + } + cpy_r_r91 = CPyStatics[59]; /* '__repr__' */ + cpy_r_r92 = CPyDict_SetItem(cpy_r_r73, cpy_r_r91, cpy_r_r90); + CPy_DECREF_NO_IMM(cpy_r_r90); + cpy_r_r93 = cpy_r_r92 >= 0; + if (unlikely(!cpy_r_r93)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 72, CPyStatic_main___globals); + goto CPyL53; + } + cpy_r_r94 = CPyDef_main___to_0x_hex_HexBytes_obj(); + if (unlikely(cpy_r_r94 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 75, CPyStatic_main___globals); + goto CPyL53; + } + cpy_r_r95 = CPyStatics[60]; /* 'to_0x_hex' */ + cpy_r_r96 = CPyDict_SetItem(cpy_r_r73, cpy_r_r95, cpy_r_r94); + CPy_DECREF_NO_IMM(cpy_r_r94); + cpy_r_r97 = cpy_r_r96 >= 0; + if (unlikely(!cpy_r_r97)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 75, CPyStatic_main___globals); + goto CPyL53; + } + cpy_r_r98 = CPyDef_main_____reduce___3_HexBytes_obj(); + if (unlikely(cpy_r_r98 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 81, CPyStatic_main___globals); + goto CPyL53; + } + cpy_r_r99 = CPyStatics[61]; /* '__reduce__' */ + cpy_r_r100 = CPyDict_SetItem(cpy_r_r73, cpy_r_r99, cpy_r_r98); + CPy_DECREF_NO_IMM(cpy_r_r98); + cpy_r_r101 = cpy_r_r100 >= 0; + if (unlikely(!cpy_r_r101)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 81, CPyStatic_main___globals); + goto CPyL53; + } + cpy_r_r102 = CPyStatics[7]; /* 'HexBytes' */ + cpy_r_r103 = CPyStatics[62]; /* '__annotations__' */ + cpy_r_r104 = CPyDict_SetItem(cpy_r_r73, cpy_r_r103, cpy_r_r75); + CPy_DECREF(cpy_r_r75); + cpy_r_r105 = cpy_r_r104 >= 0; + if (unlikely(!cpy_r_r105)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals); + goto CPyL52; + } + cpy_r_r106 = CPyStatics[63]; /* 'mypyc filler docstring' */ + cpy_r_r107 = CPyStatics[64]; /* '__doc__' */ + cpy_r_r108 = CPyDict_SetItem(cpy_r_r73, cpy_r_r107, cpy_r_r106); + cpy_r_r109 = cpy_r_r108 >= 0; + if (unlikely(!cpy_r_r109)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals); + goto CPyL52; + } + cpy_r_r110 = CPyStatics[8]; /* 'faster_hexbytes.main' */ + cpy_r_r111 = CPyStatics[65]; /* '__module__' */ + cpy_r_r112 = CPyDict_SetItem(cpy_r_r73, cpy_r_r111, cpy_r_r110); + cpy_r_r113 = cpy_r_r112 >= 0; + if (unlikely(!cpy_r_r113)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals); + goto CPyL52; + } + PyObject *cpy_r_r114[3] = {cpy_r_r102, cpy_r_r61, cpy_r_r73}; + cpy_r_r115 = (PyObject **)&cpy_r_r114; + cpy_r_r116 = PyObject_Vectorcall(cpy_r_r63, cpy_r_r115, 3, 0); + if (unlikely(cpy_r_r116 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals); + goto CPyL52; + } + CPy_DECREF(cpy_r_r73); + CPy_DECREF(cpy_r_r61); + cpy_r_r117 = CPyStatic_main___globals; + cpy_r_r118 = CPyStatics[47]; /* 'mypyc_attr' */ + cpy_r_r119 = CPyDict_GetItem(cpy_r_r117, cpy_r_r118); + if (unlikely(cpy_r_r119 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 36, CPyStatic_main___globals); + goto CPyL55; + } + cpy_r_r120 = 0 ? Py_True : Py_False; + PyObject *cpy_r_r121[1] = {cpy_r_r120}; + cpy_r_r122 = (PyObject **)&cpy_r_r121; + cpy_r_r123 = CPyStatics[81]; /* ('native_class',) */ + cpy_r_r124 = PyObject_Vectorcall(cpy_r_r119, cpy_r_r122, 0, cpy_r_r123); + CPy_DECREF(cpy_r_r119); + if (unlikely(cpy_r_r124 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 36, CPyStatic_main___globals); + goto CPyL55; + } + PyObject *cpy_r_r125[1] = {cpy_r_r116}; + cpy_r_r126 = (PyObject **)&cpy_r_r125; + cpy_r_r127 = PyObject_Vectorcall(cpy_r_r124, cpy_r_r126, 1, 0); + CPy_DECREF(cpy_r_r124); + if (unlikely(cpy_r_r127 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals); + goto CPyL55; + } + CPy_DECREF(cpy_r_r116); + CPyType_main___HexBytes = (PyTypeObject *)cpy_r_r127; + CPy_INCREF(CPyType_main___HexBytes); + cpy_r_r128 = CPyStatic_main___globals; + cpy_r_r129 = CPyStatics[7]; /* 'HexBytes' */ + cpy_r_r130 = PyDict_SetItem(cpy_r_r128, cpy_r_r129, cpy_r_r127); + CPy_DECREF(cpy_r_r127); + cpy_r_r131 = cpy_r_r130 >= 0; + if (unlikely(!cpy_r_r131)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals); + goto CPyL48; + } + cpy_r_r132 = (PyObject *)CPyType_main___HexBytes; + return 1; +CPyL48: ; + cpy_r_r133 = 2; + return cpy_r_r133; +CPyL49: ; + CPy_DecRef(cpy_r_r33); + goto CPyL48; +CPyL50: ; + CPy_DecRef(cpy_r_r33); + CPy_DecRef(cpy_r_r39); + goto CPyL48; +CPyL51: ; + CPy_DecRef(cpy_r_r61); + goto CPyL48; +CPyL52: ; + CPy_DecRef(cpy_r_r61); + CPy_DecRef(cpy_r_r73); + goto CPyL48; +CPyL53: ; + CPy_DecRef(cpy_r_r61); + CPy_DecRef(cpy_r_r73); + CPy_DecRef(cpy_r_r75); + goto CPyL48; +CPyL54: ; + CPy_DecRef(cpy_r_r61); + CPy_DecRef(cpy_r_r73); + CPy_DecRef(cpy_r_r75); + CPy_DecRef(cpy_r_r76); + goto CPyL48; +CPyL55: ; + CPy_DecRef(cpy_r_r116); + goto CPyL48; +} + +int CPyGlobalsInit(void) +{ + static int is_initialized = 0; + if (is_initialized) return 0; + + CPy_Init(); + CPyModule_faster_hexbytes = Py_None; + CPyModule_builtins = Py_None; + CPyModule_importlib___metadata = Py_None; + CPyModule_faster_hexbytes___main = Py_None; + CPyModule_faster_hexbytes____utils = Py_None; + CPyModule_builtins = Py_None; + CPyModule_binascii = Py_None; + CPyModule_typing = Py_None; + CPyModule_faster_hexbytes___main = Py_None; + CPyModule_builtins = Py_None; + CPyModule_typing = Py_None; + CPyModule_hexbytes___main = Py_None; + CPyModule_mypy_extensions = Py_None; + CPyModule_typing_extensions = Py_None; + CPyModule_faster_hexbytes____utils = Py_None; + if (CPyStatics_Initialize(CPyStatics, CPyLit_Str, CPyLit_Bytes, CPyLit_Int, CPyLit_Float, CPyLit_Complex, CPyLit_Tuple, CPyLit_FrozenSet) < 0) { + return -1; + } + is_initialized = 1; + return 0; +} + +PyObject *CPyStatics[82]; +const char * const CPyLit_Str[] = { + "\005\bbuiltins\aversion\t__version\022importlib.metadata\bHexBytes", + "\004\024faster_hexbytes.main\a__all__\bhexbytes\v__version__", + "\006 Cannot convert negative integer \t to bytes\nValueError\003hex\nmemoryview\000", + "\t\017Cannot convert \a{!r:{}}\006format\t of type \005{:{}}\tTypeError\0020x\0020X\0010", + "\002\022UnicodeDecodeError\vhex string ", + "\002( may only contain [0-9a-fA-F] characters\bbinascii", + "\006\031faster_hexbytes/_utils.py\b\005Final\005Union\006typing\tunhexlify", + "\b\v__getitem__\tHexBytes(\001)\rTYPE_CHECKING\bCallable\005Tuple\004Type\boverload", + "\005\rhexbytes.main\027faster_hexbytes/main.py\nmypyc_attr\017mypy_extensions\004Self", + "\005\021typing_extensions\bto_bytes\026faster_hexbytes._utils\tbytearray\tBytesLike", + "\006\a__new__\n_bytes_new\v__prepare__\fstaticmethod\b__repr__\tto_0x_hex", + "\005\n__reduce__\017__annotations__\026mypyc filler docstring\a__doc__\n__module__", + "\001\fnative_class", + "", +}; +const char * const CPyLit_Bytes[] = { + "\002\001\001\001\000", + "", +}; +const char * const CPyLit_Int[] = { + "", +}; +const double CPyLit_Float[] = {0}; +const double CPyLit_Complex[] = {0}; +const int CPyLit_Tuple[] = { + 13, 1, 4, 1, 5, 1, 7, 3, 30, 30, 30, 1, 72, 2, 33, 34, 7, 40, 41, + 33, 42, 43, 34, 44, 3, 45, 45, 10, 1, 76, 1, 47, 1, 49, 1, 51, 1, 66 +}; +const int CPyLit_FrozenSet[] = {0}; +CPyModule *CPyModule_faster_hexbytes__internal = NULL; +CPyModule *CPyModule_faster_hexbytes; +PyObject *CPyStatic_faster_hexbytes___globals; +CPyModule *CPyModule_builtins; +CPyModule *CPyModule_importlib___metadata; +CPyModule *CPyModule_faster_hexbytes___main__internal = NULL; +CPyModule *CPyModule_faster_hexbytes___main; +CPyModule *CPyModule_faster_hexbytes____utils__internal = NULL; +CPyModule *CPyModule_faster_hexbytes____utils; +PyObject *CPyStatic__utils___globals; +CPyModule *CPyModule_binascii; +CPyModule *CPyModule_typing; +PyObject *CPyStatic_main___globals; +CPyModule *CPyModule_hexbytes___main; +CPyModule *CPyModule_mypy_extensions; +CPyModule *CPyModule_typing_extensions; +char CPyDef_faster_hexbytes_____top_level__(void); +PyObject *CPyStatic__utils___unhexlify = NULL; +PyObject *CPyDef__utils___to_bytes(PyObject *cpy_r_val); +PyObject *CPyPy__utils___to_bytes(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +PyObject *CPyDef__utils___hexstr_to_bytes(PyObject *cpy_r_hexstr); +PyObject *CPyPy__utils___hexstr_to_bytes(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +char CPyDef__utils_____top_level__(void); +PyObject *CPyStatic_main____bytes_new = NULL; +PyTypeObject *CPyType_main___HexBytes; +PyTypeObject *CPyType_main_____new___3_HexBytes_obj; +PyObject *CPyDef_main_____new___3_HexBytes_obj(void); +CPyThreadLocal faster_hexbytes___main_____new___3_HexBytes_objObject *main_____new___3_HexBytes_obj_free_instance; +PyTypeObject *CPyType_main_____getitem___3_HexBytes_obj; +PyObject *CPyDef_main_____getitem___3_HexBytes_obj(void); +CPyThreadLocal faster_hexbytes___main_____getitem___3_HexBytes_objObject *main_____getitem___3_HexBytes_obj_free_instance; +PyTypeObject *CPyType_main_____repr___3_HexBytes_obj; +PyObject *CPyDef_main_____repr___3_HexBytes_obj(void); +CPyThreadLocal faster_hexbytes___main_____repr___3_HexBytes_objObject *main_____repr___3_HexBytes_obj_free_instance; +PyTypeObject *CPyType_main___to_0x_hex_HexBytes_obj; +PyObject *CPyDef_main___to_0x_hex_HexBytes_obj(void); +CPyThreadLocal faster_hexbytes___main___to_0x_hex_HexBytes_objObject *main___to_0x_hex_HexBytes_obj_free_instance; +PyTypeObject *CPyType_main_____reduce___3_HexBytes_obj; +PyObject *CPyDef_main_____reduce___3_HexBytes_obj(void); +CPyThreadLocal faster_hexbytes___main_____reduce___3_HexBytes_objObject *main_____reduce___3_HexBytes_obj_free_instance; +PyObject *CPyDef_main_____new___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); +PyObject *CPyPy_main_____new___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +PyObject *CPyDef_main_____new___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_cls, PyObject *cpy_r_val); +PyObject *CPyPy_main_____new___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +PyObject *CPyDef_main_____getitem___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); +PyObject *CPyPy_main_____getitem___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +PyObject *CPyDef_main_____getitem___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self, PyObject *cpy_r_key); +PyObject *CPyPy_main_____getitem___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +PyObject *CPyDef_main_____repr___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); +PyObject *CPyPy_main_____repr___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +PyObject *CPyDef_main_____repr___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self); +PyObject *CPyPy_main_____repr___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +PyObject *CPyDef_main___to_0x_hex_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); +PyObject *CPyPy_main___to_0x_hex_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +PyObject *CPyDef_main___to_0x_hex_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self); +PyObject *CPyPy_main___to_0x_hex_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +PyObject *CPyDef_main_____reduce___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); +PyObject *CPyPy_main_____reduce___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +tuple_T2OT2OO CPyDef_main_____reduce___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self); +PyObject *CPyPy_main_____reduce___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +char CPyDef_main_____top_level__(void); + +static int exec_6a32f4913d613d6a7ddf__mypyc(PyObject *module) +{ + int res; + PyObject *capsule; + PyObject *tmp; + + extern PyObject *CPyInit_faster_hexbytes(void); + capsule = PyCapsule_New((void *)CPyInit_faster_hexbytes, "6a32f4913d613d6a7ddf__mypyc.init_faster_hexbytes", NULL); + if (!capsule) { + goto fail; + } + res = PyObject_SetAttrString(module, "init_faster_hexbytes", capsule); + Py_DECREF(capsule); + if (res < 0) { + goto fail; + } + + extern PyObject *CPyInit_faster_hexbytes____utils(void); + capsule = PyCapsule_New((void *)CPyInit_faster_hexbytes____utils, "6a32f4913d613d6a7ddf__mypyc.init_faster_hexbytes____utils", NULL); + if (!capsule) { + goto fail; + } + res = PyObject_SetAttrString(module, "init_faster_hexbytes____utils", capsule); + Py_DECREF(capsule); + if (res < 0) { + goto fail; + } + + extern PyObject *CPyInit_faster_hexbytes___main(void); + capsule = PyCapsule_New((void *)CPyInit_faster_hexbytes___main, "6a32f4913d613d6a7ddf__mypyc.init_faster_hexbytes___main", NULL); + if (!capsule) { + goto fail; + } + res = PyObject_SetAttrString(module, "init_faster_hexbytes___main", capsule); + Py_DECREF(capsule); + if (res < 0) { + goto fail; + } + + return 0; + fail: + return -1; +} +static PyModuleDef module_def_6a32f4913d613d6a7ddf__mypyc = { + PyModuleDef_HEAD_INIT, + .m_name = "6a32f4913d613d6a7ddf__mypyc", + .m_doc = NULL, + .m_size = -1, + .m_methods = NULL, +}; +PyMODINIT_FUNC PyInit_6a32f4913d613d6a7ddf__mypyc(void) { + static PyObject *module = NULL; + if (module) { + Py_INCREF(module); + return module; + } + module = PyModule_Create(&module_def_6a32f4913d613d6a7ddf__mypyc); + if (!module) { + return NULL; + } + if (exec_6a32f4913d613d6a7ddf__mypyc(module) < 0) { + Py_DECREF(module); + return NULL; + } + return module; +} diff --git a/build/__native_6a32f4913d613d6a7ddf.h b/build/__native_6a32f4913d613d6a7ddf.h new file mode 100644 index 0000000..d1ad01d --- /dev/null +++ b/build/__native_6a32f4913d613d6a7ddf.h @@ -0,0 +1,72 @@ +#ifndef MYPYC_NATIVE_6a32f4913d613d6a7ddf_H +#define MYPYC_NATIVE_6a32f4913d613d6a7ddf_H +#include +#include +#ifndef MYPYC_DECLARED_tuple_T2OO +#define MYPYC_DECLARED_tuple_T2OO +typedef struct tuple_T2OO { + PyObject *f0; + PyObject *f1; +} tuple_T2OO; +#endif + +#ifndef MYPYC_DECLARED_tuple_T3OOO +#define MYPYC_DECLARED_tuple_T3OOO +typedef struct tuple_T3OOO { + PyObject *f0; + PyObject *f1; + PyObject *f2; +} tuple_T3OOO; +#endif + +#ifndef MYPYC_DECLARED_tuple_T2OT2OO +#define MYPYC_DECLARED_tuple_T2OT2OO +typedef struct tuple_T2OT2OO { + PyObject *f0; + tuple_T2OO f1; +} tuple_T2OT2OO; +#endif + +#ifndef MYPYC_DECLARED_tuple_T6OOOOOO +#define MYPYC_DECLARED_tuple_T6OOOOOO +typedef struct tuple_T6OOOOOO { + PyObject *f0; + PyObject *f1; + PyObject *f2; + PyObject *f3; + PyObject *f4; + PyObject *f5; +} tuple_T6OOOOOO; +#endif + +typedef struct { + PyObject_HEAD + CPyVTableItem *vtable; + vectorcallfunc vectorcall; +} faster_hexbytes___main_____new___3_HexBytes_objObject; + +typedef struct { + PyObject_HEAD + CPyVTableItem *vtable; + vectorcallfunc vectorcall; +} faster_hexbytes___main_____getitem___3_HexBytes_objObject; + +typedef struct { + PyObject_HEAD + CPyVTableItem *vtable; + vectorcallfunc vectorcall; +} faster_hexbytes___main_____repr___3_HexBytes_objObject; + +typedef struct { + PyObject_HEAD + CPyVTableItem *vtable; + vectorcallfunc vectorcall; +} faster_hexbytes___main___to_0x_hex_HexBytes_objObject; + +typedef struct { + PyObject_HEAD + CPyVTableItem *vtable; + vectorcallfunc vectorcall; +} faster_hexbytes___main_____reduce___3_HexBytes_objObject; + +#endif diff --git a/build/__native_internal_6a32f4913d613d6a7ddf.h b/build/__native_internal_6a32f4913d613d6a7ddf.h new file mode 100644 index 0000000..84b1a09 --- /dev/null +++ b/build/__native_internal_6a32f4913d613d6a7ddf.h @@ -0,0 +1,78 @@ +#ifndef MYPYC_NATIVE_INTERNAL_6a32f4913d613d6a7ddf_H +#define MYPYC_NATIVE_INTERNAL_6a32f4913d613d6a7ddf_H +#include +#include +#include "__native_6a32f4913d613d6a7ddf.h" + +int CPyGlobalsInit(void); + +extern PyObject *CPyStatics[82]; +extern const char * const CPyLit_Str[]; +extern const char * const CPyLit_Bytes[]; +extern const char * const CPyLit_Int[]; +extern const double CPyLit_Float[]; +extern const double CPyLit_Complex[]; +extern const int CPyLit_Tuple[]; +extern const int CPyLit_FrozenSet[]; +extern CPyModule *CPyModule_faster_hexbytes__internal; +extern CPyModule *CPyModule_faster_hexbytes; +extern PyObject *CPyStatic_faster_hexbytes___globals; +extern CPyModule *CPyModule_builtins; +extern CPyModule *CPyModule_importlib___metadata; +extern CPyModule *CPyModule_faster_hexbytes___main__internal; +extern CPyModule *CPyModule_faster_hexbytes___main; +extern CPyModule *CPyModule_faster_hexbytes____utils__internal; +extern CPyModule *CPyModule_faster_hexbytes____utils; +extern PyObject *CPyStatic__utils___globals; +extern CPyModule *CPyModule_binascii; +extern CPyModule *CPyModule_typing; +extern PyObject *CPyStatic_main___globals; +extern CPyModule *CPyModule_hexbytes___main; +extern CPyModule *CPyModule_mypy_extensions; +extern CPyModule *CPyModule_typing_extensions; +extern char CPyDef_faster_hexbytes_____top_level__(void); +extern PyObject *CPyStatic__utils___unhexlify; +extern PyObject *CPyDef__utils___to_bytes(PyObject *cpy_r_val); +extern PyObject *CPyPy__utils___to_bytes(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +extern PyObject *CPyDef__utils___hexstr_to_bytes(PyObject *cpy_r_hexstr); +extern PyObject *CPyPy__utils___hexstr_to_bytes(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +extern char CPyDef__utils_____top_level__(void); +extern PyObject *CPyStatic_main____bytes_new; +extern PyTypeObject *CPyType_main___HexBytes; +extern PyTypeObject *CPyType_main_____new___3_HexBytes_obj; +extern PyObject *CPyDef_main_____new___3_HexBytes_obj(void); +extern CPyThreadLocal faster_hexbytes___main_____new___3_HexBytes_objObject *main_____new___3_HexBytes_obj_free_instance; +extern PyTypeObject *CPyType_main_____getitem___3_HexBytes_obj; +extern PyObject *CPyDef_main_____getitem___3_HexBytes_obj(void); +extern CPyThreadLocal faster_hexbytes___main_____getitem___3_HexBytes_objObject *main_____getitem___3_HexBytes_obj_free_instance; +extern PyTypeObject *CPyType_main_____repr___3_HexBytes_obj; +extern PyObject *CPyDef_main_____repr___3_HexBytes_obj(void); +extern CPyThreadLocal faster_hexbytes___main_____repr___3_HexBytes_objObject *main_____repr___3_HexBytes_obj_free_instance; +extern PyTypeObject *CPyType_main___to_0x_hex_HexBytes_obj; +extern PyObject *CPyDef_main___to_0x_hex_HexBytes_obj(void); +extern CPyThreadLocal faster_hexbytes___main___to_0x_hex_HexBytes_objObject *main___to_0x_hex_HexBytes_obj_free_instance; +extern PyTypeObject *CPyType_main_____reduce___3_HexBytes_obj; +extern PyObject *CPyDef_main_____reduce___3_HexBytes_obj(void); +extern CPyThreadLocal faster_hexbytes___main_____reduce___3_HexBytes_objObject *main_____reduce___3_HexBytes_obj_free_instance; +extern PyObject *CPyDef_main_____new___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); +extern PyObject *CPyPy_main_____new___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +extern PyObject *CPyDef_main_____new___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_cls, PyObject *cpy_r_val); +extern PyObject *CPyPy_main_____new___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +extern PyObject *CPyDef_main_____getitem___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); +extern PyObject *CPyPy_main_____getitem___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +extern PyObject *CPyDef_main_____getitem___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self, PyObject *cpy_r_key); +extern PyObject *CPyPy_main_____getitem___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +extern PyObject *CPyDef_main_____repr___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); +extern PyObject *CPyPy_main_____repr___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +extern PyObject *CPyDef_main_____repr___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self); +extern PyObject *CPyPy_main_____repr___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +extern PyObject *CPyDef_main___to_0x_hex_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); +extern PyObject *CPyPy_main___to_0x_hex_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +extern PyObject *CPyDef_main___to_0x_hex_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self); +extern PyObject *CPyPy_main___to_0x_hex_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +extern PyObject *CPyDef_main_____reduce___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); +extern PyObject *CPyPy_main_____reduce___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +extern tuple_T2OT2OO CPyDef_main_____reduce___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self); +extern PyObject *CPyPy_main_____reduce___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +extern char CPyDef_main_____top_level__(void); +#endif diff --git a/build/faster_hexbytes.c b/build/faster_hexbytes.c new file mode 100644 index 0000000..c09d246 --- /dev/null +++ b/build/faster_hexbytes.c @@ -0,0 +1,21 @@ +#include + +PyMODINIT_FUNC +PyInit_faster_hexbytes(void) +{ + PyObject *tmp; + if (!(tmp = PyImport_ImportModule("6a32f4913d613d6a7ddf__mypyc"))) return NULL; + PyObject *capsule = PyObject_GetAttrString(tmp, "init_faster_hexbytes"); + Py_DECREF(tmp); + if (capsule == NULL) return NULL; + void *init_func = PyCapsule_GetPointer(capsule, "6a32f4913d613d6a7ddf__mypyc.init_faster_hexbytes"); + Py_DECREF(capsule); + if (!init_func) { + return NULL; + } + return ((PyObject *(*)(void))init_func)(); +} + +// distutils sometimes spuriously tells cl to export CPyInit___init__, +// so provide that so it chills out +PyMODINIT_FUNC PyInit___init__(void) { return PyInit_faster_hexbytes(); } diff --git a/build/faster_hexbytes/_utils.c b/build/faster_hexbytes/_utils.c new file mode 100644 index 0000000..d9858f5 --- /dev/null +++ b/build/faster_hexbytes/_utils.c @@ -0,0 +1,21 @@ +#include + +PyMODINIT_FUNC +PyInit__utils(void) +{ + PyObject *tmp; + if (!(tmp = PyImport_ImportModule("6a32f4913d613d6a7ddf__mypyc"))) return NULL; + PyObject *capsule = PyObject_GetAttrString(tmp, "init_faster_hexbytes____utils"); + Py_DECREF(tmp); + if (capsule == NULL) return NULL; + void *init_func = PyCapsule_GetPointer(capsule, "6a32f4913d613d6a7ddf__mypyc.init_faster_hexbytes____utils"); + Py_DECREF(capsule); + if (!init_func) { + return NULL; + } + return ((PyObject *(*)(void))init_func)(); +} + +// distutils sometimes spuriously tells cl to export CPyInit___init__, +// so provide that so it chills out +PyMODINIT_FUNC PyInit___init__(void) { return PyInit__utils(); } diff --git a/build/faster_hexbytes/main.c b/build/faster_hexbytes/main.c new file mode 100644 index 0000000..12ae3ec --- /dev/null +++ b/build/faster_hexbytes/main.c @@ -0,0 +1,21 @@ +#include + +PyMODINIT_FUNC +PyInit_main(void) +{ + PyObject *tmp; + if (!(tmp = PyImport_ImportModule("6a32f4913d613d6a7ddf__mypyc"))) return NULL; + PyObject *capsule = PyObject_GetAttrString(tmp, "init_faster_hexbytes___main"); + Py_DECREF(tmp); + if (capsule == NULL) return NULL; + void *init_func = PyCapsule_GetPointer(capsule, "6a32f4913d613d6a7ddf__mypyc.init_faster_hexbytes___main"); + Py_DECREF(capsule); + if (!init_func) { + return NULL; + } + return ((PyObject *(*)(void))init_func)(); +} + +// distutils sometimes spuriously tells cl to export CPyInit___init__, +// so provide that so it chills out +PyMODINIT_FUNC PyInit___init__(void) { return PyInit_main(); } diff --git a/build/ops.txt b/build/ops.txt new file mode 100644 index 0000000..5ed32ca --- /dev/null +++ b/build/ops.txt @@ -0,0 +1,1466 @@ +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4, r5, r6 :: object + r7 :: str + r8 :: dict + r9, r10 :: object + r11 :: str + r12 :: dict + r13 :: object + r14 :: str + r15 :: list + r16, r17 :: ptr + r18 :: dict + r19 :: str + r20 :: i32 + r21 :: bit + r22 :: str + r23 :: dict + r24 :: str + r25 :: object + r26 :: object[1] + r27 :: object_ptr + r28 :: object + r29 :: str + r30 :: dict + r31 :: str + r32 :: i32 + r33 :: bit + r34 :: None +L0: + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool +L1: + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L12 (error at :-1) else goto L2 +L2: + builtins = r4 :: module + dec_ref r4 +L3: + r5 = ('version',) + r6 = ('__version',) + r7 = 'importlib.metadata' + r8 = faster_hexbytes.globals :: static + r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) + if is_error(r9) goto L12 (error at :1) else goto L4 +L4: + importlib.metadata = r9 :: module + dec_ref r9 + r10 = ('HexBytes',) + r11 = 'faster_hexbytes.main' + r12 = faster_hexbytes.globals :: static + r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) + if is_error(r13) goto L12 (error at :5) else goto L5 +L5: + faster_hexbytes.main = r13 :: module + dec_ref r13 + r14 = 'HexBytes' + r15 = PyList_New(1) + if is_error(r15) goto L12 (error at :9) else goto L6 +L6: + r16 = get_element_ptr r15 ob_item :: PyListObject + r17 = load_mem r16 :: ptr* + inc_ref r14 + set_mem r17, r14 :: builtins.object* + r18 = faster_hexbytes.globals :: static + r19 = '__all__' + r20 = CPyDict_SetItem(r18, r19, r15) + dec_ref r15 + r21 = r20 >= 0 :: signed + if not r21 goto L12 (error at :9) else goto L7 :: bool +L7: + r22 = 'hexbytes' + r23 = faster_hexbytes.globals :: static + r24 = '__version' + r25 = CPyDict_GetItem(r23, r24) + if is_error(r25) goto L12 (error at :11) else goto L8 +L8: + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L12 (error at :11) else goto L9 +L9: + r29 = cast(str, r28) + if is_error(r29) goto L12 (error at :11) else goto L10 +L10: + r30 = faster_hexbytes.globals :: static + r31 = '__version__' + r32 = CPyDict_SetItem(r30, r31, r29) + dec_ref r29 + r33 = r32 >= 0 :: signed + if not r33 goto L12 (error at :11) else goto L11 :: bool +L11: + return 1 +L12: + r34 = :: None + return r34 + +def to_bytes(val): + val :: union[bytes, str, object, bool, int] + r0 :: bit + r1 :: bytes + r2 :: bit + r3 :: str + r4 :: bytes + r5 :: bit + r6 :: object + r7 :: object[1] + r8 :: object_ptr + r9 :: object + r10 :: bytes + r11 :: bit + r12 :: bool + r13, r14, r15 :: bytes + r16 :: bit + r17 :: int + r18 :: native_int + r19 :: bit + r20 :: native_int + r21, r22 :: bit + r23 :: bool + r24 :: bit + r25 :: str + r26 :: int + r27, r28, r29 :: str + r30 :: object + r31 :: str + r32 :: object + r33 :: object[1] + r34 :: object_ptr + r35 :: object + r36 :: int + r37 :: object + r38 :: str + r39, r40 :: object + r41 :: object[1] + r42 :: object_ptr + r43 :: object + r44 :: str + r45 :: bytes + r46 :: object + r47 :: str + r48 :: object + r49 :: i32 + r50 :: bit + r51 :: bool + r52 :: object + r53 :: object[1] + r54 :: object_ptr + r55 :: object + r56 :: bytes + r57, r58, r59, r60, r61 :: str + r62 :: object[3] + r63 :: object_ptr + r64 :: object + r65, r66 :: str + r67 :: object + r68, r69 :: str + r70 :: object[3] + r71 :: object_ptr + r72 :: object + r73 :: str + r74 :: list + r75, r76, r77, r78, r79, r80 :: ptr + r81 :: str + r82 :: object + r83 :: str + r84 :: object + r85 :: object[1] + r86 :: object_ptr + r87 :: object + r88 :: bytes +L0: + r0 = PyBytes_Check(val) + if r0 goto L1 else goto L3 :: bool +L1: + inc_ref val + r1 = cast(bytes, val) + if is_error(r1) goto L51 (error at to_bytes:19) else goto L2 +L2: + return r1 +L3: + r2 = PyUnicode_Check(val) + if r2 goto L4 else goto L7 :: bool +L4: + inc_ref val + r3 = cast(str, val) + if is_error(r3) goto L51 (error at to_bytes:21) else goto L5 +L5: + r4 = hexstr_to_bytes(r3) + dec_ref r3 + if is_error(r4) goto L51 (error at to_bytes:21) else goto L6 +L6: + return r4 +L7: + r5 = PyByteArray_Check(val) + if r5 goto L8 else goto L11 :: bool +L8: + r6 = load_address PyBytes_Type + r7 = [val] + r8 = load_address r7 + r9 = PyObject_Vectorcall(r6, r8, 1, 0) + if is_error(r9) goto L51 (error at to_bytes:23) else goto L9 +L9: + r10 = cast(bytes, r9) + if is_error(r10) goto L51 (error at to_bytes:23) else goto L10 +L10: + return r10 +L11: + r11 = PyBool_Check(val) + if r11 goto L12 else goto L17 :: bool +L12: + r12 = unbox(bool, val) + if is_error(r12) goto L51 (error at to_bytes:25) else goto L13 +L13: + if r12 goto L14 else goto L15 :: bool +L14: + r13 = b'\x01' + inc_ref r13 + r14 = r13 + goto L16 +L15: + r15 = b'\x00' + inc_ref r15 + r14 = r15 +L16: + return r14 +L17: + r16 = PyLong_Check(val) + if r16 goto L18 else goto L37 :: bool +L18: + r17 = unbox(int, val) + if is_error(r17) goto L51 (error at to_bytes:29) else goto L19 +L19: + r18 = r17 & 1 + r19 = r18 != 0 + if r19 goto L21 else goto L20 :: bool +L20: + r20 = 0 & 1 + r21 = r20 != 0 + if r21 goto L21 else goto L22 :: bool +L21: + r22 = CPyTagged_IsLt_(r17, 0) + r23 = r22 + goto L23 +L22: + r24 = r17 < 0 :: signed + r23 = r24 +L23: + dec_ref r17 :: int + if r23 goto L24 else goto L31 :: bool +L24: + r25 = 'Cannot convert negative integer ' + r26 = unbox(int, val) + if is_error(r26) goto L51 (error at to_bytes:30) else goto L25 +L25: + r27 = CPyTagged_Str(r26) + dec_ref r26 :: int + if is_error(r27) goto L51 (error at to_bytes:30) else goto L26 +L26: + r28 = ' to bytes' + r29 = CPyStr_Build(3, r25, r27, r28) + dec_ref r27 + if is_error(r29) goto L51 (error at to_bytes:30) else goto L27 +L27: + r30 = builtins :: module + r31 = 'ValueError' + r32 = CPyObject_GetAttr(r30, r31) + if is_error(r32) goto L52 (error at to_bytes:30) else goto L28 +L28: + r33 = [r29] + r34 = load_address r33 + r35 = PyObject_Vectorcall(r32, r34, 1, 0) + dec_ref r32 + if is_error(r35) goto L52 (error at to_bytes:30) else goto L29 +L29: + dec_ref r29 + CPy_Raise(r35) + dec_ref r35 + if not 0 goto L51 (error at to_bytes:30) else goto L30 :: bool +L30: + unreachable +L31: + r36 = unbox(int, val) + if is_error(r36) goto L51 (error at to_bytes:32) else goto L32 +L32: + r37 = builtins :: module + r38 = 'hex' + r39 = CPyObject_GetAttr(r37, r38) + if is_error(r39) goto L53 (error at to_bytes:32) else goto L33 +L33: + r40 = box(int, r36) + r41 = [r40] + r42 = load_address r41 + r43 = PyObject_Vectorcall(r39, r42, 1, 0) + dec_ref r39 + if is_error(r43) goto L54 (error at to_bytes:32) else goto L34 +L34: + dec_ref r40 + r44 = cast(str, r43) + if is_error(r44) goto L51 (error at to_bytes:32) else goto L35 +L35: + r45 = to_bytes(r44) + dec_ref r44 + if is_error(r45) goto L51 (error at to_bytes:32) else goto L36 +L36: + return r45 +L37: + r46 = builtins :: module + r47 = 'memoryview' + r48 = CPyObject_GetAttr(r46, r47) + if is_error(r48) goto L51 (error at to_bytes:33) else goto L38 +L38: + r49 = PyObject_IsInstance(val, r48) + dec_ref r48 + r50 = r49 >= 0 :: signed + if not r50 goto L51 (error at to_bytes:33) else goto L39 :: bool +L39: + r51 = truncate r49: i32 to builtins.bool + if r51 goto L40 else goto L43 :: bool +L40: + r52 = load_address PyBytes_Type + r53 = [val] + r54 = load_address r53 + r55 = PyObject_Vectorcall(r52, r54, 1, 0) + if is_error(r55) goto L51 (error at to_bytes:34) else goto L41 +L41: + r56 = cast(bytes, r55) + if is_error(r56) goto L51 (error at to_bytes:34) else goto L42 +L42: + return r56 +L43: + r57 = '' + r58 = 'Cannot convert ' + r59 = '{!r:{}}' + r60 = '' + r61 = 'format' + r62 = [r59, val, r60] + r63 = load_address r62 + r64 = PyObject_VectorcallMethod(r61, r63, 9223372036854775811, 0) + if is_error(r64) goto L51 (error at to_bytes:36) else goto L44 +L44: + r65 = ' of type ' + r66 = '{:{}}' + r67 = CPy_TYPE(val) + r68 = '' + r69 = 'format' + r70 = [r66, r67, r68] + r71 = load_address r70 + r72 = PyObject_VectorcallMethod(r69, r71, 9223372036854775811, 0) + if is_error(r72) goto L55 (error at to_bytes:36) else goto L45 +L45: + dec_ref r67 + r73 = ' to bytes' + r74 = PyList_New(5) + if is_error(r74) goto L56 (error at to_bytes:36) else goto L46 +L46: + r75 = get_element_ptr r74 ob_item :: PyListObject + r76 = load_mem r75 :: ptr* + inc_ref r58 + set_mem r76, r58 :: builtins.object* + r77 = r76 + 8 + set_mem r77, r64 :: builtins.object* + inc_ref r65 + r78 = r76 + 16 + set_mem r78, r65 :: builtins.object* + r79 = r76 + 24 + set_mem r79, r72 :: builtins.object* + inc_ref r73 + r80 = r76 + 32 + set_mem r80, r73 :: builtins.object* + r81 = PyUnicode_Join(r57, r74) + dec_ref r74 + if is_error(r81) goto L51 (error at to_bytes:36) else goto L47 +L47: + r82 = builtins :: module + r83 = 'TypeError' + r84 = CPyObject_GetAttr(r82, r83) + if is_error(r84) goto L57 (error at to_bytes:36) else goto L48 +L48: + r85 = [r81] + r86 = load_address r85 + r87 = PyObject_Vectorcall(r84, r86, 1, 0) + dec_ref r84 + if is_error(r87) goto L57 (error at to_bytes:36) else goto L49 +L49: + dec_ref r81 + CPy_Raise(r87) + dec_ref r87 + if not 0 goto L51 (error at to_bytes:36) else goto L50 :: bool +L50: + unreachable +L51: + r88 = :: bytes + return r88 +L52: + dec_ref r29 + goto L51 +L53: + dec_ref r36 :: int + goto L51 +L54: + dec_ref r40 + goto L51 +L55: + dec_ref r64 + dec_ref r67 + goto L51 +L56: + dec_ref r64 + dec_ref r72 + goto L51 +L57: + dec_ref r81 + goto L51 + +def hexstr_to_bytes(hexstr): + hexstr, r0, r1 :: str + r2 :: tuple[str, str] + r3 :: object + r4 :: bool + r5 :: object + r6, non_prefixed_hex :: str + r7 :: native_int + r8 :: bit + r9 :: short_int + r10 :: int + r11 :: bit + r12, r13, padded_hex :: str + r14 :: bytes + r15 :: tuple[object, object, object] + r16 :: object + r17 :: str + r18 :: object + r19 :: bit + r20, r21, r22 :: str + r23 :: object + r24 :: str + r25 :: object + r26 :: object[1] + r27 :: object_ptr + r28 :: object + r29 :: bit + r30 :: object + r31 :: bool + r32 :: object[1] + r33 :: object_ptr + r34 :: object + r35, r36 :: bytes +L0: + r0 = '0x' + r1 = '0X' + inc_ref r0 + inc_ref r1 + r2 = (r0, r1) + r3 = box(tuple[str, str], r2) + r4 = CPyStr_Startswith(hexstr, r3) + dec_ref r3 + if is_error(r4) goto L31 (error at hexstr_to_bytes:40) else goto L1 +L1: + if r4 goto L2 else goto L5 :: bool +L2: + r5 = CPyStr_GetSlice(hexstr, 4, 9223372036854775806) + if is_error(r5) goto L31 (error at hexstr_to_bytes:41) else goto L3 +L3: + r6 = cast(str, r5) + if is_error(r6) goto L31 (error at hexstr_to_bytes:41) else goto L4 +L4: + non_prefixed_hex = r6 + goto L6 +L5: + inc_ref hexstr + non_prefixed_hex = hexstr +L6: + r7 = CPyStr_Size_size_t(hexstr) + r8 = r7 >= 0 :: signed + if not r8 goto L32 (error at hexstr_to_bytes:46) else goto L7 :: bool +L7: + r9 = r7 << 1 + r10 = CPyTagged_Remainder(r9, 4) + if is_error(r10) goto L32 (error at hexstr_to_bytes:46) else goto L8 +L8: + r11 = r10 != 0 + dec_ref r10 :: int + if r11 goto L9 else goto L11 :: bool +L9: + r12 = '0' + r13 = PyUnicode_Concat(r12, non_prefixed_hex) + dec_ref non_prefixed_hex + if is_error(r13) goto L31 (error at hexstr_to_bytes:47) else goto L10 +L10: + padded_hex = r13 + goto L12 +L11: + padded_hex = non_prefixed_hex +L12: + r14 = PyUnicode_AsASCIIString(padded_hex) + if is_error(r14) goto L14 (error at hexstr_to_bytes:52) else goto L33 +L13: + goto L25 +L14: + r15 = CPy_CatchError() + r16 = builtins :: module + r17 = 'UnicodeDecodeError' + r18 = CPyObject_GetAttr(r16, r17) + if is_error(r18) goto L34 (error at hexstr_to_bytes:53) else goto L15 +L15: + r19 = CPy_ExceptionMatches(r18) + dec_ref r18 + if r19 goto L16 else goto L35 :: bool +L16: + r20 = 'hex string ' + r21 = ' may only contain [0-9a-fA-F] characters' + r22 = CPyStr_Build(3, r20, padded_hex, r21) + dec_ref padded_hex + if is_error(r22) goto L23 (error at hexstr_to_bytes:55) else goto L17 +L17: + r23 = builtins :: module + r24 = 'ValueError' + r25 = CPyObject_GetAttr(r23, r24) + if is_error(r25) goto L36 (error at hexstr_to_bytes:54) else goto L18 +L18: + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L36 (error at hexstr_to_bytes:54) else goto L19 +L19: + dec_ref r22 + CPy_Raise(r28) + dec_ref r28 + if not 0 goto L23 (error at hexstr_to_bytes:54) else goto L37 :: bool +L20: + unreachable +L21: + CPy_Reraise() + if not 0 goto L23 else goto L38 :: bool +L22: + unreachable +L23: + CPy_RestoreExcInfo(r15) + dec_ref r15 + r29 = CPy_KeepPropagating() + if not r29 goto L31 else goto L24 :: bool +L24: + unreachable +L25: + r30 = faster_hexbytes._utils.unhexlify :: static + if is_error(r30) goto L39 else goto L28 +L26: + r31 = raise NameError('value for final name "unhexlify" was not set') + if not r31 goto L31 (error at hexstr_to_bytes:58) else goto L27 :: bool +L27: + unreachable +L28: + r32 = [r14] + r33 = load_address r32 + r34 = PyObject_Vectorcall(r30, r33, 1, 0) + if is_error(r34) goto L40 (error at hexstr_to_bytes:58) else goto L29 +L29: + dec_ref r14 + r35 = cast(bytes, r34) + if is_error(r35) goto L31 (error at hexstr_to_bytes:58) else goto L30 +L30: + return r35 +L31: + r36 = :: bytes + return r36 +L32: + dec_ref non_prefixed_hex + goto L31 +L33: + dec_ref padded_hex + goto L13 +L34: + dec_ref padded_hex + goto L23 +L35: + dec_ref padded_hex + goto L21 +L36: + dec_ref r22 + goto L23 +L37: + dec_ref r15 + goto L20 +L38: + dec_ref r15 + goto L22 +L39: + dec_ref r14 + goto L26 +L40: + dec_ref r14 + goto L31 + +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4 :: object + r5 :: object_ptr + r6 :: object_ptr[1] + r7 :: c_ptr + r8 :: native_int[1] + r9 :: c_ptr + r10 :: object + r11 :: dict + r12, r13 :: str + r14 :: bit + r15 :: object + r16 :: str + r17 :: dict + r18, r19 :: object + r20 :: str + r21 :: object + r22 :: dict + r23 :: str + r24 :: i32 + r25 :: bit + r26 :: None +L0: + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool +L1: + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L8 (error at :-1) else goto L2 +L2: + builtins = r4 :: module + dec_ref r4 +L3: + r5 = load_address binascii :: module + r6 = [r5] + r7 = load_address r6 + r8 = [1] + r9 = load_address r8 + r10 = (('binascii', 'binascii', 'binascii'),) + r11 = faster_hexbytes._utils.globals :: static + r12 = 'faster_hexbytes/_utils.py' + r13 = '' + r14 = CPyImport_ImportMany(r10, r7, r11, r12, r13, r9) + if not r14 goto L8 else goto L4 :: bool +L4: + r15 = ('Final', 'Union') + r16 = 'typing' + r17 = faster_hexbytes._utils.globals :: static + r18 = CPyImport_ImportFromMany(r16, r15, r15, r17) + if is_error(r18) goto L8 (error at :2) else goto L5 +L5: + typing = r18 :: module + dec_ref r18 + r19 = binascii :: module + r20 = 'unhexlify' + r21 = CPyObject_GetAttr(r19, r20) + if is_error(r21) goto L8 (error at :8) else goto L6 +L6: + faster_hexbytes._utils.unhexlify = r21 :: static + r22 = faster_hexbytes._utils.globals :: static + r23 = 'unhexlify' + r24 = CPyDict_SetItem(r22, r23, r21) + dec_ref r21 + r25 = r24 >= 0 :: signed + if not r25 goto L8 (error at :8) else goto L7 :: bool +L7: + return 1 +L8: + r26 = :: None + return r26 + +def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def __new___HexBytes_obj.__call__(__mypyc_self__, cls, val): + __mypyc_self__ :: faster_hexbytes.main.__new___HexBytes_obj + cls :: object + val :: union[bytes, str, bool, object, int] + r0 :: bytes + r1 :: object + r2 :: bool + r3 :: object[2] + r4 :: object_ptr + r5 :: object + r6, r7 :: faster_hexbytes.main.HexBytes +L0: + r0 = to_bytes(val) + if is_error(r0) goto L7 (error at __new__:49) else goto L1 +L1: + r1 = faster_hexbytes.main._bytes_new :: static + if is_error(r1) goto L8 else goto L4 +L2: + r2 = raise NameError('value for final name "_bytes_new" was not set') + if not r2 goto L7 (error at __new__:50) else goto L3 :: bool +L3: + unreachable +L4: + r3 = [cls, r0] + r4 = load_address r3 + r5 = PyObject_Vectorcall(r1, r4, 2, 0) + if is_error(r5) goto L9 (error at __new__:50) else goto L5 +L5: + dec_ref r0 + r6 = cast(faster_hexbytes.main.HexBytes, r5) + if is_error(r6) goto L7 (error at __new__:50) else goto L6 +L6: + return r6 +L7: + r7 = :: faster_hexbytes.main.HexBytes + return r7 +L8: + dec_ref r0 + goto L2 +L9: + dec_ref r0 + goto L7 + +def __getitem___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def __getitem___HexBytes_obj.__call__(__mypyc_self__, self, key): + __mypyc_self__ :: faster_hexbytes.main.__getitem___HexBytes_obj + self :: faster_hexbytes.main.HexBytes + key, r0 :: object + r1 :: str + r2 :: object[3] + r3 :: object_ptr + r4 :: object + r5 :: union[int, bytes] + r6 :: bit + r7 :: int + r8, r9, r10 :: object + r11 :: bit + r12 :: bytes + r13 :: object + r14 :: object[1] + r15 :: object_ptr + r16 :: object + r17 :: faster_hexbytes.main.HexBytes + r18 :: bytes + r19 :: object[1] + r20 :: object_ptr + r21 :: object + r22 :: faster_hexbytes.main.HexBytes + r23 :: union[int, faster_hexbytes.main.HexBytes] +L0: + r0 = load_address PyBytes_Type + r1 = '__getitem__' + r2 = [r0, self, key] + r3 = load_address r2 + r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775811, 0) + if is_error(r4) goto L14 (error at __getitem__:63) else goto L1 +L1: + r5 = cast(union[int, bytes], r4) + if is_error(r5) goto L14 (error at __getitem__:63) else goto L2 +L2: + r6 = PyLong_Check(r5) + if r6 goto L3 else goto L5 :: bool +L3: + r7 = unbox(int, r5) + dec_ref r5 + if is_error(r7) goto L14 (error at __getitem__:65) else goto L4 +L4: + r8 = box(int, r7) + return r8 +L5: + r9 = CPy_TYPE(self) + r10 = faster_hexbytes.main.HexBytes :: type + r11 = r9 == r10 + if r11 goto L15 else goto L10 :: bool +L6: + r12 = cast(bytes, r5) + if is_error(r12) goto L14 (error at __getitem__:69) else goto L7 +L7: + r13 = faster_hexbytes.main.HexBytes :: type + r14 = [r12] + r15 = load_address r14 + r16 = PyObject_Vectorcall(r13, r15, 1, 0) + if is_error(r16) goto L16 (error at __getitem__:69) else goto L8 +L8: + dec_ref r12 + r17 = cast(faster_hexbytes.main.HexBytes, r16) + if is_error(r17) goto L14 (error at __getitem__:69) else goto L9 +L9: + return r17 +L10: + r18 = cast(bytes, r5) + if is_error(r18) goto L17 (error at __getitem__:70) else goto L11 +L11: + r19 = [r18] + r20 = load_address r19 + r21 = PyObject_Vectorcall(r9, r20, 1, 0) + dec_ref r9 + if is_error(r21) goto L18 (error at __getitem__:70) else goto L12 +L12: + dec_ref r18 + r22 = cast(faster_hexbytes.main.HexBytes, r21) + if is_error(r22) goto L14 (error at __getitem__:70) else goto L13 +L13: + return r22 +L14: + r23 = :: union[int, faster_hexbytes.main.HexBytes] + return r23 +L15: + dec_ref r9 + goto L6 +L16: + dec_ref r12 + goto L14 +L17: + dec_ref r9 + goto L14 +L18: + dec_ref r18 + goto L14 + +def __repr___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def __repr___HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.__repr___HexBytes_obj + self :: faster_hexbytes.main.HexBytes + r0, r1, r2, r3, r4 :: str + r5 :: object[1] + r6 :: object_ptr + r7 :: object + r8, r9, r10, r11 :: str + r12 :: object[3] + r13 :: object_ptr + r14 :: object + r15, r16 :: str + r17 :: list + r18, r19, r20, r21 :: ptr + r22, r23 :: str +L0: + r0 = '' + r1 = 'HexBytes(' + r2 = '{!r:{}}' + r3 = '0x' + r4 = 'hex' + r5 = [self] + r6 = load_address r5 + r7 = PyObject_VectorcallMethod(r4, r6, 9223372036854775809, 0) + if is_error(r7) goto L8 (error at __repr__:73) else goto L1 +L1: + r8 = cast(str, r7) + if is_error(r8) goto L8 (error at __repr__:73) else goto L2 +L2: + r9 = PyUnicode_Concat(r3, r8) + dec_ref r8 + if is_error(r9) goto L8 (error at __repr__:73) else goto L3 +L3: + r10 = '' + r11 = 'format' + r12 = [r2, r9, r10] + r13 = load_address r12 + r14 = PyObject_VectorcallMethod(r11, r13, 9223372036854775811, 0) + if is_error(r14) goto L9 (error at __repr__:73) else goto L4 +L4: + dec_ref r9 + r15 = cast(str, r14) + if is_error(r15) goto L8 (error at __repr__:73) else goto L5 +L5: + r16 = ')' + r17 = PyList_New(3) + if is_error(r17) goto L10 (error at __repr__:73) else goto L6 +L6: + r18 = get_element_ptr r17 ob_item :: PyListObject + r19 = load_mem r18 :: ptr* + inc_ref r1 + set_mem r19, r1 :: builtins.object* + r20 = r19 + 8 + set_mem r20, r15 :: builtins.object* + inc_ref r16 + r21 = r19 + 16 + set_mem r21, r16 :: builtins.object* + r22 = PyUnicode_Join(r0, r17) + dec_ref r17 + if is_error(r22) goto L8 (error at __repr__:73) else goto L7 +L7: + return r22 +L8: + r23 = :: str + return r23 +L9: + dec_ref r9 + goto L8 +L10: + dec_ref r15 + goto L8 + +def to_0x_hex_HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def to_0x_hex_HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.to_0x_hex_HexBytes_obj + self :: faster_hexbytes.main.HexBytes + r0, r1 :: str + r2 :: object[1] + r3 :: object_ptr + r4 :: object + r5, r6, r7 :: str +L0: + r0 = '0x' + r1 = 'hex' + r2 = [self] + r3 = load_address r2 + r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775809, 0) + if is_error(r4) goto L4 (error at to_0x_hex:79) else goto L1 +L1: + r5 = cast(str, r4) + if is_error(r5) goto L4 (error at to_0x_hex:79) else goto L2 +L2: + r6 = CPyStr_Build(2, r0, r5) + dec_ref r5 + if is_error(r6) goto L4 (error at to_0x_hex:79) else goto L3 +L3: + return r6 +L4: + r7 = :: str + return r7 + +def __reduce___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def __reduce___HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.__reduce___HexBytes_obj + self :: faster_hexbytes.main.HexBytes + r0 :: object + r1 :: bool + r2, r3 :: object + r4 :: object[1] + r5 :: object_ptr + r6 :: object + r7 :: bytes + r8 :: tuple[object, bytes] + r9, r10 :: tuple[object, tuple[object, bytes]] +L0: + r0 = faster_hexbytes.main._bytes_new :: static + if is_error(r0) goto L1 else goto L3 +L1: + r1 = raise NameError('value for final name "_bytes_new" was not set') + if not r1 goto L6 (error at __reduce__:89) else goto L2 :: bool +L2: + unreachable +L3: + r2 = CPy_TYPE(self) + r3 = load_address PyBytes_Type + r4 = [self] + r5 = load_address r4 + r6 = PyObject_Vectorcall(r3, r5, 1, 0) + if is_error(r6) goto L7 (error at __reduce__:89) else goto L4 +L4: + r7 = cast(bytes, r6) + if is_error(r7) goto L7 (error at __reduce__:89) else goto L5 +L5: + r8 = (r2, r7) + inc_ref r0 + r9 = (r0, r8) + return r9 +L6: + r10 = :: tuple[object, tuple[object, bytes]] + return r10 +L7: + dec_ref r2 + goto L6 + +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4, r5 :: object + r6 :: str + r7 :: dict + r8 :: object + r9 :: object_ptr + r10 :: object_ptr[1] + r11 :: c_ptr + r12 :: native_int[1] + r13 :: c_ptr + r14 :: object + r15 :: dict + r16, r17 :: str + r18 :: bit + r19 :: object + r20 :: str + r21 :: dict + r22, r23 :: object + r24 :: str + r25 :: dict + r26, r27 :: object + r28 :: str + r29 :: dict + r30 :: object + r31 :: dict + r32 :: str + r33, r34, r35, r36, r37 :: object + r38 :: str + r39, r40, r41 :: object + r42 :: str + r43 :: object + r44 :: tuple[object, object, object, object, object, object] + r45, r46 :: object + r47 :: dict + r48 :: str + r49 :: i32 + r50 :: bit + r51 :: object + r52 :: str + r53 :: object + r54 :: dict + r55 :: str + r56 :: i32 + r57 :: bit + r58 :: object + r59 :: str + r60 :: object + r61 :: tuple + r62, r63 :: object + r64 :: str + r65 :: bool + r66, r67 :: str + r68 :: object + r69 :: object[2] + r70 :: object_ptr + r71 :: object + r72, r73, r74, r75 :: dict + r76 :: faster_hexbytes.main.__new___HexBytes_obj + r77 :: object + r78 :: str + r79 :: object + r80 :: object[1] + r81 :: object_ptr + r82 :: object + r83 :: str + r84 :: i32 + r85 :: bit + r86 :: faster_hexbytes.main.__getitem___HexBytes_obj + r87 :: str + r88 :: i32 + r89 :: bit + r90 :: faster_hexbytes.main.__repr___HexBytes_obj + r91 :: str + r92 :: i32 + r93 :: bit + r94 :: faster_hexbytes.main.to_0x_hex_HexBytes_obj + r95 :: str + r96 :: i32 + r97 :: bit + r98 :: faster_hexbytes.main.__reduce___HexBytes_obj + r99 :: str + r100 :: i32 + r101 :: bit + r102, r103 :: str + r104 :: i32 + r105 :: bit + r106, r107 :: str + r108 :: i32 + r109 :: bit + r110, r111 :: str + r112 :: i32 + r113 :: bit + r114 :: object[3] + r115 :: object_ptr + r116 :: object + r117 :: dict + r118 :: str + r119, r120 :: object + r121 :: object[1] + r122 :: object_ptr + r123, r124 :: object + r125 :: object[1] + r126 :: object_ptr + r127 :: object + r128 :: dict + r129 :: str + r130 :: i32 + r131 :: bit + r132 :: object + r133 :: None +L0: + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool +L1: + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L48 (error at :-1) else goto L2 +L2: + builtins = r4 :: module + dec_ref r4 +L3: + r5 = ('TYPE_CHECKING', 'Callable', 'Final', 'Tuple', 'Type', 'Union', 'overload') + r6 = 'typing' + r7 = faster_hexbytes.main.globals :: static + r8 = CPyImport_ImportFromMany(r6, r5, r5, r7) + if is_error(r8) goto L48 (error at :1) else goto L4 +L4: + typing = r8 :: module + dec_ref r8 + r9 = load_address hexbytes.main :: module + r10 = [r9] + r11 = load_address r10 + r12 = [14] + r13 = load_address r12 + r14 = (('hexbytes.main', 'hexbytes.main', 'hexbytes'),) + r15 = faster_hexbytes.main.globals :: static + r16 = 'faster_hexbytes/main.py' + r17 = '' + r18 = CPyImport_ImportMany(r14, r11, r15, r16, r17, r13) + if not r18 goto L48 else goto L5 :: bool +L5: + r19 = ('mypyc_attr',) + r20 = 'mypy_extensions' + r21 = faster_hexbytes.main.globals :: static + r22 = CPyImport_ImportFromMany(r20, r19, r19, r21) + if is_error(r22) goto L48 (error at :15) else goto L6 +L6: + mypy_extensions = r22 :: module + dec_ref r22 + r23 = ('Self',) + r24 = 'typing_extensions' + r25 = faster_hexbytes.main.globals :: static + r26 = CPyImport_ImportFromMany(r24, r23, r23, r25) + if is_error(r26) goto L48 (error at :18) else goto L7 +L7: + typing_extensions = r26 :: module + dec_ref r26 + r27 = ('to_bytes',) + r28 = 'faster_hexbytes._utils' + r29 = faster_hexbytes.main.globals :: static + r30 = CPyImport_ImportFromMany(r28, r27, r27, r29) + if is_error(r30) goto L48 (error at :22) else goto L8 +L8: + faster_hexbytes._utils = r30 :: module + dec_ref r30 + if 0 goto L9 else goto L9 :: bool +L9: + r31 = faster_hexbytes.main.globals :: static + r32 = 'Union' + r33 = CPyDict_GetItem(r31, r32) + if is_error(r33) goto L48 (error at :31) else goto L10 +L10: + r34 = load_address PyBytes_Type + r35 = load_address PyUnicode_Type + r36 = load_address PyBool_Type + r37 = builtins :: module + r38 = 'bytearray' + r39 = CPyObject_GetAttr(r37, r38) + if is_error(r39) goto L49 (error at :31) else goto L11 +L11: + r40 = load_address PyLong_Type + r41 = builtins :: module + r42 = 'memoryview' + r43 = CPyObject_GetAttr(r41, r42) + if is_error(r43) goto L50 (error at :31) else goto L12 +L12: + inc_ref r34 + inc_ref r35 + inc_ref r36 + inc_ref r40 + r44 = (r34, r35, r36, r39, r40, r43) + r45 = box(tuple[object, object, object, object, object, object], r44) + r46 = PyObject_GetItem(r33, r45) + dec_ref r33 + dec_ref r45 + if is_error(r46) goto L48 (error at :31) else goto L13 +L13: + r47 = faster_hexbytes.main.globals :: static + r48 = 'BytesLike' + r49 = CPyDict_SetItem(r47, r48, r46) + dec_ref r46 + r50 = r49 >= 0 :: signed + if not r50 goto L48 (error at :31) else goto L14 :: bool +L14: + r51 = load_address PyBytes_Type + r52 = '__new__' + r53 = CPyObject_GetAttr(r51, r52) + if is_error(r53) goto L48 (error at :33) else goto L15 +L15: + faster_hexbytes.main._bytes_new = r53 :: static + r54 = faster_hexbytes.main.globals :: static + r55 = '_bytes_new' + r56 = CPyDict_SetItem(r54, r55, r53) + dec_ref r53 + r57 = r56 >= 0 :: signed + if not r57 goto L48 (error at :33) else goto L16 :: bool +L16: + r58 = hexbytes.main :: module + r59 = 'HexBytes' + r60 = CPyObject_GetAttr(r58, r59) + if is_error(r60) goto L48 (error at :37) else goto L17 +L17: + r61 = PyTuple_Pack(1, r60) + dec_ref r60 + if is_error(r61) goto L48 (error at :37) else goto L18 +L18: + r62 = load_address PyType_Type + r63 = CPy_CalculateMetaclass(r62, r61) + if is_error(r63) goto L51 (error at :37) else goto L19 +L19: + r64 = '__prepare__' + r65 = PyObject_HasAttr(r63, r64) + if r65 goto L20 else goto L24 :: bool +L20: + r66 = 'HexBytes' + r67 = '__prepare__' + r68 = CPyObject_GetAttr(r63, r67) + if is_error(r68) goto L51 (error at :37) else goto L21 +L21: + r69 = [r66, r61] + r70 = load_address r69 + r71 = PyObject_Vectorcall(r68, r70, 2, 0) + dec_ref r68 + if is_error(r71) goto L51 (error at :37) else goto L22 +L22: + r72 = cast(dict, r71) + if is_error(r72) goto L51 (error at :37) else goto L23 +L23: + r73 = r72 + goto L26 +L24: + r74 = PyDict_New() + if is_error(r74) goto L51 (error at :37) else goto L25 +L25: + r73 = r74 +L26: + r75 = PyDict_New() + if is_error(r75) goto L52 (error at :37) else goto L27 +L27: + r76 = __new___HexBytes_obj() + if is_error(r76) goto L53 (error at :48) else goto L28 +L28: + r77 = builtins :: module + r78 = 'staticmethod' + r79 = CPyObject_GetAttr(r77, r78) + if is_error(r79) goto L54 (error at :48) else goto L29 +L29: + r80 = [r76] + r81 = load_address r80 + r82 = PyObject_Vectorcall(r79, r81, 1, 0) + dec_ref r79 + if is_error(r82) goto L54 (error at :48) else goto L30 +L30: + dec_ref r76 + r83 = '__new__' + r84 = CPyDict_SetItem(r73, r83, r82) + dec_ref r82 + r85 = r84 >= 0 :: signed + if not r85 goto L53 (error at :48) else goto L31 :: bool +L31: + r86 = __getitem___HexBytes_obj() + if is_error(r86) goto L53 (error at :60) else goto L32 +L32: + r87 = '__getitem__' + r88 = CPyDict_SetItem(r73, r87, r86) + dec_ref r86 + r89 = r88 >= 0 :: signed + if not r89 goto L53 (error at :60) else goto L33 :: bool +L33: + r90 = __repr___HexBytes_obj() + if is_error(r90) goto L53 (error at :72) else goto L34 +L34: + r91 = '__repr__' + r92 = CPyDict_SetItem(r73, r91, r90) + dec_ref r90 + r93 = r92 >= 0 :: signed + if not r93 goto L53 (error at :72) else goto L35 :: bool +L35: + r94 = to_0x_hex_HexBytes_obj() + if is_error(r94) goto L53 (error at :75) else goto L36 +L36: + r95 = 'to_0x_hex' + r96 = CPyDict_SetItem(r73, r95, r94) + dec_ref r94 + r97 = r96 >= 0 :: signed + if not r97 goto L53 (error at :75) else goto L37 :: bool +L37: + r98 = __reduce___HexBytes_obj() + if is_error(r98) goto L53 (error at :81) else goto L38 +L38: + r99 = '__reduce__' + r100 = CPyDict_SetItem(r73, r99, r98) + dec_ref r98 + r101 = r100 >= 0 :: signed + if not r101 goto L53 (error at :81) else goto L39 :: bool +L39: + r102 = 'HexBytes' + r103 = '__annotations__' + r104 = CPyDict_SetItem(r73, r103, r75) + dec_ref r75 + r105 = r104 >= 0 :: signed + if not r105 goto L52 (error at :37) else goto L40 :: bool +L40: + r106 = 'mypyc filler docstring' + r107 = '__doc__' + r108 = CPyDict_SetItem(r73, r107, r106) + r109 = r108 >= 0 :: signed + if not r109 goto L52 (error at :37) else goto L41 :: bool +L41: + r110 = 'faster_hexbytes.main' + r111 = '__module__' + r112 = CPyDict_SetItem(r73, r111, r110) + r113 = r112 >= 0 :: signed + if not r113 goto L52 (error at :37) else goto L42 :: bool +L42: + r114 = [r102, r61, r73] + r115 = load_address r114 + r116 = PyObject_Vectorcall(r63, r115, 3, 0) + if is_error(r116) goto L52 (error at :37) else goto L43 +L43: + dec_ref r73 + dec_ref r61 + r117 = faster_hexbytes.main.globals :: static + r118 = 'mypyc_attr' + r119 = CPyDict_GetItem(r117, r118) + if is_error(r119) goto L55 (error at :36) else goto L44 +L44: + r120 = box(bool, 0) + r121 = [r120] + r122 = load_address r121 + r123 = ('native_class',) + r124 = PyObject_Vectorcall(r119, r122, 0, r123) + dec_ref r119 + if is_error(r124) goto L55 (error at :36) else goto L45 +L45: + r125 = [r116] + r126 = load_address r125 + r127 = PyObject_Vectorcall(r124, r126, 1, 0) + dec_ref r124 + if is_error(r127) goto L55 (error at :37) else goto L46 +L46: + dec_ref r116 + faster_hexbytes.main.HexBytes = r127 :: type + r128 = faster_hexbytes.main.globals :: static + r129 = 'HexBytes' + r130 = PyDict_SetItem(r128, r129, r127) + dec_ref r127 + r131 = r130 >= 0 :: signed + if not r131 goto L48 (error at :37) else goto L47 :: bool +L47: + r132 = faster_hexbytes.main.HexBytes :: type + return 1 +L48: + r133 = :: None + return r133 +L49: + dec_ref r33 + goto L48 +L50: + dec_ref r33 + dec_ref r39 + goto L48 +L51: + dec_ref r61 + goto L48 +L52: + dec_ref r61 + dec_ref r73 + goto L48 +L53: + dec_ref r61 + dec_ref r73 + dec_ref r75 + goto L48 +L54: + dec_ref r61 + dec_ref r73 + dec_ref r75 + dec_ref r76 + goto L48 +L55: + dec_ref r116 + goto L48 From 38f05f2ddb5d21c1ee0b719c3b155b0e91988b64 Mon Sep 17 00:00:00 2001 From: BobTheBuidler Date: Tue, 30 Sep 2025 06:21:29 +0000 Subject: [PATCH 26/98] benchmarks --- .github/workflows/benchmark.yaml | 113 ++++++++++ .github/workflows/codspeed.yaml | 32 +++ benchmarks/params.py | 193 ++++++++++++++++++ benchmarks/test__utils_benchmarks.py | 32 +++ benchmarks/test_main_benchmarks.py | 76 +++++++ .../benchmark/compare_benchmark_results.py | 94 +++++++++ .../benchmark/generate_benchmark_markdown.py | 62 ++++++ scripts/benchmark/parse_benchmark_output.py | 78 +++++++ 8 files changed, 680 insertions(+) create mode 100644 .github/workflows/benchmark.yaml create mode 100644 .github/workflows/codspeed.yaml create mode 100644 benchmarks/params.py create mode 100644 benchmarks/test__utils_benchmarks.py create mode 100644 benchmarks/test_main_benchmarks.py create mode 100644 scripts/benchmark/compare_benchmark_results.py create mode 100644 scripts/benchmark/generate_benchmark_markdown.py create mode 100644 scripts/benchmark/parse_benchmark_output.py diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml new file mode 100644 index 0000000..50a0b8e --- /dev/null +++ b/.github/workflows/benchmark.yaml @@ -0,0 +1,113 @@ +name: Pytest Benchmarks + +on: + pull_request: + branches: [master] + push: + branches: [master] + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + benchmark: + name: Run Benchmarks + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.13" + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install .[dev] + pip install pytest-codspeed pytest-benchmark hexbytes + - name: Run Pytest Benchmark & Save Output + run: pytest --benchmark-only --benchmark-json=benchmark.json benchmarks/ + - name: Upload Pytest Benchmark Results + uses: actions/upload-artifact@v4 + with: + name: pytest-benchmark-results + path: benchmark.json + - name: Parse Pytest Benchmark Output + run: python scripts/benchmark/parse_benchmark_output.py benchmark.json pytest_benchmark_results.json + - name: Compare Pytest Benchmark Results + run: python scripts/benchmark/compare_benchmark_results.py pytest_benchmark_results.json pytest_benchmark_diff.json + - name: Generate Markdown Benchmark Results + run: python scripts/benchmark/generate_benchmark_markdown.py + - name: Commit and Push Markdown Benchmark Results + continue-on-error: true + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "github-actions[bot]@users.noreply.github.com" + git fetch origin ${{ github.head_ref || github.ref_name }} + git checkout ${{ github.head_ref || github.ref_name }} + git add benchmarks/results/*.md + if git diff --cached --quiet; then + echo "No changes to commit." + else + git commit -m "Update benchmark results [skip ci]" + git push origin HEAD:${{ github.head_ref || github.ref_name }} + fi + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Upload Markdown Benchmark Results + uses: actions/upload-artifact@v4 + with: + name: markdown-benchmark-results + path: benchmarks/results/*.md + - name: Upload Pytest Benchmark Diff + uses: actions/upload-artifact@v4 + with: + name: pytest-benchmark-diff + path: pytest_benchmark_diff.json + - name: Post Pytest Benchmark Diff as PR Comment + uses: actions/github-script@v7 + with: + script: | + const fs = require('fs'); + const diff = JSON.parse(fs.readFileSync('pytest_benchmark_diff.json', 'utf8')); + let body = '### Pytest Benchmark Diff\n\n'; + const repo = `${context.repo.owner}/${context.repo.repo}`; + const branch = context.payload.pull_request ? context.payload.pull_request.head.ref : context.ref.replace('refs/heads/', ''); + for (const [submodule, groupDiffs] of Object.entries(diff)) { + let submoduleFile = "unknown"; + let benchmarkFile = "unknown"; + const m = submodule.match(/^faster_hexbytes\.(.+)$/); + if (m) { + submoduleFile = `faster_hexbytes/${m[1]}.py`; + benchmarkFile = `benchmarks/test_${m[1]}_benchmarks.py`; + } + const submoduleUrl = `https://github.com/${repo}/blob/${branch}/${submoduleFile}`; + const benchmarkUrl = `https://github.com/${repo}/blob/${branch}/${benchmarkFile}`; + body += `#### [${submodule}](${submoduleUrl}) - [view benchmarks](${benchmarkUrl})\n`; + body += '| Function | Reference Mean | Faster Mean | % Change | Speedup (%) | x Faster | Faster |\n'; + body += '|----------|---------------|-------------|----------|-------------|----------|--------|\n'; + for (const [group, data] of Object.entries(groupDiffs).sort(([a], [b]) => a.localeCompare(b))) { + if (data.percent_change !== null && data.percent_change !== undefined) { + let emoji = '➖'; + if (data.percent_change > 0) emoji = '✅'; + else if (data.percent_change < 0) emoji = '❌'; + const percentChange = data.percent_change !== undefined && data.percent_change !== null + ? `${data.percent_change.toFixed(2)}%` : ''; + const speedupPercent = data.speedup_percent !== undefined && data.speedup_percent !== null + ? `${data.speedup_percent.toFixed(2)}%` : ''; + const speedupX = data.speedup_x !== undefined && data.speedup_x !== null && isFinite(data.speedup_x) + ? `${data.speedup_x.toFixed(2)}x` : ''; + body += `| \`${group}\` | ${data.reference_mean} | ${data.faster_mean} | ${percentChange} | ${speedupPercent} | ${speedupX} | ${emoji} |\n`; + } else if (data.note) { + body += `| \`${group}\` | | | | | | ➖ |\n`; + } + } + body += '\n'; + } + github.rest.issues.createComment({ + ...context.repo, + issue_number: context.issue.number, + body + }); + if: github.event_name == 'pull_request' diff --git a/.github/workflows/codspeed.yaml b/.github/workflows/codspeed.yaml new file mode 100644 index 0000000..505921c --- /dev/null +++ b/.github/workflows/codspeed.yaml @@ -0,0 +1,32 @@ +name: CodSpeed Benchmarks + +on: + pull_request: + branches: [master] + push: + branches: [master] + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + benchmark: + name: Run CodSpeed Benchmarks + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.13" + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install .[dev] + pip install pytest-codspeed hexbytes + - name: Run CodSpeed + uses: CodSpeedHQ/action@v3 + with: + run: pytest --codspeed -k "test_faster_" benchmarks/ diff --git a/benchmarks/params.py b/benchmarks/params.py new file mode 100644 index 0000000..5dcf67c --- /dev/null +++ b/benchmarks/params.py @@ -0,0 +1,193 @@ +from typing import Any, List, Tuple, Union +from eth_typing import HexStr + +import hexbytes +import faster_hexbytes + +Convertable = Union[bool, bytearray, bytes, int, str, memoryview] + +# Centralized list of all byte patterns and their ids (use human-readable where possible) +BYTES_CASES: List[Tuple[bytes, str]] = [ + (b"abc", "b'abc'"), + (b"", "b''"), + (b"\x00" * 32, "b'\\x00'*32"), + (b"\xff" * 64, "b'\\xff'*64"), + (b"a" * 1024, "b'a'*1024"), + (b"\x01\x02\x03", "b'\\x01\\x02\\x03'"), + (b"\xde\xad\xbe\xef", "b'\\xde\\xad\\xbe\\xef'"), + (b"\x00\xff\x00\xff", "b'\\x00\\xff\\x00\\xff'"), + (b"palindromeemordnilap", "palindrome"), + (b"\x7f" * 8, "b'\\x7f'*8"), + (b"\x80" * 8, "b'\\x80'*8"), + (b"\x01" * 100, "b'\\x01'*100"), + (b"\x10\x20\x30\x40\x50", "b'\\x10\\x20\\x30\\x40\\x50'"), + (b"\x00\xff" * 32, "alternating 0x00/0xff"), + (b"\xaa\x55" * 32, "alternating 0xaa/0x55"), + (b"\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09", "0-9"), + (b"\x00\x10\x20\x30\x40\x50\x60\x70\x80\x90", "multiples of 0x10"), + (b"\x01" * 2048, "b'\\x01'*2048"), + (b"\x00\x01" * 512, "long alternating"), + (b"\x00\xff\x01\xfe" * 64, "4-byte pattern"), + (bytes(range(256)), "all byte values"), + (b"racecar", "palindrome ascii"), + (b"12321", "palindrome numeric"), + (b"\x00" * 1, "single null byte"), + (b"\xff" * 1, "single 0xff"), + (b"\x01\x02" * 50 + b"\x03\x04" * 50, "mixed pattern"), + (b"\x00\xff" * 16 + b"\x01\xfe" * 16, "two patterns"), + (b"the quick brown fox jumps over the lazy dog", "ascii sentence"), + (b"\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09" * 10, "repeated 0-9"), +] + +BYTES_VALS: List[bytes] = [v for v, _ in BYTES_CASES] +BYTES_IDS: List[str] = [id for _, id in BYTES_CASES] + +def variant_ids(base_ids: List[str], prefix: str) -> List[str]: + return [f"{prefix}({id})" for id in base_ids] + +BYTEARRAYS = [bytearray(b) for b in BYTES_VALS] +BYTEARRAYS_IDS = variant_ids(BYTES_IDS, "bytearray") + +MEMORYVIEWS = [memoryview(b) for b in BYTES_VALS] +MEMORYVIEWS_IDS = variant_ids(BYTES_IDS, "memoryview") + +HEXBYTES_ORIG = [hexbytes.HexBytes(b) for b in BYTES_VALS] +HEXBYTES_ORIG_IDS = variant_ids(BYTES_IDS, "hexbytes.HexBytes") + +HEXBYTES_FAST = [faster_hexbytes.HexBytes(b) for b in BYTES_VALS] +HEXBYTES_FAST_IDS = variant_ids(BYTES_IDS, "faster_hexbytes.HexBytes") + +# Other types for construction and conversion, with human-readable ids where possible +STR_CASES: List[Tuple[str, str]] = [ + ("abc", "'abc'"), + ("", "''"), + ("0x1234", "'0x1234'"), + ("deadbeef", "'deadbeef'"), + ("0x", "'0x'"), + ("0x" + "ff" * 32, "'0x'+'ff'*32"), + ("0x" + "00" * 64, "'0x'+'00'*64"), + ("0xabcdef", "'0xabcdef'"), + ("0x" + "a" * 128, "'0x'+'a'*128"), + ("unicode-✓-测试", "unicode string"), + ("0xdeadbeef", "'0xdeadbeef'"), + ("0xCAFEBABE", "'0xCAFEBABE'"), +] +STR_VALS: List[str] = [v for v, _ in STR_CASES] +STR_IDS: List[str] = [id for _, id in STR_CASES] + +INT_CASES: List[Tuple[int, str]] = [ + (123456, "123456"), + (0, "0"), + (-1, "-1"), + (2**8, "2**8"), + (2**16, "2**16"), + (2**32, "2**32"), + (2**64, "2**64"), + (2**256 - 1, "2**256-1"), +] +INT_VALS: List[int] = [v for v, _ in INT_CASES] +INT_IDS: List[str] = [id for _, id in INT_CASES] + +BOOL_CASES: List[Tuple[bool, str]] = [ + (True, "True"), + (False, "False"), +] +BOOL_VALS: List[bool] = [v for v, _ in BOOL_CASES] +BOOL_IDS: List[str] = [id for _, id in BOOL_CASES] + +# For to_bytes and HexBytes construction +CONSTRUCTOR_VALS: List[Any] = ( + BYTES_VALS + BYTEARRAYS + MEMORYVIEWS + STR_VALS + INT_VALS + BOOL_VALS +) +CONSTRUCTOR_IDS: List[str] = ( + BYTES_IDS + BYTEARRAYS_IDS + MEMORYVIEWS_IDS + STR_IDS + INT_IDS + BOOL_IDS +) + +# For bytes-based operations +# (BYTES_VALS and BYTES_IDS already defined above) + +# For index and slice operations +INDEXES = [0, 1, 2, 3, 4, 5, -1] +INDEX_IDS = [str(i) for i in INDEXES] + +SLICES = [slice(0, 3), slice(1, 6), slice(2, None), slice(None, None), slice(-3, None)] +SLICE_IDS = [ + "slice(0,3)", + "slice(1,6)", + "slice(2,None)", + "slice(None,None)", + "slice(-3,None)", +] + +# For to_bytes and hexstr_to_bytes +TO_BYTES_VALS: List[Convertable] = ( + BYTES_VALS + BYTEARRAYS + MEMORYVIEWS + STR_VALS + INT_VALS + BOOL_VALS +) +TO_BYTES_IDS: List[str] = ( + BYTES_IDS + BYTEARRAYS_IDS + MEMORYVIEWS_IDS + STR_IDS + INT_IDS + BOOL_IDS +) + +HEXSTRINGS: List[HexStr] = [ + "0x1234", + "deadbeef", + "0x", + "", + "0x" + "ff" * 32, + "0x" + "00" * 64, + "0xabcdef", + "0x" + "a" * 128, + "0xdeadbeef", + "0xCAFEBABE", + "0x0", + "0x1", + "0x" + "1" * 64, + "0x" + "f" * 64, + "0x" + "0" * 128, + "0x" + "1234567890abcdef" * 8, + "0x" + "00ff" * 16, + "0x" + "ff00" * 16, + "0x" + "a1b2c3d4" * 8, + "0x" + "dead" * 16, + "0x" + "beef" * 16, + "0x" + "cafebabe" * 8, + "0x" + "facefeed" * 8, + "0x" + "badc0ffee0ddf00d" * 4, + "0x" + "0123456789abcdef" * 8, + "0x" + "f" * 128, + "0x" + "e" * 256, + "0x" + "d" * 512, + "0x" + "c" * 1024, + "0x" + "b" * 2048, +] +HEXSTRINGS_IDS: List[str] = [ + "'0x1234'", + "'deadbeef'", + "'0x'", + "''", + "'0x'+'ff'*32", + "'0x'+'00'*64", + "'0xabcdef'", + "'0x'+'a'*128", + "'0xdeadbeef'", + "'0xCAFEBABE'", + "'0x0'", + "'0x1'", + "'0x'+'1'*64", + "'0x'+'f'*64", + "'0x'+'0'*128", + "'0x'+'1234567890abcdef'*8", + "'0x'+'00ff'*16", + "'0x'+'ff00'*16", + "'0x'+'a1b2c3d4'*8", + "'0x'+'dead'*16", + "'0x'+'beef'*16", + "'0x'+'cafebabe'*8", + "'0x'+'facefeed'*8", + "'0x'+'badc0ffee0ddf00d'*4", + "'0x'+'0123456789abcdef'*8", + "'0x'+'f'*128", + "'0x'+'e'*256", + "'0x'+'d'*512", + "'0x'+'c'*1024", + "'0x'+'b'*2048", +] diff --git a/benchmarks/test__utils_benchmarks.py b/benchmarks/test__utils_benchmarks.py new file mode 100644 index 0000000..e40d538 --- /dev/null +++ b/benchmarks/test__utils_benchmarks.py @@ -0,0 +1,32 @@ +from typing import Any + +import hexbytes._utils +import pytest +from eth_typing import HexStr +from pytest_codspeed import BenchmarkFixture + +import faster_hexbytes._utils +from benchmarks.params import ( + TO_BYTES_VALS, TO_BYTES_IDS, + HEXSTRINGS, HEXSTRINGS_IDS, +) + +@pytest.mark.benchmark(group="to_bytes") +@pytest.mark.parametrize("val", TO_BYTES_VALS, ids=TO_BYTES_IDS) +def test_to_bytes(benchmark: BenchmarkFixture, val: Any) -> None: + benchmark(hexbytes._utils.to_bytes, val) + +@pytest.mark.benchmark(group="to_bytes") +@pytest.mark.parametrize("val", TO_BYTES_VALS, ids=TO_BYTES_IDS) +def test_faster_to_bytes(benchmark: BenchmarkFixture, val: Any) -> None: + benchmark(faster_hexbytes._utils.to_bytes, val) + +@pytest.mark.benchmark(group="hexstr_to_bytes") +@pytest.mark.parametrize("hexstr", HEXSTRINGS, ids=HEXSTRINGS_IDS) +def test_hexstr_to_bytes(benchmark: BenchmarkFixture, hexstr: HexStr) -> None: + benchmark(hexbytes._utils.hexstr_to_bytes, hexstr) + +@pytest.mark.benchmark(group="hexstr_to_bytes") +@pytest.mark.parametrize("hexstr", HEXSTRINGS, ids=HEXSTRINGS_IDS) +def test_faster_hexstr_to_bytes(benchmark: BenchmarkFixture, hexstr: HexStr) -> None: + benchmark(faster_hexbytes._utils.hexstr_to_bytes, hexstr) diff --git a/benchmarks/test_main_benchmarks.py b/benchmarks/test_main_benchmarks.py new file mode 100644 index 0000000..2a7d217 --- /dev/null +++ b/benchmarks/test_main_benchmarks.py @@ -0,0 +1,76 @@ +from typing import Any + +import hexbytes +import pytest +from pytest_codspeed import BenchmarkFixture + +import faster_hexbytes +from benchmarks.params import ( + CONSTRUCTOR_VALS, CONSTRUCTOR_IDS, + BYTES_VALS, BYTES_IDS, + SLICES, SLICE_IDS, +) + +@pytest.mark.benchmark(group="HexBytes.__new__") +@pytest.mark.parametrize("val", CONSTRUCTOR_VALS, ids=CONSTRUCTOR_IDS) +def test_hexbytes_new(benchmark: BenchmarkFixture, val: Any) -> None: + benchmark(hexbytes.HexBytes, val) + +@pytest.mark.benchmark(group="HexBytes.__new__") +@pytest.mark.parametrize("val", CONSTRUCTOR_VALS, ids=CONSTRUCTOR_IDS) +def test_faster_hexbytes_new(benchmark: BenchmarkFixture, val: Any) -> None: + benchmark(faster_hexbytes.HexBytes, val) + +@pytest.mark.benchmark(group="HexBytes.__getitem__ (index)") +@pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS) +@pytest.mark.parametrize("idx", [0, 1, 2, 3, 4, 5, -1]) +def test_hexbytes_getitem_index(benchmark: BenchmarkFixture, val: bytes, idx: int) -> None: + obj = hexbytes.HexBytes(val) + if len(val) <= abs(idx): + benchmark(lambda: obj[idx]) + +@pytest.mark.benchmark(group="HexBytes.__getitem__ (index)") +@pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS) +@pytest.mark.parametrize("idx", [0, 1, 2, 3, 4, 5, -1]) +def test_faster_hexbytes_getitem_index(benchmark: BenchmarkFixture, val: bytes, idx: int) -> None: + obj = faster_hexbytes.HexBytes(val) + if len(val) > abs(idx): + benchmark(lambda: obj[idx]) + +@pytest.mark.benchmark(group="HexBytes.__getitem__ (slice)") +@pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS) +@pytest.mark.parametrize("slice_", SLICES, ids=SLICE_IDS) +def test_hexbytes_getitem_slice(benchmark: BenchmarkFixture, val: bytes, slice_: slice) -> None: + obj = hexbytes.HexBytes(val) + benchmark(lambda: obj[slice_]) + +@pytest.mark.benchmark(group="HexBytes.__getitem__ (slice)") +@pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS) +@pytest.mark.parametrize("slice_", SLICES, ids=SLICE_IDS) +def test_faster_hexbytes_getitem_slice(benchmark: BenchmarkFixture, val: bytes, slice_: slice) -> None: + obj = faster_hexbytes.HexBytes(val) + benchmark(lambda: obj[slice_]) + +@pytest.mark.benchmark(group="HexBytes.__repr__") +@pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS) +def test_hexbytes_repr(benchmark: BenchmarkFixture, val: bytes) -> None: + obj = hexbytes.HexBytes(val) + benchmark(obj.__repr__) + +@pytest.mark.benchmark(group="HexBytes.__repr__") +@pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS) +def test_faster_hexbytes_repr(benchmark: BenchmarkFixture, val: bytes) -> None: + obj = faster_hexbytes.HexBytes(val) + benchmark(obj.__repr__) + +@pytest.mark.benchmark(group="HexBytes.to_0x_hex") +@pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS) +def test_hexbytes_to_0x_hex(benchmark: BenchmarkFixture, val: bytes) -> None: + obj = hexbytes.HexBytes(val) + benchmark(obj.to_0x_hex) + +@pytest.mark.benchmark(group="HexBytes.to_0x_hex") +@pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS) +def test_faster_hexbytes_to_0x_hex(benchmark: BenchmarkFixture, val: bytes) -> None: + obj = faster_hexbytes.HexBytes(val) + benchmark(obj.to_0x_hex) diff --git a/scripts/benchmark/compare_benchmark_results.py b/scripts/benchmark/compare_benchmark_results.py new file mode 100644 index 0000000..5f5fa01 --- /dev/null +++ b/scripts/benchmark/compare_benchmark_results.py @@ -0,0 +1,94 @@ +""" +compare_benchmark_results.py + +Compares the two implementations in each benchmark group from a pytest-benchmark parsed results JSON file, +grouped by submodule. +For each submodule and group (e.g., "abi_to_signature"), finds both implementations +(e.g., "test_abi_to_signature" and "test_faster_abi_to_signature"), computes the percent change +in mean execution time, speedup percent, and x factor, and writes a diff JSON file summarizing the results. + +Usage: + python compare_benchmark_results.py [output.json] +""" + +import json +import sys +import re +from typing import Any, Dict + + +def get_group_name(test_name: str) -> str: + # Extract group from test name, e.g., test_foo, test_faster_foo -> group: foo + m = re.match(r"test_faster_(.+)", test_name) + if m: + return m.group(1) + m = re.match(r"test_(.+)", test_name) + if m: + return m.group(1) + return test_name + + +def compare_group(group_results: Dict[str, Any]) -> Dict[str, Any]: + # Find reference and faster implementations in the group + ref = None + fast = None + ref_name = None + fast_name = None + for func_name, data in group_results.items(): + if func_name.startswith("test_faster_"): + fast = data + fast_name = func_name + elif func_name.startswith("test_"): + ref = data + ref_name = func_name + + if ref and fast: + mean_ref = ref["mean"] + mean_fast = fast["mean"] + percent_change = ((mean_ref - mean_fast) / mean_ref) * 100 if mean_ref != 0 else 0.0 + speedup_x = mean_ref / mean_fast if mean_fast != 0 else float('inf') + speedup_percent = (speedup_x - 1) * 100 if speedup_x != float('inf') else float('inf') + return { + "reference_mean": mean_ref, + "faster_mean": mean_fast, + "percent_change": percent_change, + "speedup_percent": speedup_percent, + "speedup_x": speedup_x, + "reference": ref_name, + "faster": fast_name, + } + else: + missing = [] + if not ref: + missing.append("reference") + if not fast: + missing.append("faster") + return {"note": f"Missing implementation(s): {missing}"} + + +def main() -> None: + if len(sys.argv) < 2: + print("Usage: python compare_benchmark_results.py [output.json]") + sys.exit(1) + results_path = sys.argv[1] + output_path = sys.argv[2] if len(sys.argv) > 2 else "benchmark_diff.json" + + with open(results_path, "r") as f: + results = json.load(f) + + # results: {submodule: {group: {function_name: {...}}}} + diff_by_submodule = { + submodule: { + group: compare_group(group_results) + for group, group_results in groups.items() + } + for submodule, groups in results.items() + } + + with open(output_path, "w") as f: + json.dump(diff_by_submodule, f, indent=2) + print(f"Diff written to {output_path}") + + +if __name__ == "__main__": + main() diff --git a/scripts/benchmark/generate_benchmark_markdown.py b/scripts/benchmark/generate_benchmark_markdown.py new file mode 100644 index 0000000..3d3aed7 --- /dev/null +++ b/scripts/benchmark/generate_benchmark_markdown.py @@ -0,0 +1,62 @@ +import os +import json + +def main(): + diff_path = "pytest_benchmark_diff.json" + results_dir = os.path.join("benchmarks", "results") + os.makedirs(results_dir, exist_ok=True) + + # Get repo and branch info from environment variables (for links) + repo = os.environ.get("GITHUB_REPOSITORY", "unknown/unknown") + branch = os.environ.get("GITHUB_HEAD_REF") or os.environ.get("GITHUB_REF", "main").replace("refs/heads/", "") + + with open(diff_path, "r", encoding="utf-8") as f: + diff = json.load(f) + + for submodule, groupDiffs in diff.items(): + # Convert submodule name to submodule file path (e.g., faster_hexbytes.main -> faster_hexbytes/main.py) + submoduleFile = "unknown" + benchmarkFile = "unknown" + m = None + if submodule.startswith("faster_hexbytes."): + m = submodule[len("faster_hexbytes."):] + + if m: + submoduleFile = f"faster_hexbytes/{m}.py" + benchmarkFile = f"benchmarks/test_{m}_benchmarks.py" + + submoduleUrl = f"https://github.com/{repo}/blob/{branch}/{submoduleFile}" + benchmarkUrl = f"https://github.com/{repo}/blob/{branch}/{benchmarkFile}" + + md_lines = [] + md_lines.append(f"#### [{submodule}]({submoduleUrl}) - [view benchmarks]({benchmarkUrl})\n") + md_lines.append("| Function | Reference Mean | Faster Mean | % Change | Speedup (%) | x Faster | Faster |") + md_lines.append("|----------|---------------|-------------|----------|-------------|----------|--------|") + + for group, data in sorted(groupDiffs.items()): + if data.get("percent_change") is not None: + emoji = "➖" + if data["percent_change"] > 0: + emoji = "✅" + elif data["percent_change"] < 0: + emoji = "❌" + percentChange = f"{data['percent_change']:.2f}%" if data.get("percent_change") is not None else "" + speedupPercent = f"{data['speedup_percent']:.2f}%" if data.get("speedup_percent") is not None else "" + speedupX = f"{data['speedup_x']:.2f}x" if data.get("speedup_x") is not None and isinstance(data["speedup_x"], (int, float)) else "" + md_lines.append( + f"| `{group}` | {data.get('reference_mean', '')} | {data.get('faster_mean', '')} | {percentChange} | {speedupPercent} | {speedupX} | {emoji} |" + ) + elif data.get("note"): + md_lines.append(f"| `{group}` | | | | | | ➖ |") + + md_lines.append("") # Blank line at end + md_content = "\n".join(md_lines) + + # Write to file + module_name = submodule.split(".")[-1] + out_path = os.path.join(results_dir, f"{module_name}.md") + with open(out_path, "w", encoding="utf-8") as outf: + outf.write(md_content) + +if __name__ == "__main__": + main() diff --git a/scripts/benchmark/parse_benchmark_output.py b/scripts/benchmark/parse_benchmark_output.py new file mode 100644 index 0000000..bcf1ba9 --- /dev/null +++ b/scripts/benchmark/parse_benchmark_output.py @@ -0,0 +1,78 @@ +""" +parse_benchmark_output.py + +Extracts per-function benchmark timings from pytest-benchmark's benchmark.json output. +Parses the JSON file, finds all test function results, and writes a JSON file +mapping submodules (e.g., Python submodules like faster_hexbytes.main) to groups and their test functions and results. + +Usage: + python parse_benchmark_output.py [output.json] +""" + +import json +import sys +import re +from collections import defaultdict +from typing import Dict, Any + + +def get_submodule(bench: dict) -> str: + # Extract Python submodule from fullname, e.g., "benchmarks/test_abi_benchmarks.py::test_abi_to_signature" + fullname = bench.get("fullname", "") + # Try to extract the submodule from the test file path + m = re.search(r"benchmarks/test_([a-zA-Z0-9_]+)_benchmarks\.py", fullname) + if m: + return f"faster_hexbytes.{m.group(1)}" + return "unknown" + + +def get_group_name(test_name: str) -> str: + # Extract group from test name, e.g., test_foo, test_faster_foo -> group: foo + m = re.match(r"test_faster_(.+)", test_name) + if m: + return m.group(1) + m = re.match(r"test_(.+)", test_name) + if m: + return m.group(1) + return test_name + + +def parse_pytest_benchmark_json(data: dict) -> Dict[str, Dict[str, Dict[str, Any]]]: + """ + Parses pytest-benchmark's benchmark.json and extracts per-function timings, + grouped by submodule and group name. + Returns a dict: {submodule: {group: {function_name: {...}}}} + """ + results = defaultdict(lambda: defaultdict(dict)) + for bench in data.get("benchmarks", []): + name = bench["name"] + submodule = get_submodule(bench) + group = get_group_name(name) + stats = bench["stats"] + results[submodule][group][name] = { + "mean": stats.get("mean"), + "stddev": stats.get("stddev", None), + "iqr": stats.get("iqr", None), + "min": stats.get("min", None), + "max": stats.get("max", None), + "rounds": stats.get("rounds", None), + } + return results + + +def main() -> None: + if len(sys.argv) < 2: + print("Usage: python parse_benchmark_output.py [output.json]") + sys.exit(1) + infile = sys.argv[1] + outfile = sys.argv[2] if len(sys.argv) > 2 else "benchmark_results.json" + with open(infile, "r") as f: + data = json.load(f) + results = parse_pytest_benchmark_json(data) + with open(outfile, "w") as f: + json.dump(results, f, indent=2) + print(f"Parsed results written to {outfile}") + + +if __name__ == "__main__": + main() From f2931412dff5359f1ee6fa60212adf523f5cb215 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 30 Sep 2025 06:22:27 +0000 Subject: [PATCH 27/98] chore: compile C files for source control --- build/ops.txt | 2290 ++++++++++++++++++++++++------------------------- 1 file changed, 1145 insertions(+), 1145 deletions(-) diff --git a/build/ops.txt b/build/ops.txt index 5ed32ca..a8ead04 100644 --- a/build/ops.txt +++ b/build/ops.txt @@ -101,644 +101,326 @@ L12: r34 = :: None return r34 -def to_bytes(val): - val :: union[bytes, str, object, bool, int] - r0 :: bit - r1 :: bytes - r2 :: bit - r3 :: str - r4 :: bytes - r5 :: bit - r6 :: object - r7 :: object[1] - r8 :: object_ptr - r9 :: object - r10 :: bytes +def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def __new___HexBytes_obj.__call__(__mypyc_self__, cls, val): + __mypyc_self__ :: faster_hexbytes.main.__new___HexBytes_obj + cls :: object + val :: union[bytes, str, bool, object, int] + r0 :: bytes + r1 :: object + r2 :: bool + r3 :: object[2] + r4 :: object_ptr + r5 :: object + r6, r7 :: faster_hexbytes.main.HexBytes +L0: + r0 = to_bytes(val) + if is_error(r0) goto L7 (error at __new__:49) else goto L1 +L1: + r1 = faster_hexbytes.main._bytes_new :: static + if is_error(r1) goto L8 else goto L4 +L2: + r2 = raise NameError('value for final name "_bytes_new" was not set') + if not r2 goto L7 (error at __new__:50) else goto L3 :: bool +L3: + unreachable +L4: + r3 = [cls, r0] + r4 = load_address r3 + r5 = PyObject_Vectorcall(r1, r4, 2, 0) + if is_error(r5) goto L9 (error at __new__:50) else goto L5 +L5: + dec_ref r0 + r6 = cast(faster_hexbytes.main.HexBytes, r5) + if is_error(r6) goto L7 (error at __new__:50) else goto L6 +L6: + return r6 +L7: + r7 = :: faster_hexbytes.main.HexBytes + return r7 +L8: + dec_ref r0 + goto L2 +L9: + dec_ref r0 + goto L7 + +def __getitem___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def __getitem___HexBytes_obj.__call__(__mypyc_self__, self, key): + __mypyc_self__ :: faster_hexbytes.main.__getitem___HexBytes_obj + self :: faster_hexbytes.main.HexBytes + key, r0 :: object + r1 :: str + r2 :: object[3] + r3 :: object_ptr + r4 :: object + r5 :: union[int, bytes] + r6 :: bit + r7 :: int + r8, r9, r10 :: object r11 :: bit - r12 :: bool - r13, r14, r15 :: bytes - r16 :: bit - r17 :: int - r18 :: native_int - r19 :: bit - r20 :: native_int - r21, r22 :: bit - r23 :: bool - r24 :: bit - r25 :: str - r26 :: int - r27, r28, r29 :: str - r30 :: object - r31 :: str - r32 :: object - r33 :: object[1] - r34 :: object_ptr - r35 :: object - r36 :: int - r37 :: object - r38 :: str - r39, r40 :: object - r41 :: object[1] - r42 :: object_ptr - r43 :: object - r44 :: str - r45 :: bytes - r46 :: object - r47 :: str - r48 :: object - r49 :: i32 - r50 :: bit - r51 :: bool - r52 :: object - r53 :: object[1] - r54 :: object_ptr - r55 :: object - r56 :: bytes - r57, r58, r59, r60, r61 :: str - r62 :: object[3] - r63 :: object_ptr - r64 :: object - r65, r66 :: str - r67 :: object - r68, r69 :: str - r70 :: object[3] - r71 :: object_ptr - r72 :: object - r73 :: str - r74 :: list - r75, r76, r77, r78, r79, r80 :: ptr - r81 :: str - r82 :: object - r83 :: str - r84 :: object - r85 :: object[1] - r86 :: object_ptr - r87 :: object - r88 :: bytes + r12 :: bytes + r13 :: object + r14 :: object[1] + r15 :: object_ptr + r16 :: object + r17 :: faster_hexbytes.main.HexBytes + r18 :: bytes + r19 :: object[1] + r20 :: object_ptr + r21 :: object + r22 :: faster_hexbytes.main.HexBytes + r23 :: union[int, faster_hexbytes.main.HexBytes] L0: - r0 = PyBytes_Check(val) - if r0 goto L1 else goto L3 :: bool + r0 = load_address PyBytes_Type + r1 = '__getitem__' + r2 = [r0, self, key] + r3 = load_address r2 + r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775811, 0) + if is_error(r4) goto L14 (error at __getitem__:63) else goto L1 L1: - inc_ref val - r1 = cast(bytes, val) - if is_error(r1) goto L51 (error at to_bytes:19) else goto L2 + r5 = cast(union[int, bytes], r4) + if is_error(r5) goto L14 (error at __getitem__:63) else goto L2 L2: - return r1 + r6 = PyLong_Check(r5) + if r6 goto L3 else goto L5 :: bool L3: - r2 = PyUnicode_Check(val) - if r2 goto L4 else goto L7 :: bool + r7 = unbox(int, r5) + dec_ref r5 + if is_error(r7) goto L14 (error at __getitem__:65) else goto L4 L4: - inc_ref val - r3 = cast(str, val) - if is_error(r3) goto L51 (error at to_bytes:21) else goto L5 + r8 = box(int, r7) + return r8 L5: - r4 = hexstr_to_bytes(r3) - dec_ref r3 - if is_error(r4) goto L51 (error at to_bytes:21) else goto L6 + r9 = CPy_TYPE(self) + r10 = faster_hexbytes.main.HexBytes :: type + r11 = r9 == r10 + if r11 goto L15 else goto L10 :: bool L6: - return r4 + r12 = cast(bytes, r5) + if is_error(r12) goto L14 (error at __getitem__:69) else goto L7 L7: - r5 = PyByteArray_Check(val) - if r5 goto L8 else goto L11 :: bool + r13 = faster_hexbytes.main.HexBytes :: type + r14 = [r12] + r15 = load_address r14 + r16 = PyObject_Vectorcall(r13, r15, 1, 0) + if is_error(r16) goto L16 (error at __getitem__:69) else goto L8 L8: - r6 = load_address PyBytes_Type - r7 = [val] - r8 = load_address r7 - r9 = PyObject_Vectorcall(r6, r8, 1, 0) - if is_error(r9) goto L51 (error at to_bytes:23) else goto L9 + dec_ref r12 + r17 = cast(faster_hexbytes.main.HexBytes, r16) + if is_error(r17) goto L14 (error at __getitem__:69) else goto L9 L9: - r10 = cast(bytes, r9) - if is_error(r10) goto L51 (error at to_bytes:23) else goto L10 + return r17 L10: - return r10 + r18 = cast(bytes, r5) + if is_error(r18) goto L17 (error at __getitem__:70) else goto L11 L11: - r11 = PyBool_Check(val) - if r11 goto L12 else goto L17 :: bool + r19 = [r18] + r20 = load_address r19 + r21 = PyObject_Vectorcall(r9, r20, 1, 0) + dec_ref r9 + if is_error(r21) goto L18 (error at __getitem__:70) else goto L12 L12: - r12 = unbox(bool, val) - if is_error(r12) goto L51 (error at to_bytes:25) else goto L13 + dec_ref r18 + r22 = cast(faster_hexbytes.main.HexBytes, r21) + if is_error(r22) goto L14 (error at __getitem__:70) else goto L13 L13: - if r12 goto L14 else goto L15 :: bool + return r22 L14: - r13 = b'\x01' - inc_ref r13 - r14 = r13 - goto L16 -L15: - r15 = b'\x00' - inc_ref r15 - r14 = r15 + r23 = :: union[int, faster_hexbytes.main.HexBytes] + return r23 +L15: + dec_ref r9 + goto L6 L16: - return r14 + dec_ref r12 + goto L14 L17: - r16 = PyLong_Check(val) - if r16 goto L18 else goto L37 :: bool + dec_ref r9 + goto L14 L18: - r17 = unbox(int, val) - if is_error(r17) goto L51 (error at to_bytes:29) else goto L19 -L19: - r18 = r17 & 1 - r19 = r18 != 0 - if r19 goto L21 else goto L20 :: bool -L20: - r20 = 0 & 1 - r21 = r20 != 0 - if r21 goto L21 else goto L22 :: bool -L21: - r22 = CPyTagged_IsLt_(r17, 0) - r23 = r22 - goto L23 -L22: - r24 = r17 < 0 :: signed - r23 = r24 -L23: - dec_ref r17 :: int - if r23 goto L24 else goto L31 :: bool -L24: - r25 = 'Cannot convert negative integer ' - r26 = unbox(int, val) - if is_error(r26) goto L51 (error at to_bytes:30) else goto L25 -L25: - r27 = CPyTagged_Str(r26) - dec_ref r26 :: int - if is_error(r27) goto L51 (error at to_bytes:30) else goto L26 -L26: - r28 = ' to bytes' - r29 = CPyStr_Build(3, r25, r27, r28) - dec_ref r27 - if is_error(r29) goto L51 (error at to_bytes:30) else goto L27 -L27: - r30 = builtins :: module - r31 = 'ValueError' - r32 = CPyObject_GetAttr(r30, r31) - if is_error(r32) goto L52 (error at to_bytes:30) else goto L28 -L28: - r33 = [r29] - r34 = load_address r33 - r35 = PyObject_Vectorcall(r32, r34, 1, 0) - dec_ref r32 - if is_error(r35) goto L52 (error at to_bytes:30) else goto L29 -L29: - dec_ref r29 - CPy_Raise(r35) - dec_ref r35 - if not 0 goto L51 (error at to_bytes:30) else goto L30 :: bool -L30: - unreachable -L31: - r36 = unbox(int, val) - if is_error(r36) goto L51 (error at to_bytes:32) else goto L32 -L32: - r37 = builtins :: module - r38 = 'hex' - r39 = CPyObject_GetAttr(r37, r38) - if is_error(r39) goto L53 (error at to_bytes:32) else goto L33 -L33: - r40 = box(int, r36) - r41 = [r40] - r42 = load_address r41 - r43 = PyObject_Vectorcall(r39, r42, 1, 0) - dec_ref r39 - if is_error(r43) goto L54 (error at to_bytes:32) else goto L34 -L34: - dec_ref r40 - r44 = cast(str, r43) - if is_error(r44) goto L51 (error at to_bytes:32) else goto L35 -L35: - r45 = to_bytes(r44) - dec_ref r44 - if is_error(r45) goto L51 (error at to_bytes:32) else goto L36 -L36: - return r45 -L37: - r46 = builtins :: module - r47 = 'memoryview' - r48 = CPyObject_GetAttr(r46, r47) - if is_error(r48) goto L51 (error at to_bytes:33) else goto L38 -L38: - r49 = PyObject_IsInstance(val, r48) - dec_ref r48 - r50 = r49 >= 0 :: signed - if not r50 goto L51 (error at to_bytes:33) else goto L39 :: bool -L39: - r51 = truncate r49: i32 to builtins.bool - if r51 goto L40 else goto L43 :: bool -L40: - r52 = load_address PyBytes_Type - r53 = [val] - r54 = load_address r53 - r55 = PyObject_Vectorcall(r52, r54, 1, 0) - if is_error(r55) goto L51 (error at to_bytes:34) else goto L41 -L41: - r56 = cast(bytes, r55) - if is_error(r56) goto L51 (error at to_bytes:34) else goto L42 -L42: - return r56 -L43: - r57 = '' - r58 = 'Cannot convert ' - r59 = '{!r:{}}' - r60 = '' - r61 = 'format' - r62 = [r59, val, r60] - r63 = load_address r62 - r64 = PyObject_VectorcallMethod(r61, r63, 9223372036854775811, 0) - if is_error(r64) goto L51 (error at to_bytes:36) else goto L44 -L44: - r65 = ' of type ' - r66 = '{:{}}' - r67 = CPy_TYPE(val) - r68 = '' - r69 = 'format' - r70 = [r66, r67, r68] - r71 = load_address r70 - r72 = PyObject_VectorcallMethod(r69, r71, 9223372036854775811, 0) - if is_error(r72) goto L55 (error at to_bytes:36) else goto L45 -L45: - dec_ref r67 - r73 = ' to bytes' - r74 = PyList_New(5) - if is_error(r74) goto L56 (error at to_bytes:36) else goto L46 -L46: - r75 = get_element_ptr r74 ob_item :: PyListObject - r76 = load_mem r75 :: ptr* - inc_ref r58 - set_mem r76, r58 :: builtins.object* - r77 = r76 + 8 - set_mem r77, r64 :: builtins.object* - inc_ref r65 - r78 = r76 + 16 - set_mem r78, r65 :: builtins.object* - r79 = r76 + 24 - set_mem r79, r72 :: builtins.object* - inc_ref r73 - r80 = r76 + 32 - set_mem r80, r73 :: builtins.object* - r81 = PyUnicode_Join(r57, r74) - dec_ref r74 - if is_error(r81) goto L51 (error at to_bytes:36) else goto L47 -L47: - r82 = builtins :: module - r83 = 'TypeError' - r84 = CPyObject_GetAttr(r82, r83) - if is_error(r84) goto L57 (error at to_bytes:36) else goto L48 -L48: - r85 = [r81] - r86 = load_address r85 - r87 = PyObject_Vectorcall(r84, r86, 1, 0) - dec_ref r84 - if is_error(r87) goto L57 (error at to_bytes:36) else goto L49 -L49: - dec_ref r81 - CPy_Raise(r87) - dec_ref r87 - if not 0 goto L51 (error at to_bytes:36) else goto L50 :: bool -L50: - unreachable -L51: - r88 = :: bytes - return r88 -L52: - dec_ref r29 - goto L51 -L53: - dec_ref r36 :: int - goto L51 -L54: - dec_ref r40 - goto L51 -L55: - dec_ref r64 - dec_ref r67 - goto L51 -L56: - dec_ref r64 - dec_ref r72 - goto L51 -L57: - dec_ref r81 - goto L51 + dec_ref r18 + goto L14 -def hexstr_to_bytes(hexstr): - hexstr, r0, r1 :: str - r2 :: tuple[str, str] - r3 :: object - r4 :: bool - r5 :: object - r6, non_prefixed_hex :: str - r7 :: native_int - r8 :: bit - r9 :: short_int - r10 :: int - r11 :: bit - r12, r13, padded_hex :: str - r14 :: bytes - r15 :: tuple[object, object, object] - r16 :: object - r17 :: str - r18 :: object - r19 :: bit - r20, r21, r22 :: str - r23 :: object - r24 :: str - r25 :: object - r26 :: object[1] - r27 :: object_ptr - r28 :: object - r29 :: bit - r30 :: object - r31 :: bool - r32 :: object[1] - r33 :: object_ptr - r34 :: object - r35, r36 :: bytes +def __repr___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object L0: - r0 = '0x' - r1 = '0X' - inc_ref r0 - inc_ref r1 - r2 = (r0, r1) - r3 = box(tuple[str, str], r2) - r4 = CPyStr_Startswith(hexstr, r3) - dec_ref r3 - if is_error(r4) goto L31 (error at hexstr_to_bytes:40) else goto L1 + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool L1: - if r4 goto L2 else goto L5 :: bool + inc_ref __mypyc_self__ + return __mypyc_self__ L2: - r5 = CPyStr_GetSlice(hexstr, 4, 9223372036854775806) - if is_error(r5) goto L31 (error at hexstr_to_bytes:41) else goto L3 -L3: - r6 = cast(str, r5) - if is_error(r6) goto L31 (error at hexstr_to_bytes:41) else goto L4 + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 L4: - non_prefixed_hex = r6 - goto L6 + r3 = :: object + return r3 + +def __repr___HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.__repr___HexBytes_obj + self :: faster_hexbytes.main.HexBytes + r0, r1, r2, r3, r4 :: str + r5 :: object[1] + r6 :: object_ptr + r7 :: object + r8, r9, r10, r11 :: str + r12 :: object[3] + r13 :: object_ptr + r14 :: object + r15, r16 :: str + r17 :: list + r18, r19, r20, r21 :: ptr + r22, r23 :: str +L0: + r0 = '' + r1 = 'HexBytes(' + r2 = '{!r:{}}' + r3 = '0x' + r4 = 'hex' + r5 = [self] + r6 = load_address r5 + r7 = PyObject_VectorcallMethod(r4, r6, 9223372036854775809, 0) + if is_error(r7) goto L8 (error at __repr__:73) else goto L1 +L1: + r8 = cast(str, r7) + if is_error(r8) goto L8 (error at __repr__:73) else goto L2 +L2: + r9 = PyUnicode_Concat(r3, r8) + dec_ref r8 + if is_error(r9) goto L8 (error at __repr__:73) else goto L3 +L3: + r10 = '' + r11 = 'format' + r12 = [r2, r9, r10] + r13 = load_address r12 + r14 = PyObject_VectorcallMethod(r11, r13, 9223372036854775811, 0) + if is_error(r14) goto L9 (error at __repr__:73) else goto L4 +L4: + dec_ref r9 + r15 = cast(str, r14) + if is_error(r15) goto L8 (error at __repr__:73) else goto L5 L5: - inc_ref hexstr - non_prefixed_hex = hexstr + r16 = ')' + r17 = PyList_New(3) + if is_error(r17) goto L10 (error at __repr__:73) else goto L6 L6: - r7 = CPyStr_Size_size_t(hexstr) - r8 = r7 >= 0 :: signed - if not r8 goto L32 (error at hexstr_to_bytes:46) else goto L7 :: bool + r18 = get_element_ptr r17 ob_item :: PyListObject + r19 = load_mem r18 :: ptr* + inc_ref r1 + set_mem r19, r1 :: builtins.object* + r20 = r19 + 8 + set_mem r20, r15 :: builtins.object* + inc_ref r16 + r21 = r19 + 16 + set_mem r21, r16 :: builtins.object* + r22 = PyUnicode_Join(r0, r17) + dec_ref r17 + if is_error(r22) goto L8 (error at __repr__:73) else goto L7 L7: - r9 = r7 << 1 - r10 = CPyTagged_Remainder(r9, 4) - if is_error(r10) goto L32 (error at hexstr_to_bytes:46) else goto L8 + return r22 L8: - r11 = r10 != 0 - dec_ref r10 :: int - if r11 goto L9 else goto L11 :: bool + r23 = :: str + return r23 L9: - r12 = '0' - r13 = PyUnicode_Concat(r12, non_prefixed_hex) - dec_ref non_prefixed_hex - if is_error(r13) goto L31 (error at hexstr_to_bytes:47) else goto L10 + dec_ref r9 + goto L8 L10: - padded_hex = r13 - goto L12 -L11: - padded_hex = non_prefixed_hex -L12: - r14 = PyUnicode_AsASCIIString(padded_hex) - if is_error(r14) goto L14 (error at hexstr_to_bytes:52) else goto L33 -L13: - goto L25 -L14: - r15 = CPy_CatchError() - r16 = builtins :: module - r17 = 'UnicodeDecodeError' - r18 = CPyObject_GetAttr(r16, r17) - if is_error(r18) goto L34 (error at hexstr_to_bytes:53) else goto L15 -L15: - r19 = CPy_ExceptionMatches(r18) - dec_ref r18 - if r19 goto L16 else goto L35 :: bool -L16: - r20 = 'hex string ' - r21 = ' may only contain [0-9a-fA-F] characters' - r22 = CPyStr_Build(3, r20, padded_hex, r21) - dec_ref padded_hex - if is_error(r22) goto L23 (error at hexstr_to_bytes:55) else goto L17 -L17: - r23 = builtins :: module - r24 = 'ValueError' - r25 = CPyObject_GetAttr(r23, r24) - if is_error(r25) goto L36 (error at hexstr_to_bytes:54) else goto L18 -L18: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L36 (error at hexstr_to_bytes:54) else goto L19 -L19: - dec_ref r22 - CPy_Raise(r28) - dec_ref r28 - if not 0 goto L23 (error at hexstr_to_bytes:54) else goto L37 :: bool -L20: - unreachable -L21: - CPy_Reraise() - if not 0 goto L23 else goto L38 :: bool -L22: - unreachable -L23: - CPy_RestoreExcInfo(r15) - dec_ref r15 - r29 = CPy_KeepPropagating() - if not r29 goto L31 else goto L24 :: bool -L24: - unreachable -L25: - r30 = faster_hexbytes._utils.unhexlify :: static - if is_error(r30) goto L39 else goto L28 -L26: - r31 = raise NameError('value for final name "unhexlify" was not set') - if not r31 goto L31 (error at hexstr_to_bytes:58) else goto L27 :: bool -L27: - unreachable -L28: - r32 = [r14] - r33 = load_address r32 - r34 = PyObject_Vectorcall(r30, r33, 1, 0) - if is_error(r34) goto L40 (error at hexstr_to_bytes:58) else goto L29 -L29: - dec_ref r14 - r35 = cast(bytes, r34) - if is_error(r35) goto L31 (error at hexstr_to_bytes:58) else goto L30 -L30: - return r35 -L31: - r36 = :: bytes - return r36 -L32: - dec_ref non_prefixed_hex - goto L31 -L33: - dec_ref padded_hex - goto L13 -L34: - dec_ref padded_hex - goto L23 -L35: - dec_ref padded_hex - goto L21 -L36: - dec_ref r22 - goto L23 -L37: - dec_ref r15 - goto L20 -L38: dec_ref r15 - goto L22 -L39: - dec_ref r14 - goto L26 -L40: - dec_ref r14 - goto L31 + goto L8 -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4 :: object - r5 :: object_ptr - r6 :: object_ptr[1] - r7 :: c_ptr - r8 :: native_int[1] - r9 :: c_ptr - r10 :: object - r11 :: dict - r12, r13 :: str - r14 :: bit - r15 :: object - r16 :: str - r17 :: dict - r18, r19 :: object - r20 :: str - r21 :: object - r22 :: dict - r23 :: str - r24 :: i32 - r25 :: bit - r26 :: None +def to_0x_hex_HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L8 (error at :-1) else goto L2 + inc_ref __mypyc_self__ + return __mypyc_self__ L2: - builtins = r4 :: module - dec_ref r4 + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 L3: - r5 = load_address binascii :: module - r6 = [r5] - r7 = load_address r6 - r8 = [1] - r9 = load_address r8 - r10 = (('binascii', 'binascii', 'binascii'),) - r11 = faster_hexbytes._utils.globals :: static - r12 = 'faster_hexbytes/_utils.py' - r13 = '' - r14 = CPyImport_ImportMany(r10, r7, r11, r12, r13, r9) - if not r14 goto L8 else goto L4 :: bool -L4: - r15 = ('Final', 'Union') - r16 = 'typing' - r17 = faster_hexbytes._utils.globals :: static - r18 = CPyImport_ImportFromMany(r16, r15, r15, r17) - if is_error(r18) goto L8 (error at :2) else goto L5 -L5: - typing = r18 :: module - dec_ref r18 - r19 = binascii :: module - r20 = 'unhexlify' - r21 = CPyObject_GetAttr(r19, r20) - if is_error(r21) goto L8 (error at :8) else goto L6 -L6: - faster_hexbytes._utils.unhexlify = r21 :: static - r22 = faster_hexbytes._utils.globals :: static - r23 = 'unhexlify' - r24 = CPyDict_SetItem(r22, r23, r21) - dec_ref r21 - r25 = r24 >= 0 :: signed - if not r25 goto L8 (error at :8) else goto L7 :: bool -L7: - return 1 -L8: - r26 = :: None - return r26 - -def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 + return r2 L4: r3 = :: object return r3 -def __new___HexBytes_obj.__call__(__mypyc_self__, cls, val): - __mypyc_self__ :: faster_hexbytes.main.__new___HexBytes_obj - cls :: object - val :: union[bytes, str, bool, object, int] - r0 :: bytes - r1 :: object - r2 :: bool - r3 :: object[2] - r4 :: object_ptr - r5 :: object - r6, r7 :: faster_hexbytes.main.HexBytes +def to_0x_hex_HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.to_0x_hex_HexBytes_obj + self :: faster_hexbytes.main.HexBytes + r0, r1 :: str + r2 :: object[1] + r3 :: object_ptr + r4 :: object + r5, r6, r7 :: str L0: - r0 = to_bytes(val) - if is_error(r0) goto L7 (error at __new__:49) else goto L1 + r0 = '0x' + r1 = 'hex' + r2 = [self] + r3 = load_address r2 + r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775809, 0) + if is_error(r4) goto L4 (error at to_0x_hex:79) else goto L1 L1: - r1 = faster_hexbytes.main._bytes_new :: static - if is_error(r1) goto L8 else goto L4 + r5 = cast(str, r4) + if is_error(r5) goto L4 (error at to_0x_hex:79) else goto L2 L2: - r2 = raise NameError('value for final name "_bytes_new" was not set') - if not r2 goto L7 (error at __new__:50) else goto L3 :: bool + r6 = CPyStr_Build(2, r0, r5) + dec_ref r5 + if is_error(r6) goto L4 (error at to_0x_hex:79) else goto L3 L3: - unreachable -L4: - r3 = [cls, r0] - r4 = load_address r3 - r5 = PyObject_Vectorcall(r1, r4, 2, 0) - if is_error(r5) goto L9 (error at __new__:50) else goto L5 -L5: - dec_ref r0 - r6 = cast(faster_hexbytes.main.HexBytes, r5) - if is_error(r6) goto L7 (error at __new__:50) else goto L6 -L6: return r6 -L7: - r7 = :: faster_hexbytes.main.HexBytes +L4: + r7 = :: str return r7 -L8: - dec_ref r0 - goto L2 -L9: - dec_ref r0 - goto L7 -def __getitem___HexBytes_obj.__get__(__mypyc_self__, instance, owner): +def __reduce___HexBytes_obj.__get__(__mypyc_self__, instance, owner): __mypyc_self__, instance, owner, r0 :: object r1 :: bit r2, r3 :: object @@ -758,317 +440,61 @@ L4: r3 = :: object return r3 -def __getitem___HexBytes_obj.__call__(__mypyc_self__, self, key): - __mypyc_self__ :: faster_hexbytes.main.__getitem___HexBytes_obj +def __reduce___HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.__reduce___HexBytes_obj self :: faster_hexbytes.main.HexBytes - key, r0 :: object - r1 :: str - r2 :: object[3] - r3 :: object_ptr - r4 :: object - r5 :: union[int, bytes] - r6 :: bit - r7 :: int - r8, r9, r10 :: object - r11 :: bit - r12 :: bytes - r13 :: object - r14 :: object[1] - r15 :: object_ptr - r16 :: object - r17 :: faster_hexbytes.main.HexBytes - r18 :: bytes - r19 :: object[1] - r20 :: object_ptr - r21 :: object - r22 :: faster_hexbytes.main.HexBytes - r23 :: union[int, faster_hexbytes.main.HexBytes] + r0 :: object + r1 :: bool + r2, r3 :: object + r4 :: object[1] + r5 :: object_ptr + r6 :: object + r7 :: bytes + r8 :: tuple[object, bytes] + r9, r10 :: tuple[object, tuple[object, bytes]] L0: - r0 = load_address PyBytes_Type - r1 = '__getitem__' - r2 = [r0, self, key] - r3 = load_address r2 - r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775811, 0) - if is_error(r4) goto L14 (error at __getitem__:63) else goto L1 + r0 = faster_hexbytes.main._bytes_new :: static + if is_error(r0) goto L1 else goto L3 L1: - r5 = cast(union[int, bytes], r4) - if is_error(r5) goto L14 (error at __getitem__:63) else goto L2 + r1 = raise NameError('value for final name "_bytes_new" was not set') + if not r1 goto L6 (error at __reduce__:89) else goto L2 :: bool L2: - r6 = PyLong_Check(r5) - if r6 goto L3 else goto L5 :: bool + unreachable L3: - r7 = unbox(int, r5) - dec_ref r5 - if is_error(r7) goto L14 (error at __getitem__:65) else goto L4 + r2 = CPy_TYPE(self) + r3 = load_address PyBytes_Type + r4 = [self] + r5 = load_address r4 + r6 = PyObject_Vectorcall(r3, r5, 1, 0) + if is_error(r6) goto L7 (error at __reduce__:89) else goto L4 L4: - r8 = box(int, r7) - return r8 + r7 = cast(bytes, r6) + if is_error(r7) goto L7 (error at __reduce__:89) else goto L5 L5: - r9 = CPy_TYPE(self) - r10 = faster_hexbytes.main.HexBytes :: type - r11 = r9 == r10 - if r11 goto L15 else goto L10 :: bool + r8 = (r2, r7) + inc_ref r0 + r9 = (r0, r8) + return r9 L6: - r12 = cast(bytes, r5) - if is_error(r12) goto L14 (error at __getitem__:69) else goto L7 + r10 = :: tuple[object, tuple[object, bytes]] + return r10 L7: - r13 = faster_hexbytes.main.HexBytes :: type - r14 = [r12] - r15 = load_address r14 - r16 = PyObject_Vectorcall(r13, r15, 1, 0) - if is_error(r16) goto L16 (error at __getitem__:69) else goto L8 -L8: - dec_ref r12 - r17 = cast(faster_hexbytes.main.HexBytes, r16) - if is_error(r17) goto L14 (error at __getitem__:69) else goto L9 -L9: - return r17 -L10: - r18 = cast(bytes, r5) - if is_error(r18) goto L17 (error at __getitem__:70) else goto L11 -L11: - r19 = [r18] - r20 = load_address r19 - r21 = PyObject_Vectorcall(r9, r20, 1, 0) - dec_ref r9 - if is_error(r21) goto L18 (error at __getitem__:70) else goto L12 -L12: - dec_ref r18 - r22 = cast(faster_hexbytes.main.HexBytes, r21) - if is_error(r22) goto L14 (error at __getitem__:70) else goto L13 -L13: - return r22 -L14: - r23 = :: union[int, faster_hexbytes.main.HexBytes] - return r23 -L15: - dec_ref r9 + dec_ref r2 goto L6 -L16: - dec_ref r12 - goto L14 -L17: - dec_ref r9 - goto L14 -L18: - dec_ref r18 - goto L14 - -def __repr___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 -def __repr___HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.__repr___HexBytes_obj - self :: faster_hexbytes.main.HexBytes - r0, r1, r2, r3, r4 :: str - r5 :: object[1] - r6 :: object_ptr - r7 :: object - r8, r9, r10, r11 :: str - r12 :: object[3] - r13 :: object_ptr - r14 :: object - r15, r16 :: str - r17 :: list - r18, r19, r20, r21 :: ptr - r22, r23 :: str -L0: - r0 = '' - r1 = 'HexBytes(' - r2 = '{!r:{}}' - r3 = '0x' - r4 = 'hex' - r5 = [self] - r6 = load_address r5 - r7 = PyObject_VectorcallMethod(r4, r6, 9223372036854775809, 0) - if is_error(r7) goto L8 (error at __repr__:73) else goto L1 -L1: - r8 = cast(str, r7) - if is_error(r8) goto L8 (error at __repr__:73) else goto L2 -L2: - r9 = PyUnicode_Concat(r3, r8) - dec_ref r8 - if is_error(r9) goto L8 (error at __repr__:73) else goto L3 -L3: - r10 = '' - r11 = 'format' - r12 = [r2, r9, r10] - r13 = load_address r12 - r14 = PyObject_VectorcallMethod(r11, r13, 9223372036854775811, 0) - if is_error(r14) goto L9 (error at __repr__:73) else goto L4 -L4: - dec_ref r9 - r15 = cast(str, r14) - if is_error(r15) goto L8 (error at __repr__:73) else goto L5 -L5: - r16 = ')' - r17 = PyList_New(3) - if is_error(r17) goto L10 (error at __repr__:73) else goto L6 -L6: - r18 = get_element_ptr r17 ob_item :: PyListObject - r19 = load_mem r18 :: ptr* - inc_ref r1 - set_mem r19, r1 :: builtins.object* - r20 = r19 + 8 - set_mem r20, r15 :: builtins.object* - inc_ref r16 - r21 = r19 + 16 - set_mem r21, r16 :: builtins.object* - r22 = PyUnicode_Join(r0, r17) - dec_ref r17 - if is_error(r22) goto L8 (error at __repr__:73) else goto L7 -L7: - return r22 -L8: - r23 = :: str - return r23 -L9: - dec_ref r9 - goto L8 -L10: - dec_ref r15 - goto L8 - -def to_0x_hex_HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def to_0x_hex_HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.to_0x_hex_HexBytes_obj - self :: faster_hexbytes.main.HexBytes - r0, r1 :: str - r2 :: object[1] - r3 :: object_ptr - r4 :: object - r5, r6, r7 :: str -L0: - r0 = '0x' - r1 = 'hex' - r2 = [self] - r3 = load_address r2 - r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775809, 0) - if is_error(r4) goto L4 (error at to_0x_hex:79) else goto L1 -L1: - r5 = cast(str, r4) - if is_error(r5) goto L4 (error at to_0x_hex:79) else goto L2 -L2: - r6 = CPyStr_Build(2, r0, r5) - dec_ref r5 - if is_error(r6) goto L4 (error at to_0x_hex:79) else goto L3 -L3: - return r6 -L4: - r7 = :: str - return r7 - -def __reduce___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __reduce___HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.__reduce___HexBytes_obj - self :: faster_hexbytes.main.HexBytes - r0 :: object - r1 :: bool - r2, r3 :: object - r4 :: object[1] - r5 :: object_ptr - r6 :: object - r7 :: bytes - r8 :: tuple[object, bytes] - r9, r10 :: tuple[object, tuple[object, bytes]] -L0: - r0 = faster_hexbytes.main._bytes_new :: static - if is_error(r0) goto L1 else goto L3 -L1: - r1 = raise NameError('value for final name "_bytes_new" was not set') - if not r1 goto L6 (error at __reduce__:89) else goto L2 :: bool -L2: - unreachable -L3: - r2 = CPy_TYPE(self) - r3 = load_address PyBytes_Type - r4 = [self] - r5 = load_address r4 - r6 = PyObject_Vectorcall(r3, r5, 1, 0) - if is_error(r6) goto L7 (error at __reduce__:89) else goto L4 -L4: - r7 = cast(bytes, r6) - if is_error(r7) goto L7 (error at __reduce__:89) else goto L5 -L5: - r8 = (r2, r7) - inc_ref r0 - r9 = (r0, r8) - return r9 -L6: - r10 = :: tuple[object, tuple[object, bytes]] - return r10 -L7: - dec_ref r2 - goto L6 - -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4, r5 :: object - r6 :: str - r7 :: dict - r8 :: object - r9 :: object_ptr - r10 :: object_ptr[1] - r11 :: c_ptr - r12 :: native_int[1] - r13 :: c_ptr +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4, r5 :: object + r6 :: str + r7 :: dict + r8 :: object + r9 :: object_ptr + r10 :: object_ptr[1] + r11 :: c_ptr + r12 :: native_int[1] + r13 :: c_ptr r14 :: object r15 :: dict r16, r17 :: str @@ -1170,297 +596,871 @@ def __top_level__(): r132 :: object r133 :: None L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool +L1: + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L48 (error at :-1) else goto L2 +L2: + builtins = r4 :: module + dec_ref r4 +L3: + r5 = ('TYPE_CHECKING', 'Callable', 'Final', 'Tuple', 'Type', 'Union', 'overload') + r6 = 'typing' + r7 = faster_hexbytes.main.globals :: static + r8 = CPyImport_ImportFromMany(r6, r5, r5, r7) + if is_error(r8) goto L48 (error at :1) else goto L4 +L4: + typing = r8 :: module + dec_ref r8 + r9 = load_address hexbytes.main :: module + r10 = [r9] + r11 = load_address r10 + r12 = [14] + r13 = load_address r12 + r14 = (('hexbytes.main', 'hexbytes.main', 'hexbytes'),) + r15 = faster_hexbytes.main.globals :: static + r16 = 'faster_hexbytes/main.py' + r17 = '' + r18 = CPyImport_ImportMany(r14, r11, r15, r16, r17, r13) + if not r18 goto L48 else goto L5 :: bool +L5: + r19 = ('mypyc_attr',) + r20 = 'mypy_extensions' + r21 = faster_hexbytes.main.globals :: static + r22 = CPyImport_ImportFromMany(r20, r19, r19, r21) + if is_error(r22) goto L48 (error at :15) else goto L6 +L6: + mypy_extensions = r22 :: module + dec_ref r22 + r23 = ('Self',) + r24 = 'typing_extensions' + r25 = faster_hexbytes.main.globals :: static + r26 = CPyImport_ImportFromMany(r24, r23, r23, r25) + if is_error(r26) goto L48 (error at :18) else goto L7 +L7: + typing_extensions = r26 :: module + dec_ref r26 + r27 = ('to_bytes',) + r28 = 'faster_hexbytes._utils' + r29 = faster_hexbytes.main.globals :: static + r30 = CPyImport_ImportFromMany(r28, r27, r27, r29) + if is_error(r30) goto L48 (error at :22) else goto L8 +L8: + faster_hexbytes._utils = r30 :: module + dec_ref r30 + if 0 goto L9 else goto L9 :: bool +L9: + r31 = faster_hexbytes.main.globals :: static + r32 = 'Union' + r33 = CPyDict_GetItem(r31, r32) + if is_error(r33) goto L48 (error at :31) else goto L10 +L10: + r34 = load_address PyBytes_Type + r35 = load_address PyUnicode_Type + r36 = load_address PyBool_Type + r37 = builtins :: module + r38 = 'bytearray' + r39 = CPyObject_GetAttr(r37, r38) + if is_error(r39) goto L49 (error at :31) else goto L11 +L11: + r40 = load_address PyLong_Type + r41 = builtins :: module + r42 = 'memoryview' + r43 = CPyObject_GetAttr(r41, r42) + if is_error(r43) goto L50 (error at :31) else goto L12 +L12: + inc_ref r34 + inc_ref r35 + inc_ref r36 + inc_ref r40 + r44 = (r34, r35, r36, r39, r40, r43) + r45 = box(tuple[object, object, object, object, object, object], r44) + r46 = PyObject_GetItem(r33, r45) + dec_ref r33 + dec_ref r45 + if is_error(r46) goto L48 (error at :31) else goto L13 +L13: + r47 = faster_hexbytes.main.globals :: static + r48 = 'BytesLike' + r49 = CPyDict_SetItem(r47, r48, r46) + dec_ref r46 + r50 = r49 >= 0 :: signed + if not r50 goto L48 (error at :31) else goto L14 :: bool +L14: + r51 = load_address PyBytes_Type + r52 = '__new__' + r53 = CPyObject_GetAttr(r51, r52) + if is_error(r53) goto L48 (error at :33) else goto L15 +L15: + faster_hexbytes.main._bytes_new = r53 :: static + r54 = faster_hexbytes.main.globals :: static + r55 = '_bytes_new' + r56 = CPyDict_SetItem(r54, r55, r53) + dec_ref r53 + r57 = r56 >= 0 :: signed + if not r57 goto L48 (error at :33) else goto L16 :: bool +L16: + r58 = hexbytes.main :: module + r59 = 'HexBytes' + r60 = CPyObject_GetAttr(r58, r59) + if is_error(r60) goto L48 (error at :37) else goto L17 +L17: + r61 = PyTuple_Pack(1, r60) + dec_ref r60 + if is_error(r61) goto L48 (error at :37) else goto L18 +L18: + r62 = load_address PyType_Type + r63 = CPy_CalculateMetaclass(r62, r61) + if is_error(r63) goto L51 (error at :37) else goto L19 +L19: + r64 = '__prepare__' + r65 = PyObject_HasAttr(r63, r64) + if r65 goto L20 else goto L24 :: bool +L20: + r66 = 'HexBytes' + r67 = '__prepare__' + r68 = CPyObject_GetAttr(r63, r67) + if is_error(r68) goto L51 (error at :37) else goto L21 +L21: + r69 = [r66, r61] + r70 = load_address r69 + r71 = PyObject_Vectorcall(r68, r70, 2, 0) + dec_ref r68 + if is_error(r71) goto L51 (error at :37) else goto L22 +L22: + r72 = cast(dict, r71) + if is_error(r72) goto L51 (error at :37) else goto L23 +L23: + r73 = r72 + goto L26 +L24: + r74 = PyDict_New() + if is_error(r74) goto L51 (error at :37) else goto L25 +L25: + r73 = r74 +L26: + r75 = PyDict_New() + if is_error(r75) goto L52 (error at :37) else goto L27 +L27: + r76 = __new___HexBytes_obj() + if is_error(r76) goto L53 (error at :48) else goto L28 +L28: + r77 = builtins :: module + r78 = 'staticmethod' + r79 = CPyObject_GetAttr(r77, r78) + if is_error(r79) goto L54 (error at :48) else goto L29 +L29: + r80 = [r76] + r81 = load_address r80 + r82 = PyObject_Vectorcall(r79, r81, 1, 0) + dec_ref r79 + if is_error(r82) goto L54 (error at :48) else goto L30 +L30: + dec_ref r76 + r83 = '__new__' + r84 = CPyDict_SetItem(r73, r83, r82) + dec_ref r82 + r85 = r84 >= 0 :: signed + if not r85 goto L53 (error at :48) else goto L31 :: bool +L31: + r86 = __getitem___HexBytes_obj() + if is_error(r86) goto L53 (error at :60) else goto L32 +L32: + r87 = '__getitem__' + r88 = CPyDict_SetItem(r73, r87, r86) + dec_ref r86 + r89 = r88 >= 0 :: signed + if not r89 goto L53 (error at :60) else goto L33 :: bool +L33: + r90 = __repr___HexBytes_obj() + if is_error(r90) goto L53 (error at :72) else goto L34 +L34: + r91 = '__repr__' + r92 = CPyDict_SetItem(r73, r91, r90) + dec_ref r90 + r93 = r92 >= 0 :: signed + if not r93 goto L53 (error at :72) else goto L35 :: bool +L35: + r94 = to_0x_hex_HexBytes_obj() + if is_error(r94) goto L53 (error at :75) else goto L36 +L36: + r95 = 'to_0x_hex' + r96 = CPyDict_SetItem(r73, r95, r94) + dec_ref r94 + r97 = r96 >= 0 :: signed + if not r97 goto L53 (error at :75) else goto L37 :: bool +L37: + r98 = __reduce___HexBytes_obj() + if is_error(r98) goto L53 (error at :81) else goto L38 +L38: + r99 = '__reduce__' + r100 = CPyDict_SetItem(r73, r99, r98) + dec_ref r98 + r101 = r100 >= 0 :: signed + if not r101 goto L53 (error at :81) else goto L39 :: bool +L39: + r102 = 'HexBytes' + r103 = '__annotations__' + r104 = CPyDict_SetItem(r73, r103, r75) + dec_ref r75 + r105 = r104 >= 0 :: signed + if not r105 goto L52 (error at :37) else goto L40 :: bool +L40: + r106 = 'mypyc filler docstring' + r107 = '__doc__' + r108 = CPyDict_SetItem(r73, r107, r106) + r109 = r108 >= 0 :: signed + if not r109 goto L52 (error at :37) else goto L41 :: bool +L41: + r110 = 'faster_hexbytes.main' + r111 = '__module__' + r112 = CPyDict_SetItem(r73, r111, r110) + r113 = r112 >= 0 :: signed + if not r113 goto L52 (error at :37) else goto L42 :: bool +L42: + r114 = [r102, r61, r73] + r115 = load_address r114 + r116 = PyObject_Vectorcall(r63, r115, 3, 0) + if is_error(r116) goto L52 (error at :37) else goto L43 +L43: + dec_ref r73 + dec_ref r61 + r117 = faster_hexbytes.main.globals :: static + r118 = 'mypyc_attr' + r119 = CPyDict_GetItem(r117, r118) + if is_error(r119) goto L55 (error at :36) else goto L44 +L44: + r120 = box(bool, 0) + r121 = [r120] + r122 = load_address r121 + r123 = ('native_class',) + r124 = PyObject_Vectorcall(r119, r122, 0, r123) + dec_ref r119 + if is_error(r124) goto L55 (error at :36) else goto L45 +L45: + r125 = [r116] + r126 = load_address r125 + r127 = PyObject_Vectorcall(r124, r126, 1, 0) + dec_ref r124 + if is_error(r127) goto L55 (error at :37) else goto L46 +L46: + dec_ref r116 + faster_hexbytes.main.HexBytes = r127 :: type + r128 = faster_hexbytes.main.globals :: static + r129 = 'HexBytes' + r130 = PyDict_SetItem(r128, r129, r127) + dec_ref r127 + r131 = r130 >= 0 :: signed + if not r131 goto L48 (error at :37) else goto L47 :: bool +L47: + r132 = faster_hexbytes.main.HexBytes :: type + return 1 +L48: + r133 = :: None + return r133 +L49: + dec_ref r33 + goto L48 +L50: + dec_ref r33 + dec_ref r39 + goto L48 +L51: + dec_ref r61 + goto L48 +L52: + dec_ref r61 + dec_ref r73 + goto L48 +L53: + dec_ref r61 + dec_ref r73 + dec_ref r75 + goto L48 +L54: + dec_ref r61 + dec_ref r73 + dec_ref r75 + dec_ref r76 + goto L48 +L55: + dec_ref r116 + goto L48 + +def to_bytes(val): + val :: union[bytes, str, object, bool, int] + r0 :: bit + r1 :: bytes + r2 :: bit + r3 :: str + r4 :: bytes + r5 :: bit + r6 :: object + r7 :: object[1] + r8 :: object_ptr + r9 :: object + r10 :: bytes + r11 :: bit + r12 :: bool + r13, r14, r15 :: bytes + r16 :: bit + r17 :: int + r18 :: native_int + r19 :: bit + r20 :: native_int + r21, r22 :: bit + r23 :: bool + r24 :: bit + r25 :: str + r26 :: int + r27, r28, r29 :: str + r30 :: object + r31 :: str + r32 :: object + r33 :: object[1] + r34 :: object_ptr + r35 :: object + r36 :: int + r37 :: object + r38 :: str + r39, r40 :: object + r41 :: object[1] + r42 :: object_ptr + r43 :: object + r44 :: str + r45 :: bytes + r46 :: object + r47 :: str + r48 :: object + r49 :: i32 + r50 :: bit + r51 :: bool + r52 :: object + r53 :: object[1] + r54 :: object_ptr + r55 :: object + r56 :: bytes + r57, r58, r59, r60, r61 :: str + r62 :: object[3] + r63 :: object_ptr + r64 :: object + r65, r66 :: str + r67 :: object + r68, r69 :: str + r70 :: object[3] + r71 :: object_ptr + r72 :: object + r73 :: str + r74 :: list + r75, r76, r77, r78, r79, r80 :: ptr + r81 :: str + r82 :: object + r83 :: str + r84 :: object + r85 :: object[1] + r86 :: object_ptr + r87 :: object + r88 :: bytes +L0: + r0 = PyBytes_Check(val) + if r0 goto L1 else goto L3 :: bool +L1: + inc_ref val + r1 = cast(bytes, val) + if is_error(r1) goto L51 (error at to_bytes:19) else goto L2 +L2: + return r1 +L3: + r2 = PyUnicode_Check(val) + if r2 goto L4 else goto L7 :: bool +L4: + inc_ref val + r3 = cast(str, val) + if is_error(r3) goto L51 (error at to_bytes:21) else goto L5 +L5: + r4 = hexstr_to_bytes(r3) + dec_ref r3 + if is_error(r4) goto L51 (error at to_bytes:21) else goto L6 +L6: + return r4 +L7: + r5 = PyByteArray_Check(val) + if r5 goto L8 else goto L11 :: bool +L8: + r6 = load_address PyBytes_Type + r7 = [val] + r8 = load_address r7 + r9 = PyObject_Vectorcall(r6, r8, 1, 0) + if is_error(r9) goto L51 (error at to_bytes:23) else goto L9 +L9: + r10 = cast(bytes, r9) + if is_error(r10) goto L51 (error at to_bytes:23) else goto L10 +L10: + return r10 +L11: + r11 = PyBool_Check(val) + if r11 goto L12 else goto L17 :: bool +L12: + r12 = unbox(bool, val) + if is_error(r12) goto L51 (error at to_bytes:25) else goto L13 +L13: + if r12 goto L14 else goto L15 :: bool +L14: + r13 = b'\x01' + inc_ref r13 + r14 = r13 + goto L16 +L15: + r15 = b'\x00' + inc_ref r15 + r14 = r15 +L16: + return r14 +L17: + r16 = PyLong_Check(val) + if r16 goto L18 else goto L37 :: bool +L18: + r17 = unbox(int, val) + if is_error(r17) goto L51 (error at to_bytes:29) else goto L19 +L19: + r18 = r17 & 1 + r19 = r18 != 0 + if r19 goto L21 else goto L20 :: bool +L20: + r20 = 0 & 1 + r21 = r20 != 0 + if r21 goto L21 else goto L22 :: bool +L21: + r22 = CPyTagged_IsLt_(r17, 0) + r23 = r22 + goto L23 +L22: + r24 = r17 < 0 :: signed + r23 = r24 +L23: + dec_ref r17 :: int + if r23 goto L24 else goto L31 :: bool +L24: + r25 = 'Cannot convert negative integer ' + r26 = unbox(int, val) + if is_error(r26) goto L51 (error at to_bytes:30) else goto L25 +L25: + r27 = CPyTagged_Str(r26) + dec_ref r26 :: int + if is_error(r27) goto L51 (error at to_bytes:30) else goto L26 +L26: + r28 = ' to bytes' + r29 = CPyStr_Build(3, r25, r27, r28) + dec_ref r27 + if is_error(r29) goto L51 (error at to_bytes:30) else goto L27 +L27: + r30 = builtins :: module + r31 = 'ValueError' + r32 = CPyObject_GetAttr(r30, r31) + if is_error(r32) goto L52 (error at to_bytes:30) else goto L28 +L28: + r33 = [r29] + r34 = load_address r33 + r35 = PyObject_Vectorcall(r32, r34, 1, 0) + dec_ref r32 + if is_error(r35) goto L52 (error at to_bytes:30) else goto L29 +L29: + dec_ref r29 + CPy_Raise(r35) + dec_ref r35 + if not 0 goto L51 (error at to_bytes:30) else goto L30 :: bool +L30: + unreachable +L31: + r36 = unbox(int, val) + if is_error(r36) goto L51 (error at to_bytes:32) else goto L32 +L32: + r37 = builtins :: module + r38 = 'hex' + r39 = CPyObject_GetAttr(r37, r38) + if is_error(r39) goto L53 (error at to_bytes:32) else goto L33 +L33: + r40 = box(int, r36) + r41 = [r40] + r42 = load_address r41 + r43 = PyObject_Vectorcall(r39, r42, 1, 0) + dec_ref r39 + if is_error(r43) goto L54 (error at to_bytes:32) else goto L34 +L34: + dec_ref r40 + r44 = cast(str, r43) + if is_error(r44) goto L51 (error at to_bytes:32) else goto L35 +L35: + r45 = to_bytes(r44) + dec_ref r44 + if is_error(r45) goto L51 (error at to_bytes:32) else goto L36 +L36: + return r45 +L37: + r46 = builtins :: module + r47 = 'memoryview' + r48 = CPyObject_GetAttr(r46, r47) + if is_error(r48) goto L51 (error at to_bytes:33) else goto L38 +L38: + r49 = PyObject_IsInstance(val, r48) + dec_ref r48 + r50 = r49 >= 0 :: signed + if not r50 goto L51 (error at to_bytes:33) else goto L39 :: bool +L39: + r51 = truncate r49: i32 to builtins.bool + if r51 goto L40 else goto L43 :: bool +L40: + r52 = load_address PyBytes_Type + r53 = [val] + r54 = load_address r53 + r55 = PyObject_Vectorcall(r52, r54, 1, 0) + if is_error(r55) goto L51 (error at to_bytes:34) else goto L41 +L41: + r56 = cast(bytes, r55) + if is_error(r56) goto L51 (error at to_bytes:34) else goto L42 +L42: + return r56 +L43: + r57 = '' + r58 = 'Cannot convert ' + r59 = '{!r:{}}' + r60 = '' + r61 = 'format' + r62 = [r59, val, r60] + r63 = load_address r62 + r64 = PyObject_VectorcallMethod(r61, r63, 9223372036854775811, 0) + if is_error(r64) goto L51 (error at to_bytes:36) else goto L44 +L44: + r65 = ' of type ' + r66 = '{:{}}' + r67 = CPy_TYPE(val) + r68 = '' + r69 = 'format' + r70 = [r66, r67, r68] + r71 = load_address r70 + r72 = PyObject_VectorcallMethod(r69, r71, 9223372036854775811, 0) + if is_error(r72) goto L55 (error at to_bytes:36) else goto L45 +L45: + dec_ref r67 + r73 = ' to bytes' + r74 = PyList_New(5) + if is_error(r74) goto L56 (error at to_bytes:36) else goto L46 +L46: + r75 = get_element_ptr r74 ob_item :: PyListObject + r76 = load_mem r75 :: ptr* + inc_ref r58 + set_mem r76, r58 :: builtins.object* + r77 = r76 + 8 + set_mem r77, r64 :: builtins.object* + inc_ref r65 + r78 = r76 + 16 + set_mem r78, r65 :: builtins.object* + r79 = r76 + 24 + set_mem r79, r72 :: builtins.object* + inc_ref r73 + r80 = r76 + 32 + set_mem r80, r73 :: builtins.object* + r81 = PyUnicode_Join(r57, r74) + dec_ref r74 + if is_error(r81) goto L51 (error at to_bytes:36) else goto L47 +L47: + r82 = builtins :: module + r83 = 'TypeError' + r84 = CPyObject_GetAttr(r82, r83) + if is_error(r84) goto L57 (error at to_bytes:36) else goto L48 +L48: + r85 = [r81] + r86 = load_address r85 + r87 = PyObject_Vectorcall(r84, r86, 1, 0) + dec_ref r84 + if is_error(r87) goto L57 (error at to_bytes:36) else goto L49 +L49: + dec_ref r81 + CPy_Raise(r87) + dec_ref r87 + if not 0 goto L51 (error at to_bytes:36) else goto L50 :: bool +L50: + unreachable +L51: + r88 = :: bytes + return r88 +L52: + dec_ref r29 + goto L51 +L53: + dec_ref r36 :: int + goto L51 +L54: + dec_ref r40 + goto L51 +L55: + dec_ref r64 + dec_ref r67 + goto L51 +L56: + dec_ref r64 + dec_ref r72 + goto L51 +L57: + dec_ref r81 + goto L51 + +def hexstr_to_bytes(hexstr): + hexstr, r0, r1 :: str + r2 :: tuple[str, str] + r3 :: object + r4 :: bool + r5 :: object + r6, non_prefixed_hex :: str + r7 :: native_int + r8 :: bit + r9 :: short_int + r10 :: int + r11 :: bit + r12, r13, padded_hex :: str + r14 :: bytes + r15 :: tuple[object, object, object] + r16 :: object + r17 :: str + r18 :: object + r19 :: bit + r20, r21, r22 :: str + r23 :: object + r24 :: str + r25 :: object + r26 :: object[1] + r27 :: object_ptr + r28 :: object + r29 :: bit + r30 :: object + r31 :: bool + r32 :: object[1] + r33 :: object_ptr + r34 :: object + r35, r36 :: bytes +L0: + r0 = '0x' + r1 = '0X' + inc_ref r0 + inc_ref r1 + r2 = (r0, r1) + r3 = box(tuple[str, str], r2) + r4 = CPyStr_Startswith(hexstr, r3) + dec_ref r3 + if is_error(r4) goto L31 (error at hexstr_to_bytes:40) else goto L1 L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L48 (error at :-1) else goto L2 + if r4 goto L2 else goto L5 :: bool L2: - builtins = r4 :: module - dec_ref r4 + r5 = CPyStr_GetSlice(hexstr, 4, 9223372036854775806) + if is_error(r5) goto L31 (error at hexstr_to_bytes:41) else goto L3 L3: - r5 = ('TYPE_CHECKING', 'Callable', 'Final', 'Tuple', 'Type', 'Union', 'overload') - r6 = 'typing' - r7 = faster_hexbytes.main.globals :: static - r8 = CPyImport_ImportFromMany(r6, r5, r5, r7) - if is_error(r8) goto L48 (error at :1) else goto L4 + r6 = cast(str, r5) + if is_error(r6) goto L31 (error at hexstr_to_bytes:41) else goto L4 L4: - typing = r8 :: module - dec_ref r8 - r9 = load_address hexbytes.main :: module - r10 = [r9] - r11 = load_address r10 - r12 = [14] - r13 = load_address r12 - r14 = (('hexbytes.main', 'hexbytes.main', 'hexbytes'),) - r15 = faster_hexbytes.main.globals :: static - r16 = 'faster_hexbytes/main.py' - r17 = '' - r18 = CPyImport_ImportMany(r14, r11, r15, r16, r17, r13) - if not r18 goto L48 else goto L5 :: bool + non_prefixed_hex = r6 + goto L6 L5: - r19 = ('mypyc_attr',) - r20 = 'mypy_extensions' - r21 = faster_hexbytes.main.globals :: static - r22 = CPyImport_ImportFromMany(r20, r19, r19, r21) - if is_error(r22) goto L48 (error at :15) else goto L6 + inc_ref hexstr + non_prefixed_hex = hexstr L6: - mypy_extensions = r22 :: module - dec_ref r22 - r23 = ('Self',) - r24 = 'typing_extensions' - r25 = faster_hexbytes.main.globals :: static - r26 = CPyImport_ImportFromMany(r24, r23, r23, r25) - if is_error(r26) goto L48 (error at :18) else goto L7 + r7 = CPyStr_Size_size_t(hexstr) + r8 = r7 >= 0 :: signed + if not r8 goto L32 (error at hexstr_to_bytes:46) else goto L7 :: bool L7: - typing_extensions = r26 :: module - dec_ref r26 - r27 = ('to_bytes',) - r28 = 'faster_hexbytes._utils' - r29 = faster_hexbytes.main.globals :: static - r30 = CPyImport_ImportFromMany(r28, r27, r27, r29) - if is_error(r30) goto L48 (error at :22) else goto L8 + r9 = r7 << 1 + r10 = CPyTagged_Remainder(r9, 4) + if is_error(r10) goto L32 (error at hexstr_to_bytes:46) else goto L8 L8: - faster_hexbytes._utils = r30 :: module - dec_ref r30 - if 0 goto L9 else goto L9 :: bool + r11 = r10 != 0 + dec_ref r10 :: int + if r11 goto L9 else goto L11 :: bool L9: - r31 = faster_hexbytes.main.globals :: static - r32 = 'Union' - r33 = CPyDict_GetItem(r31, r32) - if is_error(r33) goto L48 (error at :31) else goto L10 + r12 = '0' + r13 = PyUnicode_Concat(r12, non_prefixed_hex) + dec_ref non_prefixed_hex + if is_error(r13) goto L31 (error at hexstr_to_bytes:47) else goto L10 L10: - r34 = load_address PyBytes_Type - r35 = load_address PyUnicode_Type - r36 = load_address PyBool_Type - r37 = builtins :: module - r38 = 'bytearray' - r39 = CPyObject_GetAttr(r37, r38) - if is_error(r39) goto L49 (error at :31) else goto L11 + padded_hex = r13 + goto L12 L11: - r40 = load_address PyLong_Type - r41 = builtins :: module - r42 = 'memoryview' - r43 = CPyObject_GetAttr(r41, r42) - if is_error(r43) goto L50 (error at :31) else goto L12 + padded_hex = non_prefixed_hex L12: - inc_ref r34 - inc_ref r35 - inc_ref r36 - inc_ref r40 - r44 = (r34, r35, r36, r39, r40, r43) - r45 = box(tuple[object, object, object, object, object, object], r44) - r46 = PyObject_GetItem(r33, r45) - dec_ref r33 - dec_ref r45 - if is_error(r46) goto L48 (error at :31) else goto L13 + r14 = PyUnicode_AsASCIIString(padded_hex) + if is_error(r14) goto L14 (error at hexstr_to_bytes:52) else goto L33 L13: - r47 = faster_hexbytes.main.globals :: static - r48 = 'BytesLike' - r49 = CPyDict_SetItem(r47, r48, r46) - dec_ref r46 - r50 = r49 >= 0 :: signed - if not r50 goto L48 (error at :31) else goto L14 :: bool + goto L25 L14: - r51 = load_address PyBytes_Type - r52 = '__new__' - r53 = CPyObject_GetAttr(r51, r52) - if is_error(r53) goto L48 (error at :33) else goto L15 + r15 = CPy_CatchError() + r16 = builtins :: module + r17 = 'UnicodeDecodeError' + r18 = CPyObject_GetAttr(r16, r17) + if is_error(r18) goto L34 (error at hexstr_to_bytes:53) else goto L15 L15: - faster_hexbytes.main._bytes_new = r53 :: static - r54 = faster_hexbytes.main.globals :: static - r55 = '_bytes_new' - r56 = CPyDict_SetItem(r54, r55, r53) - dec_ref r53 - r57 = r56 >= 0 :: signed - if not r57 goto L48 (error at :33) else goto L16 :: bool + r19 = CPy_ExceptionMatches(r18) + dec_ref r18 + if r19 goto L16 else goto L35 :: bool L16: - r58 = hexbytes.main :: module - r59 = 'HexBytes' - r60 = CPyObject_GetAttr(r58, r59) - if is_error(r60) goto L48 (error at :37) else goto L17 + r20 = 'hex string ' + r21 = ' may only contain [0-9a-fA-F] characters' + r22 = CPyStr_Build(3, r20, padded_hex, r21) + dec_ref padded_hex + if is_error(r22) goto L23 (error at hexstr_to_bytes:55) else goto L17 L17: - r61 = PyTuple_Pack(1, r60) - dec_ref r60 - if is_error(r61) goto L48 (error at :37) else goto L18 + r23 = builtins :: module + r24 = 'ValueError' + r25 = CPyObject_GetAttr(r23, r24) + if is_error(r25) goto L36 (error at hexstr_to_bytes:54) else goto L18 L18: - r62 = load_address PyType_Type - r63 = CPy_CalculateMetaclass(r62, r61) - if is_error(r63) goto L51 (error at :37) else goto L19 + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L36 (error at hexstr_to_bytes:54) else goto L19 L19: - r64 = '__prepare__' - r65 = PyObject_HasAttr(r63, r64) - if r65 goto L20 else goto L24 :: bool + dec_ref r22 + CPy_Raise(r28) + dec_ref r28 + if not 0 goto L23 (error at hexstr_to_bytes:54) else goto L37 :: bool L20: - r66 = 'HexBytes' - r67 = '__prepare__' - r68 = CPyObject_GetAttr(r63, r67) - if is_error(r68) goto L51 (error at :37) else goto L21 -L21: - r69 = [r66, r61] - r70 = load_address r69 - r71 = PyObject_Vectorcall(r68, r70, 2, 0) - dec_ref r68 - if is_error(r71) goto L51 (error at :37) else goto L22 + unreachable +L21: + CPy_Reraise() + if not 0 goto L23 else goto L38 :: bool L22: - r72 = cast(dict, r71) - if is_error(r72) goto L51 (error at :37) else goto L23 + unreachable L23: - r73 = r72 - goto L26 + CPy_RestoreExcInfo(r15) + dec_ref r15 + r29 = CPy_KeepPropagating() + if not r29 goto L31 else goto L24 :: bool L24: - r74 = PyDict_New() - if is_error(r74) goto L51 (error at :37) else goto L25 + unreachable L25: - r73 = r74 + r30 = faster_hexbytes._utils.unhexlify :: static + if is_error(r30) goto L39 else goto L28 L26: - r75 = PyDict_New() - if is_error(r75) goto L52 (error at :37) else goto L27 + r31 = raise NameError('value for final name "unhexlify" was not set') + if not r31 goto L31 (error at hexstr_to_bytes:58) else goto L27 :: bool L27: - r76 = __new___HexBytes_obj() - if is_error(r76) goto L53 (error at :48) else goto L28 + unreachable L28: - r77 = builtins :: module - r78 = 'staticmethod' - r79 = CPyObject_GetAttr(r77, r78) - if is_error(r79) goto L54 (error at :48) else goto L29 + r32 = [r14] + r33 = load_address r32 + r34 = PyObject_Vectorcall(r30, r33, 1, 0) + if is_error(r34) goto L40 (error at hexstr_to_bytes:58) else goto L29 L29: - r80 = [r76] - r81 = load_address r80 - r82 = PyObject_Vectorcall(r79, r81, 1, 0) - dec_ref r79 - if is_error(r82) goto L54 (error at :48) else goto L30 + dec_ref r14 + r35 = cast(bytes, r34) + if is_error(r35) goto L31 (error at hexstr_to_bytes:58) else goto L30 L30: - dec_ref r76 - r83 = '__new__' - r84 = CPyDict_SetItem(r73, r83, r82) - dec_ref r82 - r85 = r84 >= 0 :: signed - if not r85 goto L53 (error at :48) else goto L31 :: bool + return r35 L31: - r86 = __getitem___HexBytes_obj() - if is_error(r86) goto L53 (error at :60) else goto L32 + r36 = :: bytes + return r36 L32: - r87 = '__getitem__' - r88 = CPyDict_SetItem(r73, r87, r86) - dec_ref r86 - r89 = r88 >= 0 :: signed - if not r89 goto L53 (error at :60) else goto L33 :: bool + dec_ref non_prefixed_hex + goto L31 L33: - r90 = __repr___HexBytes_obj() - if is_error(r90) goto L53 (error at :72) else goto L34 + dec_ref padded_hex + goto L13 L34: - r91 = '__repr__' - r92 = CPyDict_SetItem(r73, r91, r90) - dec_ref r90 - r93 = r92 >= 0 :: signed - if not r93 goto L53 (error at :72) else goto L35 :: bool + dec_ref padded_hex + goto L23 L35: - r94 = to_0x_hex_HexBytes_obj() - if is_error(r94) goto L53 (error at :75) else goto L36 + dec_ref padded_hex + goto L21 L36: - r95 = 'to_0x_hex' - r96 = CPyDict_SetItem(r73, r95, r94) - dec_ref r94 - r97 = r96 >= 0 :: signed - if not r97 goto L53 (error at :75) else goto L37 :: bool + dec_ref r22 + goto L23 L37: - r98 = __reduce___HexBytes_obj() - if is_error(r98) goto L53 (error at :81) else goto L38 + dec_ref r15 + goto L20 L38: - r99 = '__reduce__' - r100 = CPyDict_SetItem(r73, r99, r98) - dec_ref r98 - r101 = r100 >= 0 :: signed - if not r101 goto L53 (error at :81) else goto L39 :: bool + dec_ref r15 + goto L22 L39: - r102 = 'HexBytes' - r103 = '__annotations__' - r104 = CPyDict_SetItem(r73, r103, r75) - dec_ref r75 - r105 = r104 >= 0 :: signed - if not r105 goto L52 (error at :37) else goto L40 :: bool + dec_ref r14 + goto L26 L40: - r106 = 'mypyc filler docstring' - r107 = '__doc__' - r108 = CPyDict_SetItem(r73, r107, r106) - r109 = r108 >= 0 :: signed - if not r109 goto L52 (error at :37) else goto L41 :: bool -L41: - r110 = 'faster_hexbytes.main' - r111 = '__module__' - r112 = CPyDict_SetItem(r73, r111, r110) - r113 = r112 >= 0 :: signed - if not r113 goto L52 (error at :37) else goto L42 :: bool -L42: - r114 = [r102, r61, r73] - r115 = load_address r114 - r116 = PyObject_Vectorcall(r63, r115, 3, 0) - if is_error(r116) goto L52 (error at :37) else goto L43 -L43: - dec_ref r73 - dec_ref r61 - r117 = faster_hexbytes.main.globals :: static - r118 = 'mypyc_attr' - r119 = CPyDict_GetItem(r117, r118) - if is_error(r119) goto L55 (error at :36) else goto L44 -L44: - r120 = box(bool, 0) - r121 = [r120] - r122 = load_address r121 - r123 = ('native_class',) - r124 = PyObject_Vectorcall(r119, r122, 0, r123) - dec_ref r119 - if is_error(r124) goto L55 (error at :36) else goto L45 -L45: - r125 = [r116] - r126 = load_address r125 - r127 = PyObject_Vectorcall(r124, r126, 1, 0) - dec_ref r124 - if is_error(r127) goto L55 (error at :37) else goto L46 -L46: - dec_ref r116 - faster_hexbytes.main.HexBytes = r127 :: type - r128 = faster_hexbytes.main.globals :: static - r129 = 'HexBytes' - r130 = PyDict_SetItem(r128, r129, r127) - dec_ref r127 - r131 = r130 >= 0 :: signed - if not r131 goto L48 (error at :37) else goto L47 :: bool -L47: - r132 = faster_hexbytes.main.HexBytes :: type + dec_ref r14 + goto L31 + +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4 :: object + r5 :: object_ptr + r6 :: object_ptr[1] + r7 :: c_ptr + r8 :: native_int[1] + r9 :: c_ptr + r10 :: object + r11 :: dict + r12, r13 :: str + r14 :: bit + r15 :: object + r16 :: str + r17 :: dict + r18, r19 :: object + r20 :: str + r21 :: object + r22 :: dict + r23 :: str + r24 :: i32 + r25 :: bit + r26 :: None +L0: + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool +L1: + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L8 (error at :-1) else goto L2 +L2: + builtins = r4 :: module + dec_ref r4 +L3: + r5 = load_address binascii :: module + r6 = [r5] + r7 = load_address r6 + r8 = [1] + r9 = load_address r8 + r10 = (('binascii', 'binascii', 'binascii'),) + r11 = faster_hexbytes._utils.globals :: static + r12 = 'faster_hexbytes/_utils.py' + r13 = '' + r14 = CPyImport_ImportMany(r10, r7, r11, r12, r13, r9) + if not r14 goto L8 else goto L4 :: bool +L4: + r15 = ('Final', 'Union') + r16 = 'typing' + r17 = faster_hexbytes._utils.globals :: static + r18 = CPyImport_ImportFromMany(r16, r15, r15, r17) + if is_error(r18) goto L8 (error at :2) else goto L5 +L5: + typing = r18 :: module + dec_ref r18 + r19 = binascii :: module + r20 = 'unhexlify' + r21 = CPyObject_GetAttr(r19, r20) + if is_error(r21) goto L8 (error at :8) else goto L6 +L6: + faster_hexbytes._utils.unhexlify = r21 :: static + r22 = faster_hexbytes._utils.globals :: static + r23 = 'unhexlify' + r24 = CPyDict_SetItem(r22, r23, r21) + dec_ref r21 + r25 = r24 >= 0 :: signed + if not r25 goto L8 (error at :8) else goto L7 :: bool +L7: return 1 -L48: - r133 = :: None - return r133 -L49: - dec_ref r33 - goto L48 -L50: - dec_ref r33 - dec_ref r39 - goto L48 -L51: - dec_ref r61 - goto L48 -L52: - dec_ref r61 - dec_ref r73 - goto L48 -L53: - dec_ref r61 - dec_ref r73 - dec_ref r75 - goto L48 -L54: - dec_ref r61 - dec_ref r73 - dec_ref r75 - dec_ref r76 - goto L48 -L55: - dec_ref r116 - goto L48 +L8: + r26 = :: None + return r26 From 93b9fe440f3854d9cf0a7842f1485c38f066beee Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Tue, 30 Sep 2025 02:24:58 -0400 Subject: [PATCH 28/98] Create __init__.py --- benchmarks/__init__.py | 1 + 1 file changed, 1 insertion(+) create mode 100644 benchmarks/__init__.py diff --git a/benchmarks/__init__.py b/benchmarks/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/benchmarks/__init__.py @@ -0,0 +1 @@ + From a7e70a2c4de20e43a19637419dbb2c440ba80247 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 30 Sep 2025 06:25:22 +0000 Subject: [PATCH 29/98] chore: compile C files for source control --- build/ops.txt | 2458 ++++++++++++++++++++++++------------------------- 1 file changed, 1229 insertions(+), 1229 deletions(-) diff --git a/build/ops.txt b/build/ops.txt index a8ead04..5ed32ca 100644 --- a/build/ops.txt +++ b/build/ops.txt @@ -101,326 +101,644 @@ L12: r34 = :: None return r34 -def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __new___HexBytes_obj.__call__(__mypyc_self__, cls, val): - __mypyc_self__ :: faster_hexbytes.main.__new___HexBytes_obj - cls :: object - val :: union[bytes, str, bool, object, int] - r0 :: bytes - r1 :: object - r2 :: bool - r3 :: object[2] - r4 :: object_ptr - r5 :: object - r6, r7 :: faster_hexbytes.main.HexBytes -L0: - r0 = to_bytes(val) - if is_error(r0) goto L7 (error at __new__:49) else goto L1 -L1: - r1 = faster_hexbytes.main._bytes_new :: static - if is_error(r1) goto L8 else goto L4 -L2: - r2 = raise NameError('value for final name "_bytes_new" was not set') - if not r2 goto L7 (error at __new__:50) else goto L3 :: bool -L3: - unreachable -L4: - r3 = [cls, r0] - r4 = load_address r3 - r5 = PyObject_Vectorcall(r1, r4, 2, 0) - if is_error(r5) goto L9 (error at __new__:50) else goto L5 -L5: - dec_ref r0 - r6 = cast(faster_hexbytes.main.HexBytes, r5) - if is_error(r6) goto L7 (error at __new__:50) else goto L6 -L6: - return r6 -L7: - r7 = :: faster_hexbytes.main.HexBytes - return r7 -L8: - dec_ref r0 - goto L2 -L9: - dec_ref r0 - goto L7 - -def __getitem___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __getitem___HexBytes_obj.__call__(__mypyc_self__, self, key): - __mypyc_self__ :: faster_hexbytes.main.__getitem___HexBytes_obj - self :: faster_hexbytes.main.HexBytes - key, r0 :: object - r1 :: str - r2 :: object[3] - r3 :: object_ptr - r4 :: object - r5 :: union[int, bytes] - r6 :: bit - r7 :: int - r8, r9, r10 :: object +def to_bytes(val): + val :: union[bytes, str, object, bool, int] + r0 :: bit + r1 :: bytes + r2 :: bit + r3 :: str + r4 :: bytes + r5 :: bit + r6 :: object + r7 :: object[1] + r8 :: object_ptr + r9 :: object + r10 :: bytes r11 :: bit - r12 :: bytes - r13 :: object - r14 :: object[1] - r15 :: object_ptr - r16 :: object - r17 :: faster_hexbytes.main.HexBytes - r18 :: bytes - r19 :: object[1] - r20 :: object_ptr - r21 :: object - r22 :: faster_hexbytes.main.HexBytes - r23 :: union[int, faster_hexbytes.main.HexBytes] + r12 :: bool + r13, r14, r15 :: bytes + r16 :: bit + r17 :: int + r18 :: native_int + r19 :: bit + r20 :: native_int + r21, r22 :: bit + r23 :: bool + r24 :: bit + r25 :: str + r26 :: int + r27, r28, r29 :: str + r30 :: object + r31 :: str + r32 :: object + r33 :: object[1] + r34 :: object_ptr + r35 :: object + r36 :: int + r37 :: object + r38 :: str + r39, r40 :: object + r41 :: object[1] + r42 :: object_ptr + r43 :: object + r44 :: str + r45 :: bytes + r46 :: object + r47 :: str + r48 :: object + r49 :: i32 + r50 :: bit + r51 :: bool + r52 :: object + r53 :: object[1] + r54 :: object_ptr + r55 :: object + r56 :: bytes + r57, r58, r59, r60, r61 :: str + r62 :: object[3] + r63 :: object_ptr + r64 :: object + r65, r66 :: str + r67 :: object + r68, r69 :: str + r70 :: object[3] + r71 :: object_ptr + r72 :: object + r73 :: str + r74 :: list + r75, r76, r77, r78, r79, r80 :: ptr + r81 :: str + r82 :: object + r83 :: str + r84 :: object + r85 :: object[1] + r86 :: object_ptr + r87 :: object + r88 :: bytes L0: - r0 = load_address PyBytes_Type - r1 = '__getitem__' - r2 = [r0, self, key] - r3 = load_address r2 - r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775811, 0) - if is_error(r4) goto L14 (error at __getitem__:63) else goto L1 + r0 = PyBytes_Check(val) + if r0 goto L1 else goto L3 :: bool L1: - r5 = cast(union[int, bytes], r4) - if is_error(r5) goto L14 (error at __getitem__:63) else goto L2 + inc_ref val + r1 = cast(bytes, val) + if is_error(r1) goto L51 (error at to_bytes:19) else goto L2 L2: - r6 = PyLong_Check(r5) - if r6 goto L3 else goto L5 :: bool + return r1 L3: - r7 = unbox(int, r5) - dec_ref r5 - if is_error(r7) goto L14 (error at __getitem__:65) else goto L4 + r2 = PyUnicode_Check(val) + if r2 goto L4 else goto L7 :: bool L4: - r8 = box(int, r7) - return r8 + inc_ref val + r3 = cast(str, val) + if is_error(r3) goto L51 (error at to_bytes:21) else goto L5 L5: - r9 = CPy_TYPE(self) - r10 = faster_hexbytes.main.HexBytes :: type - r11 = r9 == r10 - if r11 goto L15 else goto L10 :: bool + r4 = hexstr_to_bytes(r3) + dec_ref r3 + if is_error(r4) goto L51 (error at to_bytes:21) else goto L6 L6: - r12 = cast(bytes, r5) - if is_error(r12) goto L14 (error at __getitem__:69) else goto L7 + return r4 L7: - r13 = faster_hexbytes.main.HexBytes :: type - r14 = [r12] - r15 = load_address r14 - r16 = PyObject_Vectorcall(r13, r15, 1, 0) - if is_error(r16) goto L16 (error at __getitem__:69) else goto L8 + r5 = PyByteArray_Check(val) + if r5 goto L8 else goto L11 :: bool L8: - dec_ref r12 - r17 = cast(faster_hexbytes.main.HexBytes, r16) - if is_error(r17) goto L14 (error at __getitem__:69) else goto L9 + r6 = load_address PyBytes_Type + r7 = [val] + r8 = load_address r7 + r9 = PyObject_Vectorcall(r6, r8, 1, 0) + if is_error(r9) goto L51 (error at to_bytes:23) else goto L9 L9: - return r17 + r10 = cast(bytes, r9) + if is_error(r10) goto L51 (error at to_bytes:23) else goto L10 L10: - r18 = cast(bytes, r5) - if is_error(r18) goto L17 (error at __getitem__:70) else goto L11 + return r10 L11: - r19 = [r18] - r20 = load_address r19 - r21 = PyObject_Vectorcall(r9, r20, 1, 0) - dec_ref r9 - if is_error(r21) goto L18 (error at __getitem__:70) else goto L12 + r11 = PyBool_Check(val) + if r11 goto L12 else goto L17 :: bool L12: - dec_ref r18 - r22 = cast(faster_hexbytes.main.HexBytes, r21) - if is_error(r22) goto L14 (error at __getitem__:70) else goto L13 + r12 = unbox(bool, val) + if is_error(r12) goto L51 (error at to_bytes:25) else goto L13 L13: - return r22 + if r12 goto L14 else goto L15 :: bool L14: - r23 = :: union[int, faster_hexbytes.main.HexBytes] - return r23 -L15: - dec_ref r9 - goto L6 + r13 = b'\x01' + inc_ref r13 + r14 = r13 + goto L16 +L15: + r15 = b'\x00' + inc_ref r15 + r14 = r15 L16: - dec_ref r12 - goto L14 + return r14 L17: - dec_ref r9 - goto L14 + r16 = PyLong_Check(val) + if r16 goto L18 else goto L37 :: bool L18: - dec_ref r18 - goto L14 + r17 = unbox(int, val) + if is_error(r17) goto L51 (error at to_bytes:29) else goto L19 +L19: + r18 = r17 & 1 + r19 = r18 != 0 + if r19 goto L21 else goto L20 :: bool +L20: + r20 = 0 & 1 + r21 = r20 != 0 + if r21 goto L21 else goto L22 :: bool +L21: + r22 = CPyTagged_IsLt_(r17, 0) + r23 = r22 + goto L23 +L22: + r24 = r17 < 0 :: signed + r23 = r24 +L23: + dec_ref r17 :: int + if r23 goto L24 else goto L31 :: bool +L24: + r25 = 'Cannot convert negative integer ' + r26 = unbox(int, val) + if is_error(r26) goto L51 (error at to_bytes:30) else goto L25 +L25: + r27 = CPyTagged_Str(r26) + dec_ref r26 :: int + if is_error(r27) goto L51 (error at to_bytes:30) else goto L26 +L26: + r28 = ' to bytes' + r29 = CPyStr_Build(3, r25, r27, r28) + dec_ref r27 + if is_error(r29) goto L51 (error at to_bytes:30) else goto L27 +L27: + r30 = builtins :: module + r31 = 'ValueError' + r32 = CPyObject_GetAttr(r30, r31) + if is_error(r32) goto L52 (error at to_bytes:30) else goto L28 +L28: + r33 = [r29] + r34 = load_address r33 + r35 = PyObject_Vectorcall(r32, r34, 1, 0) + dec_ref r32 + if is_error(r35) goto L52 (error at to_bytes:30) else goto L29 +L29: + dec_ref r29 + CPy_Raise(r35) + dec_ref r35 + if not 0 goto L51 (error at to_bytes:30) else goto L30 :: bool +L30: + unreachable +L31: + r36 = unbox(int, val) + if is_error(r36) goto L51 (error at to_bytes:32) else goto L32 +L32: + r37 = builtins :: module + r38 = 'hex' + r39 = CPyObject_GetAttr(r37, r38) + if is_error(r39) goto L53 (error at to_bytes:32) else goto L33 +L33: + r40 = box(int, r36) + r41 = [r40] + r42 = load_address r41 + r43 = PyObject_Vectorcall(r39, r42, 1, 0) + dec_ref r39 + if is_error(r43) goto L54 (error at to_bytes:32) else goto L34 +L34: + dec_ref r40 + r44 = cast(str, r43) + if is_error(r44) goto L51 (error at to_bytes:32) else goto L35 +L35: + r45 = to_bytes(r44) + dec_ref r44 + if is_error(r45) goto L51 (error at to_bytes:32) else goto L36 +L36: + return r45 +L37: + r46 = builtins :: module + r47 = 'memoryview' + r48 = CPyObject_GetAttr(r46, r47) + if is_error(r48) goto L51 (error at to_bytes:33) else goto L38 +L38: + r49 = PyObject_IsInstance(val, r48) + dec_ref r48 + r50 = r49 >= 0 :: signed + if not r50 goto L51 (error at to_bytes:33) else goto L39 :: bool +L39: + r51 = truncate r49: i32 to builtins.bool + if r51 goto L40 else goto L43 :: bool +L40: + r52 = load_address PyBytes_Type + r53 = [val] + r54 = load_address r53 + r55 = PyObject_Vectorcall(r52, r54, 1, 0) + if is_error(r55) goto L51 (error at to_bytes:34) else goto L41 +L41: + r56 = cast(bytes, r55) + if is_error(r56) goto L51 (error at to_bytes:34) else goto L42 +L42: + return r56 +L43: + r57 = '' + r58 = 'Cannot convert ' + r59 = '{!r:{}}' + r60 = '' + r61 = 'format' + r62 = [r59, val, r60] + r63 = load_address r62 + r64 = PyObject_VectorcallMethod(r61, r63, 9223372036854775811, 0) + if is_error(r64) goto L51 (error at to_bytes:36) else goto L44 +L44: + r65 = ' of type ' + r66 = '{:{}}' + r67 = CPy_TYPE(val) + r68 = '' + r69 = 'format' + r70 = [r66, r67, r68] + r71 = load_address r70 + r72 = PyObject_VectorcallMethod(r69, r71, 9223372036854775811, 0) + if is_error(r72) goto L55 (error at to_bytes:36) else goto L45 +L45: + dec_ref r67 + r73 = ' to bytes' + r74 = PyList_New(5) + if is_error(r74) goto L56 (error at to_bytes:36) else goto L46 +L46: + r75 = get_element_ptr r74 ob_item :: PyListObject + r76 = load_mem r75 :: ptr* + inc_ref r58 + set_mem r76, r58 :: builtins.object* + r77 = r76 + 8 + set_mem r77, r64 :: builtins.object* + inc_ref r65 + r78 = r76 + 16 + set_mem r78, r65 :: builtins.object* + r79 = r76 + 24 + set_mem r79, r72 :: builtins.object* + inc_ref r73 + r80 = r76 + 32 + set_mem r80, r73 :: builtins.object* + r81 = PyUnicode_Join(r57, r74) + dec_ref r74 + if is_error(r81) goto L51 (error at to_bytes:36) else goto L47 +L47: + r82 = builtins :: module + r83 = 'TypeError' + r84 = CPyObject_GetAttr(r82, r83) + if is_error(r84) goto L57 (error at to_bytes:36) else goto L48 +L48: + r85 = [r81] + r86 = load_address r85 + r87 = PyObject_Vectorcall(r84, r86, 1, 0) + dec_ref r84 + if is_error(r87) goto L57 (error at to_bytes:36) else goto L49 +L49: + dec_ref r81 + CPy_Raise(r87) + dec_ref r87 + if not 0 goto L51 (error at to_bytes:36) else goto L50 :: bool +L50: + unreachable +L51: + r88 = :: bytes + return r88 +L52: + dec_ref r29 + goto L51 +L53: + dec_ref r36 :: int + goto L51 +L54: + dec_ref r40 + goto L51 +L55: + dec_ref r64 + dec_ref r67 + goto L51 +L56: + dec_ref r64 + dec_ref r72 + goto L51 +L57: + dec_ref r81 + goto L51 -def __repr___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object +def hexstr_to_bytes(hexstr): + hexstr, r0, r1 :: str + r2 :: tuple[str, str] + r3 :: object + r4 :: bool + r5 :: object + r6, non_prefixed_hex :: str + r7 :: native_int + r8 :: bit + r9 :: short_int + r10 :: int + r11 :: bit + r12, r13, padded_hex :: str + r14 :: bytes + r15 :: tuple[object, object, object] + r16 :: object + r17 :: str + r18 :: object + r19 :: bit + r20, r21, r22 :: str + r23 :: object + r24 :: str + r25 :: object + r26 :: object[1] + r27 :: object_ptr + r28 :: object + r29 :: bit + r30 :: object + r31 :: bool + r32 :: object[1] + r33 :: object_ptr + r34 :: object + r35, r36 :: bytes L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool + r0 = '0x' + r1 = '0X' + inc_ref r0 + inc_ref r1 + r2 = (r0, r1) + r3 = box(tuple[str, str], r2) + r4 = CPyStr_Startswith(hexstr, r3) + dec_ref r3 + if is_error(r4) goto L31 (error at hexstr_to_bytes:40) else goto L1 L1: - inc_ref __mypyc_self__ - return __mypyc_self__ + if r4 goto L2 else goto L5 :: bool L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __repr___HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.__repr___HexBytes_obj - self :: faster_hexbytes.main.HexBytes - r0, r1, r2, r3, r4 :: str - r5 :: object[1] - r6 :: object_ptr - r7 :: object - r8, r9, r10, r11 :: str - r12 :: object[3] - r13 :: object_ptr - r14 :: object - r15, r16 :: str - r17 :: list - r18, r19, r20, r21 :: ptr - r22, r23 :: str -L0: - r0 = '' - r1 = 'HexBytes(' - r2 = '{!r:{}}' - r3 = '0x' - r4 = 'hex' - r5 = [self] - r6 = load_address r5 - r7 = PyObject_VectorcallMethod(r4, r6, 9223372036854775809, 0) - if is_error(r7) goto L8 (error at __repr__:73) else goto L1 -L1: - r8 = cast(str, r7) - if is_error(r8) goto L8 (error at __repr__:73) else goto L2 -L2: - r9 = PyUnicode_Concat(r3, r8) - dec_ref r8 - if is_error(r9) goto L8 (error at __repr__:73) else goto L3 + r5 = CPyStr_GetSlice(hexstr, 4, 9223372036854775806) + if is_error(r5) goto L31 (error at hexstr_to_bytes:41) else goto L3 L3: - r10 = '' - r11 = 'format' - r12 = [r2, r9, r10] - r13 = load_address r12 - r14 = PyObject_VectorcallMethod(r11, r13, 9223372036854775811, 0) - if is_error(r14) goto L9 (error at __repr__:73) else goto L4 + r6 = cast(str, r5) + if is_error(r6) goto L31 (error at hexstr_to_bytes:41) else goto L4 L4: - dec_ref r9 - r15 = cast(str, r14) - if is_error(r15) goto L8 (error at __repr__:73) else goto L5 + non_prefixed_hex = r6 + goto L6 L5: - r16 = ')' - r17 = PyList_New(3) - if is_error(r17) goto L10 (error at __repr__:73) else goto L6 + inc_ref hexstr + non_prefixed_hex = hexstr L6: - r18 = get_element_ptr r17 ob_item :: PyListObject - r19 = load_mem r18 :: ptr* - inc_ref r1 - set_mem r19, r1 :: builtins.object* - r20 = r19 + 8 - set_mem r20, r15 :: builtins.object* - inc_ref r16 - r21 = r19 + 16 - set_mem r21, r16 :: builtins.object* - r22 = PyUnicode_Join(r0, r17) - dec_ref r17 - if is_error(r22) goto L8 (error at __repr__:73) else goto L7 + r7 = CPyStr_Size_size_t(hexstr) + r8 = r7 >= 0 :: signed + if not r8 goto L32 (error at hexstr_to_bytes:46) else goto L7 :: bool L7: - return r22 + r9 = r7 << 1 + r10 = CPyTagged_Remainder(r9, 4) + if is_error(r10) goto L32 (error at hexstr_to_bytes:46) else goto L8 L8: - r23 = :: str - return r23 + r11 = r10 != 0 + dec_ref r10 :: int + if r11 goto L9 else goto L11 :: bool L9: - dec_ref r9 - goto L8 + r12 = '0' + r13 = PyUnicode_Concat(r12, non_prefixed_hex) + dec_ref non_prefixed_hex + if is_error(r13) goto L31 (error at hexstr_to_bytes:47) else goto L10 L10: + padded_hex = r13 + goto L12 +L11: + padded_hex = non_prefixed_hex +L12: + r14 = PyUnicode_AsASCIIString(padded_hex) + if is_error(r14) goto L14 (error at hexstr_to_bytes:52) else goto L33 +L13: + goto L25 +L14: + r15 = CPy_CatchError() + r16 = builtins :: module + r17 = 'UnicodeDecodeError' + r18 = CPyObject_GetAttr(r16, r17) + if is_error(r18) goto L34 (error at hexstr_to_bytes:53) else goto L15 +L15: + r19 = CPy_ExceptionMatches(r18) + dec_ref r18 + if r19 goto L16 else goto L35 :: bool +L16: + r20 = 'hex string ' + r21 = ' may only contain [0-9a-fA-F] characters' + r22 = CPyStr_Build(3, r20, padded_hex, r21) + dec_ref padded_hex + if is_error(r22) goto L23 (error at hexstr_to_bytes:55) else goto L17 +L17: + r23 = builtins :: module + r24 = 'ValueError' + r25 = CPyObject_GetAttr(r23, r24) + if is_error(r25) goto L36 (error at hexstr_to_bytes:54) else goto L18 +L18: + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L36 (error at hexstr_to_bytes:54) else goto L19 +L19: + dec_ref r22 + CPy_Raise(r28) + dec_ref r28 + if not 0 goto L23 (error at hexstr_to_bytes:54) else goto L37 :: bool +L20: + unreachable +L21: + CPy_Reraise() + if not 0 goto L23 else goto L38 :: bool +L22: + unreachable +L23: + CPy_RestoreExcInfo(r15) dec_ref r15 - goto L8 + r29 = CPy_KeepPropagating() + if not r29 goto L31 else goto L24 :: bool +L24: + unreachable +L25: + r30 = faster_hexbytes._utils.unhexlify :: static + if is_error(r30) goto L39 else goto L28 +L26: + r31 = raise NameError('value for final name "unhexlify" was not set') + if not r31 goto L31 (error at hexstr_to_bytes:58) else goto L27 :: bool +L27: + unreachable +L28: + r32 = [r14] + r33 = load_address r32 + r34 = PyObject_Vectorcall(r30, r33, 1, 0) + if is_error(r34) goto L40 (error at hexstr_to_bytes:58) else goto L29 +L29: + dec_ref r14 + r35 = cast(bytes, r34) + if is_error(r35) goto L31 (error at hexstr_to_bytes:58) else goto L30 +L30: + return r35 +L31: + r36 = :: bytes + return r36 +L32: + dec_ref non_prefixed_hex + goto L31 +L33: + dec_ref padded_hex + goto L13 +L34: + dec_ref padded_hex + goto L23 +L35: + dec_ref padded_hex + goto L21 +L36: + dec_ref r22 + goto L23 +L37: + dec_ref r15 + goto L20 +L38: + dec_ref r15 + goto L22 +L39: + dec_ref r14 + goto L26 +L40: + dec_ref r14 + goto L31 -def to_0x_hex_HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4 :: object + r5 :: object_ptr + r6 :: object_ptr[1] + r7 :: c_ptr + r8 :: native_int[1] + r9 :: c_ptr + r10 :: object + r11 :: dict + r12, r13 :: str + r14 :: bit + r15 :: object + r16 :: str + r17 :: dict + r18, r19 :: object + r20 :: str + r21 :: object + r22 :: dict + r23 :: str + r24 :: i32 + r25 :: bit + r26 :: None L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool L1: - inc_ref __mypyc_self__ - return __mypyc_self__ + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L8 (error at :-1) else goto L2 L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 + builtins = r4 :: module + dec_ref r4 L3: - return r2 + r5 = load_address binascii :: module + r6 = [r5] + r7 = load_address r6 + r8 = [1] + r9 = load_address r8 + r10 = (('binascii', 'binascii', 'binascii'),) + r11 = faster_hexbytes._utils.globals :: static + r12 = 'faster_hexbytes/_utils.py' + r13 = '' + r14 = CPyImport_ImportMany(r10, r7, r11, r12, r13, r9) + if not r14 goto L8 else goto L4 :: bool L4: - r3 = :: object - return r3 - -def to_0x_hex_HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.to_0x_hex_HexBytes_obj - self :: faster_hexbytes.main.HexBytes - r0, r1 :: str - r2 :: object[1] - r3 :: object_ptr - r4 :: object - r5, r6, r7 :: str + r15 = ('Final', 'Union') + r16 = 'typing' + r17 = faster_hexbytes._utils.globals :: static + r18 = CPyImport_ImportFromMany(r16, r15, r15, r17) + if is_error(r18) goto L8 (error at :2) else goto L5 +L5: + typing = r18 :: module + dec_ref r18 + r19 = binascii :: module + r20 = 'unhexlify' + r21 = CPyObject_GetAttr(r19, r20) + if is_error(r21) goto L8 (error at :8) else goto L6 +L6: + faster_hexbytes._utils.unhexlify = r21 :: static + r22 = faster_hexbytes._utils.globals :: static + r23 = 'unhexlify' + r24 = CPyDict_SetItem(r22, r23, r21) + dec_ref r21 + r25 = r24 >= 0 :: signed + if not r25 goto L8 (error at :8) else goto L7 :: bool +L7: + return 1 +L8: + r26 = :: None + return r26 + +def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object L0: - r0 = '0x' - r1 = 'hex' - r2 = [self] - r3 = load_address r2 - r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775809, 0) - if is_error(r4) goto L4 (error at to_0x_hex:79) else goto L1 + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool L1: - r5 = cast(str, r4) - if is_error(r5) goto L4 (error at to_0x_hex:79) else goto L2 + inc_ref __mypyc_self__ + return __mypyc_self__ L2: - r6 = CPyStr_Build(2, r0, r5) - dec_ref r5 - if is_error(r6) goto L4 (error at to_0x_hex:79) else goto L3 + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 L3: - return r6 + return r2 L4: - r7 = :: str + r3 = :: object + return r3 + +def __new___HexBytes_obj.__call__(__mypyc_self__, cls, val): + __mypyc_self__ :: faster_hexbytes.main.__new___HexBytes_obj + cls :: object + val :: union[bytes, str, bool, object, int] + r0 :: bytes + r1 :: object + r2 :: bool + r3 :: object[2] + r4 :: object_ptr + r5 :: object + r6, r7 :: faster_hexbytes.main.HexBytes +L0: + r0 = to_bytes(val) + if is_error(r0) goto L7 (error at __new__:49) else goto L1 +L1: + r1 = faster_hexbytes.main._bytes_new :: static + if is_error(r1) goto L8 else goto L4 +L2: + r2 = raise NameError('value for final name "_bytes_new" was not set') + if not r2 goto L7 (error at __new__:50) else goto L3 :: bool +L3: + unreachable +L4: + r3 = [cls, r0] + r4 = load_address r3 + r5 = PyObject_Vectorcall(r1, r4, 2, 0) + if is_error(r5) goto L9 (error at __new__:50) else goto L5 +L5: + dec_ref r0 + r6 = cast(faster_hexbytes.main.HexBytes, r5) + if is_error(r6) goto L7 (error at __new__:50) else goto L6 +L6: + return r6 +L7: + r7 = :: faster_hexbytes.main.HexBytes return r7 +L8: + dec_ref r0 + goto L2 +L9: + dec_ref r0 + goto L7 -def __reduce___HexBytes_obj.__get__(__mypyc_self__, instance, owner): +def __getitem___HexBytes_obj.__get__(__mypyc_self__, instance, owner): __mypyc_self__, instance, owner, r0 :: object r1 :: bit r2, r3 :: object @@ -440,1027 +758,709 @@ L4: r3 = :: object return r3 -def __reduce___HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.__reduce___HexBytes_obj +def __getitem___HexBytes_obj.__call__(__mypyc_self__, self, key): + __mypyc_self__ :: faster_hexbytes.main.__getitem___HexBytes_obj self :: faster_hexbytes.main.HexBytes - r0 :: object - r1 :: bool - r2, r3 :: object - r4 :: object[1] - r5 :: object_ptr - r6 :: object - r7 :: bytes - r8 :: tuple[object, bytes] - r9, r10 :: tuple[object, tuple[object, bytes]] + key, r0 :: object + r1 :: str + r2 :: object[3] + r3 :: object_ptr + r4 :: object + r5 :: union[int, bytes] + r6 :: bit + r7 :: int + r8, r9, r10 :: object + r11 :: bit + r12 :: bytes + r13 :: object + r14 :: object[1] + r15 :: object_ptr + r16 :: object + r17 :: faster_hexbytes.main.HexBytes + r18 :: bytes + r19 :: object[1] + r20 :: object_ptr + r21 :: object + r22 :: faster_hexbytes.main.HexBytes + r23 :: union[int, faster_hexbytes.main.HexBytes] L0: - r0 = faster_hexbytes.main._bytes_new :: static - if is_error(r0) goto L1 else goto L3 + r0 = load_address PyBytes_Type + r1 = '__getitem__' + r2 = [r0, self, key] + r3 = load_address r2 + r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775811, 0) + if is_error(r4) goto L14 (error at __getitem__:63) else goto L1 L1: - r1 = raise NameError('value for final name "_bytes_new" was not set') - if not r1 goto L6 (error at __reduce__:89) else goto L2 :: bool + r5 = cast(union[int, bytes], r4) + if is_error(r5) goto L14 (error at __getitem__:63) else goto L2 L2: - unreachable + r6 = PyLong_Check(r5) + if r6 goto L3 else goto L5 :: bool L3: - r2 = CPy_TYPE(self) - r3 = load_address PyBytes_Type - r4 = [self] - r5 = load_address r4 - r6 = PyObject_Vectorcall(r3, r5, 1, 0) - if is_error(r6) goto L7 (error at __reduce__:89) else goto L4 + r7 = unbox(int, r5) + dec_ref r5 + if is_error(r7) goto L14 (error at __getitem__:65) else goto L4 L4: - r7 = cast(bytes, r6) - if is_error(r7) goto L7 (error at __reduce__:89) else goto L5 + r8 = box(int, r7) + return r8 L5: - r8 = (r2, r7) - inc_ref r0 - r9 = (r0, r8) - return r9 + r9 = CPy_TYPE(self) + r10 = faster_hexbytes.main.HexBytes :: type + r11 = r9 == r10 + if r11 goto L15 else goto L10 :: bool L6: - r10 = :: tuple[object, tuple[object, bytes]] - return r10 + r12 = cast(bytes, r5) + if is_error(r12) goto L14 (error at __getitem__:69) else goto L7 L7: - dec_ref r2 + r13 = faster_hexbytes.main.HexBytes :: type + r14 = [r12] + r15 = load_address r14 + r16 = PyObject_Vectorcall(r13, r15, 1, 0) + if is_error(r16) goto L16 (error at __getitem__:69) else goto L8 +L8: + dec_ref r12 + r17 = cast(faster_hexbytes.main.HexBytes, r16) + if is_error(r17) goto L14 (error at __getitem__:69) else goto L9 +L9: + return r17 +L10: + r18 = cast(bytes, r5) + if is_error(r18) goto L17 (error at __getitem__:70) else goto L11 +L11: + r19 = [r18] + r20 = load_address r19 + r21 = PyObject_Vectorcall(r9, r20, 1, 0) + dec_ref r9 + if is_error(r21) goto L18 (error at __getitem__:70) else goto L12 +L12: + dec_ref r18 + r22 = cast(faster_hexbytes.main.HexBytes, r21) + if is_error(r22) goto L14 (error at __getitem__:70) else goto L13 +L13: + return r22 +L14: + r23 = :: union[int, faster_hexbytes.main.HexBytes] + return r23 +L15: + dec_ref r9 goto L6 +L16: + dec_ref r12 + goto L14 +L17: + dec_ref r9 + goto L14 +L18: + dec_ref r18 + goto L14 -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4, r5 :: object - r6 :: str - r7 :: dict - r8 :: object - r9 :: object_ptr - r10 :: object_ptr[1] - r11 :: c_ptr - r12 :: native_int[1] - r13 :: c_ptr - r14 :: object - r15 :: dict - r16, r17 :: str - r18 :: bit - r19 :: object - r20 :: str - r21 :: dict - r22, r23 :: object - r24 :: str - r25 :: dict - r26, r27 :: object - r28 :: str - r29 :: dict - r30 :: object - r31 :: dict - r32 :: str - r33, r34, r35, r36, r37 :: object - r38 :: str - r39, r40, r41 :: object - r42 :: str - r43 :: object - r44 :: tuple[object, object, object, object, object, object] - r45, r46 :: object - r47 :: dict - r48 :: str - r49 :: i32 - r50 :: bit - r51 :: object - r52 :: str - r53 :: object - r54 :: dict - r55 :: str - r56 :: i32 - r57 :: bit - r58 :: object - r59 :: str - r60 :: object - r61 :: tuple - r62, r63 :: object - r64 :: str - r65 :: bool - r66, r67 :: str - r68 :: object - r69 :: object[2] - r70 :: object_ptr - r71 :: object - r72, r73, r74, r75 :: dict - r76 :: faster_hexbytes.main.__new___HexBytes_obj - r77 :: object - r78 :: str - r79 :: object - r80 :: object[1] - r81 :: object_ptr - r82 :: object - r83 :: str - r84 :: i32 - r85 :: bit - r86 :: faster_hexbytes.main.__getitem___HexBytes_obj - r87 :: str - r88 :: i32 - r89 :: bit - r90 :: faster_hexbytes.main.__repr___HexBytes_obj - r91 :: str - r92 :: i32 - r93 :: bit - r94 :: faster_hexbytes.main.to_0x_hex_HexBytes_obj - r95 :: str - r96 :: i32 - r97 :: bit - r98 :: faster_hexbytes.main.__reduce___HexBytes_obj - r99 :: str - r100 :: i32 - r101 :: bit - r102, r103 :: str - r104 :: i32 - r105 :: bit - r106, r107 :: str - r108 :: i32 - r109 :: bit - r110, r111 :: str - r112 :: i32 - r113 :: bit - r114 :: object[3] - r115 :: object_ptr - r116 :: object - r117 :: dict - r118 :: str - r119, r120 :: object - r121 :: object[1] - r122 :: object_ptr - r123, r124 :: object - r125 :: object[1] - r126 :: object_ptr - r127 :: object - r128 :: dict - r129 :: str - r130 :: i32 - r131 :: bit - r132 :: object - r133 :: None +def __repr___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L48 (error at :-1) else goto L2 + inc_ref __mypyc_self__ + return __mypyc_self__ L2: - builtins = r4 :: module - dec_ref r4 + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 L3: - r5 = ('TYPE_CHECKING', 'Callable', 'Final', 'Tuple', 'Type', 'Union', 'overload') - r6 = 'typing' - r7 = faster_hexbytes.main.globals :: static - r8 = CPyImport_ImportFromMany(r6, r5, r5, r7) - if is_error(r8) goto L48 (error at :1) else goto L4 + return r2 L4: - typing = r8 :: module + r3 = :: object + return r3 + +def __repr___HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.__repr___HexBytes_obj + self :: faster_hexbytes.main.HexBytes + r0, r1, r2, r3, r4 :: str + r5 :: object[1] + r6 :: object_ptr + r7 :: object + r8, r9, r10, r11 :: str + r12 :: object[3] + r13 :: object_ptr + r14 :: object + r15, r16 :: str + r17 :: list + r18, r19, r20, r21 :: ptr + r22, r23 :: str +L0: + r0 = '' + r1 = 'HexBytes(' + r2 = '{!r:{}}' + r3 = '0x' + r4 = 'hex' + r5 = [self] + r6 = load_address r5 + r7 = PyObject_VectorcallMethod(r4, r6, 9223372036854775809, 0) + if is_error(r7) goto L8 (error at __repr__:73) else goto L1 +L1: + r8 = cast(str, r7) + if is_error(r8) goto L8 (error at __repr__:73) else goto L2 +L2: + r9 = PyUnicode_Concat(r3, r8) dec_ref r8 - r9 = load_address hexbytes.main :: module - r10 = [r9] - r11 = load_address r10 - r12 = [14] + if is_error(r9) goto L8 (error at __repr__:73) else goto L3 +L3: + r10 = '' + r11 = 'format' + r12 = [r2, r9, r10] r13 = load_address r12 - r14 = (('hexbytes.main', 'hexbytes.main', 'hexbytes'),) - r15 = faster_hexbytes.main.globals :: static - r16 = 'faster_hexbytes/main.py' - r17 = '' - r18 = CPyImport_ImportMany(r14, r11, r15, r16, r17, r13) - if not r18 goto L48 else goto L5 :: bool + r14 = PyObject_VectorcallMethod(r11, r13, 9223372036854775811, 0) + if is_error(r14) goto L9 (error at __repr__:73) else goto L4 +L4: + dec_ref r9 + r15 = cast(str, r14) + if is_error(r15) goto L8 (error at __repr__:73) else goto L5 L5: - r19 = ('mypyc_attr',) - r20 = 'mypy_extensions' - r21 = faster_hexbytes.main.globals :: static - r22 = CPyImport_ImportFromMany(r20, r19, r19, r21) - if is_error(r22) goto L48 (error at :15) else goto L6 + r16 = ')' + r17 = PyList_New(3) + if is_error(r17) goto L10 (error at __repr__:73) else goto L6 L6: - mypy_extensions = r22 :: module - dec_ref r22 - r23 = ('Self',) - r24 = 'typing_extensions' - r25 = faster_hexbytes.main.globals :: static - r26 = CPyImport_ImportFromMany(r24, r23, r23, r25) - if is_error(r26) goto L48 (error at :18) else goto L7 + r18 = get_element_ptr r17 ob_item :: PyListObject + r19 = load_mem r18 :: ptr* + inc_ref r1 + set_mem r19, r1 :: builtins.object* + r20 = r19 + 8 + set_mem r20, r15 :: builtins.object* + inc_ref r16 + r21 = r19 + 16 + set_mem r21, r16 :: builtins.object* + r22 = PyUnicode_Join(r0, r17) + dec_ref r17 + if is_error(r22) goto L8 (error at __repr__:73) else goto L7 L7: - typing_extensions = r26 :: module - dec_ref r26 - r27 = ('to_bytes',) - r28 = 'faster_hexbytes._utils' - r29 = faster_hexbytes.main.globals :: static - r30 = CPyImport_ImportFromMany(r28, r27, r27, r29) - if is_error(r30) goto L48 (error at :22) else goto L8 + return r22 L8: - faster_hexbytes._utils = r30 :: module - dec_ref r30 - if 0 goto L9 else goto L9 :: bool + r23 = :: str + return r23 L9: - r31 = faster_hexbytes.main.globals :: static - r32 = 'Union' - r33 = CPyDict_GetItem(r31, r32) - if is_error(r33) goto L48 (error at :31) else goto L10 + dec_ref r9 + goto L8 L10: - r34 = load_address PyBytes_Type - r35 = load_address PyUnicode_Type - r36 = load_address PyBool_Type - r37 = builtins :: module - r38 = 'bytearray' - r39 = CPyObject_GetAttr(r37, r38) - if is_error(r39) goto L49 (error at :31) else goto L11 -L11: - r40 = load_address PyLong_Type - r41 = builtins :: module - r42 = 'memoryview' - r43 = CPyObject_GetAttr(r41, r42) - if is_error(r43) goto L50 (error at :31) else goto L12 -L12: - inc_ref r34 - inc_ref r35 - inc_ref r36 - inc_ref r40 - r44 = (r34, r35, r36, r39, r40, r43) - r45 = box(tuple[object, object, object, object, object, object], r44) - r46 = PyObject_GetItem(r33, r45) - dec_ref r33 - dec_ref r45 - if is_error(r46) goto L48 (error at :31) else goto L13 -L13: - r47 = faster_hexbytes.main.globals :: static - r48 = 'BytesLike' - r49 = CPyDict_SetItem(r47, r48, r46) - dec_ref r46 - r50 = r49 >= 0 :: signed - if not r50 goto L48 (error at :31) else goto L14 :: bool -L14: - r51 = load_address PyBytes_Type - r52 = '__new__' - r53 = CPyObject_GetAttr(r51, r52) - if is_error(r53) goto L48 (error at :33) else goto L15 -L15: - faster_hexbytes.main._bytes_new = r53 :: static - r54 = faster_hexbytes.main.globals :: static - r55 = '_bytes_new' - r56 = CPyDict_SetItem(r54, r55, r53) - dec_ref r53 - r57 = r56 >= 0 :: signed - if not r57 goto L48 (error at :33) else goto L16 :: bool -L16: - r58 = hexbytes.main :: module - r59 = 'HexBytes' - r60 = CPyObject_GetAttr(r58, r59) - if is_error(r60) goto L48 (error at :37) else goto L17 -L17: - r61 = PyTuple_Pack(1, r60) - dec_ref r60 - if is_error(r61) goto L48 (error at :37) else goto L18 -L18: - r62 = load_address PyType_Type - r63 = CPy_CalculateMetaclass(r62, r61) - if is_error(r63) goto L51 (error at :37) else goto L19 -L19: - r64 = '__prepare__' - r65 = PyObject_HasAttr(r63, r64) - if r65 goto L20 else goto L24 :: bool -L20: - r66 = 'HexBytes' - r67 = '__prepare__' - r68 = CPyObject_GetAttr(r63, r67) - if is_error(r68) goto L51 (error at :37) else goto L21 -L21: - r69 = [r66, r61] - r70 = load_address r69 - r71 = PyObject_Vectorcall(r68, r70, 2, 0) - dec_ref r68 - if is_error(r71) goto L51 (error at :37) else goto L22 -L22: - r72 = cast(dict, r71) - if is_error(r72) goto L51 (error at :37) else goto L23 -L23: - r73 = r72 - goto L26 -L24: - r74 = PyDict_New() - if is_error(r74) goto L51 (error at :37) else goto L25 -L25: - r73 = r74 -L26: - r75 = PyDict_New() - if is_error(r75) goto L52 (error at :37) else goto L27 -L27: - r76 = __new___HexBytes_obj() - if is_error(r76) goto L53 (error at :48) else goto L28 -L28: - r77 = builtins :: module - r78 = 'staticmethod' - r79 = CPyObject_GetAttr(r77, r78) - if is_error(r79) goto L54 (error at :48) else goto L29 -L29: - r80 = [r76] - r81 = load_address r80 - r82 = PyObject_Vectorcall(r79, r81, 1, 0) - dec_ref r79 - if is_error(r82) goto L54 (error at :48) else goto L30 -L30: - dec_ref r76 - r83 = '__new__' - r84 = CPyDict_SetItem(r73, r83, r82) - dec_ref r82 - r85 = r84 >= 0 :: signed - if not r85 goto L53 (error at :48) else goto L31 :: bool -L31: - r86 = __getitem___HexBytes_obj() - if is_error(r86) goto L53 (error at :60) else goto L32 -L32: - r87 = '__getitem__' - r88 = CPyDict_SetItem(r73, r87, r86) - dec_ref r86 - r89 = r88 >= 0 :: signed - if not r89 goto L53 (error at :60) else goto L33 :: bool -L33: - r90 = __repr___HexBytes_obj() - if is_error(r90) goto L53 (error at :72) else goto L34 -L34: - r91 = '__repr__' - r92 = CPyDict_SetItem(r73, r91, r90) - dec_ref r90 - r93 = r92 >= 0 :: signed - if not r93 goto L53 (error at :72) else goto L35 :: bool -L35: - r94 = to_0x_hex_HexBytes_obj() - if is_error(r94) goto L53 (error at :75) else goto L36 -L36: - r95 = 'to_0x_hex' - r96 = CPyDict_SetItem(r73, r95, r94) - dec_ref r94 - r97 = r96 >= 0 :: signed - if not r97 goto L53 (error at :75) else goto L37 :: bool -L37: - r98 = __reduce___HexBytes_obj() - if is_error(r98) goto L53 (error at :81) else goto L38 -L38: - r99 = '__reduce__' - r100 = CPyDict_SetItem(r73, r99, r98) - dec_ref r98 - r101 = r100 >= 0 :: signed - if not r101 goto L53 (error at :81) else goto L39 :: bool -L39: - r102 = 'HexBytes' - r103 = '__annotations__' - r104 = CPyDict_SetItem(r73, r103, r75) - dec_ref r75 - r105 = r104 >= 0 :: signed - if not r105 goto L52 (error at :37) else goto L40 :: bool -L40: - r106 = 'mypyc filler docstring' - r107 = '__doc__' - r108 = CPyDict_SetItem(r73, r107, r106) - r109 = r108 >= 0 :: signed - if not r109 goto L52 (error at :37) else goto L41 :: bool -L41: - r110 = 'faster_hexbytes.main' - r111 = '__module__' - r112 = CPyDict_SetItem(r73, r111, r110) - r113 = r112 >= 0 :: signed - if not r113 goto L52 (error at :37) else goto L42 :: bool -L42: - r114 = [r102, r61, r73] - r115 = load_address r114 - r116 = PyObject_Vectorcall(r63, r115, 3, 0) - if is_error(r116) goto L52 (error at :37) else goto L43 -L43: - dec_ref r73 - dec_ref r61 - r117 = faster_hexbytes.main.globals :: static - r118 = 'mypyc_attr' - r119 = CPyDict_GetItem(r117, r118) - if is_error(r119) goto L55 (error at :36) else goto L44 -L44: - r120 = box(bool, 0) - r121 = [r120] - r122 = load_address r121 - r123 = ('native_class',) - r124 = PyObject_Vectorcall(r119, r122, 0, r123) - dec_ref r119 - if is_error(r124) goto L55 (error at :36) else goto L45 -L45: - r125 = [r116] - r126 = load_address r125 - r127 = PyObject_Vectorcall(r124, r126, 1, 0) - dec_ref r124 - if is_error(r127) goto L55 (error at :37) else goto L46 -L46: - dec_ref r116 - faster_hexbytes.main.HexBytes = r127 :: type - r128 = faster_hexbytes.main.globals :: static - r129 = 'HexBytes' - r130 = PyDict_SetItem(r128, r129, r127) - dec_ref r127 - r131 = r130 >= 0 :: signed - if not r131 goto L48 (error at :37) else goto L47 :: bool -L47: - r132 = faster_hexbytes.main.HexBytes :: type - return 1 -L48: - r133 = :: None - return r133 -L49: - dec_ref r33 - goto L48 -L50: - dec_ref r33 - dec_ref r39 - goto L48 -L51: - dec_ref r61 - goto L48 -L52: - dec_ref r61 - dec_ref r73 - goto L48 -L53: - dec_ref r61 - dec_ref r73 - dec_ref r75 - goto L48 -L54: - dec_ref r61 - dec_ref r73 - dec_ref r75 - dec_ref r76 - goto L48 -L55: - dec_ref r116 - goto L48 - -def to_bytes(val): - val :: union[bytes, str, object, bool, int] - r0 :: bit - r1 :: bytes - r2 :: bit - r3 :: str - r4 :: bytes - r5 :: bit - r6 :: object - r7 :: object[1] - r8 :: object_ptr - r9 :: object - r10 :: bytes - r11 :: bit - r12 :: bool - r13, r14, r15 :: bytes - r16 :: bit - r17 :: int - r18 :: native_int - r19 :: bit - r20 :: native_int - r21, r22 :: bit - r23 :: bool - r24 :: bit - r25 :: str - r26 :: int - r27, r28, r29 :: str - r30 :: object - r31 :: str - r32 :: object - r33 :: object[1] - r34 :: object_ptr - r35 :: object - r36 :: int - r37 :: object - r38 :: str - r39, r40 :: object - r41 :: object[1] - r42 :: object_ptr - r43 :: object - r44 :: str - r45 :: bytes - r46 :: object - r47 :: str - r48 :: object - r49 :: i32 - r50 :: bit - r51 :: bool - r52 :: object - r53 :: object[1] - r54 :: object_ptr - r55 :: object - r56 :: bytes - r57, r58, r59, r60, r61 :: str - r62 :: object[3] - r63 :: object_ptr - r64 :: object - r65, r66 :: str - r67 :: object - r68, r69 :: str - r70 :: object[3] - r71 :: object_ptr - r72 :: object - r73 :: str - r74 :: list - r75, r76, r77, r78, r79, r80 :: ptr - r81 :: str - r82 :: object - r83 :: str - r84 :: object - r85 :: object[1] - r86 :: object_ptr - r87 :: object - r88 :: bytes -L0: - r0 = PyBytes_Check(val) - if r0 goto L1 else goto L3 :: bool -L1: - inc_ref val - r1 = cast(bytes, val) - if is_error(r1) goto L51 (error at to_bytes:19) else goto L2 -L2: - return r1 -L3: - r2 = PyUnicode_Check(val) - if r2 goto L4 else goto L7 :: bool -L4: - inc_ref val - r3 = cast(str, val) - if is_error(r3) goto L51 (error at to_bytes:21) else goto L5 -L5: - r4 = hexstr_to_bytes(r3) - dec_ref r3 - if is_error(r4) goto L51 (error at to_bytes:21) else goto L6 -L6: - return r4 -L7: - r5 = PyByteArray_Check(val) - if r5 goto L8 else goto L11 :: bool -L8: - r6 = load_address PyBytes_Type - r7 = [val] - r8 = load_address r7 - r9 = PyObject_Vectorcall(r6, r8, 1, 0) - if is_error(r9) goto L51 (error at to_bytes:23) else goto L9 -L9: - r10 = cast(bytes, r9) - if is_error(r10) goto L51 (error at to_bytes:23) else goto L10 -L10: - return r10 -L11: - r11 = PyBool_Check(val) - if r11 goto L12 else goto L17 :: bool -L12: - r12 = unbox(bool, val) - if is_error(r12) goto L51 (error at to_bytes:25) else goto L13 -L13: - if r12 goto L14 else goto L15 :: bool -L14: - r13 = b'\x01' - inc_ref r13 - r14 = r13 - goto L16 -L15: - r15 = b'\x00' - inc_ref r15 - r14 = r15 -L16: - return r14 -L17: - r16 = PyLong_Check(val) - if r16 goto L18 else goto L37 :: bool -L18: - r17 = unbox(int, val) - if is_error(r17) goto L51 (error at to_bytes:29) else goto L19 -L19: - r18 = r17 & 1 - r19 = r18 != 0 - if r19 goto L21 else goto L20 :: bool -L20: - r20 = 0 & 1 - r21 = r20 != 0 - if r21 goto L21 else goto L22 :: bool -L21: - r22 = CPyTagged_IsLt_(r17, 0) - r23 = r22 - goto L23 -L22: - r24 = r17 < 0 :: signed - r23 = r24 -L23: - dec_ref r17 :: int - if r23 goto L24 else goto L31 :: bool -L24: - r25 = 'Cannot convert negative integer ' - r26 = unbox(int, val) - if is_error(r26) goto L51 (error at to_bytes:30) else goto L25 -L25: - r27 = CPyTagged_Str(r26) - dec_ref r26 :: int - if is_error(r27) goto L51 (error at to_bytes:30) else goto L26 -L26: - r28 = ' to bytes' - r29 = CPyStr_Build(3, r25, r27, r28) - dec_ref r27 - if is_error(r29) goto L51 (error at to_bytes:30) else goto L27 -L27: - r30 = builtins :: module - r31 = 'ValueError' - r32 = CPyObject_GetAttr(r30, r31) - if is_error(r32) goto L52 (error at to_bytes:30) else goto L28 -L28: - r33 = [r29] - r34 = load_address r33 - r35 = PyObject_Vectorcall(r32, r34, 1, 0) - dec_ref r32 - if is_error(r35) goto L52 (error at to_bytes:30) else goto L29 -L29: - dec_ref r29 - CPy_Raise(r35) - dec_ref r35 - if not 0 goto L51 (error at to_bytes:30) else goto L30 :: bool -L30: - unreachable -L31: - r36 = unbox(int, val) - if is_error(r36) goto L51 (error at to_bytes:32) else goto L32 -L32: - r37 = builtins :: module - r38 = 'hex' - r39 = CPyObject_GetAttr(r37, r38) - if is_error(r39) goto L53 (error at to_bytes:32) else goto L33 -L33: - r40 = box(int, r36) - r41 = [r40] - r42 = load_address r41 - r43 = PyObject_Vectorcall(r39, r42, 1, 0) - dec_ref r39 - if is_error(r43) goto L54 (error at to_bytes:32) else goto L34 -L34: - dec_ref r40 - r44 = cast(str, r43) - if is_error(r44) goto L51 (error at to_bytes:32) else goto L35 -L35: - r45 = to_bytes(r44) - dec_ref r44 - if is_error(r45) goto L51 (error at to_bytes:32) else goto L36 -L36: - return r45 -L37: - r46 = builtins :: module - r47 = 'memoryview' - r48 = CPyObject_GetAttr(r46, r47) - if is_error(r48) goto L51 (error at to_bytes:33) else goto L38 -L38: - r49 = PyObject_IsInstance(val, r48) - dec_ref r48 - r50 = r49 >= 0 :: signed - if not r50 goto L51 (error at to_bytes:33) else goto L39 :: bool -L39: - r51 = truncate r49: i32 to builtins.bool - if r51 goto L40 else goto L43 :: bool -L40: - r52 = load_address PyBytes_Type - r53 = [val] - r54 = load_address r53 - r55 = PyObject_Vectorcall(r52, r54, 1, 0) - if is_error(r55) goto L51 (error at to_bytes:34) else goto L41 -L41: - r56 = cast(bytes, r55) - if is_error(r56) goto L51 (error at to_bytes:34) else goto L42 -L42: - return r56 -L43: - r57 = '' - r58 = 'Cannot convert ' - r59 = '{!r:{}}' - r60 = '' - r61 = 'format' - r62 = [r59, val, r60] - r63 = load_address r62 - r64 = PyObject_VectorcallMethod(r61, r63, 9223372036854775811, 0) - if is_error(r64) goto L51 (error at to_bytes:36) else goto L44 -L44: - r65 = ' of type ' - r66 = '{:{}}' - r67 = CPy_TYPE(val) - r68 = '' - r69 = 'format' - r70 = [r66, r67, r68] - r71 = load_address r70 - r72 = PyObject_VectorcallMethod(r69, r71, 9223372036854775811, 0) - if is_error(r72) goto L55 (error at to_bytes:36) else goto L45 -L45: - dec_ref r67 - r73 = ' to bytes' - r74 = PyList_New(5) - if is_error(r74) goto L56 (error at to_bytes:36) else goto L46 -L46: - r75 = get_element_ptr r74 ob_item :: PyListObject - r76 = load_mem r75 :: ptr* - inc_ref r58 - set_mem r76, r58 :: builtins.object* - r77 = r76 + 8 - set_mem r77, r64 :: builtins.object* - inc_ref r65 - r78 = r76 + 16 - set_mem r78, r65 :: builtins.object* - r79 = r76 + 24 - set_mem r79, r72 :: builtins.object* - inc_ref r73 - r80 = r76 + 32 - set_mem r80, r73 :: builtins.object* - r81 = PyUnicode_Join(r57, r74) - dec_ref r74 - if is_error(r81) goto L51 (error at to_bytes:36) else goto L47 -L47: - r82 = builtins :: module - r83 = 'TypeError' - r84 = CPyObject_GetAttr(r82, r83) - if is_error(r84) goto L57 (error at to_bytes:36) else goto L48 -L48: - r85 = [r81] - r86 = load_address r85 - r87 = PyObject_Vectorcall(r84, r86, 1, 0) - dec_ref r84 - if is_error(r87) goto L57 (error at to_bytes:36) else goto L49 -L49: - dec_ref r81 - CPy_Raise(r87) - dec_ref r87 - if not 0 goto L51 (error at to_bytes:36) else goto L50 :: bool -L50: + dec_ref r15 + goto L8 + +def to_0x_hex_HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def to_0x_hex_HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.to_0x_hex_HexBytes_obj + self :: faster_hexbytes.main.HexBytes + r0, r1 :: str + r2 :: object[1] + r3 :: object_ptr + r4 :: object + r5, r6, r7 :: str +L0: + r0 = '0x' + r1 = 'hex' + r2 = [self] + r3 = load_address r2 + r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775809, 0) + if is_error(r4) goto L4 (error at to_0x_hex:79) else goto L1 +L1: + r5 = cast(str, r4) + if is_error(r5) goto L4 (error at to_0x_hex:79) else goto L2 +L2: + r6 = CPyStr_Build(2, r0, r5) + dec_ref r5 + if is_error(r6) goto L4 (error at to_0x_hex:79) else goto L3 +L3: + return r6 +L4: + r7 = :: str + return r7 + +def __reduce___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def __reduce___HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.__reduce___HexBytes_obj + self :: faster_hexbytes.main.HexBytes + r0 :: object + r1 :: bool + r2, r3 :: object + r4 :: object[1] + r5 :: object_ptr + r6 :: object + r7 :: bytes + r8 :: tuple[object, bytes] + r9, r10 :: tuple[object, tuple[object, bytes]] +L0: + r0 = faster_hexbytes.main._bytes_new :: static + if is_error(r0) goto L1 else goto L3 +L1: + r1 = raise NameError('value for final name "_bytes_new" was not set') + if not r1 goto L6 (error at __reduce__:89) else goto L2 :: bool +L2: unreachable -L51: - r88 = :: bytes - return r88 -L52: - dec_ref r29 - goto L51 -L53: - dec_ref r36 :: int - goto L51 -L54: - dec_ref r40 - goto L51 -L55: - dec_ref r64 - dec_ref r67 - goto L51 -L56: - dec_ref r64 - dec_ref r72 - goto L51 -L57: - dec_ref r81 - goto L51 +L3: + r2 = CPy_TYPE(self) + r3 = load_address PyBytes_Type + r4 = [self] + r5 = load_address r4 + r6 = PyObject_Vectorcall(r3, r5, 1, 0) + if is_error(r6) goto L7 (error at __reduce__:89) else goto L4 +L4: + r7 = cast(bytes, r6) + if is_error(r7) goto L7 (error at __reduce__:89) else goto L5 +L5: + r8 = (r2, r7) + inc_ref r0 + r9 = (r0, r8) + return r9 +L6: + r10 = :: tuple[object, tuple[object, bytes]] + return r10 +L7: + dec_ref r2 + goto L6 -def hexstr_to_bytes(hexstr): - hexstr, r0, r1 :: str - r2 :: tuple[str, str] - r3 :: object - r4 :: bool - r5 :: object - r6, non_prefixed_hex :: str - r7 :: native_int - r8 :: bit - r9 :: short_int - r10 :: int - r11 :: bit - r12, r13, padded_hex :: str - r14 :: bytes - r15 :: tuple[object, object, object] - r16 :: object - r17 :: str - r18 :: object - r19 :: bit - r20, r21, r22 :: str - r23 :: object +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4, r5 :: object + r6 :: str + r7 :: dict + r8 :: object + r9 :: object_ptr + r10 :: object_ptr[1] + r11 :: c_ptr + r12 :: native_int[1] + r13 :: c_ptr + r14 :: object + r15 :: dict + r16, r17 :: str + r18 :: bit + r19 :: object + r20 :: str + r21 :: dict + r22, r23 :: object r24 :: str - r25 :: object - r26 :: object[1] - r27 :: object_ptr - r28 :: object - r29 :: bit + r25 :: dict + r26, r27 :: object + r28 :: str + r29 :: dict r30 :: object - r31 :: bool - r32 :: object[1] - r33 :: object_ptr - r34 :: object - r35, r36 :: bytes + r31 :: dict + r32 :: str + r33, r34, r35, r36, r37 :: object + r38 :: str + r39, r40, r41 :: object + r42 :: str + r43 :: object + r44 :: tuple[object, object, object, object, object, object] + r45, r46 :: object + r47 :: dict + r48 :: str + r49 :: i32 + r50 :: bit + r51 :: object + r52 :: str + r53 :: object + r54 :: dict + r55 :: str + r56 :: i32 + r57 :: bit + r58 :: object + r59 :: str + r60 :: object + r61 :: tuple + r62, r63 :: object + r64 :: str + r65 :: bool + r66, r67 :: str + r68 :: object + r69 :: object[2] + r70 :: object_ptr + r71 :: object + r72, r73, r74, r75 :: dict + r76 :: faster_hexbytes.main.__new___HexBytes_obj + r77 :: object + r78 :: str + r79 :: object + r80 :: object[1] + r81 :: object_ptr + r82 :: object + r83 :: str + r84 :: i32 + r85 :: bit + r86 :: faster_hexbytes.main.__getitem___HexBytes_obj + r87 :: str + r88 :: i32 + r89 :: bit + r90 :: faster_hexbytes.main.__repr___HexBytes_obj + r91 :: str + r92 :: i32 + r93 :: bit + r94 :: faster_hexbytes.main.to_0x_hex_HexBytes_obj + r95 :: str + r96 :: i32 + r97 :: bit + r98 :: faster_hexbytes.main.__reduce___HexBytes_obj + r99 :: str + r100 :: i32 + r101 :: bit + r102, r103 :: str + r104 :: i32 + r105 :: bit + r106, r107 :: str + r108 :: i32 + r109 :: bit + r110, r111 :: str + r112 :: i32 + r113 :: bit + r114 :: object[3] + r115 :: object_ptr + r116 :: object + r117 :: dict + r118 :: str + r119, r120 :: object + r121 :: object[1] + r122 :: object_ptr + r123, r124 :: object + r125 :: object[1] + r126 :: object_ptr + r127 :: object + r128 :: dict + r129 :: str + r130 :: i32 + r131 :: bit + r132 :: object + r133 :: None L0: - r0 = '0x' - r1 = '0X' - inc_ref r0 - inc_ref r1 - r2 = (r0, r1) - r3 = box(tuple[str, str], r2) - r4 = CPyStr_Startswith(hexstr, r3) - dec_ref r3 - if is_error(r4) goto L31 (error at hexstr_to_bytes:40) else goto L1 + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool L1: - if r4 goto L2 else goto L5 :: bool + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L48 (error at :-1) else goto L2 L2: - r5 = CPyStr_GetSlice(hexstr, 4, 9223372036854775806) - if is_error(r5) goto L31 (error at hexstr_to_bytes:41) else goto L3 + builtins = r4 :: module + dec_ref r4 L3: - r6 = cast(str, r5) - if is_error(r6) goto L31 (error at hexstr_to_bytes:41) else goto L4 + r5 = ('TYPE_CHECKING', 'Callable', 'Final', 'Tuple', 'Type', 'Union', 'overload') + r6 = 'typing' + r7 = faster_hexbytes.main.globals :: static + r8 = CPyImport_ImportFromMany(r6, r5, r5, r7) + if is_error(r8) goto L48 (error at :1) else goto L4 L4: - non_prefixed_hex = r6 - goto L6 + typing = r8 :: module + dec_ref r8 + r9 = load_address hexbytes.main :: module + r10 = [r9] + r11 = load_address r10 + r12 = [14] + r13 = load_address r12 + r14 = (('hexbytes.main', 'hexbytes.main', 'hexbytes'),) + r15 = faster_hexbytes.main.globals :: static + r16 = 'faster_hexbytes/main.py' + r17 = '' + r18 = CPyImport_ImportMany(r14, r11, r15, r16, r17, r13) + if not r18 goto L48 else goto L5 :: bool L5: - inc_ref hexstr - non_prefixed_hex = hexstr + r19 = ('mypyc_attr',) + r20 = 'mypy_extensions' + r21 = faster_hexbytes.main.globals :: static + r22 = CPyImport_ImportFromMany(r20, r19, r19, r21) + if is_error(r22) goto L48 (error at :15) else goto L6 L6: - r7 = CPyStr_Size_size_t(hexstr) - r8 = r7 >= 0 :: signed - if not r8 goto L32 (error at hexstr_to_bytes:46) else goto L7 :: bool + mypy_extensions = r22 :: module + dec_ref r22 + r23 = ('Self',) + r24 = 'typing_extensions' + r25 = faster_hexbytes.main.globals :: static + r26 = CPyImport_ImportFromMany(r24, r23, r23, r25) + if is_error(r26) goto L48 (error at :18) else goto L7 L7: - r9 = r7 << 1 - r10 = CPyTagged_Remainder(r9, 4) - if is_error(r10) goto L32 (error at hexstr_to_bytes:46) else goto L8 + typing_extensions = r26 :: module + dec_ref r26 + r27 = ('to_bytes',) + r28 = 'faster_hexbytes._utils' + r29 = faster_hexbytes.main.globals :: static + r30 = CPyImport_ImportFromMany(r28, r27, r27, r29) + if is_error(r30) goto L48 (error at :22) else goto L8 L8: - r11 = r10 != 0 - dec_ref r10 :: int - if r11 goto L9 else goto L11 :: bool + faster_hexbytes._utils = r30 :: module + dec_ref r30 + if 0 goto L9 else goto L9 :: bool L9: - r12 = '0' - r13 = PyUnicode_Concat(r12, non_prefixed_hex) - dec_ref non_prefixed_hex - if is_error(r13) goto L31 (error at hexstr_to_bytes:47) else goto L10 + r31 = faster_hexbytes.main.globals :: static + r32 = 'Union' + r33 = CPyDict_GetItem(r31, r32) + if is_error(r33) goto L48 (error at :31) else goto L10 L10: - padded_hex = r13 - goto L12 + r34 = load_address PyBytes_Type + r35 = load_address PyUnicode_Type + r36 = load_address PyBool_Type + r37 = builtins :: module + r38 = 'bytearray' + r39 = CPyObject_GetAttr(r37, r38) + if is_error(r39) goto L49 (error at :31) else goto L11 L11: - padded_hex = non_prefixed_hex + r40 = load_address PyLong_Type + r41 = builtins :: module + r42 = 'memoryview' + r43 = CPyObject_GetAttr(r41, r42) + if is_error(r43) goto L50 (error at :31) else goto L12 L12: - r14 = PyUnicode_AsASCIIString(padded_hex) - if is_error(r14) goto L14 (error at hexstr_to_bytes:52) else goto L33 + inc_ref r34 + inc_ref r35 + inc_ref r36 + inc_ref r40 + r44 = (r34, r35, r36, r39, r40, r43) + r45 = box(tuple[object, object, object, object, object, object], r44) + r46 = PyObject_GetItem(r33, r45) + dec_ref r33 + dec_ref r45 + if is_error(r46) goto L48 (error at :31) else goto L13 L13: - goto L25 + r47 = faster_hexbytes.main.globals :: static + r48 = 'BytesLike' + r49 = CPyDict_SetItem(r47, r48, r46) + dec_ref r46 + r50 = r49 >= 0 :: signed + if not r50 goto L48 (error at :31) else goto L14 :: bool L14: - r15 = CPy_CatchError() - r16 = builtins :: module - r17 = 'UnicodeDecodeError' - r18 = CPyObject_GetAttr(r16, r17) - if is_error(r18) goto L34 (error at hexstr_to_bytes:53) else goto L15 + r51 = load_address PyBytes_Type + r52 = '__new__' + r53 = CPyObject_GetAttr(r51, r52) + if is_error(r53) goto L48 (error at :33) else goto L15 L15: - r19 = CPy_ExceptionMatches(r18) - dec_ref r18 - if r19 goto L16 else goto L35 :: bool + faster_hexbytes.main._bytes_new = r53 :: static + r54 = faster_hexbytes.main.globals :: static + r55 = '_bytes_new' + r56 = CPyDict_SetItem(r54, r55, r53) + dec_ref r53 + r57 = r56 >= 0 :: signed + if not r57 goto L48 (error at :33) else goto L16 :: bool L16: - r20 = 'hex string ' - r21 = ' may only contain [0-9a-fA-F] characters' - r22 = CPyStr_Build(3, r20, padded_hex, r21) - dec_ref padded_hex - if is_error(r22) goto L23 (error at hexstr_to_bytes:55) else goto L17 + r58 = hexbytes.main :: module + r59 = 'HexBytes' + r60 = CPyObject_GetAttr(r58, r59) + if is_error(r60) goto L48 (error at :37) else goto L17 L17: - r23 = builtins :: module - r24 = 'ValueError' - r25 = CPyObject_GetAttr(r23, r24) - if is_error(r25) goto L36 (error at hexstr_to_bytes:54) else goto L18 + r61 = PyTuple_Pack(1, r60) + dec_ref r60 + if is_error(r61) goto L48 (error at :37) else goto L18 L18: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L36 (error at hexstr_to_bytes:54) else goto L19 + r62 = load_address PyType_Type + r63 = CPy_CalculateMetaclass(r62, r61) + if is_error(r63) goto L51 (error at :37) else goto L19 L19: - dec_ref r22 - CPy_Raise(r28) - dec_ref r28 - if not 0 goto L23 (error at hexstr_to_bytes:54) else goto L37 :: bool + r64 = '__prepare__' + r65 = PyObject_HasAttr(r63, r64) + if r65 goto L20 else goto L24 :: bool L20: - unreachable + r66 = 'HexBytes' + r67 = '__prepare__' + r68 = CPyObject_GetAttr(r63, r67) + if is_error(r68) goto L51 (error at :37) else goto L21 L21: - CPy_Reraise() - if not 0 goto L23 else goto L38 :: bool + r69 = [r66, r61] + r70 = load_address r69 + r71 = PyObject_Vectorcall(r68, r70, 2, 0) + dec_ref r68 + if is_error(r71) goto L51 (error at :37) else goto L22 L22: - unreachable + r72 = cast(dict, r71) + if is_error(r72) goto L51 (error at :37) else goto L23 L23: - CPy_RestoreExcInfo(r15) - dec_ref r15 - r29 = CPy_KeepPropagating() - if not r29 goto L31 else goto L24 :: bool + r73 = r72 + goto L26 L24: - unreachable + r74 = PyDict_New() + if is_error(r74) goto L51 (error at :37) else goto L25 L25: - r30 = faster_hexbytes._utils.unhexlify :: static - if is_error(r30) goto L39 else goto L28 + r73 = r74 L26: - r31 = raise NameError('value for final name "unhexlify" was not set') - if not r31 goto L31 (error at hexstr_to_bytes:58) else goto L27 :: bool + r75 = PyDict_New() + if is_error(r75) goto L52 (error at :37) else goto L27 L27: - unreachable + r76 = __new___HexBytes_obj() + if is_error(r76) goto L53 (error at :48) else goto L28 L28: - r32 = [r14] - r33 = load_address r32 - r34 = PyObject_Vectorcall(r30, r33, 1, 0) - if is_error(r34) goto L40 (error at hexstr_to_bytes:58) else goto L29 + r77 = builtins :: module + r78 = 'staticmethod' + r79 = CPyObject_GetAttr(r77, r78) + if is_error(r79) goto L54 (error at :48) else goto L29 L29: - dec_ref r14 - r35 = cast(bytes, r34) - if is_error(r35) goto L31 (error at hexstr_to_bytes:58) else goto L30 + r80 = [r76] + r81 = load_address r80 + r82 = PyObject_Vectorcall(r79, r81, 1, 0) + dec_ref r79 + if is_error(r82) goto L54 (error at :48) else goto L30 L30: - return r35 + dec_ref r76 + r83 = '__new__' + r84 = CPyDict_SetItem(r73, r83, r82) + dec_ref r82 + r85 = r84 >= 0 :: signed + if not r85 goto L53 (error at :48) else goto L31 :: bool L31: - r36 = :: bytes - return r36 + r86 = __getitem___HexBytes_obj() + if is_error(r86) goto L53 (error at :60) else goto L32 L32: - dec_ref non_prefixed_hex - goto L31 + r87 = '__getitem__' + r88 = CPyDict_SetItem(r73, r87, r86) + dec_ref r86 + r89 = r88 >= 0 :: signed + if not r89 goto L53 (error at :60) else goto L33 :: bool L33: - dec_ref padded_hex - goto L13 + r90 = __repr___HexBytes_obj() + if is_error(r90) goto L53 (error at :72) else goto L34 L34: - dec_ref padded_hex - goto L23 + r91 = '__repr__' + r92 = CPyDict_SetItem(r73, r91, r90) + dec_ref r90 + r93 = r92 >= 0 :: signed + if not r93 goto L53 (error at :72) else goto L35 :: bool L35: - dec_ref padded_hex - goto L21 + r94 = to_0x_hex_HexBytes_obj() + if is_error(r94) goto L53 (error at :75) else goto L36 L36: - dec_ref r22 - goto L23 + r95 = 'to_0x_hex' + r96 = CPyDict_SetItem(r73, r95, r94) + dec_ref r94 + r97 = r96 >= 0 :: signed + if not r97 goto L53 (error at :75) else goto L37 :: bool L37: - dec_ref r15 - goto L20 + r98 = __reduce___HexBytes_obj() + if is_error(r98) goto L53 (error at :81) else goto L38 L38: - dec_ref r15 - goto L22 + r99 = '__reduce__' + r100 = CPyDict_SetItem(r73, r99, r98) + dec_ref r98 + r101 = r100 >= 0 :: signed + if not r101 goto L53 (error at :81) else goto L39 :: bool L39: - dec_ref r14 - goto L26 + r102 = 'HexBytes' + r103 = '__annotations__' + r104 = CPyDict_SetItem(r73, r103, r75) + dec_ref r75 + r105 = r104 >= 0 :: signed + if not r105 goto L52 (error at :37) else goto L40 :: bool L40: - dec_ref r14 - goto L31 - -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4 :: object - r5 :: object_ptr - r6 :: object_ptr[1] - r7 :: c_ptr - r8 :: native_int[1] - r9 :: c_ptr - r10 :: object - r11 :: dict - r12, r13 :: str - r14 :: bit - r15 :: object - r16 :: str - r17 :: dict - r18, r19 :: object - r20 :: str - r21 :: object - r22 :: dict - r23 :: str - r24 :: i32 - r25 :: bit - r26 :: None -L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool -L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L8 (error at :-1) else goto L2 -L2: - builtins = r4 :: module - dec_ref r4 -L3: - r5 = load_address binascii :: module - r6 = [r5] - r7 = load_address r6 - r8 = [1] - r9 = load_address r8 - r10 = (('binascii', 'binascii', 'binascii'),) - r11 = faster_hexbytes._utils.globals :: static - r12 = 'faster_hexbytes/_utils.py' - r13 = '' - r14 = CPyImport_ImportMany(r10, r7, r11, r12, r13, r9) - if not r14 goto L8 else goto L4 :: bool -L4: - r15 = ('Final', 'Union') - r16 = 'typing' - r17 = faster_hexbytes._utils.globals :: static - r18 = CPyImport_ImportFromMany(r16, r15, r15, r17) - if is_error(r18) goto L8 (error at :2) else goto L5 -L5: - typing = r18 :: module - dec_ref r18 - r19 = binascii :: module - r20 = 'unhexlify' - r21 = CPyObject_GetAttr(r19, r20) - if is_error(r21) goto L8 (error at :8) else goto L6 -L6: - faster_hexbytes._utils.unhexlify = r21 :: static - r22 = faster_hexbytes._utils.globals :: static - r23 = 'unhexlify' - r24 = CPyDict_SetItem(r22, r23, r21) - dec_ref r21 - r25 = r24 >= 0 :: signed - if not r25 goto L8 (error at :8) else goto L7 :: bool -L7: + r106 = 'mypyc filler docstring' + r107 = '__doc__' + r108 = CPyDict_SetItem(r73, r107, r106) + r109 = r108 >= 0 :: signed + if not r109 goto L52 (error at :37) else goto L41 :: bool +L41: + r110 = 'faster_hexbytes.main' + r111 = '__module__' + r112 = CPyDict_SetItem(r73, r111, r110) + r113 = r112 >= 0 :: signed + if not r113 goto L52 (error at :37) else goto L42 :: bool +L42: + r114 = [r102, r61, r73] + r115 = load_address r114 + r116 = PyObject_Vectorcall(r63, r115, 3, 0) + if is_error(r116) goto L52 (error at :37) else goto L43 +L43: + dec_ref r73 + dec_ref r61 + r117 = faster_hexbytes.main.globals :: static + r118 = 'mypyc_attr' + r119 = CPyDict_GetItem(r117, r118) + if is_error(r119) goto L55 (error at :36) else goto L44 +L44: + r120 = box(bool, 0) + r121 = [r120] + r122 = load_address r121 + r123 = ('native_class',) + r124 = PyObject_Vectorcall(r119, r122, 0, r123) + dec_ref r119 + if is_error(r124) goto L55 (error at :36) else goto L45 +L45: + r125 = [r116] + r126 = load_address r125 + r127 = PyObject_Vectorcall(r124, r126, 1, 0) + dec_ref r124 + if is_error(r127) goto L55 (error at :37) else goto L46 +L46: + dec_ref r116 + faster_hexbytes.main.HexBytes = r127 :: type + r128 = faster_hexbytes.main.globals :: static + r129 = 'HexBytes' + r130 = PyDict_SetItem(r128, r129, r127) + dec_ref r127 + r131 = r130 >= 0 :: signed + if not r131 goto L48 (error at :37) else goto L47 :: bool +L47: + r132 = faster_hexbytes.main.HexBytes :: type return 1 -L8: - r26 = :: None - return r26 +L48: + r133 = :: None + return r133 +L49: + dec_ref r33 + goto L48 +L50: + dec_ref r33 + dec_ref r39 + goto L48 +L51: + dec_ref r61 + goto L48 +L52: + dec_ref r61 + dec_ref r73 + goto L48 +L53: + dec_ref r61 + dec_ref r73 + dec_ref r75 + goto L48 +L54: + dec_ref r61 + dec_ref r73 + dec_ref r75 + dec_ref r76 + goto L48 +L55: + dec_ref r116 + goto L48 From d7cfb56527f2fec222425c4c7148c5a45d0165d9 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Tue, 30 Sep 2025 02:25:24 -0400 Subject: [PATCH 30/98] Update setup.py --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 11d4714..121043c 100644 --- a/setup.py +++ b/setup.py @@ -68,7 +68,7 @@ license="MIT", zip_safe=False, keywords="ethereum", - packages=find_packages(exclude=["scripts", "scripts.*", "tests", "tests.*"]), + packages=find_packages(exclude=["scripts", "scripts.*", "tests", "tests.*", "benchmarks", "benchmarks.*"]), ext_modules=ext_modules, package_data={"faster_hexbytes": ["py.typed"]}, classifiers=[ From 13ce430bf9a27a5cd8d61a7d4d653aedbabcb339 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 30 Sep 2025 06:25:51 +0000 Subject: [PATCH 31/98] chore: compile C files for source control --- build/ops.txt | 2290 ++++++++++++++++++++++++------------------------- 1 file changed, 1145 insertions(+), 1145 deletions(-) diff --git a/build/ops.txt b/build/ops.txt index 5ed32ca..a8ead04 100644 --- a/build/ops.txt +++ b/build/ops.txt @@ -101,644 +101,326 @@ L12: r34 = :: None return r34 -def to_bytes(val): - val :: union[bytes, str, object, bool, int] - r0 :: bit - r1 :: bytes - r2 :: bit - r3 :: str - r4 :: bytes - r5 :: bit - r6 :: object - r7 :: object[1] - r8 :: object_ptr - r9 :: object - r10 :: bytes +def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def __new___HexBytes_obj.__call__(__mypyc_self__, cls, val): + __mypyc_self__ :: faster_hexbytes.main.__new___HexBytes_obj + cls :: object + val :: union[bytes, str, bool, object, int] + r0 :: bytes + r1 :: object + r2 :: bool + r3 :: object[2] + r4 :: object_ptr + r5 :: object + r6, r7 :: faster_hexbytes.main.HexBytes +L0: + r0 = to_bytes(val) + if is_error(r0) goto L7 (error at __new__:49) else goto L1 +L1: + r1 = faster_hexbytes.main._bytes_new :: static + if is_error(r1) goto L8 else goto L4 +L2: + r2 = raise NameError('value for final name "_bytes_new" was not set') + if not r2 goto L7 (error at __new__:50) else goto L3 :: bool +L3: + unreachable +L4: + r3 = [cls, r0] + r4 = load_address r3 + r5 = PyObject_Vectorcall(r1, r4, 2, 0) + if is_error(r5) goto L9 (error at __new__:50) else goto L5 +L5: + dec_ref r0 + r6 = cast(faster_hexbytes.main.HexBytes, r5) + if is_error(r6) goto L7 (error at __new__:50) else goto L6 +L6: + return r6 +L7: + r7 = :: faster_hexbytes.main.HexBytes + return r7 +L8: + dec_ref r0 + goto L2 +L9: + dec_ref r0 + goto L7 + +def __getitem___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def __getitem___HexBytes_obj.__call__(__mypyc_self__, self, key): + __mypyc_self__ :: faster_hexbytes.main.__getitem___HexBytes_obj + self :: faster_hexbytes.main.HexBytes + key, r0 :: object + r1 :: str + r2 :: object[3] + r3 :: object_ptr + r4 :: object + r5 :: union[int, bytes] + r6 :: bit + r7 :: int + r8, r9, r10 :: object r11 :: bit - r12 :: bool - r13, r14, r15 :: bytes - r16 :: bit - r17 :: int - r18 :: native_int - r19 :: bit - r20 :: native_int - r21, r22 :: bit - r23 :: bool - r24 :: bit - r25 :: str - r26 :: int - r27, r28, r29 :: str - r30 :: object - r31 :: str - r32 :: object - r33 :: object[1] - r34 :: object_ptr - r35 :: object - r36 :: int - r37 :: object - r38 :: str - r39, r40 :: object - r41 :: object[1] - r42 :: object_ptr - r43 :: object - r44 :: str - r45 :: bytes - r46 :: object - r47 :: str - r48 :: object - r49 :: i32 - r50 :: bit - r51 :: bool - r52 :: object - r53 :: object[1] - r54 :: object_ptr - r55 :: object - r56 :: bytes - r57, r58, r59, r60, r61 :: str - r62 :: object[3] - r63 :: object_ptr - r64 :: object - r65, r66 :: str - r67 :: object - r68, r69 :: str - r70 :: object[3] - r71 :: object_ptr - r72 :: object - r73 :: str - r74 :: list - r75, r76, r77, r78, r79, r80 :: ptr - r81 :: str - r82 :: object - r83 :: str - r84 :: object - r85 :: object[1] - r86 :: object_ptr - r87 :: object - r88 :: bytes + r12 :: bytes + r13 :: object + r14 :: object[1] + r15 :: object_ptr + r16 :: object + r17 :: faster_hexbytes.main.HexBytes + r18 :: bytes + r19 :: object[1] + r20 :: object_ptr + r21 :: object + r22 :: faster_hexbytes.main.HexBytes + r23 :: union[int, faster_hexbytes.main.HexBytes] L0: - r0 = PyBytes_Check(val) - if r0 goto L1 else goto L3 :: bool + r0 = load_address PyBytes_Type + r1 = '__getitem__' + r2 = [r0, self, key] + r3 = load_address r2 + r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775811, 0) + if is_error(r4) goto L14 (error at __getitem__:63) else goto L1 L1: - inc_ref val - r1 = cast(bytes, val) - if is_error(r1) goto L51 (error at to_bytes:19) else goto L2 + r5 = cast(union[int, bytes], r4) + if is_error(r5) goto L14 (error at __getitem__:63) else goto L2 L2: - return r1 + r6 = PyLong_Check(r5) + if r6 goto L3 else goto L5 :: bool L3: - r2 = PyUnicode_Check(val) - if r2 goto L4 else goto L7 :: bool + r7 = unbox(int, r5) + dec_ref r5 + if is_error(r7) goto L14 (error at __getitem__:65) else goto L4 L4: - inc_ref val - r3 = cast(str, val) - if is_error(r3) goto L51 (error at to_bytes:21) else goto L5 + r8 = box(int, r7) + return r8 L5: - r4 = hexstr_to_bytes(r3) - dec_ref r3 - if is_error(r4) goto L51 (error at to_bytes:21) else goto L6 + r9 = CPy_TYPE(self) + r10 = faster_hexbytes.main.HexBytes :: type + r11 = r9 == r10 + if r11 goto L15 else goto L10 :: bool L6: - return r4 + r12 = cast(bytes, r5) + if is_error(r12) goto L14 (error at __getitem__:69) else goto L7 L7: - r5 = PyByteArray_Check(val) - if r5 goto L8 else goto L11 :: bool + r13 = faster_hexbytes.main.HexBytes :: type + r14 = [r12] + r15 = load_address r14 + r16 = PyObject_Vectorcall(r13, r15, 1, 0) + if is_error(r16) goto L16 (error at __getitem__:69) else goto L8 L8: - r6 = load_address PyBytes_Type - r7 = [val] - r8 = load_address r7 - r9 = PyObject_Vectorcall(r6, r8, 1, 0) - if is_error(r9) goto L51 (error at to_bytes:23) else goto L9 + dec_ref r12 + r17 = cast(faster_hexbytes.main.HexBytes, r16) + if is_error(r17) goto L14 (error at __getitem__:69) else goto L9 L9: - r10 = cast(bytes, r9) - if is_error(r10) goto L51 (error at to_bytes:23) else goto L10 + return r17 L10: - return r10 + r18 = cast(bytes, r5) + if is_error(r18) goto L17 (error at __getitem__:70) else goto L11 L11: - r11 = PyBool_Check(val) - if r11 goto L12 else goto L17 :: bool + r19 = [r18] + r20 = load_address r19 + r21 = PyObject_Vectorcall(r9, r20, 1, 0) + dec_ref r9 + if is_error(r21) goto L18 (error at __getitem__:70) else goto L12 L12: - r12 = unbox(bool, val) - if is_error(r12) goto L51 (error at to_bytes:25) else goto L13 + dec_ref r18 + r22 = cast(faster_hexbytes.main.HexBytes, r21) + if is_error(r22) goto L14 (error at __getitem__:70) else goto L13 L13: - if r12 goto L14 else goto L15 :: bool + return r22 L14: - r13 = b'\x01' - inc_ref r13 - r14 = r13 - goto L16 -L15: - r15 = b'\x00' - inc_ref r15 - r14 = r15 + r23 = :: union[int, faster_hexbytes.main.HexBytes] + return r23 +L15: + dec_ref r9 + goto L6 L16: - return r14 + dec_ref r12 + goto L14 L17: - r16 = PyLong_Check(val) - if r16 goto L18 else goto L37 :: bool + dec_ref r9 + goto L14 L18: - r17 = unbox(int, val) - if is_error(r17) goto L51 (error at to_bytes:29) else goto L19 -L19: - r18 = r17 & 1 - r19 = r18 != 0 - if r19 goto L21 else goto L20 :: bool -L20: - r20 = 0 & 1 - r21 = r20 != 0 - if r21 goto L21 else goto L22 :: bool -L21: - r22 = CPyTagged_IsLt_(r17, 0) - r23 = r22 - goto L23 -L22: - r24 = r17 < 0 :: signed - r23 = r24 -L23: - dec_ref r17 :: int - if r23 goto L24 else goto L31 :: bool -L24: - r25 = 'Cannot convert negative integer ' - r26 = unbox(int, val) - if is_error(r26) goto L51 (error at to_bytes:30) else goto L25 -L25: - r27 = CPyTagged_Str(r26) - dec_ref r26 :: int - if is_error(r27) goto L51 (error at to_bytes:30) else goto L26 -L26: - r28 = ' to bytes' - r29 = CPyStr_Build(3, r25, r27, r28) - dec_ref r27 - if is_error(r29) goto L51 (error at to_bytes:30) else goto L27 -L27: - r30 = builtins :: module - r31 = 'ValueError' - r32 = CPyObject_GetAttr(r30, r31) - if is_error(r32) goto L52 (error at to_bytes:30) else goto L28 -L28: - r33 = [r29] - r34 = load_address r33 - r35 = PyObject_Vectorcall(r32, r34, 1, 0) - dec_ref r32 - if is_error(r35) goto L52 (error at to_bytes:30) else goto L29 -L29: - dec_ref r29 - CPy_Raise(r35) - dec_ref r35 - if not 0 goto L51 (error at to_bytes:30) else goto L30 :: bool -L30: - unreachable -L31: - r36 = unbox(int, val) - if is_error(r36) goto L51 (error at to_bytes:32) else goto L32 -L32: - r37 = builtins :: module - r38 = 'hex' - r39 = CPyObject_GetAttr(r37, r38) - if is_error(r39) goto L53 (error at to_bytes:32) else goto L33 -L33: - r40 = box(int, r36) - r41 = [r40] - r42 = load_address r41 - r43 = PyObject_Vectorcall(r39, r42, 1, 0) - dec_ref r39 - if is_error(r43) goto L54 (error at to_bytes:32) else goto L34 -L34: - dec_ref r40 - r44 = cast(str, r43) - if is_error(r44) goto L51 (error at to_bytes:32) else goto L35 -L35: - r45 = to_bytes(r44) - dec_ref r44 - if is_error(r45) goto L51 (error at to_bytes:32) else goto L36 -L36: - return r45 -L37: - r46 = builtins :: module - r47 = 'memoryview' - r48 = CPyObject_GetAttr(r46, r47) - if is_error(r48) goto L51 (error at to_bytes:33) else goto L38 -L38: - r49 = PyObject_IsInstance(val, r48) - dec_ref r48 - r50 = r49 >= 0 :: signed - if not r50 goto L51 (error at to_bytes:33) else goto L39 :: bool -L39: - r51 = truncate r49: i32 to builtins.bool - if r51 goto L40 else goto L43 :: bool -L40: - r52 = load_address PyBytes_Type - r53 = [val] - r54 = load_address r53 - r55 = PyObject_Vectorcall(r52, r54, 1, 0) - if is_error(r55) goto L51 (error at to_bytes:34) else goto L41 -L41: - r56 = cast(bytes, r55) - if is_error(r56) goto L51 (error at to_bytes:34) else goto L42 -L42: - return r56 -L43: - r57 = '' - r58 = 'Cannot convert ' - r59 = '{!r:{}}' - r60 = '' - r61 = 'format' - r62 = [r59, val, r60] - r63 = load_address r62 - r64 = PyObject_VectorcallMethod(r61, r63, 9223372036854775811, 0) - if is_error(r64) goto L51 (error at to_bytes:36) else goto L44 -L44: - r65 = ' of type ' - r66 = '{:{}}' - r67 = CPy_TYPE(val) - r68 = '' - r69 = 'format' - r70 = [r66, r67, r68] - r71 = load_address r70 - r72 = PyObject_VectorcallMethod(r69, r71, 9223372036854775811, 0) - if is_error(r72) goto L55 (error at to_bytes:36) else goto L45 -L45: - dec_ref r67 - r73 = ' to bytes' - r74 = PyList_New(5) - if is_error(r74) goto L56 (error at to_bytes:36) else goto L46 -L46: - r75 = get_element_ptr r74 ob_item :: PyListObject - r76 = load_mem r75 :: ptr* - inc_ref r58 - set_mem r76, r58 :: builtins.object* - r77 = r76 + 8 - set_mem r77, r64 :: builtins.object* - inc_ref r65 - r78 = r76 + 16 - set_mem r78, r65 :: builtins.object* - r79 = r76 + 24 - set_mem r79, r72 :: builtins.object* - inc_ref r73 - r80 = r76 + 32 - set_mem r80, r73 :: builtins.object* - r81 = PyUnicode_Join(r57, r74) - dec_ref r74 - if is_error(r81) goto L51 (error at to_bytes:36) else goto L47 -L47: - r82 = builtins :: module - r83 = 'TypeError' - r84 = CPyObject_GetAttr(r82, r83) - if is_error(r84) goto L57 (error at to_bytes:36) else goto L48 -L48: - r85 = [r81] - r86 = load_address r85 - r87 = PyObject_Vectorcall(r84, r86, 1, 0) - dec_ref r84 - if is_error(r87) goto L57 (error at to_bytes:36) else goto L49 -L49: - dec_ref r81 - CPy_Raise(r87) - dec_ref r87 - if not 0 goto L51 (error at to_bytes:36) else goto L50 :: bool -L50: - unreachable -L51: - r88 = :: bytes - return r88 -L52: - dec_ref r29 - goto L51 -L53: - dec_ref r36 :: int - goto L51 -L54: - dec_ref r40 - goto L51 -L55: - dec_ref r64 - dec_ref r67 - goto L51 -L56: - dec_ref r64 - dec_ref r72 - goto L51 -L57: - dec_ref r81 - goto L51 + dec_ref r18 + goto L14 -def hexstr_to_bytes(hexstr): - hexstr, r0, r1 :: str - r2 :: tuple[str, str] - r3 :: object - r4 :: bool - r5 :: object - r6, non_prefixed_hex :: str - r7 :: native_int - r8 :: bit - r9 :: short_int - r10 :: int - r11 :: bit - r12, r13, padded_hex :: str - r14 :: bytes - r15 :: tuple[object, object, object] - r16 :: object - r17 :: str - r18 :: object - r19 :: bit - r20, r21, r22 :: str - r23 :: object - r24 :: str - r25 :: object - r26 :: object[1] - r27 :: object_ptr - r28 :: object - r29 :: bit - r30 :: object - r31 :: bool - r32 :: object[1] - r33 :: object_ptr - r34 :: object - r35, r36 :: bytes +def __repr___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object L0: - r0 = '0x' - r1 = '0X' - inc_ref r0 - inc_ref r1 - r2 = (r0, r1) - r3 = box(tuple[str, str], r2) - r4 = CPyStr_Startswith(hexstr, r3) - dec_ref r3 - if is_error(r4) goto L31 (error at hexstr_to_bytes:40) else goto L1 + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool L1: - if r4 goto L2 else goto L5 :: bool + inc_ref __mypyc_self__ + return __mypyc_self__ L2: - r5 = CPyStr_GetSlice(hexstr, 4, 9223372036854775806) - if is_error(r5) goto L31 (error at hexstr_to_bytes:41) else goto L3 -L3: - r6 = cast(str, r5) - if is_error(r6) goto L31 (error at hexstr_to_bytes:41) else goto L4 + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 L4: - non_prefixed_hex = r6 - goto L6 + r3 = :: object + return r3 + +def __repr___HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.__repr___HexBytes_obj + self :: faster_hexbytes.main.HexBytes + r0, r1, r2, r3, r4 :: str + r5 :: object[1] + r6 :: object_ptr + r7 :: object + r8, r9, r10, r11 :: str + r12 :: object[3] + r13 :: object_ptr + r14 :: object + r15, r16 :: str + r17 :: list + r18, r19, r20, r21 :: ptr + r22, r23 :: str +L0: + r0 = '' + r1 = 'HexBytes(' + r2 = '{!r:{}}' + r3 = '0x' + r4 = 'hex' + r5 = [self] + r6 = load_address r5 + r7 = PyObject_VectorcallMethod(r4, r6, 9223372036854775809, 0) + if is_error(r7) goto L8 (error at __repr__:73) else goto L1 +L1: + r8 = cast(str, r7) + if is_error(r8) goto L8 (error at __repr__:73) else goto L2 +L2: + r9 = PyUnicode_Concat(r3, r8) + dec_ref r8 + if is_error(r9) goto L8 (error at __repr__:73) else goto L3 +L3: + r10 = '' + r11 = 'format' + r12 = [r2, r9, r10] + r13 = load_address r12 + r14 = PyObject_VectorcallMethod(r11, r13, 9223372036854775811, 0) + if is_error(r14) goto L9 (error at __repr__:73) else goto L4 +L4: + dec_ref r9 + r15 = cast(str, r14) + if is_error(r15) goto L8 (error at __repr__:73) else goto L5 L5: - inc_ref hexstr - non_prefixed_hex = hexstr + r16 = ')' + r17 = PyList_New(3) + if is_error(r17) goto L10 (error at __repr__:73) else goto L6 L6: - r7 = CPyStr_Size_size_t(hexstr) - r8 = r7 >= 0 :: signed - if not r8 goto L32 (error at hexstr_to_bytes:46) else goto L7 :: bool + r18 = get_element_ptr r17 ob_item :: PyListObject + r19 = load_mem r18 :: ptr* + inc_ref r1 + set_mem r19, r1 :: builtins.object* + r20 = r19 + 8 + set_mem r20, r15 :: builtins.object* + inc_ref r16 + r21 = r19 + 16 + set_mem r21, r16 :: builtins.object* + r22 = PyUnicode_Join(r0, r17) + dec_ref r17 + if is_error(r22) goto L8 (error at __repr__:73) else goto L7 L7: - r9 = r7 << 1 - r10 = CPyTagged_Remainder(r9, 4) - if is_error(r10) goto L32 (error at hexstr_to_bytes:46) else goto L8 + return r22 L8: - r11 = r10 != 0 - dec_ref r10 :: int - if r11 goto L9 else goto L11 :: bool + r23 = :: str + return r23 L9: - r12 = '0' - r13 = PyUnicode_Concat(r12, non_prefixed_hex) - dec_ref non_prefixed_hex - if is_error(r13) goto L31 (error at hexstr_to_bytes:47) else goto L10 + dec_ref r9 + goto L8 L10: - padded_hex = r13 - goto L12 -L11: - padded_hex = non_prefixed_hex -L12: - r14 = PyUnicode_AsASCIIString(padded_hex) - if is_error(r14) goto L14 (error at hexstr_to_bytes:52) else goto L33 -L13: - goto L25 -L14: - r15 = CPy_CatchError() - r16 = builtins :: module - r17 = 'UnicodeDecodeError' - r18 = CPyObject_GetAttr(r16, r17) - if is_error(r18) goto L34 (error at hexstr_to_bytes:53) else goto L15 -L15: - r19 = CPy_ExceptionMatches(r18) - dec_ref r18 - if r19 goto L16 else goto L35 :: bool -L16: - r20 = 'hex string ' - r21 = ' may only contain [0-9a-fA-F] characters' - r22 = CPyStr_Build(3, r20, padded_hex, r21) - dec_ref padded_hex - if is_error(r22) goto L23 (error at hexstr_to_bytes:55) else goto L17 -L17: - r23 = builtins :: module - r24 = 'ValueError' - r25 = CPyObject_GetAttr(r23, r24) - if is_error(r25) goto L36 (error at hexstr_to_bytes:54) else goto L18 -L18: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L36 (error at hexstr_to_bytes:54) else goto L19 -L19: - dec_ref r22 - CPy_Raise(r28) - dec_ref r28 - if not 0 goto L23 (error at hexstr_to_bytes:54) else goto L37 :: bool -L20: - unreachable -L21: - CPy_Reraise() - if not 0 goto L23 else goto L38 :: bool -L22: - unreachable -L23: - CPy_RestoreExcInfo(r15) - dec_ref r15 - r29 = CPy_KeepPropagating() - if not r29 goto L31 else goto L24 :: bool -L24: - unreachable -L25: - r30 = faster_hexbytes._utils.unhexlify :: static - if is_error(r30) goto L39 else goto L28 -L26: - r31 = raise NameError('value for final name "unhexlify" was not set') - if not r31 goto L31 (error at hexstr_to_bytes:58) else goto L27 :: bool -L27: - unreachable -L28: - r32 = [r14] - r33 = load_address r32 - r34 = PyObject_Vectorcall(r30, r33, 1, 0) - if is_error(r34) goto L40 (error at hexstr_to_bytes:58) else goto L29 -L29: - dec_ref r14 - r35 = cast(bytes, r34) - if is_error(r35) goto L31 (error at hexstr_to_bytes:58) else goto L30 -L30: - return r35 -L31: - r36 = :: bytes - return r36 -L32: - dec_ref non_prefixed_hex - goto L31 -L33: - dec_ref padded_hex - goto L13 -L34: - dec_ref padded_hex - goto L23 -L35: - dec_ref padded_hex - goto L21 -L36: - dec_ref r22 - goto L23 -L37: - dec_ref r15 - goto L20 -L38: dec_ref r15 - goto L22 -L39: - dec_ref r14 - goto L26 -L40: - dec_ref r14 - goto L31 + goto L8 -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4 :: object - r5 :: object_ptr - r6 :: object_ptr[1] - r7 :: c_ptr - r8 :: native_int[1] - r9 :: c_ptr - r10 :: object - r11 :: dict - r12, r13 :: str - r14 :: bit - r15 :: object - r16 :: str - r17 :: dict - r18, r19 :: object - r20 :: str - r21 :: object - r22 :: dict - r23 :: str - r24 :: i32 - r25 :: bit - r26 :: None +def to_0x_hex_HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L8 (error at :-1) else goto L2 + inc_ref __mypyc_self__ + return __mypyc_self__ L2: - builtins = r4 :: module - dec_ref r4 + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 L3: - r5 = load_address binascii :: module - r6 = [r5] - r7 = load_address r6 - r8 = [1] - r9 = load_address r8 - r10 = (('binascii', 'binascii', 'binascii'),) - r11 = faster_hexbytes._utils.globals :: static - r12 = 'faster_hexbytes/_utils.py' - r13 = '' - r14 = CPyImport_ImportMany(r10, r7, r11, r12, r13, r9) - if not r14 goto L8 else goto L4 :: bool -L4: - r15 = ('Final', 'Union') - r16 = 'typing' - r17 = faster_hexbytes._utils.globals :: static - r18 = CPyImport_ImportFromMany(r16, r15, r15, r17) - if is_error(r18) goto L8 (error at :2) else goto L5 -L5: - typing = r18 :: module - dec_ref r18 - r19 = binascii :: module - r20 = 'unhexlify' - r21 = CPyObject_GetAttr(r19, r20) - if is_error(r21) goto L8 (error at :8) else goto L6 -L6: - faster_hexbytes._utils.unhexlify = r21 :: static - r22 = faster_hexbytes._utils.globals :: static - r23 = 'unhexlify' - r24 = CPyDict_SetItem(r22, r23, r21) - dec_ref r21 - r25 = r24 >= 0 :: signed - if not r25 goto L8 (error at :8) else goto L7 :: bool -L7: - return 1 -L8: - r26 = :: None - return r26 - -def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 + return r2 L4: r3 = :: object return r3 -def __new___HexBytes_obj.__call__(__mypyc_self__, cls, val): - __mypyc_self__ :: faster_hexbytes.main.__new___HexBytes_obj - cls :: object - val :: union[bytes, str, bool, object, int] - r0 :: bytes - r1 :: object - r2 :: bool - r3 :: object[2] - r4 :: object_ptr - r5 :: object - r6, r7 :: faster_hexbytes.main.HexBytes +def to_0x_hex_HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.to_0x_hex_HexBytes_obj + self :: faster_hexbytes.main.HexBytes + r0, r1 :: str + r2 :: object[1] + r3 :: object_ptr + r4 :: object + r5, r6, r7 :: str L0: - r0 = to_bytes(val) - if is_error(r0) goto L7 (error at __new__:49) else goto L1 + r0 = '0x' + r1 = 'hex' + r2 = [self] + r3 = load_address r2 + r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775809, 0) + if is_error(r4) goto L4 (error at to_0x_hex:79) else goto L1 L1: - r1 = faster_hexbytes.main._bytes_new :: static - if is_error(r1) goto L8 else goto L4 + r5 = cast(str, r4) + if is_error(r5) goto L4 (error at to_0x_hex:79) else goto L2 L2: - r2 = raise NameError('value for final name "_bytes_new" was not set') - if not r2 goto L7 (error at __new__:50) else goto L3 :: bool + r6 = CPyStr_Build(2, r0, r5) + dec_ref r5 + if is_error(r6) goto L4 (error at to_0x_hex:79) else goto L3 L3: - unreachable -L4: - r3 = [cls, r0] - r4 = load_address r3 - r5 = PyObject_Vectorcall(r1, r4, 2, 0) - if is_error(r5) goto L9 (error at __new__:50) else goto L5 -L5: - dec_ref r0 - r6 = cast(faster_hexbytes.main.HexBytes, r5) - if is_error(r6) goto L7 (error at __new__:50) else goto L6 -L6: return r6 -L7: - r7 = :: faster_hexbytes.main.HexBytes +L4: + r7 = :: str return r7 -L8: - dec_ref r0 - goto L2 -L9: - dec_ref r0 - goto L7 -def __getitem___HexBytes_obj.__get__(__mypyc_self__, instance, owner): +def __reduce___HexBytes_obj.__get__(__mypyc_self__, instance, owner): __mypyc_self__, instance, owner, r0 :: object r1 :: bit r2, r3 :: object @@ -758,317 +440,61 @@ L4: r3 = :: object return r3 -def __getitem___HexBytes_obj.__call__(__mypyc_self__, self, key): - __mypyc_self__ :: faster_hexbytes.main.__getitem___HexBytes_obj +def __reduce___HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.__reduce___HexBytes_obj self :: faster_hexbytes.main.HexBytes - key, r0 :: object - r1 :: str - r2 :: object[3] - r3 :: object_ptr - r4 :: object - r5 :: union[int, bytes] - r6 :: bit - r7 :: int - r8, r9, r10 :: object - r11 :: bit - r12 :: bytes - r13 :: object - r14 :: object[1] - r15 :: object_ptr - r16 :: object - r17 :: faster_hexbytes.main.HexBytes - r18 :: bytes - r19 :: object[1] - r20 :: object_ptr - r21 :: object - r22 :: faster_hexbytes.main.HexBytes - r23 :: union[int, faster_hexbytes.main.HexBytes] + r0 :: object + r1 :: bool + r2, r3 :: object + r4 :: object[1] + r5 :: object_ptr + r6 :: object + r7 :: bytes + r8 :: tuple[object, bytes] + r9, r10 :: tuple[object, tuple[object, bytes]] L0: - r0 = load_address PyBytes_Type - r1 = '__getitem__' - r2 = [r0, self, key] - r3 = load_address r2 - r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775811, 0) - if is_error(r4) goto L14 (error at __getitem__:63) else goto L1 + r0 = faster_hexbytes.main._bytes_new :: static + if is_error(r0) goto L1 else goto L3 L1: - r5 = cast(union[int, bytes], r4) - if is_error(r5) goto L14 (error at __getitem__:63) else goto L2 + r1 = raise NameError('value for final name "_bytes_new" was not set') + if not r1 goto L6 (error at __reduce__:89) else goto L2 :: bool L2: - r6 = PyLong_Check(r5) - if r6 goto L3 else goto L5 :: bool + unreachable L3: - r7 = unbox(int, r5) - dec_ref r5 - if is_error(r7) goto L14 (error at __getitem__:65) else goto L4 + r2 = CPy_TYPE(self) + r3 = load_address PyBytes_Type + r4 = [self] + r5 = load_address r4 + r6 = PyObject_Vectorcall(r3, r5, 1, 0) + if is_error(r6) goto L7 (error at __reduce__:89) else goto L4 L4: - r8 = box(int, r7) - return r8 + r7 = cast(bytes, r6) + if is_error(r7) goto L7 (error at __reduce__:89) else goto L5 L5: - r9 = CPy_TYPE(self) - r10 = faster_hexbytes.main.HexBytes :: type - r11 = r9 == r10 - if r11 goto L15 else goto L10 :: bool + r8 = (r2, r7) + inc_ref r0 + r9 = (r0, r8) + return r9 L6: - r12 = cast(bytes, r5) - if is_error(r12) goto L14 (error at __getitem__:69) else goto L7 + r10 = :: tuple[object, tuple[object, bytes]] + return r10 L7: - r13 = faster_hexbytes.main.HexBytes :: type - r14 = [r12] - r15 = load_address r14 - r16 = PyObject_Vectorcall(r13, r15, 1, 0) - if is_error(r16) goto L16 (error at __getitem__:69) else goto L8 -L8: - dec_ref r12 - r17 = cast(faster_hexbytes.main.HexBytes, r16) - if is_error(r17) goto L14 (error at __getitem__:69) else goto L9 -L9: - return r17 -L10: - r18 = cast(bytes, r5) - if is_error(r18) goto L17 (error at __getitem__:70) else goto L11 -L11: - r19 = [r18] - r20 = load_address r19 - r21 = PyObject_Vectorcall(r9, r20, 1, 0) - dec_ref r9 - if is_error(r21) goto L18 (error at __getitem__:70) else goto L12 -L12: - dec_ref r18 - r22 = cast(faster_hexbytes.main.HexBytes, r21) - if is_error(r22) goto L14 (error at __getitem__:70) else goto L13 -L13: - return r22 -L14: - r23 = :: union[int, faster_hexbytes.main.HexBytes] - return r23 -L15: - dec_ref r9 + dec_ref r2 goto L6 -L16: - dec_ref r12 - goto L14 -L17: - dec_ref r9 - goto L14 -L18: - dec_ref r18 - goto L14 - -def __repr___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 -def __repr___HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.__repr___HexBytes_obj - self :: faster_hexbytes.main.HexBytes - r0, r1, r2, r3, r4 :: str - r5 :: object[1] - r6 :: object_ptr - r7 :: object - r8, r9, r10, r11 :: str - r12 :: object[3] - r13 :: object_ptr - r14 :: object - r15, r16 :: str - r17 :: list - r18, r19, r20, r21 :: ptr - r22, r23 :: str -L0: - r0 = '' - r1 = 'HexBytes(' - r2 = '{!r:{}}' - r3 = '0x' - r4 = 'hex' - r5 = [self] - r6 = load_address r5 - r7 = PyObject_VectorcallMethod(r4, r6, 9223372036854775809, 0) - if is_error(r7) goto L8 (error at __repr__:73) else goto L1 -L1: - r8 = cast(str, r7) - if is_error(r8) goto L8 (error at __repr__:73) else goto L2 -L2: - r9 = PyUnicode_Concat(r3, r8) - dec_ref r8 - if is_error(r9) goto L8 (error at __repr__:73) else goto L3 -L3: - r10 = '' - r11 = 'format' - r12 = [r2, r9, r10] - r13 = load_address r12 - r14 = PyObject_VectorcallMethod(r11, r13, 9223372036854775811, 0) - if is_error(r14) goto L9 (error at __repr__:73) else goto L4 -L4: - dec_ref r9 - r15 = cast(str, r14) - if is_error(r15) goto L8 (error at __repr__:73) else goto L5 -L5: - r16 = ')' - r17 = PyList_New(3) - if is_error(r17) goto L10 (error at __repr__:73) else goto L6 -L6: - r18 = get_element_ptr r17 ob_item :: PyListObject - r19 = load_mem r18 :: ptr* - inc_ref r1 - set_mem r19, r1 :: builtins.object* - r20 = r19 + 8 - set_mem r20, r15 :: builtins.object* - inc_ref r16 - r21 = r19 + 16 - set_mem r21, r16 :: builtins.object* - r22 = PyUnicode_Join(r0, r17) - dec_ref r17 - if is_error(r22) goto L8 (error at __repr__:73) else goto L7 -L7: - return r22 -L8: - r23 = :: str - return r23 -L9: - dec_ref r9 - goto L8 -L10: - dec_ref r15 - goto L8 - -def to_0x_hex_HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def to_0x_hex_HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.to_0x_hex_HexBytes_obj - self :: faster_hexbytes.main.HexBytes - r0, r1 :: str - r2 :: object[1] - r3 :: object_ptr - r4 :: object - r5, r6, r7 :: str -L0: - r0 = '0x' - r1 = 'hex' - r2 = [self] - r3 = load_address r2 - r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775809, 0) - if is_error(r4) goto L4 (error at to_0x_hex:79) else goto L1 -L1: - r5 = cast(str, r4) - if is_error(r5) goto L4 (error at to_0x_hex:79) else goto L2 -L2: - r6 = CPyStr_Build(2, r0, r5) - dec_ref r5 - if is_error(r6) goto L4 (error at to_0x_hex:79) else goto L3 -L3: - return r6 -L4: - r7 = :: str - return r7 - -def __reduce___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __reduce___HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.__reduce___HexBytes_obj - self :: faster_hexbytes.main.HexBytes - r0 :: object - r1 :: bool - r2, r3 :: object - r4 :: object[1] - r5 :: object_ptr - r6 :: object - r7 :: bytes - r8 :: tuple[object, bytes] - r9, r10 :: tuple[object, tuple[object, bytes]] -L0: - r0 = faster_hexbytes.main._bytes_new :: static - if is_error(r0) goto L1 else goto L3 -L1: - r1 = raise NameError('value for final name "_bytes_new" was not set') - if not r1 goto L6 (error at __reduce__:89) else goto L2 :: bool -L2: - unreachable -L3: - r2 = CPy_TYPE(self) - r3 = load_address PyBytes_Type - r4 = [self] - r5 = load_address r4 - r6 = PyObject_Vectorcall(r3, r5, 1, 0) - if is_error(r6) goto L7 (error at __reduce__:89) else goto L4 -L4: - r7 = cast(bytes, r6) - if is_error(r7) goto L7 (error at __reduce__:89) else goto L5 -L5: - r8 = (r2, r7) - inc_ref r0 - r9 = (r0, r8) - return r9 -L6: - r10 = :: tuple[object, tuple[object, bytes]] - return r10 -L7: - dec_ref r2 - goto L6 - -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4, r5 :: object - r6 :: str - r7 :: dict - r8 :: object - r9 :: object_ptr - r10 :: object_ptr[1] - r11 :: c_ptr - r12 :: native_int[1] - r13 :: c_ptr +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4, r5 :: object + r6 :: str + r7 :: dict + r8 :: object + r9 :: object_ptr + r10 :: object_ptr[1] + r11 :: c_ptr + r12 :: native_int[1] + r13 :: c_ptr r14 :: object r15 :: dict r16, r17 :: str @@ -1170,297 +596,871 @@ def __top_level__(): r132 :: object r133 :: None L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool +L1: + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L48 (error at :-1) else goto L2 +L2: + builtins = r4 :: module + dec_ref r4 +L3: + r5 = ('TYPE_CHECKING', 'Callable', 'Final', 'Tuple', 'Type', 'Union', 'overload') + r6 = 'typing' + r7 = faster_hexbytes.main.globals :: static + r8 = CPyImport_ImportFromMany(r6, r5, r5, r7) + if is_error(r8) goto L48 (error at :1) else goto L4 +L4: + typing = r8 :: module + dec_ref r8 + r9 = load_address hexbytes.main :: module + r10 = [r9] + r11 = load_address r10 + r12 = [14] + r13 = load_address r12 + r14 = (('hexbytes.main', 'hexbytes.main', 'hexbytes'),) + r15 = faster_hexbytes.main.globals :: static + r16 = 'faster_hexbytes/main.py' + r17 = '' + r18 = CPyImport_ImportMany(r14, r11, r15, r16, r17, r13) + if not r18 goto L48 else goto L5 :: bool +L5: + r19 = ('mypyc_attr',) + r20 = 'mypy_extensions' + r21 = faster_hexbytes.main.globals :: static + r22 = CPyImport_ImportFromMany(r20, r19, r19, r21) + if is_error(r22) goto L48 (error at :15) else goto L6 +L6: + mypy_extensions = r22 :: module + dec_ref r22 + r23 = ('Self',) + r24 = 'typing_extensions' + r25 = faster_hexbytes.main.globals :: static + r26 = CPyImport_ImportFromMany(r24, r23, r23, r25) + if is_error(r26) goto L48 (error at :18) else goto L7 +L7: + typing_extensions = r26 :: module + dec_ref r26 + r27 = ('to_bytes',) + r28 = 'faster_hexbytes._utils' + r29 = faster_hexbytes.main.globals :: static + r30 = CPyImport_ImportFromMany(r28, r27, r27, r29) + if is_error(r30) goto L48 (error at :22) else goto L8 +L8: + faster_hexbytes._utils = r30 :: module + dec_ref r30 + if 0 goto L9 else goto L9 :: bool +L9: + r31 = faster_hexbytes.main.globals :: static + r32 = 'Union' + r33 = CPyDict_GetItem(r31, r32) + if is_error(r33) goto L48 (error at :31) else goto L10 +L10: + r34 = load_address PyBytes_Type + r35 = load_address PyUnicode_Type + r36 = load_address PyBool_Type + r37 = builtins :: module + r38 = 'bytearray' + r39 = CPyObject_GetAttr(r37, r38) + if is_error(r39) goto L49 (error at :31) else goto L11 +L11: + r40 = load_address PyLong_Type + r41 = builtins :: module + r42 = 'memoryview' + r43 = CPyObject_GetAttr(r41, r42) + if is_error(r43) goto L50 (error at :31) else goto L12 +L12: + inc_ref r34 + inc_ref r35 + inc_ref r36 + inc_ref r40 + r44 = (r34, r35, r36, r39, r40, r43) + r45 = box(tuple[object, object, object, object, object, object], r44) + r46 = PyObject_GetItem(r33, r45) + dec_ref r33 + dec_ref r45 + if is_error(r46) goto L48 (error at :31) else goto L13 +L13: + r47 = faster_hexbytes.main.globals :: static + r48 = 'BytesLike' + r49 = CPyDict_SetItem(r47, r48, r46) + dec_ref r46 + r50 = r49 >= 0 :: signed + if not r50 goto L48 (error at :31) else goto L14 :: bool +L14: + r51 = load_address PyBytes_Type + r52 = '__new__' + r53 = CPyObject_GetAttr(r51, r52) + if is_error(r53) goto L48 (error at :33) else goto L15 +L15: + faster_hexbytes.main._bytes_new = r53 :: static + r54 = faster_hexbytes.main.globals :: static + r55 = '_bytes_new' + r56 = CPyDict_SetItem(r54, r55, r53) + dec_ref r53 + r57 = r56 >= 0 :: signed + if not r57 goto L48 (error at :33) else goto L16 :: bool +L16: + r58 = hexbytes.main :: module + r59 = 'HexBytes' + r60 = CPyObject_GetAttr(r58, r59) + if is_error(r60) goto L48 (error at :37) else goto L17 +L17: + r61 = PyTuple_Pack(1, r60) + dec_ref r60 + if is_error(r61) goto L48 (error at :37) else goto L18 +L18: + r62 = load_address PyType_Type + r63 = CPy_CalculateMetaclass(r62, r61) + if is_error(r63) goto L51 (error at :37) else goto L19 +L19: + r64 = '__prepare__' + r65 = PyObject_HasAttr(r63, r64) + if r65 goto L20 else goto L24 :: bool +L20: + r66 = 'HexBytes' + r67 = '__prepare__' + r68 = CPyObject_GetAttr(r63, r67) + if is_error(r68) goto L51 (error at :37) else goto L21 +L21: + r69 = [r66, r61] + r70 = load_address r69 + r71 = PyObject_Vectorcall(r68, r70, 2, 0) + dec_ref r68 + if is_error(r71) goto L51 (error at :37) else goto L22 +L22: + r72 = cast(dict, r71) + if is_error(r72) goto L51 (error at :37) else goto L23 +L23: + r73 = r72 + goto L26 +L24: + r74 = PyDict_New() + if is_error(r74) goto L51 (error at :37) else goto L25 +L25: + r73 = r74 +L26: + r75 = PyDict_New() + if is_error(r75) goto L52 (error at :37) else goto L27 +L27: + r76 = __new___HexBytes_obj() + if is_error(r76) goto L53 (error at :48) else goto L28 +L28: + r77 = builtins :: module + r78 = 'staticmethod' + r79 = CPyObject_GetAttr(r77, r78) + if is_error(r79) goto L54 (error at :48) else goto L29 +L29: + r80 = [r76] + r81 = load_address r80 + r82 = PyObject_Vectorcall(r79, r81, 1, 0) + dec_ref r79 + if is_error(r82) goto L54 (error at :48) else goto L30 +L30: + dec_ref r76 + r83 = '__new__' + r84 = CPyDict_SetItem(r73, r83, r82) + dec_ref r82 + r85 = r84 >= 0 :: signed + if not r85 goto L53 (error at :48) else goto L31 :: bool +L31: + r86 = __getitem___HexBytes_obj() + if is_error(r86) goto L53 (error at :60) else goto L32 +L32: + r87 = '__getitem__' + r88 = CPyDict_SetItem(r73, r87, r86) + dec_ref r86 + r89 = r88 >= 0 :: signed + if not r89 goto L53 (error at :60) else goto L33 :: bool +L33: + r90 = __repr___HexBytes_obj() + if is_error(r90) goto L53 (error at :72) else goto L34 +L34: + r91 = '__repr__' + r92 = CPyDict_SetItem(r73, r91, r90) + dec_ref r90 + r93 = r92 >= 0 :: signed + if not r93 goto L53 (error at :72) else goto L35 :: bool +L35: + r94 = to_0x_hex_HexBytes_obj() + if is_error(r94) goto L53 (error at :75) else goto L36 +L36: + r95 = 'to_0x_hex' + r96 = CPyDict_SetItem(r73, r95, r94) + dec_ref r94 + r97 = r96 >= 0 :: signed + if not r97 goto L53 (error at :75) else goto L37 :: bool +L37: + r98 = __reduce___HexBytes_obj() + if is_error(r98) goto L53 (error at :81) else goto L38 +L38: + r99 = '__reduce__' + r100 = CPyDict_SetItem(r73, r99, r98) + dec_ref r98 + r101 = r100 >= 0 :: signed + if not r101 goto L53 (error at :81) else goto L39 :: bool +L39: + r102 = 'HexBytes' + r103 = '__annotations__' + r104 = CPyDict_SetItem(r73, r103, r75) + dec_ref r75 + r105 = r104 >= 0 :: signed + if not r105 goto L52 (error at :37) else goto L40 :: bool +L40: + r106 = 'mypyc filler docstring' + r107 = '__doc__' + r108 = CPyDict_SetItem(r73, r107, r106) + r109 = r108 >= 0 :: signed + if not r109 goto L52 (error at :37) else goto L41 :: bool +L41: + r110 = 'faster_hexbytes.main' + r111 = '__module__' + r112 = CPyDict_SetItem(r73, r111, r110) + r113 = r112 >= 0 :: signed + if not r113 goto L52 (error at :37) else goto L42 :: bool +L42: + r114 = [r102, r61, r73] + r115 = load_address r114 + r116 = PyObject_Vectorcall(r63, r115, 3, 0) + if is_error(r116) goto L52 (error at :37) else goto L43 +L43: + dec_ref r73 + dec_ref r61 + r117 = faster_hexbytes.main.globals :: static + r118 = 'mypyc_attr' + r119 = CPyDict_GetItem(r117, r118) + if is_error(r119) goto L55 (error at :36) else goto L44 +L44: + r120 = box(bool, 0) + r121 = [r120] + r122 = load_address r121 + r123 = ('native_class',) + r124 = PyObject_Vectorcall(r119, r122, 0, r123) + dec_ref r119 + if is_error(r124) goto L55 (error at :36) else goto L45 +L45: + r125 = [r116] + r126 = load_address r125 + r127 = PyObject_Vectorcall(r124, r126, 1, 0) + dec_ref r124 + if is_error(r127) goto L55 (error at :37) else goto L46 +L46: + dec_ref r116 + faster_hexbytes.main.HexBytes = r127 :: type + r128 = faster_hexbytes.main.globals :: static + r129 = 'HexBytes' + r130 = PyDict_SetItem(r128, r129, r127) + dec_ref r127 + r131 = r130 >= 0 :: signed + if not r131 goto L48 (error at :37) else goto L47 :: bool +L47: + r132 = faster_hexbytes.main.HexBytes :: type + return 1 +L48: + r133 = :: None + return r133 +L49: + dec_ref r33 + goto L48 +L50: + dec_ref r33 + dec_ref r39 + goto L48 +L51: + dec_ref r61 + goto L48 +L52: + dec_ref r61 + dec_ref r73 + goto L48 +L53: + dec_ref r61 + dec_ref r73 + dec_ref r75 + goto L48 +L54: + dec_ref r61 + dec_ref r73 + dec_ref r75 + dec_ref r76 + goto L48 +L55: + dec_ref r116 + goto L48 + +def to_bytes(val): + val :: union[bytes, str, object, bool, int] + r0 :: bit + r1 :: bytes + r2 :: bit + r3 :: str + r4 :: bytes + r5 :: bit + r6 :: object + r7 :: object[1] + r8 :: object_ptr + r9 :: object + r10 :: bytes + r11 :: bit + r12 :: bool + r13, r14, r15 :: bytes + r16 :: bit + r17 :: int + r18 :: native_int + r19 :: bit + r20 :: native_int + r21, r22 :: bit + r23 :: bool + r24 :: bit + r25 :: str + r26 :: int + r27, r28, r29 :: str + r30 :: object + r31 :: str + r32 :: object + r33 :: object[1] + r34 :: object_ptr + r35 :: object + r36 :: int + r37 :: object + r38 :: str + r39, r40 :: object + r41 :: object[1] + r42 :: object_ptr + r43 :: object + r44 :: str + r45 :: bytes + r46 :: object + r47 :: str + r48 :: object + r49 :: i32 + r50 :: bit + r51 :: bool + r52 :: object + r53 :: object[1] + r54 :: object_ptr + r55 :: object + r56 :: bytes + r57, r58, r59, r60, r61 :: str + r62 :: object[3] + r63 :: object_ptr + r64 :: object + r65, r66 :: str + r67 :: object + r68, r69 :: str + r70 :: object[3] + r71 :: object_ptr + r72 :: object + r73 :: str + r74 :: list + r75, r76, r77, r78, r79, r80 :: ptr + r81 :: str + r82 :: object + r83 :: str + r84 :: object + r85 :: object[1] + r86 :: object_ptr + r87 :: object + r88 :: bytes +L0: + r0 = PyBytes_Check(val) + if r0 goto L1 else goto L3 :: bool +L1: + inc_ref val + r1 = cast(bytes, val) + if is_error(r1) goto L51 (error at to_bytes:19) else goto L2 +L2: + return r1 +L3: + r2 = PyUnicode_Check(val) + if r2 goto L4 else goto L7 :: bool +L4: + inc_ref val + r3 = cast(str, val) + if is_error(r3) goto L51 (error at to_bytes:21) else goto L5 +L5: + r4 = hexstr_to_bytes(r3) + dec_ref r3 + if is_error(r4) goto L51 (error at to_bytes:21) else goto L6 +L6: + return r4 +L7: + r5 = PyByteArray_Check(val) + if r5 goto L8 else goto L11 :: bool +L8: + r6 = load_address PyBytes_Type + r7 = [val] + r8 = load_address r7 + r9 = PyObject_Vectorcall(r6, r8, 1, 0) + if is_error(r9) goto L51 (error at to_bytes:23) else goto L9 +L9: + r10 = cast(bytes, r9) + if is_error(r10) goto L51 (error at to_bytes:23) else goto L10 +L10: + return r10 +L11: + r11 = PyBool_Check(val) + if r11 goto L12 else goto L17 :: bool +L12: + r12 = unbox(bool, val) + if is_error(r12) goto L51 (error at to_bytes:25) else goto L13 +L13: + if r12 goto L14 else goto L15 :: bool +L14: + r13 = b'\x01' + inc_ref r13 + r14 = r13 + goto L16 +L15: + r15 = b'\x00' + inc_ref r15 + r14 = r15 +L16: + return r14 +L17: + r16 = PyLong_Check(val) + if r16 goto L18 else goto L37 :: bool +L18: + r17 = unbox(int, val) + if is_error(r17) goto L51 (error at to_bytes:29) else goto L19 +L19: + r18 = r17 & 1 + r19 = r18 != 0 + if r19 goto L21 else goto L20 :: bool +L20: + r20 = 0 & 1 + r21 = r20 != 0 + if r21 goto L21 else goto L22 :: bool +L21: + r22 = CPyTagged_IsLt_(r17, 0) + r23 = r22 + goto L23 +L22: + r24 = r17 < 0 :: signed + r23 = r24 +L23: + dec_ref r17 :: int + if r23 goto L24 else goto L31 :: bool +L24: + r25 = 'Cannot convert negative integer ' + r26 = unbox(int, val) + if is_error(r26) goto L51 (error at to_bytes:30) else goto L25 +L25: + r27 = CPyTagged_Str(r26) + dec_ref r26 :: int + if is_error(r27) goto L51 (error at to_bytes:30) else goto L26 +L26: + r28 = ' to bytes' + r29 = CPyStr_Build(3, r25, r27, r28) + dec_ref r27 + if is_error(r29) goto L51 (error at to_bytes:30) else goto L27 +L27: + r30 = builtins :: module + r31 = 'ValueError' + r32 = CPyObject_GetAttr(r30, r31) + if is_error(r32) goto L52 (error at to_bytes:30) else goto L28 +L28: + r33 = [r29] + r34 = load_address r33 + r35 = PyObject_Vectorcall(r32, r34, 1, 0) + dec_ref r32 + if is_error(r35) goto L52 (error at to_bytes:30) else goto L29 +L29: + dec_ref r29 + CPy_Raise(r35) + dec_ref r35 + if not 0 goto L51 (error at to_bytes:30) else goto L30 :: bool +L30: + unreachable +L31: + r36 = unbox(int, val) + if is_error(r36) goto L51 (error at to_bytes:32) else goto L32 +L32: + r37 = builtins :: module + r38 = 'hex' + r39 = CPyObject_GetAttr(r37, r38) + if is_error(r39) goto L53 (error at to_bytes:32) else goto L33 +L33: + r40 = box(int, r36) + r41 = [r40] + r42 = load_address r41 + r43 = PyObject_Vectorcall(r39, r42, 1, 0) + dec_ref r39 + if is_error(r43) goto L54 (error at to_bytes:32) else goto L34 +L34: + dec_ref r40 + r44 = cast(str, r43) + if is_error(r44) goto L51 (error at to_bytes:32) else goto L35 +L35: + r45 = to_bytes(r44) + dec_ref r44 + if is_error(r45) goto L51 (error at to_bytes:32) else goto L36 +L36: + return r45 +L37: + r46 = builtins :: module + r47 = 'memoryview' + r48 = CPyObject_GetAttr(r46, r47) + if is_error(r48) goto L51 (error at to_bytes:33) else goto L38 +L38: + r49 = PyObject_IsInstance(val, r48) + dec_ref r48 + r50 = r49 >= 0 :: signed + if not r50 goto L51 (error at to_bytes:33) else goto L39 :: bool +L39: + r51 = truncate r49: i32 to builtins.bool + if r51 goto L40 else goto L43 :: bool +L40: + r52 = load_address PyBytes_Type + r53 = [val] + r54 = load_address r53 + r55 = PyObject_Vectorcall(r52, r54, 1, 0) + if is_error(r55) goto L51 (error at to_bytes:34) else goto L41 +L41: + r56 = cast(bytes, r55) + if is_error(r56) goto L51 (error at to_bytes:34) else goto L42 +L42: + return r56 +L43: + r57 = '' + r58 = 'Cannot convert ' + r59 = '{!r:{}}' + r60 = '' + r61 = 'format' + r62 = [r59, val, r60] + r63 = load_address r62 + r64 = PyObject_VectorcallMethod(r61, r63, 9223372036854775811, 0) + if is_error(r64) goto L51 (error at to_bytes:36) else goto L44 +L44: + r65 = ' of type ' + r66 = '{:{}}' + r67 = CPy_TYPE(val) + r68 = '' + r69 = 'format' + r70 = [r66, r67, r68] + r71 = load_address r70 + r72 = PyObject_VectorcallMethod(r69, r71, 9223372036854775811, 0) + if is_error(r72) goto L55 (error at to_bytes:36) else goto L45 +L45: + dec_ref r67 + r73 = ' to bytes' + r74 = PyList_New(5) + if is_error(r74) goto L56 (error at to_bytes:36) else goto L46 +L46: + r75 = get_element_ptr r74 ob_item :: PyListObject + r76 = load_mem r75 :: ptr* + inc_ref r58 + set_mem r76, r58 :: builtins.object* + r77 = r76 + 8 + set_mem r77, r64 :: builtins.object* + inc_ref r65 + r78 = r76 + 16 + set_mem r78, r65 :: builtins.object* + r79 = r76 + 24 + set_mem r79, r72 :: builtins.object* + inc_ref r73 + r80 = r76 + 32 + set_mem r80, r73 :: builtins.object* + r81 = PyUnicode_Join(r57, r74) + dec_ref r74 + if is_error(r81) goto L51 (error at to_bytes:36) else goto L47 +L47: + r82 = builtins :: module + r83 = 'TypeError' + r84 = CPyObject_GetAttr(r82, r83) + if is_error(r84) goto L57 (error at to_bytes:36) else goto L48 +L48: + r85 = [r81] + r86 = load_address r85 + r87 = PyObject_Vectorcall(r84, r86, 1, 0) + dec_ref r84 + if is_error(r87) goto L57 (error at to_bytes:36) else goto L49 +L49: + dec_ref r81 + CPy_Raise(r87) + dec_ref r87 + if not 0 goto L51 (error at to_bytes:36) else goto L50 :: bool +L50: + unreachable +L51: + r88 = :: bytes + return r88 +L52: + dec_ref r29 + goto L51 +L53: + dec_ref r36 :: int + goto L51 +L54: + dec_ref r40 + goto L51 +L55: + dec_ref r64 + dec_ref r67 + goto L51 +L56: + dec_ref r64 + dec_ref r72 + goto L51 +L57: + dec_ref r81 + goto L51 + +def hexstr_to_bytes(hexstr): + hexstr, r0, r1 :: str + r2 :: tuple[str, str] + r3 :: object + r4 :: bool + r5 :: object + r6, non_prefixed_hex :: str + r7 :: native_int + r8 :: bit + r9 :: short_int + r10 :: int + r11 :: bit + r12, r13, padded_hex :: str + r14 :: bytes + r15 :: tuple[object, object, object] + r16 :: object + r17 :: str + r18 :: object + r19 :: bit + r20, r21, r22 :: str + r23 :: object + r24 :: str + r25 :: object + r26 :: object[1] + r27 :: object_ptr + r28 :: object + r29 :: bit + r30 :: object + r31 :: bool + r32 :: object[1] + r33 :: object_ptr + r34 :: object + r35, r36 :: bytes +L0: + r0 = '0x' + r1 = '0X' + inc_ref r0 + inc_ref r1 + r2 = (r0, r1) + r3 = box(tuple[str, str], r2) + r4 = CPyStr_Startswith(hexstr, r3) + dec_ref r3 + if is_error(r4) goto L31 (error at hexstr_to_bytes:40) else goto L1 L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L48 (error at :-1) else goto L2 + if r4 goto L2 else goto L5 :: bool L2: - builtins = r4 :: module - dec_ref r4 + r5 = CPyStr_GetSlice(hexstr, 4, 9223372036854775806) + if is_error(r5) goto L31 (error at hexstr_to_bytes:41) else goto L3 L3: - r5 = ('TYPE_CHECKING', 'Callable', 'Final', 'Tuple', 'Type', 'Union', 'overload') - r6 = 'typing' - r7 = faster_hexbytes.main.globals :: static - r8 = CPyImport_ImportFromMany(r6, r5, r5, r7) - if is_error(r8) goto L48 (error at :1) else goto L4 + r6 = cast(str, r5) + if is_error(r6) goto L31 (error at hexstr_to_bytes:41) else goto L4 L4: - typing = r8 :: module - dec_ref r8 - r9 = load_address hexbytes.main :: module - r10 = [r9] - r11 = load_address r10 - r12 = [14] - r13 = load_address r12 - r14 = (('hexbytes.main', 'hexbytes.main', 'hexbytes'),) - r15 = faster_hexbytes.main.globals :: static - r16 = 'faster_hexbytes/main.py' - r17 = '' - r18 = CPyImport_ImportMany(r14, r11, r15, r16, r17, r13) - if not r18 goto L48 else goto L5 :: bool + non_prefixed_hex = r6 + goto L6 L5: - r19 = ('mypyc_attr',) - r20 = 'mypy_extensions' - r21 = faster_hexbytes.main.globals :: static - r22 = CPyImport_ImportFromMany(r20, r19, r19, r21) - if is_error(r22) goto L48 (error at :15) else goto L6 + inc_ref hexstr + non_prefixed_hex = hexstr L6: - mypy_extensions = r22 :: module - dec_ref r22 - r23 = ('Self',) - r24 = 'typing_extensions' - r25 = faster_hexbytes.main.globals :: static - r26 = CPyImport_ImportFromMany(r24, r23, r23, r25) - if is_error(r26) goto L48 (error at :18) else goto L7 + r7 = CPyStr_Size_size_t(hexstr) + r8 = r7 >= 0 :: signed + if not r8 goto L32 (error at hexstr_to_bytes:46) else goto L7 :: bool L7: - typing_extensions = r26 :: module - dec_ref r26 - r27 = ('to_bytes',) - r28 = 'faster_hexbytes._utils' - r29 = faster_hexbytes.main.globals :: static - r30 = CPyImport_ImportFromMany(r28, r27, r27, r29) - if is_error(r30) goto L48 (error at :22) else goto L8 + r9 = r7 << 1 + r10 = CPyTagged_Remainder(r9, 4) + if is_error(r10) goto L32 (error at hexstr_to_bytes:46) else goto L8 L8: - faster_hexbytes._utils = r30 :: module - dec_ref r30 - if 0 goto L9 else goto L9 :: bool + r11 = r10 != 0 + dec_ref r10 :: int + if r11 goto L9 else goto L11 :: bool L9: - r31 = faster_hexbytes.main.globals :: static - r32 = 'Union' - r33 = CPyDict_GetItem(r31, r32) - if is_error(r33) goto L48 (error at :31) else goto L10 + r12 = '0' + r13 = PyUnicode_Concat(r12, non_prefixed_hex) + dec_ref non_prefixed_hex + if is_error(r13) goto L31 (error at hexstr_to_bytes:47) else goto L10 L10: - r34 = load_address PyBytes_Type - r35 = load_address PyUnicode_Type - r36 = load_address PyBool_Type - r37 = builtins :: module - r38 = 'bytearray' - r39 = CPyObject_GetAttr(r37, r38) - if is_error(r39) goto L49 (error at :31) else goto L11 + padded_hex = r13 + goto L12 L11: - r40 = load_address PyLong_Type - r41 = builtins :: module - r42 = 'memoryview' - r43 = CPyObject_GetAttr(r41, r42) - if is_error(r43) goto L50 (error at :31) else goto L12 + padded_hex = non_prefixed_hex L12: - inc_ref r34 - inc_ref r35 - inc_ref r36 - inc_ref r40 - r44 = (r34, r35, r36, r39, r40, r43) - r45 = box(tuple[object, object, object, object, object, object], r44) - r46 = PyObject_GetItem(r33, r45) - dec_ref r33 - dec_ref r45 - if is_error(r46) goto L48 (error at :31) else goto L13 + r14 = PyUnicode_AsASCIIString(padded_hex) + if is_error(r14) goto L14 (error at hexstr_to_bytes:52) else goto L33 L13: - r47 = faster_hexbytes.main.globals :: static - r48 = 'BytesLike' - r49 = CPyDict_SetItem(r47, r48, r46) - dec_ref r46 - r50 = r49 >= 0 :: signed - if not r50 goto L48 (error at :31) else goto L14 :: bool + goto L25 L14: - r51 = load_address PyBytes_Type - r52 = '__new__' - r53 = CPyObject_GetAttr(r51, r52) - if is_error(r53) goto L48 (error at :33) else goto L15 + r15 = CPy_CatchError() + r16 = builtins :: module + r17 = 'UnicodeDecodeError' + r18 = CPyObject_GetAttr(r16, r17) + if is_error(r18) goto L34 (error at hexstr_to_bytes:53) else goto L15 L15: - faster_hexbytes.main._bytes_new = r53 :: static - r54 = faster_hexbytes.main.globals :: static - r55 = '_bytes_new' - r56 = CPyDict_SetItem(r54, r55, r53) - dec_ref r53 - r57 = r56 >= 0 :: signed - if not r57 goto L48 (error at :33) else goto L16 :: bool + r19 = CPy_ExceptionMatches(r18) + dec_ref r18 + if r19 goto L16 else goto L35 :: bool L16: - r58 = hexbytes.main :: module - r59 = 'HexBytes' - r60 = CPyObject_GetAttr(r58, r59) - if is_error(r60) goto L48 (error at :37) else goto L17 + r20 = 'hex string ' + r21 = ' may only contain [0-9a-fA-F] characters' + r22 = CPyStr_Build(3, r20, padded_hex, r21) + dec_ref padded_hex + if is_error(r22) goto L23 (error at hexstr_to_bytes:55) else goto L17 L17: - r61 = PyTuple_Pack(1, r60) - dec_ref r60 - if is_error(r61) goto L48 (error at :37) else goto L18 + r23 = builtins :: module + r24 = 'ValueError' + r25 = CPyObject_GetAttr(r23, r24) + if is_error(r25) goto L36 (error at hexstr_to_bytes:54) else goto L18 L18: - r62 = load_address PyType_Type - r63 = CPy_CalculateMetaclass(r62, r61) - if is_error(r63) goto L51 (error at :37) else goto L19 + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L36 (error at hexstr_to_bytes:54) else goto L19 L19: - r64 = '__prepare__' - r65 = PyObject_HasAttr(r63, r64) - if r65 goto L20 else goto L24 :: bool + dec_ref r22 + CPy_Raise(r28) + dec_ref r28 + if not 0 goto L23 (error at hexstr_to_bytes:54) else goto L37 :: bool L20: - r66 = 'HexBytes' - r67 = '__prepare__' - r68 = CPyObject_GetAttr(r63, r67) - if is_error(r68) goto L51 (error at :37) else goto L21 -L21: - r69 = [r66, r61] - r70 = load_address r69 - r71 = PyObject_Vectorcall(r68, r70, 2, 0) - dec_ref r68 - if is_error(r71) goto L51 (error at :37) else goto L22 + unreachable +L21: + CPy_Reraise() + if not 0 goto L23 else goto L38 :: bool L22: - r72 = cast(dict, r71) - if is_error(r72) goto L51 (error at :37) else goto L23 + unreachable L23: - r73 = r72 - goto L26 + CPy_RestoreExcInfo(r15) + dec_ref r15 + r29 = CPy_KeepPropagating() + if not r29 goto L31 else goto L24 :: bool L24: - r74 = PyDict_New() - if is_error(r74) goto L51 (error at :37) else goto L25 + unreachable L25: - r73 = r74 + r30 = faster_hexbytes._utils.unhexlify :: static + if is_error(r30) goto L39 else goto L28 L26: - r75 = PyDict_New() - if is_error(r75) goto L52 (error at :37) else goto L27 + r31 = raise NameError('value for final name "unhexlify" was not set') + if not r31 goto L31 (error at hexstr_to_bytes:58) else goto L27 :: bool L27: - r76 = __new___HexBytes_obj() - if is_error(r76) goto L53 (error at :48) else goto L28 + unreachable L28: - r77 = builtins :: module - r78 = 'staticmethod' - r79 = CPyObject_GetAttr(r77, r78) - if is_error(r79) goto L54 (error at :48) else goto L29 + r32 = [r14] + r33 = load_address r32 + r34 = PyObject_Vectorcall(r30, r33, 1, 0) + if is_error(r34) goto L40 (error at hexstr_to_bytes:58) else goto L29 L29: - r80 = [r76] - r81 = load_address r80 - r82 = PyObject_Vectorcall(r79, r81, 1, 0) - dec_ref r79 - if is_error(r82) goto L54 (error at :48) else goto L30 + dec_ref r14 + r35 = cast(bytes, r34) + if is_error(r35) goto L31 (error at hexstr_to_bytes:58) else goto L30 L30: - dec_ref r76 - r83 = '__new__' - r84 = CPyDict_SetItem(r73, r83, r82) - dec_ref r82 - r85 = r84 >= 0 :: signed - if not r85 goto L53 (error at :48) else goto L31 :: bool + return r35 L31: - r86 = __getitem___HexBytes_obj() - if is_error(r86) goto L53 (error at :60) else goto L32 + r36 = :: bytes + return r36 L32: - r87 = '__getitem__' - r88 = CPyDict_SetItem(r73, r87, r86) - dec_ref r86 - r89 = r88 >= 0 :: signed - if not r89 goto L53 (error at :60) else goto L33 :: bool + dec_ref non_prefixed_hex + goto L31 L33: - r90 = __repr___HexBytes_obj() - if is_error(r90) goto L53 (error at :72) else goto L34 + dec_ref padded_hex + goto L13 L34: - r91 = '__repr__' - r92 = CPyDict_SetItem(r73, r91, r90) - dec_ref r90 - r93 = r92 >= 0 :: signed - if not r93 goto L53 (error at :72) else goto L35 :: bool + dec_ref padded_hex + goto L23 L35: - r94 = to_0x_hex_HexBytes_obj() - if is_error(r94) goto L53 (error at :75) else goto L36 + dec_ref padded_hex + goto L21 L36: - r95 = 'to_0x_hex' - r96 = CPyDict_SetItem(r73, r95, r94) - dec_ref r94 - r97 = r96 >= 0 :: signed - if not r97 goto L53 (error at :75) else goto L37 :: bool + dec_ref r22 + goto L23 L37: - r98 = __reduce___HexBytes_obj() - if is_error(r98) goto L53 (error at :81) else goto L38 + dec_ref r15 + goto L20 L38: - r99 = '__reduce__' - r100 = CPyDict_SetItem(r73, r99, r98) - dec_ref r98 - r101 = r100 >= 0 :: signed - if not r101 goto L53 (error at :81) else goto L39 :: bool + dec_ref r15 + goto L22 L39: - r102 = 'HexBytes' - r103 = '__annotations__' - r104 = CPyDict_SetItem(r73, r103, r75) - dec_ref r75 - r105 = r104 >= 0 :: signed - if not r105 goto L52 (error at :37) else goto L40 :: bool + dec_ref r14 + goto L26 L40: - r106 = 'mypyc filler docstring' - r107 = '__doc__' - r108 = CPyDict_SetItem(r73, r107, r106) - r109 = r108 >= 0 :: signed - if not r109 goto L52 (error at :37) else goto L41 :: bool -L41: - r110 = 'faster_hexbytes.main' - r111 = '__module__' - r112 = CPyDict_SetItem(r73, r111, r110) - r113 = r112 >= 0 :: signed - if not r113 goto L52 (error at :37) else goto L42 :: bool -L42: - r114 = [r102, r61, r73] - r115 = load_address r114 - r116 = PyObject_Vectorcall(r63, r115, 3, 0) - if is_error(r116) goto L52 (error at :37) else goto L43 -L43: - dec_ref r73 - dec_ref r61 - r117 = faster_hexbytes.main.globals :: static - r118 = 'mypyc_attr' - r119 = CPyDict_GetItem(r117, r118) - if is_error(r119) goto L55 (error at :36) else goto L44 -L44: - r120 = box(bool, 0) - r121 = [r120] - r122 = load_address r121 - r123 = ('native_class',) - r124 = PyObject_Vectorcall(r119, r122, 0, r123) - dec_ref r119 - if is_error(r124) goto L55 (error at :36) else goto L45 -L45: - r125 = [r116] - r126 = load_address r125 - r127 = PyObject_Vectorcall(r124, r126, 1, 0) - dec_ref r124 - if is_error(r127) goto L55 (error at :37) else goto L46 -L46: - dec_ref r116 - faster_hexbytes.main.HexBytes = r127 :: type - r128 = faster_hexbytes.main.globals :: static - r129 = 'HexBytes' - r130 = PyDict_SetItem(r128, r129, r127) - dec_ref r127 - r131 = r130 >= 0 :: signed - if not r131 goto L48 (error at :37) else goto L47 :: bool -L47: - r132 = faster_hexbytes.main.HexBytes :: type + dec_ref r14 + goto L31 + +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4 :: object + r5 :: object_ptr + r6 :: object_ptr[1] + r7 :: c_ptr + r8 :: native_int[1] + r9 :: c_ptr + r10 :: object + r11 :: dict + r12, r13 :: str + r14 :: bit + r15 :: object + r16 :: str + r17 :: dict + r18, r19 :: object + r20 :: str + r21 :: object + r22 :: dict + r23 :: str + r24 :: i32 + r25 :: bit + r26 :: None +L0: + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool +L1: + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L8 (error at :-1) else goto L2 +L2: + builtins = r4 :: module + dec_ref r4 +L3: + r5 = load_address binascii :: module + r6 = [r5] + r7 = load_address r6 + r8 = [1] + r9 = load_address r8 + r10 = (('binascii', 'binascii', 'binascii'),) + r11 = faster_hexbytes._utils.globals :: static + r12 = 'faster_hexbytes/_utils.py' + r13 = '' + r14 = CPyImport_ImportMany(r10, r7, r11, r12, r13, r9) + if not r14 goto L8 else goto L4 :: bool +L4: + r15 = ('Final', 'Union') + r16 = 'typing' + r17 = faster_hexbytes._utils.globals :: static + r18 = CPyImport_ImportFromMany(r16, r15, r15, r17) + if is_error(r18) goto L8 (error at :2) else goto L5 +L5: + typing = r18 :: module + dec_ref r18 + r19 = binascii :: module + r20 = 'unhexlify' + r21 = CPyObject_GetAttr(r19, r20) + if is_error(r21) goto L8 (error at :8) else goto L6 +L6: + faster_hexbytes._utils.unhexlify = r21 :: static + r22 = faster_hexbytes._utils.globals :: static + r23 = 'unhexlify' + r24 = CPyDict_SetItem(r22, r23, r21) + dec_ref r21 + r25 = r24 >= 0 :: signed + if not r25 goto L8 (error at :8) else goto L7 :: bool +L7: return 1 -L48: - r133 = :: None - return r133 -L49: - dec_ref r33 - goto L48 -L50: - dec_ref r33 - dec_ref r39 - goto L48 -L51: - dec_ref r61 - goto L48 -L52: - dec_ref r61 - dec_ref r73 - goto L48 -L53: - dec_ref r61 - dec_ref r73 - dec_ref r75 - goto L48 -L54: - dec_ref r61 - dec_ref r73 - dec_ref r75 - dec_ref r76 - goto L48 -L55: - dec_ref r116 - goto L48 +L8: + r26 = :: None + return r26 From cbdcc533d3d74a4d0b6cc3df4a11090839910dc4 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Tue, 30 Sep 2025 02:26:36 -0400 Subject: [PATCH 32/98] Update benchmark.yaml --- .github/workflows/benchmark.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml index 50a0b8e..ba11d9d 100644 --- a/.github/workflows/benchmark.yaml +++ b/.github/workflows/benchmark.yaml @@ -26,6 +26,8 @@ jobs: python -m pip install --upgrade pip pip install .[dev] pip install pytest-codspeed pytest-benchmark hexbytes + - name: Remove Python files from test env + run: rm -r faster_hexbytes - name: Run Pytest Benchmark & Save Output run: pytest --benchmark-only --benchmark-json=benchmark.json benchmarks/ - name: Upload Pytest Benchmark Results From 735b8d27a51f52a09417f49b2d316d25cfa8e57e Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Tue, 30 Sep 2025 02:27:05 -0400 Subject: [PATCH 33/98] Update codspeed.yaml --- .github/workflows/codspeed.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/codspeed.yaml b/.github/workflows/codspeed.yaml index 505921c..6448073 100644 --- a/.github/workflows/codspeed.yaml +++ b/.github/workflows/codspeed.yaml @@ -24,8 +24,9 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install .[dev] - pip install pytest-codspeed hexbytes + pip install .[dev] pytest-codspeed + - name: Remove Python files from test env + run: rm -r faster_hexbytes - name: Run CodSpeed uses: CodSpeedHQ/action@v3 with: From 020f06daad2b08793ebe18de402668b1bb32ed9f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 30 Sep 2025 06:27:31 +0000 Subject: [PATCH 34/98] chore: compile C files for source control --- build/ops.txt | 2458 ++++++++++++++++++++++++------------------------- 1 file changed, 1229 insertions(+), 1229 deletions(-) diff --git a/build/ops.txt b/build/ops.txt index a8ead04..5ed32ca 100644 --- a/build/ops.txt +++ b/build/ops.txt @@ -101,326 +101,644 @@ L12: r34 = :: None return r34 -def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __new___HexBytes_obj.__call__(__mypyc_self__, cls, val): - __mypyc_self__ :: faster_hexbytes.main.__new___HexBytes_obj - cls :: object - val :: union[bytes, str, bool, object, int] - r0 :: bytes - r1 :: object - r2 :: bool - r3 :: object[2] - r4 :: object_ptr - r5 :: object - r6, r7 :: faster_hexbytes.main.HexBytes -L0: - r0 = to_bytes(val) - if is_error(r0) goto L7 (error at __new__:49) else goto L1 -L1: - r1 = faster_hexbytes.main._bytes_new :: static - if is_error(r1) goto L8 else goto L4 -L2: - r2 = raise NameError('value for final name "_bytes_new" was not set') - if not r2 goto L7 (error at __new__:50) else goto L3 :: bool -L3: - unreachable -L4: - r3 = [cls, r0] - r4 = load_address r3 - r5 = PyObject_Vectorcall(r1, r4, 2, 0) - if is_error(r5) goto L9 (error at __new__:50) else goto L5 -L5: - dec_ref r0 - r6 = cast(faster_hexbytes.main.HexBytes, r5) - if is_error(r6) goto L7 (error at __new__:50) else goto L6 -L6: - return r6 -L7: - r7 = :: faster_hexbytes.main.HexBytes - return r7 -L8: - dec_ref r0 - goto L2 -L9: - dec_ref r0 - goto L7 - -def __getitem___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __getitem___HexBytes_obj.__call__(__mypyc_self__, self, key): - __mypyc_self__ :: faster_hexbytes.main.__getitem___HexBytes_obj - self :: faster_hexbytes.main.HexBytes - key, r0 :: object - r1 :: str - r2 :: object[3] - r3 :: object_ptr - r4 :: object - r5 :: union[int, bytes] - r6 :: bit - r7 :: int - r8, r9, r10 :: object +def to_bytes(val): + val :: union[bytes, str, object, bool, int] + r0 :: bit + r1 :: bytes + r2 :: bit + r3 :: str + r4 :: bytes + r5 :: bit + r6 :: object + r7 :: object[1] + r8 :: object_ptr + r9 :: object + r10 :: bytes r11 :: bit - r12 :: bytes - r13 :: object - r14 :: object[1] - r15 :: object_ptr - r16 :: object - r17 :: faster_hexbytes.main.HexBytes - r18 :: bytes - r19 :: object[1] - r20 :: object_ptr - r21 :: object - r22 :: faster_hexbytes.main.HexBytes - r23 :: union[int, faster_hexbytes.main.HexBytes] + r12 :: bool + r13, r14, r15 :: bytes + r16 :: bit + r17 :: int + r18 :: native_int + r19 :: bit + r20 :: native_int + r21, r22 :: bit + r23 :: bool + r24 :: bit + r25 :: str + r26 :: int + r27, r28, r29 :: str + r30 :: object + r31 :: str + r32 :: object + r33 :: object[1] + r34 :: object_ptr + r35 :: object + r36 :: int + r37 :: object + r38 :: str + r39, r40 :: object + r41 :: object[1] + r42 :: object_ptr + r43 :: object + r44 :: str + r45 :: bytes + r46 :: object + r47 :: str + r48 :: object + r49 :: i32 + r50 :: bit + r51 :: bool + r52 :: object + r53 :: object[1] + r54 :: object_ptr + r55 :: object + r56 :: bytes + r57, r58, r59, r60, r61 :: str + r62 :: object[3] + r63 :: object_ptr + r64 :: object + r65, r66 :: str + r67 :: object + r68, r69 :: str + r70 :: object[3] + r71 :: object_ptr + r72 :: object + r73 :: str + r74 :: list + r75, r76, r77, r78, r79, r80 :: ptr + r81 :: str + r82 :: object + r83 :: str + r84 :: object + r85 :: object[1] + r86 :: object_ptr + r87 :: object + r88 :: bytes L0: - r0 = load_address PyBytes_Type - r1 = '__getitem__' - r2 = [r0, self, key] - r3 = load_address r2 - r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775811, 0) - if is_error(r4) goto L14 (error at __getitem__:63) else goto L1 + r0 = PyBytes_Check(val) + if r0 goto L1 else goto L3 :: bool L1: - r5 = cast(union[int, bytes], r4) - if is_error(r5) goto L14 (error at __getitem__:63) else goto L2 + inc_ref val + r1 = cast(bytes, val) + if is_error(r1) goto L51 (error at to_bytes:19) else goto L2 L2: - r6 = PyLong_Check(r5) - if r6 goto L3 else goto L5 :: bool + return r1 L3: - r7 = unbox(int, r5) - dec_ref r5 - if is_error(r7) goto L14 (error at __getitem__:65) else goto L4 + r2 = PyUnicode_Check(val) + if r2 goto L4 else goto L7 :: bool L4: - r8 = box(int, r7) - return r8 + inc_ref val + r3 = cast(str, val) + if is_error(r3) goto L51 (error at to_bytes:21) else goto L5 L5: - r9 = CPy_TYPE(self) - r10 = faster_hexbytes.main.HexBytes :: type - r11 = r9 == r10 - if r11 goto L15 else goto L10 :: bool + r4 = hexstr_to_bytes(r3) + dec_ref r3 + if is_error(r4) goto L51 (error at to_bytes:21) else goto L6 L6: - r12 = cast(bytes, r5) - if is_error(r12) goto L14 (error at __getitem__:69) else goto L7 + return r4 L7: - r13 = faster_hexbytes.main.HexBytes :: type - r14 = [r12] - r15 = load_address r14 - r16 = PyObject_Vectorcall(r13, r15, 1, 0) - if is_error(r16) goto L16 (error at __getitem__:69) else goto L8 + r5 = PyByteArray_Check(val) + if r5 goto L8 else goto L11 :: bool L8: - dec_ref r12 - r17 = cast(faster_hexbytes.main.HexBytes, r16) - if is_error(r17) goto L14 (error at __getitem__:69) else goto L9 + r6 = load_address PyBytes_Type + r7 = [val] + r8 = load_address r7 + r9 = PyObject_Vectorcall(r6, r8, 1, 0) + if is_error(r9) goto L51 (error at to_bytes:23) else goto L9 L9: - return r17 + r10 = cast(bytes, r9) + if is_error(r10) goto L51 (error at to_bytes:23) else goto L10 L10: - r18 = cast(bytes, r5) - if is_error(r18) goto L17 (error at __getitem__:70) else goto L11 + return r10 L11: - r19 = [r18] - r20 = load_address r19 - r21 = PyObject_Vectorcall(r9, r20, 1, 0) - dec_ref r9 - if is_error(r21) goto L18 (error at __getitem__:70) else goto L12 + r11 = PyBool_Check(val) + if r11 goto L12 else goto L17 :: bool L12: - dec_ref r18 - r22 = cast(faster_hexbytes.main.HexBytes, r21) - if is_error(r22) goto L14 (error at __getitem__:70) else goto L13 + r12 = unbox(bool, val) + if is_error(r12) goto L51 (error at to_bytes:25) else goto L13 L13: - return r22 + if r12 goto L14 else goto L15 :: bool L14: - r23 = :: union[int, faster_hexbytes.main.HexBytes] - return r23 -L15: - dec_ref r9 - goto L6 + r13 = b'\x01' + inc_ref r13 + r14 = r13 + goto L16 +L15: + r15 = b'\x00' + inc_ref r15 + r14 = r15 L16: - dec_ref r12 - goto L14 + return r14 L17: - dec_ref r9 - goto L14 + r16 = PyLong_Check(val) + if r16 goto L18 else goto L37 :: bool L18: - dec_ref r18 - goto L14 + r17 = unbox(int, val) + if is_error(r17) goto L51 (error at to_bytes:29) else goto L19 +L19: + r18 = r17 & 1 + r19 = r18 != 0 + if r19 goto L21 else goto L20 :: bool +L20: + r20 = 0 & 1 + r21 = r20 != 0 + if r21 goto L21 else goto L22 :: bool +L21: + r22 = CPyTagged_IsLt_(r17, 0) + r23 = r22 + goto L23 +L22: + r24 = r17 < 0 :: signed + r23 = r24 +L23: + dec_ref r17 :: int + if r23 goto L24 else goto L31 :: bool +L24: + r25 = 'Cannot convert negative integer ' + r26 = unbox(int, val) + if is_error(r26) goto L51 (error at to_bytes:30) else goto L25 +L25: + r27 = CPyTagged_Str(r26) + dec_ref r26 :: int + if is_error(r27) goto L51 (error at to_bytes:30) else goto L26 +L26: + r28 = ' to bytes' + r29 = CPyStr_Build(3, r25, r27, r28) + dec_ref r27 + if is_error(r29) goto L51 (error at to_bytes:30) else goto L27 +L27: + r30 = builtins :: module + r31 = 'ValueError' + r32 = CPyObject_GetAttr(r30, r31) + if is_error(r32) goto L52 (error at to_bytes:30) else goto L28 +L28: + r33 = [r29] + r34 = load_address r33 + r35 = PyObject_Vectorcall(r32, r34, 1, 0) + dec_ref r32 + if is_error(r35) goto L52 (error at to_bytes:30) else goto L29 +L29: + dec_ref r29 + CPy_Raise(r35) + dec_ref r35 + if not 0 goto L51 (error at to_bytes:30) else goto L30 :: bool +L30: + unreachable +L31: + r36 = unbox(int, val) + if is_error(r36) goto L51 (error at to_bytes:32) else goto L32 +L32: + r37 = builtins :: module + r38 = 'hex' + r39 = CPyObject_GetAttr(r37, r38) + if is_error(r39) goto L53 (error at to_bytes:32) else goto L33 +L33: + r40 = box(int, r36) + r41 = [r40] + r42 = load_address r41 + r43 = PyObject_Vectorcall(r39, r42, 1, 0) + dec_ref r39 + if is_error(r43) goto L54 (error at to_bytes:32) else goto L34 +L34: + dec_ref r40 + r44 = cast(str, r43) + if is_error(r44) goto L51 (error at to_bytes:32) else goto L35 +L35: + r45 = to_bytes(r44) + dec_ref r44 + if is_error(r45) goto L51 (error at to_bytes:32) else goto L36 +L36: + return r45 +L37: + r46 = builtins :: module + r47 = 'memoryview' + r48 = CPyObject_GetAttr(r46, r47) + if is_error(r48) goto L51 (error at to_bytes:33) else goto L38 +L38: + r49 = PyObject_IsInstance(val, r48) + dec_ref r48 + r50 = r49 >= 0 :: signed + if not r50 goto L51 (error at to_bytes:33) else goto L39 :: bool +L39: + r51 = truncate r49: i32 to builtins.bool + if r51 goto L40 else goto L43 :: bool +L40: + r52 = load_address PyBytes_Type + r53 = [val] + r54 = load_address r53 + r55 = PyObject_Vectorcall(r52, r54, 1, 0) + if is_error(r55) goto L51 (error at to_bytes:34) else goto L41 +L41: + r56 = cast(bytes, r55) + if is_error(r56) goto L51 (error at to_bytes:34) else goto L42 +L42: + return r56 +L43: + r57 = '' + r58 = 'Cannot convert ' + r59 = '{!r:{}}' + r60 = '' + r61 = 'format' + r62 = [r59, val, r60] + r63 = load_address r62 + r64 = PyObject_VectorcallMethod(r61, r63, 9223372036854775811, 0) + if is_error(r64) goto L51 (error at to_bytes:36) else goto L44 +L44: + r65 = ' of type ' + r66 = '{:{}}' + r67 = CPy_TYPE(val) + r68 = '' + r69 = 'format' + r70 = [r66, r67, r68] + r71 = load_address r70 + r72 = PyObject_VectorcallMethod(r69, r71, 9223372036854775811, 0) + if is_error(r72) goto L55 (error at to_bytes:36) else goto L45 +L45: + dec_ref r67 + r73 = ' to bytes' + r74 = PyList_New(5) + if is_error(r74) goto L56 (error at to_bytes:36) else goto L46 +L46: + r75 = get_element_ptr r74 ob_item :: PyListObject + r76 = load_mem r75 :: ptr* + inc_ref r58 + set_mem r76, r58 :: builtins.object* + r77 = r76 + 8 + set_mem r77, r64 :: builtins.object* + inc_ref r65 + r78 = r76 + 16 + set_mem r78, r65 :: builtins.object* + r79 = r76 + 24 + set_mem r79, r72 :: builtins.object* + inc_ref r73 + r80 = r76 + 32 + set_mem r80, r73 :: builtins.object* + r81 = PyUnicode_Join(r57, r74) + dec_ref r74 + if is_error(r81) goto L51 (error at to_bytes:36) else goto L47 +L47: + r82 = builtins :: module + r83 = 'TypeError' + r84 = CPyObject_GetAttr(r82, r83) + if is_error(r84) goto L57 (error at to_bytes:36) else goto L48 +L48: + r85 = [r81] + r86 = load_address r85 + r87 = PyObject_Vectorcall(r84, r86, 1, 0) + dec_ref r84 + if is_error(r87) goto L57 (error at to_bytes:36) else goto L49 +L49: + dec_ref r81 + CPy_Raise(r87) + dec_ref r87 + if not 0 goto L51 (error at to_bytes:36) else goto L50 :: bool +L50: + unreachable +L51: + r88 = :: bytes + return r88 +L52: + dec_ref r29 + goto L51 +L53: + dec_ref r36 :: int + goto L51 +L54: + dec_ref r40 + goto L51 +L55: + dec_ref r64 + dec_ref r67 + goto L51 +L56: + dec_ref r64 + dec_ref r72 + goto L51 +L57: + dec_ref r81 + goto L51 -def __repr___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object +def hexstr_to_bytes(hexstr): + hexstr, r0, r1 :: str + r2 :: tuple[str, str] + r3 :: object + r4 :: bool + r5 :: object + r6, non_prefixed_hex :: str + r7 :: native_int + r8 :: bit + r9 :: short_int + r10 :: int + r11 :: bit + r12, r13, padded_hex :: str + r14 :: bytes + r15 :: tuple[object, object, object] + r16 :: object + r17 :: str + r18 :: object + r19 :: bit + r20, r21, r22 :: str + r23 :: object + r24 :: str + r25 :: object + r26 :: object[1] + r27 :: object_ptr + r28 :: object + r29 :: bit + r30 :: object + r31 :: bool + r32 :: object[1] + r33 :: object_ptr + r34 :: object + r35, r36 :: bytes L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool + r0 = '0x' + r1 = '0X' + inc_ref r0 + inc_ref r1 + r2 = (r0, r1) + r3 = box(tuple[str, str], r2) + r4 = CPyStr_Startswith(hexstr, r3) + dec_ref r3 + if is_error(r4) goto L31 (error at hexstr_to_bytes:40) else goto L1 L1: - inc_ref __mypyc_self__ - return __mypyc_self__ + if r4 goto L2 else goto L5 :: bool L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __repr___HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.__repr___HexBytes_obj - self :: faster_hexbytes.main.HexBytes - r0, r1, r2, r3, r4 :: str - r5 :: object[1] - r6 :: object_ptr - r7 :: object - r8, r9, r10, r11 :: str - r12 :: object[3] - r13 :: object_ptr - r14 :: object - r15, r16 :: str - r17 :: list - r18, r19, r20, r21 :: ptr - r22, r23 :: str -L0: - r0 = '' - r1 = 'HexBytes(' - r2 = '{!r:{}}' - r3 = '0x' - r4 = 'hex' - r5 = [self] - r6 = load_address r5 - r7 = PyObject_VectorcallMethod(r4, r6, 9223372036854775809, 0) - if is_error(r7) goto L8 (error at __repr__:73) else goto L1 -L1: - r8 = cast(str, r7) - if is_error(r8) goto L8 (error at __repr__:73) else goto L2 -L2: - r9 = PyUnicode_Concat(r3, r8) - dec_ref r8 - if is_error(r9) goto L8 (error at __repr__:73) else goto L3 + r5 = CPyStr_GetSlice(hexstr, 4, 9223372036854775806) + if is_error(r5) goto L31 (error at hexstr_to_bytes:41) else goto L3 L3: - r10 = '' - r11 = 'format' - r12 = [r2, r9, r10] - r13 = load_address r12 - r14 = PyObject_VectorcallMethod(r11, r13, 9223372036854775811, 0) - if is_error(r14) goto L9 (error at __repr__:73) else goto L4 + r6 = cast(str, r5) + if is_error(r6) goto L31 (error at hexstr_to_bytes:41) else goto L4 L4: - dec_ref r9 - r15 = cast(str, r14) - if is_error(r15) goto L8 (error at __repr__:73) else goto L5 + non_prefixed_hex = r6 + goto L6 L5: - r16 = ')' - r17 = PyList_New(3) - if is_error(r17) goto L10 (error at __repr__:73) else goto L6 + inc_ref hexstr + non_prefixed_hex = hexstr L6: - r18 = get_element_ptr r17 ob_item :: PyListObject - r19 = load_mem r18 :: ptr* - inc_ref r1 - set_mem r19, r1 :: builtins.object* - r20 = r19 + 8 - set_mem r20, r15 :: builtins.object* - inc_ref r16 - r21 = r19 + 16 - set_mem r21, r16 :: builtins.object* - r22 = PyUnicode_Join(r0, r17) - dec_ref r17 - if is_error(r22) goto L8 (error at __repr__:73) else goto L7 + r7 = CPyStr_Size_size_t(hexstr) + r8 = r7 >= 0 :: signed + if not r8 goto L32 (error at hexstr_to_bytes:46) else goto L7 :: bool L7: - return r22 + r9 = r7 << 1 + r10 = CPyTagged_Remainder(r9, 4) + if is_error(r10) goto L32 (error at hexstr_to_bytes:46) else goto L8 L8: - r23 = :: str - return r23 + r11 = r10 != 0 + dec_ref r10 :: int + if r11 goto L9 else goto L11 :: bool L9: - dec_ref r9 - goto L8 + r12 = '0' + r13 = PyUnicode_Concat(r12, non_prefixed_hex) + dec_ref non_prefixed_hex + if is_error(r13) goto L31 (error at hexstr_to_bytes:47) else goto L10 L10: + padded_hex = r13 + goto L12 +L11: + padded_hex = non_prefixed_hex +L12: + r14 = PyUnicode_AsASCIIString(padded_hex) + if is_error(r14) goto L14 (error at hexstr_to_bytes:52) else goto L33 +L13: + goto L25 +L14: + r15 = CPy_CatchError() + r16 = builtins :: module + r17 = 'UnicodeDecodeError' + r18 = CPyObject_GetAttr(r16, r17) + if is_error(r18) goto L34 (error at hexstr_to_bytes:53) else goto L15 +L15: + r19 = CPy_ExceptionMatches(r18) + dec_ref r18 + if r19 goto L16 else goto L35 :: bool +L16: + r20 = 'hex string ' + r21 = ' may only contain [0-9a-fA-F] characters' + r22 = CPyStr_Build(3, r20, padded_hex, r21) + dec_ref padded_hex + if is_error(r22) goto L23 (error at hexstr_to_bytes:55) else goto L17 +L17: + r23 = builtins :: module + r24 = 'ValueError' + r25 = CPyObject_GetAttr(r23, r24) + if is_error(r25) goto L36 (error at hexstr_to_bytes:54) else goto L18 +L18: + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L36 (error at hexstr_to_bytes:54) else goto L19 +L19: + dec_ref r22 + CPy_Raise(r28) + dec_ref r28 + if not 0 goto L23 (error at hexstr_to_bytes:54) else goto L37 :: bool +L20: + unreachable +L21: + CPy_Reraise() + if not 0 goto L23 else goto L38 :: bool +L22: + unreachable +L23: + CPy_RestoreExcInfo(r15) dec_ref r15 - goto L8 + r29 = CPy_KeepPropagating() + if not r29 goto L31 else goto L24 :: bool +L24: + unreachable +L25: + r30 = faster_hexbytes._utils.unhexlify :: static + if is_error(r30) goto L39 else goto L28 +L26: + r31 = raise NameError('value for final name "unhexlify" was not set') + if not r31 goto L31 (error at hexstr_to_bytes:58) else goto L27 :: bool +L27: + unreachable +L28: + r32 = [r14] + r33 = load_address r32 + r34 = PyObject_Vectorcall(r30, r33, 1, 0) + if is_error(r34) goto L40 (error at hexstr_to_bytes:58) else goto L29 +L29: + dec_ref r14 + r35 = cast(bytes, r34) + if is_error(r35) goto L31 (error at hexstr_to_bytes:58) else goto L30 +L30: + return r35 +L31: + r36 = :: bytes + return r36 +L32: + dec_ref non_prefixed_hex + goto L31 +L33: + dec_ref padded_hex + goto L13 +L34: + dec_ref padded_hex + goto L23 +L35: + dec_ref padded_hex + goto L21 +L36: + dec_ref r22 + goto L23 +L37: + dec_ref r15 + goto L20 +L38: + dec_ref r15 + goto L22 +L39: + dec_ref r14 + goto L26 +L40: + dec_ref r14 + goto L31 -def to_0x_hex_HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4 :: object + r5 :: object_ptr + r6 :: object_ptr[1] + r7 :: c_ptr + r8 :: native_int[1] + r9 :: c_ptr + r10 :: object + r11 :: dict + r12, r13 :: str + r14 :: bit + r15 :: object + r16 :: str + r17 :: dict + r18, r19 :: object + r20 :: str + r21 :: object + r22 :: dict + r23 :: str + r24 :: i32 + r25 :: bit + r26 :: None L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool L1: - inc_ref __mypyc_self__ - return __mypyc_self__ + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L8 (error at :-1) else goto L2 L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 + builtins = r4 :: module + dec_ref r4 L3: - return r2 + r5 = load_address binascii :: module + r6 = [r5] + r7 = load_address r6 + r8 = [1] + r9 = load_address r8 + r10 = (('binascii', 'binascii', 'binascii'),) + r11 = faster_hexbytes._utils.globals :: static + r12 = 'faster_hexbytes/_utils.py' + r13 = '' + r14 = CPyImport_ImportMany(r10, r7, r11, r12, r13, r9) + if not r14 goto L8 else goto L4 :: bool L4: - r3 = :: object - return r3 - -def to_0x_hex_HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.to_0x_hex_HexBytes_obj - self :: faster_hexbytes.main.HexBytes - r0, r1 :: str - r2 :: object[1] - r3 :: object_ptr - r4 :: object - r5, r6, r7 :: str + r15 = ('Final', 'Union') + r16 = 'typing' + r17 = faster_hexbytes._utils.globals :: static + r18 = CPyImport_ImportFromMany(r16, r15, r15, r17) + if is_error(r18) goto L8 (error at :2) else goto L5 +L5: + typing = r18 :: module + dec_ref r18 + r19 = binascii :: module + r20 = 'unhexlify' + r21 = CPyObject_GetAttr(r19, r20) + if is_error(r21) goto L8 (error at :8) else goto L6 +L6: + faster_hexbytes._utils.unhexlify = r21 :: static + r22 = faster_hexbytes._utils.globals :: static + r23 = 'unhexlify' + r24 = CPyDict_SetItem(r22, r23, r21) + dec_ref r21 + r25 = r24 >= 0 :: signed + if not r25 goto L8 (error at :8) else goto L7 :: bool +L7: + return 1 +L8: + r26 = :: None + return r26 + +def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object L0: - r0 = '0x' - r1 = 'hex' - r2 = [self] - r3 = load_address r2 - r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775809, 0) - if is_error(r4) goto L4 (error at to_0x_hex:79) else goto L1 + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool L1: - r5 = cast(str, r4) - if is_error(r5) goto L4 (error at to_0x_hex:79) else goto L2 + inc_ref __mypyc_self__ + return __mypyc_self__ L2: - r6 = CPyStr_Build(2, r0, r5) - dec_ref r5 - if is_error(r6) goto L4 (error at to_0x_hex:79) else goto L3 + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 L3: - return r6 + return r2 L4: - r7 = :: str + r3 = :: object + return r3 + +def __new___HexBytes_obj.__call__(__mypyc_self__, cls, val): + __mypyc_self__ :: faster_hexbytes.main.__new___HexBytes_obj + cls :: object + val :: union[bytes, str, bool, object, int] + r0 :: bytes + r1 :: object + r2 :: bool + r3 :: object[2] + r4 :: object_ptr + r5 :: object + r6, r7 :: faster_hexbytes.main.HexBytes +L0: + r0 = to_bytes(val) + if is_error(r0) goto L7 (error at __new__:49) else goto L1 +L1: + r1 = faster_hexbytes.main._bytes_new :: static + if is_error(r1) goto L8 else goto L4 +L2: + r2 = raise NameError('value for final name "_bytes_new" was not set') + if not r2 goto L7 (error at __new__:50) else goto L3 :: bool +L3: + unreachable +L4: + r3 = [cls, r0] + r4 = load_address r3 + r5 = PyObject_Vectorcall(r1, r4, 2, 0) + if is_error(r5) goto L9 (error at __new__:50) else goto L5 +L5: + dec_ref r0 + r6 = cast(faster_hexbytes.main.HexBytes, r5) + if is_error(r6) goto L7 (error at __new__:50) else goto L6 +L6: + return r6 +L7: + r7 = :: faster_hexbytes.main.HexBytes return r7 +L8: + dec_ref r0 + goto L2 +L9: + dec_ref r0 + goto L7 -def __reduce___HexBytes_obj.__get__(__mypyc_self__, instance, owner): +def __getitem___HexBytes_obj.__get__(__mypyc_self__, instance, owner): __mypyc_self__, instance, owner, r0 :: object r1 :: bit r2, r3 :: object @@ -440,1027 +758,709 @@ L4: r3 = :: object return r3 -def __reduce___HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.__reduce___HexBytes_obj +def __getitem___HexBytes_obj.__call__(__mypyc_self__, self, key): + __mypyc_self__ :: faster_hexbytes.main.__getitem___HexBytes_obj self :: faster_hexbytes.main.HexBytes - r0 :: object - r1 :: bool - r2, r3 :: object - r4 :: object[1] - r5 :: object_ptr - r6 :: object - r7 :: bytes - r8 :: tuple[object, bytes] - r9, r10 :: tuple[object, tuple[object, bytes]] + key, r0 :: object + r1 :: str + r2 :: object[3] + r3 :: object_ptr + r4 :: object + r5 :: union[int, bytes] + r6 :: bit + r7 :: int + r8, r9, r10 :: object + r11 :: bit + r12 :: bytes + r13 :: object + r14 :: object[1] + r15 :: object_ptr + r16 :: object + r17 :: faster_hexbytes.main.HexBytes + r18 :: bytes + r19 :: object[1] + r20 :: object_ptr + r21 :: object + r22 :: faster_hexbytes.main.HexBytes + r23 :: union[int, faster_hexbytes.main.HexBytes] L0: - r0 = faster_hexbytes.main._bytes_new :: static - if is_error(r0) goto L1 else goto L3 + r0 = load_address PyBytes_Type + r1 = '__getitem__' + r2 = [r0, self, key] + r3 = load_address r2 + r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775811, 0) + if is_error(r4) goto L14 (error at __getitem__:63) else goto L1 L1: - r1 = raise NameError('value for final name "_bytes_new" was not set') - if not r1 goto L6 (error at __reduce__:89) else goto L2 :: bool + r5 = cast(union[int, bytes], r4) + if is_error(r5) goto L14 (error at __getitem__:63) else goto L2 L2: - unreachable + r6 = PyLong_Check(r5) + if r6 goto L3 else goto L5 :: bool L3: - r2 = CPy_TYPE(self) - r3 = load_address PyBytes_Type - r4 = [self] - r5 = load_address r4 - r6 = PyObject_Vectorcall(r3, r5, 1, 0) - if is_error(r6) goto L7 (error at __reduce__:89) else goto L4 + r7 = unbox(int, r5) + dec_ref r5 + if is_error(r7) goto L14 (error at __getitem__:65) else goto L4 L4: - r7 = cast(bytes, r6) - if is_error(r7) goto L7 (error at __reduce__:89) else goto L5 + r8 = box(int, r7) + return r8 L5: - r8 = (r2, r7) - inc_ref r0 - r9 = (r0, r8) - return r9 + r9 = CPy_TYPE(self) + r10 = faster_hexbytes.main.HexBytes :: type + r11 = r9 == r10 + if r11 goto L15 else goto L10 :: bool L6: - r10 = :: tuple[object, tuple[object, bytes]] - return r10 + r12 = cast(bytes, r5) + if is_error(r12) goto L14 (error at __getitem__:69) else goto L7 L7: - dec_ref r2 + r13 = faster_hexbytes.main.HexBytes :: type + r14 = [r12] + r15 = load_address r14 + r16 = PyObject_Vectorcall(r13, r15, 1, 0) + if is_error(r16) goto L16 (error at __getitem__:69) else goto L8 +L8: + dec_ref r12 + r17 = cast(faster_hexbytes.main.HexBytes, r16) + if is_error(r17) goto L14 (error at __getitem__:69) else goto L9 +L9: + return r17 +L10: + r18 = cast(bytes, r5) + if is_error(r18) goto L17 (error at __getitem__:70) else goto L11 +L11: + r19 = [r18] + r20 = load_address r19 + r21 = PyObject_Vectorcall(r9, r20, 1, 0) + dec_ref r9 + if is_error(r21) goto L18 (error at __getitem__:70) else goto L12 +L12: + dec_ref r18 + r22 = cast(faster_hexbytes.main.HexBytes, r21) + if is_error(r22) goto L14 (error at __getitem__:70) else goto L13 +L13: + return r22 +L14: + r23 = :: union[int, faster_hexbytes.main.HexBytes] + return r23 +L15: + dec_ref r9 goto L6 +L16: + dec_ref r12 + goto L14 +L17: + dec_ref r9 + goto L14 +L18: + dec_ref r18 + goto L14 -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4, r5 :: object - r6 :: str - r7 :: dict - r8 :: object - r9 :: object_ptr - r10 :: object_ptr[1] - r11 :: c_ptr - r12 :: native_int[1] - r13 :: c_ptr - r14 :: object - r15 :: dict - r16, r17 :: str - r18 :: bit - r19 :: object - r20 :: str - r21 :: dict - r22, r23 :: object - r24 :: str - r25 :: dict - r26, r27 :: object - r28 :: str - r29 :: dict - r30 :: object - r31 :: dict - r32 :: str - r33, r34, r35, r36, r37 :: object - r38 :: str - r39, r40, r41 :: object - r42 :: str - r43 :: object - r44 :: tuple[object, object, object, object, object, object] - r45, r46 :: object - r47 :: dict - r48 :: str - r49 :: i32 - r50 :: bit - r51 :: object - r52 :: str - r53 :: object - r54 :: dict - r55 :: str - r56 :: i32 - r57 :: bit - r58 :: object - r59 :: str - r60 :: object - r61 :: tuple - r62, r63 :: object - r64 :: str - r65 :: bool - r66, r67 :: str - r68 :: object - r69 :: object[2] - r70 :: object_ptr - r71 :: object - r72, r73, r74, r75 :: dict - r76 :: faster_hexbytes.main.__new___HexBytes_obj - r77 :: object - r78 :: str - r79 :: object - r80 :: object[1] - r81 :: object_ptr - r82 :: object - r83 :: str - r84 :: i32 - r85 :: bit - r86 :: faster_hexbytes.main.__getitem___HexBytes_obj - r87 :: str - r88 :: i32 - r89 :: bit - r90 :: faster_hexbytes.main.__repr___HexBytes_obj - r91 :: str - r92 :: i32 - r93 :: bit - r94 :: faster_hexbytes.main.to_0x_hex_HexBytes_obj - r95 :: str - r96 :: i32 - r97 :: bit - r98 :: faster_hexbytes.main.__reduce___HexBytes_obj - r99 :: str - r100 :: i32 - r101 :: bit - r102, r103 :: str - r104 :: i32 - r105 :: bit - r106, r107 :: str - r108 :: i32 - r109 :: bit - r110, r111 :: str - r112 :: i32 - r113 :: bit - r114 :: object[3] - r115 :: object_ptr - r116 :: object - r117 :: dict - r118 :: str - r119, r120 :: object - r121 :: object[1] - r122 :: object_ptr - r123, r124 :: object - r125 :: object[1] - r126 :: object_ptr - r127 :: object - r128 :: dict - r129 :: str - r130 :: i32 - r131 :: bit - r132 :: object - r133 :: None +def __repr___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L48 (error at :-1) else goto L2 + inc_ref __mypyc_self__ + return __mypyc_self__ L2: - builtins = r4 :: module - dec_ref r4 + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 L3: - r5 = ('TYPE_CHECKING', 'Callable', 'Final', 'Tuple', 'Type', 'Union', 'overload') - r6 = 'typing' - r7 = faster_hexbytes.main.globals :: static - r8 = CPyImport_ImportFromMany(r6, r5, r5, r7) - if is_error(r8) goto L48 (error at :1) else goto L4 + return r2 L4: - typing = r8 :: module + r3 = :: object + return r3 + +def __repr___HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.__repr___HexBytes_obj + self :: faster_hexbytes.main.HexBytes + r0, r1, r2, r3, r4 :: str + r5 :: object[1] + r6 :: object_ptr + r7 :: object + r8, r9, r10, r11 :: str + r12 :: object[3] + r13 :: object_ptr + r14 :: object + r15, r16 :: str + r17 :: list + r18, r19, r20, r21 :: ptr + r22, r23 :: str +L0: + r0 = '' + r1 = 'HexBytes(' + r2 = '{!r:{}}' + r3 = '0x' + r4 = 'hex' + r5 = [self] + r6 = load_address r5 + r7 = PyObject_VectorcallMethod(r4, r6, 9223372036854775809, 0) + if is_error(r7) goto L8 (error at __repr__:73) else goto L1 +L1: + r8 = cast(str, r7) + if is_error(r8) goto L8 (error at __repr__:73) else goto L2 +L2: + r9 = PyUnicode_Concat(r3, r8) dec_ref r8 - r9 = load_address hexbytes.main :: module - r10 = [r9] - r11 = load_address r10 - r12 = [14] + if is_error(r9) goto L8 (error at __repr__:73) else goto L3 +L3: + r10 = '' + r11 = 'format' + r12 = [r2, r9, r10] r13 = load_address r12 - r14 = (('hexbytes.main', 'hexbytes.main', 'hexbytes'),) - r15 = faster_hexbytes.main.globals :: static - r16 = 'faster_hexbytes/main.py' - r17 = '' - r18 = CPyImport_ImportMany(r14, r11, r15, r16, r17, r13) - if not r18 goto L48 else goto L5 :: bool + r14 = PyObject_VectorcallMethod(r11, r13, 9223372036854775811, 0) + if is_error(r14) goto L9 (error at __repr__:73) else goto L4 +L4: + dec_ref r9 + r15 = cast(str, r14) + if is_error(r15) goto L8 (error at __repr__:73) else goto L5 L5: - r19 = ('mypyc_attr',) - r20 = 'mypy_extensions' - r21 = faster_hexbytes.main.globals :: static - r22 = CPyImport_ImportFromMany(r20, r19, r19, r21) - if is_error(r22) goto L48 (error at :15) else goto L6 + r16 = ')' + r17 = PyList_New(3) + if is_error(r17) goto L10 (error at __repr__:73) else goto L6 L6: - mypy_extensions = r22 :: module - dec_ref r22 - r23 = ('Self',) - r24 = 'typing_extensions' - r25 = faster_hexbytes.main.globals :: static - r26 = CPyImport_ImportFromMany(r24, r23, r23, r25) - if is_error(r26) goto L48 (error at :18) else goto L7 + r18 = get_element_ptr r17 ob_item :: PyListObject + r19 = load_mem r18 :: ptr* + inc_ref r1 + set_mem r19, r1 :: builtins.object* + r20 = r19 + 8 + set_mem r20, r15 :: builtins.object* + inc_ref r16 + r21 = r19 + 16 + set_mem r21, r16 :: builtins.object* + r22 = PyUnicode_Join(r0, r17) + dec_ref r17 + if is_error(r22) goto L8 (error at __repr__:73) else goto L7 L7: - typing_extensions = r26 :: module - dec_ref r26 - r27 = ('to_bytes',) - r28 = 'faster_hexbytes._utils' - r29 = faster_hexbytes.main.globals :: static - r30 = CPyImport_ImportFromMany(r28, r27, r27, r29) - if is_error(r30) goto L48 (error at :22) else goto L8 + return r22 L8: - faster_hexbytes._utils = r30 :: module - dec_ref r30 - if 0 goto L9 else goto L9 :: bool + r23 = :: str + return r23 L9: - r31 = faster_hexbytes.main.globals :: static - r32 = 'Union' - r33 = CPyDict_GetItem(r31, r32) - if is_error(r33) goto L48 (error at :31) else goto L10 + dec_ref r9 + goto L8 L10: - r34 = load_address PyBytes_Type - r35 = load_address PyUnicode_Type - r36 = load_address PyBool_Type - r37 = builtins :: module - r38 = 'bytearray' - r39 = CPyObject_GetAttr(r37, r38) - if is_error(r39) goto L49 (error at :31) else goto L11 -L11: - r40 = load_address PyLong_Type - r41 = builtins :: module - r42 = 'memoryview' - r43 = CPyObject_GetAttr(r41, r42) - if is_error(r43) goto L50 (error at :31) else goto L12 -L12: - inc_ref r34 - inc_ref r35 - inc_ref r36 - inc_ref r40 - r44 = (r34, r35, r36, r39, r40, r43) - r45 = box(tuple[object, object, object, object, object, object], r44) - r46 = PyObject_GetItem(r33, r45) - dec_ref r33 - dec_ref r45 - if is_error(r46) goto L48 (error at :31) else goto L13 -L13: - r47 = faster_hexbytes.main.globals :: static - r48 = 'BytesLike' - r49 = CPyDict_SetItem(r47, r48, r46) - dec_ref r46 - r50 = r49 >= 0 :: signed - if not r50 goto L48 (error at :31) else goto L14 :: bool -L14: - r51 = load_address PyBytes_Type - r52 = '__new__' - r53 = CPyObject_GetAttr(r51, r52) - if is_error(r53) goto L48 (error at :33) else goto L15 -L15: - faster_hexbytes.main._bytes_new = r53 :: static - r54 = faster_hexbytes.main.globals :: static - r55 = '_bytes_new' - r56 = CPyDict_SetItem(r54, r55, r53) - dec_ref r53 - r57 = r56 >= 0 :: signed - if not r57 goto L48 (error at :33) else goto L16 :: bool -L16: - r58 = hexbytes.main :: module - r59 = 'HexBytes' - r60 = CPyObject_GetAttr(r58, r59) - if is_error(r60) goto L48 (error at :37) else goto L17 -L17: - r61 = PyTuple_Pack(1, r60) - dec_ref r60 - if is_error(r61) goto L48 (error at :37) else goto L18 -L18: - r62 = load_address PyType_Type - r63 = CPy_CalculateMetaclass(r62, r61) - if is_error(r63) goto L51 (error at :37) else goto L19 -L19: - r64 = '__prepare__' - r65 = PyObject_HasAttr(r63, r64) - if r65 goto L20 else goto L24 :: bool -L20: - r66 = 'HexBytes' - r67 = '__prepare__' - r68 = CPyObject_GetAttr(r63, r67) - if is_error(r68) goto L51 (error at :37) else goto L21 -L21: - r69 = [r66, r61] - r70 = load_address r69 - r71 = PyObject_Vectorcall(r68, r70, 2, 0) - dec_ref r68 - if is_error(r71) goto L51 (error at :37) else goto L22 -L22: - r72 = cast(dict, r71) - if is_error(r72) goto L51 (error at :37) else goto L23 -L23: - r73 = r72 - goto L26 -L24: - r74 = PyDict_New() - if is_error(r74) goto L51 (error at :37) else goto L25 -L25: - r73 = r74 -L26: - r75 = PyDict_New() - if is_error(r75) goto L52 (error at :37) else goto L27 -L27: - r76 = __new___HexBytes_obj() - if is_error(r76) goto L53 (error at :48) else goto L28 -L28: - r77 = builtins :: module - r78 = 'staticmethod' - r79 = CPyObject_GetAttr(r77, r78) - if is_error(r79) goto L54 (error at :48) else goto L29 -L29: - r80 = [r76] - r81 = load_address r80 - r82 = PyObject_Vectorcall(r79, r81, 1, 0) - dec_ref r79 - if is_error(r82) goto L54 (error at :48) else goto L30 -L30: - dec_ref r76 - r83 = '__new__' - r84 = CPyDict_SetItem(r73, r83, r82) - dec_ref r82 - r85 = r84 >= 0 :: signed - if not r85 goto L53 (error at :48) else goto L31 :: bool -L31: - r86 = __getitem___HexBytes_obj() - if is_error(r86) goto L53 (error at :60) else goto L32 -L32: - r87 = '__getitem__' - r88 = CPyDict_SetItem(r73, r87, r86) - dec_ref r86 - r89 = r88 >= 0 :: signed - if not r89 goto L53 (error at :60) else goto L33 :: bool -L33: - r90 = __repr___HexBytes_obj() - if is_error(r90) goto L53 (error at :72) else goto L34 -L34: - r91 = '__repr__' - r92 = CPyDict_SetItem(r73, r91, r90) - dec_ref r90 - r93 = r92 >= 0 :: signed - if not r93 goto L53 (error at :72) else goto L35 :: bool -L35: - r94 = to_0x_hex_HexBytes_obj() - if is_error(r94) goto L53 (error at :75) else goto L36 -L36: - r95 = 'to_0x_hex' - r96 = CPyDict_SetItem(r73, r95, r94) - dec_ref r94 - r97 = r96 >= 0 :: signed - if not r97 goto L53 (error at :75) else goto L37 :: bool -L37: - r98 = __reduce___HexBytes_obj() - if is_error(r98) goto L53 (error at :81) else goto L38 -L38: - r99 = '__reduce__' - r100 = CPyDict_SetItem(r73, r99, r98) - dec_ref r98 - r101 = r100 >= 0 :: signed - if not r101 goto L53 (error at :81) else goto L39 :: bool -L39: - r102 = 'HexBytes' - r103 = '__annotations__' - r104 = CPyDict_SetItem(r73, r103, r75) - dec_ref r75 - r105 = r104 >= 0 :: signed - if not r105 goto L52 (error at :37) else goto L40 :: bool -L40: - r106 = 'mypyc filler docstring' - r107 = '__doc__' - r108 = CPyDict_SetItem(r73, r107, r106) - r109 = r108 >= 0 :: signed - if not r109 goto L52 (error at :37) else goto L41 :: bool -L41: - r110 = 'faster_hexbytes.main' - r111 = '__module__' - r112 = CPyDict_SetItem(r73, r111, r110) - r113 = r112 >= 0 :: signed - if not r113 goto L52 (error at :37) else goto L42 :: bool -L42: - r114 = [r102, r61, r73] - r115 = load_address r114 - r116 = PyObject_Vectorcall(r63, r115, 3, 0) - if is_error(r116) goto L52 (error at :37) else goto L43 -L43: - dec_ref r73 - dec_ref r61 - r117 = faster_hexbytes.main.globals :: static - r118 = 'mypyc_attr' - r119 = CPyDict_GetItem(r117, r118) - if is_error(r119) goto L55 (error at :36) else goto L44 -L44: - r120 = box(bool, 0) - r121 = [r120] - r122 = load_address r121 - r123 = ('native_class',) - r124 = PyObject_Vectorcall(r119, r122, 0, r123) - dec_ref r119 - if is_error(r124) goto L55 (error at :36) else goto L45 -L45: - r125 = [r116] - r126 = load_address r125 - r127 = PyObject_Vectorcall(r124, r126, 1, 0) - dec_ref r124 - if is_error(r127) goto L55 (error at :37) else goto L46 -L46: - dec_ref r116 - faster_hexbytes.main.HexBytes = r127 :: type - r128 = faster_hexbytes.main.globals :: static - r129 = 'HexBytes' - r130 = PyDict_SetItem(r128, r129, r127) - dec_ref r127 - r131 = r130 >= 0 :: signed - if not r131 goto L48 (error at :37) else goto L47 :: bool -L47: - r132 = faster_hexbytes.main.HexBytes :: type - return 1 -L48: - r133 = :: None - return r133 -L49: - dec_ref r33 - goto L48 -L50: - dec_ref r33 - dec_ref r39 - goto L48 -L51: - dec_ref r61 - goto L48 -L52: - dec_ref r61 - dec_ref r73 - goto L48 -L53: - dec_ref r61 - dec_ref r73 - dec_ref r75 - goto L48 -L54: - dec_ref r61 - dec_ref r73 - dec_ref r75 - dec_ref r76 - goto L48 -L55: - dec_ref r116 - goto L48 - -def to_bytes(val): - val :: union[bytes, str, object, bool, int] - r0 :: bit - r1 :: bytes - r2 :: bit - r3 :: str - r4 :: bytes - r5 :: bit - r6 :: object - r7 :: object[1] - r8 :: object_ptr - r9 :: object - r10 :: bytes - r11 :: bit - r12 :: bool - r13, r14, r15 :: bytes - r16 :: bit - r17 :: int - r18 :: native_int - r19 :: bit - r20 :: native_int - r21, r22 :: bit - r23 :: bool - r24 :: bit - r25 :: str - r26 :: int - r27, r28, r29 :: str - r30 :: object - r31 :: str - r32 :: object - r33 :: object[1] - r34 :: object_ptr - r35 :: object - r36 :: int - r37 :: object - r38 :: str - r39, r40 :: object - r41 :: object[1] - r42 :: object_ptr - r43 :: object - r44 :: str - r45 :: bytes - r46 :: object - r47 :: str - r48 :: object - r49 :: i32 - r50 :: bit - r51 :: bool - r52 :: object - r53 :: object[1] - r54 :: object_ptr - r55 :: object - r56 :: bytes - r57, r58, r59, r60, r61 :: str - r62 :: object[3] - r63 :: object_ptr - r64 :: object - r65, r66 :: str - r67 :: object - r68, r69 :: str - r70 :: object[3] - r71 :: object_ptr - r72 :: object - r73 :: str - r74 :: list - r75, r76, r77, r78, r79, r80 :: ptr - r81 :: str - r82 :: object - r83 :: str - r84 :: object - r85 :: object[1] - r86 :: object_ptr - r87 :: object - r88 :: bytes -L0: - r0 = PyBytes_Check(val) - if r0 goto L1 else goto L3 :: bool -L1: - inc_ref val - r1 = cast(bytes, val) - if is_error(r1) goto L51 (error at to_bytes:19) else goto L2 -L2: - return r1 -L3: - r2 = PyUnicode_Check(val) - if r2 goto L4 else goto L7 :: bool -L4: - inc_ref val - r3 = cast(str, val) - if is_error(r3) goto L51 (error at to_bytes:21) else goto L5 -L5: - r4 = hexstr_to_bytes(r3) - dec_ref r3 - if is_error(r4) goto L51 (error at to_bytes:21) else goto L6 -L6: - return r4 -L7: - r5 = PyByteArray_Check(val) - if r5 goto L8 else goto L11 :: bool -L8: - r6 = load_address PyBytes_Type - r7 = [val] - r8 = load_address r7 - r9 = PyObject_Vectorcall(r6, r8, 1, 0) - if is_error(r9) goto L51 (error at to_bytes:23) else goto L9 -L9: - r10 = cast(bytes, r9) - if is_error(r10) goto L51 (error at to_bytes:23) else goto L10 -L10: - return r10 -L11: - r11 = PyBool_Check(val) - if r11 goto L12 else goto L17 :: bool -L12: - r12 = unbox(bool, val) - if is_error(r12) goto L51 (error at to_bytes:25) else goto L13 -L13: - if r12 goto L14 else goto L15 :: bool -L14: - r13 = b'\x01' - inc_ref r13 - r14 = r13 - goto L16 -L15: - r15 = b'\x00' - inc_ref r15 - r14 = r15 -L16: - return r14 -L17: - r16 = PyLong_Check(val) - if r16 goto L18 else goto L37 :: bool -L18: - r17 = unbox(int, val) - if is_error(r17) goto L51 (error at to_bytes:29) else goto L19 -L19: - r18 = r17 & 1 - r19 = r18 != 0 - if r19 goto L21 else goto L20 :: bool -L20: - r20 = 0 & 1 - r21 = r20 != 0 - if r21 goto L21 else goto L22 :: bool -L21: - r22 = CPyTagged_IsLt_(r17, 0) - r23 = r22 - goto L23 -L22: - r24 = r17 < 0 :: signed - r23 = r24 -L23: - dec_ref r17 :: int - if r23 goto L24 else goto L31 :: bool -L24: - r25 = 'Cannot convert negative integer ' - r26 = unbox(int, val) - if is_error(r26) goto L51 (error at to_bytes:30) else goto L25 -L25: - r27 = CPyTagged_Str(r26) - dec_ref r26 :: int - if is_error(r27) goto L51 (error at to_bytes:30) else goto L26 -L26: - r28 = ' to bytes' - r29 = CPyStr_Build(3, r25, r27, r28) - dec_ref r27 - if is_error(r29) goto L51 (error at to_bytes:30) else goto L27 -L27: - r30 = builtins :: module - r31 = 'ValueError' - r32 = CPyObject_GetAttr(r30, r31) - if is_error(r32) goto L52 (error at to_bytes:30) else goto L28 -L28: - r33 = [r29] - r34 = load_address r33 - r35 = PyObject_Vectorcall(r32, r34, 1, 0) - dec_ref r32 - if is_error(r35) goto L52 (error at to_bytes:30) else goto L29 -L29: - dec_ref r29 - CPy_Raise(r35) - dec_ref r35 - if not 0 goto L51 (error at to_bytes:30) else goto L30 :: bool -L30: - unreachable -L31: - r36 = unbox(int, val) - if is_error(r36) goto L51 (error at to_bytes:32) else goto L32 -L32: - r37 = builtins :: module - r38 = 'hex' - r39 = CPyObject_GetAttr(r37, r38) - if is_error(r39) goto L53 (error at to_bytes:32) else goto L33 -L33: - r40 = box(int, r36) - r41 = [r40] - r42 = load_address r41 - r43 = PyObject_Vectorcall(r39, r42, 1, 0) - dec_ref r39 - if is_error(r43) goto L54 (error at to_bytes:32) else goto L34 -L34: - dec_ref r40 - r44 = cast(str, r43) - if is_error(r44) goto L51 (error at to_bytes:32) else goto L35 -L35: - r45 = to_bytes(r44) - dec_ref r44 - if is_error(r45) goto L51 (error at to_bytes:32) else goto L36 -L36: - return r45 -L37: - r46 = builtins :: module - r47 = 'memoryview' - r48 = CPyObject_GetAttr(r46, r47) - if is_error(r48) goto L51 (error at to_bytes:33) else goto L38 -L38: - r49 = PyObject_IsInstance(val, r48) - dec_ref r48 - r50 = r49 >= 0 :: signed - if not r50 goto L51 (error at to_bytes:33) else goto L39 :: bool -L39: - r51 = truncate r49: i32 to builtins.bool - if r51 goto L40 else goto L43 :: bool -L40: - r52 = load_address PyBytes_Type - r53 = [val] - r54 = load_address r53 - r55 = PyObject_Vectorcall(r52, r54, 1, 0) - if is_error(r55) goto L51 (error at to_bytes:34) else goto L41 -L41: - r56 = cast(bytes, r55) - if is_error(r56) goto L51 (error at to_bytes:34) else goto L42 -L42: - return r56 -L43: - r57 = '' - r58 = 'Cannot convert ' - r59 = '{!r:{}}' - r60 = '' - r61 = 'format' - r62 = [r59, val, r60] - r63 = load_address r62 - r64 = PyObject_VectorcallMethod(r61, r63, 9223372036854775811, 0) - if is_error(r64) goto L51 (error at to_bytes:36) else goto L44 -L44: - r65 = ' of type ' - r66 = '{:{}}' - r67 = CPy_TYPE(val) - r68 = '' - r69 = 'format' - r70 = [r66, r67, r68] - r71 = load_address r70 - r72 = PyObject_VectorcallMethod(r69, r71, 9223372036854775811, 0) - if is_error(r72) goto L55 (error at to_bytes:36) else goto L45 -L45: - dec_ref r67 - r73 = ' to bytes' - r74 = PyList_New(5) - if is_error(r74) goto L56 (error at to_bytes:36) else goto L46 -L46: - r75 = get_element_ptr r74 ob_item :: PyListObject - r76 = load_mem r75 :: ptr* - inc_ref r58 - set_mem r76, r58 :: builtins.object* - r77 = r76 + 8 - set_mem r77, r64 :: builtins.object* - inc_ref r65 - r78 = r76 + 16 - set_mem r78, r65 :: builtins.object* - r79 = r76 + 24 - set_mem r79, r72 :: builtins.object* - inc_ref r73 - r80 = r76 + 32 - set_mem r80, r73 :: builtins.object* - r81 = PyUnicode_Join(r57, r74) - dec_ref r74 - if is_error(r81) goto L51 (error at to_bytes:36) else goto L47 -L47: - r82 = builtins :: module - r83 = 'TypeError' - r84 = CPyObject_GetAttr(r82, r83) - if is_error(r84) goto L57 (error at to_bytes:36) else goto L48 -L48: - r85 = [r81] - r86 = load_address r85 - r87 = PyObject_Vectorcall(r84, r86, 1, 0) - dec_ref r84 - if is_error(r87) goto L57 (error at to_bytes:36) else goto L49 -L49: - dec_ref r81 - CPy_Raise(r87) - dec_ref r87 - if not 0 goto L51 (error at to_bytes:36) else goto L50 :: bool -L50: + dec_ref r15 + goto L8 + +def to_0x_hex_HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def to_0x_hex_HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.to_0x_hex_HexBytes_obj + self :: faster_hexbytes.main.HexBytes + r0, r1 :: str + r2 :: object[1] + r3 :: object_ptr + r4 :: object + r5, r6, r7 :: str +L0: + r0 = '0x' + r1 = 'hex' + r2 = [self] + r3 = load_address r2 + r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775809, 0) + if is_error(r4) goto L4 (error at to_0x_hex:79) else goto L1 +L1: + r5 = cast(str, r4) + if is_error(r5) goto L4 (error at to_0x_hex:79) else goto L2 +L2: + r6 = CPyStr_Build(2, r0, r5) + dec_ref r5 + if is_error(r6) goto L4 (error at to_0x_hex:79) else goto L3 +L3: + return r6 +L4: + r7 = :: str + return r7 + +def __reduce___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def __reduce___HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.__reduce___HexBytes_obj + self :: faster_hexbytes.main.HexBytes + r0 :: object + r1 :: bool + r2, r3 :: object + r4 :: object[1] + r5 :: object_ptr + r6 :: object + r7 :: bytes + r8 :: tuple[object, bytes] + r9, r10 :: tuple[object, tuple[object, bytes]] +L0: + r0 = faster_hexbytes.main._bytes_new :: static + if is_error(r0) goto L1 else goto L3 +L1: + r1 = raise NameError('value for final name "_bytes_new" was not set') + if not r1 goto L6 (error at __reduce__:89) else goto L2 :: bool +L2: unreachable -L51: - r88 = :: bytes - return r88 -L52: - dec_ref r29 - goto L51 -L53: - dec_ref r36 :: int - goto L51 -L54: - dec_ref r40 - goto L51 -L55: - dec_ref r64 - dec_ref r67 - goto L51 -L56: - dec_ref r64 - dec_ref r72 - goto L51 -L57: - dec_ref r81 - goto L51 +L3: + r2 = CPy_TYPE(self) + r3 = load_address PyBytes_Type + r4 = [self] + r5 = load_address r4 + r6 = PyObject_Vectorcall(r3, r5, 1, 0) + if is_error(r6) goto L7 (error at __reduce__:89) else goto L4 +L4: + r7 = cast(bytes, r6) + if is_error(r7) goto L7 (error at __reduce__:89) else goto L5 +L5: + r8 = (r2, r7) + inc_ref r0 + r9 = (r0, r8) + return r9 +L6: + r10 = :: tuple[object, tuple[object, bytes]] + return r10 +L7: + dec_ref r2 + goto L6 -def hexstr_to_bytes(hexstr): - hexstr, r0, r1 :: str - r2 :: tuple[str, str] - r3 :: object - r4 :: bool - r5 :: object - r6, non_prefixed_hex :: str - r7 :: native_int - r8 :: bit - r9 :: short_int - r10 :: int - r11 :: bit - r12, r13, padded_hex :: str - r14 :: bytes - r15 :: tuple[object, object, object] - r16 :: object - r17 :: str - r18 :: object - r19 :: bit - r20, r21, r22 :: str - r23 :: object +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4, r5 :: object + r6 :: str + r7 :: dict + r8 :: object + r9 :: object_ptr + r10 :: object_ptr[1] + r11 :: c_ptr + r12 :: native_int[1] + r13 :: c_ptr + r14 :: object + r15 :: dict + r16, r17 :: str + r18 :: bit + r19 :: object + r20 :: str + r21 :: dict + r22, r23 :: object r24 :: str - r25 :: object - r26 :: object[1] - r27 :: object_ptr - r28 :: object - r29 :: bit + r25 :: dict + r26, r27 :: object + r28 :: str + r29 :: dict r30 :: object - r31 :: bool - r32 :: object[1] - r33 :: object_ptr - r34 :: object - r35, r36 :: bytes + r31 :: dict + r32 :: str + r33, r34, r35, r36, r37 :: object + r38 :: str + r39, r40, r41 :: object + r42 :: str + r43 :: object + r44 :: tuple[object, object, object, object, object, object] + r45, r46 :: object + r47 :: dict + r48 :: str + r49 :: i32 + r50 :: bit + r51 :: object + r52 :: str + r53 :: object + r54 :: dict + r55 :: str + r56 :: i32 + r57 :: bit + r58 :: object + r59 :: str + r60 :: object + r61 :: tuple + r62, r63 :: object + r64 :: str + r65 :: bool + r66, r67 :: str + r68 :: object + r69 :: object[2] + r70 :: object_ptr + r71 :: object + r72, r73, r74, r75 :: dict + r76 :: faster_hexbytes.main.__new___HexBytes_obj + r77 :: object + r78 :: str + r79 :: object + r80 :: object[1] + r81 :: object_ptr + r82 :: object + r83 :: str + r84 :: i32 + r85 :: bit + r86 :: faster_hexbytes.main.__getitem___HexBytes_obj + r87 :: str + r88 :: i32 + r89 :: bit + r90 :: faster_hexbytes.main.__repr___HexBytes_obj + r91 :: str + r92 :: i32 + r93 :: bit + r94 :: faster_hexbytes.main.to_0x_hex_HexBytes_obj + r95 :: str + r96 :: i32 + r97 :: bit + r98 :: faster_hexbytes.main.__reduce___HexBytes_obj + r99 :: str + r100 :: i32 + r101 :: bit + r102, r103 :: str + r104 :: i32 + r105 :: bit + r106, r107 :: str + r108 :: i32 + r109 :: bit + r110, r111 :: str + r112 :: i32 + r113 :: bit + r114 :: object[3] + r115 :: object_ptr + r116 :: object + r117 :: dict + r118 :: str + r119, r120 :: object + r121 :: object[1] + r122 :: object_ptr + r123, r124 :: object + r125 :: object[1] + r126 :: object_ptr + r127 :: object + r128 :: dict + r129 :: str + r130 :: i32 + r131 :: bit + r132 :: object + r133 :: None L0: - r0 = '0x' - r1 = '0X' - inc_ref r0 - inc_ref r1 - r2 = (r0, r1) - r3 = box(tuple[str, str], r2) - r4 = CPyStr_Startswith(hexstr, r3) - dec_ref r3 - if is_error(r4) goto L31 (error at hexstr_to_bytes:40) else goto L1 + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool L1: - if r4 goto L2 else goto L5 :: bool + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L48 (error at :-1) else goto L2 L2: - r5 = CPyStr_GetSlice(hexstr, 4, 9223372036854775806) - if is_error(r5) goto L31 (error at hexstr_to_bytes:41) else goto L3 + builtins = r4 :: module + dec_ref r4 L3: - r6 = cast(str, r5) - if is_error(r6) goto L31 (error at hexstr_to_bytes:41) else goto L4 + r5 = ('TYPE_CHECKING', 'Callable', 'Final', 'Tuple', 'Type', 'Union', 'overload') + r6 = 'typing' + r7 = faster_hexbytes.main.globals :: static + r8 = CPyImport_ImportFromMany(r6, r5, r5, r7) + if is_error(r8) goto L48 (error at :1) else goto L4 L4: - non_prefixed_hex = r6 - goto L6 + typing = r8 :: module + dec_ref r8 + r9 = load_address hexbytes.main :: module + r10 = [r9] + r11 = load_address r10 + r12 = [14] + r13 = load_address r12 + r14 = (('hexbytes.main', 'hexbytes.main', 'hexbytes'),) + r15 = faster_hexbytes.main.globals :: static + r16 = 'faster_hexbytes/main.py' + r17 = '' + r18 = CPyImport_ImportMany(r14, r11, r15, r16, r17, r13) + if not r18 goto L48 else goto L5 :: bool L5: - inc_ref hexstr - non_prefixed_hex = hexstr + r19 = ('mypyc_attr',) + r20 = 'mypy_extensions' + r21 = faster_hexbytes.main.globals :: static + r22 = CPyImport_ImportFromMany(r20, r19, r19, r21) + if is_error(r22) goto L48 (error at :15) else goto L6 L6: - r7 = CPyStr_Size_size_t(hexstr) - r8 = r7 >= 0 :: signed - if not r8 goto L32 (error at hexstr_to_bytes:46) else goto L7 :: bool + mypy_extensions = r22 :: module + dec_ref r22 + r23 = ('Self',) + r24 = 'typing_extensions' + r25 = faster_hexbytes.main.globals :: static + r26 = CPyImport_ImportFromMany(r24, r23, r23, r25) + if is_error(r26) goto L48 (error at :18) else goto L7 L7: - r9 = r7 << 1 - r10 = CPyTagged_Remainder(r9, 4) - if is_error(r10) goto L32 (error at hexstr_to_bytes:46) else goto L8 + typing_extensions = r26 :: module + dec_ref r26 + r27 = ('to_bytes',) + r28 = 'faster_hexbytes._utils' + r29 = faster_hexbytes.main.globals :: static + r30 = CPyImport_ImportFromMany(r28, r27, r27, r29) + if is_error(r30) goto L48 (error at :22) else goto L8 L8: - r11 = r10 != 0 - dec_ref r10 :: int - if r11 goto L9 else goto L11 :: bool + faster_hexbytes._utils = r30 :: module + dec_ref r30 + if 0 goto L9 else goto L9 :: bool L9: - r12 = '0' - r13 = PyUnicode_Concat(r12, non_prefixed_hex) - dec_ref non_prefixed_hex - if is_error(r13) goto L31 (error at hexstr_to_bytes:47) else goto L10 + r31 = faster_hexbytes.main.globals :: static + r32 = 'Union' + r33 = CPyDict_GetItem(r31, r32) + if is_error(r33) goto L48 (error at :31) else goto L10 L10: - padded_hex = r13 - goto L12 + r34 = load_address PyBytes_Type + r35 = load_address PyUnicode_Type + r36 = load_address PyBool_Type + r37 = builtins :: module + r38 = 'bytearray' + r39 = CPyObject_GetAttr(r37, r38) + if is_error(r39) goto L49 (error at :31) else goto L11 L11: - padded_hex = non_prefixed_hex + r40 = load_address PyLong_Type + r41 = builtins :: module + r42 = 'memoryview' + r43 = CPyObject_GetAttr(r41, r42) + if is_error(r43) goto L50 (error at :31) else goto L12 L12: - r14 = PyUnicode_AsASCIIString(padded_hex) - if is_error(r14) goto L14 (error at hexstr_to_bytes:52) else goto L33 + inc_ref r34 + inc_ref r35 + inc_ref r36 + inc_ref r40 + r44 = (r34, r35, r36, r39, r40, r43) + r45 = box(tuple[object, object, object, object, object, object], r44) + r46 = PyObject_GetItem(r33, r45) + dec_ref r33 + dec_ref r45 + if is_error(r46) goto L48 (error at :31) else goto L13 L13: - goto L25 + r47 = faster_hexbytes.main.globals :: static + r48 = 'BytesLike' + r49 = CPyDict_SetItem(r47, r48, r46) + dec_ref r46 + r50 = r49 >= 0 :: signed + if not r50 goto L48 (error at :31) else goto L14 :: bool L14: - r15 = CPy_CatchError() - r16 = builtins :: module - r17 = 'UnicodeDecodeError' - r18 = CPyObject_GetAttr(r16, r17) - if is_error(r18) goto L34 (error at hexstr_to_bytes:53) else goto L15 + r51 = load_address PyBytes_Type + r52 = '__new__' + r53 = CPyObject_GetAttr(r51, r52) + if is_error(r53) goto L48 (error at :33) else goto L15 L15: - r19 = CPy_ExceptionMatches(r18) - dec_ref r18 - if r19 goto L16 else goto L35 :: bool + faster_hexbytes.main._bytes_new = r53 :: static + r54 = faster_hexbytes.main.globals :: static + r55 = '_bytes_new' + r56 = CPyDict_SetItem(r54, r55, r53) + dec_ref r53 + r57 = r56 >= 0 :: signed + if not r57 goto L48 (error at :33) else goto L16 :: bool L16: - r20 = 'hex string ' - r21 = ' may only contain [0-9a-fA-F] characters' - r22 = CPyStr_Build(3, r20, padded_hex, r21) - dec_ref padded_hex - if is_error(r22) goto L23 (error at hexstr_to_bytes:55) else goto L17 + r58 = hexbytes.main :: module + r59 = 'HexBytes' + r60 = CPyObject_GetAttr(r58, r59) + if is_error(r60) goto L48 (error at :37) else goto L17 L17: - r23 = builtins :: module - r24 = 'ValueError' - r25 = CPyObject_GetAttr(r23, r24) - if is_error(r25) goto L36 (error at hexstr_to_bytes:54) else goto L18 + r61 = PyTuple_Pack(1, r60) + dec_ref r60 + if is_error(r61) goto L48 (error at :37) else goto L18 L18: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L36 (error at hexstr_to_bytes:54) else goto L19 + r62 = load_address PyType_Type + r63 = CPy_CalculateMetaclass(r62, r61) + if is_error(r63) goto L51 (error at :37) else goto L19 L19: - dec_ref r22 - CPy_Raise(r28) - dec_ref r28 - if not 0 goto L23 (error at hexstr_to_bytes:54) else goto L37 :: bool + r64 = '__prepare__' + r65 = PyObject_HasAttr(r63, r64) + if r65 goto L20 else goto L24 :: bool L20: - unreachable + r66 = 'HexBytes' + r67 = '__prepare__' + r68 = CPyObject_GetAttr(r63, r67) + if is_error(r68) goto L51 (error at :37) else goto L21 L21: - CPy_Reraise() - if not 0 goto L23 else goto L38 :: bool + r69 = [r66, r61] + r70 = load_address r69 + r71 = PyObject_Vectorcall(r68, r70, 2, 0) + dec_ref r68 + if is_error(r71) goto L51 (error at :37) else goto L22 L22: - unreachable + r72 = cast(dict, r71) + if is_error(r72) goto L51 (error at :37) else goto L23 L23: - CPy_RestoreExcInfo(r15) - dec_ref r15 - r29 = CPy_KeepPropagating() - if not r29 goto L31 else goto L24 :: bool + r73 = r72 + goto L26 L24: - unreachable + r74 = PyDict_New() + if is_error(r74) goto L51 (error at :37) else goto L25 L25: - r30 = faster_hexbytes._utils.unhexlify :: static - if is_error(r30) goto L39 else goto L28 + r73 = r74 L26: - r31 = raise NameError('value for final name "unhexlify" was not set') - if not r31 goto L31 (error at hexstr_to_bytes:58) else goto L27 :: bool + r75 = PyDict_New() + if is_error(r75) goto L52 (error at :37) else goto L27 L27: - unreachable + r76 = __new___HexBytes_obj() + if is_error(r76) goto L53 (error at :48) else goto L28 L28: - r32 = [r14] - r33 = load_address r32 - r34 = PyObject_Vectorcall(r30, r33, 1, 0) - if is_error(r34) goto L40 (error at hexstr_to_bytes:58) else goto L29 + r77 = builtins :: module + r78 = 'staticmethod' + r79 = CPyObject_GetAttr(r77, r78) + if is_error(r79) goto L54 (error at :48) else goto L29 L29: - dec_ref r14 - r35 = cast(bytes, r34) - if is_error(r35) goto L31 (error at hexstr_to_bytes:58) else goto L30 + r80 = [r76] + r81 = load_address r80 + r82 = PyObject_Vectorcall(r79, r81, 1, 0) + dec_ref r79 + if is_error(r82) goto L54 (error at :48) else goto L30 L30: - return r35 + dec_ref r76 + r83 = '__new__' + r84 = CPyDict_SetItem(r73, r83, r82) + dec_ref r82 + r85 = r84 >= 0 :: signed + if not r85 goto L53 (error at :48) else goto L31 :: bool L31: - r36 = :: bytes - return r36 + r86 = __getitem___HexBytes_obj() + if is_error(r86) goto L53 (error at :60) else goto L32 L32: - dec_ref non_prefixed_hex - goto L31 + r87 = '__getitem__' + r88 = CPyDict_SetItem(r73, r87, r86) + dec_ref r86 + r89 = r88 >= 0 :: signed + if not r89 goto L53 (error at :60) else goto L33 :: bool L33: - dec_ref padded_hex - goto L13 + r90 = __repr___HexBytes_obj() + if is_error(r90) goto L53 (error at :72) else goto L34 L34: - dec_ref padded_hex - goto L23 + r91 = '__repr__' + r92 = CPyDict_SetItem(r73, r91, r90) + dec_ref r90 + r93 = r92 >= 0 :: signed + if not r93 goto L53 (error at :72) else goto L35 :: bool L35: - dec_ref padded_hex - goto L21 + r94 = to_0x_hex_HexBytes_obj() + if is_error(r94) goto L53 (error at :75) else goto L36 L36: - dec_ref r22 - goto L23 + r95 = 'to_0x_hex' + r96 = CPyDict_SetItem(r73, r95, r94) + dec_ref r94 + r97 = r96 >= 0 :: signed + if not r97 goto L53 (error at :75) else goto L37 :: bool L37: - dec_ref r15 - goto L20 + r98 = __reduce___HexBytes_obj() + if is_error(r98) goto L53 (error at :81) else goto L38 L38: - dec_ref r15 - goto L22 + r99 = '__reduce__' + r100 = CPyDict_SetItem(r73, r99, r98) + dec_ref r98 + r101 = r100 >= 0 :: signed + if not r101 goto L53 (error at :81) else goto L39 :: bool L39: - dec_ref r14 - goto L26 + r102 = 'HexBytes' + r103 = '__annotations__' + r104 = CPyDict_SetItem(r73, r103, r75) + dec_ref r75 + r105 = r104 >= 0 :: signed + if not r105 goto L52 (error at :37) else goto L40 :: bool L40: - dec_ref r14 - goto L31 - -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4 :: object - r5 :: object_ptr - r6 :: object_ptr[1] - r7 :: c_ptr - r8 :: native_int[1] - r9 :: c_ptr - r10 :: object - r11 :: dict - r12, r13 :: str - r14 :: bit - r15 :: object - r16 :: str - r17 :: dict - r18, r19 :: object - r20 :: str - r21 :: object - r22 :: dict - r23 :: str - r24 :: i32 - r25 :: bit - r26 :: None -L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool -L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L8 (error at :-1) else goto L2 -L2: - builtins = r4 :: module - dec_ref r4 -L3: - r5 = load_address binascii :: module - r6 = [r5] - r7 = load_address r6 - r8 = [1] - r9 = load_address r8 - r10 = (('binascii', 'binascii', 'binascii'),) - r11 = faster_hexbytes._utils.globals :: static - r12 = 'faster_hexbytes/_utils.py' - r13 = '' - r14 = CPyImport_ImportMany(r10, r7, r11, r12, r13, r9) - if not r14 goto L8 else goto L4 :: bool -L4: - r15 = ('Final', 'Union') - r16 = 'typing' - r17 = faster_hexbytes._utils.globals :: static - r18 = CPyImport_ImportFromMany(r16, r15, r15, r17) - if is_error(r18) goto L8 (error at :2) else goto L5 -L5: - typing = r18 :: module - dec_ref r18 - r19 = binascii :: module - r20 = 'unhexlify' - r21 = CPyObject_GetAttr(r19, r20) - if is_error(r21) goto L8 (error at :8) else goto L6 -L6: - faster_hexbytes._utils.unhexlify = r21 :: static - r22 = faster_hexbytes._utils.globals :: static - r23 = 'unhexlify' - r24 = CPyDict_SetItem(r22, r23, r21) - dec_ref r21 - r25 = r24 >= 0 :: signed - if not r25 goto L8 (error at :8) else goto L7 :: bool -L7: + r106 = 'mypyc filler docstring' + r107 = '__doc__' + r108 = CPyDict_SetItem(r73, r107, r106) + r109 = r108 >= 0 :: signed + if not r109 goto L52 (error at :37) else goto L41 :: bool +L41: + r110 = 'faster_hexbytes.main' + r111 = '__module__' + r112 = CPyDict_SetItem(r73, r111, r110) + r113 = r112 >= 0 :: signed + if not r113 goto L52 (error at :37) else goto L42 :: bool +L42: + r114 = [r102, r61, r73] + r115 = load_address r114 + r116 = PyObject_Vectorcall(r63, r115, 3, 0) + if is_error(r116) goto L52 (error at :37) else goto L43 +L43: + dec_ref r73 + dec_ref r61 + r117 = faster_hexbytes.main.globals :: static + r118 = 'mypyc_attr' + r119 = CPyDict_GetItem(r117, r118) + if is_error(r119) goto L55 (error at :36) else goto L44 +L44: + r120 = box(bool, 0) + r121 = [r120] + r122 = load_address r121 + r123 = ('native_class',) + r124 = PyObject_Vectorcall(r119, r122, 0, r123) + dec_ref r119 + if is_error(r124) goto L55 (error at :36) else goto L45 +L45: + r125 = [r116] + r126 = load_address r125 + r127 = PyObject_Vectorcall(r124, r126, 1, 0) + dec_ref r124 + if is_error(r127) goto L55 (error at :37) else goto L46 +L46: + dec_ref r116 + faster_hexbytes.main.HexBytes = r127 :: type + r128 = faster_hexbytes.main.globals :: static + r129 = 'HexBytes' + r130 = PyDict_SetItem(r128, r129, r127) + dec_ref r127 + r131 = r130 >= 0 :: signed + if not r131 goto L48 (error at :37) else goto L47 :: bool +L47: + r132 = faster_hexbytes.main.HexBytes :: type return 1 -L8: - r26 = :: None - return r26 +L48: + r133 = :: None + return r133 +L49: + dec_ref r33 + goto L48 +L50: + dec_ref r33 + dec_ref r39 + goto L48 +L51: + dec_ref r61 + goto L48 +L52: + dec_ref r61 + dec_ref r73 + goto L48 +L53: + dec_ref r61 + dec_ref r73 + dec_ref r75 + goto L48 +L54: + dec_ref r61 + dec_ref r73 + dec_ref r75 + dec_ref r76 + goto L48 +L55: + dec_ref r116 + goto L48 From 2dac80860c097e50803e37d1f30e5afd87bfc571 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Tue, 30 Sep 2025 02:27:35 -0400 Subject: [PATCH 35/98] Update benchmark.yaml --- .github/workflows/benchmark.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml index ba11d9d..33b4ce8 100644 --- a/.github/workflows/benchmark.yaml +++ b/.github/workflows/benchmark.yaml @@ -24,8 +24,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install .[dev] - pip install pytest-codspeed pytest-benchmark hexbytes + pip install .[dev] pytest-codspeed pytest-benchmark - name: Remove Python files from test env run: rm -r faster_hexbytes - name: Run Pytest Benchmark & Save Output From 398a213893570d50cc7893cd76fbde0f90536d37 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 30 Sep 2025 06:27:59 +0000 Subject: [PATCH 36/98] chore: compile C files for source control --- build/ops.txt | 1664 ++++++++++++++++++++++++------------------------- 1 file changed, 832 insertions(+), 832 deletions(-) diff --git a/build/ops.txt b/build/ops.txt index 5ed32ca..936de4d 100644 --- a/build/ops.txt +++ b/build/ops.txt @@ -1,875 +1,198 @@ -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4, r5, r6 :: object - r7 :: str - r8 :: dict - r9, r10 :: object - r11 :: str - r12 :: dict - r13 :: object - r14 :: str - r15 :: list - r16, r17 :: ptr - r18 :: dict - r19 :: str - r20 :: i32 - r21 :: bit - r22 :: str - r23 :: dict - r24 :: str - r25 :: object - r26 :: object[1] - r27 :: object_ptr - r28 :: object - r29 :: str - r30 :: dict - r31 :: str - r32 :: i32 - r33 :: bit - r34 :: None +def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L12 (error at :-1) else goto L2 + inc_ref __mypyc_self__ + return __mypyc_self__ L2: - builtins = r4 :: module - dec_ref r4 + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 L3: - r5 = ('version',) - r6 = ('__version',) - r7 = 'importlib.metadata' - r8 = faster_hexbytes.globals :: static - r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) - if is_error(r9) goto L12 (error at :1) else goto L4 + return r2 L4: - importlib.metadata = r9 :: module - dec_ref r9 - r10 = ('HexBytes',) - r11 = 'faster_hexbytes.main' - r12 = faster_hexbytes.globals :: static - r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) - if is_error(r13) goto L12 (error at :5) else goto L5 -L5: - faster_hexbytes.main = r13 :: module - dec_ref r13 - r14 = 'HexBytes' - r15 = PyList_New(1) - if is_error(r15) goto L12 (error at :9) else goto L6 -L6: - r16 = get_element_ptr r15 ob_item :: PyListObject - r17 = load_mem r16 :: ptr* - inc_ref r14 - set_mem r17, r14 :: builtins.object* - r18 = faster_hexbytes.globals :: static - r19 = '__all__' - r20 = CPyDict_SetItem(r18, r19, r15) - dec_ref r15 - r21 = r20 >= 0 :: signed - if not r21 goto L12 (error at :9) else goto L7 :: bool -L7: - r22 = 'hexbytes' - r23 = faster_hexbytes.globals :: static - r24 = '__version' - r25 = CPyDict_GetItem(r23, r24) - if is_error(r25) goto L12 (error at :11) else goto L8 -L8: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L12 (error at :11) else goto L9 -L9: - r29 = cast(str, r28) - if is_error(r29) goto L12 (error at :11) else goto L10 -L10: - r30 = faster_hexbytes.globals :: static - r31 = '__version__' - r32 = CPyDict_SetItem(r30, r31, r29) - dec_ref r29 - r33 = r32 >= 0 :: signed - if not r33 goto L12 (error at :11) else goto L11 :: bool -L11: - return 1 -L12: - r34 = :: None - return r34 + r3 = :: object + return r3 -def to_bytes(val): - val :: union[bytes, str, object, bool, int] - r0 :: bit - r1 :: bytes - r2 :: bit - r3 :: str - r4 :: bytes - r5 :: bit - r6 :: object - r7 :: object[1] - r8 :: object_ptr - r9 :: object - r10 :: bytes - r11 :: bit - r12 :: bool - r13, r14, r15 :: bytes - r16 :: bit - r17 :: int - r18 :: native_int - r19 :: bit - r20 :: native_int - r21, r22 :: bit - r23 :: bool - r24 :: bit - r25 :: str - r26 :: int - r27, r28, r29 :: str - r30 :: object - r31 :: str - r32 :: object - r33 :: object[1] - r34 :: object_ptr - r35 :: object - r36 :: int - r37 :: object - r38 :: str - r39, r40 :: object - r41 :: object[1] - r42 :: object_ptr - r43 :: object - r44 :: str - r45 :: bytes - r46 :: object - r47 :: str - r48 :: object - r49 :: i32 - r50 :: bit - r51 :: bool - r52 :: object - r53 :: object[1] - r54 :: object_ptr - r55 :: object - r56 :: bytes - r57, r58, r59, r60, r61 :: str - r62 :: object[3] - r63 :: object_ptr - r64 :: object - r65, r66 :: str - r67 :: object - r68, r69 :: str - r70 :: object[3] - r71 :: object_ptr - r72 :: object - r73 :: str - r74 :: list - r75, r76, r77, r78, r79, r80 :: ptr - r81 :: str - r82 :: object - r83 :: str - r84 :: object - r85 :: object[1] - r86 :: object_ptr - r87 :: object - r88 :: bytes +def __new___HexBytes_obj.__call__(__mypyc_self__, cls, val): + __mypyc_self__ :: faster_hexbytes.main.__new___HexBytes_obj + cls :: object + val :: union[bytes, str, bool, object, int] + r0 :: bytes + r1 :: object + r2 :: bool + r3 :: object[2] + r4 :: object_ptr + r5 :: object + r6, r7 :: faster_hexbytes.main.HexBytes L0: - r0 = PyBytes_Check(val) - if r0 goto L1 else goto L3 :: bool + r0 = to_bytes(val) + if is_error(r0) goto L7 (error at __new__:49) else goto L1 L1: - inc_ref val - r1 = cast(bytes, val) - if is_error(r1) goto L51 (error at to_bytes:19) else goto L2 + r1 = faster_hexbytes.main._bytes_new :: static + if is_error(r1) goto L8 else goto L4 L2: - return r1 + r2 = raise NameError('value for final name "_bytes_new" was not set') + if not r2 goto L7 (error at __new__:50) else goto L3 :: bool L3: - r2 = PyUnicode_Check(val) - if r2 goto L4 else goto L7 :: bool + unreachable L4: - inc_ref val - r3 = cast(str, val) - if is_error(r3) goto L51 (error at to_bytes:21) else goto L5 + r3 = [cls, r0] + r4 = load_address r3 + r5 = PyObject_Vectorcall(r1, r4, 2, 0) + if is_error(r5) goto L9 (error at __new__:50) else goto L5 L5: - r4 = hexstr_to_bytes(r3) - dec_ref r3 - if is_error(r4) goto L51 (error at to_bytes:21) else goto L6 + dec_ref r0 + r6 = cast(faster_hexbytes.main.HexBytes, r5) + if is_error(r6) goto L7 (error at __new__:50) else goto L6 L6: - return r4 + return r6 L7: - r5 = PyByteArray_Check(val) - if r5 goto L8 else goto L11 :: bool + r7 = :: faster_hexbytes.main.HexBytes + return r7 L8: - r6 = load_address PyBytes_Type - r7 = [val] - r8 = load_address r7 - r9 = PyObject_Vectorcall(r6, r8, 1, 0) - if is_error(r9) goto L51 (error at to_bytes:23) else goto L9 + dec_ref r0 + goto L2 L9: - r10 = cast(bytes, r9) - if is_error(r10) goto L51 (error at to_bytes:23) else goto L10 -L10: - return r10 -L11: - r11 = PyBool_Check(val) - if r11 goto L12 else goto L17 :: bool -L12: - r12 = unbox(bool, val) - if is_error(r12) goto L51 (error at to_bytes:25) else goto L13 -L13: - if r12 goto L14 else goto L15 :: bool -L14: - r13 = b'\x01' - inc_ref r13 - r14 = r13 - goto L16 -L15: - r15 = b'\x00' - inc_ref r15 - r14 = r15 -L16: - return r14 -L17: - r16 = PyLong_Check(val) - if r16 goto L18 else goto L37 :: bool -L18: - r17 = unbox(int, val) - if is_error(r17) goto L51 (error at to_bytes:29) else goto L19 -L19: - r18 = r17 & 1 - r19 = r18 != 0 - if r19 goto L21 else goto L20 :: bool -L20: - r20 = 0 & 1 - r21 = r20 != 0 - if r21 goto L21 else goto L22 :: bool -L21: - r22 = CPyTagged_IsLt_(r17, 0) - r23 = r22 - goto L23 -L22: - r24 = r17 < 0 :: signed - r23 = r24 -L23: - dec_ref r17 :: int - if r23 goto L24 else goto L31 :: bool -L24: - r25 = 'Cannot convert negative integer ' - r26 = unbox(int, val) - if is_error(r26) goto L51 (error at to_bytes:30) else goto L25 -L25: - r27 = CPyTagged_Str(r26) - dec_ref r26 :: int - if is_error(r27) goto L51 (error at to_bytes:30) else goto L26 -L26: - r28 = ' to bytes' - r29 = CPyStr_Build(3, r25, r27, r28) - dec_ref r27 - if is_error(r29) goto L51 (error at to_bytes:30) else goto L27 -L27: - r30 = builtins :: module - r31 = 'ValueError' - r32 = CPyObject_GetAttr(r30, r31) - if is_error(r32) goto L52 (error at to_bytes:30) else goto L28 -L28: - r33 = [r29] - r34 = load_address r33 - r35 = PyObject_Vectorcall(r32, r34, 1, 0) - dec_ref r32 - if is_error(r35) goto L52 (error at to_bytes:30) else goto L29 -L29: - dec_ref r29 - CPy_Raise(r35) - dec_ref r35 - if not 0 goto L51 (error at to_bytes:30) else goto L30 :: bool -L30: - unreachable -L31: - r36 = unbox(int, val) - if is_error(r36) goto L51 (error at to_bytes:32) else goto L32 -L32: - r37 = builtins :: module - r38 = 'hex' - r39 = CPyObject_GetAttr(r37, r38) - if is_error(r39) goto L53 (error at to_bytes:32) else goto L33 -L33: - r40 = box(int, r36) - r41 = [r40] - r42 = load_address r41 - r43 = PyObject_Vectorcall(r39, r42, 1, 0) - dec_ref r39 - if is_error(r43) goto L54 (error at to_bytes:32) else goto L34 -L34: - dec_ref r40 - r44 = cast(str, r43) - if is_error(r44) goto L51 (error at to_bytes:32) else goto L35 -L35: - r45 = to_bytes(r44) - dec_ref r44 - if is_error(r45) goto L51 (error at to_bytes:32) else goto L36 -L36: - return r45 -L37: - r46 = builtins :: module - r47 = 'memoryview' - r48 = CPyObject_GetAttr(r46, r47) - if is_error(r48) goto L51 (error at to_bytes:33) else goto L38 -L38: - r49 = PyObject_IsInstance(val, r48) - dec_ref r48 - r50 = r49 >= 0 :: signed - if not r50 goto L51 (error at to_bytes:33) else goto L39 :: bool -L39: - r51 = truncate r49: i32 to builtins.bool - if r51 goto L40 else goto L43 :: bool -L40: - r52 = load_address PyBytes_Type - r53 = [val] - r54 = load_address r53 - r55 = PyObject_Vectorcall(r52, r54, 1, 0) - if is_error(r55) goto L51 (error at to_bytes:34) else goto L41 -L41: - r56 = cast(bytes, r55) - if is_error(r56) goto L51 (error at to_bytes:34) else goto L42 -L42: - return r56 -L43: - r57 = '' - r58 = 'Cannot convert ' - r59 = '{!r:{}}' - r60 = '' - r61 = 'format' - r62 = [r59, val, r60] - r63 = load_address r62 - r64 = PyObject_VectorcallMethod(r61, r63, 9223372036854775811, 0) - if is_error(r64) goto L51 (error at to_bytes:36) else goto L44 -L44: - r65 = ' of type ' - r66 = '{:{}}' - r67 = CPy_TYPE(val) - r68 = '' - r69 = 'format' - r70 = [r66, r67, r68] - r71 = load_address r70 - r72 = PyObject_VectorcallMethod(r69, r71, 9223372036854775811, 0) - if is_error(r72) goto L55 (error at to_bytes:36) else goto L45 -L45: - dec_ref r67 - r73 = ' to bytes' - r74 = PyList_New(5) - if is_error(r74) goto L56 (error at to_bytes:36) else goto L46 -L46: - r75 = get_element_ptr r74 ob_item :: PyListObject - r76 = load_mem r75 :: ptr* - inc_ref r58 - set_mem r76, r58 :: builtins.object* - r77 = r76 + 8 - set_mem r77, r64 :: builtins.object* - inc_ref r65 - r78 = r76 + 16 - set_mem r78, r65 :: builtins.object* - r79 = r76 + 24 - set_mem r79, r72 :: builtins.object* - inc_ref r73 - r80 = r76 + 32 - set_mem r80, r73 :: builtins.object* - r81 = PyUnicode_Join(r57, r74) - dec_ref r74 - if is_error(r81) goto L51 (error at to_bytes:36) else goto L47 -L47: - r82 = builtins :: module - r83 = 'TypeError' - r84 = CPyObject_GetAttr(r82, r83) - if is_error(r84) goto L57 (error at to_bytes:36) else goto L48 -L48: - r85 = [r81] - r86 = load_address r85 - r87 = PyObject_Vectorcall(r84, r86, 1, 0) - dec_ref r84 - if is_error(r87) goto L57 (error at to_bytes:36) else goto L49 -L49: - dec_ref r81 - CPy_Raise(r87) - dec_ref r87 - if not 0 goto L51 (error at to_bytes:36) else goto L50 :: bool -L50: - unreachable -L51: - r88 = :: bytes - return r88 -L52: - dec_ref r29 - goto L51 -L53: - dec_ref r36 :: int - goto L51 -L54: - dec_ref r40 - goto L51 -L55: - dec_ref r64 - dec_ref r67 - goto L51 -L56: - dec_ref r64 - dec_ref r72 - goto L51 -L57: - dec_ref r81 - goto L51 + dec_ref r0 + goto L7 -def hexstr_to_bytes(hexstr): - hexstr, r0, r1 :: str - r2 :: tuple[str, str] - r3 :: object - r4 :: bool - r5 :: object - r6, non_prefixed_hex :: str - r7 :: native_int - r8 :: bit - r9 :: short_int - r10 :: int - r11 :: bit - r12, r13, padded_hex :: str - r14 :: bytes - r15 :: tuple[object, object, object] - r16 :: object - r17 :: str - r18 :: object - r19 :: bit - r20, r21, r22 :: str - r23 :: object - r24 :: str - r25 :: object - r26 :: object[1] - r27 :: object_ptr - r28 :: object - r29 :: bit - r30 :: object - r31 :: bool - r32 :: object[1] - r33 :: object_ptr - r34 :: object - r35, r36 :: bytes +def __getitem___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object L0: - r0 = '0x' - r1 = '0X' - inc_ref r0 - inc_ref r1 - r2 = (r0, r1) - r3 = box(tuple[str, str], r2) - r4 = CPyStr_Startswith(hexstr, r3) - dec_ref r3 - if is_error(r4) goto L31 (error at hexstr_to_bytes:40) else goto L1 + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool L1: - if r4 goto L2 else goto L5 :: bool + inc_ref __mypyc_self__ + return __mypyc_self__ L2: - r5 = CPyStr_GetSlice(hexstr, 4, 9223372036854775806) - if is_error(r5) goto L31 (error at hexstr_to_bytes:41) else goto L3 + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 L3: - r6 = cast(str, r5) - if is_error(r6) goto L31 (error at hexstr_to_bytes:41) else goto L4 + return r2 L4: - non_prefixed_hex = r6 - goto L6 -L5: - inc_ref hexstr - non_prefixed_hex = hexstr + r3 = :: object + return r3 + +def __getitem___HexBytes_obj.__call__(__mypyc_self__, self, key): + __mypyc_self__ :: faster_hexbytes.main.__getitem___HexBytes_obj + self :: faster_hexbytes.main.HexBytes + key, r0 :: object + r1 :: str + r2 :: object[3] + r3 :: object_ptr + r4 :: object + r5 :: union[int, bytes] + r6 :: bit + r7 :: int + r8, r9, r10 :: object + r11 :: bit + r12 :: bytes + r13 :: object + r14 :: object[1] + r15 :: object_ptr + r16 :: object + r17 :: faster_hexbytes.main.HexBytes + r18 :: bytes + r19 :: object[1] + r20 :: object_ptr + r21 :: object + r22 :: faster_hexbytes.main.HexBytes + r23 :: union[int, faster_hexbytes.main.HexBytes] +L0: + r0 = load_address PyBytes_Type + r1 = '__getitem__' + r2 = [r0, self, key] + r3 = load_address r2 + r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775811, 0) + if is_error(r4) goto L14 (error at __getitem__:63) else goto L1 +L1: + r5 = cast(union[int, bytes], r4) + if is_error(r5) goto L14 (error at __getitem__:63) else goto L2 +L2: + r6 = PyLong_Check(r5) + if r6 goto L3 else goto L5 :: bool +L3: + r7 = unbox(int, r5) + dec_ref r5 + if is_error(r7) goto L14 (error at __getitem__:65) else goto L4 +L4: + r8 = box(int, r7) + return r8 +L5: + r9 = CPy_TYPE(self) + r10 = faster_hexbytes.main.HexBytes :: type + r11 = r9 == r10 + if r11 goto L15 else goto L10 :: bool L6: - r7 = CPyStr_Size_size_t(hexstr) - r8 = r7 >= 0 :: signed - if not r8 goto L32 (error at hexstr_to_bytes:46) else goto L7 :: bool + r12 = cast(bytes, r5) + if is_error(r12) goto L14 (error at __getitem__:69) else goto L7 L7: - r9 = r7 << 1 - r10 = CPyTagged_Remainder(r9, 4) - if is_error(r10) goto L32 (error at hexstr_to_bytes:46) else goto L8 + r13 = faster_hexbytes.main.HexBytes :: type + r14 = [r12] + r15 = load_address r14 + r16 = PyObject_Vectorcall(r13, r15, 1, 0) + if is_error(r16) goto L16 (error at __getitem__:69) else goto L8 L8: - r11 = r10 != 0 - dec_ref r10 :: int - if r11 goto L9 else goto L11 :: bool + dec_ref r12 + r17 = cast(faster_hexbytes.main.HexBytes, r16) + if is_error(r17) goto L14 (error at __getitem__:69) else goto L9 L9: - r12 = '0' - r13 = PyUnicode_Concat(r12, non_prefixed_hex) - dec_ref non_prefixed_hex - if is_error(r13) goto L31 (error at hexstr_to_bytes:47) else goto L10 + return r17 L10: - padded_hex = r13 - goto L12 + r18 = cast(bytes, r5) + if is_error(r18) goto L17 (error at __getitem__:70) else goto L11 L11: - padded_hex = non_prefixed_hex + r19 = [r18] + r20 = load_address r19 + r21 = PyObject_Vectorcall(r9, r20, 1, 0) + dec_ref r9 + if is_error(r21) goto L18 (error at __getitem__:70) else goto L12 L12: - r14 = PyUnicode_AsASCIIString(padded_hex) - if is_error(r14) goto L14 (error at hexstr_to_bytes:52) else goto L33 + dec_ref r18 + r22 = cast(faster_hexbytes.main.HexBytes, r21) + if is_error(r22) goto L14 (error at __getitem__:70) else goto L13 L13: - goto L25 + return r22 L14: - r15 = CPy_CatchError() - r16 = builtins :: module - r17 = 'UnicodeDecodeError' - r18 = CPyObject_GetAttr(r16, r17) - if is_error(r18) goto L34 (error at hexstr_to_bytes:53) else goto L15 + r23 = :: union[int, faster_hexbytes.main.HexBytes] + return r23 L15: - r19 = CPy_ExceptionMatches(r18) - dec_ref r18 - if r19 goto L16 else goto L35 :: bool + dec_ref r9 + goto L6 L16: - r20 = 'hex string ' - r21 = ' may only contain [0-9a-fA-F] characters' - r22 = CPyStr_Build(3, r20, padded_hex, r21) - dec_ref padded_hex - if is_error(r22) goto L23 (error at hexstr_to_bytes:55) else goto L17 + dec_ref r12 + goto L14 L17: - r23 = builtins :: module - r24 = 'ValueError' - r25 = CPyObject_GetAttr(r23, r24) - if is_error(r25) goto L36 (error at hexstr_to_bytes:54) else goto L18 + dec_ref r9 + goto L14 L18: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L36 (error at hexstr_to_bytes:54) else goto L19 -L19: - dec_ref r22 - CPy_Raise(r28) - dec_ref r28 - if not 0 goto L23 (error at hexstr_to_bytes:54) else goto L37 :: bool -L20: - unreachable -L21: - CPy_Reraise() - if not 0 goto L23 else goto L38 :: bool -L22: - unreachable -L23: - CPy_RestoreExcInfo(r15) - dec_ref r15 - r29 = CPy_KeepPropagating() - if not r29 goto L31 else goto L24 :: bool -L24: - unreachable -L25: - r30 = faster_hexbytes._utils.unhexlify :: static - if is_error(r30) goto L39 else goto L28 -L26: - r31 = raise NameError('value for final name "unhexlify" was not set') - if not r31 goto L31 (error at hexstr_to_bytes:58) else goto L27 :: bool -L27: - unreachable -L28: - r32 = [r14] - r33 = load_address r32 - r34 = PyObject_Vectorcall(r30, r33, 1, 0) - if is_error(r34) goto L40 (error at hexstr_to_bytes:58) else goto L29 -L29: - dec_ref r14 - r35 = cast(bytes, r34) - if is_error(r35) goto L31 (error at hexstr_to_bytes:58) else goto L30 -L30: - return r35 -L31: - r36 = :: bytes - return r36 -L32: - dec_ref non_prefixed_hex - goto L31 -L33: - dec_ref padded_hex - goto L13 -L34: - dec_ref padded_hex - goto L23 -L35: - dec_ref padded_hex - goto L21 -L36: - dec_ref r22 - goto L23 -L37: - dec_ref r15 - goto L20 -L38: - dec_ref r15 - goto L22 -L39: - dec_ref r14 - goto L26 -L40: - dec_ref r14 - goto L31 + dec_ref r18 + goto L14 -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4 :: object - r5 :: object_ptr - r6 :: object_ptr[1] - r7 :: c_ptr - r8 :: native_int[1] - r9 :: c_ptr - r10 :: object - r11 :: dict - r12, r13 :: str - r14 :: bit - r15 :: object - r16 :: str - r17 :: dict - r18, r19 :: object - r20 :: str - r21 :: object - r22 :: dict - r23 :: str - r24 :: i32 - r25 :: bit - r26 :: None +def __repr___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L8 (error at :-1) else goto L2 + inc_ref __mypyc_self__ + return __mypyc_self__ L2: - builtins = r4 :: module - dec_ref r4 + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 L3: - r5 = load_address binascii :: module - r6 = [r5] - r7 = load_address r6 - r8 = [1] - r9 = load_address r8 - r10 = (('binascii', 'binascii', 'binascii'),) - r11 = faster_hexbytes._utils.globals :: static - r12 = 'faster_hexbytes/_utils.py' - r13 = '' - r14 = CPyImport_ImportMany(r10, r7, r11, r12, r13, r9) - if not r14 goto L8 else goto L4 :: bool -L4: - r15 = ('Final', 'Union') - r16 = 'typing' - r17 = faster_hexbytes._utils.globals :: static - r18 = CPyImport_ImportFromMany(r16, r15, r15, r17) - if is_error(r18) goto L8 (error at :2) else goto L5 -L5: - typing = r18 :: module - dec_ref r18 - r19 = binascii :: module - r20 = 'unhexlify' - r21 = CPyObject_GetAttr(r19, r20) - if is_error(r21) goto L8 (error at :8) else goto L6 -L6: - faster_hexbytes._utils.unhexlify = r21 :: static - r22 = faster_hexbytes._utils.globals :: static - r23 = 'unhexlify' - r24 = CPyDict_SetItem(r22, r23, r21) - dec_ref r21 - r25 = r24 >= 0 :: signed - if not r25 goto L8 (error at :8) else goto L7 :: bool -L7: - return 1 -L8: - r26 = :: None - return r26 - -def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __new___HexBytes_obj.__call__(__mypyc_self__, cls, val): - __mypyc_self__ :: faster_hexbytes.main.__new___HexBytes_obj - cls :: object - val :: union[bytes, str, bool, object, int] - r0 :: bytes - r1 :: object - r2 :: bool - r3 :: object[2] - r4 :: object_ptr - r5 :: object - r6, r7 :: faster_hexbytes.main.HexBytes -L0: - r0 = to_bytes(val) - if is_error(r0) goto L7 (error at __new__:49) else goto L1 -L1: - r1 = faster_hexbytes.main._bytes_new :: static - if is_error(r1) goto L8 else goto L4 -L2: - r2 = raise NameError('value for final name "_bytes_new" was not set') - if not r2 goto L7 (error at __new__:50) else goto L3 :: bool -L3: - unreachable -L4: - r3 = [cls, r0] - r4 = load_address r3 - r5 = PyObject_Vectorcall(r1, r4, 2, 0) - if is_error(r5) goto L9 (error at __new__:50) else goto L5 -L5: - dec_ref r0 - r6 = cast(faster_hexbytes.main.HexBytes, r5) - if is_error(r6) goto L7 (error at __new__:50) else goto L6 -L6: - return r6 -L7: - r7 = :: faster_hexbytes.main.HexBytes - return r7 -L8: - dec_ref r0 - goto L2 -L9: - dec_ref r0 - goto L7 - -def __getitem___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __getitem___HexBytes_obj.__call__(__mypyc_self__, self, key): - __mypyc_self__ :: faster_hexbytes.main.__getitem___HexBytes_obj - self :: faster_hexbytes.main.HexBytes - key, r0 :: object - r1 :: str - r2 :: object[3] - r3 :: object_ptr - r4 :: object - r5 :: union[int, bytes] - r6 :: bit - r7 :: int - r8, r9, r10 :: object - r11 :: bit - r12 :: bytes - r13 :: object - r14 :: object[1] - r15 :: object_ptr - r16 :: object - r17 :: faster_hexbytes.main.HexBytes - r18 :: bytes - r19 :: object[1] - r20 :: object_ptr - r21 :: object - r22 :: faster_hexbytes.main.HexBytes - r23 :: union[int, faster_hexbytes.main.HexBytes] -L0: - r0 = load_address PyBytes_Type - r1 = '__getitem__' - r2 = [r0, self, key] - r3 = load_address r2 - r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775811, 0) - if is_error(r4) goto L14 (error at __getitem__:63) else goto L1 -L1: - r5 = cast(union[int, bytes], r4) - if is_error(r5) goto L14 (error at __getitem__:63) else goto L2 -L2: - r6 = PyLong_Check(r5) - if r6 goto L3 else goto L5 :: bool -L3: - r7 = unbox(int, r5) - dec_ref r5 - if is_error(r7) goto L14 (error at __getitem__:65) else goto L4 -L4: - r8 = box(int, r7) - return r8 -L5: - r9 = CPy_TYPE(self) - r10 = faster_hexbytes.main.HexBytes :: type - r11 = r9 == r10 - if r11 goto L15 else goto L10 :: bool -L6: - r12 = cast(bytes, r5) - if is_error(r12) goto L14 (error at __getitem__:69) else goto L7 -L7: - r13 = faster_hexbytes.main.HexBytes :: type - r14 = [r12] - r15 = load_address r14 - r16 = PyObject_Vectorcall(r13, r15, 1, 0) - if is_error(r16) goto L16 (error at __getitem__:69) else goto L8 -L8: - dec_ref r12 - r17 = cast(faster_hexbytes.main.HexBytes, r16) - if is_error(r17) goto L14 (error at __getitem__:69) else goto L9 -L9: - return r17 -L10: - r18 = cast(bytes, r5) - if is_error(r18) goto L17 (error at __getitem__:70) else goto L11 -L11: - r19 = [r18] - r20 = load_address r19 - r21 = PyObject_Vectorcall(r9, r20, 1, 0) - dec_ref r9 - if is_error(r21) goto L18 (error at __getitem__:70) else goto L12 -L12: - dec_ref r18 - r22 = cast(faster_hexbytes.main.HexBytes, r21) - if is_error(r22) goto L14 (error at __getitem__:70) else goto L13 -L13: - return r22 -L14: - r23 = :: union[int, faster_hexbytes.main.HexBytes] - return r23 -L15: - dec_ref r9 - goto L6 -L16: - dec_ref r12 - goto L14 -L17: - dec_ref r9 - goto L14 -L18: - dec_ref r18 - goto L14 - -def __repr___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 + return r2 L4: r3 = :: object return r3 @@ -1464,3 +787,680 @@ L54: L55: dec_ref r116 goto L48 + +def to_bytes(val): + val :: union[bytes, str, object, bool, int] + r0 :: bit + r1 :: bytes + r2 :: bit + r3 :: str + r4 :: bytes + r5 :: bit + r6 :: object + r7 :: object[1] + r8 :: object_ptr + r9 :: object + r10 :: bytes + r11 :: bit + r12 :: bool + r13, r14, r15 :: bytes + r16 :: bit + r17 :: int + r18 :: native_int + r19 :: bit + r20 :: native_int + r21, r22 :: bit + r23 :: bool + r24 :: bit + r25 :: str + r26 :: int + r27, r28, r29 :: str + r30 :: object + r31 :: str + r32 :: object + r33 :: object[1] + r34 :: object_ptr + r35 :: object + r36 :: int + r37 :: object + r38 :: str + r39, r40 :: object + r41 :: object[1] + r42 :: object_ptr + r43 :: object + r44 :: str + r45 :: bytes + r46 :: object + r47 :: str + r48 :: object + r49 :: i32 + r50 :: bit + r51 :: bool + r52 :: object + r53 :: object[1] + r54 :: object_ptr + r55 :: object + r56 :: bytes + r57, r58, r59, r60, r61 :: str + r62 :: object[3] + r63 :: object_ptr + r64 :: object + r65, r66 :: str + r67 :: object + r68, r69 :: str + r70 :: object[3] + r71 :: object_ptr + r72 :: object + r73 :: str + r74 :: list + r75, r76, r77, r78, r79, r80 :: ptr + r81 :: str + r82 :: object + r83 :: str + r84 :: object + r85 :: object[1] + r86 :: object_ptr + r87 :: object + r88 :: bytes +L0: + r0 = PyBytes_Check(val) + if r0 goto L1 else goto L3 :: bool +L1: + inc_ref val + r1 = cast(bytes, val) + if is_error(r1) goto L51 (error at to_bytes:19) else goto L2 +L2: + return r1 +L3: + r2 = PyUnicode_Check(val) + if r2 goto L4 else goto L7 :: bool +L4: + inc_ref val + r3 = cast(str, val) + if is_error(r3) goto L51 (error at to_bytes:21) else goto L5 +L5: + r4 = hexstr_to_bytes(r3) + dec_ref r3 + if is_error(r4) goto L51 (error at to_bytes:21) else goto L6 +L6: + return r4 +L7: + r5 = PyByteArray_Check(val) + if r5 goto L8 else goto L11 :: bool +L8: + r6 = load_address PyBytes_Type + r7 = [val] + r8 = load_address r7 + r9 = PyObject_Vectorcall(r6, r8, 1, 0) + if is_error(r9) goto L51 (error at to_bytes:23) else goto L9 +L9: + r10 = cast(bytes, r9) + if is_error(r10) goto L51 (error at to_bytes:23) else goto L10 +L10: + return r10 +L11: + r11 = PyBool_Check(val) + if r11 goto L12 else goto L17 :: bool +L12: + r12 = unbox(bool, val) + if is_error(r12) goto L51 (error at to_bytes:25) else goto L13 +L13: + if r12 goto L14 else goto L15 :: bool +L14: + r13 = b'\x01' + inc_ref r13 + r14 = r13 + goto L16 +L15: + r15 = b'\x00' + inc_ref r15 + r14 = r15 +L16: + return r14 +L17: + r16 = PyLong_Check(val) + if r16 goto L18 else goto L37 :: bool +L18: + r17 = unbox(int, val) + if is_error(r17) goto L51 (error at to_bytes:29) else goto L19 +L19: + r18 = r17 & 1 + r19 = r18 != 0 + if r19 goto L21 else goto L20 :: bool +L20: + r20 = 0 & 1 + r21 = r20 != 0 + if r21 goto L21 else goto L22 :: bool +L21: + r22 = CPyTagged_IsLt_(r17, 0) + r23 = r22 + goto L23 +L22: + r24 = r17 < 0 :: signed + r23 = r24 +L23: + dec_ref r17 :: int + if r23 goto L24 else goto L31 :: bool +L24: + r25 = 'Cannot convert negative integer ' + r26 = unbox(int, val) + if is_error(r26) goto L51 (error at to_bytes:30) else goto L25 +L25: + r27 = CPyTagged_Str(r26) + dec_ref r26 :: int + if is_error(r27) goto L51 (error at to_bytes:30) else goto L26 +L26: + r28 = ' to bytes' + r29 = CPyStr_Build(3, r25, r27, r28) + dec_ref r27 + if is_error(r29) goto L51 (error at to_bytes:30) else goto L27 +L27: + r30 = builtins :: module + r31 = 'ValueError' + r32 = CPyObject_GetAttr(r30, r31) + if is_error(r32) goto L52 (error at to_bytes:30) else goto L28 +L28: + r33 = [r29] + r34 = load_address r33 + r35 = PyObject_Vectorcall(r32, r34, 1, 0) + dec_ref r32 + if is_error(r35) goto L52 (error at to_bytes:30) else goto L29 +L29: + dec_ref r29 + CPy_Raise(r35) + dec_ref r35 + if not 0 goto L51 (error at to_bytes:30) else goto L30 :: bool +L30: + unreachable +L31: + r36 = unbox(int, val) + if is_error(r36) goto L51 (error at to_bytes:32) else goto L32 +L32: + r37 = builtins :: module + r38 = 'hex' + r39 = CPyObject_GetAttr(r37, r38) + if is_error(r39) goto L53 (error at to_bytes:32) else goto L33 +L33: + r40 = box(int, r36) + r41 = [r40] + r42 = load_address r41 + r43 = PyObject_Vectorcall(r39, r42, 1, 0) + dec_ref r39 + if is_error(r43) goto L54 (error at to_bytes:32) else goto L34 +L34: + dec_ref r40 + r44 = cast(str, r43) + if is_error(r44) goto L51 (error at to_bytes:32) else goto L35 +L35: + r45 = to_bytes(r44) + dec_ref r44 + if is_error(r45) goto L51 (error at to_bytes:32) else goto L36 +L36: + return r45 +L37: + r46 = builtins :: module + r47 = 'memoryview' + r48 = CPyObject_GetAttr(r46, r47) + if is_error(r48) goto L51 (error at to_bytes:33) else goto L38 +L38: + r49 = PyObject_IsInstance(val, r48) + dec_ref r48 + r50 = r49 >= 0 :: signed + if not r50 goto L51 (error at to_bytes:33) else goto L39 :: bool +L39: + r51 = truncate r49: i32 to builtins.bool + if r51 goto L40 else goto L43 :: bool +L40: + r52 = load_address PyBytes_Type + r53 = [val] + r54 = load_address r53 + r55 = PyObject_Vectorcall(r52, r54, 1, 0) + if is_error(r55) goto L51 (error at to_bytes:34) else goto L41 +L41: + r56 = cast(bytes, r55) + if is_error(r56) goto L51 (error at to_bytes:34) else goto L42 +L42: + return r56 +L43: + r57 = '' + r58 = 'Cannot convert ' + r59 = '{!r:{}}' + r60 = '' + r61 = 'format' + r62 = [r59, val, r60] + r63 = load_address r62 + r64 = PyObject_VectorcallMethod(r61, r63, 9223372036854775811, 0) + if is_error(r64) goto L51 (error at to_bytes:36) else goto L44 +L44: + r65 = ' of type ' + r66 = '{:{}}' + r67 = CPy_TYPE(val) + r68 = '' + r69 = 'format' + r70 = [r66, r67, r68] + r71 = load_address r70 + r72 = PyObject_VectorcallMethod(r69, r71, 9223372036854775811, 0) + if is_error(r72) goto L55 (error at to_bytes:36) else goto L45 +L45: + dec_ref r67 + r73 = ' to bytes' + r74 = PyList_New(5) + if is_error(r74) goto L56 (error at to_bytes:36) else goto L46 +L46: + r75 = get_element_ptr r74 ob_item :: PyListObject + r76 = load_mem r75 :: ptr* + inc_ref r58 + set_mem r76, r58 :: builtins.object* + r77 = r76 + 8 + set_mem r77, r64 :: builtins.object* + inc_ref r65 + r78 = r76 + 16 + set_mem r78, r65 :: builtins.object* + r79 = r76 + 24 + set_mem r79, r72 :: builtins.object* + inc_ref r73 + r80 = r76 + 32 + set_mem r80, r73 :: builtins.object* + r81 = PyUnicode_Join(r57, r74) + dec_ref r74 + if is_error(r81) goto L51 (error at to_bytes:36) else goto L47 +L47: + r82 = builtins :: module + r83 = 'TypeError' + r84 = CPyObject_GetAttr(r82, r83) + if is_error(r84) goto L57 (error at to_bytes:36) else goto L48 +L48: + r85 = [r81] + r86 = load_address r85 + r87 = PyObject_Vectorcall(r84, r86, 1, 0) + dec_ref r84 + if is_error(r87) goto L57 (error at to_bytes:36) else goto L49 +L49: + dec_ref r81 + CPy_Raise(r87) + dec_ref r87 + if not 0 goto L51 (error at to_bytes:36) else goto L50 :: bool +L50: + unreachable +L51: + r88 = :: bytes + return r88 +L52: + dec_ref r29 + goto L51 +L53: + dec_ref r36 :: int + goto L51 +L54: + dec_ref r40 + goto L51 +L55: + dec_ref r64 + dec_ref r67 + goto L51 +L56: + dec_ref r64 + dec_ref r72 + goto L51 +L57: + dec_ref r81 + goto L51 + +def hexstr_to_bytes(hexstr): + hexstr, r0, r1 :: str + r2 :: tuple[str, str] + r3 :: object + r4 :: bool + r5 :: object + r6, non_prefixed_hex :: str + r7 :: native_int + r8 :: bit + r9 :: short_int + r10 :: int + r11 :: bit + r12, r13, padded_hex :: str + r14 :: bytes + r15 :: tuple[object, object, object] + r16 :: object + r17 :: str + r18 :: object + r19 :: bit + r20, r21, r22 :: str + r23 :: object + r24 :: str + r25 :: object + r26 :: object[1] + r27 :: object_ptr + r28 :: object + r29 :: bit + r30 :: object + r31 :: bool + r32 :: object[1] + r33 :: object_ptr + r34 :: object + r35, r36 :: bytes +L0: + r0 = '0x' + r1 = '0X' + inc_ref r0 + inc_ref r1 + r2 = (r0, r1) + r3 = box(tuple[str, str], r2) + r4 = CPyStr_Startswith(hexstr, r3) + dec_ref r3 + if is_error(r4) goto L31 (error at hexstr_to_bytes:40) else goto L1 +L1: + if r4 goto L2 else goto L5 :: bool +L2: + r5 = CPyStr_GetSlice(hexstr, 4, 9223372036854775806) + if is_error(r5) goto L31 (error at hexstr_to_bytes:41) else goto L3 +L3: + r6 = cast(str, r5) + if is_error(r6) goto L31 (error at hexstr_to_bytes:41) else goto L4 +L4: + non_prefixed_hex = r6 + goto L6 +L5: + inc_ref hexstr + non_prefixed_hex = hexstr +L6: + r7 = CPyStr_Size_size_t(hexstr) + r8 = r7 >= 0 :: signed + if not r8 goto L32 (error at hexstr_to_bytes:46) else goto L7 :: bool +L7: + r9 = r7 << 1 + r10 = CPyTagged_Remainder(r9, 4) + if is_error(r10) goto L32 (error at hexstr_to_bytes:46) else goto L8 +L8: + r11 = r10 != 0 + dec_ref r10 :: int + if r11 goto L9 else goto L11 :: bool +L9: + r12 = '0' + r13 = PyUnicode_Concat(r12, non_prefixed_hex) + dec_ref non_prefixed_hex + if is_error(r13) goto L31 (error at hexstr_to_bytes:47) else goto L10 +L10: + padded_hex = r13 + goto L12 +L11: + padded_hex = non_prefixed_hex +L12: + r14 = PyUnicode_AsASCIIString(padded_hex) + if is_error(r14) goto L14 (error at hexstr_to_bytes:52) else goto L33 +L13: + goto L25 +L14: + r15 = CPy_CatchError() + r16 = builtins :: module + r17 = 'UnicodeDecodeError' + r18 = CPyObject_GetAttr(r16, r17) + if is_error(r18) goto L34 (error at hexstr_to_bytes:53) else goto L15 +L15: + r19 = CPy_ExceptionMatches(r18) + dec_ref r18 + if r19 goto L16 else goto L35 :: bool +L16: + r20 = 'hex string ' + r21 = ' may only contain [0-9a-fA-F] characters' + r22 = CPyStr_Build(3, r20, padded_hex, r21) + dec_ref padded_hex + if is_error(r22) goto L23 (error at hexstr_to_bytes:55) else goto L17 +L17: + r23 = builtins :: module + r24 = 'ValueError' + r25 = CPyObject_GetAttr(r23, r24) + if is_error(r25) goto L36 (error at hexstr_to_bytes:54) else goto L18 +L18: + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L36 (error at hexstr_to_bytes:54) else goto L19 +L19: + dec_ref r22 + CPy_Raise(r28) + dec_ref r28 + if not 0 goto L23 (error at hexstr_to_bytes:54) else goto L37 :: bool +L20: + unreachable +L21: + CPy_Reraise() + if not 0 goto L23 else goto L38 :: bool +L22: + unreachable +L23: + CPy_RestoreExcInfo(r15) + dec_ref r15 + r29 = CPy_KeepPropagating() + if not r29 goto L31 else goto L24 :: bool +L24: + unreachable +L25: + r30 = faster_hexbytes._utils.unhexlify :: static + if is_error(r30) goto L39 else goto L28 +L26: + r31 = raise NameError('value for final name "unhexlify" was not set') + if not r31 goto L31 (error at hexstr_to_bytes:58) else goto L27 :: bool +L27: + unreachable +L28: + r32 = [r14] + r33 = load_address r32 + r34 = PyObject_Vectorcall(r30, r33, 1, 0) + if is_error(r34) goto L40 (error at hexstr_to_bytes:58) else goto L29 +L29: + dec_ref r14 + r35 = cast(bytes, r34) + if is_error(r35) goto L31 (error at hexstr_to_bytes:58) else goto L30 +L30: + return r35 +L31: + r36 = :: bytes + return r36 +L32: + dec_ref non_prefixed_hex + goto L31 +L33: + dec_ref padded_hex + goto L13 +L34: + dec_ref padded_hex + goto L23 +L35: + dec_ref padded_hex + goto L21 +L36: + dec_ref r22 + goto L23 +L37: + dec_ref r15 + goto L20 +L38: + dec_ref r15 + goto L22 +L39: + dec_ref r14 + goto L26 +L40: + dec_ref r14 + goto L31 + +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4 :: object + r5 :: object_ptr + r6 :: object_ptr[1] + r7 :: c_ptr + r8 :: native_int[1] + r9 :: c_ptr + r10 :: object + r11 :: dict + r12, r13 :: str + r14 :: bit + r15 :: object + r16 :: str + r17 :: dict + r18, r19 :: object + r20 :: str + r21 :: object + r22 :: dict + r23 :: str + r24 :: i32 + r25 :: bit + r26 :: None +L0: + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool +L1: + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L8 (error at :-1) else goto L2 +L2: + builtins = r4 :: module + dec_ref r4 +L3: + r5 = load_address binascii :: module + r6 = [r5] + r7 = load_address r6 + r8 = [1] + r9 = load_address r8 + r10 = (('binascii', 'binascii', 'binascii'),) + r11 = faster_hexbytes._utils.globals :: static + r12 = 'faster_hexbytes/_utils.py' + r13 = '' + r14 = CPyImport_ImportMany(r10, r7, r11, r12, r13, r9) + if not r14 goto L8 else goto L4 :: bool +L4: + r15 = ('Final', 'Union') + r16 = 'typing' + r17 = faster_hexbytes._utils.globals :: static + r18 = CPyImport_ImportFromMany(r16, r15, r15, r17) + if is_error(r18) goto L8 (error at :2) else goto L5 +L5: + typing = r18 :: module + dec_ref r18 + r19 = binascii :: module + r20 = 'unhexlify' + r21 = CPyObject_GetAttr(r19, r20) + if is_error(r21) goto L8 (error at :8) else goto L6 +L6: + faster_hexbytes._utils.unhexlify = r21 :: static + r22 = faster_hexbytes._utils.globals :: static + r23 = 'unhexlify' + r24 = CPyDict_SetItem(r22, r23, r21) + dec_ref r21 + r25 = r24 >= 0 :: signed + if not r25 goto L8 (error at :8) else goto L7 :: bool +L7: + return 1 +L8: + r26 = :: None + return r26 + +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4, r5, r6 :: object + r7 :: str + r8 :: dict + r9, r10 :: object + r11 :: str + r12 :: dict + r13 :: object + r14 :: str + r15 :: list + r16, r17 :: ptr + r18 :: dict + r19 :: str + r20 :: i32 + r21 :: bit + r22 :: str + r23 :: dict + r24 :: str + r25 :: object + r26 :: object[1] + r27 :: object_ptr + r28 :: object + r29 :: str + r30 :: dict + r31 :: str + r32 :: i32 + r33 :: bit + r34 :: None +L0: + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool +L1: + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L12 (error at :-1) else goto L2 +L2: + builtins = r4 :: module + dec_ref r4 +L3: + r5 = ('version',) + r6 = ('__version',) + r7 = 'importlib.metadata' + r8 = faster_hexbytes.globals :: static + r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) + if is_error(r9) goto L12 (error at :1) else goto L4 +L4: + importlib.metadata = r9 :: module + dec_ref r9 + r10 = ('HexBytes',) + r11 = 'faster_hexbytes.main' + r12 = faster_hexbytes.globals :: static + r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) + if is_error(r13) goto L12 (error at :5) else goto L5 +L5: + faster_hexbytes.main = r13 :: module + dec_ref r13 + r14 = 'HexBytes' + r15 = PyList_New(1) + if is_error(r15) goto L12 (error at :9) else goto L6 +L6: + r16 = get_element_ptr r15 ob_item :: PyListObject + r17 = load_mem r16 :: ptr* + inc_ref r14 + set_mem r17, r14 :: builtins.object* + r18 = faster_hexbytes.globals :: static + r19 = '__all__' + r20 = CPyDict_SetItem(r18, r19, r15) + dec_ref r15 + r21 = r20 >= 0 :: signed + if not r21 goto L12 (error at :9) else goto L7 :: bool +L7: + r22 = 'hexbytes' + r23 = faster_hexbytes.globals :: static + r24 = '__version' + r25 = CPyDict_GetItem(r23, r24) + if is_error(r25) goto L12 (error at :11) else goto L8 +L8: + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L12 (error at :11) else goto L9 +L9: + r29 = cast(str, r28) + if is_error(r29) goto L12 (error at :11) else goto L10 +L10: + r30 = faster_hexbytes.globals :: static + r31 = '__version__' + r32 = CPyDict_SetItem(r30, r31, r29) + dec_ref r29 + r33 = r32 >= 0 :: signed + if not r33 goto L12 (error at :11) else goto L11 :: bool +L11: + return 1 +L12: + r34 = :: None + return r34 From 3373a250467a4de59c3a062e955465e2b3f1e4bf Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Tue, 30 Sep 2025 02:35:32 -0400 Subject: [PATCH 37/98] fix broken benchmarks --- benchmarks/params.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/benchmarks/params.py b/benchmarks/params.py index 5dcf67c..1f65047 100644 --- a/benchmarks/params.py +++ b/benchmarks/params.py @@ -68,7 +68,6 @@ def variant_ids(base_ids: List[str], prefix: str) -> List[str]: ("0x" + "00" * 64, "'0x'+'00'*64"), ("0xabcdef", "'0xabcdef'"), ("0x" + "a" * 128, "'0x'+'a'*128"), - ("unicode-✓-测试", "unicode string"), ("0xdeadbeef", "'0xdeadbeef'"), ("0xCAFEBABE", "'0xCAFEBABE'"), ] @@ -78,7 +77,6 @@ def variant_ids(base_ids: List[str], prefix: str) -> List[str]: INT_CASES: List[Tuple[int, str]] = [ (123456, "123456"), (0, "0"), - (-1, "-1"), (2**8, "2**8"), (2**16, "2**16"), (2**32, "2**32"), From 6b828d47a5f574666ba14989df568edc19eb3a37 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 30 Sep 2025 06:35:59 +0000 Subject: [PATCH 38/98] chore: compile C files for source control --- build/ops.txt | 206 +++++++++++++++++++++++++------------------------- 1 file changed, 103 insertions(+), 103 deletions(-) diff --git a/build/ops.txt b/build/ops.txt index 936de4d..5ed80ec 100644 --- a/build/ops.txt +++ b/build/ops.txt @@ -788,6 +788,109 @@ L55: dec_ref r116 goto L48 +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4, r5, r6 :: object + r7 :: str + r8 :: dict + r9, r10 :: object + r11 :: str + r12 :: dict + r13 :: object + r14 :: str + r15 :: list + r16, r17 :: ptr + r18 :: dict + r19 :: str + r20 :: i32 + r21 :: bit + r22 :: str + r23 :: dict + r24 :: str + r25 :: object + r26 :: object[1] + r27 :: object_ptr + r28 :: object + r29 :: str + r30 :: dict + r31 :: str + r32 :: i32 + r33 :: bit + r34 :: None +L0: + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool +L1: + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L12 (error at :-1) else goto L2 +L2: + builtins = r4 :: module + dec_ref r4 +L3: + r5 = ('version',) + r6 = ('__version',) + r7 = 'importlib.metadata' + r8 = faster_hexbytes.globals :: static + r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) + if is_error(r9) goto L12 (error at :1) else goto L4 +L4: + importlib.metadata = r9 :: module + dec_ref r9 + r10 = ('HexBytes',) + r11 = 'faster_hexbytes.main' + r12 = faster_hexbytes.globals :: static + r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) + if is_error(r13) goto L12 (error at :5) else goto L5 +L5: + faster_hexbytes.main = r13 :: module + dec_ref r13 + r14 = 'HexBytes' + r15 = PyList_New(1) + if is_error(r15) goto L12 (error at :9) else goto L6 +L6: + r16 = get_element_ptr r15 ob_item :: PyListObject + r17 = load_mem r16 :: ptr* + inc_ref r14 + set_mem r17, r14 :: builtins.object* + r18 = faster_hexbytes.globals :: static + r19 = '__all__' + r20 = CPyDict_SetItem(r18, r19, r15) + dec_ref r15 + r21 = r20 >= 0 :: signed + if not r21 goto L12 (error at :9) else goto L7 :: bool +L7: + r22 = 'hexbytes' + r23 = faster_hexbytes.globals :: static + r24 = '__version' + r25 = CPyDict_GetItem(r23, r24) + if is_error(r25) goto L12 (error at :11) else goto L8 +L8: + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L12 (error at :11) else goto L9 +L9: + r29 = cast(str, r28) + if is_error(r29) goto L12 (error at :11) else goto L10 +L10: + r30 = faster_hexbytes.globals :: static + r31 = '__version__' + r32 = CPyDict_SetItem(r30, r31, r29) + dec_ref r29 + r33 = r32 >= 0 :: signed + if not r33 goto L12 (error at :11) else goto L11 :: bool +L11: + return 1 +L12: + r34 = :: None + return r34 + def to_bytes(val): val :: union[bytes, str, object, bool, int] r0 :: bit @@ -1361,106 +1464,3 @@ L7: L8: r26 = :: None return r26 - -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4, r5, r6 :: object - r7 :: str - r8 :: dict - r9, r10 :: object - r11 :: str - r12 :: dict - r13 :: object - r14 :: str - r15 :: list - r16, r17 :: ptr - r18 :: dict - r19 :: str - r20 :: i32 - r21 :: bit - r22 :: str - r23 :: dict - r24 :: str - r25 :: object - r26 :: object[1] - r27 :: object_ptr - r28 :: object - r29 :: str - r30 :: dict - r31 :: str - r32 :: i32 - r33 :: bit - r34 :: None -L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool -L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L12 (error at :-1) else goto L2 -L2: - builtins = r4 :: module - dec_ref r4 -L3: - r5 = ('version',) - r6 = ('__version',) - r7 = 'importlib.metadata' - r8 = faster_hexbytes.globals :: static - r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) - if is_error(r9) goto L12 (error at :1) else goto L4 -L4: - importlib.metadata = r9 :: module - dec_ref r9 - r10 = ('HexBytes',) - r11 = 'faster_hexbytes.main' - r12 = faster_hexbytes.globals :: static - r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) - if is_error(r13) goto L12 (error at :5) else goto L5 -L5: - faster_hexbytes.main = r13 :: module - dec_ref r13 - r14 = 'HexBytes' - r15 = PyList_New(1) - if is_error(r15) goto L12 (error at :9) else goto L6 -L6: - r16 = get_element_ptr r15 ob_item :: PyListObject - r17 = load_mem r16 :: ptr* - inc_ref r14 - set_mem r17, r14 :: builtins.object* - r18 = faster_hexbytes.globals :: static - r19 = '__all__' - r20 = CPyDict_SetItem(r18, r19, r15) - dec_ref r15 - r21 = r20 >= 0 :: signed - if not r21 goto L12 (error at :9) else goto L7 :: bool -L7: - r22 = 'hexbytes' - r23 = faster_hexbytes.globals :: static - r24 = '__version' - r25 = CPyDict_GetItem(r23, r24) - if is_error(r25) goto L12 (error at :11) else goto L8 -L8: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L12 (error at :11) else goto L9 -L9: - r29 = cast(str, r28) - if is_error(r29) goto L12 (error at :11) else goto L10 -L10: - r30 = faster_hexbytes.globals :: static - r31 = '__version__' - r32 = CPyDict_SetItem(r30, r31, r29) - dec_ref r29 - r33 = r32 >= 0 :: signed - if not r33 goto L12 (error at :11) else goto L11 :: bool -L11: - return 1 -L12: - r34 = :: None - return r34 From 1ae7b824113dea3c5a11c9e0908223035a96b497 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Tue, 30 Sep 2025 03:00:10 -0400 Subject: [PATCH 39/98] Update test__utils_benchmarks.py --- benchmarks/test__utils_benchmarks.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/benchmarks/test__utils_benchmarks.py b/benchmarks/test__utils_benchmarks.py index e40d538..d0a1c97 100644 --- a/benchmarks/test__utils_benchmarks.py +++ b/benchmarks/test__utils_benchmarks.py @@ -1,4 +1,4 @@ -from typing import Any +from typing import Any, Callable import hexbytes._utils import pytest @@ -11,22 +11,26 @@ HEXSTRINGS, HEXSTRINGS_IDS, ) +def run_100(func: Callable[..., Any], *args: Any) -> None: + for i in range(100): + func(*args) + @pytest.mark.benchmark(group="to_bytes") @pytest.mark.parametrize("val", TO_BYTES_VALS, ids=TO_BYTES_IDS) def test_to_bytes(benchmark: BenchmarkFixture, val: Any) -> None: - benchmark(hexbytes._utils.to_bytes, val) + benchmark(run_100, hexbytes._utils.to_bytes, val) @pytest.mark.benchmark(group="to_bytes") @pytest.mark.parametrize("val", TO_BYTES_VALS, ids=TO_BYTES_IDS) def test_faster_to_bytes(benchmark: BenchmarkFixture, val: Any) -> None: - benchmark(faster_hexbytes._utils.to_bytes, val) + benchmark(run_100, faster_hexbytes._utils.to_bytes, val) @pytest.mark.benchmark(group="hexstr_to_bytes") @pytest.mark.parametrize("hexstr", HEXSTRINGS, ids=HEXSTRINGS_IDS) def test_hexstr_to_bytes(benchmark: BenchmarkFixture, hexstr: HexStr) -> None: - benchmark(hexbytes._utils.hexstr_to_bytes, hexstr) + benchmark(run_100, hexbytes._utils.hexstr_to_bytes, hexstr) @pytest.mark.benchmark(group="hexstr_to_bytes") @pytest.mark.parametrize("hexstr", HEXSTRINGS, ids=HEXSTRINGS_IDS) def test_faster_hexstr_to_bytes(benchmark: BenchmarkFixture, hexstr: HexStr) -> None: - benchmark(faster_hexbytes._utils.hexstr_to_bytes, hexstr) + benchmark(run_100, faster_hexbytes._utils.hexstr_to_bytes, hexstr) From 6a83b63ae1daecf5575eb35ac67d9fd123677149 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 30 Sep 2025 07:00:39 +0000 Subject: [PATCH 40/98] chore: compile C files for source control --- build/ops.txt | 2546 ++++++++++++++++++++++++------------------------- 1 file changed, 1273 insertions(+), 1273 deletions(-) diff --git a/build/ops.txt b/build/ops.txt index 5ed80ec..d40a5c1 100644 --- a/build/ops.txt +++ b/build/ops.txt @@ -1,323 +1,641 @@ -def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __new___HexBytes_obj.__call__(__mypyc_self__, cls, val): - __mypyc_self__ :: faster_hexbytes.main.__new___HexBytes_obj - cls :: object - val :: union[bytes, str, bool, object, int] - r0 :: bytes - r1 :: object - r2 :: bool - r3 :: object[2] - r4 :: object_ptr - r5 :: object - r6, r7 :: faster_hexbytes.main.HexBytes -L0: - r0 = to_bytes(val) - if is_error(r0) goto L7 (error at __new__:49) else goto L1 -L1: - r1 = faster_hexbytes.main._bytes_new :: static - if is_error(r1) goto L8 else goto L4 -L2: - r2 = raise NameError('value for final name "_bytes_new" was not set') - if not r2 goto L7 (error at __new__:50) else goto L3 :: bool -L3: - unreachable -L4: - r3 = [cls, r0] - r4 = load_address r3 - r5 = PyObject_Vectorcall(r1, r4, 2, 0) - if is_error(r5) goto L9 (error at __new__:50) else goto L5 -L5: - dec_ref r0 - r6 = cast(faster_hexbytes.main.HexBytes, r5) - if is_error(r6) goto L7 (error at __new__:50) else goto L6 -L6: - return r6 -L7: - r7 = :: faster_hexbytes.main.HexBytes - return r7 -L8: - dec_ref r0 - goto L2 -L9: - dec_ref r0 - goto L7 - -def __getitem___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __getitem___HexBytes_obj.__call__(__mypyc_self__, self, key): - __mypyc_self__ :: faster_hexbytes.main.__getitem___HexBytes_obj - self :: faster_hexbytes.main.HexBytes - key, r0 :: object - r1 :: str - r2 :: object[3] - r3 :: object_ptr - r4 :: object - r5 :: union[int, bytes] - r6 :: bit - r7 :: int - r8, r9, r10 :: object +def to_bytes(val): + val :: union[bytes, str, object, bool, int] + r0 :: bit + r1 :: bytes + r2 :: bit + r3 :: str + r4 :: bytes + r5 :: bit + r6 :: object + r7 :: object[1] + r8 :: object_ptr + r9 :: object + r10 :: bytes r11 :: bit - r12 :: bytes - r13 :: object - r14 :: object[1] - r15 :: object_ptr - r16 :: object - r17 :: faster_hexbytes.main.HexBytes - r18 :: bytes - r19 :: object[1] - r20 :: object_ptr - r21 :: object - r22 :: faster_hexbytes.main.HexBytes - r23 :: union[int, faster_hexbytes.main.HexBytes] + r12 :: bool + r13, r14, r15 :: bytes + r16 :: bit + r17 :: int + r18 :: native_int + r19 :: bit + r20 :: native_int + r21, r22 :: bit + r23 :: bool + r24 :: bit + r25 :: str + r26 :: int + r27, r28, r29 :: str + r30 :: object + r31 :: str + r32 :: object + r33 :: object[1] + r34 :: object_ptr + r35 :: object + r36 :: int + r37 :: object + r38 :: str + r39, r40 :: object + r41 :: object[1] + r42 :: object_ptr + r43 :: object + r44 :: str + r45 :: bytes + r46 :: object + r47 :: str + r48 :: object + r49 :: i32 + r50 :: bit + r51 :: bool + r52 :: object + r53 :: object[1] + r54 :: object_ptr + r55 :: object + r56 :: bytes + r57, r58, r59, r60, r61 :: str + r62 :: object[3] + r63 :: object_ptr + r64 :: object + r65, r66 :: str + r67 :: object + r68, r69 :: str + r70 :: object[3] + r71 :: object_ptr + r72 :: object + r73 :: str + r74 :: list + r75, r76, r77, r78, r79, r80 :: ptr + r81 :: str + r82 :: object + r83 :: str + r84 :: object + r85 :: object[1] + r86 :: object_ptr + r87 :: object + r88 :: bytes L0: - r0 = load_address PyBytes_Type - r1 = '__getitem__' - r2 = [r0, self, key] - r3 = load_address r2 - r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775811, 0) - if is_error(r4) goto L14 (error at __getitem__:63) else goto L1 + r0 = PyBytes_Check(val) + if r0 goto L1 else goto L3 :: bool L1: - r5 = cast(union[int, bytes], r4) - if is_error(r5) goto L14 (error at __getitem__:63) else goto L2 + inc_ref val + r1 = cast(bytes, val) + if is_error(r1) goto L51 (error at to_bytes:19) else goto L2 L2: - r6 = PyLong_Check(r5) - if r6 goto L3 else goto L5 :: bool + return r1 L3: - r7 = unbox(int, r5) - dec_ref r5 - if is_error(r7) goto L14 (error at __getitem__:65) else goto L4 + r2 = PyUnicode_Check(val) + if r2 goto L4 else goto L7 :: bool L4: - r8 = box(int, r7) - return r8 + inc_ref val + r3 = cast(str, val) + if is_error(r3) goto L51 (error at to_bytes:21) else goto L5 L5: - r9 = CPy_TYPE(self) - r10 = faster_hexbytes.main.HexBytes :: type - r11 = r9 == r10 - if r11 goto L15 else goto L10 :: bool + r4 = hexstr_to_bytes(r3) + dec_ref r3 + if is_error(r4) goto L51 (error at to_bytes:21) else goto L6 L6: - r12 = cast(bytes, r5) - if is_error(r12) goto L14 (error at __getitem__:69) else goto L7 + return r4 L7: - r13 = faster_hexbytes.main.HexBytes :: type - r14 = [r12] - r15 = load_address r14 - r16 = PyObject_Vectorcall(r13, r15, 1, 0) - if is_error(r16) goto L16 (error at __getitem__:69) else goto L8 + r5 = PyByteArray_Check(val) + if r5 goto L8 else goto L11 :: bool L8: - dec_ref r12 - r17 = cast(faster_hexbytes.main.HexBytes, r16) - if is_error(r17) goto L14 (error at __getitem__:69) else goto L9 + r6 = load_address PyBytes_Type + r7 = [val] + r8 = load_address r7 + r9 = PyObject_Vectorcall(r6, r8, 1, 0) + if is_error(r9) goto L51 (error at to_bytes:23) else goto L9 L9: - return r17 + r10 = cast(bytes, r9) + if is_error(r10) goto L51 (error at to_bytes:23) else goto L10 L10: - r18 = cast(bytes, r5) - if is_error(r18) goto L17 (error at __getitem__:70) else goto L11 + return r10 L11: - r19 = [r18] - r20 = load_address r19 - r21 = PyObject_Vectorcall(r9, r20, 1, 0) - dec_ref r9 - if is_error(r21) goto L18 (error at __getitem__:70) else goto L12 + r11 = PyBool_Check(val) + if r11 goto L12 else goto L17 :: bool L12: - dec_ref r18 - r22 = cast(faster_hexbytes.main.HexBytes, r21) - if is_error(r22) goto L14 (error at __getitem__:70) else goto L13 + r12 = unbox(bool, val) + if is_error(r12) goto L51 (error at to_bytes:25) else goto L13 L13: - return r22 + if r12 goto L14 else goto L15 :: bool L14: - r23 = :: union[int, faster_hexbytes.main.HexBytes] - return r23 -L15: - dec_ref r9 - goto L6 + r13 = b'\x01' + inc_ref r13 + r14 = r13 + goto L16 +L15: + r15 = b'\x00' + inc_ref r15 + r14 = r15 L16: - dec_ref r12 - goto L14 + return r14 L17: - dec_ref r9 - goto L14 + r16 = PyLong_Check(val) + if r16 goto L18 else goto L37 :: bool L18: - dec_ref r18 - goto L14 + r17 = unbox(int, val) + if is_error(r17) goto L51 (error at to_bytes:29) else goto L19 +L19: + r18 = r17 & 1 + r19 = r18 != 0 + if r19 goto L21 else goto L20 :: bool +L20: + r20 = 0 & 1 + r21 = r20 != 0 + if r21 goto L21 else goto L22 :: bool +L21: + r22 = CPyTagged_IsLt_(r17, 0) + r23 = r22 + goto L23 +L22: + r24 = r17 < 0 :: signed + r23 = r24 +L23: + dec_ref r17 :: int + if r23 goto L24 else goto L31 :: bool +L24: + r25 = 'Cannot convert negative integer ' + r26 = unbox(int, val) + if is_error(r26) goto L51 (error at to_bytes:30) else goto L25 +L25: + r27 = CPyTagged_Str(r26) + dec_ref r26 :: int + if is_error(r27) goto L51 (error at to_bytes:30) else goto L26 +L26: + r28 = ' to bytes' + r29 = CPyStr_Build(3, r25, r27, r28) + dec_ref r27 + if is_error(r29) goto L51 (error at to_bytes:30) else goto L27 +L27: + r30 = builtins :: module + r31 = 'ValueError' + r32 = CPyObject_GetAttr(r30, r31) + if is_error(r32) goto L52 (error at to_bytes:30) else goto L28 +L28: + r33 = [r29] + r34 = load_address r33 + r35 = PyObject_Vectorcall(r32, r34, 1, 0) + dec_ref r32 + if is_error(r35) goto L52 (error at to_bytes:30) else goto L29 +L29: + dec_ref r29 + CPy_Raise(r35) + dec_ref r35 + if not 0 goto L51 (error at to_bytes:30) else goto L30 :: bool +L30: + unreachable +L31: + r36 = unbox(int, val) + if is_error(r36) goto L51 (error at to_bytes:32) else goto L32 +L32: + r37 = builtins :: module + r38 = 'hex' + r39 = CPyObject_GetAttr(r37, r38) + if is_error(r39) goto L53 (error at to_bytes:32) else goto L33 +L33: + r40 = box(int, r36) + r41 = [r40] + r42 = load_address r41 + r43 = PyObject_Vectorcall(r39, r42, 1, 0) + dec_ref r39 + if is_error(r43) goto L54 (error at to_bytes:32) else goto L34 +L34: + dec_ref r40 + r44 = cast(str, r43) + if is_error(r44) goto L51 (error at to_bytes:32) else goto L35 +L35: + r45 = to_bytes(r44) + dec_ref r44 + if is_error(r45) goto L51 (error at to_bytes:32) else goto L36 +L36: + return r45 +L37: + r46 = builtins :: module + r47 = 'memoryview' + r48 = CPyObject_GetAttr(r46, r47) + if is_error(r48) goto L51 (error at to_bytes:33) else goto L38 +L38: + r49 = PyObject_IsInstance(val, r48) + dec_ref r48 + r50 = r49 >= 0 :: signed + if not r50 goto L51 (error at to_bytes:33) else goto L39 :: bool +L39: + r51 = truncate r49: i32 to builtins.bool + if r51 goto L40 else goto L43 :: bool +L40: + r52 = load_address PyBytes_Type + r53 = [val] + r54 = load_address r53 + r55 = PyObject_Vectorcall(r52, r54, 1, 0) + if is_error(r55) goto L51 (error at to_bytes:34) else goto L41 +L41: + r56 = cast(bytes, r55) + if is_error(r56) goto L51 (error at to_bytes:34) else goto L42 +L42: + return r56 +L43: + r57 = '' + r58 = 'Cannot convert ' + r59 = '{!r:{}}' + r60 = '' + r61 = 'format' + r62 = [r59, val, r60] + r63 = load_address r62 + r64 = PyObject_VectorcallMethod(r61, r63, 9223372036854775811, 0) + if is_error(r64) goto L51 (error at to_bytes:36) else goto L44 +L44: + r65 = ' of type ' + r66 = '{:{}}' + r67 = CPy_TYPE(val) + r68 = '' + r69 = 'format' + r70 = [r66, r67, r68] + r71 = load_address r70 + r72 = PyObject_VectorcallMethod(r69, r71, 9223372036854775811, 0) + if is_error(r72) goto L55 (error at to_bytes:36) else goto L45 +L45: + dec_ref r67 + r73 = ' to bytes' + r74 = PyList_New(5) + if is_error(r74) goto L56 (error at to_bytes:36) else goto L46 +L46: + r75 = get_element_ptr r74 ob_item :: PyListObject + r76 = load_mem r75 :: ptr* + inc_ref r58 + set_mem r76, r58 :: builtins.object* + r77 = r76 + 8 + set_mem r77, r64 :: builtins.object* + inc_ref r65 + r78 = r76 + 16 + set_mem r78, r65 :: builtins.object* + r79 = r76 + 24 + set_mem r79, r72 :: builtins.object* + inc_ref r73 + r80 = r76 + 32 + set_mem r80, r73 :: builtins.object* + r81 = PyUnicode_Join(r57, r74) + dec_ref r74 + if is_error(r81) goto L51 (error at to_bytes:36) else goto L47 +L47: + r82 = builtins :: module + r83 = 'TypeError' + r84 = CPyObject_GetAttr(r82, r83) + if is_error(r84) goto L57 (error at to_bytes:36) else goto L48 +L48: + r85 = [r81] + r86 = load_address r85 + r87 = PyObject_Vectorcall(r84, r86, 1, 0) + dec_ref r84 + if is_error(r87) goto L57 (error at to_bytes:36) else goto L49 +L49: + dec_ref r81 + CPy_Raise(r87) + dec_ref r87 + if not 0 goto L51 (error at to_bytes:36) else goto L50 :: bool +L50: + unreachable +L51: + r88 = :: bytes + return r88 +L52: + dec_ref r29 + goto L51 +L53: + dec_ref r36 :: int + goto L51 +L54: + dec_ref r40 + goto L51 +L55: + dec_ref r64 + dec_ref r67 + goto L51 +L56: + dec_ref r64 + dec_ref r72 + goto L51 +L57: + dec_ref r81 + goto L51 -def __repr___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object +def hexstr_to_bytes(hexstr): + hexstr, r0, r1 :: str + r2 :: tuple[str, str] + r3 :: object + r4 :: bool + r5 :: object + r6, non_prefixed_hex :: str + r7 :: native_int + r8 :: bit + r9 :: short_int + r10 :: int + r11 :: bit + r12, r13, padded_hex :: str + r14 :: bytes + r15 :: tuple[object, object, object] + r16 :: object + r17 :: str + r18 :: object + r19 :: bit + r20, r21, r22 :: str + r23 :: object + r24 :: str + r25 :: object + r26 :: object[1] + r27 :: object_ptr + r28 :: object + r29 :: bit + r30 :: object + r31 :: bool + r32 :: object[1] + r33 :: object_ptr + r34 :: object + r35, r36 :: bytes L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool + r0 = '0x' + r1 = '0X' + inc_ref r0 + inc_ref r1 + r2 = (r0, r1) + r3 = box(tuple[str, str], r2) + r4 = CPyStr_Startswith(hexstr, r3) + dec_ref r3 + if is_error(r4) goto L31 (error at hexstr_to_bytes:40) else goto L1 L1: - inc_ref __mypyc_self__ - return __mypyc_self__ + if r4 goto L2 else goto L5 :: bool L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __repr___HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.__repr___HexBytes_obj - self :: faster_hexbytes.main.HexBytes - r0, r1, r2, r3, r4 :: str - r5 :: object[1] - r6 :: object_ptr - r7 :: object - r8, r9, r10, r11 :: str - r12 :: object[3] - r13 :: object_ptr - r14 :: object - r15, r16 :: str - r17 :: list - r18, r19, r20, r21 :: ptr - r22, r23 :: str -L0: - r0 = '' - r1 = 'HexBytes(' - r2 = '{!r:{}}' - r3 = '0x' - r4 = 'hex' - r5 = [self] - r6 = load_address r5 - r7 = PyObject_VectorcallMethod(r4, r6, 9223372036854775809, 0) - if is_error(r7) goto L8 (error at __repr__:73) else goto L1 -L1: - r8 = cast(str, r7) - if is_error(r8) goto L8 (error at __repr__:73) else goto L2 -L2: - r9 = PyUnicode_Concat(r3, r8) - dec_ref r8 - if is_error(r9) goto L8 (error at __repr__:73) else goto L3 + r5 = CPyStr_GetSlice(hexstr, 4, 9223372036854775806) + if is_error(r5) goto L31 (error at hexstr_to_bytes:41) else goto L3 L3: - r10 = '' - r11 = 'format' - r12 = [r2, r9, r10] - r13 = load_address r12 - r14 = PyObject_VectorcallMethod(r11, r13, 9223372036854775811, 0) - if is_error(r14) goto L9 (error at __repr__:73) else goto L4 + r6 = cast(str, r5) + if is_error(r6) goto L31 (error at hexstr_to_bytes:41) else goto L4 L4: - dec_ref r9 - r15 = cast(str, r14) - if is_error(r15) goto L8 (error at __repr__:73) else goto L5 + non_prefixed_hex = r6 + goto L6 L5: - r16 = ')' - r17 = PyList_New(3) - if is_error(r17) goto L10 (error at __repr__:73) else goto L6 + inc_ref hexstr + non_prefixed_hex = hexstr L6: - r18 = get_element_ptr r17 ob_item :: PyListObject - r19 = load_mem r18 :: ptr* - inc_ref r1 - set_mem r19, r1 :: builtins.object* - r20 = r19 + 8 - set_mem r20, r15 :: builtins.object* - inc_ref r16 - r21 = r19 + 16 - set_mem r21, r16 :: builtins.object* - r22 = PyUnicode_Join(r0, r17) - dec_ref r17 - if is_error(r22) goto L8 (error at __repr__:73) else goto L7 + r7 = CPyStr_Size_size_t(hexstr) + r8 = r7 >= 0 :: signed + if not r8 goto L32 (error at hexstr_to_bytes:46) else goto L7 :: bool L7: - return r22 + r9 = r7 << 1 + r10 = CPyTagged_Remainder(r9, 4) + if is_error(r10) goto L32 (error at hexstr_to_bytes:46) else goto L8 L8: - r23 = :: str - return r23 + r11 = r10 != 0 + dec_ref r10 :: int + if r11 goto L9 else goto L11 :: bool L9: - dec_ref r9 - goto L8 + r12 = '0' + r13 = PyUnicode_Concat(r12, non_prefixed_hex) + dec_ref non_prefixed_hex + if is_error(r13) goto L31 (error at hexstr_to_bytes:47) else goto L10 L10: + padded_hex = r13 + goto L12 +L11: + padded_hex = non_prefixed_hex +L12: + r14 = PyUnicode_AsASCIIString(padded_hex) + if is_error(r14) goto L14 (error at hexstr_to_bytes:52) else goto L33 +L13: + goto L25 +L14: + r15 = CPy_CatchError() + r16 = builtins :: module + r17 = 'UnicodeDecodeError' + r18 = CPyObject_GetAttr(r16, r17) + if is_error(r18) goto L34 (error at hexstr_to_bytes:53) else goto L15 +L15: + r19 = CPy_ExceptionMatches(r18) + dec_ref r18 + if r19 goto L16 else goto L35 :: bool +L16: + r20 = 'hex string ' + r21 = ' may only contain [0-9a-fA-F] characters' + r22 = CPyStr_Build(3, r20, padded_hex, r21) + dec_ref padded_hex + if is_error(r22) goto L23 (error at hexstr_to_bytes:55) else goto L17 +L17: + r23 = builtins :: module + r24 = 'ValueError' + r25 = CPyObject_GetAttr(r23, r24) + if is_error(r25) goto L36 (error at hexstr_to_bytes:54) else goto L18 +L18: + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L36 (error at hexstr_to_bytes:54) else goto L19 +L19: + dec_ref r22 + CPy_Raise(r28) + dec_ref r28 + if not 0 goto L23 (error at hexstr_to_bytes:54) else goto L37 :: bool +L20: + unreachable +L21: + CPy_Reraise() + if not 0 goto L23 else goto L38 :: bool +L22: + unreachable +L23: + CPy_RestoreExcInfo(r15) dec_ref r15 - goto L8 + r29 = CPy_KeepPropagating() + if not r29 goto L31 else goto L24 :: bool +L24: + unreachable +L25: + r30 = faster_hexbytes._utils.unhexlify :: static + if is_error(r30) goto L39 else goto L28 +L26: + r31 = raise NameError('value for final name "unhexlify" was not set') + if not r31 goto L31 (error at hexstr_to_bytes:58) else goto L27 :: bool +L27: + unreachable +L28: + r32 = [r14] + r33 = load_address r32 + r34 = PyObject_Vectorcall(r30, r33, 1, 0) + if is_error(r34) goto L40 (error at hexstr_to_bytes:58) else goto L29 +L29: + dec_ref r14 + r35 = cast(bytes, r34) + if is_error(r35) goto L31 (error at hexstr_to_bytes:58) else goto L30 +L30: + return r35 +L31: + r36 = :: bytes + return r36 +L32: + dec_ref non_prefixed_hex + goto L31 +L33: + dec_ref padded_hex + goto L13 +L34: + dec_ref padded_hex + goto L23 +L35: + dec_ref padded_hex + goto L21 +L36: + dec_ref r22 + goto L23 +L37: + dec_ref r15 + goto L20 +L38: + dec_ref r15 + goto L22 +L39: + dec_ref r14 + goto L26 +L40: + dec_ref r14 + goto L31 -def to_0x_hex_HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4 :: object + r5 :: object_ptr + r6 :: object_ptr[1] + r7 :: c_ptr + r8 :: native_int[1] + r9 :: c_ptr + r10 :: object + r11 :: dict + r12, r13 :: str + r14 :: bit + r15 :: object + r16 :: str + r17 :: dict + r18, r19 :: object + r20 :: str + r21 :: object + r22 :: dict + r23 :: str + r24 :: i32 + r25 :: bit + r26 :: None L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool L1: - inc_ref __mypyc_self__ - return __mypyc_self__ + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L8 (error at :-1) else goto L2 L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 + builtins = r4 :: module + dec_ref r4 L3: - return r2 + r5 = load_address binascii :: module + r6 = [r5] + r7 = load_address r6 + r8 = [1] + r9 = load_address r8 + r10 = (('binascii', 'binascii', 'binascii'),) + r11 = faster_hexbytes._utils.globals :: static + r12 = 'faster_hexbytes/_utils.py' + r13 = '' + r14 = CPyImport_ImportMany(r10, r7, r11, r12, r13, r9) + if not r14 goto L8 else goto L4 :: bool L4: - r3 = :: object - return r3 - -def to_0x_hex_HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.to_0x_hex_HexBytes_obj - self :: faster_hexbytes.main.HexBytes - r0, r1 :: str - r2 :: object[1] - r3 :: object_ptr - r4 :: object - r5, r6, r7 :: str + r15 = ('Final', 'Union') + r16 = 'typing' + r17 = faster_hexbytes._utils.globals :: static + r18 = CPyImport_ImportFromMany(r16, r15, r15, r17) + if is_error(r18) goto L8 (error at :2) else goto L5 +L5: + typing = r18 :: module + dec_ref r18 + r19 = binascii :: module + r20 = 'unhexlify' + r21 = CPyObject_GetAttr(r19, r20) + if is_error(r21) goto L8 (error at :8) else goto L6 +L6: + faster_hexbytes._utils.unhexlify = r21 :: static + r22 = faster_hexbytes._utils.globals :: static + r23 = 'unhexlify' + r24 = CPyDict_SetItem(r22, r23, r21) + dec_ref r21 + r25 = r24 >= 0 :: signed + if not r25 goto L8 (error at :8) else goto L7 :: bool +L7: + return 1 +L8: + r26 = :: None + return r26 + +def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object L0: - r0 = '0x' - r1 = 'hex' - r2 = [self] - r3 = load_address r2 - r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775809, 0) - if is_error(r4) goto L4 (error at to_0x_hex:79) else goto L1 + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool L1: - r5 = cast(str, r4) - if is_error(r5) goto L4 (error at to_0x_hex:79) else goto L2 + inc_ref __mypyc_self__ + return __mypyc_self__ L2: - r6 = CPyStr_Build(2, r0, r5) - dec_ref r5 - if is_error(r6) goto L4 (error at to_0x_hex:79) else goto L3 + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 L3: - return r6 + return r2 L4: - r7 = :: str + r3 = :: object + return r3 + +def __new___HexBytes_obj.__call__(__mypyc_self__, cls, val): + __mypyc_self__ :: faster_hexbytes.main.__new___HexBytes_obj + cls :: object + val :: union[bytes, str, bool, object, int] + r0 :: bytes + r1 :: object + r2 :: bool + r3 :: object[2] + r4 :: object_ptr + r5 :: object + r6, r7 :: faster_hexbytes.main.HexBytes +L0: + r0 = to_bytes(val) + if is_error(r0) goto L7 (error at __new__:49) else goto L1 +L1: + r1 = faster_hexbytes.main._bytes_new :: static + if is_error(r1) goto L8 else goto L4 +L2: + r2 = raise NameError('value for final name "_bytes_new" was not set') + if not r2 goto L7 (error at __new__:50) else goto L3 :: bool +L3: + unreachable +L4: + r3 = [cls, r0] + r4 = load_address r3 + r5 = PyObject_Vectorcall(r1, r4, 2, 0) + if is_error(r5) goto L9 (error at __new__:50) else goto L5 +L5: + dec_ref r0 + r6 = cast(faster_hexbytes.main.HexBytes, r5) + if is_error(r6) goto L7 (error at __new__:50) else goto L6 +L6: + return r6 +L7: + r7 = :: faster_hexbytes.main.HexBytes return r7 +L8: + dec_ref r0 + goto L2 +L9: + dec_ref r0 + goto L7 -def __reduce___HexBytes_obj.__get__(__mypyc_self__, instance, owner): +def __getitem___HexBytes_obj.__get__(__mypyc_self__, instance, owner): __mypyc_self__, instance, owner, r0 :: object r1 :: bit r2, r3 :: object @@ -337,88 +655,344 @@ L4: r3 = :: object return r3 -def __reduce___HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.__reduce___HexBytes_obj +def __getitem___HexBytes_obj.__call__(__mypyc_self__, self, key): + __mypyc_self__ :: faster_hexbytes.main.__getitem___HexBytes_obj self :: faster_hexbytes.main.HexBytes - r0 :: object - r1 :: bool - r2, r3 :: object - r4 :: object[1] - r5 :: object_ptr - r6 :: object - r7 :: bytes - r8 :: tuple[object, bytes] - r9, r10 :: tuple[object, tuple[object, bytes]] + key, r0 :: object + r1 :: str + r2 :: object[3] + r3 :: object_ptr + r4 :: object + r5 :: union[int, bytes] + r6 :: bit + r7 :: int + r8, r9, r10 :: object + r11 :: bit + r12 :: bytes + r13 :: object + r14 :: object[1] + r15 :: object_ptr + r16 :: object + r17 :: faster_hexbytes.main.HexBytes + r18 :: bytes + r19 :: object[1] + r20 :: object_ptr + r21 :: object + r22 :: faster_hexbytes.main.HexBytes + r23 :: union[int, faster_hexbytes.main.HexBytes] L0: - r0 = faster_hexbytes.main._bytes_new :: static - if is_error(r0) goto L1 else goto L3 + r0 = load_address PyBytes_Type + r1 = '__getitem__' + r2 = [r0, self, key] + r3 = load_address r2 + r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775811, 0) + if is_error(r4) goto L14 (error at __getitem__:63) else goto L1 L1: - r1 = raise NameError('value for final name "_bytes_new" was not set') - if not r1 goto L6 (error at __reduce__:89) else goto L2 :: bool + r5 = cast(union[int, bytes], r4) + if is_error(r5) goto L14 (error at __getitem__:63) else goto L2 L2: - unreachable + r6 = PyLong_Check(r5) + if r6 goto L3 else goto L5 :: bool L3: - r2 = CPy_TYPE(self) - r3 = load_address PyBytes_Type - r4 = [self] - r5 = load_address r4 - r6 = PyObject_Vectorcall(r3, r5, 1, 0) - if is_error(r6) goto L7 (error at __reduce__:89) else goto L4 + r7 = unbox(int, r5) + dec_ref r5 + if is_error(r7) goto L14 (error at __getitem__:65) else goto L4 L4: - r7 = cast(bytes, r6) - if is_error(r7) goto L7 (error at __reduce__:89) else goto L5 + r8 = box(int, r7) + return r8 L5: - r8 = (r2, r7) - inc_ref r0 - r9 = (r0, r8) - return r9 + r9 = CPy_TYPE(self) + r10 = faster_hexbytes.main.HexBytes :: type + r11 = r9 == r10 + if r11 goto L15 else goto L10 :: bool L6: - r10 = :: tuple[object, tuple[object, bytes]] - return r10 + r12 = cast(bytes, r5) + if is_error(r12) goto L14 (error at __getitem__:69) else goto L7 L7: - dec_ref r2 + r13 = faster_hexbytes.main.HexBytes :: type + r14 = [r12] + r15 = load_address r14 + r16 = PyObject_Vectorcall(r13, r15, 1, 0) + if is_error(r16) goto L16 (error at __getitem__:69) else goto L8 +L8: + dec_ref r12 + r17 = cast(faster_hexbytes.main.HexBytes, r16) + if is_error(r17) goto L14 (error at __getitem__:69) else goto L9 +L9: + return r17 +L10: + r18 = cast(bytes, r5) + if is_error(r18) goto L17 (error at __getitem__:70) else goto L11 +L11: + r19 = [r18] + r20 = load_address r19 + r21 = PyObject_Vectorcall(r9, r20, 1, 0) + dec_ref r9 + if is_error(r21) goto L18 (error at __getitem__:70) else goto L12 +L12: + dec_ref r18 + r22 = cast(faster_hexbytes.main.HexBytes, r21) + if is_error(r22) goto L14 (error at __getitem__:70) else goto L13 +L13: + return r22 +L14: + r23 = :: union[int, faster_hexbytes.main.HexBytes] + return r23 +L15: + dec_ref r9 goto L6 +L16: + dec_ref r12 + goto L14 +L17: + dec_ref r9 + goto L14 +L18: + dec_ref r18 + goto L14 -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4, r5 :: object - r6 :: str - r7 :: dict - r8 :: object - r9 :: object_ptr - r10 :: object_ptr[1] - r11 :: c_ptr - r12 :: native_int[1] - r13 :: c_ptr - r14 :: object - r15 :: dict - r16, r17 :: str - r18 :: bit - r19 :: object - r20 :: str - r21 :: dict - r22, r23 :: object - r24 :: str - r25 :: dict - r26, r27 :: object - r28 :: str - r29 :: dict - r30 :: object - r31 :: dict - r32 :: str - r33, r34, r35, r36, r37 :: object - r38 :: str - r39, r40, r41 :: object - r42 :: str - r43 :: object - r44 :: tuple[object, object, object, object, object, object] - r45, r46 :: object - r47 :: dict - r48 :: str - r49 :: i32 - r50 :: bit +def __repr___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def __repr___HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.__repr___HexBytes_obj + self :: faster_hexbytes.main.HexBytes + r0, r1, r2, r3, r4 :: str + r5 :: object[1] + r6 :: object_ptr + r7 :: object + r8, r9, r10, r11 :: str + r12 :: object[3] + r13 :: object_ptr + r14 :: object + r15, r16 :: str + r17 :: list + r18, r19, r20, r21 :: ptr + r22, r23 :: str +L0: + r0 = '' + r1 = 'HexBytes(' + r2 = '{!r:{}}' + r3 = '0x' + r4 = 'hex' + r5 = [self] + r6 = load_address r5 + r7 = PyObject_VectorcallMethod(r4, r6, 9223372036854775809, 0) + if is_error(r7) goto L8 (error at __repr__:73) else goto L1 +L1: + r8 = cast(str, r7) + if is_error(r8) goto L8 (error at __repr__:73) else goto L2 +L2: + r9 = PyUnicode_Concat(r3, r8) + dec_ref r8 + if is_error(r9) goto L8 (error at __repr__:73) else goto L3 +L3: + r10 = '' + r11 = 'format' + r12 = [r2, r9, r10] + r13 = load_address r12 + r14 = PyObject_VectorcallMethod(r11, r13, 9223372036854775811, 0) + if is_error(r14) goto L9 (error at __repr__:73) else goto L4 +L4: + dec_ref r9 + r15 = cast(str, r14) + if is_error(r15) goto L8 (error at __repr__:73) else goto L5 +L5: + r16 = ')' + r17 = PyList_New(3) + if is_error(r17) goto L10 (error at __repr__:73) else goto L6 +L6: + r18 = get_element_ptr r17 ob_item :: PyListObject + r19 = load_mem r18 :: ptr* + inc_ref r1 + set_mem r19, r1 :: builtins.object* + r20 = r19 + 8 + set_mem r20, r15 :: builtins.object* + inc_ref r16 + r21 = r19 + 16 + set_mem r21, r16 :: builtins.object* + r22 = PyUnicode_Join(r0, r17) + dec_ref r17 + if is_error(r22) goto L8 (error at __repr__:73) else goto L7 +L7: + return r22 +L8: + r23 = :: str + return r23 +L9: + dec_ref r9 + goto L8 +L10: + dec_ref r15 + goto L8 + +def to_0x_hex_HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def to_0x_hex_HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.to_0x_hex_HexBytes_obj + self :: faster_hexbytes.main.HexBytes + r0, r1 :: str + r2 :: object[1] + r3 :: object_ptr + r4 :: object + r5, r6, r7 :: str +L0: + r0 = '0x' + r1 = 'hex' + r2 = [self] + r3 = load_address r2 + r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775809, 0) + if is_error(r4) goto L4 (error at to_0x_hex:79) else goto L1 +L1: + r5 = cast(str, r4) + if is_error(r5) goto L4 (error at to_0x_hex:79) else goto L2 +L2: + r6 = CPyStr_Build(2, r0, r5) + dec_ref r5 + if is_error(r6) goto L4 (error at to_0x_hex:79) else goto L3 +L3: + return r6 +L4: + r7 = :: str + return r7 + +def __reduce___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def __reduce___HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.__reduce___HexBytes_obj + self :: faster_hexbytes.main.HexBytes + r0 :: object + r1 :: bool + r2, r3 :: object + r4 :: object[1] + r5 :: object_ptr + r6 :: object + r7 :: bytes + r8 :: tuple[object, bytes] + r9, r10 :: tuple[object, tuple[object, bytes]] +L0: + r0 = faster_hexbytes.main._bytes_new :: static + if is_error(r0) goto L1 else goto L3 +L1: + r1 = raise NameError('value for final name "_bytes_new" was not set') + if not r1 goto L6 (error at __reduce__:89) else goto L2 :: bool +L2: + unreachable +L3: + r2 = CPy_TYPE(self) + r3 = load_address PyBytes_Type + r4 = [self] + r5 = load_address r4 + r6 = PyObject_Vectorcall(r3, r5, 1, 0) + if is_error(r6) goto L7 (error at __reduce__:89) else goto L4 +L4: + r7 = cast(bytes, r6) + if is_error(r7) goto L7 (error at __reduce__:89) else goto L5 +L5: + r8 = (r2, r7) + inc_ref r0 + r9 = (r0, r8) + return r9 +L6: + r10 = :: tuple[object, tuple[object, bytes]] + return r10 +L7: + dec_ref r2 + goto L6 + +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4, r5 :: object + r6 :: str + r7 :: dict + r8 :: object + r9 :: object_ptr + r10 :: object_ptr[1] + r11 :: c_ptr + r12 :: native_int[1] + r13 :: c_ptr + r14 :: object + r15 :: dict + r16, r17 :: str + r18 :: bit + r19 :: object + r20 :: str + r21 :: dict + r22, r23 :: object + r24 :: str + r25 :: dict + r26, r27 :: object + r28 :: str + r29 :: dict + r30 :: object + r31 :: dict + r32 :: str + r33, r34, r35, r36, r37 :: object + r38 :: str + r39, r40, r41 :: object + r42 :: str + r43 :: object + r44 :: tuple[object, object, object, object, object, object] + r45, r46 :: object + r47 :: dict + r48 :: str + r49 :: i32 + r50 :: bit r51 :: object r52 :: str r53 :: object @@ -474,946 +1048,351 @@ def __top_level__(): r110, r111 :: str r112 :: i32 r113 :: bit - r114 :: object[3] - r115 :: object_ptr - r116 :: object - r117 :: dict - r118 :: str - r119, r120 :: object - r121 :: object[1] - r122 :: object_ptr - r123, r124 :: object - r125 :: object[1] - r126 :: object_ptr - r127 :: object - r128 :: dict - r129 :: str - r130 :: i32 - r131 :: bit - r132 :: object - r133 :: None -L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool -L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L48 (error at :-1) else goto L2 -L2: - builtins = r4 :: module - dec_ref r4 -L3: - r5 = ('TYPE_CHECKING', 'Callable', 'Final', 'Tuple', 'Type', 'Union', 'overload') - r6 = 'typing' - r7 = faster_hexbytes.main.globals :: static - r8 = CPyImport_ImportFromMany(r6, r5, r5, r7) - if is_error(r8) goto L48 (error at :1) else goto L4 -L4: - typing = r8 :: module - dec_ref r8 - r9 = load_address hexbytes.main :: module - r10 = [r9] - r11 = load_address r10 - r12 = [14] - r13 = load_address r12 - r14 = (('hexbytes.main', 'hexbytes.main', 'hexbytes'),) - r15 = faster_hexbytes.main.globals :: static - r16 = 'faster_hexbytes/main.py' - r17 = '' - r18 = CPyImport_ImportMany(r14, r11, r15, r16, r17, r13) - if not r18 goto L48 else goto L5 :: bool -L5: - r19 = ('mypyc_attr',) - r20 = 'mypy_extensions' - r21 = faster_hexbytes.main.globals :: static - r22 = CPyImport_ImportFromMany(r20, r19, r19, r21) - if is_error(r22) goto L48 (error at :15) else goto L6 -L6: - mypy_extensions = r22 :: module - dec_ref r22 - r23 = ('Self',) - r24 = 'typing_extensions' - r25 = faster_hexbytes.main.globals :: static - r26 = CPyImport_ImportFromMany(r24, r23, r23, r25) - if is_error(r26) goto L48 (error at :18) else goto L7 -L7: - typing_extensions = r26 :: module - dec_ref r26 - r27 = ('to_bytes',) - r28 = 'faster_hexbytes._utils' - r29 = faster_hexbytes.main.globals :: static - r30 = CPyImport_ImportFromMany(r28, r27, r27, r29) - if is_error(r30) goto L48 (error at :22) else goto L8 -L8: - faster_hexbytes._utils = r30 :: module - dec_ref r30 - if 0 goto L9 else goto L9 :: bool -L9: - r31 = faster_hexbytes.main.globals :: static - r32 = 'Union' - r33 = CPyDict_GetItem(r31, r32) - if is_error(r33) goto L48 (error at :31) else goto L10 -L10: - r34 = load_address PyBytes_Type - r35 = load_address PyUnicode_Type - r36 = load_address PyBool_Type - r37 = builtins :: module - r38 = 'bytearray' - r39 = CPyObject_GetAttr(r37, r38) - if is_error(r39) goto L49 (error at :31) else goto L11 -L11: - r40 = load_address PyLong_Type - r41 = builtins :: module - r42 = 'memoryview' - r43 = CPyObject_GetAttr(r41, r42) - if is_error(r43) goto L50 (error at :31) else goto L12 -L12: - inc_ref r34 - inc_ref r35 - inc_ref r36 - inc_ref r40 - r44 = (r34, r35, r36, r39, r40, r43) - r45 = box(tuple[object, object, object, object, object, object], r44) - r46 = PyObject_GetItem(r33, r45) - dec_ref r33 - dec_ref r45 - if is_error(r46) goto L48 (error at :31) else goto L13 -L13: - r47 = faster_hexbytes.main.globals :: static - r48 = 'BytesLike' - r49 = CPyDict_SetItem(r47, r48, r46) - dec_ref r46 - r50 = r49 >= 0 :: signed - if not r50 goto L48 (error at :31) else goto L14 :: bool -L14: - r51 = load_address PyBytes_Type - r52 = '__new__' - r53 = CPyObject_GetAttr(r51, r52) - if is_error(r53) goto L48 (error at :33) else goto L15 -L15: - faster_hexbytes.main._bytes_new = r53 :: static - r54 = faster_hexbytes.main.globals :: static - r55 = '_bytes_new' - r56 = CPyDict_SetItem(r54, r55, r53) - dec_ref r53 - r57 = r56 >= 0 :: signed - if not r57 goto L48 (error at :33) else goto L16 :: bool -L16: - r58 = hexbytes.main :: module - r59 = 'HexBytes' - r60 = CPyObject_GetAttr(r58, r59) - if is_error(r60) goto L48 (error at :37) else goto L17 -L17: - r61 = PyTuple_Pack(1, r60) - dec_ref r60 - if is_error(r61) goto L48 (error at :37) else goto L18 -L18: - r62 = load_address PyType_Type - r63 = CPy_CalculateMetaclass(r62, r61) - if is_error(r63) goto L51 (error at :37) else goto L19 -L19: - r64 = '__prepare__' - r65 = PyObject_HasAttr(r63, r64) - if r65 goto L20 else goto L24 :: bool -L20: - r66 = 'HexBytes' - r67 = '__prepare__' - r68 = CPyObject_GetAttr(r63, r67) - if is_error(r68) goto L51 (error at :37) else goto L21 -L21: - r69 = [r66, r61] - r70 = load_address r69 - r71 = PyObject_Vectorcall(r68, r70, 2, 0) - dec_ref r68 - if is_error(r71) goto L51 (error at :37) else goto L22 -L22: - r72 = cast(dict, r71) - if is_error(r72) goto L51 (error at :37) else goto L23 -L23: - r73 = r72 - goto L26 -L24: - r74 = PyDict_New() - if is_error(r74) goto L51 (error at :37) else goto L25 -L25: - r73 = r74 -L26: - r75 = PyDict_New() - if is_error(r75) goto L52 (error at :37) else goto L27 -L27: - r76 = __new___HexBytes_obj() - if is_error(r76) goto L53 (error at :48) else goto L28 -L28: - r77 = builtins :: module - r78 = 'staticmethod' - r79 = CPyObject_GetAttr(r77, r78) - if is_error(r79) goto L54 (error at :48) else goto L29 -L29: - r80 = [r76] - r81 = load_address r80 - r82 = PyObject_Vectorcall(r79, r81, 1, 0) - dec_ref r79 - if is_error(r82) goto L54 (error at :48) else goto L30 -L30: - dec_ref r76 - r83 = '__new__' - r84 = CPyDict_SetItem(r73, r83, r82) - dec_ref r82 - r85 = r84 >= 0 :: signed - if not r85 goto L53 (error at :48) else goto L31 :: bool -L31: - r86 = __getitem___HexBytes_obj() - if is_error(r86) goto L53 (error at :60) else goto L32 -L32: - r87 = '__getitem__' - r88 = CPyDict_SetItem(r73, r87, r86) - dec_ref r86 - r89 = r88 >= 0 :: signed - if not r89 goto L53 (error at :60) else goto L33 :: bool -L33: - r90 = __repr___HexBytes_obj() - if is_error(r90) goto L53 (error at :72) else goto L34 -L34: - r91 = '__repr__' - r92 = CPyDict_SetItem(r73, r91, r90) - dec_ref r90 - r93 = r92 >= 0 :: signed - if not r93 goto L53 (error at :72) else goto L35 :: bool -L35: - r94 = to_0x_hex_HexBytes_obj() - if is_error(r94) goto L53 (error at :75) else goto L36 -L36: - r95 = 'to_0x_hex' - r96 = CPyDict_SetItem(r73, r95, r94) - dec_ref r94 - r97 = r96 >= 0 :: signed - if not r97 goto L53 (error at :75) else goto L37 :: bool -L37: - r98 = __reduce___HexBytes_obj() - if is_error(r98) goto L53 (error at :81) else goto L38 -L38: - r99 = '__reduce__' - r100 = CPyDict_SetItem(r73, r99, r98) - dec_ref r98 - r101 = r100 >= 0 :: signed - if not r101 goto L53 (error at :81) else goto L39 :: bool -L39: - r102 = 'HexBytes' - r103 = '__annotations__' - r104 = CPyDict_SetItem(r73, r103, r75) - dec_ref r75 - r105 = r104 >= 0 :: signed - if not r105 goto L52 (error at :37) else goto L40 :: bool -L40: - r106 = 'mypyc filler docstring' - r107 = '__doc__' - r108 = CPyDict_SetItem(r73, r107, r106) - r109 = r108 >= 0 :: signed - if not r109 goto L52 (error at :37) else goto L41 :: bool -L41: - r110 = 'faster_hexbytes.main' - r111 = '__module__' - r112 = CPyDict_SetItem(r73, r111, r110) - r113 = r112 >= 0 :: signed - if not r113 goto L52 (error at :37) else goto L42 :: bool -L42: - r114 = [r102, r61, r73] - r115 = load_address r114 - r116 = PyObject_Vectorcall(r63, r115, 3, 0) - if is_error(r116) goto L52 (error at :37) else goto L43 -L43: - dec_ref r73 - dec_ref r61 - r117 = faster_hexbytes.main.globals :: static - r118 = 'mypyc_attr' - r119 = CPyDict_GetItem(r117, r118) - if is_error(r119) goto L55 (error at :36) else goto L44 -L44: - r120 = box(bool, 0) - r121 = [r120] - r122 = load_address r121 - r123 = ('native_class',) - r124 = PyObject_Vectorcall(r119, r122, 0, r123) - dec_ref r119 - if is_error(r124) goto L55 (error at :36) else goto L45 -L45: - r125 = [r116] - r126 = load_address r125 - r127 = PyObject_Vectorcall(r124, r126, 1, 0) - dec_ref r124 - if is_error(r127) goto L55 (error at :37) else goto L46 -L46: - dec_ref r116 - faster_hexbytes.main.HexBytes = r127 :: type - r128 = faster_hexbytes.main.globals :: static - r129 = 'HexBytes' - r130 = PyDict_SetItem(r128, r129, r127) - dec_ref r127 - r131 = r130 >= 0 :: signed - if not r131 goto L48 (error at :37) else goto L47 :: bool -L47: - r132 = faster_hexbytes.main.HexBytes :: type - return 1 -L48: - r133 = :: None - return r133 -L49: - dec_ref r33 - goto L48 -L50: - dec_ref r33 - dec_ref r39 - goto L48 -L51: - dec_ref r61 - goto L48 -L52: - dec_ref r61 - dec_ref r73 - goto L48 -L53: - dec_ref r61 - dec_ref r73 - dec_ref r75 - goto L48 -L54: - dec_ref r61 - dec_ref r73 - dec_ref r75 - dec_ref r76 - goto L48 -L55: - dec_ref r116 - goto L48 - -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4, r5, r6 :: object - r7 :: str - r8 :: dict - r9, r10 :: object - r11 :: str - r12 :: dict - r13 :: object - r14 :: str - r15 :: list - r16, r17 :: ptr - r18 :: dict - r19 :: str - r20 :: i32 - r21 :: bit - r22 :: str - r23 :: dict - r24 :: str - r25 :: object - r26 :: object[1] - r27 :: object_ptr - r28 :: object - r29 :: str - r30 :: dict - r31 :: str - r32 :: i32 - r33 :: bit - r34 :: None -L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool -L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L12 (error at :-1) else goto L2 -L2: - builtins = r4 :: module - dec_ref r4 -L3: - r5 = ('version',) - r6 = ('__version',) - r7 = 'importlib.metadata' - r8 = faster_hexbytes.globals :: static - r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) - if is_error(r9) goto L12 (error at :1) else goto L4 -L4: - importlib.metadata = r9 :: module - dec_ref r9 - r10 = ('HexBytes',) - r11 = 'faster_hexbytes.main' - r12 = faster_hexbytes.globals :: static - r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) - if is_error(r13) goto L12 (error at :5) else goto L5 -L5: - faster_hexbytes.main = r13 :: module - dec_ref r13 - r14 = 'HexBytes' - r15 = PyList_New(1) - if is_error(r15) goto L12 (error at :9) else goto L6 -L6: - r16 = get_element_ptr r15 ob_item :: PyListObject - r17 = load_mem r16 :: ptr* - inc_ref r14 - set_mem r17, r14 :: builtins.object* - r18 = faster_hexbytes.globals :: static - r19 = '__all__' - r20 = CPyDict_SetItem(r18, r19, r15) - dec_ref r15 - r21 = r20 >= 0 :: signed - if not r21 goto L12 (error at :9) else goto L7 :: bool -L7: - r22 = 'hexbytes' - r23 = faster_hexbytes.globals :: static - r24 = '__version' - r25 = CPyDict_GetItem(r23, r24) - if is_error(r25) goto L12 (error at :11) else goto L8 -L8: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L12 (error at :11) else goto L9 -L9: - r29 = cast(str, r28) - if is_error(r29) goto L12 (error at :11) else goto L10 -L10: - r30 = faster_hexbytes.globals :: static - r31 = '__version__' - r32 = CPyDict_SetItem(r30, r31, r29) - dec_ref r29 - r33 = r32 >= 0 :: signed - if not r33 goto L12 (error at :11) else goto L11 :: bool -L11: - return 1 -L12: - r34 = :: None - return r34 - -def to_bytes(val): - val :: union[bytes, str, object, bool, int] - r0 :: bit - r1 :: bytes - r2 :: bit - r3 :: str - r4 :: bytes - r5 :: bit - r6 :: object - r7 :: object[1] - r8 :: object_ptr - r9 :: object - r10 :: bytes - r11 :: bit - r12 :: bool - r13, r14, r15 :: bytes - r16 :: bit - r17 :: int - r18 :: native_int - r19 :: bit - r20 :: native_int - r21, r22 :: bit - r23 :: bool - r24 :: bit - r25 :: str - r26 :: int - r27, r28, r29 :: str - r30 :: object - r31 :: str - r32 :: object - r33 :: object[1] - r34 :: object_ptr - r35 :: object - r36 :: int - r37 :: object - r38 :: str - r39, r40 :: object - r41 :: object[1] - r42 :: object_ptr - r43 :: object - r44 :: str - r45 :: bytes - r46 :: object - r47 :: str - r48 :: object - r49 :: i32 - r50 :: bit - r51 :: bool - r52 :: object - r53 :: object[1] - r54 :: object_ptr - r55 :: object - r56 :: bytes - r57, r58, r59, r60, r61 :: str - r62 :: object[3] - r63 :: object_ptr - r64 :: object - r65, r66 :: str - r67 :: object - r68, r69 :: str - r70 :: object[3] - r71 :: object_ptr - r72 :: object - r73 :: str - r74 :: list - r75, r76, r77, r78, r79, r80 :: ptr - r81 :: str - r82 :: object - r83 :: str - r84 :: object - r85 :: object[1] - r86 :: object_ptr - r87 :: object - r88 :: bytes -L0: - r0 = PyBytes_Check(val) - if r0 goto L1 else goto L3 :: bool -L1: - inc_ref val - r1 = cast(bytes, val) - if is_error(r1) goto L51 (error at to_bytes:19) else goto L2 -L2: - return r1 -L3: - r2 = PyUnicode_Check(val) - if r2 goto L4 else goto L7 :: bool -L4: - inc_ref val - r3 = cast(str, val) - if is_error(r3) goto L51 (error at to_bytes:21) else goto L5 -L5: - r4 = hexstr_to_bytes(r3) - dec_ref r3 - if is_error(r4) goto L51 (error at to_bytes:21) else goto L6 -L6: - return r4 -L7: - r5 = PyByteArray_Check(val) - if r5 goto L8 else goto L11 :: bool -L8: - r6 = load_address PyBytes_Type - r7 = [val] - r8 = load_address r7 - r9 = PyObject_Vectorcall(r6, r8, 1, 0) - if is_error(r9) goto L51 (error at to_bytes:23) else goto L9 -L9: - r10 = cast(bytes, r9) - if is_error(r10) goto L51 (error at to_bytes:23) else goto L10 -L10: - return r10 -L11: - r11 = PyBool_Check(val) - if r11 goto L12 else goto L17 :: bool -L12: - r12 = unbox(bool, val) - if is_error(r12) goto L51 (error at to_bytes:25) else goto L13 -L13: - if r12 goto L14 else goto L15 :: bool -L14: - r13 = b'\x01' - inc_ref r13 - r14 = r13 - goto L16 -L15: - r15 = b'\x00' - inc_ref r15 - r14 = r15 -L16: - return r14 -L17: - r16 = PyLong_Check(val) - if r16 goto L18 else goto L37 :: bool -L18: - r17 = unbox(int, val) - if is_error(r17) goto L51 (error at to_bytes:29) else goto L19 -L19: - r18 = r17 & 1 - r19 = r18 != 0 - if r19 goto L21 else goto L20 :: bool -L20: - r20 = 0 & 1 - r21 = r20 != 0 - if r21 goto L21 else goto L22 :: bool -L21: - r22 = CPyTagged_IsLt_(r17, 0) - r23 = r22 - goto L23 -L22: - r24 = r17 < 0 :: signed - r23 = r24 -L23: - dec_ref r17 :: int - if r23 goto L24 else goto L31 :: bool -L24: - r25 = 'Cannot convert negative integer ' - r26 = unbox(int, val) - if is_error(r26) goto L51 (error at to_bytes:30) else goto L25 -L25: - r27 = CPyTagged_Str(r26) - dec_ref r26 :: int - if is_error(r27) goto L51 (error at to_bytes:30) else goto L26 -L26: - r28 = ' to bytes' - r29 = CPyStr_Build(3, r25, r27, r28) - dec_ref r27 - if is_error(r29) goto L51 (error at to_bytes:30) else goto L27 -L27: - r30 = builtins :: module - r31 = 'ValueError' - r32 = CPyObject_GetAttr(r30, r31) - if is_error(r32) goto L52 (error at to_bytes:30) else goto L28 -L28: - r33 = [r29] - r34 = load_address r33 - r35 = PyObject_Vectorcall(r32, r34, 1, 0) - dec_ref r32 - if is_error(r35) goto L52 (error at to_bytes:30) else goto L29 -L29: - dec_ref r29 - CPy_Raise(r35) - dec_ref r35 - if not 0 goto L51 (error at to_bytes:30) else goto L30 :: bool -L30: - unreachable -L31: - r36 = unbox(int, val) - if is_error(r36) goto L51 (error at to_bytes:32) else goto L32 -L32: - r37 = builtins :: module - r38 = 'hex' - r39 = CPyObject_GetAttr(r37, r38) - if is_error(r39) goto L53 (error at to_bytes:32) else goto L33 -L33: - r40 = box(int, r36) - r41 = [r40] - r42 = load_address r41 - r43 = PyObject_Vectorcall(r39, r42, 1, 0) - dec_ref r39 - if is_error(r43) goto L54 (error at to_bytes:32) else goto L34 -L34: - dec_ref r40 - r44 = cast(str, r43) - if is_error(r44) goto L51 (error at to_bytes:32) else goto L35 -L35: - r45 = to_bytes(r44) - dec_ref r44 - if is_error(r45) goto L51 (error at to_bytes:32) else goto L36 -L36: - return r45 -L37: - r46 = builtins :: module - r47 = 'memoryview' - r48 = CPyObject_GetAttr(r46, r47) - if is_error(r48) goto L51 (error at to_bytes:33) else goto L38 -L38: - r49 = PyObject_IsInstance(val, r48) - dec_ref r48 - r50 = r49 >= 0 :: signed - if not r50 goto L51 (error at to_bytes:33) else goto L39 :: bool -L39: - r51 = truncate r49: i32 to builtins.bool - if r51 goto L40 else goto L43 :: bool -L40: - r52 = load_address PyBytes_Type - r53 = [val] - r54 = load_address r53 - r55 = PyObject_Vectorcall(r52, r54, 1, 0) - if is_error(r55) goto L51 (error at to_bytes:34) else goto L41 -L41: - r56 = cast(bytes, r55) - if is_error(r56) goto L51 (error at to_bytes:34) else goto L42 -L42: - return r56 -L43: - r57 = '' - r58 = 'Cannot convert ' - r59 = '{!r:{}}' - r60 = '' - r61 = 'format' - r62 = [r59, val, r60] - r63 = load_address r62 - r64 = PyObject_VectorcallMethod(r61, r63, 9223372036854775811, 0) - if is_error(r64) goto L51 (error at to_bytes:36) else goto L44 -L44: - r65 = ' of type ' - r66 = '{:{}}' - r67 = CPy_TYPE(val) - r68 = '' - r69 = 'format' - r70 = [r66, r67, r68] - r71 = load_address r70 - r72 = PyObject_VectorcallMethod(r69, r71, 9223372036854775811, 0) - if is_error(r72) goto L55 (error at to_bytes:36) else goto L45 -L45: - dec_ref r67 - r73 = ' to bytes' - r74 = PyList_New(5) - if is_error(r74) goto L56 (error at to_bytes:36) else goto L46 -L46: - r75 = get_element_ptr r74 ob_item :: PyListObject - r76 = load_mem r75 :: ptr* - inc_ref r58 - set_mem r76, r58 :: builtins.object* - r77 = r76 + 8 - set_mem r77, r64 :: builtins.object* - inc_ref r65 - r78 = r76 + 16 - set_mem r78, r65 :: builtins.object* - r79 = r76 + 24 - set_mem r79, r72 :: builtins.object* - inc_ref r73 - r80 = r76 + 32 - set_mem r80, r73 :: builtins.object* - r81 = PyUnicode_Join(r57, r74) - dec_ref r74 - if is_error(r81) goto L51 (error at to_bytes:36) else goto L47 -L47: - r82 = builtins :: module - r83 = 'TypeError' - r84 = CPyObject_GetAttr(r82, r83) - if is_error(r84) goto L57 (error at to_bytes:36) else goto L48 -L48: - r85 = [r81] - r86 = load_address r85 - r87 = PyObject_Vectorcall(r84, r86, 1, 0) - dec_ref r84 - if is_error(r87) goto L57 (error at to_bytes:36) else goto L49 -L49: - dec_ref r81 - CPy_Raise(r87) - dec_ref r87 - if not 0 goto L51 (error at to_bytes:36) else goto L50 :: bool -L50: - unreachable -L51: - r88 = :: bytes - return r88 -L52: - dec_ref r29 - goto L51 -L53: - dec_ref r36 :: int - goto L51 -L54: - dec_ref r40 - goto L51 -L55: - dec_ref r64 - dec_ref r67 - goto L51 -L56: - dec_ref r64 - dec_ref r72 - goto L51 -L57: - dec_ref r81 - goto L51 - -def hexstr_to_bytes(hexstr): - hexstr, r0, r1 :: str - r2 :: tuple[str, str] - r3 :: object - r4 :: bool - r5 :: object - r6, non_prefixed_hex :: str - r7 :: native_int - r8 :: bit - r9 :: short_int - r10 :: int - r11 :: bit - r12, r13, padded_hex :: str - r14 :: bytes - r15 :: tuple[object, object, object] - r16 :: object - r17 :: str - r18 :: object - r19 :: bit - r20, r21, r22 :: str - r23 :: object - r24 :: str - r25 :: object - r26 :: object[1] - r27 :: object_ptr - r28 :: object - r29 :: bit - r30 :: object - r31 :: bool - r32 :: object[1] - r33 :: object_ptr - r34 :: object - r35, r36 :: bytes + r114 :: object[3] + r115 :: object_ptr + r116 :: object + r117 :: dict + r118 :: str + r119, r120 :: object + r121 :: object[1] + r122 :: object_ptr + r123, r124 :: object + r125 :: object[1] + r126 :: object_ptr + r127 :: object + r128 :: dict + r129 :: str + r130 :: i32 + r131 :: bit + r132 :: object + r133 :: None L0: - r0 = '0x' - r1 = '0X' - inc_ref r0 - inc_ref r1 - r2 = (r0, r1) - r3 = box(tuple[str, str], r2) - r4 = CPyStr_Startswith(hexstr, r3) - dec_ref r3 - if is_error(r4) goto L31 (error at hexstr_to_bytes:40) else goto L1 + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool L1: - if r4 goto L2 else goto L5 :: bool + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L48 (error at :-1) else goto L2 L2: - r5 = CPyStr_GetSlice(hexstr, 4, 9223372036854775806) - if is_error(r5) goto L31 (error at hexstr_to_bytes:41) else goto L3 + builtins = r4 :: module + dec_ref r4 L3: - r6 = cast(str, r5) - if is_error(r6) goto L31 (error at hexstr_to_bytes:41) else goto L4 + r5 = ('TYPE_CHECKING', 'Callable', 'Final', 'Tuple', 'Type', 'Union', 'overload') + r6 = 'typing' + r7 = faster_hexbytes.main.globals :: static + r8 = CPyImport_ImportFromMany(r6, r5, r5, r7) + if is_error(r8) goto L48 (error at :1) else goto L4 L4: - non_prefixed_hex = r6 - goto L6 + typing = r8 :: module + dec_ref r8 + r9 = load_address hexbytes.main :: module + r10 = [r9] + r11 = load_address r10 + r12 = [14] + r13 = load_address r12 + r14 = (('hexbytes.main', 'hexbytes.main', 'hexbytes'),) + r15 = faster_hexbytes.main.globals :: static + r16 = 'faster_hexbytes/main.py' + r17 = '' + r18 = CPyImport_ImportMany(r14, r11, r15, r16, r17, r13) + if not r18 goto L48 else goto L5 :: bool L5: - inc_ref hexstr - non_prefixed_hex = hexstr + r19 = ('mypyc_attr',) + r20 = 'mypy_extensions' + r21 = faster_hexbytes.main.globals :: static + r22 = CPyImport_ImportFromMany(r20, r19, r19, r21) + if is_error(r22) goto L48 (error at :15) else goto L6 L6: - r7 = CPyStr_Size_size_t(hexstr) - r8 = r7 >= 0 :: signed - if not r8 goto L32 (error at hexstr_to_bytes:46) else goto L7 :: bool + mypy_extensions = r22 :: module + dec_ref r22 + r23 = ('Self',) + r24 = 'typing_extensions' + r25 = faster_hexbytes.main.globals :: static + r26 = CPyImport_ImportFromMany(r24, r23, r23, r25) + if is_error(r26) goto L48 (error at :18) else goto L7 L7: - r9 = r7 << 1 - r10 = CPyTagged_Remainder(r9, 4) - if is_error(r10) goto L32 (error at hexstr_to_bytes:46) else goto L8 + typing_extensions = r26 :: module + dec_ref r26 + r27 = ('to_bytes',) + r28 = 'faster_hexbytes._utils' + r29 = faster_hexbytes.main.globals :: static + r30 = CPyImport_ImportFromMany(r28, r27, r27, r29) + if is_error(r30) goto L48 (error at :22) else goto L8 L8: - r11 = r10 != 0 - dec_ref r10 :: int - if r11 goto L9 else goto L11 :: bool + faster_hexbytes._utils = r30 :: module + dec_ref r30 + if 0 goto L9 else goto L9 :: bool L9: - r12 = '0' - r13 = PyUnicode_Concat(r12, non_prefixed_hex) - dec_ref non_prefixed_hex - if is_error(r13) goto L31 (error at hexstr_to_bytes:47) else goto L10 + r31 = faster_hexbytes.main.globals :: static + r32 = 'Union' + r33 = CPyDict_GetItem(r31, r32) + if is_error(r33) goto L48 (error at :31) else goto L10 L10: - padded_hex = r13 - goto L12 + r34 = load_address PyBytes_Type + r35 = load_address PyUnicode_Type + r36 = load_address PyBool_Type + r37 = builtins :: module + r38 = 'bytearray' + r39 = CPyObject_GetAttr(r37, r38) + if is_error(r39) goto L49 (error at :31) else goto L11 L11: - padded_hex = non_prefixed_hex + r40 = load_address PyLong_Type + r41 = builtins :: module + r42 = 'memoryview' + r43 = CPyObject_GetAttr(r41, r42) + if is_error(r43) goto L50 (error at :31) else goto L12 L12: - r14 = PyUnicode_AsASCIIString(padded_hex) - if is_error(r14) goto L14 (error at hexstr_to_bytes:52) else goto L33 + inc_ref r34 + inc_ref r35 + inc_ref r36 + inc_ref r40 + r44 = (r34, r35, r36, r39, r40, r43) + r45 = box(tuple[object, object, object, object, object, object], r44) + r46 = PyObject_GetItem(r33, r45) + dec_ref r33 + dec_ref r45 + if is_error(r46) goto L48 (error at :31) else goto L13 L13: - goto L25 + r47 = faster_hexbytes.main.globals :: static + r48 = 'BytesLike' + r49 = CPyDict_SetItem(r47, r48, r46) + dec_ref r46 + r50 = r49 >= 0 :: signed + if not r50 goto L48 (error at :31) else goto L14 :: bool L14: - r15 = CPy_CatchError() - r16 = builtins :: module - r17 = 'UnicodeDecodeError' - r18 = CPyObject_GetAttr(r16, r17) - if is_error(r18) goto L34 (error at hexstr_to_bytes:53) else goto L15 + r51 = load_address PyBytes_Type + r52 = '__new__' + r53 = CPyObject_GetAttr(r51, r52) + if is_error(r53) goto L48 (error at :33) else goto L15 L15: - r19 = CPy_ExceptionMatches(r18) - dec_ref r18 - if r19 goto L16 else goto L35 :: bool + faster_hexbytes.main._bytes_new = r53 :: static + r54 = faster_hexbytes.main.globals :: static + r55 = '_bytes_new' + r56 = CPyDict_SetItem(r54, r55, r53) + dec_ref r53 + r57 = r56 >= 0 :: signed + if not r57 goto L48 (error at :33) else goto L16 :: bool L16: - r20 = 'hex string ' - r21 = ' may only contain [0-9a-fA-F] characters' - r22 = CPyStr_Build(3, r20, padded_hex, r21) - dec_ref padded_hex - if is_error(r22) goto L23 (error at hexstr_to_bytes:55) else goto L17 + r58 = hexbytes.main :: module + r59 = 'HexBytes' + r60 = CPyObject_GetAttr(r58, r59) + if is_error(r60) goto L48 (error at :37) else goto L17 L17: - r23 = builtins :: module - r24 = 'ValueError' - r25 = CPyObject_GetAttr(r23, r24) - if is_error(r25) goto L36 (error at hexstr_to_bytes:54) else goto L18 + r61 = PyTuple_Pack(1, r60) + dec_ref r60 + if is_error(r61) goto L48 (error at :37) else goto L18 L18: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L36 (error at hexstr_to_bytes:54) else goto L19 + r62 = load_address PyType_Type + r63 = CPy_CalculateMetaclass(r62, r61) + if is_error(r63) goto L51 (error at :37) else goto L19 L19: - dec_ref r22 - CPy_Raise(r28) - dec_ref r28 - if not 0 goto L23 (error at hexstr_to_bytes:54) else goto L37 :: bool + r64 = '__prepare__' + r65 = PyObject_HasAttr(r63, r64) + if r65 goto L20 else goto L24 :: bool L20: - unreachable + r66 = 'HexBytes' + r67 = '__prepare__' + r68 = CPyObject_GetAttr(r63, r67) + if is_error(r68) goto L51 (error at :37) else goto L21 L21: - CPy_Reraise() - if not 0 goto L23 else goto L38 :: bool + r69 = [r66, r61] + r70 = load_address r69 + r71 = PyObject_Vectorcall(r68, r70, 2, 0) + dec_ref r68 + if is_error(r71) goto L51 (error at :37) else goto L22 L22: - unreachable + r72 = cast(dict, r71) + if is_error(r72) goto L51 (error at :37) else goto L23 L23: - CPy_RestoreExcInfo(r15) - dec_ref r15 - r29 = CPy_KeepPropagating() - if not r29 goto L31 else goto L24 :: bool + r73 = r72 + goto L26 L24: - unreachable + r74 = PyDict_New() + if is_error(r74) goto L51 (error at :37) else goto L25 L25: - r30 = faster_hexbytes._utils.unhexlify :: static - if is_error(r30) goto L39 else goto L28 + r73 = r74 L26: - r31 = raise NameError('value for final name "unhexlify" was not set') - if not r31 goto L31 (error at hexstr_to_bytes:58) else goto L27 :: bool + r75 = PyDict_New() + if is_error(r75) goto L52 (error at :37) else goto L27 L27: - unreachable + r76 = __new___HexBytes_obj() + if is_error(r76) goto L53 (error at :48) else goto L28 L28: - r32 = [r14] - r33 = load_address r32 - r34 = PyObject_Vectorcall(r30, r33, 1, 0) - if is_error(r34) goto L40 (error at hexstr_to_bytes:58) else goto L29 + r77 = builtins :: module + r78 = 'staticmethod' + r79 = CPyObject_GetAttr(r77, r78) + if is_error(r79) goto L54 (error at :48) else goto L29 L29: - dec_ref r14 - r35 = cast(bytes, r34) - if is_error(r35) goto L31 (error at hexstr_to_bytes:58) else goto L30 + r80 = [r76] + r81 = load_address r80 + r82 = PyObject_Vectorcall(r79, r81, 1, 0) + dec_ref r79 + if is_error(r82) goto L54 (error at :48) else goto L30 L30: - return r35 + dec_ref r76 + r83 = '__new__' + r84 = CPyDict_SetItem(r73, r83, r82) + dec_ref r82 + r85 = r84 >= 0 :: signed + if not r85 goto L53 (error at :48) else goto L31 :: bool L31: - r36 = :: bytes - return r36 + r86 = __getitem___HexBytes_obj() + if is_error(r86) goto L53 (error at :60) else goto L32 L32: - dec_ref non_prefixed_hex - goto L31 + r87 = '__getitem__' + r88 = CPyDict_SetItem(r73, r87, r86) + dec_ref r86 + r89 = r88 >= 0 :: signed + if not r89 goto L53 (error at :60) else goto L33 :: bool L33: - dec_ref padded_hex - goto L13 + r90 = __repr___HexBytes_obj() + if is_error(r90) goto L53 (error at :72) else goto L34 L34: - dec_ref padded_hex - goto L23 + r91 = '__repr__' + r92 = CPyDict_SetItem(r73, r91, r90) + dec_ref r90 + r93 = r92 >= 0 :: signed + if not r93 goto L53 (error at :72) else goto L35 :: bool L35: - dec_ref padded_hex - goto L21 + r94 = to_0x_hex_HexBytes_obj() + if is_error(r94) goto L53 (error at :75) else goto L36 L36: - dec_ref r22 - goto L23 + r95 = 'to_0x_hex' + r96 = CPyDict_SetItem(r73, r95, r94) + dec_ref r94 + r97 = r96 >= 0 :: signed + if not r97 goto L53 (error at :75) else goto L37 :: bool L37: - dec_ref r15 - goto L20 + r98 = __reduce___HexBytes_obj() + if is_error(r98) goto L53 (error at :81) else goto L38 L38: - dec_ref r15 - goto L22 + r99 = '__reduce__' + r100 = CPyDict_SetItem(r73, r99, r98) + dec_ref r98 + r101 = r100 >= 0 :: signed + if not r101 goto L53 (error at :81) else goto L39 :: bool L39: - dec_ref r14 - goto L26 + r102 = 'HexBytes' + r103 = '__annotations__' + r104 = CPyDict_SetItem(r73, r103, r75) + dec_ref r75 + r105 = r104 >= 0 :: signed + if not r105 goto L52 (error at :37) else goto L40 :: bool L40: - dec_ref r14 - goto L31 + r106 = 'mypyc filler docstring' + r107 = '__doc__' + r108 = CPyDict_SetItem(r73, r107, r106) + r109 = r108 >= 0 :: signed + if not r109 goto L52 (error at :37) else goto L41 :: bool +L41: + r110 = 'faster_hexbytes.main' + r111 = '__module__' + r112 = CPyDict_SetItem(r73, r111, r110) + r113 = r112 >= 0 :: signed + if not r113 goto L52 (error at :37) else goto L42 :: bool +L42: + r114 = [r102, r61, r73] + r115 = load_address r114 + r116 = PyObject_Vectorcall(r63, r115, 3, 0) + if is_error(r116) goto L52 (error at :37) else goto L43 +L43: + dec_ref r73 + dec_ref r61 + r117 = faster_hexbytes.main.globals :: static + r118 = 'mypyc_attr' + r119 = CPyDict_GetItem(r117, r118) + if is_error(r119) goto L55 (error at :36) else goto L44 +L44: + r120 = box(bool, 0) + r121 = [r120] + r122 = load_address r121 + r123 = ('native_class',) + r124 = PyObject_Vectorcall(r119, r122, 0, r123) + dec_ref r119 + if is_error(r124) goto L55 (error at :36) else goto L45 +L45: + r125 = [r116] + r126 = load_address r125 + r127 = PyObject_Vectorcall(r124, r126, 1, 0) + dec_ref r124 + if is_error(r127) goto L55 (error at :37) else goto L46 +L46: + dec_ref r116 + faster_hexbytes.main.HexBytes = r127 :: type + r128 = faster_hexbytes.main.globals :: static + r129 = 'HexBytes' + r130 = PyDict_SetItem(r128, r129, r127) + dec_ref r127 + r131 = r130 >= 0 :: signed + if not r131 goto L48 (error at :37) else goto L47 :: bool +L47: + r132 = faster_hexbytes.main.HexBytes :: type + return 1 +L48: + r133 = :: None + return r133 +L49: + dec_ref r33 + goto L48 +L50: + dec_ref r33 + dec_ref r39 + goto L48 +L51: + dec_ref r61 + goto L48 +L52: + dec_ref r61 + dec_ref r73 + goto L48 +L53: + dec_ref r61 + dec_ref r73 + dec_ref r75 + goto L48 +L54: + dec_ref r61 + dec_ref r73 + dec_ref r75 + dec_ref r76 + goto L48 +L55: + dec_ref r116 + goto L48 def __top_level__(): r0, r1 :: object r2 :: bit r3 :: str - r4 :: object - r5 :: object_ptr - r6 :: object_ptr[1] - r7 :: c_ptr - r8 :: native_int[1] - r9 :: c_ptr - r10 :: object - r11 :: dict - r12, r13 :: str - r14 :: bit - r15 :: object - r16 :: str - r17 :: dict - r18, r19 :: object - r20 :: str - r21 :: object - r22 :: dict - r23 :: str - r24 :: i32 - r25 :: bit - r26 :: None + r4, r5, r6 :: object + r7 :: str + r8 :: dict + r9, r10 :: object + r11 :: str + r12 :: dict + r13 :: object + r14 :: str + r15 :: list + r16, r17 :: ptr + r18 :: dict + r19 :: str + r20 :: i32 + r21 :: bit + r22 :: str + r23 :: dict + r24 :: str + r25 :: object + r26 :: object[1] + r27 :: object_ptr + r28 :: object + r29 :: str + r30 :: dict + r31 :: str + r32 :: i32 + r33 :: bit + r34 :: None L0: r0 = builtins :: module r1 = load_address _Py_NoneStruct @@ -1422,45 +1401,66 @@ L0: L1: r3 = 'builtins' r4 = PyImport_Import(r3) - if is_error(r4) goto L8 (error at :-1) else goto L2 + if is_error(r4) goto L12 (error at :-1) else goto L2 L2: builtins = r4 :: module dec_ref r4 L3: - r5 = load_address binascii :: module - r6 = [r5] - r7 = load_address r6 - r8 = [1] - r9 = load_address r8 - r10 = (('binascii', 'binascii', 'binascii'),) - r11 = faster_hexbytes._utils.globals :: static - r12 = 'faster_hexbytes/_utils.py' - r13 = '' - r14 = CPyImport_ImportMany(r10, r7, r11, r12, r13, r9) - if not r14 goto L8 else goto L4 :: bool + r5 = ('version',) + r6 = ('__version',) + r7 = 'importlib.metadata' + r8 = faster_hexbytes.globals :: static + r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) + if is_error(r9) goto L12 (error at :1) else goto L4 L4: - r15 = ('Final', 'Union') - r16 = 'typing' - r17 = faster_hexbytes._utils.globals :: static - r18 = CPyImport_ImportFromMany(r16, r15, r15, r17) - if is_error(r18) goto L8 (error at :2) else goto L5 + importlib.metadata = r9 :: module + dec_ref r9 + r10 = ('HexBytes',) + r11 = 'faster_hexbytes.main' + r12 = faster_hexbytes.globals :: static + r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) + if is_error(r13) goto L12 (error at :5) else goto L5 L5: - typing = r18 :: module - dec_ref r18 - r19 = binascii :: module - r20 = 'unhexlify' - r21 = CPyObject_GetAttr(r19, r20) - if is_error(r21) goto L8 (error at :8) else goto L6 + faster_hexbytes.main = r13 :: module + dec_ref r13 + r14 = 'HexBytes' + r15 = PyList_New(1) + if is_error(r15) goto L12 (error at :9) else goto L6 L6: - faster_hexbytes._utils.unhexlify = r21 :: static - r22 = faster_hexbytes._utils.globals :: static - r23 = 'unhexlify' - r24 = CPyDict_SetItem(r22, r23, r21) - dec_ref r21 - r25 = r24 >= 0 :: signed - if not r25 goto L8 (error at :8) else goto L7 :: bool + r16 = get_element_ptr r15 ob_item :: PyListObject + r17 = load_mem r16 :: ptr* + inc_ref r14 + set_mem r17, r14 :: builtins.object* + r18 = faster_hexbytes.globals :: static + r19 = '__all__' + r20 = CPyDict_SetItem(r18, r19, r15) + dec_ref r15 + r21 = r20 >= 0 :: signed + if not r21 goto L12 (error at :9) else goto L7 :: bool L7: - return 1 + r22 = 'hexbytes' + r23 = faster_hexbytes.globals :: static + r24 = '__version' + r25 = CPyDict_GetItem(r23, r24) + if is_error(r25) goto L12 (error at :11) else goto L8 L8: - r26 = :: None - return r26 + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L12 (error at :11) else goto L9 +L9: + r29 = cast(str, r28) + if is_error(r29) goto L12 (error at :11) else goto L10 +L10: + r30 = faster_hexbytes.globals :: static + r31 = '__version__' + r32 = CPyDict_SetItem(r30, r31, r29) + dec_ref r29 + r33 = r32 >= 0 :: signed + if not r33 goto L12 (error at :11) else goto L11 :: bool +L11: + return 1 +L12: + r34 = :: None + return r34 From 8a92df1eaaff4425fc2af71466bb292595468fa3 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Tue, 30 Sep 2025 03:01:51 -0400 Subject: [PATCH 41/98] Update test_main_benchmarks.py --- benchmarks/test_main_benchmarks.py | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/benchmarks/test_main_benchmarks.py b/benchmarks/test_main_benchmarks.py index 2a7d217..49a1d84 100644 --- a/benchmarks/test_main_benchmarks.py +++ b/benchmarks/test_main_benchmarks.py @@ -1,4 +1,4 @@ -from typing import Any +from typing import Any, Callable import hexbytes import pytest @@ -11,15 +11,19 @@ SLICES, SLICE_IDS, ) +def run_100(func: Callable[..., Any], *args: Any) -> None: + for i in range(100): + func(*args) + @pytest.mark.benchmark(group="HexBytes.__new__") @pytest.mark.parametrize("val", CONSTRUCTOR_VALS, ids=CONSTRUCTOR_IDS) def test_hexbytes_new(benchmark: BenchmarkFixture, val: Any) -> None: - benchmark(hexbytes.HexBytes, val) + benchmark(run_100, hexbytes.HexBytes, val) @pytest.mark.benchmark(group="HexBytes.__new__") @pytest.mark.parametrize("val", CONSTRUCTOR_VALS, ids=CONSTRUCTOR_IDS) def test_faster_hexbytes_new(benchmark: BenchmarkFixture, val: Any) -> None: - benchmark(faster_hexbytes.HexBytes, val) + benchmark(run_100, faster_hexbytes.HexBytes, val) @pytest.mark.benchmark(group="HexBytes.__getitem__ (index)") @pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS) @@ -27,7 +31,7 @@ def test_faster_hexbytes_new(benchmark: BenchmarkFixture, val: Any) -> None: def test_hexbytes_getitem_index(benchmark: BenchmarkFixture, val: bytes, idx: int) -> None: obj = hexbytes.HexBytes(val) if len(val) <= abs(idx): - benchmark(lambda: obj[idx]) + benchmark(run_100, lambda: obj[idx]) @pytest.mark.benchmark(group="HexBytes.__getitem__ (index)") @pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS) @@ -35,42 +39,42 @@ def test_hexbytes_getitem_index(benchmark: BenchmarkFixture, val: bytes, idx: in def test_faster_hexbytes_getitem_index(benchmark: BenchmarkFixture, val: bytes, idx: int) -> None: obj = faster_hexbytes.HexBytes(val) if len(val) > abs(idx): - benchmark(lambda: obj[idx]) + benchmark(run_100, lambda: obj[idx]) @pytest.mark.benchmark(group="HexBytes.__getitem__ (slice)") @pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS) @pytest.mark.parametrize("slice_", SLICES, ids=SLICE_IDS) def test_hexbytes_getitem_slice(benchmark: BenchmarkFixture, val: bytes, slice_: slice) -> None: obj = hexbytes.HexBytes(val) - benchmark(lambda: obj[slice_]) + benchmark(run_100, lambda: obj[slice_]) @pytest.mark.benchmark(group="HexBytes.__getitem__ (slice)") @pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS) @pytest.mark.parametrize("slice_", SLICES, ids=SLICE_IDS) def test_faster_hexbytes_getitem_slice(benchmark: BenchmarkFixture, val: bytes, slice_: slice) -> None: obj = faster_hexbytes.HexBytes(val) - benchmark(lambda: obj[slice_]) + benchmark(run_100, lambda: obj[slice_]) @pytest.mark.benchmark(group="HexBytes.__repr__") @pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS) def test_hexbytes_repr(benchmark: BenchmarkFixture, val: bytes) -> None: obj = hexbytes.HexBytes(val) - benchmark(obj.__repr__) + benchmark(run_100, obj.__repr__) @pytest.mark.benchmark(group="HexBytes.__repr__") @pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS) def test_faster_hexbytes_repr(benchmark: BenchmarkFixture, val: bytes) -> None: obj = faster_hexbytes.HexBytes(val) - benchmark(obj.__repr__) + benchmark(run_100, obj.__repr__) @pytest.mark.benchmark(group="HexBytes.to_0x_hex") @pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS) def test_hexbytes_to_0x_hex(benchmark: BenchmarkFixture, val: bytes) -> None: obj = hexbytes.HexBytes(val) - benchmark(obj.to_0x_hex) + benchmark(run_100, obj.to_0x_hex) @pytest.mark.benchmark(group="HexBytes.to_0x_hex") @pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS) def test_faster_hexbytes_to_0x_hex(benchmark: BenchmarkFixture, val: bytes) -> None: obj = faster_hexbytes.HexBytes(val) - benchmark(obj.to_0x_hex) + benchmark(run_100, obj.to_0x_hex) From c500ced72dcf542103bb1600829aaacc456aef2e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 30 Sep 2025 07:02:12 +0000 Subject: [PATCH 42/98] chore: compile C files for source control --- build/ops.txt | 206 +++++++++++++++++++++++++------------------------- 1 file changed, 103 insertions(+), 103 deletions(-) diff --git a/build/ops.txt b/build/ops.txt index d40a5c1..5ed32ca 100644 --- a/build/ops.txt +++ b/build/ops.txt @@ -1,3 +1,106 @@ +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4, r5, r6 :: object + r7 :: str + r8 :: dict + r9, r10 :: object + r11 :: str + r12 :: dict + r13 :: object + r14 :: str + r15 :: list + r16, r17 :: ptr + r18 :: dict + r19 :: str + r20 :: i32 + r21 :: bit + r22 :: str + r23 :: dict + r24 :: str + r25 :: object + r26 :: object[1] + r27 :: object_ptr + r28 :: object + r29 :: str + r30 :: dict + r31 :: str + r32 :: i32 + r33 :: bit + r34 :: None +L0: + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool +L1: + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L12 (error at :-1) else goto L2 +L2: + builtins = r4 :: module + dec_ref r4 +L3: + r5 = ('version',) + r6 = ('__version',) + r7 = 'importlib.metadata' + r8 = faster_hexbytes.globals :: static + r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) + if is_error(r9) goto L12 (error at :1) else goto L4 +L4: + importlib.metadata = r9 :: module + dec_ref r9 + r10 = ('HexBytes',) + r11 = 'faster_hexbytes.main' + r12 = faster_hexbytes.globals :: static + r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) + if is_error(r13) goto L12 (error at :5) else goto L5 +L5: + faster_hexbytes.main = r13 :: module + dec_ref r13 + r14 = 'HexBytes' + r15 = PyList_New(1) + if is_error(r15) goto L12 (error at :9) else goto L6 +L6: + r16 = get_element_ptr r15 ob_item :: PyListObject + r17 = load_mem r16 :: ptr* + inc_ref r14 + set_mem r17, r14 :: builtins.object* + r18 = faster_hexbytes.globals :: static + r19 = '__all__' + r20 = CPyDict_SetItem(r18, r19, r15) + dec_ref r15 + r21 = r20 >= 0 :: signed + if not r21 goto L12 (error at :9) else goto L7 :: bool +L7: + r22 = 'hexbytes' + r23 = faster_hexbytes.globals :: static + r24 = '__version' + r25 = CPyDict_GetItem(r23, r24) + if is_error(r25) goto L12 (error at :11) else goto L8 +L8: + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L12 (error at :11) else goto L9 +L9: + r29 = cast(str, r28) + if is_error(r29) goto L12 (error at :11) else goto L10 +L10: + r30 = faster_hexbytes.globals :: static + r31 = '__version__' + r32 = CPyDict_SetItem(r30, r31, r29) + dec_ref r29 + r33 = r32 >= 0 :: signed + if not r33 goto L12 (error at :11) else goto L11 :: bool +L11: + return 1 +L12: + r34 = :: None + return r34 + def to_bytes(val): val :: union[bytes, str, object, bool, int] r0 :: bit @@ -1361,106 +1464,3 @@ L54: L55: dec_ref r116 goto L48 - -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4, r5, r6 :: object - r7 :: str - r8 :: dict - r9, r10 :: object - r11 :: str - r12 :: dict - r13 :: object - r14 :: str - r15 :: list - r16, r17 :: ptr - r18 :: dict - r19 :: str - r20 :: i32 - r21 :: bit - r22 :: str - r23 :: dict - r24 :: str - r25 :: object - r26 :: object[1] - r27 :: object_ptr - r28 :: object - r29 :: str - r30 :: dict - r31 :: str - r32 :: i32 - r33 :: bit - r34 :: None -L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool -L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L12 (error at :-1) else goto L2 -L2: - builtins = r4 :: module - dec_ref r4 -L3: - r5 = ('version',) - r6 = ('__version',) - r7 = 'importlib.metadata' - r8 = faster_hexbytes.globals :: static - r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) - if is_error(r9) goto L12 (error at :1) else goto L4 -L4: - importlib.metadata = r9 :: module - dec_ref r9 - r10 = ('HexBytes',) - r11 = 'faster_hexbytes.main' - r12 = faster_hexbytes.globals :: static - r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) - if is_error(r13) goto L12 (error at :5) else goto L5 -L5: - faster_hexbytes.main = r13 :: module - dec_ref r13 - r14 = 'HexBytes' - r15 = PyList_New(1) - if is_error(r15) goto L12 (error at :9) else goto L6 -L6: - r16 = get_element_ptr r15 ob_item :: PyListObject - r17 = load_mem r16 :: ptr* - inc_ref r14 - set_mem r17, r14 :: builtins.object* - r18 = faster_hexbytes.globals :: static - r19 = '__all__' - r20 = CPyDict_SetItem(r18, r19, r15) - dec_ref r15 - r21 = r20 >= 0 :: signed - if not r21 goto L12 (error at :9) else goto L7 :: bool -L7: - r22 = 'hexbytes' - r23 = faster_hexbytes.globals :: static - r24 = '__version' - r25 = CPyDict_GetItem(r23, r24) - if is_error(r25) goto L12 (error at :11) else goto L8 -L8: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L12 (error at :11) else goto L9 -L9: - r29 = cast(str, r28) - if is_error(r29) goto L12 (error at :11) else goto L10 -L10: - r30 = faster_hexbytes.globals :: static - r31 = '__version__' - r32 = CPyDict_SetItem(r30, r31, r29) - dec_ref r29 - r33 = r32 >= 0 :: signed - if not r33 goto L12 (error at :11) else goto L11 :: bool -L11: - return 1 -L12: - r34 = :: None - return r34 From ffe0636f1916b6ac8c3dd4f0d212e5c9c2fd9b5d Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Tue, 30 Sep 2025 03:26:36 -0400 Subject: [PATCH 43/98] Update test_main_benchmarks.py --- benchmarks/test_main_benchmarks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmarks/test_main_benchmarks.py b/benchmarks/test_main_benchmarks.py index 49a1d84..43143f4 100644 --- a/benchmarks/test_main_benchmarks.py +++ b/benchmarks/test_main_benchmarks.py @@ -30,7 +30,7 @@ def test_faster_hexbytes_new(benchmark: BenchmarkFixture, val: Any) -> None: @pytest.mark.parametrize("idx", [0, 1, 2, 3, 4, 5, -1]) def test_hexbytes_getitem_index(benchmark: BenchmarkFixture, val: bytes, idx: int) -> None: obj = hexbytes.HexBytes(val) - if len(val) <= abs(idx): + if len(val) > abs(idx): benchmark(run_100, lambda: obj[idx]) @pytest.mark.benchmark(group="HexBytes.__getitem__ (index)") From 288dcd0f19fee79b3ad137dac85f8442ae12e4dc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 30 Sep 2025 07:26:59 +0000 Subject: [PATCH 44/98] chore: compile C files for source control --- build/ops.txt | 1664 ++++++++++++++++++++++++------------------------- 1 file changed, 832 insertions(+), 832 deletions(-) diff --git a/build/ops.txt b/build/ops.txt index 5ed32ca..936de4d 100644 --- a/build/ops.txt +++ b/build/ops.txt @@ -1,875 +1,198 @@ -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4, r5, r6 :: object - r7 :: str - r8 :: dict - r9, r10 :: object - r11 :: str - r12 :: dict - r13 :: object - r14 :: str - r15 :: list - r16, r17 :: ptr - r18 :: dict - r19 :: str - r20 :: i32 - r21 :: bit - r22 :: str - r23 :: dict - r24 :: str - r25 :: object - r26 :: object[1] - r27 :: object_ptr - r28 :: object - r29 :: str - r30 :: dict - r31 :: str - r32 :: i32 - r33 :: bit - r34 :: None +def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L12 (error at :-1) else goto L2 + inc_ref __mypyc_self__ + return __mypyc_self__ L2: - builtins = r4 :: module - dec_ref r4 + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 L3: - r5 = ('version',) - r6 = ('__version',) - r7 = 'importlib.metadata' - r8 = faster_hexbytes.globals :: static - r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) - if is_error(r9) goto L12 (error at :1) else goto L4 + return r2 L4: - importlib.metadata = r9 :: module - dec_ref r9 - r10 = ('HexBytes',) - r11 = 'faster_hexbytes.main' - r12 = faster_hexbytes.globals :: static - r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) - if is_error(r13) goto L12 (error at :5) else goto L5 -L5: - faster_hexbytes.main = r13 :: module - dec_ref r13 - r14 = 'HexBytes' - r15 = PyList_New(1) - if is_error(r15) goto L12 (error at :9) else goto L6 -L6: - r16 = get_element_ptr r15 ob_item :: PyListObject - r17 = load_mem r16 :: ptr* - inc_ref r14 - set_mem r17, r14 :: builtins.object* - r18 = faster_hexbytes.globals :: static - r19 = '__all__' - r20 = CPyDict_SetItem(r18, r19, r15) - dec_ref r15 - r21 = r20 >= 0 :: signed - if not r21 goto L12 (error at :9) else goto L7 :: bool -L7: - r22 = 'hexbytes' - r23 = faster_hexbytes.globals :: static - r24 = '__version' - r25 = CPyDict_GetItem(r23, r24) - if is_error(r25) goto L12 (error at :11) else goto L8 -L8: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L12 (error at :11) else goto L9 -L9: - r29 = cast(str, r28) - if is_error(r29) goto L12 (error at :11) else goto L10 -L10: - r30 = faster_hexbytes.globals :: static - r31 = '__version__' - r32 = CPyDict_SetItem(r30, r31, r29) - dec_ref r29 - r33 = r32 >= 0 :: signed - if not r33 goto L12 (error at :11) else goto L11 :: bool -L11: - return 1 -L12: - r34 = :: None - return r34 + r3 = :: object + return r3 -def to_bytes(val): - val :: union[bytes, str, object, bool, int] - r0 :: bit - r1 :: bytes - r2 :: bit - r3 :: str - r4 :: bytes - r5 :: bit - r6 :: object - r7 :: object[1] - r8 :: object_ptr - r9 :: object - r10 :: bytes - r11 :: bit - r12 :: bool - r13, r14, r15 :: bytes - r16 :: bit - r17 :: int - r18 :: native_int - r19 :: bit - r20 :: native_int - r21, r22 :: bit - r23 :: bool - r24 :: bit - r25 :: str - r26 :: int - r27, r28, r29 :: str - r30 :: object - r31 :: str - r32 :: object - r33 :: object[1] - r34 :: object_ptr - r35 :: object - r36 :: int - r37 :: object - r38 :: str - r39, r40 :: object - r41 :: object[1] - r42 :: object_ptr - r43 :: object - r44 :: str - r45 :: bytes - r46 :: object - r47 :: str - r48 :: object - r49 :: i32 - r50 :: bit - r51 :: bool - r52 :: object - r53 :: object[1] - r54 :: object_ptr - r55 :: object - r56 :: bytes - r57, r58, r59, r60, r61 :: str - r62 :: object[3] - r63 :: object_ptr - r64 :: object - r65, r66 :: str - r67 :: object - r68, r69 :: str - r70 :: object[3] - r71 :: object_ptr - r72 :: object - r73 :: str - r74 :: list - r75, r76, r77, r78, r79, r80 :: ptr - r81 :: str - r82 :: object - r83 :: str - r84 :: object - r85 :: object[1] - r86 :: object_ptr - r87 :: object - r88 :: bytes +def __new___HexBytes_obj.__call__(__mypyc_self__, cls, val): + __mypyc_self__ :: faster_hexbytes.main.__new___HexBytes_obj + cls :: object + val :: union[bytes, str, bool, object, int] + r0 :: bytes + r1 :: object + r2 :: bool + r3 :: object[2] + r4 :: object_ptr + r5 :: object + r6, r7 :: faster_hexbytes.main.HexBytes L0: - r0 = PyBytes_Check(val) - if r0 goto L1 else goto L3 :: bool + r0 = to_bytes(val) + if is_error(r0) goto L7 (error at __new__:49) else goto L1 L1: - inc_ref val - r1 = cast(bytes, val) - if is_error(r1) goto L51 (error at to_bytes:19) else goto L2 + r1 = faster_hexbytes.main._bytes_new :: static + if is_error(r1) goto L8 else goto L4 L2: - return r1 + r2 = raise NameError('value for final name "_bytes_new" was not set') + if not r2 goto L7 (error at __new__:50) else goto L3 :: bool L3: - r2 = PyUnicode_Check(val) - if r2 goto L4 else goto L7 :: bool + unreachable L4: - inc_ref val - r3 = cast(str, val) - if is_error(r3) goto L51 (error at to_bytes:21) else goto L5 + r3 = [cls, r0] + r4 = load_address r3 + r5 = PyObject_Vectorcall(r1, r4, 2, 0) + if is_error(r5) goto L9 (error at __new__:50) else goto L5 L5: - r4 = hexstr_to_bytes(r3) - dec_ref r3 - if is_error(r4) goto L51 (error at to_bytes:21) else goto L6 + dec_ref r0 + r6 = cast(faster_hexbytes.main.HexBytes, r5) + if is_error(r6) goto L7 (error at __new__:50) else goto L6 L6: - return r4 + return r6 L7: - r5 = PyByteArray_Check(val) - if r5 goto L8 else goto L11 :: bool + r7 = :: faster_hexbytes.main.HexBytes + return r7 L8: - r6 = load_address PyBytes_Type - r7 = [val] - r8 = load_address r7 - r9 = PyObject_Vectorcall(r6, r8, 1, 0) - if is_error(r9) goto L51 (error at to_bytes:23) else goto L9 + dec_ref r0 + goto L2 L9: - r10 = cast(bytes, r9) - if is_error(r10) goto L51 (error at to_bytes:23) else goto L10 -L10: - return r10 -L11: - r11 = PyBool_Check(val) - if r11 goto L12 else goto L17 :: bool -L12: - r12 = unbox(bool, val) - if is_error(r12) goto L51 (error at to_bytes:25) else goto L13 -L13: - if r12 goto L14 else goto L15 :: bool -L14: - r13 = b'\x01' - inc_ref r13 - r14 = r13 - goto L16 -L15: - r15 = b'\x00' - inc_ref r15 - r14 = r15 -L16: - return r14 -L17: - r16 = PyLong_Check(val) - if r16 goto L18 else goto L37 :: bool -L18: - r17 = unbox(int, val) - if is_error(r17) goto L51 (error at to_bytes:29) else goto L19 -L19: - r18 = r17 & 1 - r19 = r18 != 0 - if r19 goto L21 else goto L20 :: bool -L20: - r20 = 0 & 1 - r21 = r20 != 0 - if r21 goto L21 else goto L22 :: bool -L21: - r22 = CPyTagged_IsLt_(r17, 0) - r23 = r22 - goto L23 -L22: - r24 = r17 < 0 :: signed - r23 = r24 -L23: - dec_ref r17 :: int - if r23 goto L24 else goto L31 :: bool -L24: - r25 = 'Cannot convert negative integer ' - r26 = unbox(int, val) - if is_error(r26) goto L51 (error at to_bytes:30) else goto L25 -L25: - r27 = CPyTagged_Str(r26) - dec_ref r26 :: int - if is_error(r27) goto L51 (error at to_bytes:30) else goto L26 -L26: - r28 = ' to bytes' - r29 = CPyStr_Build(3, r25, r27, r28) - dec_ref r27 - if is_error(r29) goto L51 (error at to_bytes:30) else goto L27 -L27: - r30 = builtins :: module - r31 = 'ValueError' - r32 = CPyObject_GetAttr(r30, r31) - if is_error(r32) goto L52 (error at to_bytes:30) else goto L28 -L28: - r33 = [r29] - r34 = load_address r33 - r35 = PyObject_Vectorcall(r32, r34, 1, 0) - dec_ref r32 - if is_error(r35) goto L52 (error at to_bytes:30) else goto L29 -L29: - dec_ref r29 - CPy_Raise(r35) - dec_ref r35 - if not 0 goto L51 (error at to_bytes:30) else goto L30 :: bool -L30: - unreachable -L31: - r36 = unbox(int, val) - if is_error(r36) goto L51 (error at to_bytes:32) else goto L32 -L32: - r37 = builtins :: module - r38 = 'hex' - r39 = CPyObject_GetAttr(r37, r38) - if is_error(r39) goto L53 (error at to_bytes:32) else goto L33 -L33: - r40 = box(int, r36) - r41 = [r40] - r42 = load_address r41 - r43 = PyObject_Vectorcall(r39, r42, 1, 0) - dec_ref r39 - if is_error(r43) goto L54 (error at to_bytes:32) else goto L34 -L34: - dec_ref r40 - r44 = cast(str, r43) - if is_error(r44) goto L51 (error at to_bytes:32) else goto L35 -L35: - r45 = to_bytes(r44) - dec_ref r44 - if is_error(r45) goto L51 (error at to_bytes:32) else goto L36 -L36: - return r45 -L37: - r46 = builtins :: module - r47 = 'memoryview' - r48 = CPyObject_GetAttr(r46, r47) - if is_error(r48) goto L51 (error at to_bytes:33) else goto L38 -L38: - r49 = PyObject_IsInstance(val, r48) - dec_ref r48 - r50 = r49 >= 0 :: signed - if not r50 goto L51 (error at to_bytes:33) else goto L39 :: bool -L39: - r51 = truncate r49: i32 to builtins.bool - if r51 goto L40 else goto L43 :: bool -L40: - r52 = load_address PyBytes_Type - r53 = [val] - r54 = load_address r53 - r55 = PyObject_Vectorcall(r52, r54, 1, 0) - if is_error(r55) goto L51 (error at to_bytes:34) else goto L41 -L41: - r56 = cast(bytes, r55) - if is_error(r56) goto L51 (error at to_bytes:34) else goto L42 -L42: - return r56 -L43: - r57 = '' - r58 = 'Cannot convert ' - r59 = '{!r:{}}' - r60 = '' - r61 = 'format' - r62 = [r59, val, r60] - r63 = load_address r62 - r64 = PyObject_VectorcallMethod(r61, r63, 9223372036854775811, 0) - if is_error(r64) goto L51 (error at to_bytes:36) else goto L44 -L44: - r65 = ' of type ' - r66 = '{:{}}' - r67 = CPy_TYPE(val) - r68 = '' - r69 = 'format' - r70 = [r66, r67, r68] - r71 = load_address r70 - r72 = PyObject_VectorcallMethod(r69, r71, 9223372036854775811, 0) - if is_error(r72) goto L55 (error at to_bytes:36) else goto L45 -L45: - dec_ref r67 - r73 = ' to bytes' - r74 = PyList_New(5) - if is_error(r74) goto L56 (error at to_bytes:36) else goto L46 -L46: - r75 = get_element_ptr r74 ob_item :: PyListObject - r76 = load_mem r75 :: ptr* - inc_ref r58 - set_mem r76, r58 :: builtins.object* - r77 = r76 + 8 - set_mem r77, r64 :: builtins.object* - inc_ref r65 - r78 = r76 + 16 - set_mem r78, r65 :: builtins.object* - r79 = r76 + 24 - set_mem r79, r72 :: builtins.object* - inc_ref r73 - r80 = r76 + 32 - set_mem r80, r73 :: builtins.object* - r81 = PyUnicode_Join(r57, r74) - dec_ref r74 - if is_error(r81) goto L51 (error at to_bytes:36) else goto L47 -L47: - r82 = builtins :: module - r83 = 'TypeError' - r84 = CPyObject_GetAttr(r82, r83) - if is_error(r84) goto L57 (error at to_bytes:36) else goto L48 -L48: - r85 = [r81] - r86 = load_address r85 - r87 = PyObject_Vectorcall(r84, r86, 1, 0) - dec_ref r84 - if is_error(r87) goto L57 (error at to_bytes:36) else goto L49 -L49: - dec_ref r81 - CPy_Raise(r87) - dec_ref r87 - if not 0 goto L51 (error at to_bytes:36) else goto L50 :: bool -L50: - unreachable -L51: - r88 = :: bytes - return r88 -L52: - dec_ref r29 - goto L51 -L53: - dec_ref r36 :: int - goto L51 -L54: - dec_ref r40 - goto L51 -L55: - dec_ref r64 - dec_ref r67 - goto L51 -L56: - dec_ref r64 - dec_ref r72 - goto L51 -L57: - dec_ref r81 - goto L51 + dec_ref r0 + goto L7 -def hexstr_to_bytes(hexstr): - hexstr, r0, r1 :: str - r2 :: tuple[str, str] - r3 :: object - r4 :: bool - r5 :: object - r6, non_prefixed_hex :: str - r7 :: native_int - r8 :: bit - r9 :: short_int - r10 :: int - r11 :: bit - r12, r13, padded_hex :: str - r14 :: bytes - r15 :: tuple[object, object, object] - r16 :: object - r17 :: str - r18 :: object - r19 :: bit - r20, r21, r22 :: str - r23 :: object - r24 :: str - r25 :: object - r26 :: object[1] - r27 :: object_ptr - r28 :: object - r29 :: bit - r30 :: object - r31 :: bool - r32 :: object[1] - r33 :: object_ptr - r34 :: object - r35, r36 :: bytes +def __getitem___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object L0: - r0 = '0x' - r1 = '0X' - inc_ref r0 - inc_ref r1 - r2 = (r0, r1) - r3 = box(tuple[str, str], r2) - r4 = CPyStr_Startswith(hexstr, r3) - dec_ref r3 - if is_error(r4) goto L31 (error at hexstr_to_bytes:40) else goto L1 + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool L1: - if r4 goto L2 else goto L5 :: bool + inc_ref __mypyc_self__ + return __mypyc_self__ L2: - r5 = CPyStr_GetSlice(hexstr, 4, 9223372036854775806) - if is_error(r5) goto L31 (error at hexstr_to_bytes:41) else goto L3 + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 L3: - r6 = cast(str, r5) - if is_error(r6) goto L31 (error at hexstr_to_bytes:41) else goto L4 + return r2 L4: - non_prefixed_hex = r6 - goto L6 -L5: - inc_ref hexstr - non_prefixed_hex = hexstr + r3 = :: object + return r3 + +def __getitem___HexBytes_obj.__call__(__mypyc_self__, self, key): + __mypyc_self__ :: faster_hexbytes.main.__getitem___HexBytes_obj + self :: faster_hexbytes.main.HexBytes + key, r0 :: object + r1 :: str + r2 :: object[3] + r3 :: object_ptr + r4 :: object + r5 :: union[int, bytes] + r6 :: bit + r7 :: int + r8, r9, r10 :: object + r11 :: bit + r12 :: bytes + r13 :: object + r14 :: object[1] + r15 :: object_ptr + r16 :: object + r17 :: faster_hexbytes.main.HexBytes + r18 :: bytes + r19 :: object[1] + r20 :: object_ptr + r21 :: object + r22 :: faster_hexbytes.main.HexBytes + r23 :: union[int, faster_hexbytes.main.HexBytes] +L0: + r0 = load_address PyBytes_Type + r1 = '__getitem__' + r2 = [r0, self, key] + r3 = load_address r2 + r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775811, 0) + if is_error(r4) goto L14 (error at __getitem__:63) else goto L1 +L1: + r5 = cast(union[int, bytes], r4) + if is_error(r5) goto L14 (error at __getitem__:63) else goto L2 +L2: + r6 = PyLong_Check(r5) + if r6 goto L3 else goto L5 :: bool +L3: + r7 = unbox(int, r5) + dec_ref r5 + if is_error(r7) goto L14 (error at __getitem__:65) else goto L4 +L4: + r8 = box(int, r7) + return r8 +L5: + r9 = CPy_TYPE(self) + r10 = faster_hexbytes.main.HexBytes :: type + r11 = r9 == r10 + if r11 goto L15 else goto L10 :: bool L6: - r7 = CPyStr_Size_size_t(hexstr) - r8 = r7 >= 0 :: signed - if not r8 goto L32 (error at hexstr_to_bytes:46) else goto L7 :: bool + r12 = cast(bytes, r5) + if is_error(r12) goto L14 (error at __getitem__:69) else goto L7 L7: - r9 = r7 << 1 - r10 = CPyTagged_Remainder(r9, 4) - if is_error(r10) goto L32 (error at hexstr_to_bytes:46) else goto L8 + r13 = faster_hexbytes.main.HexBytes :: type + r14 = [r12] + r15 = load_address r14 + r16 = PyObject_Vectorcall(r13, r15, 1, 0) + if is_error(r16) goto L16 (error at __getitem__:69) else goto L8 L8: - r11 = r10 != 0 - dec_ref r10 :: int - if r11 goto L9 else goto L11 :: bool + dec_ref r12 + r17 = cast(faster_hexbytes.main.HexBytes, r16) + if is_error(r17) goto L14 (error at __getitem__:69) else goto L9 L9: - r12 = '0' - r13 = PyUnicode_Concat(r12, non_prefixed_hex) - dec_ref non_prefixed_hex - if is_error(r13) goto L31 (error at hexstr_to_bytes:47) else goto L10 + return r17 L10: - padded_hex = r13 - goto L12 + r18 = cast(bytes, r5) + if is_error(r18) goto L17 (error at __getitem__:70) else goto L11 L11: - padded_hex = non_prefixed_hex + r19 = [r18] + r20 = load_address r19 + r21 = PyObject_Vectorcall(r9, r20, 1, 0) + dec_ref r9 + if is_error(r21) goto L18 (error at __getitem__:70) else goto L12 L12: - r14 = PyUnicode_AsASCIIString(padded_hex) - if is_error(r14) goto L14 (error at hexstr_to_bytes:52) else goto L33 + dec_ref r18 + r22 = cast(faster_hexbytes.main.HexBytes, r21) + if is_error(r22) goto L14 (error at __getitem__:70) else goto L13 L13: - goto L25 + return r22 L14: - r15 = CPy_CatchError() - r16 = builtins :: module - r17 = 'UnicodeDecodeError' - r18 = CPyObject_GetAttr(r16, r17) - if is_error(r18) goto L34 (error at hexstr_to_bytes:53) else goto L15 + r23 = :: union[int, faster_hexbytes.main.HexBytes] + return r23 L15: - r19 = CPy_ExceptionMatches(r18) - dec_ref r18 - if r19 goto L16 else goto L35 :: bool + dec_ref r9 + goto L6 L16: - r20 = 'hex string ' - r21 = ' may only contain [0-9a-fA-F] characters' - r22 = CPyStr_Build(3, r20, padded_hex, r21) - dec_ref padded_hex - if is_error(r22) goto L23 (error at hexstr_to_bytes:55) else goto L17 + dec_ref r12 + goto L14 L17: - r23 = builtins :: module - r24 = 'ValueError' - r25 = CPyObject_GetAttr(r23, r24) - if is_error(r25) goto L36 (error at hexstr_to_bytes:54) else goto L18 + dec_ref r9 + goto L14 L18: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L36 (error at hexstr_to_bytes:54) else goto L19 -L19: - dec_ref r22 - CPy_Raise(r28) - dec_ref r28 - if not 0 goto L23 (error at hexstr_to_bytes:54) else goto L37 :: bool -L20: - unreachable -L21: - CPy_Reraise() - if not 0 goto L23 else goto L38 :: bool -L22: - unreachable -L23: - CPy_RestoreExcInfo(r15) - dec_ref r15 - r29 = CPy_KeepPropagating() - if not r29 goto L31 else goto L24 :: bool -L24: - unreachable -L25: - r30 = faster_hexbytes._utils.unhexlify :: static - if is_error(r30) goto L39 else goto L28 -L26: - r31 = raise NameError('value for final name "unhexlify" was not set') - if not r31 goto L31 (error at hexstr_to_bytes:58) else goto L27 :: bool -L27: - unreachable -L28: - r32 = [r14] - r33 = load_address r32 - r34 = PyObject_Vectorcall(r30, r33, 1, 0) - if is_error(r34) goto L40 (error at hexstr_to_bytes:58) else goto L29 -L29: - dec_ref r14 - r35 = cast(bytes, r34) - if is_error(r35) goto L31 (error at hexstr_to_bytes:58) else goto L30 -L30: - return r35 -L31: - r36 = :: bytes - return r36 -L32: - dec_ref non_prefixed_hex - goto L31 -L33: - dec_ref padded_hex - goto L13 -L34: - dec_ref padded_hex - goto L23 -L35: - dec_ref padded_hex - goto L21 -L36: - dec_ref r22 - goto L23 -L37: - dec_ref r15 - goto L20 -L38: - dec_ref r15 - goto L22 -L39: - dec_ref r14 - goto L26 -L40: - dec_ref r14 - goto L31 + dec_ref r18 + goto L14 -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4 :: object - r5 :: object_ptr - r6 :: object_ptr[1] - r7 :: c_ptr - r8 :: native_int[1] - r9 :: c_ptr - r10 :: object - r11 :: dict - r12, r13 :: str - r14 :: bit - r15 :: object - r16 :: str - r17 :: dict - r18, r19 :: object - r20 :: str - r21 :: object - r22 :: dict - r23 :: str - r24 :: i32 - r25 :: bit - r26 :: None +def __repr___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L8 (error at :-1) else goto L2 + inc_ref __mypyc_self__ + return __mypyc_self__ L2: - builtins = r4 :: module - dec_ref r4 + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 L3: - r5 = load_address binascii :: module - r6 = [r5] - r7 = load_address r6 - r8 = [1] - r9 = load_address r8 - r10 = (('binascii', 'binascii', 'binascii'),) - r11 = faster_hexbytes._utils.globals :: static - r12 = 'faster_hexbytes/_utils.py' - r13 = '' - r14 = CPyImport_ImportMany(r10, r7, r11, r12, r13, r9) - if not r14 goto L8 else goto L4 :: bool -L4: - r15 = ('Final', 'Union') - r16 = 'typing' - r17 = faster_hexbytes._utils.globals :: static - r18 = CPyImport_ImportFromMany(r16, r15, r15, r17) - if is_error(r18) goto L8 (error at :2) else goto L5 -L5: - typing = r18 :: module - dec_ref r18 - r19 = binascii :: module - r20 = 'unhexlify' - r21 = CPyObject_GetAttr(r19, r20) - if is_error(r21) goto L8 (error at :8) else goto L6 -L6: - faster_hexbytes._utils.unhexlify = r21 :: static - r22 = faster_hexbytes._utils.globals :: static - r23 = 'unhexlify' - r24 = CPyDict_SetItem(r22, r23, r21) - dec_ref r21 - r25 = r24 >= 0 :: signed - if not r25 goto L8 (error at :8) else goto L7 :: bool -L7: - return 1 -L8: - r26 = :: None - return r26 - -def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __new___HexBytes_obj.__call__(__mypyc_self__, cls, val): - __mypyc_self__ :: faster_hexbytes.main.__new___HexBytes_obj - cls :: object - val :: union[bytes, str, bool, object, int] - r0 :: bytes - r1 :: object - r2 :: bool - r3 :: object[2] - r4 :: object_ptr - r5 :: object - r6, r7 :: faster_hexbytes.main.HexBytes -L0: - r0 = to_bytes(val) - if is_error(r0) goto L7 (error at __new__:49) else goto L1 -L1: - r1 = faster_hexbytes.main._bytes_new :: static - if is_error(r1) goto L8 else goto L4 -L2: - r2 = raise NameError('value for final name "_bytes_new" was not set') - if not r2 goto L7 (error at __new__:50) else goto L3 :: bool -L3: - unreachable -L4: - r3 = [cls, r0] - r4 = load_address r3 - r5 = PyObject_Vectorcall(r1, r4, 2, 0) - if is_error(r5) goto L9 (error at __new__:50) else goto L5 -L5: - dec_ref r0 - r6 = cast(faster_hexbytes.main.HexBytes, r5) - if is_error(r6) goto L7 (error at __new__:50) else goto L6 -L6: - return r6 -L7: - r7 = :: faster_hexbytes.main.HexBytes - return r7 -L8: - dec_ref r0 - goto L2 -L9: - dec_ref r0 - goto L7 - -def __getitem___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __getitem___HexBytes_obj.__call__(__mypyc_self__, self, key): - __mypyc_self__ :: faster_hexbytes.main.__getitem___HexBytes_obj - self :: faster_hexbytes.main.HexBytes - key, r0 :: object - r1 :: str - r2 :: object[3] - r3 :: object_ptr - r4 :: object - r5 :: union[int, bytes] - r6 :: bit - r7 :: int - r8, r9, r10 :: object - r11 :: bit - r12 :: bytes - r13 :: object - r14 :: object[1] - r15 :: object_ptr - r16 :: object - r17 :: faster_hexbytes.main.HexBytes - r18 :: bytes - r19 :: object[1] - r20 :: object_ptr - r21 :: object - r22 :: faster_hexbytes.main.HexBytes - r23 :: union[int, faster_hexbytes.main.HexBytes] -L0: - r0 = load_address PyBytes_Type - r1 = '__getitem__' - r2 = [r0, self, key] - r3 = load_address r2 - r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775811, 0) - if is_error(r4) goto L14 (error at __getitem__:63) else goto L1 -L1: - r5 = cast(union[int, bytes], r4) - if is_error(r5) goto L14 (error at __getitem__:63) else goto L2 -L2: - r6 = PyLong_Check(r5) - if r6 goto L3 else goto L5 :: bool -L3: - r7 = unbox(int, r5) - dec_ref r5 - if is_error(r7) goto L14 (error at __getitem__:65) else goto L4 -L4: - r8 = box(int, r7) - return r8 -L5: - r9 = CPy_TYPE(self) - r10 = faster_hexbytes.main.HexBytes :: type - r11 = r9 == r10 - if r11 goto L15 else goto L10 :: bool -L6: - r12 = cast(bytes, r5) - if is_error(r12) goto L14 (error at __getitem__:69) else goto L7 -L7: - r13 = faster_hexbytes.main.HexBytes :: type - r14 = [r12] - r15 = load_address r14 - r16 = PyObject_Vectorcall(r13, r15, 1, 0) - if is_error(r16) goto L16 (error at __getitem__:69) else goto L8 -L8: - dec_ref r12 - r17 = cast(faster_hexbytes.main.HexBytes, r16) - if is_error(r17) goto L14 (error at __getitem__:69) else goto L9 -L9: - return r17 -L10: - r18 = cast(bytes, r5) - if is_error(r18) goto L17 (error at __getitem__:70) else goto L11 -L11: - r19 = [r18] - r20 = load_address r19 - r21 = PyObject_Vectorcall(r9, r20, 1, 0) - dec_ref r9 - if is_error(r21) goto L18 (error at __getitem__:70) else goto L12 -L12: - dec_ref r18 - r22 = cast(faster_hexbytes.main.HexBytes, r21) - if is_error(r22) goto L14 (error at __getitem__:70) else goto L13 -L13: - return r22 -L14: - r23 = :: union[int, faster_hexbytes.main.HexBytes] - return r23 -L15: - dec_ref r9 - goto L6 -L16: - dec_ref r12 - goto L14 -L17: - dec_ref r9 - goto L14 -L18: - dec_ref r18 - goto L14 - -def __repr___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 + return r2 L4: r3 = :: object return r3 @@ -1464,3 +787,680 @@ L54: L55: dec_ref r116 goto L48 + +def to_bytes(val): + val :: union[bytes, str, object, bool, int] + r0 :: bit + r1 :: bytes + r2 :: bit + r3 :: str + r4 :: bytes + r5 :: bit + r6 :: object + r7 :: object[1] + r8 :: object_ptr + r9 :: object + r10 :: bytes + r11 :: bit + r12 :: bool + r13, r14, r15 :: bytes + r16 :: bit + r17 :: int + r18 :: native_int + r19 :: bit + r20 :: native_int + r21, r22 :: bit + r23 :: bool + r24 :: bit + r25 :: str + r26 :: int + r27, r28, r29 :: str + r30 :: object + r31 :: str + r32 :: object + r33 :: object[1] + r34 :: object_ptr + r35 :: object + r36 :: int + r37 :: object + r38 :: str + r39, r40 :: object + r41 :: object[1] + r42 :: object_ptr + r43 :: object + r44 :: str + r45 :: bytes + r46 :: object + r47 :: str + r48 :: object + r49 :: i32 + r50 :: bit + r51 :: bool + r52 :: object + r53 :: object[1] + r54 :: object_ptr + r55 :: object + r56 :: bytes + r57, r58, r59, r60, r61 :: str + r62 :: object[3] + r63 :: object_ptr + r64 :: object + r65, r66 :: str + r67 :: object + r68, r69 :: str + r70 :: object[3] + r71 :: object_ptr + r72 :: object + r73 :: str + r74 :: list + r75, r76, r77, r78, r79, r80 :: ptr + r81 :: str + r82 :: object + r83 :: str + r84 :: object + r85 :: object[1] + r86 :: object_ptr + r87 :: object + r88 :: bytes +L0: + r0 = PyBytes_Check(val) + if r0 goto L1 else goto L3 :: bool +L1: + inc_ref val + r1 = cast(bytes, val) + if is_error(r1) goto L51 (error at to_bytes:19) else goto L2 +L2: + return r1 +L3: + r2 = PyUnicode_Check(val) + if r2 goto L4 else goto L7 :: bool +L4: + inc_ref val + r3 = cast(str, val) + if is_error(r3) goto L51 (error at to_bytes:21) else goto L5 +L5: + r4 = hexstr_to_bytes(r3) + dec_ref r3 + if is_error(r4) goto L51 (error at to_bytes:21) else goto L6 +L6: + return r4 +L7: + r5 = PyByteArray_Check(val) + if r5 goto L8 else goto L11 :: bool +L8: + r6 = load_address PyBytes_Type + r7 = [val] + r8 = load_address r7 + r9 = PyObject_Vectorcall(r6, r8, 1, 0) + if is_error(r9) goto L51 (error at to_bytes:23) else goto L9 +L9: + r10 = cast(bytes, r9) + if is_error(r10) goto L51 (error at to_bytes:23) else goto L10 +L10: + return r10 +L11: + r11 = PyBool_Check(val) + if r11 goto L12 else goto L17 :: bool +L12: + r12 = unbox(bool, val) + if is_error(r12) goto L51 (error at to_bytes:25) else goto L13 +L13: + if r12 goto L14 else goto L15 :: bool +L14: + r13 = b'\x01' + inc_ref r13 + r14 = r13 + goto L16 +L15: + r15 = b'\x00' + inc_ref r15 + r14 = r15 +L16: + return r14 +L17: + r16 = PyLong_Check(val) + if r16 goto L18 else goto L37 :: bool +L18: + r17 = unbox(int, val) + if is_error(r17) goto L51 (error at to_bytes:29) else goto L19 +L19: + r18 = r17 & 1 + r19 = r18 != 0 + if r19 goto L21 else goto L20 :: bool +L20: + r20 = 0 & 1 + r21 = r20 != 0 + if r21 goto L21 else goto L22 :: bool +L21: + r22 = CPyTagged_IsLt_(r17, 0) + r23 = r22 + goto L23 +L22: + r24 = r17 < 0 :: signed + r23 = r24 +L23: + dec_ref r17 :: int + if r23 goto L24 else goto L31 :: bool +L24: + r25 = 'Cannot convert negative integer ' + r26 = unbox(int, val) + if is_error(r26) goto L51 (error at to_bytes:30) else goto L25 +L25: + r27 = CPyTagged_Str(r26) + dec_ref r26 :: int + if is_error(r27) goto L51 (error at to_bytes:30) else goto L26 +L26: + r28 = ' to bytes' + r29 = CPyStr_Build(3, r25, r27, r28) + dec_ref r27 + if is_error(r29) goto L51 (error at to_bytes:30) else goto L27 +L27: + r30 = builtins :: module + r31 = 'ValueError' + r32 = CPyObject_GetAttr(r30, r31) + if is_error(r32) goto L52 (error at to_bytes:30) else goto L28 +L28: + r33 = [r29] + r34 = load_address r33 + r35 = PyObject_Vectorcall(r32, r34, 1, 0) + dec_ref r32 + if is_error(r35) goto L52 (error at to_bytes:30) else goto L29 +L29: + dec_ref r29 + CPy_Raise(r35) + dec_ref r35 + if not 0 goto L51 (error at to_bytes:30) else goto L30 :: bool +L30: + unreachable +L31: + r36 = unbox(int, val) + if is_error(r36) goto L51 (error at to_bytes:32) else goto L32 +L32: + r37 = builtins :: module + r38 = 'hex' + r39 = CPyObject_GetAttr(r37, r38) + if is_error(r39) goto L53 (error at to_bytes:32) else goto L33 +L33: + r40 = box(int, r36) + r41 = [r40] + r42 = load_address r41 + r43 = PyObject_Vectorcall(r39, r42, 1, 0) + dec_ref r39 + if is_error(r43) goto L54 (error at to_bytes:32) else goto L34 +L34: + dec_ref r40 + r44 = cast(str, r43) + if is_error(r44) goto L51 (error at to_bytes:32) else goto L35 +L35: + r45 = to_bytes(r44) + dec_ref r44 + if is_error(r45) goto L51 (error at to_bytes:32) else goto L36 +L36: + return r45 +L37: + r46 = builtins :: module + r47 = 'memoryview' + r48 = CPyObject_GetAttr(r46, r47) + if is_error(r48) goto L51 (error at to_bytes:33) else goto L38 +L38: + r49 = PyObject_IsInstance(val, r48) + dec_ref r48 + r50 = r49 >= 0 :: signed + if not r50 goto L51 (error at to_bytes:33) else goto L39 :: bool +L39: + r51 = truncate r49: i32 to builtins.bool + if r51 goto L40 else goto L43 :: bool +L40: + r52 = load_address PyBytes_Type + r53 = [val] + r54 = load_address r53 + r55 = PyObject_Vectorcall(r52, r54, 1, 0) + if is_error(r55) goto L51 (error at to_bytes:34) else goto L41 +L41: + r56 = cast(bytes, r55) + if is_error(r56) goto L51 (error at to_bytes:34) else goto L42 +L42: + return r56 +L43: + r57 = '' + r58 = 'Cannot convert ' + r59 = '{!r:{}}' + r60 = '' + r61 = 'format' + r62 = [r59, val, r60] + r63 = load_address r62 + r64 = PyObject_VectorcallMethod(r61, r63, 9223372036854775811, 0) + if is_error(r64) goto L51 (error at to_bytes:36) else goto L44 +L44: + r65 = ' of type ' + r66 = '{:{}}' + r67 = CPy_TYPE(val) + r68 = '' + r69 = 'format' + r70 = [r66, r67, r68] + r71 = load_address r70 + r72 = PyObject_VectorcallMethod(r69, r71, 9223372036854775811, 0) + if is_error(r72) goto L55 (error at to_bytes:36) else goto L45 +L45: + dec_ref r67 + r73 = ' to bytes' + r74 = PyList_New(5) + if is_error(r74) goto L56 (error at to_bytes:36) else goto L46 +L46: + r75 = get_element_ptr r74 ob_item :: PyListObject + r76 = load_mem r75 :: ptr* + inc_ref r58 + set_mem r76, r58 :: builtins.object* + r77 = r76 + 8 + set_mem r77, r64 :: builtins.object* + inc_ref r65 + r78 = r76 + 16 + set_mem r78, r65 :: builtins.object* + r79 = r76 + 24 + set_mem r79, r72 :: builtins.object* + inc_ref r73 + r80 = r76 + 32 + set_mem r80, r73 :: builtins.object* + r81 = PyUnicode_Join(r57, r74) + dec_ref r74 + if is_error(r81) goto L51 (error at to_bytes:36) else goto L47 +L47: + r82 = builtins :: module + r83 = 'TypeError' + r84 = CPyObject_GetAttr(r82, r83) + if is_error(r84) goto L57 (error at to_bytes:36) else goto L48 +L48: + r85 = [r81] + r86 = load_address r85 + r87 = PyObject_Vectorcall(r84, r86, 1, 0) + dec_ref r84 + if is_error(r87) goto L57 (error at to_bytes:36) else goto L49 +L49: + dec_ref r81 + CPy_Raise(r87) + dec_ref r87 + if not 0 goto L51 (error at to_bytes:36) else goto L50 :: bool +L50: + unreachable +L51: + r88 = :: bytes + return r88 +L52: + dec_ref r29 + goto L51 +L53: + dec_ref r36 :: int + goto L51 +L54: + dec_ref r40 + goto L51 +L55: + dec_ref r64 + dec_ref r67 + goto L51 +L56: + dec_ref r64 + dec_ref r72 + goto L51 +L57: + dec_ref r81 + goto L51 + +def hexstr_to_bytes(hexstr): + hexstr, r0, r1 :: str + r2 :: tuple[str, str] + r3 :: object + r4 :: bool + r5 :: object + r6, non_prefixed_hex :: str + r7 :: native_int + r8 :: bit + r9 :: short_int + r10 :: int + r11 :: bit + r12, r13, padded_hex :: str + r14 :: bytes + r15 :: tuple[object, object, object] + r16 :: object + r17 :: str + r18 :: object + r19 :: bit + r20, r21, r22 :: str + r23 :: object + r24 :: str + r25 :: object + r26 :: object[1] + r27 :: object_ptr + r28 :: object + r29 :: bit + r30 :: object + r31 :: bool + r32 :: object[1] + r33 :: object_ptr + r34 :: object + r35, r36 :: bytes +L0: + r0 = '0x' + r1 = '0X' + inc_ref r0 + inc_ref r1 + r2 = (r0, r1) + r3 = box(tuple[str, str], r2) + r4 = CPyStr_Startswith(hexstr, r3) + dec_ref r3 + if is_error(r4) goto L31 (error at hexstr_to_bytes:40) else goto L1 +L1: + if r4 goto L2 else goto L5 :: bool +L2: + r5 = CPyStr_GetSlice(hexstr, 4, 9223372036854775806) + if is_error(r5) goto L31 (error at hexstr_to_bytes:41) else goto L3 +L3: + r6 = cast(str, r5) + if is_error(r6) goto L31 (error at hexstr_to_bytes:41) else goto L4 +L4: + non_prefixed_hex = r6 + goto L6 +L5: + inc_ref hexstr + non_prefixed_hex = hexstr +L6: + r7 = CPyStr_Size_size_t(hexstr) + r8 = r7 >= 0 :: signed + if not r8 goto L32 (error at hexstr_to_bytes:46) else goto L7 :: bool +L7: + r9 = r7 << 1 + r10 = CPyTagged_Remainder(r9, 4) + if is_error(r10) goto L32 (error at hexstr_to_bytes:46) else goto L8 +L8: + r11 = r10 != 0 + dec_ref r10 :: int + if r11 goto L9 else goto L11 :: bool +L9: + r12 = '0' + r13 = PyUnicode_Concat(r12, non_prefixed_hex) + dec_ref non_prefixed_hex + if is_error(r13) goto L31 (error at hexstr_to_bytes:47) else goto L10 +L10: + padded_hex = r13 + goto L12 +L11: + padded_hex = non_prefixed_hex +L12: + r14 = PyUnicode_AsASCIIString(padded_hex) + if is_error(r14) goto L14 (error at hexstr_to_bytes:52) else goto L33 +L13: + goto L25 +L14: + r15 = CPy_CatchError() + r16 = builtins :: module + r17 = 'UnicodeDecodeError' + r18 = CPyObject_GetAttr(r16, r17) + if is_error(r18) goto L34 (error at hexstr_to_bytes:53) else goto L15 +L15: + r19 = CPy_ExceptionMatches(r18) + dec_ref r18 + if r19 goto L16 else goto L35 :: bool +L16: + r20 = 'hex string ' + r21 = ' may only contain [0-9a-fA-F] characters' + r22 = CPyStr_Build(3, r20, padded_hex, r21) + dec_ref padded_hex + if is_error(r22) goto L23 (error at hexstr_to_bytes:55) else goto L17 +L17: + r23 = builtins :: module + r24 = 'ValueError' + r25 = CPyObject_GetAttr(r23, r24) + if is_error(r25) goto L36 (error at hexstr_to_bytes:54) else goto L18 +L18: + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L36 (error at hexstr_to_bytes:54) else goto L19 +L19: + dec_ref r22 + CPy_Raise(r28) + dec_ref r28 + if not 0 goto L23 (error at hexstr_to_bytes:54) else goto L37 :: bool +L20: + unreachable +L21: + CPy_Reraise() + if not 0 goto L23 else goto L38 :: bool +L22: + unreachable +L23: + CPy_RestoreExcInfo(r15) + dec_ref r15 + r29 = CPy_KeepPropagating() + if not r29 goto L31 else goto L24 :: bool +L24: + unreachable +L25: + r30 = faster_hexbytes._utils.unhexlify :: static + if is_error(r30) goto L39 else goto L28 +L26: + r31 = raise NameError('value for final name "unhexlify" was not set') + if not r31 goto L31 (error at hexstr_to_bytes:58) else goto L27 :: bool +L27: + unreachable +L28: + r32 = [r14] + r33 = load_address r32 + r34 = PyObject_Vectorcall(r30, r33, 1, 0) + if is_error(r34) goto L40 (error at hexstr_to_bytes:58) else goto L29 +L29: + dec_ref r14 + r35 = cast(bytes, r34) + if is_error(r35) goto L31 (error at hexstr_to_bytes:58) else goto L30 +L30: + return r35 +L31: + r36 = :: bytes + return r36 +L32: + dec_ref non_prefixed_hex + goto L31 +L33: + dec_ref padded_hex + goto L13 +L34: + dec_ref padded_hex + goto L23 +L35: + dec_ref padded_hex + goto L21 +L36: + dec_ref r22 + goto L23 +L37: + dec_ref r15 + goto L20 +L38: + dec_ref r15 + goto L22 +L39: + dec_ref r14 + goto L26 +L40: + dec_ref r14 + goto L31 + +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4 :: object + r5 :: object_ptr + r6 :: object_ptr[1] + r7 :: c_ptr + r8 :: native_int[1] + r9 :: c_ptr + r10 :: object + r11 :: dict + r12, r13 :: str + r14 :: bit + r15 :: object + r16 :: str + r17 :: dict + r18, r19 :: object + r20 :: str + r21 :: object + r22 :: dict + r23 :: str + r24 :: i32 + r25 :: bit + r26 :: None +L0: + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool +L1: + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L8 (error at :-1) else goto L2 +L2: + builtins = r4 :: module + dec_ref r4 +L3: + r5 = load_address binascii :: module + r6 = [r5] + r7 = load_address r6 + r8 = [1] + r9 = load_address r8 + r10 = (('binascii', 'binascii', 'binascii'),) + r11 = faster_hexbytes._utils.globals :: static + r12 = 'faster_hexbytes/_utils.py' + r13 = '' + r14 = CPyImport_ImportMany(r10, r7, r11, r12, r13, r9) + if not r14 goto L8 else goto L4 :: bool +L4: + r15 = ('Final', 'Union') + r16 = 'typing' + r17 = faster_hexbytes._utils.globals :: static + r18 = CPyImport_ImportFromMany(r16, r15, r15, r17) + if is_error(r18) goto L8 (error at :2) else goto L5 +L5: + typing = r18 :: module + dec_ref r18 + r19 = binascii :: module + r20 = 'unhexlify' + r21 = CPyObject_GetAttr(r19, r20) + if is_error(r21) goto L8 (error at :8) else goto L6 +L6: + faster_hexbytes._utils.unhexlify = r21 :: static + r22 = faster_hexbytes._utils.globals :: static + r23 = 'unhexlify' + r24 = CPyDict_SetItem(r22, r23, r21) + dec_ref r21 + r25 = r24 >= 0 :: signed + if not r25 goto L8 (error at :8) else goto L7 :: bool +L7: + return 1 +L8: + r26 = :: None + return r26 + +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4, r5, r6 :: object + r7 :: str + r8 :: dict + r9, r10 :: object + r11 :: str + r12 :: dict + r13 :: object + r14 :: str + r15 :: list + r16, r17 :: ptr + r18 :: dict + r19 :: str + r20 :: i32 + r21 :: bit + r22 :: str + r23 :: dict + r24 :: str + r25 :: object + r26 :: object[1] + r27 :: object_ptr + r28 :: object + r29 :: str + r30 :: dict + r31 :: str + r32 :: i32 + r33 :: bit + r34 :: None +L0: + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool +L1: + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L12 (error at :-1) else goto L2 +L2: + builtins = r4 :: module + dec_ref r4 +L3: + r5 = ('version',) + r6 = ('__version',) + r7 = 'importlib.metadata' + r8 = faster_hexbytes.globals :: static + r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) + if is_error(r9) goto L12 (error at :1) else goto L4 +L4: + importlib.metadata = r9 :: module + dec_ref r9 + r10 = ('HexBytes',) + r11 = 'faster_hexbytes.main' + r12 = faster_hexbytes.globals :: static + r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) + if is_error(r13) goto L12 (error at :5) else goto L5 +L5: + faster_hexbytes.main = r13 :: module + dec_ref r13 + r14 = 'HexBytes' + r15 = PyList_New(1) + if is_error(r15) goto L12 (error at :9) else goto L6 +L6: + r16 = get_element_ptr r15 ob_item :: PyListObject + r17 = load_mem r16 :: ptr* + inc_ref r14 + set_mem r17, r14 :: builtins.object* + r18 = faster_hexbytes.globals :: static + r19 = '__all__' + r20 = CPyDict_SetItem(r18, r19, r15) + dec_ref r15 + r21 = r20 >= 0 :: signed + if not r21 goto L12 (error at :9) else goto L7 :: bool +L7: + r22 = 'hexbytes' + r23 = faster_hexbytes.globals :: static + r24 = '__version' + r25 = CPyDict_GetItem(r23, r24) + if is_error(r25) goto L12 (error at :11) else goto L8 +L8: + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L12 (error at :11) else goto L9 +L9: + r29 = cast(str, r28) + if is_error(r29) goto L12 (error at :11) else goto L10 +L10: + r30 = faster_hexbytes.globals :: static + r31 = '__version__' + r32 = CPyDict_SetItem(r30, r31, r29) + dec_ref r29 + r33 = r32 >= 0 :: signed + if not r33 goto L12 (error at :11) else goto L11 :: bool +L11: + return 1 +L12: + r34 = :: None + return r34 From 76c03d9401624216aeef4c4f092bd3906ffb6fe6 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Tue, 30 Sep 2025 05:06:28 -0400 Subject: [PATCH 45/98] run comparison benchmarks (#2) * run comparison benchmarks * Update benchmark results [skip ci] --------- Co-authored-by: github-actions[bot] --- benchmarks/results/_utils.md | 141 ++++++++++ benchmarks/results/main.md | 486 +++++++++++++++++++++++++++++++++++ 2 files changed, 627 insertions(+) create mode 100644 benchmarks/results/_utils.md create mode 100644 benchmarks/results/main.md diff --git a/benchmarks/results/_utils.md b/benchmarks/results/_utils.md new file mode 100644 index 0000000..cddf5a2 --- /dev/null +++ b/benchmarks/results/_utils.md @@ -0,0 +1,141 @@ +#### [faster_hexbytes._utils](https://github.com/BobTheBuidler/faster-hexbytes/blob/benchmark/faster_hexbytes/_utils.py) - [view benchmarks](https://github.com/BobTheBuidler/faster-hexbytes/blob/benchmark/benchmarks/test__utils_benchmarks.py) + +| Function | Reference Mean | Faster Mean | % Change | Speedup (%) | x Faster | Faster | +|----------|---------------|-------------|----------|-------------|----------|--------| +| `hexstr_to_bytes['']` | 1.7693315307804868e-05 | 1.1179726147479144e-05 | 36.81% | 58.26% | 1.58x | ✅ | +| `hexstr_to_bytes['0x'+'0'*128]` | 3.42949906090721e-05 | 2.098034489856244e-05 | 38.82% | 63.46% | 1.63x | ✅ | +| `hexstr_to_bytes['0x'+'00'*64]` | 3.4029689635560134e-05 | 2.10303706868544e-05 | 38.20% | 61.81% | 1.62x | ✅ | +| `hexstr_to_bytes['0x'+'00ff'*16]` | 3.094838328028653e-05 | 1.807462000181124e-05 | 41.60% | 71.23% | 1.71x | ✅ | +| `hexstr_to_bytes['0x'+'0123456789abcdef'*8]` | 3.432770530738586e-05 | 2.0939726654757956e-05 | 39.00% | 63.94% | 1.64x | ✅ | +| `hexstr_to_bytes['0x'+'1'*64]` | 3.106500558142552e-05 | 1.803506739850267e-05 | 41.94% | 72.25% | 1.72x | ✅ | +| `hexstr_to_bytes['0x'+'1234567890abcdef'*8]` | 3.444213332083847e-05 | 2.1062415055709138e-05 | 38.85% | 63.52% | 1.64x | ✅ | +| `hexstr_to_bytes['0x'+'a'*128]` | 3.402123802839552e-05 | 2.1096504577780626e-05 | 37.99% | 61.26% | 1.61x | ✅ | +| `hexstr_to_bytes['0x'+'a1b2c3d4'*8]` | 3.118321973125747e-05 | 1.865736666332591e-05 | 40.17% | 67.14% | 1.67x | ✅ | +| `hexstr_to_bytes['0x'+'b'*2048]` | 0.00013594383303039772 | 0.00011740238816895623 | 13.64% | 15.79% | 1.16x | ✅ | +| `hexstr_to_bytes['0x'+'badc0ffee0ddf00d'*4]` | 3.0637299606844215e-05 | 1.825061606833408e-05 | 40.43% | 67.87% | 1.68x | ✅ | +| `hexstr_to_bytes['0x'+'beef'*16]` | 3.0686441614538446e-05 | 1.828964146387517e-05 | 40.40% | 67.78% | 1.68x | ✅ | +| `hexstr_to_bytes['0x'+'c'*1024]` | 8.930193709352504e-05 | 7.109606211638662e-05 | 20.39% | 25.61% | 1.26x | ✅ | +| `hexstr_to_bytes['0x'+'cafebabe'*8]` | 3.088379314855554e-05 | 1.8427330656680643e-05 | 40.33% | 67.60% | 1.68x | ✅ | +| `hexstr_to_bytes['0x'+'d'*512]` | 5.7096419255965127e-05 | 4.083693236247332e-05 | 28.48% | 39.82% | 1.40x | ✅ | +| `hexstr_to_bytes['0x'+'dead'*16]` | 3.058232145729629e-05 | 1.809661975645168e-05 | 40.83% | 68.99% | 1.69x | ✅ | +| `hexstr_to_bytes['0x'+'e'*256]` | 4.3404514225927844e-05 | 2.765456002913683e-05 | 36.29% | 56.95% | 1.57x | ✅ | +| `hexstr_to_bytes['0x'+'f'*128]` | 3.399261691057168e-05 | 2.222686285822979e-05 | 34.61% | 52.93% | 1.53x | ✅ | +| `hexstr_to_bytes['0x'+'f'*64]` | 3.1021508877018215e-05 | 1.8116641999804634e-05 | 41.60% | 71.23% | 1.71x | ✅ | +| `hexstr_to_bytes['0x'+'facefeed'*8]` | 3.080530283390321e-05 | 1.836125208505399e-05 | 40.40% | 67.77% | 1.68x | ✅ | +| `hexstr_to_bytes['0x'+'ff'*32]` | 3.025273538705345e-05 | 1.869490905427472e-05 | 38.20% | 61.82% | 1.62x | ✅ | +| `hexstr_to_bytes['0x'+'ff00'*16]` | 3.133593755440466e-05 | 1.793547693437449e-05 | 42.76% | 74.71% | 1.75x | ✅ | +| `hexstr_to_bytes['0x']` | 2.2363566556968745e-05 | 1.0721175914161055e-05 | 52.06% | 108.59% | 2.09x | ✅ | +| `hexstr_to_bytes['0x0']` | 3.117668463108531e-05 | 1.8295366577069213e-05 | 41.32% | 70.41% | 1.70x | ✅ | +| `hexstr_to_bytes['0x1']` | 3.0849555815962966e-05 | 1.8261551169755883e-05 | 40.80% | 68.93% | 1.69x | ✅ | +| `hexstr_to_bytes['0x1234']` | 2.8017224899503598e-05 | 1.6290132930728818e-05 | 41.86% | 71.99% | 1.72x | ✅ | +| `hexstr_to_bytes['0xCAFEBABE']` | 2.8630167761260635e-05 | 1.590381517649548e-05 | 44.45% | 80.02% | 1.80x | ✅ | +| `hexstr_to_bytes['0xabcdef']` | 2.819579268732196e-05 | 1.6022231111650803e-05 | 43.18% | 75.98% | 1.76x | ✅ | +| `hexstr_to_bytes['0xdeadbeef']` | 2.830248157006902e-05 | 1.585293612257558e-05 | 43.99% | 78.53% | 1.79x | ✅ | +| `hexstr_to_bytes['deadbeef']` | 2.1769765855138907e-05 | 1.4235579165167571e-05 | 34.61% | 52.93% | 1.53x | ✅ | +| `to_bytes['']` | 2.780713012713541e-05 | 1.2309232769289748e-05 | 55.73% | 125.90% | 2.26x | ✅ | +| `to_bytes['0x'+'00'*64]` | 4.614754749205394e-05 | 2.454348694205276e-05 | 46.82% | 88.02% | 1.88x | ✅ | +| `to_bytes['0x'+'a'*128]` | 4.578380867751802e-05 | 2.2843051102385115e-05 | 50.11% | 100.43% | 2.00x | ✅ | +| `to_bytes['0x'+'ff'*32]` | 4.2892556366788844e-05 | 2.0060250794027318e-05 | 53.23% | 113.82% | 2.14x | ✅ | +| `to_bytes['0x']` | 3.378070519013953e-05 | 1.2405538866200987e-05 | 63.28% | 172.30% | 2.72x | ✅ | +| `to_bytes['0x1234']` | 4.0135614389222814e-05 | 1.7331320939841e-05 | 56.82% | 131.58% | 2.32x | ✅ | +| `to_bytes['0xCAFEBABE']` | 4.028950128859023e-05 | 1.7608736971127636e-05 | 56.29% | 128.80% | 2.29x | ✅ | +| `to_bytes['0xabcdef']` | 4.033539702017461e-05 | 1.7413172587315903e-05 | 56.83% | 131.64% | 2.32x | ✅ | +| `to_bytes['0xdeadbeef']` | 4.013742988293151e-05 | 1.753887938858019e-05 | 56.30% | 128.85% | 2.29x | ✅ | +| `to_bytes['abc']` | 3.626267484598067e-05 | 1.9475589274551575e-05 | 46.29% | 86.20% | 1.86x | ✅ | +| `to_bytes['deadbeef']` | 3.2121970134094524e-05 | 1.4998967326784364e-05 | 53.31% | 114.16% | 2.14x | ✅ | +| `to_bytes[0-9]` | 6.3886084044368e-06 | 3.6301764321770105e-06 | 43.18% | 75.99% | 1.76x | ✅ | +| `to_bytes[0]` | 7.379821878600025e-05 | 3.0514048254667094e-05 | 58.65% | 141.85% | 2.42x | ✅ | +| `to_bytes[123456]` | 7.73908812451048e-05 | 3.575842943020024e-05 | 53.80% | 116.43% | 2.16x | ✅ | +| `to_bytes[2**16]` | 7.617986899797664e-05 | 3.527787514997935e-05 | 53.69% | 115.94% | 2.16x | ✅ | +| `to_bytes[2**256-1]` | 8.129447794758294e-05 | 4.0483949767541644e-05 | 50.20% | 100.81% | 2.01x | ✅ | +| `to_bytes[2**32]` | 7.885789630365754e-05 | 3.807714350478118e-05 | 51.71% | 107.10% | 2.07x | ✅ | +| `to_bytes[2**64]` | 8.069210213483589e-05 | 3.965815884713019e-05 | 50.85% | 103.47% | 2.03x | ✅ | +| `to_bytes[2**8]` | 7.60528725562803e-05 | 3.317653912689118e-05 | 56.38% | 129.24% | 2.29x | ✅ | +| `to_bytes[4-byte pattern]` | 5.966323180854022e-06 | 3.3885955799150795e-06 | 43.20% | 76.07% | 1.76x | ✅ | +| `to_bytes[False]` | 2.132333374780846e-05 | 4.322555878144883e-06 | 79.73% | 393.30% | 4.93x | ✅ | +| `to_bytes[True]` | 2.114009323563744e-05 | 4.474505459519339e-06 | 78.83% | 372.46% | 4.72x | ✅ | +| `to_bytes[all byte values]` | 6.388727853404534e-06 | 3.6321036172973787e-06 | 43.15% | 75.90% | 1.76x | ✅ | +| `to_bytes[alternating 0x00/0xff]` | 6.363086431103152e-06 | 3.4449100293139135e-06 | 45.86% | 84.71% | 1.85x | ✅ | +| `to_bytes[alternating 0xaa/0x55]` | 6.278620315055821e-06 | 3.535981761329247e-06 | 43.68% | 77.56% | 1.78x | ✅ | +| `to_bytes[ascii sentence]` | 6.385267134108629e-06 | 3.7213794053924145e-06 | 41.72% | 71.58% | 1.72x | ✅ | +| `to_bytes[b'']` | 6.10807762546999e-06 | 3.559441642548437e-06 | 41.73% | 71.60% | 1.72x | ✅ | +| `to_bytes[b'\\x00'*32]` | 6.1997821267900955e-06 | 3.7227266437959667e-06 | 39.95% | 66.54% | 1.67x | ✅ | +| `to_bytes[b'\\x00\\xff\\x00\\xff']` | 6.115080140454961e-06 | 3.6294043971970026e-06 | 40.65% | 68.49% | 1.68x | ✅ | +| `to_bytes[b'\\x01'*100]` | 6.38729320124322e-06 | 3.629548274374021e-06 | 43.18% | 75.98% | 1.76x | ✅ | +| `to_bytes[b'\\x01'*2048]` | 6.392970547909741e-06 | 3.5681287886529697e-06 | 44.19% | 79.17% | 1.79x | ✅ | +| `to_bytes[b'\\x01\\x02\\x03']` | 6.214807194428287e-06 | 3.5724200907566754e-06 | 42.52% | 73.97% | 1.74x | ✅ | +| `to_bytes[b'\\x10\\x20\\x30\\x40\\x50']` | 6.384759732087906e-06 | 3.4718455445162805e-06 | 45.62% | 83.90% | 1.84x | ✅ | +| `to_bytes[b'\\x7f'*8]` | 6.2221944530742285e-06 | 3.6299630009677656e-06 | 41.66% | 71.41% | 1.71x | ✅ | +| `to_bytes[b'\\x80'*8]` | 6.154746823977371e-06 | 3.5098569762158247e-06 | 42.97% | 75.36% | 1.75x | ✅ | +| `to_bytes[b'\\xde\\xad\\xbe\\xef']` | 6.118508096629166e-06 | 3.5327114331565147e-06 | 42.26% | 73.20% | 1.73x | ✅ | +| `to_bytes[b'\\xff'*64]` | 6.228611346948233e-06 | 3.5638385534057674e-06 | 42.78% | 74.77% | 1.75x | ✅ | +| `to_bytes[b'a'*1024]` | 6.214476654822796e-06 | 3.6405793911024955e-06 | 41.42% | 70.70% | 1.71x | ✅ | +| `to_bytes[b'abc']` | 5.704947810781707e-06 | 3.6286094943273793e-06 | 36.40% | 57.22% | 1.57x | ✅ | +| `to_bytes[bytearray(0-9)]` | 2.8385540980501474e-05 | 1.3892159525838066e-05 | 51.06% | 104.33% | 2.04x | ✅ | +| `to_bytes[bytearray(4-byte pattern)]` | 2.827050900870094e-05 | 1.4056222794783555e-05 | 50.28% | 101.12% | 2.01x | ✅ | +| `to_bytes[bytearray(all byte values)]` | 2.877292936670269e-05 | 1.435422533320354e-05 | 50.11% | 100.45% | 2.00x | ✅ | +| `to_bytes[bytearray(alternating 0x00/0xff)]` | 2.8227929229195593e-05 | 1.3651875261692757e-05 | 51.64% | 106.77% | 2.07x | ✅ | +| `to_bytes[bytearray(alternating 0xaa/0x55)]` | 2.837463577403303e-05 | 1.4085501772100954e-05 | 50.36% | 101.45% | 2.01x | ✅ | +| `to_bytes[bytearray(ascii sentence)]` | 2.788046431872048e-05 | 1.4073893727957965e-05 | 49.52% | 98.10% | 1.98x | ✅ | +| `to_bytes[bytearray(b'')]` | 2.5972620905868233e-05 | 1.2685871938856117e-05 | 51.16% | 104.74% | 2.05x | ✅ | +| `to_bytes[bytearray(b'\\x00'*32)]` | 2.790329559512333e-05 | 1.403080114449928e-05 | 49.72% | 98.87% | 1.99x | ✅ | +| `to_bytes[bytearray(b'\\x00\\xff\\x00\\xff')]` | 2.7745585095988548e-05 | 1.4024106217358874e-05 | 49.45% | 97.84% | 1.98x | ✅ | +| `to_bytes[bytearray(b'\\x01'*100)]` | 2.8536359978812884e-05 | 1.4236424049013974e-05 | 50.11% | 100.45% | 2.00x | ✅ | +| `to_bytes[bytearray(b'\\x01'*2048)]` | 3.549077378005222e-05 | 1.9352766224829574e-05 | 45.47% | 83.39% | 1.83x | ✅ | +| `to_bytes[bytearray(b'\\x01\\x02\\x03')]` | 2.8101052165112413e-05 | 1.4292128556009155e-05 | 49.14% | 96.62% | 1.97x | ✅ | +| `to_bytes[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 2.7661397342967836e-05 | 1.4095613005042919e-05 | 49.04% | 96.24% | 1.96x | ✅ | +| `to_bytes[bytearray(b'\\x7f'*8)]` | 2.725931521432537e-05 | 1.3800682471510037e-05 | 49.37% | 97.52% | 1.98x | ✅ | +| `to_bytes[bytearray(b'\\x80'*8)]` | 2.8590031839184632e-05 | 1.4021589244572647e-05 | 50.96% | 103.90% | 2.04x | ✅ | +| `to_bytes[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 2.7673809875166307e-05 | 1.3955245016922358e-05 | 49.57% | 98.30% | 1.98x | ✅ | +| `to_bytes[bytearray(b'\\xff'*64)]` | 2.7825869941964144e-05 | 1.397535630887856e-05 | 49.78% | 99.11% | 1.99x | ✅ | +| `to_bytes[bytearray(b'a'*1024)]` | 3.4580409459484653e-05 | 1.8673202446672093e-05 | 46.00% | 85.19% | 1.85x | ✅ | +| `to_bytes[bytearray(b'abc')]` | 2.7632051275317663e-05 | 1.4212278275687856e-05 | 48.57% | 94.42% | 1.94x | ✅ | +| `to_bytes[bytearray(long alternating)]` | 3.447633488580355e-05 | 1.863387225839248e-05 | 45.95% | 85.02% | 1.85x | ✅ | +| `to_bytes[bytearray(mixed pattern)]` | 2.8541322877722866e-05 | 1.4195507938501473e-05 | 50.26% | 101.06% | 2.01x | ✅ | +| `to_bytes[bytearray(multiples of 0x10)]` | 2.8730667094271124e-05 | 1.4011019797634606e-05 | 51.23% | 105.06% | 2.05x | ✅ | +| `to_bytes[bytearray(palindrome ascii)]` | 2.8401192649128307e-05 | 1.3961644776858775e-05 | 50.84% | 103.42% | 2.03x | ✅ | +| `to_bytes[bytearray(palindrome numeric)]` | 2.805100416648689e-05 | 1.4152590803546867e-05 | 49.55% | 98.20% | 1.98x | ✅ | +| `to_bytes[bytearray(palindrome)]` | 2.7361673603877895e-05 | 1.411429298192429e-05 | 48.42% | 93.86% | 1.94x | ✅ | +| `to_bytes[bytearray(repeated 0-9)]` | 2.8494565334918126e-05 | 1.4258424138299958e-05 | 49.96% | 99.84% | 2.00x | ✅ | +| `to_bytes[bytearray(single 0xff)]` | 2.8234466593201184e-05 | 1.3801473578009802e-05 | 51.12% | 104.58% | 2.05x | ✅ | +| `to_bytes[bytearray(single null byte)]` | 2.8434517722019846e-05 | 1.3809952582861235e-05 | 51.43% | 105.90% | 2.06x | ✅ | +| `to_bytes[bytearray(two patterns)]` | 2.836216679184966e-05 | 1.3887588637424222e-05 | 51.03% | 104.23% | 2.04x | ✅ | +| `to_bytes[long alternating]` | 6.353790402607213e-06 | 3.5938990087545537e-06 | 43.44% | 76.79% | 1.77x | ✅ | +| `to_bytes[memoryview(0-9)]` | 4.191141964546983e-05 | 1.7061112356892058e-05 | 59.29% | 145.65% | 2.46x | ✅ | +| `to_bytes[memoryview(4-byte pattern)]` | 4.227527549170472e-05 | 1.785782064892619e-05 | 57.76% | 136.73% | 2.37x | ✅ | +| `to_bytes[memoryview(all byte values)]` | 4.25000108585221e-05 | 1.7688601774026213e-05 | 58.38% | 140.27% | 2.40x | ✅ | +| `to_bytes[memoryview(alternating 0x00/0xff)]` | 4.1347704048452746e-05 | 1.6650846971237402e-05 | 59.73% | 148.32% | 2.48x | ✅ | +| `to_bytes[memoryview(alternating 0xaa/0x55)]` | 4.171208060914525e-05 | 1.675602408003079e-05 | 59.83% | 148.94% | 2.49x | ✅ | +| `to_bytes[memoryview(ascii sentence)]` | 4.166324952645984e-05 | 1.709207709767455e-05 | 58.98% | 143.76% | 2.44x | ✅ | +| `to_bytes[memoryview(b'')]` | 3.925414926485738e-05 | 1.5303932766174733e-05 | 61.01% | 156.50% | 2.56x | ✅ | +| `to_bytes[memoryview(b'\\x00'*32)]` | 4.1375511773526405e-05 | 1.6976747870806958e-05 | 58.97% | 143.72% | 2.44x | ✅ | +| `to_bytes[memoryview(b'\\x00\\xff\\x00\\xff')]` | 4.106893288361651e-05 | 1.7061131875227936e-05 | 58.46% | 140.72% | 2.41x | ✅ | +| `to_bytes[memoryview(b'\\x01'*100)]` | 4.193922634521223e-05 | 1.7745782258368427e-05 | 57.69% | 136.33% | 2.36x | ✅ | +| `to_bytes[memoryview(b'\\x01'*2048)]` | 5.0798682929570083e-05 | 2.40390666370428e-05 | 52.68% | 111.32% | 2.11x | ✅ | +| `to_bytes[memoryview(b'\\x01\\x02\\x03')]` | 4.036702557146768e-05 | 1.7250564311840054e-05 | 57.27% | 134.00% | 2.34x | ✅ | +| `to_bytes[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 4.175508032041267e-05 | 1.6957717517602734e-05 | 59.39% | 146.23% | 2.46x | ✅ | +| `to_bytes[memoryview(b'\\x7f'*8)]` | 4.1358438818942784e-05 | 1.6817791110631697e-05 | 59.34% | 145.92% | 2.46x | ✅ | +| `to_bytes[memoryview(b'\\x80'*8)]` | 4.203092161038334e-05 | 1.681154500200111e-05 | 60.00% | 150.01% | 2.50x | ✅ | +| `to_bytes[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 4.231867737850461e-05 | 1.6846002165597455e-05 | 60.19% | 151.21% | 2.51x | ✅ | +| `to_bytes[memoryview(b'\\xff'*64)]` | 4.126073396736014e-05 | 1.6694308190545488e-05 | 59.54% | 147.15% | 2.47x | ✅ | +| `to_bytes[memoryview(b'a'*1024)]` | 4.88048523792244e-05 | 2.4008626930621554e-05 | 50.81% | 103.28% | 2.03x | ✅ | +| `to_bytes[memoryview(b'abc')]` | 4.134610001372583e-05 | 1.7269193990729754e-05 | 58.23% | 139.42% | 2.39x | ✅ | +| `to_bytes[memoryview(long alternating)]` | 4.8406942144499424e-05 | 2.388143899713461e-05 | 50.67% | 102.70% | 2.03x | ✅ | +| `to_bytes[memoryview(mixed pattern)]` | 4.167505874201827e-05 | 1.7698671546729557e-05 | 57.53% | 135.47% | 2.35x | ✅ | +| `to_bytes[memoryview(multiples of 0x10)]` | 4.2573899493451105e-05 | 1.705716143319723e-05 | 59.94% | 149.60% | 2.50x | ✅ | +| `to_bytes[memoryview(palindrome ascii)]` | 4.147093203068994e-05 | 1.6858821327193028e-05 | 59.35% | 145.99% | 2.46x | ✅ | +| `to_bytes[memoryview(palindrome numeric)]` | 4.2052385986215005e-05 | 1.6783240695512243e-05 | 60.09% | 150.56% | 2.51x | ✅ | +| `to_bytes[memoryview(palindrome)]` | 4.010310828456553e-05 | 1.6841586810144283e-05 | 58.00% | 138.12% | 2.38x | ✅ | +| `to_bytes[memoryview(repeated 0-9)]` | 4.2346341955859134e-05 | 1.7627392408451933e-05 | 58.37% | 140.23% | 2.40x | ✅ | +| `to_bytes[memoryview(single 0xff)]` | 4.154646686337471e-05 | 1.708420634946452e-05 | 58.88% | 143.19% | 2.43x | ✅ | +| `to_bytes[memoryview(single null byte)]` | 4.1426186115767904e-05 | 1.7216447723124524e-05 | 58.44% | 140.62% | 2.41x | ✅ | +| `to_bytes[memoryview(two patterns)]` | 4.120532411573023e-05 | 1.6795418517469898e-05 | 59.24% | 145.34% | 2.45x | ✅ | +| `to_bytes[mixed pattern]` | 6.402295260899727e-06 | 3.6240499846615196e-06 | 43.39% | 76.66% | 1.77x | ✅ | +| `to_bytes[multiples of 0x10]` | 6.11021314345847e-06 | 3.5831417482492563e-06 | 41.36% | 70.53% | 1.71x | ✅ | +| `to_bytes[palindrome ascii]` | 6.034686767709764e-06 | 3.5377684971786242e-06 | 41.38% | 70.58% | 1.71x | ✅ | +| `to_bytes[palindrome numeric]` | 6.402815719286604e-06 | 3.659680142558091e-06 | 42.84% | 74.96% | 1.75x | ✅ | +| `to_bytes[palindrome]` | 5.802467693826409e-06 | 3.521160495735191e-06 | 39.32% | 64.79% | 1.65x | ✅ | +| `to_bytes[repeated 0-9]` | 6.383479853505014e-06 | 3.638034291718348e-06 | 43.01% | 75.47% | 1.75x | ✅ | +| `to_bytes[single 0xff]` | 6.267069994516826e-06 | 3.559259039534453e-06 | 43.21% | 76.08% | 1.76x | ✅ | +| `to_bytes[single null byte]` | 6.26625804427524e-06 | 3.271624181759306e-06 | 47.79% | 91.53% | 1.92x | ✅ | +| `to_bytes[two patterns]` | 6.347030519900153e-06 | 3.5394506816199115e-06 | 44.23% | 79.32% | 1.79x | ✅ | diff --git a/benchmarks/results/main.md b/benchmarks/results/main.md new file mode 100644 index 0000000..b4be1f4 --- /dev/null +++ b/benchmarks/results/main.md @@ -0,0 +1,486 @@ +#### [faster_hexbytes.main](https://github.com/BobTheBuidler/faster-hexbytes/blob/benchmark/faster_hexbytes/main.py) - [view benchmarks](https://github.com/BobTheBuidler/faster-hexbytes/blob/benchmark/benchmarks/test_main_benchmarks.py) + +| Function | Reference Mean | Faster Mean | % Change | Speedup (%) | x Faster | Faster | +|----------|---------------|-------------|----------|-------------|----------|--------| +| `hexbytes_getitem_index[-1-0-9]` | 2.4847447452029246e-05 | 2.3450026731823607e-05 | 5.62% | 5.96% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-4-byte pattern]` | 2.446805682924332e-05 | 2.3635641231548687e-05 | 3.40% | 3.52% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-all byte values]` | 2.4726612057580454e-05 | 2.3407566330406905e-05 | 5.33% | 5.64% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-alternating 0x00/0xff]` | 2.4731667416142e-05 | 2.3283497082720465e-05 | 5.86% | 6.22% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-alternating 0xaa/0x55]` | 2.4523115479161836e-05 | 2.3346323921959994e-05 | 4.80% | 5.04% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-ascii sentence]` | 2.471176627058649e-05 | 2.3615962469828527e-05 | 4.43% | 4.64% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x00'*32]` | 2.4777311257616818e-05 | 2.3405050535681556e-05 | 5.54% | 5.86% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x00\\xff\\x00\\xff']` | 2.4313481344212053e-05 | 2.3204503403589972e-05 | 4.56% | 4.78% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x01'*100]` | 2.468310354706276e-05 | 2.327476042499668e-05 | 5.71% | 6.05% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x01'*2048]` | 2.4854226475343243e-05 | 2.3390127621197537e-05 | 5.89% | 6.26% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x01\\x02\\x03']` | 2.4745279930320675e-05 | 2.3522761413737913e-05 | 4.94% | 5.20% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.438506663016707e-05 | 2.3257755613599015e-05 | 4.62% | 4.85% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x7f'*8]` | 2.4743313419518356e-05 | 2.3370369649475358e-05 | 5.55% | 5.87% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x80'*8]` | 2.4816026228816605e-05 | 2.3249313657766363e-05 | 6.31% | 6.74% | 1.07x | ✅ | +| `hexbytes_getitem_index[-1-b'\\xde\\xad\\xbe\\xef']` | 2.448254310611167e-05 | 2.3316949833370263e-05 | 4.76% | 5.00% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'\\xff'*64]` | 2.4849436712534857e-05 | 2.3344878336245734e-05 | 6.05% | 6.44% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-b'a'*1024]` | 2.493238498788441e-05 | 2.3606790961815634e-05 | 5.32% | 5.62% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-b'abc']` | 2.4834496919024717e-05 | 2.3382304411471888e-05 | 5.85% | 6.21% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-long alternating]` | 2.4615057704326276e-05 | 2.3430983714349e-05 | 4.81% | 5.05% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-mixed pattern]` | 2.4671778626251292e-05 | 2.3627064998301808e-05 | 4.23% | 4.42% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-multiples of 0x10]` | 2.468829805610535e-05 | 2.3326285352224695e-05 | 5.52% | 5.84% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-palindrome ascii]` | 2.4370598961263974e-05 | 2.338947068419359e-05 | 4.03% | 4.19% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-palindrome numeric]` | 2.4579864556403647e-05 | 2.3370869518498163e-05 | 4.92% | 5.17% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-palindrome]` | 2.4879236943731623e-05 | 2.3387243476769648e-05 | 6.00% | 6.38% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-repeated 0-9]` | 2.448997201236898e-05 | 2.3253474233650765e-05 | 5.05% | 5.32% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-two patterns]` | 2.450192796439518e-05 | 2.357708117878136e-05 | 3.77% | 3.92% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-0-9]` | 2.3640609440231097e-05 | 2.232804370059225e-05 | 5.55% | 5.88% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-4-byte pattern]` | 2.373320584882109e-05 | 2.233125115448439e-05 | 5.91% | 6.28% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-all byte values]` | 2.3559061122321206e-05 | 2.2250773621945793e-05 | 5.55% | 5.88% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-alternating 0x00/0xff]` | 2.3749435700519763e-05 | 2.218071530181339e-05 | 6.61% | 7.07% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-alternating 0xaa/0x55]` | 2.3719266900758352e-05 | 2.2353831626638472e-05 | 5.76% | 6.11% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-ascii sentence]` | 2.3597481287196645e-05 | 2.2091971995881697e-05 | 6.38% | 6.81% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-b'\\x00'*32]` | 2.392226984110175e-05 | 2.2037988705510813e-05 | 7.88% | 8.55% | 1.09x | ✅ | +| `hexbytes_getitem_index[0-b'\\x00\\xff\\x00\\xff']` | 2.3727784820388614e-05 | 2.2021295173813944e-05 | 7.19% | 7.75% | 1.08x | ✅ | +| `hexbytes_getitem_index[0-b'\\x01'*100]` | 2.3659152481324694e-05 | 2.2252363327119516e-05 | 5.95% | 6.32% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-b'\\x01'*2048]` | 2.3578475937046213e-05 | 2.230988678238333e-05 | 5.38% | 5.69% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-b'\\x01\\x02\\x03']` | 2.3631310564377923e-05 | 2.2118711270966876e-05 | 6.40% | 6.84% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-b'\\x10\\x20\\x30\\x40\\x50']` | 2.372311879146398e-05 | 2.213856237305192e-05 | 6.68% | 7.16% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-b'\\x7f'*8]` | 2.3915516289643552e-05 | 2.2307433582913363e-05 | 6.72% | 7.21% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-b'\\x80'*8]` | 2.3735412525488777e-05 | 2.2230167485098905e-05 | 6.34% | 6.77% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-b'\\xde\\xad\\xbe\\xef']` | 2.3683889844274444e-05 | 2.2163847819654035e-05 | 6.42% | 6.86% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-b'\\xff'*64]` | 2.4175792186616108e-05 | 2.200889907538998e-05 | 8.96% | 9.85% | 1.10x | ✅ | +| `hexbytes_getitem_index[0-b'a'*1024]` | 2.3862376567425472e-05 | 2.2006472774346828e-05 | 7.78% | 8.43% | 1.08x | ✅ | +| `hexbytes_getitem_index[0-b'abc']` | 2.3732148887069292e-05 | 2.2575495507843222e-05 | 4.87% | 5.12% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-long alternating]` | 2.3670516671074392e-05 | 2.2302816885162254e-05 | 5.78% | 6.13% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-mixed pattern]` | 2.369279636677286e-05 | 2.1967241132713774e-05 | 7.28% | 7.86% | 1.08x | ✅ | +| `hexbytes_getitem_index[0-multiples of 0x10]` | 2.3713163133561152e-05 | 2.2395580512059475e-05 | 5.56% | 5.88% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-palindrome ascii]` | 2.372535189391524e-05 | 2.2258396730235407e-05 | 6.18% | 6.59% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-palindrome numeric]` | 2.375859390888847e-05 | 2.2285298064844566e-05 | 6.20% | 6.61% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-palindrome]` | 2.363382163680642e-05 | 2.2135741423325648e-05 | 6.34% | 6.77% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-repeated 0-9]` | 2.3882651063446776e-05 | 2.2259791641842352e-05 | 6.80% | 7.29% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-single 0xff]` | 2.3767333200041022e-05 | 2.2120169400764797e-05 | 6.93% | 7.45% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-single null byte]` | 2.3618790092504198e-05 | 2.2262308923352927e-05 | 5.74% | 6.09% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-two patterns]` | 2.365909050841332e-05 | 2.2210445110527486e-05 | 6.12% | 6.52% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-0-9]` | 2.350437963646178e-05 | 2.230597783626155e-05 | 5.10% | 5.37% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-4-byte pattern]` | 2.3388753001021146e-05 | 2.241563514334635e-05 | 4.16% | 4.34% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-all byte values]` | 2.3389290477161366e-05 | 2.222879750713185e-05 | 4.96% | 5.22% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-alternating 0x00/0xff]` | 2.3624362951330394e-05 | 2.228589793267534e-05 | 5.67% | 6.01% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-alternating 0xaa/0x55]` | 2.3597960178016714e-05 | 2.2363680838750865e-05 | 5.23% | 5.52% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-ascii sentence]` | 2.3531461388181766e-05 | 2.2335075747968907e-05 | 5.08% | 5.36% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-b'\\x00'*32]` | 2.3747036836208635e-05 | 2.2402921023370407e-05 | 5.66% | 6.00% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-b'\\x00\\xff\\x00\\xff']` | 2.359141030040157e-05 | 2.2419787480451866e-05 | 4.97% | 5.23% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-b'\\x01'*100]` | 2.351381044957054e-05 | 2.2326575628342087e-05 | 5.05% | 5.32% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-b'\\x01'*2048]` | 2.3430996963478045e-05 | 2.2274605783180455e-05 | 4.94% | 5.19% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-b'\\x01\\x02\\x03']` | 2.3524676320574997e-05 | 2.2310255654855533e-05 | 5.16% | 5.44% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3733780166228564e-05 | 2.2327814863199725e-05 | 5.92% | 6.30% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-b'\\x7f'*8]` | 2.3687369965297325e-05 | 2.240640951745013e-05 | 5.41% | 5.72% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-b'\\x80'*8]` | 2.3397852464771586e-05 | 2.192985444328968e-05 | 6.27% | 6.69% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-b'\\xde\\xad\\xbe\\xef']` | 2.368834322710453e-05 | 2.2273048897882523e-05 | 5.97% | 6.35% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-b'\\xff'*64]` | 2.3485814293986674e-05 | 2.231628684523511e-05 | 4.98% | 5.24% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-b'a'*1024]` | 2.386470804413667e-05 | 2.2281061209550367e-05 | 6.64% | 7.11% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-b'abc']` | 2.3691218604520744e-05 | 2.2422567641292406e-05 | 5.35% | 5.66% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-long alternating]` | 2.3648119368974904e-05 | 2.2379031486075737e-05 | 5.37% | 5.67% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-mixed pattern]` | 2.347146341953654e-05 | 2.229130324896944e-05 | 5.03% | 5.29% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-multiples of 0x10]` | 2.353816276859851e-05 | 2.2144607709767796e-05 | 5.92% | 6.29% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-palindrome ascii]` | 2.3612440878305855e-05 | 2.2357479185841583e-05 | 5.31% | 5.61% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-palindrome numeric]` | 2.3520370890261427e-05 | 2.2218627957983257e-05 | 5.53% | 5.86% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-palindrome]` | 2.3657794497085767e-05 | 2.256005699098937e-05 | 4.64% | 4.87% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-repeated 0-9]` | 2.343486460477775e-05 | 2.2357192532938336e-05 | 4.60% | 4.82% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-two patterns]` | 2.3571511712386594e-05 | 2.2294920635925086e-05 | 5.42% | 5.73% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-0-9]` | 2.376859702714776e-05 | 2.240866077092658e-05 | 5.72% | 6.07% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-4-byte pattern]` | 2.3971286041117216e-05 | 2.232290985420918e-05 | 6.88% | 7.38% | 1.07x | ✅ | +| `hexbytes_getitem_index[2-all byte values]` | 2.3814855939904812e-05 | 2.2196273233205883e-05 | 6.80% | 7.29% | 1.07x | ✅ | +| `hexbytes_getitem_index[2-alternating 0x00/0xff]` | 2.390055381360492e-05 | 2.2330467329889835e-05 | 6.57% | 7.03% | 1.07x | ✅ | +| `hexbytes_getitem_index[2-alternating 0xaa/0x55]` | 2.3807921178646178e-05 | 2.2431680109115197e-05 | 5.78% | 6.14% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-ascii sentence]` | 2.3365220473568995e-05 | 2.2343897980482263e-05 | 4.37% | 4.57% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-b'\\x00'*32]` | 2.3375625650513347e-05 | 2.2390547339726867e-05 | 4.21% | 4.40% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-b'\\x00\\xff\\x00\\xff']` | 2.350530882275377e-05 | 2.218305857151874e-05 | 5.63% | 5.96% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-b'\\x01'*100]` | 2.3425987917706524e-05 | 2.2096632828754697e-05 | 5.67% | 6.02% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-b'\\x01'*2048]` | 2.3927392356409264e-05 | 2.2239041943430718e-05 | 7.06% | 7.59% | 1.08x | ✅ | +| `hexbytes_getitem_index[2-b'\\x01\\x02\\x03']` | 2.3640994193771224e-05 | 2.2206297555999423e-05 | 6.07% | 6.46% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-b'\\x10\\x20\\x30\\x40\\x50']` | 2.374901494471697e-05 | 2.2245854974556628e-05 | 6.33% | 6.76% | 1.07x | ✅ | +| `hexbytes_getitem_index[2-b'\\x7f'*8]` | 2.3410950031940884e-05 | 2.1972938435673387e-05 | 6.14% | 6.54% | 1.07x | ✅ | +| `hexbytes_getitem_index[2-b'\\x80'*8]` | 2.3365199463743537e-05 | 2.22919694642195e-05 | 4.59% | 4.81% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-b'\\xde\\xad\\xbe\\xef']` | 2.365441097718043e-05 | 2.2245648112737955e-05 | 5.96% | 6.33% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-b'\\xff'*64]` | 2.35864065938133e-05 | 2.231155832021235e-05 | 5.41% | 5.71% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-b'a'*1024]` | 2.323605423398757e-05 | 2.4404525747935898e-05 | -5.03% | -4.79% | 0.95x | ❌ | +| `hexbytes_getitem_index[2-b'abc']` | 2.3722461264859212e-05 | 2.2385468150396267e-05 | 5.64% | 5.97% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-long alternating]` | 2.3847633974548234e-05 | 2.2236601070996807e-05 | 6.76% | 7.24% | 1.07x | ✅ | +| `hexbytes_getitem_index[2-mixed pattern]` | 2.3826645668796012e-05 | 2.2248675041882893e-05 | 6.62% | 7.09% | 1.07x | ✅ | +| `hexbytes_getitem_index[2-multiples of 0x10]` | 2.3607274029087297e-05 | 2.238016502011036e-05 | 5.20% | 5.48% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-palindrome ascii]` | 2.3843746513752824e-05 | 2.2074706956929303e-05 | 7.42% | 8.01% | 1.08x | ✅ | +| `hexbytes_getitem_index[2-palindrome numeric]` | 2.384995983697482e-05 | 2.2168935214868402e-05 | 7.05% | 7.58% | 1.08x | ✅ | +| `hexbytes_getitem_index[2-palindrome]` | 2.3353639762196912e-05 | 2.3184971391492197e-05 | 0.72% | 0.73% | 1.01x | ✅ | +| `hexbytes_getitem_index[2-repeated 0-9]` | 2.3479222769940935e-05 | 2.2220355241910037e-05 | 5.36% | 5.67% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-two patterns]` | 2.3870436406362992e-05 | 2.2326472681800106e-05 | 6.47% | 6.92% | 1.07x | ✅ | +| `hexbytes_getitem_index[3-0-9]` | 2.346875938372422e-05 | 2.240947646466136e-05 | 4.51% | 4.73% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-4-byte pattern]` | 2.3721855409706934e-05 | 2.222300970933843e-05 | 6.32% | 6.74% | 1.07x | ✅ | +| `hexbytes_getitem_index[3-all byte values]` | 2.390814788126935e-05 | 2.283953127459055e-05 | 4.47% | 4.68% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-alternating 0x00/0xff]` | 2.3669588520335587e-05 | 2.2366387821447823e-05 | 5.51% | 5.83% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-alternating 0xaa/0x55]` | 2.37963607593483e-05 | 2.243596847380388e-05 | 5.72% | 6.06% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-ascii sentence]` | 2.385759012590493e-05 | 2.2598322450417e-05 | 5.28% | 5.57% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'\\x00'*32]` | 2.3505933187042217e-05 | 2.224940013158834e-05 | 5.35% | 5.65% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'\\x00\\xff\\x00\\xff']` | 2.3560394405510724e-05 | 2.2325916175874644e-05 | 5.24% | 5.53% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'\\x01'*100]` | 2.3743939819745725e-05 | 2.2253526385851708e-05 | 6.28% | 6.70% | 1.07x | ✅ | +| `hexbytes_getitem_index[3-b'\\x01'*2048]` | 2.3905277881044007e-05 | 2.2377902060079857e-05 | 6.39% | 6.83% | 1.07x | ✅ | +| `hexbytes_getitem_index[3-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3647841778410742e-05 | 2.2284219330703748e-05 | 5.77% | 6.12% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'\\x7f'*8]` | 2.3583389431878405e-05 | 2.2293803599500448e-05 | 5.47% | 5.78% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'\\x80'*8]` | 2.3722950242620407e-05 | 2.2286066181847813e-05 | 6.06% | 6.45% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'\\xde\\xad\\xbe\\xef']` | 2.3845356834118778e-05 | 2.212288604441631e-05 | 7.22% | 7.79% | 1.08x | ✅ | +| `hexbytes_getitem_index[3-b'\\xff'*64]` | 2.3719538098640988e-05 | 2.2142743590668913e-05 | 6.65% | 7.12% | 1.07x | ✅ | +| `hexbytes_getitem_index[3-b'a'*1024]` | 2.3485133845154906e-05 | 2.2153670264862265e-05 | 5.67% | 6.01% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-long alternating]` | 2.388198217001513e-05 | 2.22183555885802e-05 | 6.97% | 7.49% | 1.07x | ✅ | +| `hexbytes_getitem_index[3-mixed pattern]` | 2.388614646004389e-05 | 2.2712403800206335e-05 | 4.91% | 5.17% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-multiples of 0x10]` | 2.387063951538705e-05 | 2.230592252192809e-05 | 6.55% | 7.01% | 1.07x | ✅ | +| `hexbytes_getitem_index[3-palindrome ascii]` | 2.389725274772817e-05 | 2.2360159584640115e-05 | 6.43% | 6.87% | 1.07x | ✅ | +| `hexbytes_getitem_index[3-palindrome numeric]` | 2.3798089009595062e-05 | 2.2526916278931338e-05 | 5.34% | 5.64% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-palindrome]` | 2.3655942653303613e-05 | 2.213796458225677e-05 | 6.42% | 6.86% | 1.07x | ✅ | +| `hexbytes_getitem_index[3-repeated 0-9]` | 2.396342222639396e-05 | 2.2323883357804693e-05 | 6.84% | 7.34% | 1.07x | ✅ | +| `hexbytes_getitem_index[3-two patterns]` | 2.385684287372088e-05 | 2.2693310760618144e-05 | 4.88% | 5.13% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-0-9]` | 2.3899973992024223e-05 | 2.2453763928799237e-05 | 6.05% | 6.44% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-4-byte pattern]` | 2.3705508776158425e-05 | 2.238011738911868e-05 | 5.59% | 5.92% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-all byte values]` | 2.377875104005379e-05 | 2.22712890085195e-05 | 6.34% | 6.77% | 1.07x | ✅ | +| `hexbytes_getitem_index[4-alternating 0x00/0xff]` | 2.3802997980227825e-05 | 2.25064045339907e-05 | 5.45% | 5.76% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-alternating 0xaa/0x55]` | 2.3656997750980488e-05 | 2.246474914798274e-05 | 5.04% | 5.31% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-ascii sentence]` | 2.3889494842101873e-05 | 2.2232110147189814e-05 | 6.94% | 7.45% | 1.07x | ✅ | +| `hexbytes_getitem_index[4-b'\\x00'*32]` | 2.3948612391353527e-05 | 2.2580159784875707e-05 | 5.71% | 6.06% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-b'\\x01'*100]` | 2.36230588877441e-05 | 2.2538682146090458e-05 | 4.59% | 4.81% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-b'\\x01'*2048]` | 2.354046874295225e-05 | 2.2404037494145434e-05 | 4.83% | 5.07% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3690927947699704e-05 | 2.2461979332169837e-05 | 5.19% | 5.47% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-b'\\x7f'*8]` | 2.3799501582564888e-05 | 2.225404823020082e-05 | 6.49% | 6.94% | 1.07x | ✅ | +| `hexbytes_getitem_index[4-b'\\x80'*8]` | 2.364995371200852e-05 | 2.2431861192374475e-05 | 5.15% | 5.43% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-b'\\xff'*64]` | 2.3899208143721178e-05 | 2.2336480376619072e-05 | 6.54% | 7.00% | 1.07x | ✅ | +| `hexbytes_getitem_index[4-b'a'*1024]` | 2.388219329567692e-05 | 2.237994391119528e-05 | 6.29% | 6.71% | 1.07x | ✅ | +| `hexbytes_getitem_index[4-long alternating]` | 2.3825226326260514e-05 | 2.235339194559478e-05 | 6.18% | 6.58% | 1.07x | ✅ | +| `hexbytes_getitem_index[4-mixed pattern]` | 2.4263073550289538e-05 | 2.2477951042731033e-05 | 7.36% | 7.94% | 1.08x | ✅ | +| `hexbytes_getitem_index[4-multiples of 0x10]` | 2.3839900411638854e-05 | 2.2410074104850746e-05 | 6.00% | 6.38% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-palindrome ascii]` | 2.413395342536019e-05 | 2.2403790136882604e-05 | 7.17% | 7.72% | 1.08x | ✅ | +| `hexbytes_getitem_index[4-palindrome numeric]` | 2.386539608948987e-05 | 2.2444926049628023e-05 | 5.95% | 6.33% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-palindrome]` | 2.3624708736914828e-05 | 2.2501062408512196e-05 | 4.76% | 4.99% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-repeated 0-9]` | 2.4036002099408217e-05 | 2.2293087839859523e-05 | 7.25% | 7.82% | 1.08x | ✅ | +| `hexbytes_getitem_index[4-two patterns]` | 2.377668644820311e-05 | 2.2229137838792795e-05 | 6.51% | 6.96% | 1.07x | ✅ | +| `hexbytes_getitem_index[5-0-9]` | 2.3804482853094745e-05 | 2.2123400947219126e-05 | 7.06% | 7.60% | 1.08x | ✅ | +| `hexbytes_getitem_index[5-4-byte pattern]` | 2.3919398750660017e-05 | 2.2342013515976855e-05 | 6.59% | 7.06% | 1.07x | ✅ | +| `hexbytes_getitem_index[5-all byte values]` | 2.381642502048813e-05 | 2.225679471078651e-05 | 6.55% | 7.01% | 1.07x | ✅ | +| `hexbytes_getitem_index[5-alternating 0x00/0xff]` | 2.3850033761120395e-05 | 2.242768382035353e-05 | 5.96% | 6.34% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-alternating 0xaa/0x55]` | 2.3859982486855523e-05 | 2.185253475627353e-05 | 8.41% | 9.19% | 1.09x | ✅ | +| `hexbytes_getitem_index[5-ascii sentence]` | 2.3835025727299785e-05 | 2.2395683686574797e-05 | 6.04% | 6.43% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-b'\\x00'*32]` | 2.3798403675411692e-05 | 2.2465672940989854e-05 | 5.60% | 5.93% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-b'\\x01'*100]` | 2.3492257981176665e-05 | 2.2142185976849883e-05 | 5.75% | 6.10% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-b'\\x01'*2048]` | 2.366747898620313e-05 | 2.2198146171781466e-05 | 6.21% | 6.62% | 1.07x | ✅ | +| `hexbytes_getitem_index[5-b'\\x7f'*8]` | 2.35597953145184e-05 | 2.2171523646048525e-05 | 5.89% | 6.26% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-b'\\x80'*8]` | 2.3860267252043716e-05 | 2.2325881149106178e-05 | 6.43% | 6.87% | 1.07x | ✅ | +| `hexbytes_getitem_index[5-b'\\xff'*64]` | 2.38133876111381e-05 | 2.221470970606235e-05 | 6.71% | 7.20% | 1.07x | ✅ | +| `hexbytes_getitem_index[5-b'a'*1024]` | 2.387664162249834e-05 | 2.2220958262310435e-05 | 6.93% | 7.45% | 1.07x | ✅ | +| `hexbytes_getitem_index[5-long alternating]` | 2.3447450794083876e-05 | 2.2117716532324473e-05 | 5.67% | 6.01% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-mixed pattern]` | 2.3858675352130537e-05 | 2.237369899823486e-05 | 6.22% | 6.64% | 1.07x | ✅ | +| `hexbytes_getitem_index[5-multiples of 0x10]` | 2.3441867659560046e-05 | 2.204999308430266e-05 | 5.94% | 6.31% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-palindrome ascii]` | 2.3958043445209287e-05 | 2.2279548089798347e-05 | 7.01% | 7.53% | 1.08x | ✅ | +| `hexbytes_getitem_index[5-palindrome]` | 2.370622874194218e-05 | 2.2535518141703165e-05 | 4.94% | 5.19% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-repeated 0-9]` | 2.401607357845209e-05 | 2.2335016478901267e-05 | 7.00% | 7.53% | 1.08x | ✅ | +| `hexbytes_getitem_index[5-two patterns]` | 2.384207955910319e-05 | 2.2819046333930514e-05 | 4.29% | 4.48% | 1.04x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-0-9]` | 8.068234990254468e-05 | 5.9908517862950774e-05 | 25.75% | 34.68% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-4-byte pattern]` | 8.11249058632316e-05 | 5.914985501307563e-05 | 27.09% | 37.15% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-all byte values]` | 8.09292051944004e-05 | 5.996926055642412e-05 | 25.90% | 34.95% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-alternating 0x00/0xff]` | 8.050372644893333e-05 | 5.9492500278013574e-05 | 26.10% | 35.32% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-alternating 0xaa/0x55]` | 8.160105677786958e-05 | 5.9768697206212395e-05 | 26.75% | 36.53% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-ascii sentence]` | 8.059944833324778e-05 | 6.0538737184844244e-05 | 24.89% | 33.14% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'']` | 7.879725653296983e-05 | 5.773333058399736e-05 | 26.73% | 36.48% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00'*32]` | 8.065340013430995e-05 | 5.992783206681132e-05 | 25.70% | 34.58% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00\\xff\\x00\\xff']` | 8.110106993329847e-05 | 6.036323340154663e-05 | 25.57% | 34.36% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*100]` | 8.112706850935604e-05 | 5.985948007817502e-05 | 26.22% | 35.53% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*2048]` | 8.147721111379799e-05 | 6.052596027497756e-05 | 25.71% | 34.62% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01\\x02\\x03']` | 8.167215920607164e-05 | 6.009837985140856e-05 | 26.42% | 35.90% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.114676602016646e-05 | 6.013714140361474e-05 | 25.89% | 34.94% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x7f'*8]` | 8.158437482314103e-05 | 5.9964215072264316e-05 | 26.50% | 36.06% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x80'*8]` | 8.11956405283511e-05 | 6.012798039697782e-05 | 25.95% | 35.04% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\xde\\xad\\xbe\\xef']` | 8.133062109897846e-05 | 6.0024769901838476e-05 | 26.20% | 35.50% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\xff'*64]` | 8.147021273208189e-05 | 6.014110090091815e-05 | 26.18% | 35.47% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'a'*1024]` | 8.184092645393188e-05 | 5.9690798562356445e-05 | 27.06% | 37.11% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'abc']` | 8.11407611580561e-05 | 6.0269786530966417e-05 | 25.72% | 34.63% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-long alternating]` | 8.138515989132823e-05 | 6.0051330791540194e-05 | 26.21% | 35.53% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-mixed pattern]` | 8.11307849411989e-05 | 5.948433203317993e-05 | 26.68% | 36.39% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-multiples of 0x10]` | 8.0865044025069e-05 | 6.067042211538623e-05 | 24.97% | 33.29% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-palindrome ascii]` | 8.098974116830668e-05 | 5.946342412898394e-05 | 26.58% | 36.20% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-palindrome numeric]` | 8.30720497246577e-05 | 5.996928553820368e-05 | 27.81% | 38.52% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-palindrome]` | 8.052636510236694e-05 | 6.009066007473859e-05 | 25.38% | 34.01% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-repeated 0-9]` | 8.17800832421859e-05 | 5.937056592499519e-05 | 27.40% | 37.75% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-single 0xff]` | 7.866251040166223e-05 | 5.7545369679967186e-05 | 26.85% | 36.70% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-single null byte]` | 7.89915242249266e-05 | 5.753772649427693e-05 | 27.16% | 37.29% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-two patterns]` | 8.080403866485248e-05 | 5.922889017319143e-05 | 26.70% | 36.43% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-0-9]` | 8.2622325636055e-05 | 6.0528968239167615e-05 | 26.74% | 36.50% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-4-byte pattern]` | 8.272651418364963e-05 | 6.092795295403125e-05 | 26.35% | 35.78% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-all byte values]` | 8.255031829407812e-05 | 6.0791886106560145e-05 | 26.36% | 35.79% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-alternating 0x00/0xff]` | 8.21723996281765e-05 | 6.0797497703534535e-05 | 26.01% | 35.16% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-alternating 0xaa/0x55]` | 8.221975981903979e-05 | 6.072751465186438e-05 | 26.14% | 35.39% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-ascii sentence]` | 8.367206394174686e-05 | 6.133230997235685e-05 | 26.70% | 36.42% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'']` | 8.06918569884131e-05 | 5.772912687932482e-05 | 28.46% | 39.78% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x00'*32]` | 8.266038445917815e-05 | 6.0560119980356125e-05 | 26.74% | 36.49% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x00\\xff\\x00\\xff']` | 8.20339136045329e-05 | 6.0075424777740126e-05 | 26.77% | 36.55% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*100]` | 8.217707354153222e-05 | 6.054433994945807e-05 | 26.32% | 35.73% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*2048]` | 8.258134725819903e-05 | 6.037501951340134e-05 | 26.89% | 36.78% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x01\\x02\\x03']` | 8.256973994855508e-05 | 6.028594637574512e-05 | 26.99% | 36.96% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.248224031876366e-05 | 6.0332711841273715e-05 | 26.85% | 36.71% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x7f'*8]` | 8.179846849894452e-05 | 6.092441941098647e-05 | 25.52% | 34.26% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x80'*8]` | 8.186628293610639e-05 | 6.0235752841171e-05 | 26.42% | 35.91% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\xde\\xad\\xbe\\xef']` | 8.092846841651972e-05 | 6.04425395196323e-05 | 25.31% | 33.89% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\xff'*64]` | 8.124670067572987e-05 | 6.041566846002542e-05 | 25.64% | 34.48% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'a'*1024]` | 8.175597454964947e-05 | 6.06864513192614e-05 | 25.77% | 34.72% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'abc']` | 8.198075665936462e-05 | 6.0627726194316385e-05 | 26.05% | 35.22% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-long alternating]` | 8.204332835156302e-05 | 6.07988550706465e-05 | 25.89% | 34.94% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-mixed pattern]` | 8.17248904408768e-05 | 6.108961798914236e-05 | 25.25% | 33.78% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-multiples of 0x10]` | 8.291109128917191e-05 | 6.126453753386428e-05 | 26.11% | 35.33% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-palindrome ascii]` | 8.302702215551893e-05 | 6.0712845747646644e-05 | 26.88% | 36.75% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-palindrome numeric]` | 8.24454859497045e-05 | 6.0612859259637294e-05 | 26.48% | 36.02% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-palindrome]` | 8.080784793291502e-05 | 6.0116598701386324e-05 | 25.61% | 34.42% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-repeated 0-9]` | 8.334414217224779e-05 | 5.999776415961464e-05 | 28.01% | 38.91% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-single 0xff]` | 8.156183284693949e-05 | 5.931348806830272e-05 | 27.28% | 37.51% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-single null byte]` | 8.174356108905515e-05 | 5.900020044260341e-05 | 27.82% | 38.55% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-two patterns]` | 8.22219209418392e-05 | 6.084418406394616e-05 | 26.00% | 35.14% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-0-9]` | 8.313658701170756e-05 | 5.895483225067839e-05 | 29.09% | 41.02% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-4-byte pattern]` | 8.196193234840055e-05 | 5.9606213484058697e-05 | 27.28% | 37.51% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-all byte values]` | 8.346399715113727e-05 | 6.023051273376708e-05 | 27.84% | 38.57% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-alternating 0x00/0xff]` | 8.179198156866263e-05 | 6.016420690452284e-05 | 26.44% | 35.95% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-alternating 0xaa/0x55]` | 8.163817929710001e-05 | 5.9934526712899444e-05 | 26.59% | 36.21% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-ascii sentence]` | 8.209272865155255e-05 | 6.092703580256333e-05 | 25.78% | 34.74% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'']` | 8.027790615778153e-05 | 5.7995641927442527e-05 | 27.76% | 38.42% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x00'*32]` | 8.276872109450775e-05 | 6.056089253842826e-05 | 26.83% | 36.67% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x00\\xff\\x00\\xff']` | 8.19567980550223e-05 | 5.9205196348911915e-05 | 27.76% | 38.43% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*100]` | 8.313834030044157e-05 | 6.092565019477837e-05 | 26.72% | 36.46% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*2048]` | 8.246281656146155e-05 | 5.975929586280049e-05 | 27.53% | 37.99% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x01\\x02\\x03']` | 8.199072701858649e-05 | 5.940088034279834e-05 | 27.55% | 38.03% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.258274406057332e-05 | 6.110407110891471e-05 | 26.01% | 35.15% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x7f'*8]` | 8.206723002467621e-05 | 6.056757308507195e-05 | 26.20% | 35.50% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x80'*8]` | 8.208912763807277e-05 | 6.06431315458422e-05 | 26.13% | 35.36% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\xde\\xad\\xbe\\xef']` | 8.281438339446592e-05 | 5.9749517630166066e-05 | 27.85% | 38.60% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\xff'*64]` | 8.281844606293529e-05 | 5.9608617469888645e-05 | 28.02% | 38.94% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'a'*1024]` | 8.233301537469728e-05 | 5.9421223063502564e-05 | 27.83% | 38.56% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'abc']` | 8.317798982465156e-05 | 6.0510199715760295e-05 | 27.25% | 37.46% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-long alternating]` | 8.177884355440976e-05 | 5.960249797801825e-05 | 27.12% | 37.21% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-mixed pattern]` | 8.153793358950345e-05 | 6.058071977552699e-05 | 25.70% | 34.59% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-multiples of 0x10]` | 8.248096552844894e-05 | 5.9685025348125585e-05 | 27.64% | 38.19% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-palindrome ascii]` | 8.139138326813279e-05 | 6.119322011840429e-05 | 24.82% | 33.01% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-palindrome numeric]` | 8.14961322142407e-05 | 6.135827801269117e-05 | 24.71% | 32.82% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-palindrome]` | 8.155820494943751e-05 | 6.018801583839876e-05 | 26.20% | 35.51% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-repeated 0-9]` | 8.264213345195723e-05 | 6.0417248049566416e-05 | 26.89% | 36.79% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-single 0xff]` | 8.023151070244493e-05 | 5.7594480021759474e-05 | 28.21% | 39.30% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-single null byte]` | 8.018753225122147e-05 | 5.765371340802396e-05 | 28.10% | 39.08% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-two patterns]` | 8.131570729214625e-05 | 6.049279725871943e-05 | 25.61% | 34.42% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-0-9]` | 8.14121963052695e-05 | 6.018746420393172e-05 | 26.07% | 35.26% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-4-byte pattern]` | 8.240409685413533e-05 | 6.081408245115794e-05 | 26.20% | 35.50% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-all byte values]` | 8.202717933675196e-05 | 6.065021454450571e-05 | 26.06% | 35.25% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-alternating 0x00/0xff]` | 8.2030339885261e-05 | 6.0688604341073643e-05 | 26.02% | 35.17% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-alternating 0xaa/0x55]` | 8.191594718237171e-05 | 6.068378042598657e-05 | 25.92% | 34.99% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-ascii sentence]` | 8.218106248410972e-05 | 6.071176547484893e-05 | 26.12% | 35.36% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'']` | 7.846717309544713e-05 | 5.731748541262407e-05 | 26.95% | 36.90% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x00'*32]` | 8.171215331135617e-05 | 6.049818370995403e-05 | 25.96% | 35.07% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x00\\xff\\x00\\xff']` | 8.008490774949858e-05 | 6.003003665949191e-05 | 25.04% | 33.41% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*100]` | 8.170876382529361e-05 | 6.096559520721099e-05 | 25.39% | 34.02% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*2048]` | 0.00010476437791326655 | 7.746346799212244e-05 | 26.06% | 35.24% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x01\\x02\\x03']` | 7.960454609000436e-05 | 5.7623088750788484e-05 | 27.61% | 38.15% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.107940673613911e-05 | 6.017446222218925e-05 | 25.78% | 34.74% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x7f'*8]` | 8.179921890396522e-05 | 6.0127637423181724e-05 | 26.49% | 36.04% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x80'*8]` | 8.094503061559896e-05 | 6.033906979829822e-05 | 25.46% | 34.15% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\xde\\xad\\xbe\\xef']` | 8.2657600133284e-05 | 6.065080339822555e-05 | 26.62% | 36.28% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\xff'*64]` | 8.194716225175662e-05 | 6.017795967458637e-05 | 26.56% | 36.17% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'a'*1024]` | 9.693064215296854e-05 | 7.569989005474179e-05 | 21.90% | 28.05% | 1.28x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'abc']` | 7.912194866352589e-05 | 5.7795536500223504e-05 | 26.95% | 36.90% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-long alternating]` | 0.00010049567496632814 | 7.225055857475158e-05 | 28.11% | 39.09% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-mixed pattern]` | 8.21531364470839e-05 | 6.0966463356750096e-05 | 25.79% | 34.75% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-multiples of 0x10]` | 8.182128273575786e-05 | 5.950911816715105e-05 | 27.27% | 37.49% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-palindrome ascii]` | 8.173102597293032e-05 | 6.0450363378619016e-05 | 26.04% | 35.20% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-palindrome numeric]` | 8.064481667943535e-05 | 6.005529660558877e-05 | 25.53% | 34.28% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-palindrome]` | 8.146838256348088e-05 | 5.930252168165231e-05 | 27.21% | 37.38% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-repeated 0-9]` | 8.158039589364289e-05 | 6.068757436283316e-05 | 25.61% | 34.43% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-single 0xff]` | 7.892234626219822e-05 | 5.709236282816077e-05 | 27.66% | 38.24% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-single null byte]` | 7.835202393129527e-05 | 5.734935938542202e-05 | 26.81% | 36.62% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-two patterns]` | 8.124228911371968e-05 | 6.0960659161912064e-05 | 24.96% | 33.27% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-0-9]` | 7.9430356937195e-05 | 5.75138086086997e-05 | 27.59% | 38.11% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-4-byte pattern]` | 8.083538128638625e-05 | 5.862082945179073e-05 | 27.48% | 37.90% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-all byte values]` | 8.060951725703728e-05 | 5.933151936678779e-05 | 26.40% | 35.86% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-alternating 0x00/0xff]` | 7.999629243724944e-05 | 5.763557713639643e-05 | 27.95% | 38.80% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-alternating 0xaa/0x55]` | 8.02130539314506e-05 | 5.7282829826576e-05 | 28.59% | 40.03% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-ascii sentence]` | 8.022463458559608e-05 | 5.9020510442109744e-05 | 26.43% | 35.93% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'']` | 7.71061669046454e-05 | 5.565648922236641e-05 | 27.82% | 38.54% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x00'*32]` | 8.090211399786762e-05 | 5.926002974818658e-05 | 26.75% | 36.52% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x00\\xff\\x00\\xff']` | 8.099782549973611e-05 | 5.8727517655832474e-05 | 27.49% | 37.92% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*100]` | 8.115939604376683e-05 | 5.710263988029543e-05 | 29.64% | 42.13% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*2048]` | 0.00010146242689006956 | 7.806360940270111e-05 | 23.06% | 29.97% | 1.30x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x01\\x02\\x03']` | 8.020230350063798e-05 | 5.804965471422574e-05 | 27.62% | 38.16% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 7.97868648430571e-05 | 5.6351813911057925e-05 | 29.37% | 41.59% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x7f'*8]` | 7.975691366162501e-05 | 5.600672332160979e-05 | 29.78% | 42.41% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x80'*8]` | 7.945457643561741e-05 | 5.638943533155044e-05 | 29.03% | 40.90% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\xde\\xad\\xbe\\xef']` | 7.999624765962864e-05 | 5.88580201326653e-05 | 26.42% | 35.91% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\xff'*64]` | 8.017778856891062e-05 | 5.9135237732123635e-05 | 26.24% | 35.58% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'a'*1024]` | 9.863015309092291e-05 | 6.957885123547411e-05 | 29.45% | 41.75% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'abc']` | 8.043158298894438e-05 | 5.794496088357798e-05 | 27.96% | 38.81% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-long alternating]` | 9.52467992574056e-05 | 7.340333486803448e-05 | 22.93% | 29.76% | 1.30x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-mixed pattern]` | 8.073709406148429e-05 | 5.952576523301626e-05 | 26.27% | 35.63% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-multiples of 0x10]` | 7.976009010096381e-05 | 5.6305954230380405e-05 | 29.41% | 41.65% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-palindrome ascii]` | 7.920245338866143e-05 | 5.763644401517949e-05 | 27.23% | 37.42% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-palindrome numeric]` | 7.9939929537322e-05 | 5.7125410998791315e-05 | 28.54% | 39.94% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-palindrome]` | 8.016544171041521e-05 | 5.551693119839742e-05 | 30.75% | 44.40% | 1.44x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-repeated 0-9]` | 8.068510058369967e-05 | 6.0166740150958995e-05 | 25.43% | 34.10% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-single 0xff]` | 7.804954601624467e-05 | 5.506197227846088e-05 | 29.45% | 41.75% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-single null byte]` | 7.816215323890064e-05 | 5.5627027377838706e-05 | 28.83% | 40.51% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-two patterns]` | 8.071645942788979e-05 | 5.934724027483824e-05 | 26.47% | 36.01% | 1.36x | ✅ | +| `hexbytes_new['']` | 7.059339453681849e-05 | 3.720572167745306e-05 | 47.30% | 89.74% | 1.90x | ✅ | +| `hexbytes_new['0x'+'00'*64]` | 9.185311650414212e-05 | 4.9458678953195796e-05 | 46.15% | 85.72% | 1.86x | ✅ | +| `hexbytes_new['0x'+'a'*128]` | 9.184894177237468e-05 | 5.104373326869315e-05 | 44.43% | 79.94% | 1.80x | ✅ | +| `hexbytes_new['0x'+'ff'*32]` | 8.88221703346839e-05 | 4.645459160491125e-05 | 47.70% | 91.20% | 1.91x | ✅ | +| `hexbytes_new['0x']` | 7.839122044398893e-05 | 3.842018705163114e-05 | 50.99% | 104.04% | 2.04x | ✅ | +| `hexbytes_new['0x1234']` | 8.604767258883253e-05 | 4.458978211603869e-05 | 48.18% | 92.98% | 1.93x | ✅ | +| `hexbytes_new['0xCAFEBABE']` | 8.569109342851317e-05 | 4.365468820511476e-05 | 49.06% | 96.29% | 1.96x | ✅ | +| `hexbytes_new['0xabcdef']` | 8.593088756520804e-05 | 4.45373277594925e-05 | 48.17% | 92.94% | 1.93x | ✅ | +| `hexbytes_new['0xdeadbeef']` | 8.627125497488135e-05 | 4.442037623583596e-05 | 48.51% | 94.22% | 1.94x | ✅ | +| `hexbytes_new['abc']` | 8.213154539849242e-05 | 4.7106935923321183e-05 | 42.64% | 74.35% | 1.74x | ✅ | +| `hexbytes_new['deadbeef']` | 7.619061738594097e-05 | 4.1301610026598785e-05 | 45.79% | 84.47% | 1.84x | ✅ | +| `hexbytes_new[0-9]` | 4.295882153627664e-05 | 2.5316265129541266e-05 | 41.07% | 69.69% | 1.70x | ✅ | +| `hexbytes_new[0]` | 0.00012231687726766509 | 6.0478503253778025e-05 | 50.56% | 102.25% | 2.02x | ✅ | +| `hexbytes_new[123456]` | 0.0001266123322099141 | 6.583570512732421e-05 | 48.00% | 92.32% | 1.92x | ✅ | +| `hexbytes_new[2**16]` | 0.00012774508225165453 | 6.617318450917904e-05 | 48.20% | 93.05% | 1.93x | ✅ | +| `hexbytes_new[2**256-1]` | 0.00013121266143061903 | 7.351050389468393e-05 | 43.98% | 78.50% | 1.78x | ✅ | +| `hexbytes_new[2**32]` | 0.00013085130021646147 | 6.981460054531131e-05 | 46.65% | 87.43% | 1.87x | ✅ | +| `hexbytes_new[2**64]` | 0.0001324229245798965 | 7.127814146942154e-05 | 46.17% | 85.78% | 1.86x | ✅ | +| `hexbytes_new[2**8]` | 0.00012605911740696366 | 6.3048691085867e-05 | 49.98% | 99.94% | 2.00x | ✅ | +| `hexbytes_new[4-byte pattern]` | 4.295112867205666e-05 | 2.7806419556598662e-05 | 35.26% | 54.46% | 1.54x | ✅ | +| `hexbytes_new[False]` | 6.087290743084603e-05 | 2.6771864289568586e-05 | 56.02% | 127.38% | 2.27x | ✅ | +| `hexbytes_new[True]` | 6.088600700348238e-05 | 2.696853017901539e-05 | 55.71% | 125.77% | 2.26x | ✅ | +| `hexbytes_new[all byte values]` | 4.333466030390133e-05 | 2.7894081810705685e-05 | 35.63% | 55.35% | 1.55x | ✅ | +| `hexbytes_new[alternating 0x00/0xff]` | 4.287333638228319e-05 | 2.594063403652535e-05 | 39.49% | 65.27% | 1.65x | ✅ | +| `hexbytes_new[alternating 0xaa/0x55]` | 4.273885980923265e-05 | 2.5827765223145366e-05 | 39.57% | 65.48% | 1.65x | ✅ | +| `hexbytes_new[ascii sentence]` | 4.313410983817353e-05 | 2.546554532135807e-05 | 40.96% | 69.38% | 1.69x | ✅ | +| `hexbytes_new[b'']` | 4.1701536417217834e-05 | 2.5443427864218587e-05 | 38.99% | 63.90% | 1.64x | ✅ | +| `hexbytes_new[b'\\x00'*32]` | 4.2708400224018625e-05 | 2.531691282877622e-05 | 40.72% | 68.70% | 1.69x | ✅ | +| `hexbytes_new[b'\\x00\\xff\\x00\\xff']` | 4.2081834338195306e-05 | 2.5464436144364045e-05 | 39.49% | 65.26% | 1.65x | ✅ | +| `hexbytes_new[b'\\x01'*100]` | 4.387343088107201e-05 | 2.6034466974391452e-05 | 40.66% | 68.52% | 1.69x | ✅ | +| `hexbytes_new[b'\\x01'*2048]` | 5.733198446675121e-05 | 3.879941616922359e-05 | 32.33% | 47.77% | 1.48x | ✅ | +| `hexbytes_new[b'\\x01\\x02\\x03']` | 4.2723619263841565e-05 | 2.5355395989687225e-05 | 40.65% | 68.50% | 1.68x | ✅ | +| `hexbytes_new[b'\\x10\\x20\\x30\\x40\\x50']` | 4.224746088317716e-05 | 2.528448930199794e-05 | 40.15% | 67.09% | 1.67x | ✅ | +| `hexbytes_new[b'\\x7f'*8]` | 4.213323056509161e-05 | 2.4986245013606142e-05 | 40.70% | 68.63% | 1.69x | ✅ | +| `hexbytes_new[b'\\x80'*8]` | 4.2536395501683135e-05 | 2.5072862766728953e-05 | 41.06% | 69.65% | 1.70x | ✅ | +| `hexbytes_new[b'\\xde\\xad\\xbe\\xef']` | 4.2394029725542104e-05 | 2.540955404834232e-05 | 40.06% | 66.84% | 1.67x | ✅ | +| `hexbytes_new[b'\\xff'*64]` | 4.261945097059883e-05 | 2.587775309265785e-05 | 39.28% | 64.70% | 1.65x | ✅ | +| `hexbytes_new[b'a'*1024]` | 5.133675556752819e-05 | 3.3138708548557765e-05 | 35.45% | 54.91% | 1.55x | ✅ | +| `hexbytes_new[b'abc']` | 4.2674347397571076e-05 | 2.5163975539327663e-05 | 41.03% | 69.59% | 1.70x | ✅ | +| `hexbytes_new[bytearray(0-9)]` | 6.865169676977511e-05 | 3.7259202139075596e-05 | 45.73% | 84.25% | 1.84x | ✅ | +| `hexbytes_new[bytearray(4-byte pattern)]` | 6.953209316813137e-05 | 3.816708106647471e-05 | 45.11% | 82.18% | 1.82x | ✅ | +| `hexbytes_new[bytearray(all byte values)]` | 6.898457893830663e-05 | 3.8168352788462077e-05 | 44.67% | 80.74% | 1.81x | ✅ | +| `hexbytes_new[bytearray(alternating 0x00/0xff)]` | 6.908631410366376e-05 | 3.778673334190037e-05 | 45.31% | 82.83% | 1.83x | ✅ | +| `hexbytes_new[bytearray(alternating 0xaa/0x55)]` | 6.845419039658357e-05 | 3.777392923671646e-05 | 44.82% | 81.22% | 1.81x | ✅ | +| `hexbytes_new[bytearray(ascii sentence)]` | 6.972701953861159e-05 | 3.732977678561211e-05 | 46.46% | 86.79% | 1.87x | ✅ | +| `hexbytes_new[bytearray(b'')]` | 6.678502978133552e-05 | 3.561588238570766e-05 | 46.67% | 87.51% | 1.88x | ✅ | +| `hexbytes_new[bytearray(b'\\x00'*32)]` | 6.932840331862772e-05 | 3.722964287143302e-05 | 46.30% | 86.22% | 1.86x | ✅ | +| `hexbytes_new[bytearray(b'\\x00\\xff\\x00\\xff')]` | 6.955368340544366e-05 | 4.051862445406872e-05 | 41.74% | 71.66% | 1.72x | ✅ | +| `hexbytes_new[bytearray(b'\\x01'*100)]` | 6.929357571310845e-05 | 3.8765838753758206e-05 | 44.06% | 78.75% | 1.79x | ✅ | +| `hexbytes_new[bytearray(b'\\x01'*2048)]` | 9.350162891314769e-05 | 5.560644346862349e-05 | 40.53% | 68.15% | 1.68x | ✅ | +| `hexbytes_new[bytearray(b'\\x01\\x02\\x03')]` | 6.935026736671355e-05 | 3.845283974606172e-05 | 44.55% | 80.35% | 1.80x | ✅ | +| `hexbytes_new[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 6.868295439875171e-05 | 3.880361048641301e-05 | 43.50% | 77.00% | 1.77x | ✅ | +| `hexbytes_new[bytearray(b'\\x7f'*8)]` | 6.8469512349617e-05 | 3.72148175217809e-05 | 45.65% | 83.98% | 1.84x | ✅ | +| `hexbytes_new[bytearray(b'\\x80'*8)]` | 6.842226934820798e-05 | 3.7711169514167804e-05 | 44.88% | 81.44% | 1.81x | ✅ | +| `hexbytes_new[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 6.90195149679681e-05 | 3.838316011293737e-05 | 44.39% | 79.82% | 1.80x | ✅ | +| `hexbytes_new[bytearray(b'\\xff'*64)]` | 6.919485734372232e-05 | 3.7846437835231215e-05 | 45.30% | 82.83% | 1.83x | ✅ | +| `hexbytes_new[bytearray(b'a'*1024)]` | 8.567915298868023e-05 | 5.015077982644348e-05 | 41.47% | 70.84% | 1.71x | ✅ | +| `hexbytes_new[bytearray(b'abc')]` | 6.9138375339417e-05 | 3.831013846730171e-05 | 44.59% | 80.47% | 1.80x | ✅ | +| `hexbytes_new[bytearray(long alternating)]` | 8.756419426149756e-05 | 4.940683158110184e-05 | 43.58% | 77.23% | 1.77x | ✅ | +| `hexbytes_new[bytearray(mixed pattern)]` | 6.93203185786192e-05 | 3.906978385134366e-05 | 43.64% | 77.43% | 1.77x | ✅ | +| `hexbytes_new[bytearray(multiples of 0x10)]` | 6.887247167193475e-05 | 3.7106534309345784e-05 | 46.12% | 85.61% | 1.86x | ✅ | +| `hexbytes_new[bytearray(palindrome ascii)]` | 6.746962549895354e-05 | 3.7175894460748066e-05 | 44.90% | 81.49% | 1.81x | ✅ | +| `hexbytes_new[bytearray(palindrome numeric)]` | 6.869543028529821e-05 | 3.81874595499812e-05 | 44.41% | 79.89% | 1.80x | ✅ | +| `hexbytes_new[bytearray(palindrome)]` | 6.868747138894986e-05 | 3.733346010256775e-05 | 45.65% | 83.98% | 1.84x | ✅ | +| `hexbytes_new[bytearray(repeated 0-9)]` | 6.911508148086022e-05 | 3.761974277890361e-05 | 45.57% | 83.72% | 1.84x | ✅ | +| `hexbytes_new[bytearray(single 0xff)]` | 6.969344641567276e-05 | 3.821283515052185e-05 | 45.17% | 82.38% | 1.82x | ✅ | +| `hexbytes_new[bytearray(single null byte)]` | 6.8821272252622e-05 | 3.81009238681271e-05 | 44.64% | 80.63% | 1.81x | ✅ | +| `hexbytes_new[bytearray(two patterns)]` | 6.947249127955981e-05 | 3.830322091851254e-05 | 44.87% | 81.38% | 1.81x | ✅ | +| `hexbytes_new[long alternating]` | 5.160353372444581e-05 | 3.319370597996107e-05 | 35.68% | 55.46% | 1.55x | ✅ | +| `hexbytes_new[memoryview(0-9)]` | 8.402488421221348e-05 | 4.305165841161287e-05 | 48.76% | 95.17% | 1.95x | ✅ | +| `hexbytes_new[memoryview(4-byte pattern)]` | 8.483368913519236e-05 | 4.420043890266264e-05 | 47.90% | 91.93% | 1.92x | ✅ | +| `hexbytes_new[memoryview(all byte values)]` | 8.277553206819768e-05 | 4.437347169215945e-05 | 46.39% | 86.54% | 1.87x | ✅ | +| `hexbytes_new[memoryview(alternating 0x00/0xff)]` | 8.432842735782323e-05 | 4.3162543582832885e-05 | 48.82% | 95.37% | 1.95x | ✅ | +| `hexbytes_new[memoryview(alternating 0xaa/0x55)]` | 8.4226051455622e-05 | 4.2706406710533925e-05 | 49.30% | 97.22% | 1.97x | ✅ | +| `hexbytes_new[memoryview(ascii sentence)]` | 8.28974079227692e-05 | 4.2487380181126084e-05 | 48.75% | 95.11% | 1.95x | ✅ | +| `hexbytes_new[memoryview(b'')]` | 8.23962123283304e-05 | 4.025397220300485e-05 | 51.15% | 104.69% | 2.05x | ✅ | +| `hexbytes_new[memoryview(b'\\x00'*32)]` | 8.302596758787724e-05 | 4.27510432520547e-05 | 48.51% | 94.21% | 1.94x | ✅ | +| `hexbytes_new[memoryview(b'\\x00\\xff\\x00\\xff')]` | 8.356703476862896e-05 | 4.305663606365146e-05 | 48.48% | 94.09% | 1.94x | ✅ | +| `hexbytes_new[memoryview(b'\\x01'*100)]` | 8.392830503024734e-05 | 4.306008859209643e-05 | 48.69% | 94.91% | 1.95x | ✅ | +| `hexbytes_new[memoryview(b'\\x01'*2048)]` | 0.0001083133241625787 | 6.181063451514009e-05 | 42.93% | 75.23% | 1.75x | ✅ | +| `hexbytes_new[memoryview(b'\\x01\\x02\\x03')]` | 8.274879907228332e-05 | 4.235713144033117e-05 | 48.81% | 95.36% | 1.95x | ✅ | +| `hexbytes_new[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 8.341332207145342e-05 | 4.2522852834659024e-05 | 49.02% | 96.16% | 1.96x | ✅ | +| `hexbytes_new[memoryview(b'\\x7f'*8)]` | 8.277404148909936e-05 | 4.275480455433159e-05 | 48.35% | 93.60% | 1.94x | ✅ | +| `hexbytes_new[memoryview(b'\\x80'*8)]` | 8.32985845173698e-05 | 4.2725686219471154e-05 | 48.71% | 94.96% | 1.95x | ✅ | +| `hexbytes_new[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 8.34094967409787e-05 | 4.253482172593846e-05 | 49.00% | 96.10% | 1.96x | ✅ | +| `hexbytes_new[memoryview(b'\\xff'*64)]` | 8.333514805646204e-05 | 4.2686659313615054e-05 | 48.78% | 95.23% | 1.95x | ✅ | +| `hexbytes_new[memoryview(b'a'*1024)]` | 9.924937529033548e-05 | 5.5952107027414155e-05 | 43.62% | 77.38% | 1.77x | ✅ | +| `hexbytes_new[memoryview(b'abc')]` | 8.35927274669656e-05 | 4.261450935855843e-05 | 49.02% | 96.16% | 1.96x | ✅ | +| `hexbytes_new[memoryview(long alternating)]` | 0.00010227541168152174 | 5.6218582273413e-05 | 45.03% | 81.92% | 1.82x | ✅ | +| `hexbytes_new[memoryview(mixed pattern)]` | 8.042701159791098e-05 | 4.298920272923132e-05 | 46.55% | 87.09% | 1.87x | ✅ | +| `hexbytes_new[memoryview(multiples of 0x10)]` | 8.40677904662531e-05 | 4.314210112540732e-05 | 48.68% | 94.86% | 1.95x | ✅ | +| `hexbytes_new[memoryview(palindrome ascii)]` | 8.324889707805461e-05 | 4.310495465835889e-05 | 48.22% | 93.13% | 1.93x | ✅ | +| `hexbytes_new[memoryview(palindrome numeric)]` | 8.343425922642345e-05 | 4.273448915555574e-05 | 48.78% | 95.24% | 1.95x | ✅ | +| `hexbytes_new[memoryview(palindrome)]` | 8.561975046176595e-05 | 4.265896393780081e-05 | 50.18% | 100.71% | 2.01x | ✅ | +| `hexbytes_new[memoryview(repeated 0-9)]` | 8.310467831977971e-05 | 4.3063931759602075e-05 | 48.18% | 92.98% | 1.93x | ✅ | +| `hexbytes_new[memoryview(single 0xff)]` | 8.320841623582506e-05 | 4.2339979937306514e-05 | 49.12% | 96.52% | 1.97x | ✅ | +| `hexbytes_new[memoryview(single null byte)]` | 8.366610652141289e-05 | 4.24293937974122e-05 | 49.29% | 97.19% | 1.97x | ✅ | +| `hexbytes_new[memoryview(two patterns)]` | 8.162854716979587e-05 | 4.3148312062757567e-05 | 47.14% | 89.18% | 1.89x | ✅ | +| `hexbytes_new[mixed pattern]` | 4.3233341128517325e-05 | 2.5983755841529144e-05 | 39.90% | 66.39% | 1.66x | ✅ | +| `hexbytes_new[multiples of 0x10]` | 4.453038188270421e-05 | 2.5264566840342406e-05 | 43.26% | 76.26% | 1.76x | ✅ | +| `hexbytes_new[palindrome ascii]` | 4.229629357318056e-05 | 2.5336603703738986e-05 | 40.10% | 66.94% | 1.67x | ✅ | +| `hexbytes_new[palindrome numeric]` | 4.272307948255706e-05 | 2.5146011528992055e-05 | 41.14% | 69.90% | 1.70x | ✅ | +| `hexbytes_new[palindrome]` | 4.201348902376135e-05 | 2.5233103985190362e-05 | 39.94% | 66.50% | 1.67x | ✅ | +| `hexbytes_new[repeated 0-9]` | 4.2849040366098236e-05 | 2.5941053878904493e-05 | 39.46% | 65.18% | 1.65x | ✅ | +| `hexbytes_new[single 0xff]` | 4.286213200795317e-05 | 2.492020956546657e-05 | 41.86% | 72.00% | 1.72x | ✅ | +| `hexbytes_new[single null byte]` | 4.192499090325599e-05 | 2.499780743653151e-05 | 40.37% | 67.71% | 1.68x | ✅ | +| `hexbytes_new[two patterns]` | 4.263737600661353e-05 | 2.5978849285802113e-05 | 39.07% | 64.12% | 1.64x | ✅ | +| `hexbytes_repr[0-9]` | 2.8906603901256988e-05 | 4.826409864705047e-05 | -66.97% | -40.11% | 0.60x | ❌ | +| `hexbytes_repr[4-byte pattern]` | 0.00011963341642583751 | 0.0001400665401070896 | -17.08% | -14.59% | 0.85x | ❌ | +| `hexbytes_repr[all byte values]` | 0.00011982235283705905 | 0.00013990902582604605 | -16.76% | -14.36% | 0.86x | ❌ | +| `hexbytes_repr[alternating 0x00/0xff]` | 4.856278231022973e-05 | 6.823805107868716e-05 | -40.52% | -28.83% | 0.71x | ❌ | +| `hexbytes_repr[alternating 0xaa/0x55]` | 4.857590398733753e-05 | 6.995288404312158e-05 | -44.01% | -30.56% | 0.69x | ❌ | +| `hexbytes_repr[ascii sentence]` | 4.031931849084338e-05 | 5.950601363909072e-05 | -47.59% | -32.24% | 0.68x | ❌ | +| `hexbytes_repr[b'']` | 2.1317235451217533e-05 | 3.9220457560879214e-05 | -83.98% | -45.65% | 0.54x | ❌ | +| `hexbytes_repr[b'\\x00'*32]` | 3.6531415565533604e-05 | 5.550275792589815e-05 | -51.93% | -34.18% | 0.66x | ❌ | +| `hexbytes_repr[b'\\x00\\xff\\x00\\xff']` | 2.637317037783945e-05 | 4.5718566832638076e-05 | -73.35% | -42.31% | 0.58x | ❌ | +| `hexbytes_repr[b'\\x01'*100]` | 6.088965111409175e-05 | 8.061184262466249e-05 | -32.39% | -24.47% | 0.76x | ❌ | +| `hexbytes_repr[b'\\x01'*2048]` | 0.0007614258905273656 | 0.0007861038751990369 | -3.24% | -3.14% | 0.97x | ❌ | +| `hexbytes_repr[b'\\x01\\x02\\x03']` | 2.6209223833763088e-05 | 4.54939655277082e-05 | -73.58% | -42.39% | 0.58x | ❌ | +| `hexbytes_repr[b'\\x10\\x20\\x30\\x40\\x50']` | 2.7028655231277712e-05 | 4.619027613384838e-05 | -70.89% | -41.48% | 0.59x | ❌ | +| `hexbytes_repr[b'\\x7f'*8]` | 2.8230645154587657e-05 | 4.904206182181031e-05 | -73.72% | -42.44% | 0.58x | ❌ | +| `hexbytes_repr[b'\\x80'*8]` | 2.8426131680960446e-05 | 4.777460813929573e-05 | -68.07% | -40.50% | 0.60x | ❌ | +| `hexbytes_repr[b'\\xde\\xad\\xbe\\xef']` | 2.6337729088802863e-05 | 4.547637607019854e-05 | -72.67% | -42.08% | 0.58x | ❌ | +| `hexbytes_repr[b'\\xff'*64]` | 4.864470126407969e-05 | 6.820290034013081e-05 | -40.21% | -28.68% | 0.71x | ❌ | +| `hexbytes_repr[b'a'*1024]` | 0.0003943152236865464 | 0.0004167634849109744 | -5.69% | -5.39% | 0.95x | ❌ | +| `hexbytes_repr[b'abc']` | 2.6066297462518963e-05 | 4.519746535806044e-05 | -73.39% | -42.33% | 0.58x | ❌ | +| `hexbytes_repr[long alternating]` | 0.00039789659825941614 | 0.00041966943296914243 | -5.47% | -5.19% | 0.95x | ❌ | +| `hexbytes_repr[mixed pattern]` | 9.750328166691435e-05 | 0.00011687490478363051 | -19.87% | -16.57% | 0.83x | ❌ | +| `hexbytes_repr[multiples of 0x10]` | 2.8799433607726066e-05 | 4.825756547722914e-05 | -67.56% | -40.32% | 0.60x | ❌ | +| `hexbytes_repr[palindrome ascii]` | 2.7796805953080366e-05 | 4.6697563483038906e-05 | -68.00% | -40.47% | 0.60x | ❌ | +| `hexbytes_repr[palindrome numeric]` | 2.7060029458088667e-05 | 4.60052916156726e-05 | -70.01% | -41.18% | 0.59x | ❌ | +| `hexbytes_repr[palindrome]` | 3.1699440174901834e-05 | 5.113128257544771e-05 | -61.30% | -38.00% | 0.62x | ❌ | +| `hexbytes_repr[repeated 0-9]` | 6.1059735802075e-05 | 8.09308274489489e-05 | -32.54% | -24.55% | 0.75x | ❌ | +| `hexbytes_repr[single 0xff]` | 2.5412433661322482e-05 | 4.4486854740555556e-05 | -75.06% | -42.88% | 0.57x | ❌ | +| `hexbytes_repr[single null byte]` | 2.571699182079626e-05 | 4.427370703012172e-05 | -72.16% | -41.91% | 0.58x | ❌ | +| `hexbytes_repr[two patterns]` | 4.8579280895801936e-05 | 6.850903517262255e-05 | -41.03% | -29.09% | 0.71x | ❌ | +| `hexbytes_to_0x_hex[0-9]` | 1.551396585047557e-05 | 1.3630300793019073e-05 | 12.14% | 13.82% | 1.14x | ✅ | +| `hexbytes_to_0x_hex[4-byte pattern]` | 4.195234456795008e-05 | 4.012706081221306e-05 | 4.35% | 4.55% | 1.05x | ✅ | +| `hexbytes_to_0x_hex[all byte values]` | 4.211303275401072e-05 | 4.028452591251296e-05 | 4.34% | 4.54% | 1.05x | ✅ | +| `hexbytes_to_0x_hex[alternating 0x00/0xff]` | 2.0800595554670752e-05 | 1.9010172893267305e-05 | 8.61% | 9.42% | 1.09x | ✅ | +| `hexbytes_to_0x_hex[alternating 0xaa/0x55]` | 2.0904581121842868e-05 | 1.9147459039671937e-05 | 8.41% | 9.18% | 1.09x | ✅ | +| `hexbytes_to_0x_hex[ascii sentence]` | 1.885077859672098e-05 | 1.7071625813539214e-05 | 9.44% | 10.42% | 1.10x | ✅ | +| `hexbytes_to_0x_hex[b'']` | 1.026480036137029e-05 | 1.1345847549565756e-05 | -10.53% | -9.53% | 0.90x | ❌ | +| `hexbytes_to_0x_hex[b'\\x00'*32]` | 1.7477926479293212e-05 | 1.583933858505862e-05 | 9.38% | 10.35% | 1.10x | ✅ | +| `hexbytes_to_0x_hex[b'\\x00\\xff\\x00\\xff']` | 1.5048574884238393e-05 | 1.3065242835046563e-05 | 13.18% | 15.18% | 1.15x | ✅ | +| `hexbytes_to_0x_hex[b'\\x01'*100]` | 2.5080113367605668e-05 | 2.2536233916689552e-05 | 10.14% | 11.29% | 1.11x | ✅ | +| `hexbytes_to_0x_hex[b'\\x01'*2048]` | 0.00022120556912250792 | 0.0002211920219665213 | 0.01% | 0.01% | 1.00x | ✅ | +| `hexbytes_to_0x_hex[b'\\x01\\x02\\x03']` | 1.484649658669481e-05 | 1.3091211127426347e-05 | 11.82% | 13.41% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[b'\\x10\\x20\\x30\\x40\\x50']` | 1.5047836277518734e-05 | 1.3107099760095945e-05 | 12.90% | 14.81% | 1.15x | ✅ | +| `hexbytes_to_0x_hex[b'\\x7f'*8]` | 1.5407694127854997e-05 | 1.354045064787356e-05 | 12.12% | 13.79% | 1.14x | ✅ | +| `hexbytes_to_0x_hex[b'\\x80'*8]` | 1.5428943320727377e-05 | 1.3440175575873593e-05 | 12.89% | 14.80% | 1.15x | ✅ | +| `hexbytes_to_0x_hex[b'\\xde\\xad\\xbe\\xef']` | 1.5012446645307307e-05 | 1.313473795929436e-05 | 12.51% | 14.30% | 1.14x | ✅ | +| `hexbytes_to_0x_hex[b'\\xff'*64]` | 2.0806946366311905e-05 | 1.92471000032091e-05 | 7.50% | 8.10% | 1.08x | ✅ | +| `hexbytes_to_0x_hex[b'a'*1024]` | 0.0001223788737133279 | 0.00011830648768577156 | 3.33% | 3.44% | 1.03x | ✅ | +| `hexbytes_to_0x_hex[b'abc']` | 1.5010069965050508e-05 | 1.3101622063792088e-05 | 12.71% | 14.57% | 1.15x | ✅ | +| `hexbytes_to_0x_hex[long alternating]` | 0.00012198009534447016 | 0.00012121568938859308 | 0.63% | 0.63% | 1.01x | ✅ | +| `hexbytes_to_0x_hex[mixed pattern]` | 3.4878635442167046e-05 | 3.308848224624071e-05 | 5.13% | 5.41% | 1.05x | ✅ | +| `hexbytes_to_0x_hex[multiples of 0x10]` | 1.5537679378131247e-05 | 1.3550212089721784e-05 | 12.79% | 14.67% | 1.15x | ✅ | +| `hexbytes_to_0x_hex[palindrome ascii]` | 1.526067072378255e-05 | 1.3441697074053967e-05 | 11.92% | 13.53% | 1.14x | ✅ | +| `hexbytes_to_0x_hex[palindrome numeric]` | 1.4922041049843883e-05 | 1.3376076252462054e-05 | 10.36% | 11.56% | 1.12x | ✅ | +| `hexbytes_to_0x_hex[palindrome]` | 1.6556797581452576e-05 | 1.4670629146908296e-05 | 11.39% | 12.86% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[repeated 0-9]` | 2.5101944937213006e-05 | 2.2453825049654264e-05 | 10.55% | 11.79% | 1.12x | ✅ | +| `hexbytes_to_0x_hex[single 0xff]` | 1.4652719088638188e-05 | 1.2820154930984992e-05 | 12.51% | 14.29% | 1.14x | ✅ | +| `hexbytes_to_0x_hex[single null byte]` | 1.4640124525707886e-05 | 1.2928737904935405e-05 | 11.69% | 13.24% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[two patterns]` | 2.076404064230241e-05 | 1.8906706862571387e-05 | 8.94% | 9.82% | 1.10x | ✅ | From 78565ce75c06e6deaaedcb349142cd89fd0875d4 Mon Sep 17 00:00:00 2001 From: BobTheBuidler Date: Tue, 30 Sep 2025 09:10:16 +0000 Subject: [PATCH 46/98] black . --- benchmarks/params.py | 2 + benchmarks/test__utils_benchmarks.py | 11 +++++- benchmarks/test_main_benchmarks.py | 36 +++++++++++++---- .../benchmark/compare_benchmark_results.py | 10 +++-- .../benchmark/generate_benchmark_markdown.py | 39 +++++++++++++++---- setup.py | 11 +++++- 6 files changed, 88 insertions(+), 21 deletions(-) diff --git a/benchmarks/params.py b/benchmarks/params.py index 1f65047..7784144 100644 --- a/benchmarks/params.py +++ b/benchmarks/params.py @@ -42,9 +42,11 @@ BYTES_VALS: List[bytes] = [v for v, _ in BYTES_CASES] BYTES_IDS: List[str] = [id for _, id in BYTES_CASES] + def variant_ids(base_ids: List[str], prefix: str) -> List[str]: return [f"{prefix}({id})" for id in base_ids] + BYTEARRAYS = [bytearray(b) for b in BYTES_VALS] BYTEARRAYS_IDS = variant_ids(BYTES_IDS, "bytearray") diff --git a/benchmarks/test__utils_benchmarks.py b/benchmarks/test__utils_benchmarks.py index d0a1c97..5049c14 100644 --- a/benchmarks/test__utils_benchmarks.py +++ b/benchmarks/test__utils_benchmarks.py @@ -7,29 +7,36 @@ import faster_hexbytes._utils from benchmarks.params import ( - TO_BYTES_VALS, TO_BYTES_IDS, - HEXSTRINGS, HEXSTRINGS_IDS, + TO_BYTES_VALS, + TO_BYTES_IDS, + HEXSTRINGS, + HEXSTRINGS_IDS, ) + def run_100(func: Callable[..., Any], *args: Any) -> None: for i in range(100): func(*args) + @pytest.mark.benchmark(group="to_bytes") @pytest.mark.parametrize("val", TO_BYTES_VALS, ids=TO_BYTES_IDS) def test_to_bytes(benchmark: BenchmarkFixture, val: Any) -> None: benchmark(run_100, hexbytes._utils.to_bytes, val) + @pytest.mark.benchmark(group="to_bytes") @pytest.mark.parametrize("val", TO_BYTES_VALS, ids=TO_BYTES_IDS) def test_faster_to_bytes(benchmark: BenchmarkFixture, val: Any) -> None: benchmark(run_100, faster_hexbytes._utils.to_bytes, val) + @pytest.mark.benchmark(group="hexstr_to_bytes") @pytest.mark.parametrize("hexstr", HEXSTRINGS, ids=HEXSTRINGS_IDS) def test_hexstr_to_bytes(benchmark: BenchmarkFixture, hexstr: HexStr) -> None: benchmark(run_100, hexbytes._utils.hexstr_to_bytes, hexstr) + @pytest.mark.benchmark(group="hexstr_to_bytes") @pytest.mark.parametrize("hexstr", HEXSTRINGS, ids=HEXSTRINGS_IDS) def test_faster_hexstr_to_bytes(benchmark: BenchmarkFixture, hexstr: HexStr) -> None: diff --git a/benchmarks/test_main_benchmarks.py b/benchmarks/test_main_benchmarks.py index 43143f4..0ed29c8 100644 --- a/benchmarks/test_main_benchmarks.py +++ b/benchmarks/test_main_benchmarks.py @@ -6,73 +6,95 @@ import faster_hexbytes from benchmarks.params import ( - CONSTRUCTOR_VALS, CONSTRUCTOR_IDS, - BYTES_VALS, BYTES_IDS, - SLICES, SLICE_IDS, + CONSTRUCTOR_VALS, + CONSTRUCTOR_IDS, + BYTES_VALS, + BYTES_IDS, + SLICES, + SLICE_IDS, ) + def run_100(func: Callable[..., Any], *args: Any) -> None: for i in range(100): func(*args) + @pytest.mark.benchmark(group="HexBytes.__new__") @pytest.mark.parametrize("val", CONSTRUCTOR_VALS, ids=CONSTRUCTOR_IDS) def test_hexbytes_new(benchmark: BenchmarkFixture, val: Any) -> None: benchmark(run_100, hexbytes.HexBytes, val) + @pytest.mark.benchmark(group="HexBytes.__new__") @pytest.mark.parametrize("val", CONSTRUCTOR_VALS, ids=CONSTRUCTOR_IDS) def test_faster_hexbytes_new(benchmark: BenchmarkFixture, val: Any) -> None: benchmark(run_100, faster_hexbytes.HexBytes, val) + @pytest.mark.benchmark(group="HexBytes.__getitem__ (index)") @pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS) @pytest.mark.parametrize("idx", [0, 1, 2, 3, 4, 5, -1]) -def test_hexbytes_getitem_index(benchmark: BenchmarkFixture, val: bytes, idx: int) -> None: +def test_hexbytes_getitem_index( + benchmark: BenchmarkFixture, val: bytes, idx: int +) -> None: obj = hexbytes.HexBytes(val) if len(val) > abs(idx): benchmark(run_100, lambda: obj[idx]) + @pytest.mark.benchmark(group="HexBytes.__getitem__ (index)") @pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS) @pytest.mark.parametrize("idx", [0, 1, 2, 3, 4, 5, -1]) -def test_faster_hexbytes_getitem_index(benchmark: BenchmarkFixture, val: bytes, idx: int) -> None: +def test_faster_hexbytes_getitem_index( + benchmark: BenchmarkFixture, val: bytes, idx: int +) -> None: obj = faster_hexbytes.HexBytes(val) if len(val) > abs(idx): benchmark(run_100, lambda: obj[idx]) + @pytest.mark.benchmark(group="HexBytes.__getitem__ (slice)") @pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS) @pytest.mark.parametrize("slice_", SLICES, ids=SLICE_IDS) -def test_hexbytes_getitem_slice(benchmark: BenchmarkFixture, val: bytes, slice_: slice) -> None: +def test_hexbytes_getitem_slice( + benchmark: BenchmarkFixture, val: bytes, slice_: slice +) -> None: obj = hexbytes.HexBytes(val) benchmark(run_100, lambda: obj[slice_]) + @pytest.mark.benchmark(group="HexBytes.__getitem__ (slice)") @pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS) @pytest.mark.parametrize("slice_", SLICES, ids=SLICE_IDS) -def test_faster_hexbytes_getitem_slice(benchmark: BenchmarkFixture, val: bytes, slice_: slice) -> None: +def test_faster_hexbytes_getitem_slice( + benchmark: BenchmarkFixture, val: bytes, slice_: slice +) -> None: obj = faster_hexbytes.HexBytes(val) benchmark(run_100, lambda: obj[slice_]) + @pytest.mark.benchmark(group="HexBytes.__repr__") @pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS) def test_hexbytes_repr(benchmark: BenchmarkFixture, val: bytes) -> None: obj = hexbytes.HexBytes(val) benchmark(run_100, obj.__repr__) + @pytest.mark.benchmark(group="HexBytes.__repr__") @pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS) def test_faster_hexbytes_repr(benchmark: BenchmarkFixture, val: bytes) -> None: obj = faster_hexbytes.HexBytes(val) benchmark(run_100, obj.__repr__) + @pytest.mark.benchmark(group="HexBytes.to_0x_hex") @pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS) def test_hexbytes_to_0x_hex(benchmark: BenchmarkFixture, val: bytes) -> None: obj = hexbytes.HexBytes(val) benchmark(run_100, obj.to_0x_hex) + @pytest.mark.benchmark(group="HexBytes.to_0x_hex") @pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS) def test_faster_hexbytes_to_0x_hex(benchmark: BenchmarkFixture, val: bytes) -> None: diff --git a/scripts/benchmark/compare_benchmark_results.py b/scripts/benchmark/compare_benchmark_results.py index 5f5fa01..fbb9f2f 100644 --- a/scripts/benchmark/compare_benchmark_results.py +++ b/scripts/benchmark/compare_benchmark_results.py @@ -45,9 +45,13 @@ def compare_group(group_results: Dict[str, Any]) -> Dict[str, Any]: if ref and fast: mean_ref = ref["mean"] mean_fast = fast["mean"] - percent_change = ((mean_ref - mean_fast) / mean_ref) * 100 if mean_ref != 0 else 0.0 - speedup_x = mean_ref / mean_fast if mean_fast != 0 else float('inf') - speedup_percent = (speedup_x - 1) * 100 if speedup_x != float('inf') else float('inf') + percent_change = ( + ((mean_ref - mean_fast) / mean_ref) * 100 if mean_ref != 0 else 0.0 + ) + speedup_x = mean_ref / mean_fast if mean_fast != 0 else float("inf") + speedup_percent = ( + (speedup_x - 1) * 100 if speedup_x != float("inf") else float("inf") + ) return { "reference_mean": mean_ref, "faster_mean": mean_fast, diff --git a/scripts/benchmark/generate_benchmark_markdown.py b/scripts/benchmark/generate_benchmark_markdown.py index 3d3aed7..ea79168 100644 --- a/scripts/benchmark/generate_benchmark_markdown.py +++ b/scripts/benchmark/generate_benchmark_markdown.py @@ -1,6 +1,7 @@ import os import json + def main(): diff_path = "pytest_benchmark_diff.json" results_dir = os.path.join("benchmarks", "results") @@ -8,7 +9,9 @@ def main(): # Get repo and branch info from environment variables (for links) repo = os.environ.get("GITHUB_REPOSITORY", "unknown/unknown") - branch = os.environ.get("GITHUB_HEAD_REF") or os.environ.get("GITHUB_REF", "main").replace("refs/heads/", "") + branch = os.environ.get("GITHUB_HEAD_REF") or os.environ.get( + "GITHUB_REF", "main" + ).replace("refs/heads/", "") with open(diff_path, "r", encoding="utf-8") as f: diff = json.load(f) @@ -19,7 +22,7 @@ def main(): benchmarkFile = "unknown" m = None if submodule.startswith("faster_hexbytes."): - m = submodule[len("faster_hexbytes."):] + m = submodule[len("faster_hexbytes.") :] if m: submoduleFile = f"faster_hexbytes/{m}.py" @@ -29,9 +32,15 @@ def main(): benchmarkUrl = f"https://github.com/{repo}/blob/{branch}/{benchmarkFile}" md_lines = [] - md_lines.append(f"#### [{submodule}]({submoduleUrl}) - [view benchmarks]({benchmarkUrl})\n") - md_lines.append("| Function | Reference Mean | Faster Mean | % Change | Speedup (%) | x Faster | Faster |") - md_lines.append("|----------|---------------|-------------|----------|-------------|----------|--------|") + md_lines.append( + f"#### [{submodule}]({submoduleUrl}) - [view benchmarks]({benchmarkUrl})\n" + ) + md_lines.append( + "| Function | Reference Mean | Faster Mean | % Change | Speedup (%) | x Faster | Faster |" + ) + md_lines.append( + "|----------|---------------|-------------|----------|-------------|----------|--------|" + ) for group, data in sorted(groupDiffs.items()): if data.get("percent_change") is not None: @@ -40,9 +49,22 @@ def main(): emoji = "✅" elif data["percent_change"] < 0: emoji = "❌" - percentChange = f"{data['percent_change']:.2f}%" if data.get("percent_change") is not None else "" - speedupPercent = f"{data['speedup_percent']:.2f}%" if data.get("speedup_percent") is not None else "" - speedupX = f"{data['speedup_x']:.2f}x" if data.get("speedup_x") is not None and isinstance(data["speedup_x"], (int, float)) else "" + percentChange = ( + f"{data['percent_change']:.2f}%" + if data.get("percent_change") is not None + else "" + ) + speedupPercent = ( + f"{data['speedup_percent']:.2f}%" + if data.get("speedup_percent") is not None + else "" + ) + speedupX = ( + f"{data['speedup_x']:.2f}x" + if data.get("speedup_x") is not None + and isinstance(data["speedup_x"], (int, float)) + else "" + ) md_lines.append( f"| `{group}` | {data.get('reference_mean', '')} | {data.get('faster_mean', '')} | {percentChange} | {speedupPercent} | {speedupX} | {emoji} |" ) @@ -58,5 +80,6 @@ def main(): with open(out_path, "w", encoding="utf-8") as outf: outf.write(md_content) + if __name__ == "__main__": main() diff --git a/setup.py b/setup.py index 121043c..4df8ebe 100644 --- a/setup.py +++ b/setup.py @@ -68,7 +68,16 @@ license="MIT", zip_safe=False, keywords="ethereum", - packages=find_packages(exclude=["scripts", "scripts.*", "tests", "tests.*", "benchmarks", "benchmarks.*"]), + packages=find_packages( + exclude=[ + "scripts", + "scripts.*", + "tests", + "tests.*", + "benchmarks", + "benchmarks.*", + ] + ), ext_modules=ext_modules, package_data={"faster_hexbytes": ["py.typed"]}, classifiers=[ From 4da7ed01349c4bebf178eaf516517d9797105c9e Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Tue, 30 Sep 2025 05:25:19 -0400 Subject: [PATCH 47/98] chore: drop python3.8 (#4) * chore: drop python3.8 * chore: compile C files for source control * Update setup.py --------- Co-authored-by: github-actions[bot] --- build/ops.txt | 2458 ++++++++++++++++++++++++------------------------- setup.py | 2 +- tox.ini | 12 +- 3 files changed, 1236 insertions(+), 1236 deletions(-) diff --git a/build/ops.txt b/build/ops.txt index 936de4d..d40a5c1 100644 --- a/build/ops.txt +++ b/build/ops.txt @@ -1,323 +1,641 @@ -def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __new___HexBytes_obj.__call__(__mypyc_self__, cls, val): - __mypyc_self__ :: faster_hexbytes.main.__new___HexBytes_obj - cls :: object - val :: union[bytes, str, bool, object, int] - r0 :: bytes - r1 :: object - r2 :: bool - r3 :: object[2] - r4 :: object_ptr - r5 :: object - r6, r7 :: faster_hexbytes.main.HexBytes -L0: - r0 = to_bytes(val) - if is_error(r0) goto L7 (error at __new__:49) else goto L1 -L1: - r1 = faster_hexbytes.main._bytes_new :: static - if is_error(r1) goto L8 else goto L4 -L2: - r2 = raise NameError('value for final name "_bytes_new" was not set') - if not r2 goto L7 (error at __new__:50) else goto L3 :: bool -L3: - unreachable -L4: - r3 = [cls, r0] - r4 = load_address r3 - r5 = PyObject_Vectorcall(r1, r4, 2, 0) - if is_error(r5) goto L9 (error at __new__:50) else goto L5 -L5: - dec_ref r0 - r6 = cast(faster_hexbytes.main.HexBytes, r5) - if is_error(r6) goto L7 (error at __new__:50) else goto L6 -L6: - return r6 -L7: - r7 = :: faster_hexbytes.main.HexBytes - return r7 -L8: - dec_ref r0 - goto L2 -L9: - dec_ref r0 - goto L7 - -def __getitem___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __getitem___HexBytes_obj.__call__(__mypyc_self__, self, key): - __mypyc_self__ :: faster_hexbytes.main.__getitem___HexBytes_obj - self :: faster_hexbytes.main.HexBytes - key, r0 :: object - r1 :: str - r2 :: object[3] - r3 :: object_ptr - r4 :: object - r5 :: union[int, bytes] - r6 :: bit - r7 :: int - r8, r9, r10 :: object +def to_bytes(val): + val :: union[bytes, str, object, bool, int] + r0 :: bit + r1 :: bytes + r2 :: bit + r3 :: str + r4 :: bytes + r5 :: bit + r6 :: object + r7 :: object[1] + r8 :: object_ptr + r9 :: object + r10 :: bytes r11 :: bit - r12 :: bytes - r13 :: object - r14 :: object[1] - r15 :: object_ptr - r16 :: object - r17 :: faster_hexbytes.main.HexBytes - r18 :: bytes - r19 :: object[1] - r20 :: object_ptr - r21 :: object - r22 :: faster_hexbytes.main.HexBytes - r23 :: union[int, faster_hexbytes.main.HexBytes] + r12 :: bool + r13, r14, r15 :: bytes + r16 :: bit + r17 :: int + r18 :: native_int + r19 :: bit + r20 :: native_int + r21, r22 :: bit + r23 :: bool + r24 :: bit + r25 :: str + r26 :: int + r27, r28, r29 :: str + r30 :: object + r31 :: str + r32 :: object + r33 :: object[1] + r34 :: object_ptr + r35 :: object + r36 :: int + r37 :: object + r38 :: str + r39, r40 :: object + r41 :: object[1] + r42 :: object_ptr + r43 :: object + r44 :: str + r45 :: bytes + r46 :: object + r47 :: str + r48 :: object + r49 :: i32 + r50 :: bit + r51 :: bool + r52 :: object + r53 :: object[1] + r54 :: object_ptr + r55 :: object + r56 :: bytes + r57, r58, r59, r60, r61 :: str + r62 :: object[3] + r63 :: object_ptr + r64 :: object + r65, r66 :: str + r67 :: object + r68, r69 :: str + r70 :: object[3] + r71 :: object_ptr + r72 :: object + r73 :: str + r74 :: list + r75, r76, r77, r78, r79, r80 :: ptr + r81 :: str + r82 :: object + r83 :: str + r84 :: object + r85 :: object[1] + r86 :: object_ptr + r87 :: object + r88 :: bytes L0: - r0 = load_address PyBytes_Type - r1 = '__getitem__' - r2 = [r0, self, key] - r3 = load_address r2 - r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775811, 0) - if is_error(r4) goto L14 (error at __getitem__:63) else goto L1 + r0 = PyBytes_Check(val) + if r0 goto L1 else goto L3 :: bool L1: - r5 = cast(union[int, bytes], r4) - if is_error(r5) goto L14 (error at __getitem__:63) else goto L2 + inc_ref val + r1 = cast(bytes, val) + if is_error(r1) goto L51 (error at to_bytes:19) else goto L2 L2: - r6 = PyLong_Check(r5) - if r6 goto L3 else goto L5 :: bool + return r1 L3: - r7 = unbox(int, r5) - dec_ref r5 - if is_error(r7) goto L14 (error at __getitem__:65) else goto L4 + r2 = PyUnicode_Check(val) + if r2 goto L4 else goto L7 :: bool L4: - r8 = box(int, r7) - return r8 + inc_ref val + r3 = cast(str, val) + if is_error(r3) goto L51 (error at to_bytes:21) else goto L5 L5: - r9 = CPy_TYPE(self) - r10 = faster_hexbytes.main.HexBytes :: type - r11 = r9 == r10 - if r11 goto L15 else goto L10 :: bool + r4 = hexstr_to_bytes(r3) + dec_ref r3 + if is_error(r4) goto L51 (error at to_bytes:21) else goto L6 L6: - r12 = cast(bytes, r5) - if is_error(r12) goto L14 (error at __getitem__:69) else goto L7 + return r4 L7: - r13 = faster_hexbytes.main.HexBytes :: type - r14 = [r12] - r15 = load_address r14 - r16 = PyObject_Vectorcall(r13, r15, 1, 0) - if is_error(r16) goto L16 (error at __getitem__:69) else goto L8 + r5 = PyByteArray_Check(val) + if r5 goto L8 else goto L11 :: bool L8: - dec_ref r12 - r17 = cast(faster_hexbytes.main.HexBytes, r16) - if is_error(r17) goto L14 (error at __getitem__:69) else goto L9 + r6 = load_address PyBytes_Type + r7 = [val] + r8 = load_address r7 + r9 = PyObject_Vectorcall(r6, r8, 1, 0) + if is_error(r9) goto L51 (error at to_bytes:23) else goto L9 L9: - return r17 + r10 = cast(bytes, r9) + if is_error(r10) goto L51 (error at to_bytes:23) else goto L10 L10: - r18 = cast(bytes, r5) - if is_error(r18) goto L17 (error at __getitem__:70) else goto L11 + return r10 L11: - r19 = [r18] - r20 = load_address r19 - r21 = PyObject_Vectorcall(r9, r20, 1, 0) - dec_ref r9 - if is_error(r21) goto L18 (error at __getitem__:70) else goto L12 + r11 = PyBool_Check(val) + if r11 goto L12 else goto L17 :: bool L12: - dec_ref r18 - r22 = cast(faster_hexbytes.main.HexBytes, r21) - if is_error(r22) goto L14 (error at __getitem__:70) else goto L13 + r12 = unbox(bool, val) + if is_error(r12) goto L51 (error at to_bytes:25) else goto L13 L13: - return r22 + if r12 goto L14 else goto L15 :: bool L14: - r23 = :: union[int, faster_hexbytes.main.HexBytes] - return r23 -L15: - dec_ref r9 - goto L6 + r13 = b'\x01' + inc_ref r13 + r14 = r13 + goto L16 +L15: + r15 = b'\x00' + inc_ref r15 + r14 = r15 L16: - dec_ref r12 - goto L14 + return r14 L17: - dec_ref r9 - goto L14 + r16 = PyLong_Check(val) + if r16 goto L18 else goto L37 :: bool L18: - dec_ref r18 - goto L14 + r17 = unbox(int, val) + if is_error(r17) goto L51 (error at to_bytes:29) else goto L19 +L19: + r18 = r17 & 1 + r19 = r18 != 0 + if r19 goto L21 else goto L20 :: bool +L20: + r20 = 0 & 1 + r21 = r20 != 0 + if r21 goto L21 else goto L22 :: bool +L21: + r22 = CPyTagged_IsLt_(r17, 0) + r23 = r22 + goto L23 +L22: + r24 = r17 < 0 :: signed + r23 = r24 +L23: + dec_ref r17 :: int + if r23 goto L24 else goto L31 :: bool +L24: + r25 = 'Cannot convert negative integer ' + r26 = unbox(int, val) + if is_error(r26) goto L51 (error at to_bytes:30) else goto L25 +L25: + r27 = CPyTagged_Str(r26) + dec_ref r26 :: int + if is_error(r27) goto L51 (error at to_bytes:30) else goto L26 +L26: + r28 = ' to bytes' + r29 = CPyStr_Build(3, r25, r27, r28) + dec_ref r27 + if is_error(r29) goto L51 (error at to_bytes:30) else goto L27 +L27: + r30 = builtins :: module + r31 = 'ValueError' + r32 = CPyObject_GetAttr(r30, r31) + if is_error(r32) goto L52 (error at to_bytes:30) else goto L28 +L28: + r33 = [r29] + r34 = load_address r33 + r35 = PyObject_Vectorcall(r32, r34, 1, 0) + dec_ref r32 + if is_error(r35) goto L52 (error at to_bytes:30) else goto L29 +L29: + dec_ref r29 + CPy_Raise(r35) + dec_ref r35 + if not 0 goto L51 (error at to_bytes:30) else goto L30 :: bool +L30: + unreachable +L31: + r36 = unbox(int, val) + if is_error(r36) goto L51 (error at to_bytes:32) else goto L32 +L32: + r37 = builtins :: module + r38 = 'hex' + r39 = CPyObject_GetAttr(r37, r38) + if is_error(r39) goto L53 (error at to_bytes:32) else goto L33 +L33: + r40 = box(int, r36) + r41 = [r40] + r42 = load_address r41 + r43 = PyObject_Vectorcall(r39, r42, 1, 0) + dec_ref r39 + if is_error(r43) goto L54 (error at to_bytes:32) else goto L34 +L34: + dec_ref r40 + r44 = cast(str, r43) + if is_error(r44) goto L51 (error at to_bytes:32) else goto L35 +L35: + r45 = to_bytes(r44) + dec_ref r44 + if is_error(r45) goto L51 (error at to_bytes:32) else goto L36 +L36: + return r45 +L37: + r46 = builtins :: module + r47 = 'memoryview' + r48 = CPyObject_GetAttr(r46, r47) + if is_error(r48) goto L51 (error at to_bytes:33) else goto L38 +L38: + r49 = PyObject_IsInstance(val, r48) + dec_ref r48 + r50 = r49 >= 0 :: signed + if not r50 goto L51 (error at to_bytes:33) else goto L39 :: bool +L39: + r51 = truncate r49: i32 to builtins.bool + if r51 goto L40 else goto L43 :: bool +L40: + r52 = load_address PyBytes_Type + r53 = [val] + r54 = load_address r53 + r55 = PyObject_Vectorcall(r52, r54, 1, 0) + if is_error(r55) goto L51 (error at to_bytes:34) else goto L41 +L41: + r56 = cast(bytes, r55) + if is_error(r56) goto L51 (error at to_bytes:34) else goto L42 +L42: + return r56 +L43: + r57 = '' + r58 = 'Cannot convert ' + r59 = '{!r:{}}' + r60 = '' + r61 = 'format' + r62 = [r59, val, r60] + r63 = load_address r62 + r64 = PyObject_VectorcallMethod(r61, r63, 9223372036854775811, 0) + if is_error(r64) goto L51 (error at to_bytes:36) else goto L44 +L44: + r65 = ' of type ' + r66 = '{:{}}' + r67 = CPy_TYPE(val) + r68 = '' + r69 = 'format' + r70 = [r66, r67, r68] + r71 = load_address r70 + r72 = PyObject_VectorcallMethod(r69, r71, 9223372036854775811, 0) + if is_error(r72) goto L55 (error at to_bytes:36) else goto L45 +L45: + dec_ref r67 + r73 = ' to bytes' + r74 = PyList_New(5) + if is_error(r74) goto L56 (error at to_bytes:36) else goto L46 +L46: + r75 = get_element_ptr r74 ob_item :: PyListObject + r76 = load_mem r75 :: ptr* + inc_ref r58 + set_mem r76, r58 :: builtins.object* + r77 = r76 + 8 + set_mem r77, r64 :: builtins.object* + inc_ref r65 + r78 = r76 + 16 + set_mem r78, r65 :: builtins.object* + r79 = r76 + 24 + set_mem r79, r72 :: builtins.object* + inc_ref r73 + r80 = r76 + 32 + set_mem r80, r73 :: builtins.object* + r81 = PyUnicode_Join(r57, r74) + dec_ref r74 + if is_error(r81) goto L51 (error at to_bytes:36) else goto L47 +L47: + r82 = builtins :: module + r83 = 'TypeError' + r84 = CPyObject_GetAttr(r82, r83) + if is_error(r84) goto L57 (error at to_bytes:36) else goto L48 +L48: + r85 = [r81] + r86 = load_address r85 + r87 = PyObject_Vectorcall(r84, r86, 1, 0) + dec_ref r84 + if is_error(r87) goto L57 (error at to_bytes:36) else goto L49 +L49: + dec_ref r81 + CPy_Raise(r87) + dec_ref r87 + if not 0 goto L51 (error at to_bytes:36) else goto L50 :: bool +L50: + unreachable +L51: + r88 = :: bytes + return r88 +L52: + dec_ref r29 + goto L51 +L53: + dec_ref r36 :: int + goto L51 +L54: + dec_ref r40 + goto L51 +L55: + dec_ref r64 + dec_ref r67 + goto L51 +L56: + dec_ref r64 + dec_ref r72 + goto L51 +L57: + dec_ref r81 + goto L51 -def __repr___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object +def hexstr_to_bytes(hexstr): + hexstr, r0, r1 :: str + r2 :: tuple[str, str] + r3 :: object + r4 :: bool + r5 :: object + r6, non_prefixed_hex :: str + r7 :: native_int + r8 :: bit + r9 :: short_int + r10 :: int + r11 :: bit + r12, r13, padded_hex :: str + r14 :: bytes + r15 :: tuple[object, object, object] + r16 :: object + r17 :: str + r18 :: object + r19 :: bit + r20, r21, r22 :: str + r23 :: object + r24 :: str + r25 :: object + r26 :: object[1] + r27 :: object_ptr + r28 :: object + r29 :: bit + r30 :: object + r31 :: bool + r32 :: object[1] + r33 :: object_ptr + r34 :: object + r35, r36 :: bytes L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool + r0 = '0x' + r1 = '0X' + inc_ref r0 + inc_ref r1 + r2 = (r0, r1) + r3 = box(tuple[str, str], r2) + r4 = CPyStr_Startswith(hexstr, r3) + dec_ref r3 + if is_error(r4) goto L31 (error at hexstr_to_bytes:40) else goto L1 L1: - inc_ref __mypyc_self__ - return __mypyc_self__ + if r4 goto L2 else goto L5 :: bool L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __repr___HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.__repr___HexBytes_obj - self :: faster_hexbytes.main.HexBytes - r0, r1, r2, r3, r4 :: str - r5 :: object[1] - r6 :: object_ptr - r7 :: object - r8, r9, r10, r11 :: str - r12 :: object[3] - r13 :: object_ptr - r14 :: object - r15, r16 :: str - r17 :: list - r18, r19, r20, r21 :: ptr - r22, r23 :: str -L0: - r0 = '' - r1 = 'HexBytes(' - r2 = '{!r:{}}' - r3 = '0x' - r4 = 'hex' - r5 = [self] - r6 = load_address r5 - r7 = PyObject_VectorcallMethod(r4, r6, 9223372036854775809, 0) - if is_error(r7) goto L8 (error at __repr__:73) else goto L1 -L1: - r8 = cast(str, r7) - if is_error(r8) goto L8 (error at __repr__:73) else goto L2 -L2: - r9 = PyUnicode_Concat(r3, r8) - dec_ref r8 - if is_error(r9) goto L8 (error at __repr__:73) else goto L3 + r5 = CPyStr_GetSlice(hexstr, 4, 9223372036854775806) + if is_error(r5) goto L31 (error at hexstr_to_bytes:41) else goto L3 L3: - r10 = '' - r11 = 'format' - r12 = [r2, r9, r10] - r13 = load_address r12 - r14 = PyObject_VectorcallMethod(r11, r13, 9223372036854775811, 0) - if is_error(r14) goto L9 (error at __repr__:73) else goto L4 + r6 = cast(str, r5) + if is_error(r6) goto L31 (error at hexstr_to_bytes:41) else goto L4 L4: - dec_ref r9 - r15 = cast(str, r14) - if is_error(r15) goto L8 (error at __repr__:73) else goto L5 + non_prefixed_hex = r6 + goto L6 L5: - r16 = ')' - r17 = PyList_New(3) - if is_error(r17) goto L10 (error at __repr__:73) else goto L6 + inc_ref hexstr + non_prefixed_hex = hexstr L6: - r18 = get_element_ptr r17 ob_item :: PyListObject - r19 = load_mem r18 :: ptr* - inc_ref r1 - set_mem r19, r1 :: builtins.object* - r20 = r19 + 8 - set_mem r20, r15 :: builtins.object* - inc_ref r16 - r21 = r19 + 16 - set_mem r21, r16 :: builtins.object* - r22 = PyUnicode_Join(r0, r17) - dec_ref r17 - if is_error(r22) goto L8 (error at __repr__:73) else goto L7 + r7 = CPyStr_Size_size_t(hexstr) + r8 = r7 >= 0 :: signed + if not r8 goto L32 (error at hexstr_to_bytes:46) else goto L7 :: bool L7: - return r22 + r9 = r7 << 1 + r10 = CPyTagged_Remainder(r9, 4) + if is_error(r10) goto L32 (error at hexstr_to_bytes:46) else goto L8 L8: - r23 = :: str - return r23 + r11 = r10 != 0 + dec_ref r10 :: int + if r11 goto L9 else goto L11 :: bool L9: - dec_ref r9 - goto L8 + r12 = '0' + r13 = PyUnicode_Concat(r12, non_prefixed_hex) + dec_ref non_prefixed_hex + if is_error(r13) goto L31 (error at hexstr_to_bytes:47) else goto L10 L10: + padded_hex = r13 + goto L12 +L11: + padded_hex = non_prefixed_hex +L12: + r14 = PyUnicode_AsASCIIString(padded_hex) + if is_error(r14) goto L14 (error at hexstr_to_bytes:52) else goto L33 +L13: + goto L25 +L14: + r15 = CPy_CatchError() + r16 = builtins :: module + r17 = 'UnicodeDecodeError' + r18 = CPyObject_GetAttr(r16, r17) + if is_error(r18) goto L34 (error at hexstr_to_bytes:53) else goto L15 +L15: + r19 = CPy_ExceptionMatches(r18) + dec_ref r18 + if r19 goto L16 else goto L35 :: bool +L16: + r20 = 'hex string ' + r21 = ' may only contain [0-9a-fA-F] characters' + r22 = CPyStr_Build(3, r20, padded_hex, r21) + dec_ref padded_hex + if is_error(r22) goto L23 (error at hexstr_to_bytes:55) else goto L17 +L17: + r23 = builtins :: module + r24 = 'ValueError' + r25 = CPyObject_GetAttr(r23, r24) + if is_error(r25) goto L36 (error at hexstr_to_bytes:54) else goto L18 +L18: + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L36 (error at hexstr_to_bytes:54) else goto L19 +L19: + dec_ref r22 + CPy_Raise(r28) + dec_ref r28 + if not 0 goto L23 (error at hexstr_to_bytes:54) else goto L37 :: bool +L20: + unreachable +L21: + CPy_Reraise() + if not 0 goto L23 else goto L38 :: bool +L22: + unreachable +L23: + CPy_RestoreExcInfo(r15) dec_ref r15 - goto L8 + r29 = CPy_KeepPropagating() + if not r29 goto L31 else goto L24 :: bool +L24: + unreachable +L25: + r30 = faster_hexbytes._utils.unhexlify :: static + if is_error(r30) goto L39 else goto L28 +L26: + r31 = raise NameError('value for final name "unhexlify" was not set') + if not r31 goto L31 (error at hexstr_to_bytes:58) else goto L27 :: bool +L27: + unreachable +L28: + r32 = [r14] + r33 = load_address r32 + r34 = PyObject_Vectorcall(r30, r33, 1, 0) + if is_error(r34) goto L40 (error at hexstr_to_bytes:58) else goto L29 +L29: + dec_ref r14 + r35 = cast(bytes, r34) + if is_error(r35) goto L31 (error at hexstr_to_bytes:58) else goto L30 +L30: + return r35 +L31: + r36 = :: bytes + return r36 +L32: + dec_ref non_prefixed_hex + goto L31 +L33: + dec_ref padded_hex + goto L13 +L34: + dec_ref padded_hex + goto L23 +L35: + dec_ref padded_hex + goto L21 +L36: + dec_ref r22 + goto L23 +L37: + dec_ref r15 + goto L20 +L38: + dec_ref r15 + goto L22 +L39: + dec_ref r14 + goto L26 +L40: + dec_ref r14 + goto L31 -def to_0x_hex_HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4 :: object + r5 :: object_ptr + r6 :: object_ptr[1] + r7 :: c_ptr + r8 :: native_int[1] + r9 :: c_ptr + r10 :: object + r11 :: dict + r12, r13 :: str + r14 :: bit + r15 :: object + r16 :: str + r17 :: dict + r18, r19 :: object + r20 :: str + r21 :: object + r22 :: dict + r23 :: str + r24 :: i32 + r25 :: bit + r26 :: None L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool L1: - inc_ref __mypyc_self__ - return __mypyc_self__ + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L8 (error at :-1) else goto L2 L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 + builtins = r4 :: module + dec_ref r4 L3: - return r2 + r5 = load_address binascii :: module + r6 = [r5] + r7 = load_address r6 + r8 = [1] + r9 = load_address r8 + r10 = (('binascii', 'binascii', 'binascii'),) + r11 = faster_hexbytes._utils.globals :: static + r12 = 'faster_hexbytes/_utils.py' + r13 = '' + r14 = CPyImport_ImportMany(r10, r7, r11, r12, r13, r9) + if not r14 goto L8 else goto L4 :: bool L4: - r3 = :: object - return r3 - -def to_0x_hex_HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.to_0x_hex_HexBytes_obj - self :: faster_hexbytes.main.HexBytes - r0, r1 :: str - r2 :: object[1] - r3 :: object_ptr - r4 :: object - r5, r6, r7 :: str + r15 = ('Final', 'Union') + r16 = 'typing' + r17 = faster_hexbytes._utils.globals :: static + r18 = CPyImport_ImportFromMany(r16, r15, r15, r17) + if is_error(r18) goto L8 (error at :2) else goto L5 +L5: + typing = r18 :: module + dec_ref r18 + r19 = binascii :: module + r20 = 'unhexlify' + r21 = CPyObject_GetAttr(r19, r20) + if is_error(r21) goto L8 (error at :8) else goto L6 +L6: + faster_hexbytes._utils.unhexlify = r21 :: static + r22 = faster_hexbytes._utils.globals :: static + r23 = 'unhexlify' + r24 = CPyDict_SetItem(r22, r23, r21) + dec_ref r21 + r25 = r24 >= 0 :: signed + if not r25 goto L8 (error at :8) else goto L7 :: bool +L7: + return 1 +L8: + r26 = :: None + return r26 + +def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object L0: - r0 = '0x' - r1 = 'hex' - r2 = [self] - r3 = load_address r2 - r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775809, 0) - if is_error(r4) goto L4 (error at to_0x_hex:79) else goto L1 + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool L1: - r5 = cast(str, r4) - if is_error(r5) goto L4 (error at to_0x_hex:79) else goto L2 + inc_ref __mypyc_self__ + return __mypyc_self__ L2: - r6 = CPyStr_Build(2, r0, r5) - dec_ref r5 - if is_error(r6) goto L4 (error at to_0x_hex:79) else goto L3 + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 L3: - return r6 + return r2 L4: - r7 = :: str + r3 = :: object + return r3 + +def __new___HexBytes_obj.__call__(__mypyc_self__, cls, val): + __mypyc_self__ :: faster_hexbytes.main.__new___HexBytes_obj + cls :: object + val :: union[bytes, str, bool, object, int] + r0 :: bytes + r1 :: object + r2 :: bool + r3 :: object[2] + r4 :: object_ptr + r5 :: object + r6, r7 :: faster_hexbytes.main.HexBytes +L0: + r0 = to_bytes(val) + if is_error(r0) goto L7 (error at __new__:49) else goto L1 +L1: + r1 = faster_hexbytes.main._bytes_new :: static + if is_error(r1) goto L8 else goto L4 +L2: + r2 = raise NameError('value for final name "_bytes_new" was not set') + if not r2 goto L7 (error at __new__:50) else goto L3 :: bool +L3: + unreachable +L4: + r3 = [cls, r0] + r4 = load_address r3 + r5 = PyObject_Vectorcall(r1, r4, 2, 0) + if is_error(r5) goto L9 (error at __new__:50) else goto L5 +L5: + dec_ref r0 + r6 = cast(faster_hexbytes.main.HexBytes, r5) + if is_error(r6) goto L7 (error at __new__:50) else goto L6 +L6: + return r6 +L7: + r7 = :: faster_hexbytes.main.HexBytes return r7 +L8: + dec_ref r0 + goto L2 +L9: + dec_ref r0 + goto L7 -def __reduce___HexBytes_obj.__get__(__mypyc_self__, instance, owner): +def __getitem___HexBytes_obj.__get__(__mypyc_self__, instance, owner): __mypyc_self__, instance, owner, r0 :: object r1 :: bit r2, r3 :: object @@ -337,1030 +655,712 @@ L4: r3 = :: object return r3 -def __reduce___HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.__reduce___HexBytes_obj +def __getitem___HexBytes_obj.__call__(__mypyc_self__, self, key): + __mypyc_self__ :: faster_hexbytes.main.__getitem___HexBytes_obj self :: faster_hexbytes.main.HexBytes - r0 :: object - r1 :: bool - r2, r3 :: object - r4 :: object[1] - r5 :: object_ptr - r6 :: object - r7 :: bytes - r8 :: tuple[object, bytes] - r9, r10 :: tuple[object, tuple[object, bytes]] + key, r0 :: object + r1 :: str + r2 :: object[3] + r3 :: object_ptr + r4 :: object + r5 :: union[int, bytes] + r6 :: bit + r7 :: int + r8, r9, r10 :: object + r11 :: bit + r12 :: bytes + r13 :: object + r14 :: object[1] + r15 :: object_ptr + r16 :: object + r17 :: faster_hexbytes.main.HexBytes + r18 :: bytes + r19 :: object[1] + r20 :: object_ptr + r21 :: object + r22 :: faster_hexbytes.main.HexBytes + r23 :: union[int, faster_hexbytes.main.HexBytes] L0: - r0 = faster_hexbytes.main._bytes_new :: static - if is_error(r0) goto L1 else goto L3 + r0 = load_address PyBytes_Type + r1 = '__getitem__' + r2 = [r0, self, key] + r3 = load_address r2 + r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775811, 0) + if is_error(r4) goto L14 (error at __getitem__:63) else goto L1 L1: - r1 = raise NameError('value for final name "_bytes_new" was not set') - if not r1 goto L6 (error at __reduce__:89) else goto L2 :: bool + r5 = cast(union[int, bytes], r4) + if is_error(r5) goto L14 (error at __getitem__:63) else goto L2 L2: - unreachable + r6 = PyLong_Check(r5) + if r6 goto L3 else goto L5 :: bool L3: - r2 = CPy_TYPE(self) - r3 = load_address PyBytes_Type - r4 = [self] - r5 = load_address r4 - r6 = PyObject_Vectorcall(r3, r5, 1, 0) - if is_error(r6) goto L7 (error at __reduce__:89) else goto L4 + r7 = unbox(int, r5) + dec_ref r5 + if is_error(r7) goto L14 (error at __getitem__:65) else goto L4 L4: - r7 = cast(bytes, r6) - if is_error(r7) goto L7 (error at __reduce__:89) else goto L5 + r8 = box(int, r7) + return r8 L5: - r8 = (r2, r7) - inc_ref r0 - r9 = (r0, r8) - return r9 + r9 = CPy_TYPE(self) + r10 = faster_hexbytes.main.HexBytes :: type + r11 = r9 == r10 + if r11 goto L15 else goto L10 :: bool L6: - r10 = :: tuple[object, tuple[object, bytes]] - return r10 + r12 = cast(bytes, r5) + if is_error(r12) goto L14 (error at __getitem__:69) else goto L7 L7: - dec_ref r2 + r13 = faster_hexbytes.main.HexBytes :: type + r14 = [r12] + r15 = load_address r14 + r16 = PyObject_Vectorcall(r13, r15, 1, 0) + if is_error(r16) goto L16 (error at __getitem__:69) else goto L8 +L8: + dec_ref r12 + r17 = cast(faster_hexbytes.main.HexBytes, r16) + if is_error(r17) goto L14 (error at __getitem__:69) else goto L9 +L9: + return r17 +L10: + r18 = cast(bytes, r5) + if is_error(r18) goto L17 (error at __getitem__:70) else goto L11 +L11: + r19 = [r18] + r20 = load_address r19 + r21 = PyObject_Vectorcall(r9, r20, 1, 0) + dec_ref r9 + if is_error(r21) goto L18 (error at __getitem__:70) else goto L12 +L12: + dec_ref r18 + r22 = cast(faster_hexbytes.main.HexBytes, r21) + if is_error(r22) goto L14 (error at __getitem__:70) else goto L13 +L13: + return r22 +L14: + r23 = :: union[int, faster_hexbytes.main.HexBytes] + return r23 +L15: + dec_ref r9 goto L6 +L16: + dec_ref r12 + goto L14 +L17: + dec_ref r9 + goto L14 +L18: + dec_ref r18 + goto L14 -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4, r5 :: object - r6 :: str - r7 :: dict - r8 :: object - r9 :: object_ptr - r10 :: object_ptr[1] - r11 :: c_ptr - r12 :: native_int[1] - r13 :: c_ptr - r14 :: object - r15 :: dict - r16, r17 :: str - r18 :: bit - r19 :: object - r20 :: str - r21 :: dict - r22, r23 :: object - r24 :: str - r25 :: dict - r26, r27 :: object - r28 :: str - r29 :: dict - r30 :: object - r31 :: dict - r32 :: str - r33, r34, r35, r36, r37 :: object - r38 :: str - r39, r40, r41 :: object - r42 :: str - r43 :: object - r44 :: tuple[object, object, object, object, object, object] - r45, r46 :: object - r47 :: dict - r48 :: str - r49 :: i32 - r50 :: bit - r51 :: object - r52 :: str - r53 :: object - r54 :: dict - r55 :: str - r56 :: i32 - r57 :: bit - r58 :: object - r59 :: str - r60 :: object - r61 :: tuple - r62, r63 :: object - r64 :: str - r65 :: bool - r66, r67 :: str - r68 :: object - r69 :: object[2] - r70 :: object_ptr - r71 :: object - r72, r73, r74, r75 :: dict - r76 :: faster_hexbytes.main.__new___HexBytes_obj - r77 :: object - r78 :: str - r79 :: object - r80 :: object[1] - r81 :: object_ptr - r82 :: object - r83 :: str - r84 :: i32 - r85 :: bit - r86 :: faster_hexbytes.main.__getitem___HexBytes_obj - r87 :: str - r88 :: i32 - r89 :: bit - r90 :: faster_hexbytes.main.__repr___HexBytes_obj - r91 :: str - r92 :: i32 - r93 :: bit - r94 :: faster_hexbytes.main.to_0x_hex_HexBytes_obj - r95 :: str - r96 :: i32 - r97 :: bit - r98 :: faster_hexbytes.main.__reduce___HexBytes_obj - r99 :: str - r100 :: i32 - r101 :: bit - r102, r103 :: str - r104 :: i32 - r105 :: bit - r106, r107 :: str - r108 :: i32 - r109 :: bit - r110, r111 :: str - r112 :: i32 - r113 :: bit - r114 :: object[3] - r115 :: object_ptr - r116 :: object - r117 :: dict - r118 :: str - r119, r120 :: object - r121 :: object[1] - r122 :: object_ptr - r123, r124 :: object - r125 :: object[1] - r126 :: object_ptr - r127 :: object - r128 :: dict - r129 :: str - r130 :: i32 - r131 :: bit - r132 :: object - r133 :: None +def __repr___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L48 (error at :-1) else goto L2 + inc_ref __mypyc_self__ + return __mypyc_self__ L2: - builtins = r4 :: module - dec_ref r4 + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 L3: - r5 = ('TYPE_CHECKING', 'Callable', 'Final', 'Tuple', 'Type', 'Union', 'overload') - r6 = 'typing' - r7 = faster_hexbytes.main.globals :: static - r8 = CPyImport_ImportFromMany(r6, r5, r5, r7) - if is_error(r8) goto L48 (error at :1) else goto L4 + return r2 L4: - typing = r8 :: module + r3 = :: object + return r3 + +def __repr___HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.__repr___HexBytes_obj + self :: faster_hexbytes.main.HexBytes + r0, r1, r2, r3, r4 :: str + r5 :: object[1] + r6 :: object_ptr + r7 :: object + r8, r9, r10, r11 :: str + r12 :: object[3] + r13 :: object_ptr + r14 :: object + r15, r16 :: str + r17 :: list + r18, r19, r20, r21 :: ptr + r22, r23 :: str +L0: + r0 = '' + r1 = 'HexBytes(' + r2 = '{!r:{}}' + r3 = '0x' + r4 = 'hex' + r5 = [self] + r6 = load_address r5 + r7 = PyObject_VectorcallMethod(r4, r6, 9223372036854775809, 0) + if is_error(r7) goto L8 (error at __repr__:73) else goto L1 +L1: + r8 = cast(str, r7) + if is_error(r8) goto L8 (error at __repr__:73) else goto L2 +L2: + r9 = PyUnicode_Concat(r3, r8) dec_ref r8 - r9 = load_address hexbytes.main :: module - r10 = [r9] - r11 = load_address r10 - r12 = [14] + if is_error(r9) goto L8 (error at __repr__:73) else goto L3 +L3: + r10 = '' + r11 = 'format' + r12 = [r2, r9, r10] r13 = load_address r12 - r14 = (('hexbytes.main', 'hexbytes.main', 'hexbytes'),) - r15 = faster_hexbytes.main.globals :: static - r16 = 'faster_hexbytes/main.py' - r17 = '' - r18 = CPyImport_ImportMany(r14, r11, r15, r16, r17, r13) - if not r18 goto L48 else goto L5 :: bool + r14 = PyObject_VectorcallMethod(r11, r13, 9223372036854775811, 0) + if is_error(r14) goto L9 (error at __repr__:73) else goto L4 +L4: + dec_ref r9 + r15 = cast(str, r14) + if is_error(r15) goto L8 (error at __repr__:73) else goto L5 L5: - r19 = ('mypyc_attr',) - r20 = 'mypy_extensions' - r21 = faster_hexbytes.main.globals :: static - r22 = CPyImport_ImportFromMany(r20, r19, r19, r21) - if is_error(r22) goto L48 (error at :15) else goto L6 + r16 = ')' + r17 = PyList_New(3) + if is_error(r17) goto L10 (error at __repr__:73) else goto L6 L6: - mypy_extensions = r22 :: module - dec_ref r22 - r23 = ('Self',) - r24 = 'typing_extensions' - r25 = faster_hexbytes.main.globals :: static - r26 = CPyImport_ImportFromMany(r24, r23, r23, r25) - if is_error(r26) goto L48 (error at :18) else goto L7 + r18 = get_element_ptr r17 ob_item :: PyListObject + r19 = load_mem r18 :: ptr* + inc_ref r1 + set_mem r19, r1 :: builtins.object* + r20 = r19 + 8 + set_mem r20, r15 :: builtins.object* + inc_ref r16 + r21 = r19 + 16 + set_mem r21, r16 :: builtins.object* + r22 = PyUnicode_Join(r0, r17) + dec_ref r17 + if is_error(r22) goto L8 (error at __repr__:73) else goto L7 L7: - typing_extensions = r26 :: module - dec_ref r26 - r27 = ('to_bytes',) - r28 = 'faster_hexbytes._utils' - r29 = faster_hexbytes.main.globals :: static - r30 = CPyImport_ImportFromMany(r28, r27, r27, r29) - if is_error(r30) goto L48 (error at :22) else goto L8 + return r22 L8: - faster_hexbytes._utils = r30 :: module - dec_ref r30 - if 0 goto L9 else goto L9 :: bool + r23 = :: str + return r23 L9: - r31 = faster_hexbytes.main.globals :: static - r32 = 'Union' - r33 = CPyDict_GetItem(r31, r32) - if is_error(r33) goto L48 (error at :31) else goto L10 + dec_ref r9 + goto L8 L10: - r34 = load_address PyBytes_Type - r35 = load_address PyUnicode_Type - r36 = load_address PyBool_Type - r37 = builtins :: module - r38 = 'bytearray' - r39 = CPyObject_GetAttr(r37, r38) - if is_error(r39) goto L49 (error at :31) else goto L11 -L11: - r40 = load_address PyLong_Type - r41 = builtins :: module - r42 = 'memoryview' - r43 = CPyObject_GetAttr(r41, r42) - if is_error(r43) goto L50 (error at :31) else goto L12 -L12: - inc_ref r34 - inc_ref r35 - inc_ref r36 - inc_ref r40 - r44 = (r34, r35, r36, r39, r40, r43) - r45 = box(tuple[object, object, object, object, object, object], r44) - r46 = PyObject_GetItem(r33, r45) - dec_ref r33 - dec_ref r45 - if is_error(r46) goto L48 (error at :31) else goto L13 -L13: - r47 = faster_hexbytes.main.globals :: static - r48 = 'BytesLike' - r49 = CPyDict_SetItem(r47, r48, r46) - dec_ref r46 - r50 = r49 >= 0 :: signed - if not r50 goto L48 (error at :31) else goto L14 :: bool -L14: - r51 = load_address PyBytes_Type - r52 = '__new__' - r53 = CPyObject_GetAttr(r51, r52) - if is_error(r53) goto L48 (error at :33) else goto L15 -L15: - faster_hexbytes.main._bytes_new = r53 :: static - r54 = faster_hexbytes.main.globals :: static - r55 = '_bytes_new' - r56 = CPyDict_SetItem(r54, r55, r53) - dec_ref r53 - r57 = r56 >= 0 :: signed - if not r57 goto L48 (error at :33) else goto L16 :: bool -L16: - r58 = hexbytes.main :: module - r59 = 'HexBytes' - r60 = CPyObject_GetAttr(r58, r59) - if is_error(r60) goto L48 (error at :37) else goto L17 -L17: - r61 = PyTuple_Pack(1, r60) - dec_ref r60 - if is_error(r61) goto L48 (error at :37) else goto L18 -L18: - r62 = load_address PyType_Type - r63 = CPy_CalculateMetaclass(r62, r61) - if is_error(r63) goto L51 (error at :37) else goto L19 -L19: - r64 = '__prepare__' - r65 = PyObject_HasAttr(r63, r64) - if r65 goto L20 else goto L24 :: bool -L20: - r66 = 'HexBytes' - r67 = '__prepare__' - r68 = CPyObject_GetAttr(r63, r67) - if is_error(r68) goto L51 (error at :37) else goto L21 -L21: - r69 = [r66, r61] - r70 = load_address r69 - r71 = PyObject_Vectorcall(r68, r70, 2, 0) - dec_ref r68 - if is_error(r71) goto L51 (error at :37) else goto L22 -L22: - r72 = cast(dict, r71) - if is_error(r72) goto L51 (error at :37) else goto L23 -L23: - r73 = r72 - goto L26 -L24: - r74 = PyDict_New() - if is_error(r74) goto L51 (error at :37) else goto L25 -L25: - r73 = r74 -L26: - r75 = PyDict_New() - if is_error(r75) goto L52 (error at :37) else goto L27 -L27: - r76 = __new___HexBytes_obj() - if is_error(r76) goto L53 (error at :48) else goto L28 -L28: - r77 = builtins :: module - r78 = 'staticmethod' - r79 = CPyObject_GetAttr(r77, r78) - if is_error(r79) goto L54 (error at :48) else goto L29 -L29: - r80 = [r76] - r81 = load_address r80 - r82 = PyObject_Vectorcall(r79, r81, 1, 0) - dec_ref r79 - if is_error(r82) goto L54 (error at :48) else goto L30 -L30: - dec_ref r76 - r83 = '__new__' - r84 = CPyDict_SetItem(r73, r83, r82) - dec_ref r82 - r85 = r84 >= 0 :: signed - if not r85 goto L53 (error at :48) else goto L31 :: bool -L31: - r86 = __getitem___HexBytes_obj() - if is_error(r86) goto L53 (error at :60) else goto L32 -L32: - r87 = '__getitem__' - r88 = CPyDict_SetItem(r73, r87, r86) - dec_ref r86 - r89 = r88 >= 0 :: signed - if not r89 goto L53 (error at :60) else goto L33 :: bool -L33: - r90 = __repr___HexBytes_obj() - if is_error(r90) goto L53 (error at :72) else goto L34 -L34: - r91 = '__repr__' - r92 = CPyDict_SetItem(r73, r91, r90) - dec_ref r90 - r93 = r92 >= 0 :: signed - if not r93 goto L53 (error at :72) else goto L35 :: bool -L35: - r94 = to_0x_hex_HexBytes_obj() - if is_error(r94) goto L53 (error at :75) else goto L36 -L36: - r95 = 'to_0x_hex' - r96 = CPyDict_SetItem(r73, r95, r94) - dec_ref r94 - r97 = r96 >= 0 :: signed - if not r97 goto L53 (error at :75) else goto L37 :: bool -L37: - r98 = __reduce___HexBytes_obj() - if is_error(r98) goto L53 (error at :81) else goto L38 -L38: - r99 = '__reduce__' - r100 = CPyDict_SetItem(r73, r99, r98) - dec_ref r98 - r101 = r100 >= 0 :: signed - if not r101 goto L53 (error at :81) else goto L39 :: bool -L39: - r102 = 'HexBytes' - r103 = '__annotations__' - r104 = CPyDict_SetItem(r73, r103, r75) - dec_ref r75 - r105 = r104 >= 0 :: signed - if not r105 goto L52 (error at :37) else goto L40 :: bool -L40: - r106 = 'mypyc filler docstring' - r107 = '__doc__' - r108 = CPyDict_SetItem(r73, r107, r106) - r109 = r108 >= 0 :: signed - if not r109 goto L52 (error at :37) else goto L41 :: bool -L41: - r110 = 'faster_hexbytes.main' - r111 = '__module__' - r112 = CPyDict_SetItem(r73, r111, r110) - r113 = r112 >= 0 :: signed - if not r113 goto L52 (error at :37) else goto L42 :: bool -L42: - r114 = [r102, r61, r73] - r115 = load_address r114 - r116 = PyObject_Vectorcall(r63, r115, 3, 0) - if is_error(r116) goto L52 (error at :37) else goto L43 -L43: - dec_ref r73 - dec_ref r61 - r117 = faster_hexbytes.main.globals :: static - r118 = 'mypyc_attr' - r119 = CPyDict_GetItem(r117, r118) - if is_error(r119) goto L55 (error at :36) else goto L44 -L44: - r120 = box(bool, 0) - r121 = [r120] - r122 = load_address r121 - r123 = ('native_class',) - r124 = PyObject_Vectorcall(r119, r122, 0, r123) - dec_ref r119 - if is_error(r124) goto L55 (error at :36) else goto L45 -L45: - r125 = [r116] - r126 = load_address r125 - r127 = PyObject_Vectorcall(r124, r126, 1, 0) - dec_ref r124 - if is_error(r127) goto L55 (error at :37) else goto L46 -L46: - dec_ref r116 - faster_hexbytes.main.HexBytes = r127 :: type - r128 = faster_hexbytes.main.globals :: static - r129 = 'HexBytes' - r130 = PyDict_SetItem(r128, r129, r127) - dec_ref r127 - r131 = r130 >= 0 :: signed - if not r131 goto L48 (error at :37) else goto L47 :: bool -L47: - r132 = faster_hexbytes.main.HexBytes :: type - return 1 -L48: - r133 = :: None - return r133 -L49: - dec_ref r33 - goto L48 -L50: - dec_ref r33 - dec_ref r39 - goto L48 -L51: - dec_ref r61 - goto L48 -L52: - dec_ref r61 - dec_ref r73 - goto L48 -L53: - dec_ref r61 - dec_ref r73 - dec_ref r75 - goto L48 -L54: - dec_ref r61 - dec_ref r73 - dec_ref r75 - dec_ref r76 - goto L48 -L55: - dec_ref r116 - goto L48 - -def to_bytes(val): - val :: union[bytes, str, object, bool, int] - r0 :: bit - r1 :: bytes - r2 :: bit - r3 :: str - r4 :: bytes - r5 :: bit - r6 :: object - r7 :: object[1] - r8 :: object_ptr - r9 :: object - r10 :: bytes - r11 :: bit - r12 :: bool - r13, r14, r15 :: bytes - r16 :: bit - r17 :: int - r18 :: native_int - r19 :: bit - r20 :: native_int - r21, r22 :: bit - r23 :: bool - r24 :: bit - r25 :: str - r26 :: int - r27, r28, r29 :: str - r30 :: object - r31 :: str - r32 :: object - r33 :: object[1] - r34 :: object_ptr - r35 :: object - r36 :: int - r37 :: object - r38 :: str - r39, r40 :: object - r41 :: object[1] - r42 :: object_ptr - r43 :: object - r44 :: str - r45 :: bytes - r46 :: object - r47 :: str - r48 :: object - r49 :: i32 - r50 :: bit - r51 :: bool - r52 :: object - r53 :: object[1] - r54 :: object_ptr - r55 :: object - r56 :: bytes - r57, r58, r59, r60, r61 :: str - r62 :: object[3] - r63 :: object_ptr - r64 :: object - r65, r66 :: str - r67 :: object - r68, r69 :: str - r70 :: object[3] - r71 :: object_ptr - r72 :: object - r73 :: str - r74 :: list - r75, r76, r77, r78, r79, r80 :: ptr - r81 :: str - r82 :: object - r83 :: str - r84 :: object - r85 :: object[1] - r86 :: object_ptr - r87 :: object - r88 :: bytes -L0: - r0 = PyBytes_Check(val) - if r0 goto L1 else goto L3 :: bool -L1: - inc_ref val - r1 = cast(bytes, val) - if is_error(r1) goto L51 (error at to_bytes:19) else goto L2 -L2: - return r1 -L3: - r2 = PyUnicode_Check(val) - if r2 goto L4 else goto L7 :: bool -L4: - inc_ref val - r3 = cast(str, val) - if is_error(r3) goto L51 (error at to_bytes:21) else goto L5 -L5: - r4 = hexstr_to_bytes(r3) - dec_ref r3 - if is_error(r4) goto L51 (error at to_bytes:21) else goto L6 -L6: - return r4 -L7: - r5 = PyByteArray_Check(val) - if r5 goto L8 else goto L11 :: bool -L8: - r6 = load_address PyBytes_Type - r7 = [val] - r8 = load_address r7 - r9 = PyObject_Vectorcall(r6, r8, 1, 0) - if is_error(r9) goto L51 (error at to_bytes:23) else goto L9 -L9: - r10 = cast(bytes, r9) - if is_error(r10) goto L51 (error at to_bytes:23) else goto L10 -L10: - return r10 -L11: - r11 = PyBool_Check(val) - if r11 goto L12 else goto L17 :: bool -L12: - r12 = unbox(bool, val) - if is_error(r12) goto L51 (error at to_bytes:25) else goto L13 -L13: - if r12 goto L14 else goto L15 :: bool -L14: - r13 = b'\x01' - inc_ref r13 - r14 = r13 - goto L16 -L15: - r15 = b'\x00' - inc_ref r15 - r14 = r15 -L16: - return r14 -L17: - r16 = PyLong_Check(val) - if r16 goto L18 else goto L37 :: bool -L18: - r17 = unbox(int, val) - if is_error(r17) goto L51 (error at to_bytes:29) else goto L19 -L19: - r18 = r17 & 1 - r19 = r18 != 0 - if r19 goto L21 else goto L20 :: bool -L20: - r20 = 0 & 1 - r21 = r20 != 0 - if r21 goto L21 else goto L22 :: bool -L21: - r22 = CPyTagged_IsLt_(r17, 0) - r23 = r22 - goto L23 -L22: - r24 = r17 < 0 :: signed - r23 = r24 -L23: - dec_ref r17 :: int - if r23 goto L24 else goto L31 :: bool -L24: - r25 = 'Cannot convert negative integer ' - r26 = unbox(int, val) - if is_error(r26) goto L51 (error at to_bytes:30) else goto L25 -L25: - r27 = CPyTagged_Str(r26) - dec_ref r26 :: int - if is_error(r27) goto L51 (error at to_bytes:30) else goto L26 -L26: - r28 = ' to bytes' - r29 = CPyStr_Build(3, r25, r27, r28) - dec_ref r27 - if is_error(r29) goto L51 (error at to_bytes:30) else goto L27 -L27: - r30 = builtins :: module - r31 = 'ValueError' - r32 = CPyObject_GetAttr(r30, r31) - if is_error(r32) goto L52 (error at to_bytes:30) else goto L28 -L28: - r33 = [r29] - r34 = load_address r33 - r35 = PyObject_Vectorcall(r32, r34, 1, 0) - dec_ref r32 - if is_error(r35) goto L52 (error at to_bytes:30) else goto L29 -L29: - dec_ref r29 - CPy_Raise(r35) - dec_ref r35 - if not 0 goto L51 (error at to_bytes:30) else goto L30 :: bool -L30: - unreachable -L31: - r36 = unbox(int, val) - if is_error(r36) goto L51 (error at to_bytes:32) else goto L32 -L32: - r37 = builtins :: module - r38 = 'hex' - r39 = CPyObject_GetAttr(r37, r38) - if is_error(r39) goto L53 (error at to_bytes:32) else goto L33 -L33: - r40 = box(int, r36) - r41 = [r40] - r42 = load_address r41 - r43 = PyObject_Vectorcall(r39, r42, 1, 0) - dec_ref r39 - if is_error(r43) goto L54 (error at to_bytes:32) else goto L34 -L34: - dec_ref r40 - r44 = cast(str, r43) - if is_error(r44) goto L51 (error at to_bytes:32) else goto L35 -L35: - r45 = to_bytes(r44) - dec_ref r44 - if is_error(r45) goto L51 (error at to_bytes:32) else goto L36 -L36: - return r45 -L37: - r46 = builtins :: module - r47 = 'memoryview' - r48 = CPyObject_GetAttr(r46, r47) - if is_error(r48) goto L51 (error at to_bytes:33) else goto L38 -L38: - r49 = PyObject_IsInstance(val, r48) - dec_ref r48 - r50 = r49 >= 0 :: signed - if not r50 goto L51 (error at to_bytes:33) else goto L39 :: bool -L39: - r51 = truncate r49: i32 to builtins.bool - if r51 goto L40 else goto L43 :: bool -L40: - r52 = load_address PyBytes_Type - r53 = [val] - r54 = load_address r53 - r55 = PyObject_Vectorcall(r52, r54, 1, 0) - if is_error(r55) goto L51 (error at to_bytes:34) else goto L41 -L41: - r56 = cast(bytes, r55) - if is_error(r56) goto L51 (error at to_bytes:34) else goto L42 -L42: - return r56 -L43: - r57 = '' - r58 = 'Cannot convert ' - r59 = '{!r:{}}' - r60 = '' - r61 = 'format' - r62 = [r59, val, r60] - r63 = load_address r62 - r64 = PyObject_VectorcallMethod(r61, r63, 9223372036854775811, 0) - if is_error(r64) goto L51 (error at to_bytes:36) else goto L44 -L44: - r65 = ' of type ' - r66 = '{:{}}' - r67 = CPy_TYPE(val) - r68 = '' - r69 = 'format' - r70 = [r66, r67, r68] - r71 = load_address r70 - r72 = PyObject_VectorcallMethod(r69, r71, 9223372036854775811, 0) - if is_error(r72) goto L55 (error at to_bytes:36) else goto L45 -L45: - dec_ref r67 - r73 = ' to bytes' - r74 = PyList_New(5) - if is_error(r74) goto L56 (error at to_bytes:36) else goto L46 -L46: - r75 = get_element_ptr r74 ob_item :: PyListObject - r76 = load_mem r75 :: ptr* - inc_ref r58 - set_mem r76, r58 :: builtins.object* - r77 = r76 + 8 - set_mem r77, r64 :: builtins.object* - inc_ref r65 - r78 = r76 + 16 - set_mem r78, r65 :: builtins.object* - r79 = r76 + 24 - set_mem r79, r72 :: builtins.object* - inc_ref r73 - r80 = r76 + 32 - set_mem r80, r73 :: builtins.object* - r81 = PyUnicode_Join(r57, r74) - dec_ref r74 - if is_error(r81) goto L51 (error at to_bytes:36) else goto L47 -L47: - r82 = builtins :: module - r83 = 'TypeError' - r84 = CPyObject_GetAttr(r82, r83) - if is_error(r84) goto L57 (error at to_bytes:36) else goto L48 -L48: - r85 = [r81] - r86 = load_address r85 - r87 = PyObject_Vectorcall(r84, r86, 1, 0) - dec_ref r84 - if is_error(r87) goto L57 (error at to_bytes:36) else goto L49 -L49: - dec_ref r81 - CPy_Raise(r87) - dec_ref r87 - if not 0 goto L51 (error at to_bytes:36) else goto L50 :: bool -L50: + dec_ref r15 + goto L8 + +def to_0x_hex_HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def to_0x_hex_HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.to_0x_hex_HexBytes_obj + self :: faster_hexbytes.main.HexBytes + r0, r1 :: str + r2 :: object[1] + r3 :: object_ptr + r4 :: object + r5, r6, r7 :: str +L0: + r0 = '0x' + r1 = 'hex' + r2 = [self] + r3 = load_address r2 + r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775809, 0) + if is_error(r4) goto L4 (error at to_0x_hex:79) else goto L1 +L1: + r5 = cast(str, r4) + if is_error(r5) goto L4 (error at to_0x_hex:79) else goto L2 +L2: + r6 = CPyStr_Build(2, r0, r5) + dec_ref r5 + if is_error(r6) goto L4 (error at to_0x_hex:79) else goto L3 +L3: + return r6 +L4: + r7 = :: str + return r7 + +def __reduce___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def __reduce___HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.__reduce___HexBytes_obj + self :: faster_hexbytes.main.HexBytes + r0 :: object + r1 :: bool + r2, r3 :: object + r4 :: object[1] + r5 :: object_ptr + r6 :: object + r7 :: bytes + r8 :: tuple[object, bytes] + r9, r10 :: tuple[object, tuple[object, bytes]] +L0: + r0 = faster_hexbytes.main._bytes_new :: static + if is_error(r0) goto L1 else goto L3 +L1: + r1 = raise NameError('value for final name "_bytes_new" was not set') + if not r1 goto L6 (error at __reduce__:89) else goto L2 :: bool +L2: unreachable -L51: - r88 = :: bytes - return r88 -L52: - dec_ref r29 - goto L51 -L53: - dec_ref r36 :: int - goto L51 -L54: - dec_ref r40 - goto L51 -L55: - dec_ref r64 - dec_ref r67 - goto L51 -L56: - dec_ref r64 - dec_ref r72 - goto L51 -L57: - dec_ref r81 - goto L51 +L3: + r2 = CPy_TYPE(self) + r3 = load_address PyBytes_Type + r4 = [self] + r5 = load_address r4 + r6 = PyObject_Vectorcall(r3, r5, 1, 0) + if is_error(r6) goto L7 (error at __reduce__:89) else goto L4 +L4: + r7 = cast(bytes, r6) + if is_error(r7) goto L7 (error at __reduce__:89) else goto L5 +L5: + r8 = (r2, r7) + inc_ref r0 + r9 = (r0, r8) + return r9 +L6: + r10 = :: tuple[object, tuple[object, bytes]] + return r10 +L7: + dec_ref r2 + goto L6 -def hexstr_to_bytes(hexstr): - hexstr, r0, r1 :: str - r2 :: tuple[str, str] - r3 :: object - r4 :: bool - r5 :: object - r6, non_prefixed_hex :: str - r7 :: native_int - r8 :: bit - r9 :: short_int - r10 :: int - r11 :: bit - r12, r13, padded_hex :: str - r14 :: bytes - r15 :: tuple[object, object, object] - r16 :: object - r17 :: str - r18 :: object - r19 :: bit - r20, r21, r22 :: str - r23 :: object +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4, r5 :: object + r6 :: str + r7 :: dict + r8 :: object + r9 :: object_ptr + r10 :: object_ptr[1] + r11 :: c_ptr + r12 :: native_int[1] + r13 :: c_ptr + r14 :: object + r15 :: dict + r16, r17 :: str + r18 :: bit + r19 :: object + r20 :: str + r21 :: dict + r22, r23 :: object r24 :: str - r25 :: object - r26 :: object[1] - r27 :: object_ptr - r28 :: object - r29 :: bit + r25 :: dict + r26, r27 :: object + r28 :: str + r29 :: dict r30 :: object - r31 :: bool - r32 :: object[1] - r33 :: object_ptr - r34 :: object - r35, r36 :: bytes + r31 :: dict + r32 :: str + r33, r34, r35, r36, r37 :: object + r38 :: str + r39, r40, r41 :: object + r42 :: str + r43 :: object + r44 :: tuple[object, object, object, object, object, object] + r45, r46 :: object + r47 :: dict + r48 :: str + r49 :: i32 + r50 :: bit + r51 :: object + r52 :: str + r53 :: object + r54 :: dict + r55 :: str + r56 :: i32 + r57 :: bit + r58 :: object + r59 :: str + r60 :: object + r61 :: tuple + r62, r63 :: object + r64 :: str + r65 :: bool + r66, r67 :: str + r68 :: object + r69 :: object[2] + r70 :: object_ptr + r71 :: object + r72, r73, r74, r75 :: dict + r76 :: faster_hexbytes.main.__new___HexBytes_obj + r77 :: object + r78 :: str + r79 :: object + r80 :: object[1] + r81 :: object_ptr + r82 :: object + r83 :: str + r84 :: i32 + r85 :: bit + r86 :: faster_hexbytes.main.__getitem___HexBytes_obj + r87 :: str + r88 :: i32 + r89 :: bit + r90 :: faster_hexbytes.main.__repr___HexBytes_obj + r91 :: str + r92 :: i32 + r93 :: bit + r94 :: faster_hexbytes.main.to_0x_hex_HexBytes_obj + r95 :: str + r96 :: i32 + r97 :: bit + r98 :: faster_hexbytes.main.__reduce___HexBytes_obj + r99 :: str + r100 :: i32 + r101 :: bit + r102, r103 :: str + r104 :: i32 + r105 :: bit + r106, r107 :: str + r108 :: i32 + r109 :: bit + r110, r111 :: str + r112 :: i32 + r113 :: bit + r114 :: object[3] + r115 :: object_ptr + r116 :: object + r117 :: dict + r118 :: str + r119, r120 :: object + r121 :: object[1] + r122 :: object_ptr + r123, r124 :: object + r125 :: object[1] + r126 :: object_ptr + r127 :: object + r128 :: dict + r129 :: str + r130 :: i32 + r131 :: bit + r132 :: object + r133 :: None L0: - r0 = '0x' - r1 = '0X' - inc_ref r0 - inc_ref r1 - r2 = (r0, r1) - r3 = box(tuple[str, str], r2) - r4 = CPyStr_Startswith(hexstr, r3) - dec_ref r3 - if is_error(r4) goto L31 (error at hexstr_to_bytes:40) else goto L1 + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool L1: - if r4 goto L2 else goto L5 :: bool + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L48 (error at :-1) else goto L2 L2: - r5 = CPyStr_GetSlice(hexstr, 4, 9223372036854775806) - if is_error(r5) goto L31 (error at hexstr_to_bytes:41) else goto L3 + builtins = r4 :: module + dec_ref r4 L3: - r6 = cast(str, r5) - if is_error(r6) goto L31 (error at hexstr_to_bytes:41) else goto L4 + r5 = ('TYPE_CHECKING', 'Callable', 'Final', 'Tuple', 'Type', 'Union', 'overload') + r6 = 'typing' + r7 = faster_hexbytes.main.globals :: static + r8 = CPyImport_ImportFromMany(r6, r5, r5, r7) + if is_error(r8) goto L48 (error at :1) else goto L4 L4: - non_prefixed_hex = r6 - goto L6 + typing = r8 :: module + dec_ref r8 + r9 = load_address hexbytes.main :: module + r10 = [r9] + r11 = load_address r10 + r12 = [14] + r13 = load_address r12 + r14 = (('hexbytes.main', 'hexbytes.main', 'hexbytes'),) + r15 = faster_hexbytes.main.globals :: static + r16 = 'faster_hexbytes/main.py' + r17 = '' + r18 = CPyImport_ImportMany(r14, r11, r15, r16, r17, r13) + if not r18 goto L48 else goto L5 :: bool L5: - inc_ref hexstr - non_prefixed_hex = hexstr + r19 = ('mypyc_attr',) + r20 = 'mypy_extensions' + r21 = faster_hexbytes.main.globals :: static + r22 = CPyImport_ImportFromMany(r20, r19, r19, r21) + if is_error(r22) goto L48 (error at :15) else goto L6 L6: - r7 = CPyStr_Size_size_t(hexstr) - r8 = r7 >= 0 :: signed - if not r8 goto L32 (error at hexstr_to_bytes:46) else goto L7 :: bool + mypy_extensions = r22 :: module + dec_ref r22 + r23 = ('Self',) + r24 = 'typing_extensions' + r25 = faster_hexbytes.main.globals :: static + r26 = CPyImport_ImportFromMany(r24, r23, r23, r25) + if is_error(r26) goto L48 (error at :18) else goto L7 L7: - r9 = r7 << 1 - r10 = CPyTagged_Remainder(r9, 4) - if is_error(r10) goto L32 (error at hexstr_to_bytes:46) else goto L8 + typing_extensions = r26 :: module + dec_ref r26 + r27 = ('to_bytes',) + r28 = 'faster_hexbytes._utils' + r29 = faster_hexbytes.main.globals :: static + r30 = CPyImport_ImportFromMany(r28, r27, r27, r29) + if is_error(r30) goto L48 (error at :22) else goto L8 L8: - r11 = r10 != 0 - dec_ref r10 :: int - if r11 goto L9 else goto L11 :: bool + faster_hexbytes._utils = r30 :: module + dec_ref r30 + if 0 goto L9 else goto L9 :: bool L9: - r12 = '0' - r13 = PyUnicode_Concat(r12, non_prefixed_hex) - dec_ref non_prefixed_hex - if is_error(r13) goto L31 (error at hexstr_to_bytes:47) else goto L10 + r31 = faster_hexbytes.main.globals :: static + r32 = 'Union' + r33 = CPyDict_GetItem(r31, r32) + if is_error(r33) goto L48 (error at :31) else goto L10 L10: - padded_hex = r13 - goto L12 + r34 = load_address PyBytes_Type + r35 = load_address PyUnicode_Type + r36 = load_address PyBool_Type + r37 = builtins :: module + r38 = 'bytearray' + r39 = CPyObject_GetAttr(r37, r38) + if is_error(r39) goto L49 (error at :31) else goto L11 L11: - padded_hex = non_prefixed_hex + r40 = load_address PyLong_Type + r41 = builtins :: module + r42 = 'memoryview' + r43 = CPyObject_GetAttr(r41, r42) + if is_error(r43) goto L50 (error at :31) else goto L12 L12: - r14 = PyUnicode_AsASCIIString(padded_hex) - if is_error(r14) goto L14 (error at hexstr_to_bytes:52) else goto L33 + inc_ref r34 + inc_ref r35 + inc_ref r36 + inc_ref r40 + r44 = (r34, r35, r36, r39, r40, r43) + r45 = box(tuple[object, object, object, object, object, object], r44) + r46 = PyObject_GetItem(r33, r45) + dec_ref r33 + dec_ref r45 + if is_error(r46) goto L48 (error at :31) else goto L13 L13: - goto L25 + r47 = faster_hexbytes.main.globals :: static + r48 = 'BytesLike' + r49 = CPyDict_SetItem(r47, r48, r46) + dec_ref r46 + r50 = r49 >= 0 :: signed + if not r50 goto L48 (error at :31) else goto L14 :: bool L14: - r15 = CPy_CatchError() - r16 = builtins :: module - r17 = 'UnicodeDecodeError' - r18 = CPyObject_GetAttr(r16, r17) - if is_error(r18) goto L34 (error at hexstr_to_bytes:53) else goto L15 + r51 = load_address PyBytes_Type + r52 = '__new__' + r53 = CPyObject_GetAttr(r51, r52) + if is_error(r53) goto L48 (error at :33) else goto L15 L15: - r19 = CPy_ExceptionMatches(r18) - dec_ref r18 - if r19 goto L16 else goto L35 :: bool + faster_hexbytes.main._bytes_new = r53 :: static + r54 = faster_hexbytes.main.globals :: static + r55 = '_bytes_new' + r56 = CPyDict_SetItem(r54, r55, r53) + dec_ref r53 + r57 = r56 >= 0 :: signed + if not r57 goto L48 (error at :33) else goto L16 :: bool L16: - r20 = 'hex string ' - r21 = ' may only contain [0-9a-fA-F] characters' - r22 = CPyStr_Build(3, r20, padded_hex, r21) - dec_ref padded_hex - if is_error(r22) goto L23 (error at hexstr_to_bytes:55) else goto L17 + r58 = hexbytes.main :: module + r59 = 'HexBytes' + r60 = CPyObject_GetAttr(r58, r59) + if is_error(r60) goto L48 (error at :37) else goto L17 L17: - r23 = builtins :: module - r24 = 'ValueError' - r25 = CPyObject_GetAttr(r23, r24) - if is_error(r25) goto L36 (error at hexstr_to_bytes:54) else goto L18 + r61 = PyTuple_Pack(1, r60) + dec_ref r60 + if is_error(r61) goto L48 (error at :37) else goto L18 L18: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L36 (error at hexstr_to_bytes:54) else goto L19 + r62 = load_address PyType_Type + r63 = CPy_CalculateMetaclass(r62, r61) + if is_error(r63) goto L51 (error at :37) else goto L19 L19: - dec_ref r22 - CPy_Raise(r28) - dec_ref r28 - if not 0 goto L23 (error at hexstr_to_bytes:54) else goto L37 :: bool + r64 = '__prepare__' + r65 = PyObject_HasAttr(r63, r64) + if r65 goto L20 else goto L24 :: bool L20: - unreachable + r66 = 'HexBytes' + r67 = '__prepare__' + r68 = CPyObject_GetAttr(r63, r67) + if is_error(r68) goto L51 (error at :37) else goto L21 L21: - CPy_Reraise() - if not 0 goto L23 else goto L38 :: bool + r69 = [r66, r61] + r70 = load_address r69 + r71 = PyObject_Vectorcall(r68, r70, 2, 0) + dec_ref r68 + if is_error(r71) goto L51 (error at :37) else goto L22 L22: - unreachable + r72 = cast(dict, r71) + if is_error(r72) goto L51 (error at :37) else goto L23 L23: - CPy_RestoreExcInfo(r15) - dec_ref r15 - r29 = CPy_KeepPropagating() - if not r29 goto L31 else goto L24 :: bool + r73 = r72 + goto L26 L24: - unreachable + r74 = PyDict_New() + if is_error(r74) goto L51 (error at :37) else goto L25 L25: - r30 = faster_hexbytes._utils.unhexlify :: static - if is_error(r30) goto L39 else goto L28 + r73 = r74 L26: - r31 = raise NameError('value for final name "unhexlify" was not set') - if not r31 goto L31 (error at hexstr_to_bytes:58) else goto L27 :: bool + r75 = PyDict_New() + if is_error(r75) goto L52 (error at :37) else goto L27 L27: - unreachable + r76 = __new___HexBytes_obj() + if is_error(r76) goto L53 (error at :48) else goto L28 L28: - r32 = [r14] - r33 = load_address r32 - r34 = PyObject_Vectorcall(r30, r33, 1, 0) - if is_error(r34) goto L40 (error at hexstr_to_bytes:58) else goto L29 + r77 = builtins :: module + r78 = 'staticmethod' + r79 = CPyObject_GetAttr(r77, r78) + if is_error(r79) goto L54 (error at :48) else goto L29 L29: - dec_ref r14 - r35 = cast(bytes, r34) - if is_error(r35) goto L31 (error at hexstr_to_bytes:58) else goto L30 + r80 = [r76] + r81 = load_address r80 + r82 = PyObject_Vectorcall(r79, r81, 1, 0) + dec_ref r79 + if is_error(r82) goto L54 (error at :48) else goto L30 L30: - return r35 + dec_ref r76 + r83 = '__new__' + r84 = CPyDict_SetItem(r73, r83, r82) + dec_ref r82 + r85 = r84 >= 0 :: signed + if not r85 goto L53 (error at :48) else goto L31 :: bool L31: - r36 = :: bytes - return r36 + r86 = __getitem___HexBytes_obj() + if is_error(r86) goto L53 (error at :60) else goto L32 L32: - dec_ref non_prefixed_hex - goto L31 + r87 = '__getitem__' + r88 = CPyDict_SetItem(r73, r87, r86) + dec_ref r86 + r89 = r88 >= 0 :: signed + if not r89 goto L53 (error at :60) else goto L33 :: bool L33: - dec_ref padded_hex - goto L13 + r90 = __repr___HexBytes_obj() + if is_error(r90) goto L53 (error at :72) else goto L34 L34: - dec_ref padded_hex - goto L23 + r91 = '__repr__' + r92 = CPyDict_SetItem(r73, r91, r90) + dec_ref r90 + r93 = r92 >= 0 :: signed + if not r93 goto L53 (error at :72) else goto L35 :: bool L35: - dec_ref padded_hex - goto L21 + r94 = to_0x_hex_HexBytes_obj() + if is_error(r94) goto L53 (error at :75) else goto L36 L36: - dec_ref r22 - goto L23 + r95 = 'to_0x_hex' + r96 = CPyDict_SetItem(r73, r95, r94) + dec_ref r94 + r97 = r96 >= 0 :: signed + if not r97 goto L53 (error at :75) else goto L37 :: bool L37: - dec_ref r15 - goto L20 + r98 = __reduce___HexBytes_obj() + if is_error(r98) goto L53 (error at :81) else goto L38 L38: - dec_ref r15 - goto L22 + r99 = '__reduce__' + r100 = CPyDict_SetItem(r73, r99, r98) + dec_ref r98 + r101 = r100 >= 0 :: signed + if not r101 goto L53 (error at :81) else goto L39 :: bool L39: - dec_ref r14 - goto L26 + r102 = 'HexBytes' + r103 = '__annotations__' + r104 = CPyDict_SetItem(r73, r103, r75) + dec_ref r75 + r105 = r104 >= 0 :: signed + if not r105 goto L52 (error at :37) else goto L40 :: bool L40: - dec_ref r14 - goto L31 - -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4 :: object - r5 :: object_ptr - r6 :: object_ptr[1] - r7 :: c_ptr - r8 :: native_int[1] - r9 :: c_ptr - r10 :: object - r11 :: dict - r12, r13 :: str - r14 :: bit - r15 :: object - r16 :: str - r17 :: dict - r18, r19 :: object - r20 :: str - r21 :: object - r22 :: dict - r23 :: str - r24 :: i32 - r25 :: bit - r26 :: None -L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool -L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L8 (error at :-1) else goto L2 -L2: - builtins = r4 :: module - dec_ref r4 -L3: - r5 = load_address binascii :: module - r6 = [r5] - r7 = load_address r6 - r8 = [1] - r9 = load_address r8 - r10 = (('binascii', 'binascii', 'binascii'),) - r11 = faster_hexbytes._utils.globals :: static - r12 = 'faster_hexbytes/_utils.py' - r13 = '' - r14 = CPyImport_ImportMany(r10, r7, r11, r12, r13, r9) - if not r14 goto L8 else goto L4 :: bool -L4: - r15 = ('Final', 'Union') - r16 = 'typing' - r17 = faster_hexbytes._utils.globals :: static - r18 = CPyImport_ImportFromMany(r16, r15, r15, r17) - if is_error(r18) goto L8 (error at :2) else goto L5 -L5: - typing = r18 :: module - dec_ref r18 - r19 = binascii :: module - r20 = 'unhexlify' - r21 = CPyObject_GetAttr(r19, r20) - if is_error(r21) goto L8 (error at :8) else goto L6 -L6: - faster_hexbytes._utils.unhexlify = r21 :: static - r22 = faster_hexbytes._utils.globals :: static - r23 = 'unhexlify' - r24 = CPyDict_SetItem(r22, r23, r21) - dec_ref r21 - r25 = r24 >= 0 :: signed - if not r25 goto L8 (error at :8) else goto L7 :: bool -L7: + r106 = 'mypyc filler docstring' + r107 = '__doc__' + r108 = CPyDict_SetItem(r73, r107, r106) + r109 = r108 >= 0 :: signed + if not r109 goto L52 (error at :37) else goto L41 :: bool +L41: + r110 = 'faster_hexbytes.main' + r111 = '__module__' + r112 = CPyDict_SetItem(r73, r111, r110) + r113 = r112 >= 0 :: signed + if not r113 goto L52 (error at :37) else goto L42 :: bool +L42: + r114 = [r102, r61, r73] + r115 = load_address r114 + r116 = PyObject_Vectorcall(r63, r115, 3, 0) + if is_error(r116) goto L52 (error at :37) else goto L43 +L43: + dec_ref r73 + dec_ref r61 + r117 = faster_hexbytes.main.globals :: static + r118 = 'mypyc_attr' + r119 = CPyDict_GetItem(r117, r118) + if is_error(r119) goto L55 (error at :36) else goto L44 +L44: + r120 = box(bool, 0) + r121 = [r120] + r122 = load_address r121 + r123 = ('native_class',) + r124 = PyObject_Vectorcall(r119, r122, 0, r123) + dec_ref r119 + if is_error(r124) goto L55 (error at :36) else goto L45 +L45: + r125 = [r116] + r126 = load_address r125 + r127 = PyObject_Vectorcall(r124, r126, 1, 0) + dec_ref r124 + if is_error(r127) goto L55 (error at :37) else goto L46 +L46: + dec_ref r116 + faster_hexbytes.main.HexBytes = r127 :: type + r128 = faster_hexbytes.main.globals :: static + r129 = 'HexBytes' + r130 = PyDict_SetItem(r128, r129, r127) + dec_ref r127 + r131 = r130 >= 0 :: signed + if not r131 goto L48 (error at :37) else goto L47 :: bool +L47: + r132 = faster_hexbytes.main.HexBytes :: type return 1 -L8: - r26 = :: None - return r26 +L48: + r133 = :: None + return r133 +L49: + dec_ref r33 + goto L48 +L50: + dec_ref r33 + dec_ref r39 + goto L48 +L51: + dec_ref r61 + goto L48 +L52: + dec_ref r61 + dec_ref r73 + goto L48 +L53: + dec_ref r61 + dec_ref r73 + dec_ref r75 + goto L48 +L54: + dec_ref r61 + dec_ref r73 + dec_ref r75 + dec_ref r76 + goto L48 +L55: + dec_ref r116 + goto L48 def __top_level__(): r0, r1 :: object diff --git a/setup.py b/setup.py index 4df8ebe..a9fa6f0 100644 --- a/setup.py +++ b/setup.py @@ -62,7 +62,7 @@ url="https://github.com/ethereum/hexbytes", include_package_data=True, install_requires=[f"hexbytes=={version}"], - python_requires=">=3.8, <4", + python_requires=">=3.9, <4", extras_require=extras_require, py_modules=["faster_hexbytes"], license="MIT", diff --git a/tox.ini b/tox.ini index e8fd0a8..cfb884f 100644 --- a/tox.ini +++ b/tox.ini @@ -1,8 +1,8 @@ [tox] envlist= - py{38,39,310,311,312,313}-core - py{38,39,310,311,312,313}-lint - py{38,39,310,311,312,313}-wheel + py{39,310,311,312,313,314}-core + py{39,310,311,312,313,314}-lint + py{39,310,311,312,313,314}-wheel windows-wheel docs @@ -23,25 +23,25 @@ commands= basepython= docs: python windows-wheel: python - py38: python3.8 py39: python3.9 py310: python3.10 py311: python3.11 py312: python3.12 py313: python3.13 + py314: python3.14 extras= test docs allowlist_externals=make,pre-commit -[testenv:py{38,39,310,311,312,313}-lint] +[testenv:py{39,310,311,312,313,314}-lint] deps=pre-commit extras=dev commands= pre-commit install pre-commit run --all-files --show-diff-on-failure -[testenv:py{38,39,310,311,312,313}-wheel] +[testenv:py{39,310,311,312,313,314}-wheel] deps= wheel build[virtualenv] From cc1314f9414dc824a68ce9faeec1972b8c57a283 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 30 Sep 2025 09:25:40 +0000 Subject: [PATCH 48/98] chore: compile C files for source control --- build/ops.txt | 2290 ++++++++++++++++++++++++------------------------- 1 file changed, 1145 insertions(+), 1145 deletions(-) diff --git a/build/ops.txt b/build/ops.txt index d40a5c1..936de4d 100644 --- a/build/ops.txt +++ b/build/ops.txt @@ -1,641 +1,323 @@ -def to_bytes(val): - val :: union[bytes, str, object, bool, int] - r0 :: bit - r1 :: bytes - r2 :: bit - r3 :: str - r4 :: bytes - r5 :: bit - r6 :: object - r7 :: object[1] - r8 :: object_ptr - r9 :: object - r10 :: bytes +def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def __new___HexBytes_obj.__call__(__mypyc_self__, cls, val): + __mypyc_self__ :: faster_hexbytes.main.__new___HexBytes_obj + cls :: object + val :: union[bytes, str, bool, object, int] + r0 :: bytes + r1 :: object + r2 :: bool + r3 :: object[2] + r4 :: object_ptr + r5 :: object + r6, r7 :: faster_hexbytes.main.HexBytes +L0: + r0 = to_bytes(val) + if is_error(r0) goto L7 (error at __new__:49) else goto L1 +L1: + r1 = faster_hexbytes.main._bytes_new :: static + if is_error(r1) goto L8 else goto L4 +L2: + r2 = raise NameError('value for final name "_bytes_new" was not set') + if not r2 goto L7 (error at __new__:50) else goto L3 :: bool +L3: + unreachable +L4: + r3 = [cls, r0] + r4 = load_address r3 + r5 = PyObject_Vectorcall(r1, r4, 2, 0) + if is_error(r5) goto L9 (error at __new__:50) else goto L5 +L5: + dec_ref r0 + r6 = cast(faster_hexbytes.main.HexBytes, r5) + if is_error(r6) goto L7 (error at __new__:50) else goto L6 +L6: + return r6 +L7: + r7 = :: faster_hexbytes.main.HexBytes + return r7 +L8: + dec_ref r0 + goto L2 +L9: + dec_ref r0 + goto L7 + +def __getitem___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def __getitem___HexBytes_obj.__call__(__mypyc_self__, self, key): + __mypyc_self__ :: faster_hexbytes.main.__getitem___HexBytes_obj + self :: faster_hexbytes.main.HexBytes + key, r0 :: object + r1 :: str + r2 :: object[3] + r3 :: object_ptr + r4 :: object + r5 :: union[int, bytes] + r6 :: bit + r7 :: int + r8, r9, r10 :: object r11 :: bit - r12 :: bool - r13, r14, r15 :: bytes - r16 :: bit - r17 :: int - r18 :: native_int - r19 :: bit - r20 :: native_int - r21, r22 :: bit - r23 :: bool - r24 :: bit - r25 :: str - r26 :: int - r27, r28, r29 :: str - r30 :: object - r31 :: str - r32 :: object - r33 :: object[1] - r34 :: object_ptr - r35 :: object - r36 :: int - r37 :: object - r38 :: str - r39, r40 :: object - r41 :: object[1] - r42 :: object_ptr - r43 :: object - r44 :: str - r45 :: bytes - r46 :: object - r47 :: str - r48 :: object - r49 :: i32 - r50 :: bit - r51 :: bool - r52 :: object - r53 :: object[1] - r54 :: object_ptr - r55 :: object - r56 :: bytes - r57, r58, r59, r60, r61 :: str - r62 :: object[3] - r63 :: object_ptr - r64 :: object - r65, r66 :: str - r67 :: object - r68, r69 :: str - r70 :: object[3] - r71 :: object_ptr - r72 :: object - r73 :: str - r74 :: list - r75, r76, r77, r78, r79, r80 :: ptr - r81 :: str - r82 :: object - r83 :: str - r84 :: object - r85 :: object[1] - r86 :: object_ptr - r87 :: object - r88 :: bytes + r12 :: bytes + r13 :: object + r14 :: object[1] + r15 :: object_ptr + r16 :: object + r17 :: faster_hexbytes.main.HexBytes + r18 :: bytes + r19 :: object[1] + r20 :: object_ptr + r21 :: object + r22 :: faster_hexbytes.main.HexBytes + r23 :: union[int, faster_hexbytes.main.HexBytes] L0: - r0 = PyBytes_Check(val) - if r0 goto L1 else goto L3 :: bool + r0 = load_address PyBytes_Type + r1 = '__getitem__' + r2 = [r0, self, key] + r3 = load_address r2 + r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775811, 0) + if is_error(r4) goto L14 (error at __getitem__:63) else goto L1 L1: - inc_ref val - r1 = cast(bytes, val) - if is_error(r1) goto L51 (error at to_bytes:19) else goto L2 + r5 = cast(union[int, bytes], r4) + if is_error(r5) goto L14 (error at __getitem__:63) else goto L2 L2: - return r1 + r6 = PyLong_Check(r5) + if r6 goto L3 else goto L5 :: bool L3: - r2 = PyUnicode_Check(val) - if r2 goto L4 else goto L7 :: bool + r7 = unbox(int, r5) + dec_ref r5 + if is_error(r7) goto L14 (error at __getitem__:65) else goto L4 L4: - inc_ref val - r3 = cast(str, val) - if is_error(r3) goto L51 (error at to_bytes:21) else goto L5 + r8 = box(int, r7) + return r8 L5: - r4 = hexstr_to_bytes(r3) - dec_ref r3 - if is_error(r4) goto L51 (error at to_bytes:21) else goto L6 + r9 = CPy_TYPE(self) + r10 = faster_hexbytes.main.HexBytes :: type + r11 = r9 == r10 + if r11 goto L15 else goto L10 :: bool L6: - return r4 + r12 = cast(bytes, r5) + if is_error(r12) goto L14 (error at __getitem__:69) else goto L7 L7: - r5 = PyByteArray_Check(val) - if r5 goto L8 else goto L11 :: bool + r13 = faster_hexbytes.main.HexBytes :: type + r14 = [r12] + r15 = load_address r14 + r16 = PyObject_Vectorcall(r13, r15, 1, 0) + if is_error(r16) goto L16 (error at __getitem__:69) else goto L8 L8: - r6 = load_address PyBytes_Type - r7 = [val] - r8 = load_address r7 - r9 = PyObject_Vectorcall(r6, r8, 1, 0) - if is_error(r9) goto L51 (error at to_bytes:23) else goto L9 + dec_ref r12 + r17 = cast(faster_hexbytes.main.HexBytes, r16) + if is_error(r17) goto L14 (error at __getitem__:69) else goto L9 L9: - r10 = cast(bytes, r9) - if is_error(r10) goto L51 (error at to_bytes:23) else goto L10 + return r17 L10: - return r10 + r18 = cast(bytes, r5) + if is_error(r18) goto L17 (error at __getitem__:70) else goto L11 L11: - r11 = PyBool_Check(val) - if r11 goto L12 else goto L17 :: bool + r19 = [r18] + r20 = load_address r19 + r21 = PyObject_Vectorcall(r9, r20, 1, 0) + dec_ref r9 + if is_error(r21) goto L18 (error at __getitem__:70) else goto L12 L12: - r12 = unbox(bool, val) - if is_error(r12) goto L51 (error at to_bytes:25) else goto L13 + dec_ref r18 + r22 = cast(faster_hexbytes.main.HexBytes, r21) + if is_error(r22) goto L14 (error at __getitem__:70) else goto L13 L13: - if r12 goto L14 else goto L15 :: bool + return r22 L14: - r13 = b'\x01' - inc_ref r13 - r14 = r13 - goto L16 -L15: - r15 = b'\x00' - inc_ref r15 - r14 = r15 + r23 = :: union[int, faster_hexbytes.main.HexBytes] + return r23 +L15: + dec_ref r9 + goto L6 L16: - return r14 + dec_ref r12 + goto L14 L17: - r16 = PyLong_Check(val) - if r16 goto L18 else goto L37 :: bool + dec_ref r9 + goto L14 L18: - r17 = unbox(int, val) - if is_error(r17) goto L51 (error at to_bytes:29) else goto L19 -L19: - r18 = r17 & 1 - r19 = r18 != 0 - if r19 goto L21 else goto L20 :: bool -L20: - r20 = 0 & 1 - r21 = r20 != 0 - if r21 goto L21 else goto L22 :: bool -L21: - r22 = CPyTagged_IsLt_(r17, 0) - r23 = r22 - goto L23 -L22: - r24 = r17 < 0 :: signed - r23 = r24 -L23: - dec_ref r17 :: int - if r23 goto L24 else goto L31 :: bool -L24: - r25 = 'Cannot convert negative integer ' - r26 = unbox(int, val) - if is_error(r26) goto L51 (error at to_bytes:30) else goto L25 -L25: - r27 = CPyTagged_Str(r26) - dec_ref r26 :: int - if is_error(r27) goto L51 (error at to_bytes:30) else goto L26 -L26: - r28 = ' to bytes' - r29 = CPyStr_Build(3, r25, r27, r28) - dec_ref r27 - if is_error(r29) goto L51 (error at to_bytes:30) else goto L27 -L27: - r30 = builtins :: module - r31 = 'ValueError' - r32 = CPyObject_GetAttr(r30, r31) - if is_error(r32) goto L52 (error at to_bytes:30) else goto L28 -L28: - r33 = [r29] - r34 = load_address r33 - r35 = PyObject_Vectorcall(r32, r34, 1, 0) - dec_ref r32 - if is_error(r35) goto L52 (error at to_bytes:30) else goto L29 -L29: - dec_ref r29 - CPy_Raise(r35) - dec_ref r35 - if not 0 goto L51 (error at to_bytes:30) else goto L30 :: bool -L30: - unreachable -L31: - r36 = unbox(int, val) - if is_error(r36) goto L51 (error at to_bytes:32) else goto L32 -L32: - r37 = builtins :: module - r38 = 'hex' - r39 = CPyObject_GetAttr(r37, r38) - if is_error(r39) goto L53 (error at to_bytes:32) else goto L33 -L33: - r40 = box(int, r36) - r41 = [r40] - r42 = load_address r41 - r43 = PyObject_Vectorcall(r39, r42, 1, 0) - dec_ref r39 - if is_error(r43) goto L54 (error at to_bytes:32) else goto L34 -L34: - dec_ref r40 - r44 = cast(str, r43) - if is_error(r44) goto L51 (error at to_bytes:32) else goto L35 -L35: - r45 = to_bytes(r44) - dec_ref r44 - if is_error(r45) goto L51 (error at to_bytes:32) else goto L36 -L36: - return r45 -L37: - r46 = builtins :: module - r47 = 'memoryview' - r48 = CPyObject_GetAttr(r46, r47) - if is_error(r48) goto L51 (error at to_bytes:33) else goto L38 -L38: - r49 = PyObject_IsInstance(val, r48) - dec_ref r48 - r50 = r49 >= 0 :: signed - if not r50 goto L51 (error at to_bytes:33) else goto L39 :: bool -L39: - r51 = truncate r49: i32 to builtins.bool - if r51 goto L40 else goto L43 :: bool -L40: - r52 = load_address PyBytes_Type - r53 = [val] - r54 = load_address r53 - r55 = PyObject_Vectorcall(r52, r54, 1, 0) - if is_error(r55) goto L51 (error at to_bytes:34) else goto L41 -L41: - r56 = cast(bytes, r55) - if is_error(r56) goto L51 (error at to_bytes:34) else goto L42 -L42: - return r56 -L43: - r57 = '' - r58 = 'Cannot convert ' - r59 = '{!r:{}}' - r60 = '' - r61 = 'format' - r62 = [r59, val, r60] - r63 = load_address r62 - r64 = PyObject_VectorcallMethod(r61, r63, 9223372036854775811, 0) - if is_error(r64) goto L51 (error at to_bytes:36) else goto L44 -L44: - r65 = ' of type ' - r66 = '{:{}}' - r67 = CPy_TYPE(val) - r68 = '' - r69 = 'format' - r70 = [r66, r67, r68] - r71 = load_address r70 - r72 = PyObject_VectorcallMethod(r69, r71, 9223372036854775811, 0) - if is_error(r72) goto L55 (error at to_bytes:36) else goto L45 -L45: - dec_ref r67 - r73 = ' to bytes' - r74 = PyList_New(5) - if is_error(r74) goto L56 (error at to_bytes:36) else goto L46 -L46: - r75 = get_element_ptr r74 ob_item :: PyListObject - r76 = load_mem r75 :: ptr* - inc_ref r58 - set_mem r76, r58 :: builtins.object* - r77 = r76 + 8 - set_mem r77, r64 :: builtins.object* - inc_ref r65 - r78 = r76 + 16 - set_mem r78, r65 :: builtins.object* - r79 = r76 + 24 - set_mem r79, r72 :: builtins.object* - inc_ref r73 - r80 = r76 + 32 - set_mem r80, r73 :: builtins.object* - r81 = PyUnicode_Join(r57, r74) - dec_ref r74 - if is_error(r81) goto L51 (error at to_bytes:36) else goto L47 -L47: - r82 = builtins :: module - r83 = 'TypeError' - r84 = CPyObject_GetAttr(r82, r83) - if is_error(r84) goto L57 (error at to_bytes:36) else goto L48 -L48: - r85 = [r81] - r86 = load_address r85 - r87 = PyObject_Vectorcall(r84, r86, 1, 0) - dec_ref r84 - if is_error(r87) goto L57 (error at to_bytes:36) else goto L49 -L49: - dec_ref r81 - CPy_Raise(r87) - dec_ref r87 - if not 0 goto L51 (error at to_bytes:36) else goto L50 :: bool -L50: - unreachable -L51: - r88 = :: bytes - return r88 -L52: - dec_ref r29 - goto L51 -L53: - dec_ref r36 :: int - goto L51 -L54: - dec_ref r40 - goto L51 -L55: - dec_ref r64 - dec_ref r67 - goto L51 -L56: - dec_ref r64 - dec_ref r72 - goto L51 -L57: - dec_ref r81 - goto L51 + dec_ref r18 + goto L14 -def hexstr_to_bytes(hexstr): - hexstr, r0, r1 :: str - r2 :: tuple[str, str] - r3 :: object - r4 :: bool - r5 :: object - r6, non_prefixed_hex :: str - r7 :: native_int - r8 :: bit - r9 :: short_int - r10 :: int - r11 :: bit - r12, r13, padded_hex :: str - r14 :: bytes - r15 :: tuple[object, object, object] - r16 :: object - r17 :: str - r18 :: object - r19 :: bit - r20, r21, r22 :: str - r23 :: object - r24 :: str - r25 :: object - r26 :: object[1] - r27 :: object_ptr - r28 :: object - r29 :: bit - r30 :: object - r31 :: bool - r32 :: object[1] - r33 :: object_ptr - r34 :: object - r35, r36 :: bytes +def __repr___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object L0: - r0 = '0x' - r1 = '0X' - inc_ref r0 - inc_ref r1 - r2 = (r0, r1) - r3 = box(tuple[str, str], r2) - r4 = CPyStr_Startswith(hexstr, r3) - dec_ref r3 - if is_error(r4) goto L31 (error at hexstr_to_bytes:40) else goto L1 + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool L1: - if r4 goto L2 else goto L5 :: bool + inc_ref __mypyc_self__ + return __mypyc_self__ L2: - r5 = CPyStr_GetSlice(hexstr, 4, 9223372036854775806) - if is_error(r5) goto L31 (error at hexstr_to_bytes:41) else goto L3 -L3: - r6 = cast(str, r5) - if is_error(r6) goto L31 (error at hexstr_to_bytes:41) else goto L4 + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 L4: - non_prefixed_hex = r6 - goto L6 + r3 = :: object + return r3 + +def __repr___HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.__repr___HexBytes_obj + self :: faster_hexbytes.main.HexBytes + r0, r1, r2, r3, r4 :: str + r5 :: object[1] + r6 :: object_ptr + r7 :: object + r8, r9, r10, r11 :: str + r12 :: object[3] + r13 :: object_ptr + r14 :: object + r15, r16 :: str + r17 :: list + r18, r19, r20, r21 :: ptr + r22, r23 :: str +L0: + r0 = '' + r1 = 'HexBytes(' + r2 = '{!r:{}}' + r3 = '0x' + r4 = 'hex' + r5 = [self] + r6 = load_address r5 + r7 = PyObject_VectorcallMethod(r4, r6, 9223372036854775809, 0) + if is_error(r7) goto L8 (error at __repr__:73) else goto L1 +L1: + r8 = cast(str, r7) + if is_error(r8) goto L8 (error at __repr__:73) else goto L2 +L2: + r9 = PyUnicode_Concat(r3, r8) + dec_ref r8 + if is_error(r9) goto L8 (error at __repr__:73) else goto L3 +L3: + r10 = '' + r11 = 'format' + r12 = [r2, r9, r10] + r13 = load_address r12 + r14 = PyObject_VectorcallMethod(r11, r13, 9223372036854775811, 0) + if is_error(r14) goto L9 (error at __repr__:73) else goto L4 +L4: + dec_ref r9 + r15 = cast(str, r14) + if is_error(r15) goto L8 (error at __repr__:73) else goto L5 L5: - inc_ref hexstr - non_prefixed_hex = hexstr + r16 = ')' + r17 = PyList_New(3) + if is_error(r17) goto L10 (error at __repr__:73) else goto L6 L6: - r7 = CPyStr_Size_size_t(hexstr) - r8 = r7 >= 0 :: signed - if not r8 goto L32 (error at hexstr_to_bytes:46) else goto L7 :: bool + r18 = get_element_ptr r17 ob_item :: PyListObject + r19 = load_mem r18 :: ptr* + inc_ref r1 + set_mem r19, r1 :: builtins.object* + r20 = r19 + 8 + set_mem r20, r15 :: builtins.object* + inc_ref r16 + r21 = r19 + 16 + set_mem r21, r16 :: builtins.object* + r22 = PyUnicode_Join(r0, r17) + dec_ref r17 + if is_error(r22) goto L8 (error at __repr__:73) else goto L7 L7: - r9 = r7 << 1 - r10 = CPyTagged_Remainder(r9, 4) - if is_error(r10) goto L32 (error at hexstr_to_bytes:46) else goto L8 + return r22 L8: - r11 = r10 != 0 - dec_ref r10 :: int - if r11 goto L9 else goto L11 :: bool + r23 = :: str + return r23 L9: - r12 = '0' - r13 = PyUnicode_Concat(r12, non_prefixed_hex) - dec_ref non_prefixed_hex - if is_error(r13) goto L31 (error at hexstr_to_bytes:47) else goto L10 + dec_ref r9 + goto L8 L10: - padded_hex = r13 - goto L12 -L11: - padded_hex = non_prefixed_hex -L12: - r14 = PyUnicode_AsASCIIString(padded_hex) - if is_error(r14) goto L14 (error at hexstr_to_bytes:52) else goto L33 -L13: - goto L25 -L14: - r15 = CPy_CatchError() - r16 = builtins :: module - r17 = 'UnicodeDecodeError' - r18 = CPyObject_GetAttr(r16, r17) - if is_error(r18) goto L34 (error at hexstr_to_bytes:53) else goto L15 -L15: - r19 = CPy_ExceptionMatches(r18) - dec_ref r18 - if r19 goto L16 else goto L35 :: bool -L16: - r20 = 'hex string ' - r21 = ' may only contain [0-9a-fA-F] characters' - r22 = CPyStr_Build(3, r20, padded_hex, r21) - dec_ref padded_hex - if is_error(r22) goto L23 (error at hexstr_to_bytes:55) else goto L17 -L17: - r23 = builtins :: module - r24 = 'ValueError' - r25 = CPyObject_GetAttr(r23, r24) - if is_error(r25) goto L36 (error at hexstr_to_bytes:54) else goto L18 -L18: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L36 (error at hexstr_to_bytes:54) else goto L19 -L19: - dec_ref r22 - CPy_Raise(r28) - dec_ref r28 - if not 0 goto L23 (error at hexstr_to_bytes:54) else goto L37 :: bool -L20: - unreachable -L21: - CPy_Reraise() - if not 0 goto L23 else goto L38 :: bool -L22: - unreachable -L23: - CPy_RestoreExcInfo(r15) - dec_ref r15 - r29 = CPy_KeepPropagating() - if not r29 goto L31 else goto L24 :: bool -L24: - unreachable -L25: - r30 = faster_hexbytes._utils.unhexlify :: static - if is_error(r30) goto L39 else goto L28 -L26: - r31 = raise NameError('value for final name "unhexlify" was not set') - if not r31 goto L31 (error at hexstr_to_bytes:58) else goto L27 :: bool -L27: - unreachable -L28: - r32 = [r14] - r33 = load_address r32 - r34 = PyObject_Vectorcall(r30, r33, 1, 0) - if is_error(r34) goto L40 (error at hexstr_to_bytes:58) else goto L29 -L29: - dec_ref r14 - r35 = cast(bytes, r34) - if is_error(r35) goto L31 (error at hexstr_to_bytes:58) else goto L30 -L30: - return r35 -L31: - r36 = :: bytes - return r36 -L32: - dec_ref non_prefixed_hex - goto L31 -L33: - dec_ref padded_hex - goto L13 -L34: - dec_ref padded_hex - goto L23 -L35: - dec_ref padded_hex - goto L21 -L36: - dec_ref r22 - goto L23 -L37: - dec_ref r15 - goto L20 -L38: dec_ref r15 - goto L22 -L39: - dec_ref r14 - goto L26 -L40: - dec_ref r14 - goto L31 + goto L8 -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4 :: object - r5 :: object_ptr - r6 :: object_ptr[1] - r7 :: c_ptr - r8 :: native_int[1] - r9 :: c_ptr - r10 :: object - r11 :: dict - r12, r13 :: str - r14 :: bit - r15 :: object - r16 :: str - r17 :: dict - r18, r19 :: object - r20 :: str - r21 :: object - r22 :: dict - r23 :: str - r24 :: i32 - r25 :: bit - r26 :: None +def to_0x_hex_HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L8 (error at :-1) else goto L2 + inc_ref __mypyc_self__ + return __mypyc_self__ L2: - builtins = r4 :: module - dec_ref r4 + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 L3: - r5 = load_address binascii :: module - r6 = [r5] - r7 = load_address r6 - r8 = [1] - r9 = load_address r8 - r10 = (('binascii', 'binascii', 'binascii'),) - r11 = faster_hexbytes._utils.globals :: static - r12 = 'faster_hexbytes/_utils.py' - r13 = '' - r14 = CPyImport_ImportMany(r10, r7, r11, r12, r13, r9) - if not r14 goto L8 else goto L4 :: bool -L4: - r15 = ('Final', 'Union') - r16 = 'typing' - r17 = faster_hexbytes._utils.globals :: static - r18 = CPyImport_ImportFromMany(r16, r15, r15, r17) - if is_error(r18) goto L8 (error at :2) else goto L5 -L5: - typing = r18 :: module - dec_ref r18 - r19 = binascii :: module - r20 = 'unhexlify' - r21 = CPyObject_GetAttr(r19, r20) - if is_error(r21) goto L8 (error at :8) else goto L6 -L6: - faster_hexbytes._utils.unhexlify = r21 :: static - r22 = faster_hexbytes._utils.globals :: static - r23 = 'unhexlify' - r24 = CPyDict_SetItem(r22, r23, r21) - dec_ref r21 - r25 = r24 >= 0 :: signed - if not r25 goto L8 (error at :8) else goto L7 :: bool -L7: - return 1 -L8: - r26 = :: None - return r26 - -def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 + return r2 L4: r3 = :: object return r3 -def __new___HexBytes_obj.__call__(__mypyc_self__, cls, val): - __mypyc_self__ :: faster_hexbytes.main.__new___HexBytes_obj - cls :: object - val :: union[bytes, str, bool, object, int] - r0 :: bytes - r1 :: object - r2 :: bool - r3 :: object[2] - r4 :: object_ptr - r5 :: object - r6, r7 :: faster_hexbytes.main.HexBytes +def to_0x_hex_HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.to_0x_hex_HexBytes_obj + self :: faster_hexbytes.main.HexBytes + r0, r1 :: str + r2 :: object[1] + r3 :: object_ptr + r4 :: object + r5, r6, r7 :: str L0: - r0 = to_bytes(val) - if is_error(r0) goto L7 (error at __new__:49) else goto L1 + r0 = '0x' + r1 = 'hex' + r2 = [self] + r3 = load_address r2 + r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775809, 0) + if is_error(r4) goto L4 (error at to_0x_hex:79) else goto L1 L1: - r1 = faster_hexbytes.main._bytes_new :: static - if is_error(r1) goto L8 else goto L4 + r5 = cast(str, r4) + if is_error(r5) goto L4 (error at to_0x_hex:79) else goto L2 L2: - r2 = raise NameError('value for final name "_bytes_new" was not set') - if not r2 goto L7 (error at __new__:50) else goto L3 :: bool + r6 = CPyStr_Build(2, r0, r5) + dec_ref r5 + if is_error(r6) goto L4 (error at to_0x_hex:79) else goto L3 L3: - unreachable -L4: - r3 = [cls, r0] - r4 = load_address r3 - r5 = PyObject_Vectorcall(r1, r4, 2, 0) - if is_error(r5) goto L9 (error at __new__:50) else goto L5 -L5: - dec_ref r0 - r6 = cast(faster_hexbytes.main.HexBytes, r5) - if is_error(r6) goto L7 (error at __new__:50) else goto L6 -L6: return r6 -L7: - r7 = :: faster_hexbytes.main.HexBytes +L4: + r7 = :: str return r7 -L8: - dec_ref r0 - goto L2 -L9: - dec_ref r0 - goto L7 -def __getitem___HexBytes_obj.__get__(__mypyc_self__, instance, owner): +def __reduce___HexBytes_obj.__get__(__mypyc_self__, instance, owner): __mypyc_self__, instance, owner, r0 :: object r1 :: bit r2, r3 :: object @@ -655,317 +337,61 @@ L4: r3 = :: object return r3 -def __getitem___HexBytes_obj.__call__(__mypyc_self__, self, key): - __mypyc_self__ :: faster_hexbytes.main.__getitem___HexBytes_obj +def __reduce___HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.__reduce___HexBytes_obj self :: faster_hexbytes.main.HexBytes - key, r0 :: object - r1 :: str - r2 :: object[3] - r3 :: object_ptr - r4 :: object - r5 :: union[int, bytes] - r6 :: bit - r7 :: int - r8, r9, r10 :: object - r11 :: bit - r12 :: bytes - r13 :: object - r14 :: object[1] - r15 :: object_ptr - r16 :: object - r17 :: faster_hexbytes.main.HexBytes - r18 :: bytes - r19 :: object[1] - r20 :: object_ptr - r21 :: object - r22 :: faster_hexbytes.main.HexBytes - r23 :: union[int, faster_hexbytes.main.HexBytes] + r0 :: object + r1 :: bool + r2, r3 :: object + r4 :: object[1] + r5 :: object_ptr + r6 :: object + r7 :: bytes + r8 :: tuple[object, bytes] + r9, r10 :: tuple[object, tuple[object, bytes]] L0: - r0 = load_address PyBytes_Type - r1 = '__getitem__' - r2 = [r0, self, key] - r3 = load_address r2 - r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775811, 0) - if is_error(r4) goto L14 (error at __getitem__:63) else goto L1 + r0 = faster_hexbytes.main._bytes_new :: static + if is_error(r0) goto L1 else goto L3 L1: - r5 = cast(union[int, bytes], r4) - if is_error(r5) goto L14 (error at __getitem__:63) else goto L2 + r1 = raise NameError('value for final name "_bytes_new" was not set') + if not r1 goto L6 (error at __reduce__:89) else goto L2 :: bool L2: - r6 = PyLong_Check(r5) - if r6 goto L3 else goto L5 :: bool + unreachable L3: - r7 = unbox(int, r5) - dec_ref r5 - if is_error(r7) goto L14 (error at __getitem__:65) else goto L4 + r2 = CPy_TYPE(self) + r3 = load_address PyBytes_Type + r4 = [self] + r5 = load_address r4 + r6 = PyObject_Vectorcall(r3, r5, 1, 0) + if is_error(r6) goto L7 (error at __reduce__:89) else goto L4 L4: - r8 = box(int, r7) - return r8 + r7 = cast(bytes, r6) + if is_error(r7) goto L7 (error at __reduce__:89) else goto L5 L5: - r9 = CPy_TYPE(self) - r10 = faster_hexbytes.main.HexBytes :: type - r11 = r9 == r10 - if r11 goto L15 else goto L10 :: bool + r8 = (r2, r7) + inc_ref r0 + r9 = (r0, r8) + return r9 L6: - r12 = cast(bytes, r5) - if is_error(r12) goto L14 (error at __getitem__:69) else goto L7 + r10 = :: tuple[object, tuple[object, bytes]] + return r10 L7: - r13 = faster_hexbytes.main.HexBytes :: type - r14 = [r12] - r15 = load_address r14 - r16 = PyObject_Vectorcall(r13, r15, 1, 0) - if is_error(r16) goto L16 (error at __getitem__:69) else goto L8 -L8: - dec_ref r12 - r17 = cast(faster_hexbytes.main.HexBytes, r16) - if is_error(r17) goto L14 (error at __getitem__:69) else goto L9 -L9: - return r17 -L10: - r18 = cast(bytes, r5) - if is_error(r18) goto L17 (error at __getitem__:70) else goto L11 -L11: - r19 = [r18] - r20 = load_address r19 - r21 = PyObject_Vectorcall(r9, r20, 1, 0) - dec_ref r9 - if is_error(r21) goto L18 (error at __getitem__:70) else goto L12 -L12: - dec_ref r18 - r22 = cast(faster_hexbytes.main.HexBytes, r21) - if is_error(r22) goto L14 (error at __getitem__:70) else goto L13 -L13: - return r22 -L14: - r23 = :: union[int, faster_hexbytes.main.HexBytes] - return r23 -L15: - dec_ref r9 + dec_ref r2 goto L6 -L16: - dec_ref r12 - goto L14 -L17: - dec_ref r9 - goto L14 -L18: - dec_ref r18 - goto L14 - -def __repr___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 -def __repr___HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.__repr___HexBytes_obj - self :: faster_hexbytes.main.HexBytes - r0, r1, r2, r3, r4 :: str - r5 :: object[1] - r6 :: object_ptr - r7 :: object - r8, r9, r10, r11 :: str - r12 :: object[3] - r13 :: object_ptr - r14 :: object - r15, r16 :: str - r17 :: list - r18, r19, r20, r21 :: ptr - r22, r23 :: str -L0: - r0 = '' - r1 = 'HexBytes(' - r2 = '{!r:{}}' - r3 = '0x' - r4 = 'hex' - r5 = [self] - r6 = load_address r5 - r7 = PyObject_VectorcallMethod(r4, r6, 9223372036854775809, 0) - if is_error(r7) goto L8 (error at __repr__:73) else goto L1 -L1: - r8 = cast(str, r7) - if is_error(r8) goto L8 (error at __repr__:73) else goto L2 -L2: - r9 = PyUnicode_Concat(r3, r8) - dec_ref r8 - if is_error(r9) goto L8 (error at __repr__:73) else goto L3 -L3: - r10 = '' - r11 = 'format' - r12 = [r2, r9, r10] - r13 = load_address r12 - r14 = PyObject_VectorcallMethod(r11, r13, 9223372036854775811, 0) - if is_error(r14) goto L9 (error at __repr__:73) else goto L4 -L4: - dec_ref r9 - r15 = cast(str, r14) - if is_error(r15) goto L8 (error at __repr__:73) else goto L5 -L5: - r16 = ')' - r17 = PyList_New(3) - if is_error(r17) goto L10 (error at __repr__:73) else goto L6 -L6: - r18 = get_element_ptr r17 ob_item :: PyListObject - r19 = load_mem r18 :: ptr* - inc_ref r1 - set_mem r19, r1 :: builtins.object* - r20 = r19 + 8 - set_mem r20, r15 :: builtins.object* - inc_ref r16 - r21 = r19 + 16 - set_mem r21, r16 :: builtins.object* - r22 = PyUnicode_Join(r0, r17) - dec_ref r17 - if is_error(r22) goto L8 (error at __repr__:73) else goto L7 -L7: - return r22 -L8: - r23 = :: str - return r23 -L9: - dec_ref r9 - goto L8 -L10: - dec_ref r15 - goto L8 - -def to_0x_hex_HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def to_0x_hex_HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.to_0x_hex_HexBytes_obj - self :: faster_hexbytes.main.HexBytes - r0, r1 :: str - r2 :: object[1] - r3 :: object_ptr - r4 :: object - r5, r6, r7 :: str -L0: - r0 = '0x' - r1 = 'hex' - r2 = [self] - r3 = load_address r2 - r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775809, 0) - if is_error(r4) goto L4 (error at to_0x_hex:79) else goto L1 -L1: - r5 = cast(str, r4) - if is_error(r5) goto L4 (error at to_0x_hex:79) else goto L2 -L2: - r6 = CPyStr_Build(2, r0, r5) - dec_ref r5 - if is_error(r6) goto L4 (error at to_0x_hex:79) else goto L3 -L3: - return r6 -L4: - r7 = :: str - return r7 - -def __reduce___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __reduce___HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.__reduce___HexBytes_obj - self :: faster_hexbytes.main.HexBytes - r0 :: object - r1 :: bool - r2, r3 :: object - r4 :: object[1] - r5 :: object_ptr - r6 :: object - r7 :: bytes - r8 :: tuple[object, bytes] - r9, r10 :: tuple[object, tuple[object, bytes]] -L0: - r0 = faster_hexbytes.main._bytes_new :: static - if is_error(r0) goto L1 else goto L3 -L1: - r1 = raise NameError('value for final name "_bytes_new" was not set') - if not r1 goto L6 (error at __reduce__:89) else goto L2 :: bool -L2: - unreachable -L3: - r2 = CPy_TYPE(self) - r3 = load_address PyBytes_Type - r4 = [self] - r5 = load_address r4 - r6 = PyObject_Vectorcall(r3, r5, 1, 0) - if is_error(r6) goto L7 (error at __reduce__:89) else goto L4 -L4: - r7 = cast(bytes, r6) - if is_error(r7) goto L7 (error at __reduce__:89) else goto L5 -L5: - r8 = (r2, r7) - inc_ref r0 - r9 = (r0, r8) - return r9 -L6: - r10 = :: tuple[object, tuple[object, bytes]] - return r10 -L7: - dec_ref r2 - goto L6 - -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4, r5 :: object - r6 :: str - r7 :: dict - r8 :: object - r9 :: object_ptr - r10 :: object_ptr[1] - r11 :: c_ptr - r12 :: native_int[1] - r13 :: c_ptr +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4, r5 :: object + r6 :: str + r7 :: dict + r8 :: object + r9 :: object_ptr + r10 :: object_ptr[1] + r11 :: c_ptr + r12 :: native_int[1] + r13 :: c_ptr r14 :: object r15 :: dict r16, r17 :: str @@ -1067,300 +493,874 @@ def __top_level__(): r132 :: object r133 :: None L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool +L1: + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L48 (error at :-1) else goto L2 +L2: + builtins = r4 :: module + dec_ref r4 +L3: + r5 = ('TYPE_CHECKING', 'Callable', 'Final', 'Tuple', 'Type', 'Union', 'overload') + r6 = 'typing' + r7 = faster_hexbytes.main.globals :: static + r8 = CPyImport_ImportFromMany(r6, r5, r5, r7) + if is_error(r8) goto L48 (error at :1) else goto L4 +L4: + typing = r8 :: module + dec_ref r8 + r9 = load_address hexbytes.main :: module + r10 = [r9] + r11 = load_address r10 + r12 = [14] + r13 = load_address r12 + r14 = (('hexbytes.main', 'hexbytes.main', 'hexbytes'),) + r15 = faster_hexbytes.main.globals :: static + r16 = 'faster_hexbytes/main.py' + r17 = '' + r18 = CPyImport_ImportMany(r14, r11, r15, r16, r17, r13) + if not r18 goto L48 else goto L5 :: bool +L5: + r19 = ('mypyc_attr',) + r20 = 'mypy_extensions' + r21 = faster_hexbytes.main.globals :: static + r22 = CPyImport_ImportFromMany(r20, r19, r19, r21) + if is_error(r22) goto L48 (error at :15) else goto L6 +L6: + mypy_extensions = r22 :: module + dec_ref r22 + r23 = ('Self',) + r24 = 'typing_extensions' + r25 = faster_hexbytes.main.globals :: static + r26 = CPyImport_ImportFromMany(r24, r23, r23, r25) + if is_error(r26) goto L48 (error at :18) else goto L7 +L7: + typing_extensions = r26 :: module + dec_ref r26 + r27 = ('to_bytes',) + r28 = 'faster_hexbytes._utils' + r29 = faster_hexbytes.main.globals :: static + r30 = CPyImport_ImportFromMany(r28, r27, r27, r29) + if is_error(r30) goto L48 (error at :22) else goto L8 +L8: + faster_hexbytes._utils = r30 :: module + dec_ref r30 + if 0 goto L9 else goto L9 :: bool +L9: + r31 = faster_hexbytes.main.globals :: static + r32 = 'Union' + r33 = CPyDict_GetItem(r31, r32) + if is_error(r33) goto L48 (error at :31) else goto L10 +L10: + r34 = load_address PyBytes_Type + r35 = load_address PyUnicode_Type + r36 = load_address PyBool_Type + r37 = builtins :: module + r38 = 'bytearray' + r39 = CPyObject_GetAttr(r37, r38) + if is_error(r39) goto L49 (error at :31) else goto L11 +L11: + r40 = load_address PyLong_Type + r41 = builtins :: module + r42 = 'memoryview' + r43 = CPyObject_GetAttr(r41, r42) + if is_error(r43) goto L50 (error at :31) else goto L12 +L12: + inc_ref r34 + inc_ref r35 + inc_ref r36 + inc_ref r40 + r44 = (r34, r35, r36, r39, r40, r43) + r45 = box(tuple[object, object, object, object, object, object], r44) + r46 = PyObject_GetItem(r33, r45) + dec_ref r33 + dec_ref r45 + if is_error(r46) goto L48 (error at :31) else goto L13 +L13: + r47 = faster_hexbytes.main.globals :: static + r48 = 'BytesLike' + r49 = CPyDict_SetItem(r47, r48, r46) + dec_ref r46 + r50 = r49 >= 0 :: signed + if not r50 goto L48 (error at :31) else goto L14 :: bool +L14: + r51 = load_address PyBytes_Type + r52 = '__new__' + r53 = CPyObject_GetAttr(r51, r52) + if is_error(r53) goto L48 (error at :33) else goto L15 +L15: + faster_hexbytes.main._bytes_new = r53 :: static + r54 = faster_hexbytes.main.globals :: static + r55 = '_bytes_new' + r56 = CPyDict_SetItem(r54, r55, r53) + dec_ref r53 + r57 = r56 >= 0 :: signed + if not r57 goto L48 (error at :33) else goto L16 :: bool +L16: + r58 = hexbytes.main :: module + r59 = 'HexBytes' + r60 = CPyObject_GetAttr(r58, r59) + if is_error(r60) goto L48 (error at :37) else goto L17 +L17: + r61 = PyTuple_Pack(1, r60) + dec_ref r60 + if is_error(r61) goto L48 (error at :37) else goto L18 +L18: + r62 = load_address PyType_Type + r63 = CPy_CalculateMetaclass(r62, r61) + if is_error(r63) goto L51 (error at :37) else goto L19 +L19: + r64 = '__prepare__' + r65 = PyObject_HasAttr(r63, r64) + if r65 goto L20 else goto L24 :: bool +L20: + r66 = 'HexBytes' + r67 = '__prepare__' + r68 = CPyObject_GetAttr(r63, r67) + if is_error(r68) goto L51 (error at :37) else goto L21 +L21: + r69 = [r66, r61] + r70 = load_address r69 + r71 = PyObject_Vectorcall(r68, r70, 2, 0) + dec_ref r68 + if is_error(r71) goto L51 (error at :37) else goto L22 +L22: + r72 = cast(dict, r71) + if is_error(r72) goto L51 (error at :37) else goto L23 +L23: + r73 = r72 + goto L26 +L24: + r74 = PyDict_New() + if is_error(r74) goto L51 (error at :37) else goto L25 +L25: + r73 = r74 +L26: + r75 = PyDict_New() + if is_error(r75) goto L52 (error at :37) else goto L27 +L27: + r76 = __new___HexBytes_obj() + if is_error(r76) goto L53 (error at :48) else goto L28 +L28: + r77 = builtins :: module + r78 = 'staticmethod' + r79 = CPyObject_GetAttr(r77, r78) + if is_error(r79) goto L54 (error at :48) else goto L29 +L29: + r80 = [r76] + r81 = load_address r80 + r82 = PyObject_Vectorcall(r79, r81, 1, 0) + dec_ref r79 + if is_error(r82) goto L54 (error at :48) else goto L30 +L30: + dec_ref r76 + r83 = '__new__' + r84 = CPyDict_SetItem(r73, r83, r82) + dec_ref r82 + r85 = r84 >= 0 :: signed + if not r85 goto L53 (error at :48) else goto L31 :: bool +L31: + r86 = __getitem___HexBytes_obj() + if is_error(r86) goto L53 (error at :60) else goto L32 +L32: + r87 = '__getitem__' + r88 = CPyDict_SetItem(r73, r87, r86) + dec_ref r86 + r89 = r88 >= 0 :: signed + if not r89 goto L53 (error at :60) else goto L33 :: bool +L33: + r90 = __repr___HexBytes_obj() + if is_error(r90) goto L53 (error at :72) else goto L34 +L34: + r91 = '__repr__' + r92 = CPyDict_SetItem(r73, r91, r90) + dec_ref r90 + r93 = r92 >= 0 :: signed + if not r93 goto L53 (error at :72) else goto L35 :: bool +L35: + r94 = to_0x_hex_HexBytes_obj() + if is_error(r94) goto L53 (error at :75) else goto L36 +L36: + r95 = 'to_0x_hex' + r96 = CPyDict_SetItem(r73, r95, r94) + dec_ref r94 + r97 = r96 >= 0 :: signed + if not r97 goto L53 (error at :75) else goto L37 :: bool +L37: + r98 = __reduce___HexBytes_obj() + if is_error(r98) goto L53 (error at :81) else goto L38 +L38: + r99 = '__reduce__' + r100 = CPyDict_SetItem(r73, r99, r98) + dec_ref r98 + r101 = r100 >= 0 :: signed + if not r101 goto L53 (error at :81) else goto L39 :: bool +L39: + r102 = 'HexBytes' + r103 = '__annotations__' + r104 = CPyDict_SetItem(r73, r103, r75) + dec_ref r75 + r105 = r104 >= 0 :: signed + if not r105 goto L52 (error at :37) else goto L40 :: bool +L40: + r106 = 'mypyc filler docstring' + r107 = '__doc__' + r108 = CPyDict_SetItem(r73, r107, r106) + r109 = r108 >= 0 :: signed + if not r109 goto L52 (error at :37) else goto L41 :: bool +L41: + r110 = 'faster_hexbytes.main' + r111 = '__module__' + r112 = CPyDict_SetItem(r73, r111, r110) + r113 = r112 >= 0 :: signed + if not r113 goto L52 (error at :37) else goto L42 :: bool +L42: + r114 = [r102, r61, r73] + r115 = load_address r114 + r116 = PyObject_Vectorcall(r63, r115, 3, 0) + if is_error(r116) goto L52 (error at :37) else goto L43 +L43: + dec_ref r73 + dec_ref r61 + r117 = faster_hexbytes.main.globals :: static + r118 = 'mypyc_attr' + r119 = CPyDict_GetItem(r117, r118) + if is_error(r119) goto L55 (error at :36) else goto L44 +L44: + r120 = box(bool, 0) + r121 = [r120] + r122 = load_address r121 + r123 = ('native_class',) + r124 = PyObject_Vectorcall(r119, r122, 0, r123) + dec_ref r119 + if is_error(r124) goto L55 (error at :36) else goto L45 +L45: + r125 = [r116] + r126 = load_address r125 + r127 = PyObject_Vectorcall(r124, r126, 1, 0) + dec_ref r124 + if is_error(r127) goto L55 (error at :37) else goto L46 +L46: + dec_ref r116 + faster_hexbytes.main.HexBytes = r127 :: type + r128 = faster_hexbytes.main.globals :: static + r129 = 'HexBytes' + r130 = PyDict_SetItem(r128, r129, r127) + dec_ref r127 + r131 = r130 >= 0 :: signed + if not r131 goto L48 (error at :37) else goto L47 :: bool +L47: + r132 = faster_hexbytes.main.HexBytes :: type + return 1 +L48: + r133 = :: None + return r133 +L49: + dec_ref r33 + goto L48 +L50: + dec_ref r33 + dec_ref r39 + goto L48 +L51: + dec_ref r61 + goto L48 +L52: + dec_ref r61 + dec_ref r73 + goto L48 +L53: + dec_ref r61 + dec_ref r73 + dec_ref r75 + goto L48 +L54: + dec_ref r61 + dec_ref r73 + dec_ref r75 + dec_ref r76 + goto L48 +L55: + dec_ref r116 + goto L48 + +def to_bytes(val): + val :: union[bytes, str, object, bool, int] + r0 :: bit + r1 :: bytes + r2 :: bit + r3 :: str + r4 :: bytes + r5 :: bit + r6 :: object + r7 :: object[1] + r8 :: object_ptr + r9 :: object + r10 :: bytes + r11 :: bit + r12 :: bool + r13, r14, r15 :: bytes + r16 :: bit + r17 :: int + r18 :: native_int + r19 :: bit + r20 :: native_int + r21, r22 :: bit + r23 :: bool + r24 :: bit + r25 :: str + r26 :: int + r27, r28, r29 :: str + r30 :: object + r31 :: str + r32 :: object + r33 :: object[1] + r34 :: object_ptr + r35 :: object + r36 :: int + r37 :: object + r38 :: str + r39, r40 :: object + r41 :: object[1] + r42 :: object_ptr + r43 :: object + r44 :: str + r45 :: bytes + r46 :: object + r47 :: str + r48 :: object + r49 :: i32 + r50 :: bit + r51 :: bool + r52 :: object + r53 :: object[1] + r54 :: object_ptr + r55 :: object + r56 :: bytes + r57, r58, r59, r60, r61 :: str + r62 :: object[3] + r63 :: object_ptr + r64 :: object + r65, r66 :: str + r67 :: object + r68, r69 :: str + r70 :: object[3] + r71 :: object_ptr + r72 :: object + r73 :: str + r74 :: list + r75, r76, r77, r78, r79, r80 :: ptr + r81 :: str + r82 :: object + r83 :: str + r84 :: object + r85 :: object[1] + r86 :: object_ptr + r87 :: object + r88 :: bytes +L0: + r0 = PyBytes_Check(val) + if r0 goto L1 else goto L3 :: bool +L1: + inc_ref val + r1 = cast(bytes, val) + if is_error(r1) goto L51 (error at to_bytes:19) else goto L2 +L2: + return r1 +L3: + r2 = PyUnicode_Check(val) + if r2 goto L4 else goto L7 :: bool +L4: + inc_ref val + r3 = cast(str, val) + if is_error(r3) goto L51 (error at to_bytes:21) else goto L5 +L5: + r4 = hexstr_to_bytes(r3) + dec_ref r3 + if is_error(r4) goto L51 (error at to_bytes:21) else goto L6 +L6: + return r4 +L7: + r5 = PyByteArray_Check(val) + if r5 goto L8 else goto L11 :: bool +L8: + r6 = load_address PyBytes_Type + r7 = [val] + r8 = load_address r7 + r9 = PyObject_Vectorcall(r6, r8, 1, 0) + if is_error(r9) goto L51 (error at to_bytes:23) else goto L9 +L9: + r10 = cast(bytes, r9) + if is_error(r10) goto L51 (error at to_bytes:23) else goto L10 +L10: + return r10 +L11: + r11 = PyBool_Check(val) + if r11 goto L12 else goto L17 :: bool +L12: + r12 = unbox(bool, val) + if is_error(r12) goto L51 (error at to_bytes:25) else goto L13 +L13: + if r12 goto L14 else goto L15 :: bool +L14: + r13 = b'\x01' + inc_ref r13 + r14 = r13 + goto L16 +L15: + r15 = b'\x00' + inc_ref r15 + r14 = r15 +L16: + return r14 +L17: + r16 = PyLong_Check(val) + if r16 goto L18 else goto L37 :: bool +L18: + r17 = unbox(int, val) + if is_error(r17) goto L51 (error at to_bytes:29) else goto L19 +L19: + r18 = r17 & 1 + r19 = r18 != 0 + if r19 goto L21 else goto L20 :: bool +L20: + r20 = 0 & 1 + r21 = r20 != 0 + if r21 goto L21 else goto L22 :: bool +L21: + r22 = CPyTagged_IsLt_(r17, 0) + r23 = r22 + goto L23 +L22: + r24 = r17 < 0 :: signed + r23 = r24 +L23: + dec_ref r17 :: int + if r23 goto L24 else goto L31 :: bool +L24: + r25 = 'Cannot convert negative integer ' + r26 = unbox(int, val) + if is_error(r26) goto L51 (error at to_bytes:30) else goto L25 +L25: + r27 = CPyTagged_Str(r26) + dec_ref r26 :: int + if is_error(r27) goto L51 (error at to_bytes:30) else goto L26 +L26: + r28 = ' to bytes' + r29 = CPyStr_Build(3, r25, r27, r28) + dec_ref r27 + if is_error(r29) goto L51 (error at to_bytes:30) else goto L27 +L27: + r30 = builtins :: module + r31 = 'ValueError' + r32 = CPyObject_GetAttr(r30, r31) + if is_error(r32) goto L52 (error at to_bytes:30) else goto L28 +L28: + r33 = [r29] + r34 = load_address r33 + r35 = PyObject_Vectorcall(r32, r34, 1, 0) + dec_ref r32 + if is_error(r35) goto L52 (error at to_bytes:30) else goto L29 +L29: + dec_ref r29 + CPy_Raise(r35) + dec_ref r35 + if not 0 goto L51 (error at to_bytes:30) else goto L30 :: bool +L30: + unreachable +L31: + r36 = unbox(int, val) + if is_error(r36) goto L51 (error at to_bytes:32) else goto L32 +L32: + r37 = builtins :: module + r38 = 'hex' + r39 = CPyObject_GetAttr(r37, r38) + if is_error(r39) goto L53 (error at to_bytes:32) else goto L33 +L33: + r40 = box(int, r36) + r41 = [r40] + r42 = load_address r41 + r43 = PyObject_Vectorcall(r39, r42, 1, 0) + dec_ref r39 + if is_error(r43) goto L54 (error at to_bytes:32) else goto L34 +L34: + dec_ref r40 + r44 = cast(str, r43) + if is_error(r44) goto L51 (error at to_bytes:32) else goto L35 +L35: + r45 = to_bytes(r44) + dec_ref r44 + if is_error(r45) goto L51 (error at to_bytes:32) else goto L36 +L36: + return r45 +L37: + r46 = builtins :: module + r47 = 'memoryview' + r48 = CPyObject_GetAttr(r46, r47) + if is_error(r48) goto L51 (error at to_bytes:33) else goto L38 +L38: + r49 = PyObject_IsInstance(val, r48) + dec_ref r48 + r50 = r49 >= 0 :: signed + if not r50 goto L51 (error at to_bytes:33) else goto L39 :: bool +L39: + r51 = truncate r49: i32 to builtins.bool + if r51 goto L40 else goto L43 :: bool +L40: + r52 = load_address PyBytes_Type + r53 = [val] + r54 = load_address r53 + r55 = PyObject_Vectorcall(r52, r54, 1, 0) + if is_error(r55) goto L51 (error at to_bytes:34) else goto L41 +L41: + r56 = cast(bytes, r55) + if is_error(r56) goto L51 (error at to_bytes:34) else goto L42 +L42: + return r56 +L43: + r57 = '' + r58 = 'Cannot convert ' + r59 = '{!r:{}}' + r60 = '' + r61 = 'format' + r62 = [r59, val, r60] + r63 = load_address r62 + r64 = PyObject_VectorcallMethod(r61, r63, 9223372036854775811, 0) + if is_error(r64) goto L51 (error at to_bytes:36) else goto L44 +L44: + r65 = ' of type ' + r66 = '{:{}}' + r67 = CPy_TYPE(val) + r68 = '' + r69 = 'format' + r70 = [r66, r67, r68] + r71 = load_address r70 + r72 = PyObject_VectorcallMethod(r69, r71, 9223372036854775811, 0) + if is_error(r72) goto L55 (error at to_bytes:36) else goto L45 +L45: + dec_ref r67 + r73 = ' to bytes' + r74 = PyList_New(5) + if is_error(r74) goto L56 (error at to_bytes:36) else goto L46 +L46: + r75 = get_element_ptr r74 ob_item :: PyListObject + r76 = load_mem r75 :: ptr* + inc_ref r58 + set_mem r76, r58 :: builtins.object* + r77 = r76 + 8 + set_mem r77, r64 :: builtins.object* + inc_ref r65 + r78 = r76 + 16 + set_mem r78, r65 :: builtins.object* + r79 = r76 + 24 + set_mem r79, r72 :: builtins.object* + inc_ref r73 + r80 = r76 + 32 + set_mem r80, r73 :: builtins.object* + r81 = PyUnicode_Join(r57, r74) + dec_ref r74 + if is_error(r81) goto L51 (error at to_bytes:36) else goto L47 +L47: + r82 = builtins :: module + r83 = 'TypeError' + r84 = CPyObject_GetAttr(r82, r83) + if is_error(r84) goto L57 (error at to_bytes:36) else goto L48 +L48: + r85 = [r81] + r86 = load_address r85 + r87 = PyObject_Vectorcall(r84, r86, 1, 0) + dec_ref r84 + if is_error(r87) goto L57 (error at to_bytes:36) else goto L49 +L49: + dec_ref r81 + CPy_Raise(r87) + dec_ref r87 + if not 0 goto L51 (error at to_bytes:36) else goto L50 :: bool +L50: + unreachable +L51: + r88 = :: bytes + return r88 +L52: + dec_ref r29 + goto L51 +L53: + dec_ref r36 :: int + goto L51 +L54: + dec_ref r40 + goto L51 +L55: + dec_ref r64 + dec_ref r67 + goto L51 +L56: + dec_ref r64 + dec_ref r72 + goto L51 +L57: + dec_ref r81 + goto L51 + +def hexstr_to_bytes(hexstr): + hexstr, r0, r1 :: str + r2 :: tuple[str, str] + r3 :: object + r4 :: bool + r5 :: object + r6, non_prefixed_hex :: str + r7 :: native_int + r8 :: bit + r9 :: short_int + r10 :: int + r11 :: bit + r12, r13, padded_hex :: str + r14 :: bytes + r15 :: tuple[object, object, object] + r16 :: object + r17 :: str + r18 :: object + r19 :: bit + r20, r21, r22 :: str + r23 :: object + r24 :: str + r25 :: object + r26 :: object[1] + r27 :: object_ptr + r28 :: object + r29 :: bit + r30 :: object + r31 :: bool + r32 :: object[1] + r33 :: object_ptr + r34 :: object + r35, r36 :: bytes +L0: + r0 = '0x' + r1 = '0X' + inc_ref r0 + inc_ref r1 + r2 = (r0, r1) + r3 = box(tuple[str, str], r2) + r4 = CPyStr_Startswith(hexstr, r3) + dec_ref r3 + if is_error(r4) goto L31 (error at hexstr_to_bytes:40) else goto L1 L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L48 (error at :-1) else goto L2 + if r4 goto L2 else goto L5 :: bool L2: - builtins = r4 :: module - dec_ref r4 + r5 = CPyStr_GetSlice(hexstr, 4, 9223372036854775806) + if is_error(r5) goto L31 (error at hexstr_to_bytes:41) else goto L3 L3: - r5 = ('TYPE_CHECKING', 'Callable', 'Final', 'Tuple', 'Type', 'Union', 'overload') - r6 = 'typing' - r7 = faster_hexbytes.main.globals :: static - r8 = CPyImport_ImportFromMany(r6, r5, r5, r7) - if is_error(r8) goto L48 (error at :1) else goto L4 + r6 = cast(str, r5) + if is_error(r6) goto L31 (error at hexstr_to_bytes:41) else goto L4 L4: - typing = r8 :: module - dec_ref r8 - r9 = load_address hexbytes.main :: module - r10 = [r9] - r11 = load_address r10 - r12 = [14] - r13 = load_address r12 - r14 = (('hexbytes.main', 'hexbytes.main', 'hexbytes'),) - r15 = faster_hexbytes.main.globals :: static - r16 = 'faster_hexbytes/main.py' - r17 = '' - r18 = CPyImport_ImportMany(r14, r11, r15, r16, r17, r13) - if not r18 goto L48 else goto L5 :: bool + non_prefixed_hex = r6 + goto L6 L5: - r19 = ('mypyc_attr',) - r20 = 'mypy_extensions' - r21 = faster_hexbytes.main.globals :: static - r22 = CPyImport_ImportFromMany(r20, r19, r19, r21) - if is_error(r22) goto L48 (error at :15) else goto L6 + inc_ref hexstr + non_prefixed_hex = hexstr L6: - mypy_extensions = r22 :: module - dec_ref r22 - r23 = ('Self',) - r24 = 'typing_extensions' - r25 = faster_hexbytes.main.globals :: static - r26 = CPyImport_ImportFromMany(r24, r23, r23, r25) - if is_error(r26) goto L48 (error at :18) else goto L7 + r7 = CPyStr_Size_size_t(hexstr) + r8 = r7 >= 0 :: signed + if not r8 goto L32 (error at hexstr_to_bytes:46) else goto L7 :: bool L7: - typing_extensions = r26 :: module - dec_ref r26 - r27 = ('to_bytes',) - r28 = 'faster_hexbytes._utils' - r29 = faster_hexbytes.main.globals :: static - r30 = CPyImport_ImportFromMany(r28, r27, r27, r29) - if is_error(r30) goto L48 (error at :22) else goto L8 + r9 = r7 << 1 + r10 = CPyTagged_Remainder(r9, 4) + if is_error(r10) goto L32 (error at hexstr_to_bytes:46) else goto L8 L8: - faster_hexbytes._utils = r30 :: module - dec_ref r30 - if 0 goto L9 else goto L9 :: bool + r11 = r10 != 0 + dec_ref r10 :: int + if r11 goto L9 else goto L11 :: bool L9: - r31 = faster_hexbytes.main.globals :: static - r32 = 'Union' - r33 = CPyDict_GetItem(r31, r32) - if is_error(r33) goto L48 (error at :31) else goto L10 + r12 = '0' + r13 = PyUnicode_Concat(r12, non_prefixed_hex) + dec_ref non_prefixed_hex + if is_error(r13) goto L31 (error at hexstr_to_bytes:47) else goto L10 L10: - r34 = load_address PyBytes_Type - r35 = load_address PyUnicode_Type - r36 = load_address PyBool_Type - r37 = builtins :: module - r38 = 'bytearray' - r39 = CPyObject_GetAttr(r37, r38) - if is_error(r39) goto L49 (error at :31) else goto L11 + padded_hex = r13 + goto L12 L11: - r40 = load_address PyLong_Type - r41 = builtins :: module - r42 = 'memoryview' - r43 = CPyObject_GetAttr(r41, r42) - if is_error(r43) goto L50 (error at :31) else goto L12 + padded_hex = non_prefixed_hex L12: - inc_ref r34 - inc_ref r35 - inc_ref r36 - inc_ref r40 - r44 = (r34, r35, r36, r39, r40, r43) - r45 = box(tuple[object, object, object, object, object, object], r44) - r46 = PyObject_GetItem(r33, r45) - dec_ref r33 - dec_ref r45 - if is_error(r46) goto L48 (error at :31) else goto L13 + r14 = PyUnicode_AsASCIIString(padded_hex) + if is_error(r14) goto L14 (error at hexstr_to_bytes:52) else goto L33 L13: - r47 = faster_hexbytes.main.globals :: static - r48 = 'BytesLike' - r49 = CPyDict_SetItem(r47, r48, r46) - dec_ref r46 - r50 = r49 >= 0 :: signed - if not r50 goto L48 (error at :31) else goto L14 :: bool + goto L25 L14: - r51 = load_address PyBytes_Type - r52 = '__new__' - r53 = CPyObject_GetAttr(r51, r52) - if is_error(r53) goto L48 (error at :33) else goto L15 + r15 = CPy_CatchError() + r16 = builtins :: module + r17 = 'UnicodeDecodeError' + r18 = CPyObject_GetAttr(r16, r17) + if is_error(r18) goto L34 (error at hexstr_to_bytes:53) else goto L15 L15: - faster_hexbytes.main._bytes_new = r53 :: static - r54 = faster_hexbytes.main.globals :: static - r55 = '_bytes_new' - r56 = CPyDict_SetItem(r54, r55, r53) - dec_ref r53 - r57 = r56 >= 0 :: signed - if not r57 goto L48 (error at :33) else goto L16 :: bool + r19 = CPy_ExceptionMatches(r18) + dec_ref r18 + if r19 goto L16 else goto L35 :: bool L16: - r58 = hexbytes.main :: module - r59 = 'HexBytes' - r60 = CPyObject_GetAttr(r58, r59) - if is_error(r60) goto L48 (error at :37) else goto L17 + r20 = 'hex string ' + r21 = ' may only contain [0-9a-fA-F] characters' + r22 = CPyStr_Build(3, r20, padded_hex, r21) + dec_ref padded_hex + if is_error(r22) goto L23 (error at hexstr_to_bytes:55) else goto L17 L17: - r61 = PyTuple_Pack(1, r60) - dec_ref r60 - if is_error(r61) goto L48 (error at :37) else goto L18 + r23 = builtins :: module + r24 = 'ValueError' + r25 = CPyObject_GetAttr(r23, r24) + if is_error(r25) goto L36 (error at hexstr_to_bytes:54) else goto L18 L18: - r62 = load_address PyType_Type - r63 = CPy_CalculateMetaclass(r62, r61) - if is_error(r63) goto L51 (error at :37) else goto L19 + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L36 (error at hexstr_to_bytes:54) else goto L19 L19: - r64 = '__prepare__' - r65 = PyObject_HasAttr(r63, r64) - if r65 goto L20 else goto L24 :: bool + dec_ref r22 + CPy_Raise(r28) + dec_ref r28 + if not 0 goto L23 (error at hexstr_to_bytes:54) else goto L37 :: bool L20: - r66 = 'HexBytes' - r67 = '__prepare__' - r68 = CPyObject_GetAttr(r63, r67) - if is_error(r68) goto L51 (error at :37) else goto L21 -L21: - r69 = [r66, r61] - r70 = load_address r69 - r71 = PyObject_Vectorcall(r68, r70, 2, 0) - dec_ref r68 - if is_error(r71) goto L51 (error at :37) else goto L22 + unreachable +L21: + CPy_Reraise() + if not 0 goto L23 else goto L38 :: bool L22: - r72 = cast(dict, r71) - if is_error(r72) goto L51 (error at :37) else goto L23 + unreachable L23: - r73 = r72 - goto L26 + CPy_RestoreExcInfo(r15) + dec_ref r15 + r29 = CPy_KeepPropagating() + if not r29 goto L31 else goto L24 :: bool L24: - r74 = PyDict_New() - if is_error(r74) goto L51 (error at :37) else goto L25 + unreachable L25: - r73 = r74 + r30 = faster_hexbytes._utils.unhexlify :: static + if is_error(r30) goto L39 else goto L28 L26: - r75 = PyDict_New() - if is_error(r75) goto L52 (error at :37) else goto L27 + r31 = raise NameError('value for final name "unhexlify" was not set') + if not r31 goto L31 (error at hexstr_to_bytes:58) else goto L27 :: bool L27: - r76 = __new___HexBytes_obj() - if is_error(r76) goto L53 (error at :48) else goto L28 + unreachable L28: - r77 = builtins :: module - r78 = 'staticmethod' - r79 = CPyObject_GetAttr(r77, r78) - if is_error(r79) goto L54 (error at :48) else goto L29 + r32 = [r14] + r33 = load_address r32 + r34 = PyObject_Vectorcall(r30, r33, 1, 0) + if is_error(r34) goto L40 (error at hexstr_to_bytes:58) else goto L29 L29: - r80 = [r76] - r81 = load_address r80 - r82 = PyObject_Vectorcall(r79, r81, 1, 0) - dec_ref r79 - if is_error(r82) goto L54 (error at :48) else goto L30 + dec_ref r14 + r35 = cast(bytes, r34) + if is_error(r35) goto L31 (error at hexstr_to_bytes:58) else goto L30 L30: - dec_ref r76 - r83 = '__new__' - r84 = CPyDict_SetItem(r73, r83, r82) - dec_ref r82 - r85 = r84 >= 0 :: signed - if not r85 goto L53 (error at :48) else goto L31 :: bool + return r35 L31: - r86 = __getitem___HexBytes_obj() - if is_error(r86) goto L53 (error at :60) else goto L32 + r36 = :: bytes + return r36 L32: - r87 = '__getitem__' - r88 = CPyDict_SetItem(r73, r87, r86) - dec_ref r86 - r89 = r88 >= 0 :: signed - if not r89 goto L53 (error at :60) else goto L33 :: bool + dec_ref non_prefixed_hex + goto L31 L33: - r90 = __repr___HexBytes_obj() - if is_error(r90) goto L53 (error at :72) else goto L34 + dec_ref padded_hex + goto L13 L34: - r91 = '__repr__' - r92 = CPyDict_SetItem(r73, r91, r90) - dec_ref r90 - r93 = r92 >= 0 :: signed - if not r93 goto L53 (error at :72) else goto L35 :: bool + dec_ref padded_hex + goto L23 L35: - r94 = to_0x_hex_HexBytes_obj() - if is_error(r94) goto L53 (error at :75) else goto L36 + dec_ref padded_hex + goto L21 L36: - r95 = 'to_0x_hex' - r96 = CPyDict_SetItem(r73, r95, r94) - dec_ref r94 - r97 = r96 >= 0 :: signed - if not r97 goto L53 (error at :75) else goto L37 :: bool + dec_ref r22 + goto L23 L37: - r98 = __reduce___HexBytes_obj() - if is_error(r98) goto L53 (error at :81) else goto L38 + dec_ref r15 + goto L20 L38: - r99 = '__reduce__' - r100 = CPyDict_SetItem(r73, r99, r98) - dec_ref r98 - r101 = r100 >= 0 :: signed - if not r101 goto L53 (error at :81) else goto L39 :: bool + dec_ref r15 + goto L22 L39: - r102 = 'HexBytes' - r103 = '__annotations__' - r104 = CPyDict_SetItem(r73, r103, r75) - dec_ref r75 - r105 = r104 >= 0 :: signed - if not r105 goto L52 (error at :37) else goto L40 :: bool + dec_ref r14 + goto L26 L40: - r106 = 'mypyc filler docstring' - r107 = '__doc__' - r108 = CPyDict_SetItem(r73, r107, r106) - r109 = r108 >= 0 :: signed - if not r109 goto L52 (error at :37) else goto L41 :: bool -L41: - r110 = 'faster_hexbytes.main' - r111 = '__module__' - r112 = CPyDict_SetItem(r73, r111, r110) - r113 = r112 >= 0 :: signed - if not r113 goto L52 (error at :37) else goto L42 :: bool -L42: - r114 = [r102, r61, r73] - r115 = load_address r114 - r116 = PyObject_Vectorcall(r63, r115, 3, 0) - if is_error(r116) goto L52 (error at :37) else goto L43 -L43: - dec_ref r73 - dec_ref r61 - r117 = faster_hexbytes.main.globals :: static - r118 = 'mypyc_attr' - r119 = CPyDict_GetItem(r117, r118) - if is_error(r119) goto L55 (error at :36) else goto L44 -L44: - r120 = box(bool, 0) - r121 = [r120] - r122 = load_address r121 - r123 = ('native_class',) - r124 = PyObject_Vectorcall(r119, r122, 0, r123) - dec_ref r119 - if is_error(r124) goto L55 (error at :36) else goto L45 -L45: - r125 = [r116] - r126 = load_address r125 - r127 = PyObject_Vectorcall(r124, r126, 1, 0) - dec_ref r124 - if is_error(r127) goto L55 (error at :37) else goto L46 -L46: - dec_ref r116 - faster_hexbytes.main.HexBytes = r127 :: type - r128 = faster_hexbytes.main.globals :: static - r129 = 'HexBytes' - r130 = PyDict_SetItem(r128, r129, r127) - dec_ref r127 - r131 = r130 >= 0 :: signed - if not r131 goto L48 (error at :37) else goto L47 :: bool -L47: - r132 = faster_hexbytes.main.HexBytes :: type + dec_ref r14 + goto L31 + +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4 :: object + r5 :: object_ptr + r6 :: object_ptr[1] + r7 :: c_ptr + r8 :: native_int[1] + r9 :: c_ptr + r10 :: object + r11 :: dict + r12, r13 :: str + r14 :: bit + r15 :: object + r16 :: str + r17 :: dict + r18, r19 :: object + r20 :: str + r21 :: object + r22 :: dict + r23 :: str + r24 :: i32 + r25 :: bit + r26 :: None +L0: + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool +L1: + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L8 (error at :-1) else goto L2 +L2: + builtins = r4 :: module + dec_ref r4 +L3: + r5 = load_address binascii :: module + r6 = [r5] + r7 = load_address r6 + r8 = [1] + r9 = load_address r8 + r10 = (('binascii', 'binascii', 'binascii'),) + r11 = faster_hexbytes._utils.globals :: static + r12 = 'faster_hexbytes/_utils.py' + r13 = '' + r14 = CPyImport_ImportMany(r10, r7, r11, r12, r13, r9) + if not r14 goto L8 else goto L4 :: bool +L4: + r15 = ('Final', 'Union') + r16 = 'typing' + r17 = faster_hexbytes._utils.globals :: static + r18 = CPyImport_ImportFromMany(r16, r15, r15, r17) + if is_error(r18) goto L8 (error at :2) else goto L5 +L5: + typing = r18 :: module + dec_ref r18 + r19 = binascii :: module + r20 = 'unhexlify' + r21 = CPyObject_GetAttr(r19, r20) + if is_error(r21) goto L8 (error at :8) else goto L6 +L6: + faster_hexbytes._utils.unhexlify = r21 :: static + r22 = faster_hexbytes._utils.globals :: static + r23 = 'unhexlify' + r24 = CPyDict_SetItem(r22, r23, r21) + dec_ref r21 + r25 = r24 >= 0 :: signed + if not r25 goto L8 (error at :8) else goto L7 :: bool +L7: return 1 -L48: - r133 = :: None - return r133 -L49: - dec_ref r33 - goto L48 -L50: - dec_ref r33 - dec_ref r39 - goto L48 -L51: - dec_ref r61 - goto L48 -L52: - dec_ref r61 - dec_ref r73 - goto L48 -L53: - dec_ref r61 - dec_ref r73 - dec_ref r75 - goto L48 -L54: - dec_ref r61 - dec_ref r73 - dec_ref r75 - dec_ref r76 - goto L48 -L55: - dec_ref r116 - goto L48 +L8: + r26 = :: None + return r26 def __top_level__(): r0, r1 :: object From 3c496dd48b819972c2848944edc7405101fe89dc Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Tue, 30 Sep 2025 05:55:05 -0400 Subject: [PATCH 49/98] feat(cicd): tox github action (#3) * feat(cicd): tox github action * chore: compile C files for source control * Update tox.yaml * chore: compile C files for source control * Update tox.yaml * chore: compile C files for source control * include mypy_extensions dep * chore: compile C files for source control * include all matrix combos * rename job * chore: compile C files for source control * fix matrix * chore: compile C files for source control --------- Co-authored-by: github-actions[bot] --- .github/workflows/tox.yaml | 47 +++++++++ build/ops.txt | 206 ++++++++++++++++++------------------- setup.py | 2 +- 3 files changed, 151 insertions(+), 104 deletions(-) create mode 100644 .github/workflows/tox.yaml diff --git a/.github/workflows/tox.yaml b/.github/workflows/tox.yaml new file mode 100644 index 0000000..36b0e10 --- /dev/null +++ b/.github/workflows/tox.yaml @@ -0,0 +1,47 @@ +name: Tox + +on: + push: + branches: [main, master] + pull_request: + branches: [main, master] + schedule: + - cron: '0 12 * * 1-5' # Weekdays 12:00 UTC + +jobs: + test: + name: Test (${{ matrix.jobtype }}, ${{ matrix.python-version}}, ${{ matrix.os }}) + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] + jobtype: [core, lint, wheel] + env: + TOXENV: py${{ matrix.python-version }}-${{ matrix.jobtype }} + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + + - name: Upgrade pip and install tox + run: | + python -m pip install --upgrade pip + python -m pip install tox + + - name: Cache tox, pip, and hypothesis + uses: actions/cache@v4 + with: + path: | + .tox + .hypothesis + ~/.cache/pip + ~/.local + key: ${{ runner.os }}-tox-${{ matrix.python-version }}-${{ matrix.jobtype }}-${{ hashFiles('setup.py', 'tox.ini') }} + + - name: Run tox + run: python -m tox run -r diff --git a/build/ops.txt b/build/ops.txt index 936de4d..5ed80ec 100644 --- a/build/ops.txt +++ b/build/ops.txt @@ -788,6 +788,109 @@ L55: dec_ref r116 goto L48 +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4, r5, r6 :: object + r7 :: str + r8 :: dict + r9, r10 :: object + r11 :: str + r12 :: dict + r13 :: object + r14 :: str + r15 :: list + r16, r17 :: ptr + r18 :: dict + r19 :: str + r20 :: i32 + r21 :: bit + r22 :: str + r23 :: dict + r24 :: str + r25 :: object + r26 :: object[1] + r27 :: object_ptr + r28 :: object + r29 :: str + r30 :: dict + r31 :: str + r32 :: i32 + r33 :: bit + r34 :: None +L0: + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool +L1: + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L12 (error at :-1) else goto L2 +L2: + builtins = r4 :: module + dec_ref r4 +L3: + r5 = ('version',) + r6 = ('__version',) + r7 = 'importlib.metadata' + r8 = faster_hexbytes.globals :: static + r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) + if is_error(r9) goto L12 (error at :1) else goto L4 +L4: + importlib.metadata = r9 :: module + dec_ref r9 + r10 = ('HexBytes',) + r11 = 'faster_hexbytes.main' + r12 = faster_hexbytes.globals :: static + r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) + if is_error(r13) goto L12 (error at :5) else goto L5 +L5: + faster_hexbytes.main = r13 :: module + dec_ref r13 + r14 = 'HexBytes' + r15 = PyList_New(1) + if is_error(r15) goto L12 (error at :9) else goto L6 +L6: + r16 = get_element_ptr r15 ob_item :: PyListObject + r17 = load_mem r16 :: ptr* + inc_ref r14 + set_mem r17, r14 :: builtins.object* + r18 = faster_hexbytes.globals :: static + r19 = '__all__' + r20 = CPyDict_SetItem(r18, r19, r15) + dec_ref r15 + r21 = r20 >= 0 :: signed + if not r21 goto L12 (error at :9) else goto L7 :: bool +L7: + r22 = 'hexbytes' + r23 = faster_hexbytes.globals :: static + r24 = '__version' + r25 = CPyDict_GetItem(r23, r24) + if is_error(r25) goto L12 (error at :11) else goto L8 +L8: + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L12 (error at :11) else goto L9 +L9: + r29 = cast(str, r28) + if is_error(r29) goto L12 (error at :11) else goto L10 +L10: + r30 = faster_hexbytes.globals :: static + r31 = '__version__' + r32 = CPyDict_SetItem(r30, r31, r29) + dec_ref r29 + r33 = r32 >= 0 :: signed + if not r33 goto L12 (error at :11) else goto L11 :: bool +L11: + return 1 +L12: + r34 = :: None + return r34 + def to_bytes(val): val :: union[bytes, str, object, bool, int] r0 :: bit @@ -1361,106 +1464,3 @@ L7: L8: r26 = :: None return r26 - -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4, r5, r6 :: object - r7 :: str - r8 :: dict - r9, r10 :: object - r11 :: str - r12 :: dict - r13 :: object - r14 :: str - r15 :: list - r16, r17 :: ptr - r18 :: dict - r19 :: str - r20 :: i32 - r21 :: bit - r22 :: str - r23 :: dict - r24 :: str - r25 :: object - r26 :: object[1] - r27 :: object_ptr - r28 :: object - r29 :: str - r30 :: dict - r31 :: str - r32 :: i32 - r33 :: bit - r34 :: None -L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool -L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L12 (error at :-1) else goto L2 -L2: - builtins = r4 :: module - dec_ref r4 -L3: - r5 = ('version',) - r6 = ('__version',) - r7 = 'importlib.metadata' - r8 = faster_hexbytes.globals :: static - r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) - if is_error(r9) goto L12 (error at :1) else goto L4 -L4: - importlib.metadata = r9 :: module - dec_ref r9 - r10 = ('HexBytes',) - r11 = 'faster_hexbytes.main' - r12 = faster_hexbytes.globals :: static - r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) - if is_error(r13) goto L12 (error at :5) else goto L5 -L5: - faster_hexbytes.main = r13 :: module - dec_ref r13 - r14 = 'HexBytes' - r15 = PyList_New(1) - if is_error(r15) goto L12 (error at :9) else goto L6 -L6: - r16 = get_element_ptr r15 ob_item :: PyListObject - r17 = load_mem r16 :: ptr* - inc_ref r14 - set_mem r17, r14 :: builtins.object* - r18 = faster_hexbytes.globals :: static - r19 = '__all__' - r20 = CPyDict_SetItem(r18, r19, r15) - dec_ref r15 - r21 = r20 >= 0 :: signed - if not r21 goto L12 (error at :9) else goto L7 :: bool -L7: - r22 = 'hexbytes' - r23 = faster_hexbytes.globals :: static - r24 = '__version' - r25 = CPyDict_GetItem(r23, r24) - if is_error(r25) goto L12 (error at :11) else goto L8 -L8: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L12 (error at :11) else goto L9 -L9: - r29 = cast(str, r28) - if is_error(r29) goto L12 (error at :11) else goto L10 -L10: - r30 = faster_hexbytes.globals :: static - r31 = '__version__' - r32 = CPyDict_SetItem(r30, r31, r29) - dec_ref r29 - r33 = r32 >= 0 :: signed - if not r33 goto L12 (error at :11) else goto L11 :: bool -L11: - return 1 -L12: - r34 = :: None - return r34 diff --git a/setup.py b/setup.py index a9fa6f0..9df5152 100644 --- a/setup.py +++ b/setup.py @@ -61,7 +61,7 @@ author_email="snakecharmers@ethereum.org", url="https://github.com/ethereum/hexbytes", include_package_data=True, - install_requires=[f"hexbytes=={version}"], + install_requires=[f"hexbytes=={version}", "mypy_extensions"], python_requires=">=3.9, <4", extras_require=extras_require, py_modules=["faster_hexbytes"], From ba5b861aa66f63ffa62c51668108c7a5c627ebc1 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Tue, 30 Sep 2025 06:01:15 -0400 Subject: [PATCH 50/98] Create release.yaml --- .github/workflows/release.yaml | 199 +++++++++++++++++++++++++++++++++ 1 file changed, 199 insertions(+) create mode 100644 .github/workflows/release.yaml diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..3608a5b --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,199 @@ +name: Build and Publish Wheels + +on: + release: + branches: + - master + types: [published] + +jobs: + build_wheels: + name: Build wheels using cibuildwheel + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + include: + # ---------------------------------------------------- + # manylinux 64-bit + # ---------------------------------------------------- + - os: ubuntu-latest + build_type: manylinux-x64 + cibw_build: "*manylinux*" + cibw_archs_linux: x86_64 + artifact_name: "wheels-ubuntu-latest-manylinux-x64" + + # ---------------------------------------------------- + # manylinux 32-bit + # ---------------------------------------------------- + - os: ubuntu-latest + build_type: manylinux-x86 + cibw_build: "*manylinux*" + cibw_archs_linux: i686 + artifact_name: "wheels-ubuntu-latest-manylinux-x86" + + # ---------------------------------------------------- + # musllinux 64-bit + # ---------------------------------------------------- + - os: ubuntu-latest + build_type: musllinux-x64 + cibw_build: "*musllinux*" + cibw_archs_linux: x86_64 + artifact_name: "wheels-ubuntu-latest-musllinux-x64" + + # ---------------------------------------------------- + # musllinux 32-bit + # ---------------------------------------------------- + - os: ubuntu-latest + build_type: musllinux-x86 + cibw_build: "*musllinux*" + cibw_archs_linux: i686 + artifact_name: "wheels-ubuntu-latest-musllinux-x86" + + # ---------------------------------------------------- + # macOS (64-bit only) + # ---------------------------------------------------- + - os: macos-latest + build_type: macos + cibw_build: "" + cibw_archs_linux: "" + artifact_name: "wheels-macos-latest" + + # ---------------------------------------------------- + # Windows 64-bit + # ---------------------------------------------------- + - os: windows-latest + build_type: winx64 + cibw_build: "" + cibw_archs_windows: AMD64 + artifact_name: "wheels-windows-latest-x64" + + # ---------------------------------------------------- + # Windows 32-bit + # ---------------------------------------------------- + - os: windows-latest + build_type: winx86 + cibw_build: "" + cibw_archs_windows: x86 + artifact_name: "wheels-windows-latest-x86" + + steps: + - name: Check out code + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "3.11" + + - name: Install cibuildwheel + run: | + python -m pip install --upgrade pip setuptools wheel cibuildwheel + + - name: Build wheels + env: + # Skip PyPy + CIBW_SKIP: pp* + # On Linux: manylinux / musllinux arches + CIBW_ARCHS_LINUX: ${{ matrix.cibw_archs_linux || '' }} + # On Windows: AMD64 / x86 + CIBW_ARCHS_WINDOWS: ${{ matrix.cibw_archs_windows || '' }} + # Which wheels to build for Linux (manylinux vs. musllinux) + CIBW_BUILD: ${{ matrix.cibw_build || '' }} + run: | + python -m cibuildwheel --output-dir wheelhouse + + - name: Upload wheels + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.artifact_name }} + path: wheelhouse/*.whl + + publish_sdist_and_wheels: + name: Publish wheels to PyPI + needs: build_wheels + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "3.11" + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install setuptools wheel twine + + - name: Build sdist + run: | + python setup.py sdist + + # ---------------------------------------------------- + # Download wheels built on each runner + # ---------------------------------------------------- + - name: Download manylinux 64-bit wheels + uses: actions/download-artifact@v4 + with: + name: "wheels-ubuntu-latest-manylinux-x64" + path: wheelhouse/linux-many-x64 + + - name: Download manylinux 32-bit wheels + uses: actions/download-artifact@v4 + with: + name: "wheels-ubuntu-latest-manylinux-x86" + path: wheelhouse/linux-many-x86 + + - name: Download musllinux 64-bit wheels + uses: actions/download-artifact@v4 + with: + name: "wheels-ubuntu-latest-musllinux-x64" + path: wheelhouse/linux-musl-x64 + + - name: Download musllinux 32-bit wheels + uses: actions/download-artifact@v4 + with: + name: "wheels-ubuntu-latest-musllinux-x86" + path: wheelhouse/linux-musl-x86 + + - name: Download macOS wheels + uses: actions/download-artifact@v4 + with: + name: "wheels-macos-latest" + path: wheelhouse/macos + + - name: Download Windows 64-bit wheels + uses: actions/download-artifact@v4 + with: + name: "wheels-windows-latest-x64" + path: wheelhouse/windows-x64 + + - name: Download Windows 32-bit wheels + uses: actions/download-artifact@v4 + with: + name: "wheels-windows-latest-x86" + path: wheelhouse/windows-x86 + + # ---------------------------------------------------- + # Publish all built artifacts to PyPI + # ---------------------------------------------------- + - name: Publish sdist and wheels to PyPI + env: + TWINE_USERNAME: __token__ + TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} + run: | + twine upload \ + dist/* \ + wheelhouse/linux-many-x64/*.whl \ + wheelhouse/linux-many-x86/*.whl \ + wheelhouse/linux-musl-x64/*.whl \ + wheelhouse/linux-musl-x86/*.whl \ + wheelhouse/macos/*.whl \ + wheelhouse/windows-x64/*.whl \ + wheelhouse/windows-x86/*.whl From ba17d876a01ee04830d2cc7bf79efd6312b601da Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 30 Sep 2025 10:01:38 +0000 Subject: [PATCH 51/98] chore: compile C files for source control --- build/ops.txt | 206 +++++++++++++++++++++++++------------------------- 1 file changed, 103 insertions(+), 103 deletions(-) diff --git a/build/ops.txt b/build/ops.txt index 5ed80ec..a8ead04 100644 --- a/build/ops.txt +++ b/build/ops.txt @@ -1,3 +1,106 @@ +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4, r5, r6 :: object + r7 :: str + r8 :: dict + r9, r10 :: object + r11 :: str + r12 :: dict + r13 :: object + r14 :: str + r15 :: list + r16, r17 :: ptr + r18 :: dict + r19 :: str + r20 :: i32 + r21 :: bit + r22 :: str + r23 :: dict + r24 :: str + r25 :: object + r26 :: object[1] + r27 :: object_ptr + r28 :: object + r29 :: str + r30 :: dict + r31 :: str + r32 :: i32 + r33 :: bit + r34 :: None +L0: + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool +L1: + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L12 (error at :-1) else goto L2 +L2: + builtins = r4 :: module + dec_ref r4 +L3: + r5 = ('version',) + r6 = ('__version',) + r7 = 'importlib.metadata' + r8 = faster_hexbytes.globals :: static + r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) + if is_error(r9) goto L12 (error at :1) else goto L4 +L4: + importlib.metadata = r9 :: module + dec_ref r9 + r10 = ('HexBytes',) + r11 = 'faster_hexbytes.main' + r12 = faster_hexbytes.globals :: static + r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) + if is_error(r13) goto L12 (error at :5) else goto L5 +L5: + faster_hexbytes.main = r13 :: module + dec_ref r13 + r14 = 'HexBytes' + r15 = PyList_New(1) + if is_error(r15) goto L12 (error at :9) else goto L6 +L6: + r16 = get_element_ptr r15 ob_item :: PyListObject + r17 = load_mem r16 :: ptr* + inc_ref r14 + set_mem r17, r14 :: builtins.object* + r18 = faster_hexbytes.globals :: static + r19 = '__all__' + r20 = CPyDict_SetItem(r18, r19, r15) + dec_ref r15 + r21 = r20 >= 0 :: signed + if not r21 goto L12 (error at :9) else goto L7 :: bool +L7: + r22 = 'hexbytes' + r23 = faster_hexbytes.globals :: static + r24 = '__version' + r25 = CPyDict_GetItem(r23, r24) + if is_error(r25) goto L12 (error at :11) else goto L8 +L8: + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L12 (error at :11) else goto L9 +L9: + r29 = cast(str, r28) + if is_error(r29) goto L12 (error at :11) else goto L10 +L10: + r30 = faster_hexbytes.globals :: static + r31 = '__version__' + r32 = CPyDict_SetItem(r30, r31, r29) + dec_ref r29 + r33 = r32 >= 0 :: signed + if not r33 goto L12 (error at :11) else goto L11 :: bool +L11: + return 1 +L12: + r34 = :: None + return r34 + def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): __mypyc_self__, instance, owner, r0 :: object r1 :: bit @@ -788,109 +891,6 @@ L55: dec_ref r116 goto L48 -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4, r5, r6 :: object - r7 :: str - r8 :: dict - r9, r10 :: object - r11 :: str - r12 :: dict - r13 :: object - r14 :: str - r15 :: list - r16, r17 :: ptr - r18 :: dict - r19 :: str - r20 :: i32 - r21 :: bit - r22 :: str - r23 :: dict - r24 :: str - r25 :: object - r26 :: object[1] - r27 :: object_ptr - r28 :: object - r29 :: str - r30 :: dict - r31 :: str - r32 :: i32 - r33 :: bit - r34 :: None -L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool -L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L12 (error at :-1) else goto L2 -L2: - builtins = r4 :: module - dec_ref r4 -L3: - r5 = ('version',) - r6 = ('__version',) - r7 = 'importlib.metadata' - r8 = faster_hexbytes.globals :: static - r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) - if is_error(r9) goto L12 (error at :1) else goto L4 -L4: - importlib.metadata = r9 :: module - dec_ref r9 - r10 = ('HexBytes',) - r11 = 'faster_hexbytes.main' - r12 = faster_hexbytes.globals :: static - r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) - if is_error(r13) goto L12 (error at :5) else goto L5 -L5: - faster_hexbytes.main = r13 :: module - dec_ref r13 - r14 = 'HexBytes' - r15 = PyList_New(1) - if is_error(r15) goto L12 (error at :9) else goto L6 -L6: - r16 = get_element_ptr r15 ob_item :: PyListObject - r17 = load_mem r16 :: ptr* - inc_ref r14 - set_mem r17, r14 :: builtins.object* - r18 = faster_hexbytes.globals :: static - r19 = '__all__' - r20 = CPyDict_SetItem(r18, r19, r15) - dec_ref r15 - r21 = r20 >= 0 :: signed - if not r21 goto L12 (error at :9) else goto L7 :: bool -L7: - r22 = 'hexbytes' - r23 = faster_hexbytes.globals :: static - r24 = '__version' - r25 = CPyDict_GetItem(r23, r24) - if is_error(r25) goto L12 (error at :11) else goto L8 -L8: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L12 (error at :11) else goto L9 -L9: - r29 = cast(str, r28) - if is_error(r29) goto L12 (error at :11) else goto L10 -L10: - r30 = faster_hexbytes.globals :: static - r31 = '__version__' - r32 = CPyDict_SetItem(r30, r31, r29) - dec_ref r29 - r33 = r32 >= 0 :: signed - if not r33 goto L12 (error at :11) else goto L11 :: bool -L11: - return 1 -L12: - r34 = :: None - return r34 - def to_bytes(val): val :: union[bytes, str, object, bool, int] r0 :: bit From a5cee88b28664bb7d68ce6df9f6773a776a26767 Mon Sep 17 00:00:00 2001 From: BobTheBuidler Date: Tue, 30 Sep 2025 10:05:45 +0000 Subject: [PATCH 52/98] fix comment --- faster_hexbytes/_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faster_hexbytes/_utils.py b/faster_hexbytes/_utils.py index 991307f..baa1f95 100644 --- a/faster_hexbytes/_utils.py +++ b/faster_hexbytes/_utils.py @@ -10,7 +10,7 @@ def to_bytes(val: Union[bytes, str, bytearray, bool, int, memoryview]) -> bytes: """ - Equivalent to: `eth_utils.hexstr_if_str(eth_utils.to_bytes, val)` . + Equivalent to: `faster_eth_utils.hexstr_if_str(faster_eth_utils.to_bytes, val)` . Convert a hex string, integer, or bool, to a bytes representation. Alternatively, pass through bytes or bytearray as a bytes value. From c7c2ec9239a904cad8b9dac642873cfc7be77eaa Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 30 Sep 2025 10:07:00 +0000 Subject: [PATCH 53/98] chore: compile C files for source control --- build/ops.txt | 206 +++++++++++++++++++++++++------------------------- 1 file changed, 103 insertions(+), 103 deletions(-) diff --git a/build/ops.txt b/build/ops.txt index a8ead04..936de4d 100644 --- a/build/ops.txt +++ b/build/ops.txt @@ -1,106 +1,3 @@ -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4, r5, r6 :: object - r7 :: str - r8 :: dict - r9, r10 :: object - r11 :: str - r12 :: dict - r13 :: object - r14 :: str - r15 :: list - r16, r17 :: ptr - r18 :: dict - r19 :: str - r20 :: i32 - r21 :: bit - r22 :: str - r23 :: dict - r24 :: str - r25 :: object - r26 :: object[1] - r27 :: object_ptr - r28 :: object - r29 :: str - r30 :: dict - r31 :: str - r32 :: i32 - r33 :: bit - r34 :: None -L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool -L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L12 (error at :-1) else goto L2 -L2: - builtins = r4 :: module - dec_ref r4 -L3: - r5 = ('version',) - r6 = ('__version',) - r7 = 'importlib.metadata' - r8 = faster_hexbytes.globals :: static - r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) - if is_error(r9) goto L12 (error at :1) else goto L4 -L4: - importlib.metadata = r9 :: module - dec_ref r9 - r10 = ('HexBytes',) - r11 = 'faster_hexbytes.main' - r12 = faster_hexbytes.globals :: static - r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) - if is_error(r13) goto L12 (error at :5) else goto L5 -L5: - faster_hexbytes.main = r13 :: module - dec_ref r13 - r14 = 'HexBytes' - r15 = PyList_New(1) - if is_error(r15) goto L12 (error at :9) else goto L6 -L6: - r16 = get_element_ptr r15 ob_item :: PyListObject - r17 = load_mem r16 :: ptr* - inc_ref r14 - set_mem r17, r14 :: builtins.object* - r18 = faster_hexbytes.globals :: static - r19 = '__all__' - r20 = CPyDict_SetItem(r18, r19, r15) - dec_ref r15 - r21 = r20 >= 0 :: signed - if not r21 goto L12 (error at :9) else goto L7 :: bool -L7: - r22 = 'hexbytes' - r23 = faster_hexbytes.globals :: static - r24 = '__version' - r25 = CPyDict_GetItem(r23, r24) - if is_error(r25) goto L12 (error at :11) else goto L8 -L8: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L12 (error at :11) else goto L9 -L9: - r29 = cast(str, r28) - if is_error(r29) goto L12 (error at :11) else goto L10 -L10: - r30 = faster_hexbytes.globals :: static - r31 = '__version__' - r32 = CPyDict_SetItem(r30, r31, r29) - dec_ref r29 - r33 = r32 >= 0 :: signed - if not r33 goto L12 (error at :11) else goto L11 :: bool -L11: - return 1 -L12: - r34 = :: None - return r34 - def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): __mypyc_self__, instance, owner, r0 :: object r1 :: bit @@ -1464,3 +1361,106 @@ L7: L8: r26 = :: None return r26 + +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4, r5, r6 :: object + r7 :: str + r8 :: dict + r9, r10 :: object + r11 :: str + r12 :: dict + r13 :: object + r14 :: str + r15 :: list + r16, r17 :: ptr + r18 :: dict + r19 :: str + r20 :: i32 + r21 :: bit + r22 :: str + r23 :: dict + r24 :: str + r25 :: object + r26 :: object[1] + r27 :: object_ptr + r28 :: object + r29 :: str + r30 :: dict + r31 :: str + r32 :: i32 + r33 :: bit + r34 :: None +L0: + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool +L1: + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L12 (error at :-1) else goto L2 +L2: + builtins = r4 :: module + dec_ref r4 +L3: + r5 = ('version',) + r6 = ('__version',) + r7 = 'importlib.metadata' + r8 = faster_hexbytes.globals :: static + r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) + if is_error(r9) goto L12 (error at :1) else goto L4 +L4: + importlib.metadata = r9 :: module + dec_ref r9 + r10 = ('HexBytes',) + r11 = 'faster_hexbytes.main' + r12 = faster_hexbytes.globals :: static + r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) + if is_error(r13) goto L12 (error at :5) else goto L5 +L5: + faster_hexbytes.main = r13 :: module + dec_ref r13 + r14 = 'HexBytes' + r15 = PyList_New(1) + if is_error(r15) goto L12 (error at :9) else goto L6 +L6: + r16 = get_element_ptr r15 ob_item :: PyListObject + r17 = load_mem r16 :: ptr* + inc_ref r14 + set_mem r17, r14 :: builtins.object* + r18 = faster_hexbytes.globals :: static + r19 = '__all__' + r20 = CPyDict_SetItem(r18, r19, r15) + dec_ref r15 + r21 = r20 >= 0 :: signed + if not r21 goto L12 (error at :9) else goto L7 :: bool +L7: + r22 = 'hexbytes' + r23 = faster_hexbytes.globals :: static + r24 = '__version' + r25 = CPyDict_GetItem(r23, r24) + if is_error(r25) goto L12 (error at :11) else goto L8 +L8: + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L12 (error at :11) else goto L9 +L9: + r29 = cast(str, r28) + if is_error(r29) goto L12 (error at :11) else goto L10 +L10: + r30 = faster_hexbytes.globals :: static + r31 = '__version__' + r32 = CPyDict_SetItem(r30, r31, r29) + dec_ref r29 + r33 = r32 >= 0 :: signed + if not r33 goto L12 (error at :11) else goto L11 :: bool +L11: + return 1 +L12: + r34 = :: None + return r34 From 76b6c74f032ab1906306a8417f03e809911c357a Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Tue, 30 Sep 2025 15:17:54 -0400 Subject: [PATCH 54/98] feat: microoptimize `__repr__` (#11) * feat: microoptimize `__repr__` * chore: compile C files for source control --------- Co-authored-by: github-actions[bot] --- build/__native_6a32f4913d613d6a7ddf.c | 116 +++-------- build/ops.txt | 289 +++++++++++--------------- faster_hexbytes/main.py | 2 +- 3 files changed, 153 insertions(+), 254 deletions(-) diff --git a/build/__native_6a32f4913d613d6a7ddf.c b/build/__native_6a32f4913d613d6a7ddf.c index 7e84d32..2715d45 100644 --- a/build/__native_6a32f4913d613d6a7ddf.c +++ b/build/__native_6a32f4913d613d6a7ddf.c @@ -2045,97 +2045,38 @@ fail: ; PyObject *CPyDef_main_____repr___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self) { PyObject *cpy_r_r0; PyObject *cpy_r_r1; - PyObject *cpy_r_r2; - PyObject *cpy_r_r3; + PyObject **cpy_r_r3; PyObject *cpy_r_r4; - PyObject **cpy_r_r6; + PyObject *cpy_r_r5; + PyObject *cpy_r_r6; PyObject *cpy_r_r7; PyObject *cpy_r_r8; - PyObject *cpy_r_r9; - PyObject *cpy_r_r10; - PyObject *cpy_r_r11; - PyObject **cpy_r_r13; - PyObject *cpy_r_r14; - PyObject *cpy_r_r15; - PyObject *cpy_r_r16; - PyObject *cpy_r_r17; - CPyPtr cpy_r_r18; - CPyPtr cpy_r_r19; - CPyPtr cpy_r_r20; - CPyPtr cpy_r_r21; - PyObject *cpy_r_r22; - PyObject *cpy_r_r23; - cpy_r_r0 = CPyStatics[17]; /* '' */ - cpy_r_r1 = CPyStatics[38]; /* 'HexBytes(' */ - cpy_r_r2 = CPyStatics[19]; /* '{!r:{}}' */ - cpy_r_r3 = CPyStatics[24]; /* '0x' */ - cpy_r_r4 = CPyStatics[15]; /* 'hex' */ - PyObject *cpy_r_r5[1] = {cpy_r_self}; - cpy_r_r6 = (PyObject **)&cpy_r_r5; - cpy_r_r7 = PyObject_VectorcallMethod(cpy_r_r4, cpy_r_r6, 9223372036854775809ULL, 0); - if (unlikely(cpy_r_r7 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 73, CPyStatic_main___globals); - goto CPyL8; - } - if (likely(PyUnicode_Check(cpy_r_r7))) - cpy_r_r8 = cpy_r_r7; - else { - CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__repr__", 73, CPyStatic_main___globals, "str", cpy_r_r7); - goto CPyL8; - } - cpy_r_r9 = PyUnicode_Concat(cpy_r_r3, cpy_r_r8); - CPy_DECREF(cpy_r_r8); - if (unlikely(cpy_r_r9 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 73, CPyStatic_main___globals); - goto CPyL8; - } - cpy_r_r10 = CPyStatics[17]; /* '' */ - cpy_r_r11 = CPyStatics[20]; /* 'format' */ - PyObject *cpy_r_r12[3] = {cpy_r_r2, cpy_r_r9, cpy_r_r10}; - cpy_r_r13 = (PyObject **)&cpy_r_r12; - cpy_r_r14 = PyObject_VectorcallMethod(cpy_r_r11, cpy_r_r13, 9223372036854775811ULL, 0); - if (unlikely(cpy_r_r14 == NULL)) { + cpy_r_r0 = CPyStatics[38]; /* "HexBytes('0x" */ + cpy_r_r1 = CPyStatics[15]; /* 'hex' */ + PyObject *cpy_r_r2[1] = {cpy_r_self}; + cpy_r_r3 = (PyObject **)&cpy_r_r2; + cpy_r_r4 = PyObject_VectorcallMethod(cpy_r_r1, cpy_r_r3, 9223372036854775809ULL, 0); + if (unlikely(cpy_r_r4 == NULL)) { CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 73, CPyStatic_main___globals); - goto CPyL9; + goto CPyL4; } - CPy_DECREF(cpy_r_r9); - if (likely(PyUnicode_Check(cpy_r_r14))) - cpy_r_r15 = cpy_r_r14; + if (likely(PyUnicode_Check(cpy_r_r4))) + cpy_r_r5 = cpy_r_r4; else { - CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__repr__", 73, CPyStatic_main___globals, "str", cpy_r_r14); - goto CPyL8; - } - cpy_r_r16 = CPyStatics[39]; /* ')' */ - cpy_r_r17 = PyList_New(3); - if (unlikely(cpy_r_r17 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 73, CPyStatic_main___globals); - goto CPyL10; + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__repr__", 73, CPyStatic_main___globals, "str", cpy_r_r4); + goto CPyL4; } - cpy_r_r18 = (CPyPtr)&((PyListObject *)cpy_r_r17)->ob_item; - cpy_r_r19 = *(CPyPtr *)cpy_r_r18; - CPy_INCREF(cpy_r_r1); - *(PyObject * *)cpy_r_r19 = cpy_r_r1; - cpy_r_r20 = cpy_r_r19 + 8; - *(PyObject * *)cpy_r_r20 = cpy_r_r15; - CPy_INCREF(cpy_r_r16); - cpy_r_r21 = cpy_r_r19 + 16; - *(PyObject * *)cpy_r_r21 = cpy_r_r16; - cpy_r_r22 = PyUnicode_Join(cpy_r_r0, cpy_r_r17); - CPy_DECREF_NO_IMM(cpy_r_r17); - if (unlikely(cpy_r_r22 == NULL)) { + cpy_r_r6 = CPyStatics[39]; /* "')" */ + cpy_r_r7 = CPyStr_Build(3, cpy_r_r0, cpy_r_r5, cpy_r_r6); + CPy_DECREF(cpy_r_r5); + if (unlikely(cpy_r_r7 == NULL)) { CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 73, CPyStatic_main___globals); - goto CPyL8; + goto CPyL4; } - return cpy_r_r22; -CPyL8: ; - cpy_r_r23 = NULL; - return cpy_r_r23; -CPyL9: ; - CPy_DecRef(cpy_r_r9); - goto CPyL8; -CPyL10: ; - CPy_DecRef(cpy_r_r15); - goto CPyL8; + return cpy_r_r7; +CPyL4: ; + cpy_r_r8 = NULL; + return cpy_r_r8; } PyObject *CPyPy_main_____repr___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { @@ -2949,11 +2890,12 @@ const char * const CPyLit_Str[] = { "\002\022UnicodeDecodeError\vhex string ", "\002( may only contain [0-9a-fA-F] characters\bbinascii", "\006\031faster_hexbytes/_utils.py\b\005Final\005Union\006typing\tunhexlify", - "\b\v__getitem__\tHexBytes(\001)\rTYPE_CHECKING\bCallable\005Tuple\004Type\boverload", - "\005\rhexbytes.main\027faster_hexbytes/main.py\nmypyc_attr\017mypy_extensions\004Self", - "\005\021typing_extensions\bto_bytes\026faster_hexbytes._utils\tbytearray\tBytesLike", - "\006\a__new__\n_bytes_new\v__prepare__\fstaticmethod\b__repr__\tto_0x_hex", - "\005\n__reduce__\017__annotations__\026mypyc filler docstring\a__doc__\n__module__", + "\a\v__getitem__\fHexBytes(\'0x\002\')\rTYPE_CHECKING\bCallable\005Tuple\004Type", + "\004\boverload\rhexbytes.main\027faster_hexbytes/main.py\nmypyc_attr", + "\004\017mypy_extensions\004Self\021typing_extensions\bto_bytes", + "\005\026faster_hexbytes._utils\tbytearray\tBytesLike\a__new__\n_bytes_new", + "\005\v__prepare__\fstaticmethod\b__repr__\tto_0x_hex\n__reduce__", + "\004\017__annotations__\026mypyc filler docstring\a__doc__\n__module__", "\001\fnative_class", "", }; diff --git a/build/ops.txt b/build/ops.txt index 936de4d..0fa83b5 100644 --- a/build/ops.txt +++ b/build/ops.txt @@ -200,74 +200,31 @@ L4: def __repr___HexBytes_obj.__call__(__mypyc_self__, self): __mypyc_self__ :: faster_hexbytes.main.__repr___HexBytes_obj self :: faster_hexbytes.main.HexBytes - r0, r1, r2, r3, r4 :: str - r5 :: object[1] - r6 :: object_ptr - r7 :: object - r8, r9, r10, r11 :: str - r12 :: object[3] - r13 :: object_ptr - r14 :: object - r15, r16 :: str - r17 :: list - r18, r19, r20, r21 :: ptr - r22, r23 :: str + r0, r1 :: str + r2 :: object[1] + r3 :: object_ptr + r4 :: object + r5, r6, r7, r8 :: str L0: - r0 = '' - r1 = 'HexBytes(' - r2 = '{!r:{}}' - r3 = '0x' - r4 = 'hex' - r5 = [self] - r6 = load_address r5 - r7 = PyObject_VectorcallMethod(r4, r6, 9223372036854775809, 0) - if is_error(r7) goto L8 (error at __repr__:73) else goto L1 + r0 = "HexBytes('0x" + r1 = 'hex' + r2 = [self] + r3 = load_address r2 + r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775809, 0) + if is_error(r4) goto L4 (error at __repr__:73) else goto L1 L1: - r8 = cast(str, r7) - if is_error(r8) goto L8 (error at __repr__:73) else goto L2 + r5 = cast(str, r4) + if is_error(r5) goto L4 (error at __repr__:73) else goto L2 L2: - r9 = PyUnicode_Concat(r3, r8) - dec_ref r8 - if is_error(r9) goto L8 (error at __repr__:73) else goto L3 + r6 = "')" + r7 = CPyStr_Build(3, r0, r5, r6) + dec_ref r5 + if is_error(r7) goto L4 (error at __repr__:73) else goto L3 L3: - r10 = '' - r11 = 'format' - r12 = [r2, r9, r10] - r13 = load_address r12 - r14 = PyObject_VectorcallMethod(r11, r13, 9223372036854775811, 0) - if is_error(r14) goto L9 (error at __repr__:73) else goto L4 + return r7 L4: - dec_ref r9 - r15 = cast(str, r14) - if is_error(r15) goto L8 (error at __repr__:73) else goto L5 -L5: - r16 = ')' - r17 = PyList_New(3) - if is_error(r17) goto L10 (error at __repr__:73) else goto L6 -L6: - r18 = get_element_ptr r17 ob_item :: PyListObject - r19 = load_mem r18 :: ptr* - inc_ref r1 - set_mem r19, r1 :: builtins.object* - r20 = r19 + 8 - set_mem r20, r15 :: builtins.object* - inc_ref r16 - r21 = r19 + 16 - set_mem r21, r16 :: builtins.object* - r22 = PyUnicode_Join(r0, r17) - dec_ref r17 - if is_error(r22) goto L8 (error at __repr__:73) else goto L7 -L7: - return r22 -L8: - r23 = :: str - return r23 -L9: - dec_ref r9 - goto L8 -L10: - dec_ref r15 - goto L8 + r8 = :: str + return r8 def to_0x_hex_HexBytes_obj.__get__(__mypyc_self__, instance, owner): __mypyc_self__, instance, owner, r0 :: object @@ -788,6 +745,109 @@ L55: dec_ref r116 goto L48 +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4, r5, r6 :: object + r7 :: str + r8 :: dict + r9, r10 :: object + r11 :: str + r12 :: dict + r13 :: object + r14 :: str + r15 :: list + r16, r17 :: ptr + r18 :: dict + r19 :: str + r20 :: i32 + r21 :: bit + r22 :: str + r23 :: dict + r24 :: str + r25 :: object + r26 :: object[1] + r27 :: object_ptr + r28 :: object + r29 :: str + r30 :: dict + r31 :: str + r32 :: i32 + r33 :: bit + r34 :: None +L0: + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool +L1: + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L12 (error at :-1) else goto L2 +L2: + builtins = r4 :: module + dec_ref r4 +L3: + r5 = ('version',) + r6 = ('__version',) + r7 = 'importlib.metadata' + r8 = faster_hexbytes.globals :: static + r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) + if is_error(r9) goto L12 (error at :1) else goto L4 +L4: + importlib.metadata = r9 :: module + dec_ref r9 + r10 = ('HexBytes',) + r11 = 'faster_hexbytes.main' + r12 = faster_hexbytes.globals :: static + r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) + if is_error(r13) goto L12 (error at :5) else goto L5 +L5: + faster_hexbytes.main = r13 :: module + dec_ref r13 + r14 = 'HexBytes' + r15 = PyList_New(1) + if is_error(r15) goto L12 (error at :9) else goto L6 +L6: + r16 = get_element_ptr r15 ob_item :: PyListObject + r17 = load_mem r16 :: ptr* + inc_ref r14 + set_mem r17, r14 :: builtins.object* + r18 = faster_hexbytes.globals :: static + r19 = '__all__' + r20 = CPyDict_SetItem(r18, r19, r15) + dec_ref r15 + r21 = r20 >= 0 :: signed + if not r21 goto L12 (error at :9) else goto L7 :: bool +L7: + r22 = 'hexbytes' + r23 = faster_hexbytes.globals :: static + r24 = '__version' + r25 = CPyDict_GetItem(r23, r24) + if is_error(r25) goto L12 (error at :11) else goto L8 +L8: + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L12 (error at :11) else goto L9 +L9: + r29 = cast(str, r28) + if is_error(r29) goto L12 (error at :11) else goto L10 +L10: + r30 = faster_hexbytes.globals :: static + r31 = '__version__' + r32 = CPyDict_SetItem(r30, r31, r29) + dec_ref r29 + r33 = r32 >= 0 :: signed + if not r33 goto L12 (error at :11) else goto L11 :: bool +L11: + return 1 +L12: + r34 = :: None + return r34 + def to_bytes(val): val :: union[bytes, str, object, bool, int] r0 :: bit @@ -1361,106 +1421,3 @@ L7: L8: r26 = :: None return r26 - -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4, r5, r6 :: object - r7 :: str - r8 :: dict - r9, r10 :: object - r11 :: str - r12 :: dict - r13 :: object - r14 :: str - r15 :: list - r16, r17 :: ptr - r18 :: dict - r19 :: str - r20 :: i32 - r21 :: bit - r22 :: str - r23 :: dict - r24 :: str - r25 :: object - r26 :: object[1] - r27 :: object_ptr - r28 :: object - r29 :: str - r30 :: dict - r31 :: str - r32 :: i32 - r33 :: bit - r34 :: None -L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool -L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L12 (error at :-1) else goto L2 -L2: - builtins = r4 :: module - dec_ref r4 -L3: - r5 = ('version',) - r6 = ('__version',) - r7 = 'importlib.metadata' - r8 = faster_hexbytes.globals :: static - r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) - if is_error(r9) goto L12 (error at :1) else goto L4 -L4: - importlib.metadata = r9 :: module - dec_ref r9 - r10 = ('HexBytes',) - r11 = 'faster_hexbytes.main' - r12 = faster_hexbytes.globals :: static - r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) - if is_error(r13) goto L12 (error at :5) else goto L5 -L5: - faster_hexbytes.main = r13 :: module - dec_ref r13 - r14 = 'HexBytes' - r15 = PyList_New(1) - if is_error(r15) goto L12 (error at :9) else goto L6 -L6: - r16 = get_element_ptr r15 ob_item :: PyListObject - r17 = load_mem r16 :: ptr* - inc_ref r14 - set_mem r17, r14 :: builtins.object* - r18 = faster_hexbytes.globals :: static - r19 = '__all__' - r20 = CPyDict_SetItem(r18, r19, r15) - dec_ref r15 - r21 = r20 >= 0 :: signed - if not r21 goto L12 (error at :9) else goto L7 :: bool -L7: - r22 = 'hexbytes' - r23 = faster_hexbytes.globals :: static - r24 = '__version' - r25 = CPyDict_GetItem(r23, r24) - if is_error(r25) goto L12 (error at :11) else goto L8 -L8: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L12 (error at :11) else goto L9 -L9: - r29 = cast(str, r28) - if is_error(r29) goto L12 (error at :11) else goto L10 -L10: - r30 = faster_hexbytes.globals :: static - r31 = '__version__' - r32 = CPyDict_SetItem(r30, r31, r29) - dec_ref r29 - r33 = r32 >= 0 :: signed - if not r33 goto L12 (error at :11) else goto L11 :: bool -L11: - return 1 -L12: - r34 = :: None - return r34 diff --git a/faster_hexbytes/main.py b/faster_hexbytes/main.py index ae9958a..8cbc5c2 100644 --- a/faster_hexbytes/main.py +++ b/faster_hexbytes/main.py @@ -70,7 +70,7 @@ def __getitem__( # noqa: F811 return cls(result) def __repr__(self) -> str: - return f"HexBytes({'0x' + self.hex()!r})" + return f"HexBytes('0x{self.hex()}')" def to_0x_hex(self) -> str: """ From 5ef715f86374f61bfdf52e2885f4ac9cd7b24a31 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 30 Sep 2025 19:18:37 +0000 Subject: [PATCH 55/98] chore: compile C files for source control --- build/ops.txt | 2590 ++++++++++++++++++++++++------------------------- 1 file changed, 1295 insertions(+), 1295 deletions(-) diff --git a/build/ops.txt b/build/ops.txt index 0fa83b5..390263a 100644 --- a/build/ops.txt +++ b/build/ops.txt @@ -1,454 +1,608 @@ -def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __new___HexBytes_obj.__call__(__mypyc_self__, cls, val): - __mypyc_self__ :: faster_hexbytes.main.__new___HexBytes_obj - cls :: object - val :: union[bytes, str, bool, object, int] - r0 :: bytes - r1 :: object - r2 :: bool - r3 :: object[2] - r4 :: object_ptr - r5 :: object - r6, r7 :: faster_hexbytes.main.HexBytes -L0: - r0 = to_bytes(val) - if is_error(r0) goto L7 (error at __new__:49) else goto L1 -L1: - r1 = faster_hexbytes.main._bytes_new :: static - if is_error(r1) goto L8 else goto L4 -L2: - r2 = raise NameError('value for final name "_bytes_new" was not set') - if not r2 goto L7 (error at __new__:50) else goto L3 :: bool -L3: - unreachable -L4: - r3 = [cls, r0] - r4 = load_address r3 - r5 = PyObject_Vectorcall(r1, r4, 2, 0) - if is_error(r5) goto L9 (error at __new__:50) else goto L5 -L5: - dec_ref r0 - r6 = cast(faster_hexbytes.main.HexBytes, r5) - if is_error(r6) goto L7 (error at __new__:50) else goto L6 -L6: - return r6 -L7: - r7 = :: faster_hexbytes.main.HexBytes - return r7 -L8: - dec_ref r0 - goto L2 -L9: - dec_ref r0 - goto L7 - -def __getitem___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __getitem___HexBytes_obj.__call__(__mypyc_self__, self, key): - __mypyc_self__ :: faster_hexbytes.main.__getitem___HexBytes_obj - self :: faster_hexbytes.main.HexBytes - key, r0 :: object - r1 :: str - r2 :: object[3] - r3 :: object_ptr - r4 :: object - r5 :: union[int, bytes] - r6 :: bit - r7 :: int - r8, r9, r10 :: object +def to_bytes(val): + val :: union[bytes, str, object, bool, int] + r0 :: bit + r1 :: bytes + r2 :: bit + r3 :: str + r4 :: bytes + r5 :: bit + r6 :: object + r7 :: object[1] + r8 :: object_ptr + r9 :: object + r10 :: bytes r11 :: bit - r12 :: bytes - r13 :: object - r14 :: object[1] - r15 :: object_ptr - r16 :: object - r17 :: faster_hexbytes.main.HexBytes - r18 :: bytes - r19 :: object[1] - r20 :: object_ptr - r21 :: object - r22 :: faster_hexbytes.main.HexBytes - r23 :: union[int, faster_hexbytes.main.HexBytes] + r12 :: bool + r13, r14, r15 :: bytes + r16 :: bit + r17 :: int + r18 :: native_int + r19 :: bit + r20 :: native_int + r21, r22 :: bit + r23 :: bool + r24 :: bit + r25 :: str + r26 :: int + r27, r28, r29 :: str + r30 :: object + r31 :: str + r32 :: object + r33 :: object[1] + r34 :: object_ptr + r35 :: object + r36 :: int + r37 :: object + r38 :: str + r39, r40 :: object + r41 :: object[1] + r42 :: object_ptr + r43 :: object + r44 :: str + r45 :: bytes + r46 :: object + r47 :: str + r48 :: object + r49 :: i32 + r50 :: bit + r51 :: bool + r52 :: object + r53 :: object[1] + r54 :: object_ptr + r55 :: object + r56 :: bytes + r57, r58, r59, r60, r61 :: str + r62 :: object[3] + r63 :: object_ptr + r64 :: object + r65, r66 :: str + r67 :: object + r68, r69 :: str + r70 :: object[3] + r71 :: object_ptr + r72 :: object + r73 :: str + r74 :: list + r75, r76, r77, r78, r79, r80 :: ptr + r81 :: str + r82 :: object + r83 :: str + r84 :: object + r85 :: object[1] + r86 :: object_ptr + r87 :: object + r88 :: bytes L0: - r0 = load_address PyBytes_Type - r1 = '__getitem__' - r2 = [r0, self, key] - r3 = load_address r2 - r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775811, 0) - if is_error(r4) goto L14 (error at __getitem__:63) else goto L1 + r0 = PyBytes_Check(val) + if r0 goto L1 else goto L3 :: bool L1: - r5 = cast(union[int, bytes], r4) - if is_error(r5) goto L14 (error at __getitem__:63) else goto L2 + inc_ref val + r1 = cast(bytes, val) + if is_error(r1) goto L51 (error at to_bytes:19) else goto L2 L2: - r6 = PyLong_Check(r5) - if r6 goto L3 else goto L5 :: bool + return r1 L3: - r7 = unbox(int, r5) - dec_ref r5 - if is_error(r7) goto L14 (error at __getitem__:65) else goto L4 + r2 = PyUnicode_Check(val) + if r2 goto L4 else goto L7 :: bool L4: - r8 = box(int, r7) - return r8 + inc_ref val + r3 = cast(str, val) + if is_error(r3) goto L51 (error at to_bytes:21) else goto L5 L5: - r9 = CPy_TYPE(self) - r10 = faster_hexbytes.main.HexBytes :: type - r11 = r9 == r10 - if r11 goto L15 else goto L10 :: bool + r4 = hexstr_to_bytes(r3) + dec_ref r3 + if is_error(r4) goto L51 (error at to_bytes:21) else goto L6 L6: - r12 = cast(bytes, r5) - if is_error(r12) goto L14 (error at __getitem__:69) else goto L7 + return r4 L7: - r13 = faster_hexbytes.main.HexBytes :: type - r14 = [r12] - r15 = load_address r14 - r16 = PyObject_Vectorcall(r13, r15, 1, 0) - if is_error(r16) goto L16 (error at __getitem__:69) else goto L8 + r5 = PyByteArray_Check(val) + if r5 goto L8 else goto L11 :: bool L8: - dec_ref r12 - r17 = cast(faster_hexbytes.main.HexBytes, r16) - if is_error(r17) goto L14 (error at __getitem__:69) else goto L9 + r6 = load_address PyBytes_Type + r7 = [val] + r8 = load_address r7 + r9 = PyObject_Vectorcall(r6, r8, 1, 0) + if is_error(r9) goto L51 (error at to_bytes:23) else goto L9 L9: - return r17 + r10 = cast(bytes, r9) + if is_error(r10) goto L51 (error at to_bytes:23) else goto L10 L10: - r18 = cast(bytes, r5) - if is_error(r18) goto L17 (error at __getitem__:70) else goto L11 + return r10 L11: - r19 = [r18] - r20 = load_address r19 - r21 = PyObject_Vectorcall(r9, r20, 1, 0) - dec_ref r9 - if is_error(r21) goto L18 (error at __getitem__:70) else goto L12 + r11 = PyBool_Check(val) + if r11 goto L12 else goto L17 :: bool L12: - dec_ref r18 - r22 = cast(faster_hexbytes.main.HexBytes, r21) - if is_error(r22) goto L14 (error at __getitem__:70) else goto L13 + r12 = unbox(bool, val) + if is_error(r12) goto L51 (error at to_bytes:25) else goto L13 L13: - return r22 + if r12 goto L14 else goto L15 :: bool L14: - r23 = :: union[int, faster_hexbytes.main.HexBytes] - return r23 -L15: - dec_ref r9 - goto L6 + r13 = b'\x01' + inc_ref r13 + r14 = r13 + goto L16 +L15: + r15 = b'\x00' + inc_ref r15 + r14 = r15 L16: - dec_ref r12 - goto L14 + return r14 L17: - dec_ref r9 - goto L14 + r16 = PyLong_Check(val) + if r16 goto L18 else goto L37 :: bool L18: - dec_ref r18 - goto L14 + r17 = unbox(int, val) + if is_error(r17) goto L51 (error at to_bytes:29) else goto L19 +L19: + r18 = r17 & 1 + r19 = r18 != 0 + if r19 goto L21 else goto L20 :: bool +L20: + r20 = 0 & 1 + r21 = r20 != 0 + if r21 goto L21 else goto L22 :: bool +L21: + r22 = CPyTagged_IsLt_(r17, 0) + r23 = r22 + goto L23 +L22: + r24 = r17 < 0 :: signed + r23 = r24 +L23: + dec_ref r17 :: int + if r23 goto L24 else goto L31 :: bool +L24: + r25 = 'Cannot convert negative integer ' + r26 = unbox(int, val) + if is_error(r26) goto L51 (error at to_bytes:30) else goto L25 +L25: + r27 = CPyTagged_Str(r26) + dec_ref r26 :: int + if is_error(r27) goto L51 (error at to_bytes:30) else goto L26 +L26: + r28 = ' to bytes' + r29 = CPyStr_Build(3, r25, r27, r28) + dec_ref r27 + if is_error(r29) goto L51 (error at to_bytes:30) else goto L27 +L27: + r30 = builtins :: module + r31 = 'ValueError' + r32 = CPyObject_GetAttr(r30, r31) + if is_error(r32) goto L52 (error at to_bytes:30) else goto L28 +L28: + r33 = [r29] + r34 = load_address r33 + r35 = PyObject_Vectorcall(r32, r34, 1, 0) + dec_ref r32 + if is_error(r35) goto L52 (error at to_bytes:30) else goto L29 +L29: + dec_ref r29 + CPy_Raise(r35) + dec_ref r35 + if not 0 goto L51 (error at to_bytes:30) else goto L30 :: bool +L30: + unreachable +L31: + r36 = unbox(int, val) + if is_error(r36) goto L51 (error at to_bytes:32) else goto L32 +L32: + r37 = builtins :: module + r38 = 'hex' + r39 = CPyObject_GetAttr(r37, r38) + if is_error(r39) goto L53 (error at to_bytes:32) else goto L33 +L33: + r40 = box(int, r36) + r41 = [r40] + r42 = load_address r41 + r43 = PyObject_Vectorcall(r39, r42, 1, 0) + dec_ref r39 + if is_error(r43) goto L54 (error at to_bytes:32) else goto L34 +L34: + dec_ref r40 + r44 = cast(str, r43) + if is_error(r44) goto L51 (error at to_bytes:32) else goto L35 +L35: + r45 = to_bytes(r44) + dec_ref r44 + if is_error(r45) goto L51 (error at to_bytes:32) else goto L36 +L36: + return r45 +L37: + r46 = builtins :: module + r47 = 'memoryview' + r48 = CPyObject_GetAttr(r46, r47) + if is_error(r48) goto L51 (error at to_bytes:33) else goto L38 +L38: + r49 = PyObject_IsInstance(val, r48) + dec_ref r48 + r50 = r49 >= 0 :: signed + if not r50 goto L51 (error at to_bytes:33) else goto L39 :: bool +L39: + r51 = truncate r49: i32 to builtins.bool + if r51 goto L40 else goto L43 :: bool +L40: + r52 = load_address PyBytes_Type + r53 = [val] + r54 = load_address r53 + r55 = PyObject_Vectorcall(r52, r54, 1, 0) + if is_error(r55) goto L51 (error at to_bytes:34) else goto L41 +L41: + r56 = cast(bytes, r55) + if is_error(r56) goto L51 (error at to_bytes:34) else goto L42 +L42: + return r56 +L43: + r57 = '' + r58 = 'Cannot convert ' + r59 = '{!r:{}}' + r60 = '' + r61 = 'format' + r62 = [r59, val, r60] + r63 = load_address r62 + r64 = PyObject_VectorcallMethod(r61, r63, 9223372036854775811, 0) + if is_error(r64) goto L51 (error at to_bytes:36) else goto L44 +L44: + r65 = ' of type ' + r66 = '{:{}}' + r67 = CPy_TYPE(val) + r68 = '' + r69 = 'format' + r70 = [r66, r67, r68] + r71 = load_address r70 + r72 = PyObject_VectorcallMethod(r69, r71, 9223372036854775811, 0) + if is_error(r72) goto L55 (error at to_bytes:36) else goto L45 +L45: + dec_ref r67 + r73 = ' to bytes' + r74 = PyList_New(5) + if is_error(r74) goto L56 (error at to_bytes:36) else goto L46 +L46: + r75 = get_element_ptr r74 ob_item :: PyListObject + r76 = load_mem r75 :: ptr* + inc_ref r58 + set_mem r76, r58 :: builtins.object* + r77 = r76 + 8 + set_mem r77, r64 :: builtins.object* + inc_ref r65 + r78 = r76 + 16 + set_mem r78, r65 :: builtins.object* + r79 = r76 + 24 + set_mem r79, r72 :: builtins.object* + inc_ref r73 + r80 = r76 + 32 + set_mem r80, r73 :: builtins.object* + r81 = PyUnicode_Join(r57, r74) + dec_ref r74 + if is_error(r81) goto L51 (error at to_bytes:36) else goto L47 +L47: + r82 = builtins :: module + r83 = 'TypeError' + r84 = CPyObject_GetAttr(r82, r83) + if is_error(r84) goto L57 (error at to_bytes:36) else goto L48 +L48: + r85 = [r81] + r86 = load_address r85 + r87 = PyObject_Vectorcall(r84, r86, 1, 0) + dec_ref r84 + if is_error(r87) goto L57 (error at to_bytes:36) else goto L49 +L49: + dec_ref r81 + CPy_Raise(r87) + dec_ref r87 + if not 0 goto L51 (error at to_bytes:36) else goto L50 :: bool +L50: + unreachable +L51: + r88 = :: bytes + return r88 +L52: + dec_ref r29 + goto L51 +L53: + dec_ref r36 :: int + goto L51 +L54: + dec_ref r40 + goto L51 +L55: + dec_ref r64 + dec_ref r67 + goto L51 +L56: + dec_ref r64 + dec_ref r72 + goto L51 +L57: + dec_ref r81 + goto L51 -def __repr___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object +def hexstr_to_bytes(hexstr): + hexstr, r0, r1 :: str + r2 :: tuple[str, str] + r3 :: object + r4 :: bool + r5 :: object + r6, non_prefixed_hex :: str + r7 :: native_int + r8 :: bit + r9 :: short_int + r10 :: int + r11 :: bit + r12, r13, padded_hex :: str + r14 :: bytes + r15 :: tuple[object, object, object] + r16 :: object + r17 :: str + r18 :: object + r19 :: bit + r20, r21, r22 :: str + r23 :: object + r24 :: str + r25 :: object + r26 :: object[1] + r27 :: object_ptr + r28 :: object + r29 :: bit + r30 :: object + r31 :: bool + r32 :: object[1] + r33 :: object_ptr + r34 :: object + r35, r36 :: bytes L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool + r0 = '0x' + r1 = '0X' + inc_ref r0 + inc_ref r1 + r2 = (r0, r1) + r3 = box(tuple[str, str], r2) + r4 = CPyStr_Startswith(hexstr, r3) + dec_ref r3 + if is_error(r4) goto L31 (error at hexstr_to_bytes:40) else goto L1 L1: - inc_ref __mypyc_self__ - return __mypyc_self__ + if r4 goto L2 else goto L5 :: bool L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __repr___HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.__repr___HexBytes_obj - self :: faster_hexbytes.main.HexBytes - r0, r1 :: str - r2 :: object[1] - r3 :: object_ptr - r4 :: object - r5, r6, r7, r8 :: str -L0: - r0 = "HexBytes('0x" - r1 = 'hex' - r2 = [self] - r3 = load_address r2 - r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775809, 0) - if is_error(r4) goto L4 (error at __repr__:73) else goto L1 -L1: - r5 = cast(str, r4) - if is_error(r5) goto L4 (error at __repr__:73) else goto L2 -L2: - r6 = "')" - r7 = CPyStr_Build(3, r0, r5, r6) - dec_ref r5 - if is_error(r7) goto L4 (error at __repr__:73) else goto L3 -L3: - return r7 -L4: - r8 = :: str - return r8 - -def to_0x_hex_HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 + r5 = CPyStr_GetSlice(hexstr, 4, 9223372036854775806) + if is_error(r5) goto L31 (error at hexstr_to_bytes:41) else goto L3 L3: - return r2 + r6 = cast(str, r5) + if is_error(r6) goto L31 (error at hexstr_to_bytes:41) else goto L4 L4: - r3 = :: object - return r3 + non_prefixed_hex = r6 + goto L6 +L5: + inc_ref hexstr + non_prefixed_hex = hexstr +L6: + r7 = CPyStr_Size_size_t(hexstr) + r8 = r7 >= 0 :: signed + if not r8 goto L32 (error at hexstr_to_bytes:46) else goto L7 :: bool +L7: + r9 = r7 << 1 + r10 = CPyTagged_Remainder(r9, 4) + if is_error(r10) goto L32 (error at hexstr_to_bytes:46) else goto L8 +L8: + r11 = r10 != 0 + dec_ref r10 :: int + if r11 goto L9 else goto L11 :: bool +L9: + r12 = '0' + r13 = PyUnicode_Concat(r12, non_prefixed_hex) + dec_ref non_prefixed_hex + if is_error(r13) goto L31 (error at hexstr_to_bytes:47) else goto L10 +L10: + padded_hex = r13 + goto L12 +L11: + padded_hex = non_prefixed_hex +L12: + r14 = PyUnicode_AsASCIIString(padded_hex) + if is_error(r14) goto L14 (error at hexstr_to_bytes:52) else goto L33 +L13: + goto L25 +L14: + r15 = CPy_CatchError() + r16 = builtins :: module + r17 = 'UnicodeDecodeError' + r18 = CPyObject_GetAttr(r16, r17) + if is_error(r18) goto L34 (error at hexstr_to_bytes:53) else goto L15 +L15: + r19 = CPy_ExceptionMatches(r18) + dec_ref r18 + if r19 goto L16 else goto L35 :: bool +L16: + r20 = 'hex string ' + r21 = ' may only contain [0-9a-fA-F] characters' + r22 = CPyStr_Build(3, r20, padded_hex, r21) + dec_ref padded_hex + if is_error(r22) goto L23 (error at hexstr_to_bytes:55) else goto L17 +L17: + r23 = builtins :: module + r24 = 'ValueError' + r25 = CPyObject_GetAttr(r23, r24) + if is_error(r25) goto L36 (error at hexstr_to_bytes:54) else goto L18 +L18: + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L36 (error at hexstr_to_bytes:54) else goto L19 +L19: + dec_ref r22 + CPy_Raise(r28) + dec_ref r28 + if not 0 goto L23 (error at hexstr_to_bytes:54) else goto L37 :: bool +L20: + unreachable +L21: + CPy_Reraise() + if not 0 goto L23 else goto L38 :: bool +L22: + unreachable +L23: + CPy_RestoreExcInfo(r15) + dec_ref r15 + r29 = CPy_KeepPropagating() + if not r29 goto L31 else goto L24 :: bool +L24: + unreachable +L25: + r30 = faster_hexbytes._utils.unhexlify :: static + if is_error(r30) goto L39 else goto L28 +L26: + r31 = raise NameError('value for final name "unhexlify" was not set') + if not r31 goto L31 (error at hexstr_to_bytes:58) else goto L27 :: bool +L27: + unreachable +L28: + r32 = [r14] + r33 = load_address r32 + r34 = PyObject_Vectorcall(r30, r33, 1, 0) + if is_error(r34) goto L40 (error at hexstr_to_bytes:58) else goto L29 +L29: + dec_ref r14 + r35 = cast(bytes, r34) + if is_error(r35) goto L31 (error at hexstr_to_bytes:58) else goto L30 +L30: + return r35 +L31: + r36 = :: bytes + return r36 +L32: + dec_ref non_prefixed_hex + goto L31 +L33: + dec_ref padded_hex + goto L13 +L34: + dec_ref padded_hex + goto L23 +L35: + dec_ref padded_hex + goto L21 +L36: + dec_ref r22 + goto L23 +L37: + dec_ref r15 + goto L20 +L38: + dec_ref r15 + goto L22 +L39: + dec_ref r14 + goto L26 +L40: + dec_ref r14 + goto L31 -def to_0x_hex_HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.to_0x_hex_HexBytes_obj - self :: faster_hexbytes.main.HexBytes - r0, r1 :: str - r2 :: object[1] - r3 :: object_ptr +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str r4 :: object - r5, r6, r7 :: str + r5 :: object_ptr + r6 :: object_ptr[1] + r7 :: c_ptr + r8 :: native_int[1] + r9 :: c_ptr + r10 :: object + r11 :: dict + r12, r13 :: str + r14 :: bit + r15 :: object + r16 :: str + r17 :: dict + r18, r19 :: object + r20 :: str + r21 :: object + r22 :: dict + r23 :: str + r24 :: i32 + r25 :: bit + r26 :: None L0: - r0 = '0x' - r1 = 'hex' - r2 = [self] - r3 = load_address r2 - r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775809, 0) - if is_error(r4) goto L4 (error at to_0x_hex:79) else goto L1 + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool L1: - r5 = cast(str, r4) - if is_error(r5) goto L4 (error at to_0x_hex:79) else goto L2 + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L8 (error at :-1) else goto L2 L2: - r6 = CPyStr_Build(2, r0, r5) - dec_ref r5 - if is_error(r6) goto L4 (error at to_0x_hex:79) else goto L3 + builtins = r4 :: module + dec_ref r4 L3: - return r6 + r5 = load_address binascii :: module + r6 = [r5] + r7 = load_address r6 + r8 = [1] + r9 = load_address r8 + r10 = (('binascii', 'binascii', 'binascii'),) + r11 = faster_hexbytes._utils.globals :: static + r12 = 'faster_hexbytes/_utils.py' + r13 = '' + r14 = CPyImport_ImportMany(r10, r7, r11, r12, r13, r9) + if not r14 goto L8 else goto L4 :: bool L4: - r7 = :: str - return r7 - -def __reduce___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __reduce___HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.__reduce___HexBytes_obj - self :: faster_hexbytes.main.HexBytes - r0 :: object - r1 :: bool - r2, r3 :: object - r4 :: object[1] - r5 :: object_ptr - r6 :: object - r7 :: bytes - r8 :: tuple[object, bytes] - r9, r10 :: tuple[object, tuple[object, bytes]] -L0: - r0 = faster_hexbytes.main._bytes_new :: static - if is_error(r0) goto L1 else goto L3 -L1: - r1 = raise NameError('value for final name "_bytes_new" was not set') - if not r1 goto L6 (error at __reduce__:89) else goto L2 :: bool -L2: - unreachable -L3: - r2 = CPy_TYPE(self) - r3 = load_address PyBytes_Type - r4 = [self] - r5 = load_address r4 - r6 = PyObject_Vectorcall(r3, r5, 1, 0) - if is_error(r6) goto L7 (error at __reduce__:89) else goto L4 -L4: - r7 = cast(bytes, r6) - if is_error(r7) goto L7 (error at __reduce__:89) else goto L5 + r15 = ('Final', 'Union') + r16 = 'typing' + r17 = faster_hexbytes._utils.globals :: static + r18 = CPyImport_ImportFromMany(r16, r15, r15, r17) + if is_error(r18) goto L8 (error at :2) else goto L5 L5: - r8 = (r2, r7) - inc_ref r0 - r9 = (r0, r8) - return r9 + typing = r18 :: module + dec_ref r18 + r19 = binascii :: module + r20 = 'unhexlify' + r21 = CPyObject_GetAttr(r19, r20) + if is_error(r21) goto L8 (error at :8) else goto L6 L6: - r10 = :: tuple[object, tuple[object, bytes]] - return r10 + faster_hexbytes._utils.unhexlify = r21 :: static + r22 = faster_hexbytes._utils.globals :: static + r23 = 'unhexlify' + r24 = CPyDict_SetItem(r22, r23, r21) + dec_ref r21 + r25 = r24 >= 0 :: signed + if not r25 goto L8 (error at :8) else goto L7 :: bool L7: - dec_ref r2 - goto L6 + return 1 +L8: + r26 = :: None + return r26 def __top_level__(): r0, r1 :: object r2 :: bit r3 :: str - r4, r5 :: object - r6 :: str - r7 :: dict - r8 :: object - r9 :: object_ptr - r10 :: object_ptr[1] - r11 :: c_ptr - r12 :: native_int[1] - r13 :: c_ptr - r14 :: object - r15 :: dict - r16, r17 :: str - r18 :: bit - r19 :: object - r20 :: str - r21 :: dict - r22, r23 :: object + r4, r5, r6 :: object + r7 :: str + r8 :: dict + r9, r10 :: object + r11 :: str + r12 :: dict + r13 :: object + r14 :: str + r15 :: list + r16, r17 :: ptr + r18 :: dict + r19 :: str + r20 :: i32 + r21 :: bit + r22 :: str + r23 :: dict r24 :: str - r25 :: dict - r26, r27 :: object - r28 :: str - r29 :: dict - r30 :: object - r31 :: dict - r32 :: str - r33, r34, r35, r36, r37 :: object - r38 :: str - r39, r40, r41 :: object - r42 :: str - r43 :: object - r44 :: tuple[object, object, object, object, object, object] - r45, r46 :: object - r47 :: dict - r48 :: str - r49 :: i32 - r50 :: bit - r51 :: object - r52 :: str - r53 :: object - r54 :: dict - r55 :: str - r56 :: i32 - r57 :: bit - r58 :: object - r59 :: str - r60 :: object - r61 :: tuple - r62, r63 :: object - r64 :: str - r65 :: bool - r66, r67 :: str - r68 :: object - r69 :: object[2] - r70 :: object_ptr - r71 :: object - r72, r73, r74, r75 :: dict - r76 :: faster_hexbytes.main.__new___HexBytes_obj - r77 :: object - r78 :: str - r79 :: object - r80 :: object[1] - r81 :: object_ptr - r82 :: object - r83 :: str - r84 :: i32 - r85 :: bit - r86 :: faster_hexbytes.main.__getitem___HexBytes_obj - r87 :: str - r88 :: i32 - r89 :: bit - r90 :: faster_hexbytes.main.__repr___HexBytes_obj - r91 :: str - r92 :: i32 - r93 :: bit - r94 :: faster_hexbytes.main.to_0x_hex_HexBytes_obj - r95 :: str - r96 :: i32 - r97 :: bit - r98 :: faster_hexbytes.main.__reduce___HexBytes_obj - r99 :: str - r100 :: i32 - r101 :: bit - r102, r103 :: str - r104 :: i32 - r105 :: bit - r106, r107 :: str - r108 :: i32 - r109 :: bit - r110, r111 :: str - r112 :: i32 - r113 :: bit - r114 :: object[3] - r115 :: object_ptr - r116 :: object - r117 :: dict - r118 :: str - r119, r120 :: object - r121 :: object[1] - r122 :: object_ptr - r123, r124 :: object - r125 :: object[1] - r126 :: object_ptr - r127 :: object - r128 :: dict - r129 :: str - r130 :: i32 - r131 :: bit - r132 :: object - r133 :: None + r25 :: object + r26 :: object[1] + r27 :: object_ptr + r28 :: object + r29 :: str + r30 :: dict + r31 :: str + r32 :: i32 + r33 :: bit + r34 :: None L0: r0 = builtins :: module r1 = load_address _Py_NoneStruct @@ -457,967 +611,813 @@ L0: L1: r3 = 'builtins' r4 = PyImport_Import(r3) - if is_error(r4) goto L48 (error at :-1) else goto L2 + if is_error(r4) goto L12 (error at :-1) else goto L2 L2: builtins = r4 :: module dec_ref r4 L3: - r5 = ('TYPE_CHECKING', 'Callable', 'Final', 'Tuple', 'Type', 'Union', 'overload') - r6 = 'typing' - r7 = faster_hexbytes.main.globals :: static - r8 = CPyImport_ImportFromMany(r6, r5, r5, r7) - if is_error(r8) goto L48 (error at :1) else goto L4 + r5 = ('version',) + r6 = ('__version',) + r7 = 'importlib.metadata' + r8 = faster_hexbytes.globals :: static + r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) + if is_error(r9) goto L12 (error at :1) else goto L4 L4: - typing = r8 :: module - dec_ref r8 - r9 = load_address hexbytes.main :: module - r10 = [r9] - r11 = load_address r10 - r12 = [14] - r13 = load_address r12 - r14 = (('hexbytes.main', 'hexbytes.main', 'hexbytes'),) - r15 = faster_hexbytes.main.globals :: static - r16 = 'faster_hexbytes/main.py' - r17 = '' - r18 = CPyImport_ImportMany(r14, r11, r15, r16, r17, r13) - if not r18 goto L48 else goto L5 :: bool + importlib.metadata = r9 :: module + dec_ref r9 + r10 = ('HexBytes',) + r11 = 'faster_hexbytes.main' + r12 = faster_hexbytes.globals :: static + r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) + if is_error(r13) goto L12 (error at :5) else goto L5 L5: - r19 = ('mypyc_attr',) - r20 = 'mypy_extensions' - r21 = faster_hexbytes.main.globals :: static - r22 = CPyImport_ImportFromMany(r20, r19, r19, r21) - if is_error(r22) goto L48 (error at :15) else goto L6 + faster_hexbytes.main = r13 :: module + dec_ref r13 + r14 = 'HexBytes' + r15 = PyList_New(1) + if is_error(r15) goto L12 (error at :9) else goto L6 L6: - mypy_extensions = r22 :: module - dec_ref r22 - r23 = ('Self',) - r24 = 'typing_extensions' - r25 = faster_hexbytes.main.globals :: static - r26 = CPyImport_ImportFromMany(r24, r23, r23, r25) - if is_error(r26) goto L48 (error at :18) else goto L7 + r16 = get_element_ptr r15 ob_item :: PyListObject + r17 = load_mem r16 :: ptr* + inc_ref r14 + set_mem r17, r14 :: builtins.object* + r18 = faster_hexbytes.globals :: static + r19 = '__all__' + r20 = CPyDict_SetItem(r18, r19, r15) + dec_ref r15 + r21 = r20 >= 0 :: signed + if not r21 goto L12 (error at :9) else goto L7 :: bool L7: - typing_extensions = r26 :: module - dec_ref r26 - r27 = ('to_bytes',) - r28 = 'faster_hexbytes._utils' - r29 = faster_hexbytes.main.globals :: static - r30 = CPyImport_ImportFromMany(r28, r27, r27, r29) - if is_error(r30) goto L48 (error at :22) else goto L8 + r22 = 'hexbytes' + r23 = faster_hexbytes.globals :: static + r24 = '__version' + r25 = CPyDict_GetItem(r23, r24) + if is_error(r25) goto L12 (error at :11) else goto L8 L8: - faster_hexbytes._utils = r30 :: module - dec_ref r30 - if 0 goto L9 else goto L9 :: bool + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L12 (error at :11) else goto L9 L9: - r31 = faster_hexbytes.main.globals :: static - r32 = 'Union' - r33 = CPyDict_GetItem(r31, r32) - if is_error(r33) goto L48 (error at :31) else goto L10 + r29 = cast(str, r28) + if is_error(r29) goto L12 (error at :11) else goto L10 L10: - r34 = load_address PyBytes_Type - r35 = load_address PyUnicode_Type - r36 = load_address PyBool_Type - r37 = builtins :: module - r38 = 'bytearray' - r39 = CPyObject_GetAttr(r37, r38) - if is_error(r39) goto L49 (error at :31) else goto L11 + r30 = faster_hexbytes.globals :: static + r31 = '__version__' + r32 = CPyDict_SetItem(r30, r31, r29) + dec_ref r29 + r33 = r32 >= 0 :: signed + if not r33 goto L12 (error at :11) else goto L11 :: bool L11: - r40 = load_address PyLong_Type - r41 = builtins :: module - r42 = 'memoryview' - r43 = CPyObject_GetAttr(r41, r42) - if is_error(r43) goto L50 (error at :31) else goto L12 + return 1 L12: - inc_ref r34 - inc_ref r35 - inc_ref r36 - inc_ref r40 - r44 = (r34, r35, r36, r39, r40, r43) - r45 = box(tuple[object, object, object, object, object, object], r44) - r46 = PyObject_GetItem(r33, r45) - dec_ref r33 - dec_ref r45 - if is_error(r46) goto L48 (error at :31) else goto L13 + r34 = :: None + return r34 + +def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def __new___HexBytes_obj.__call__(__mypyc_self__, cls, val): + __mypyc_self__ :: faster_hexbytes.main.__new___HexBytes_obj + cls :: object + val :: union[bytes, str, bool, object, int] + r0 :: bytes + r1 :: object + r2 :: bool + r3 :: object[2] + r4 :: object_ptr + r5 :: object + r6, r7 :: faster_hexbytes.main.HexBytes +L0: + r0 = to_bytes(val) + if is_error(r0) goto L7 (error at __new__:49) else goto L1 +L1: + r1 = faster_hexbytes.main._bytes_new :: static + if is_error(r1) goto L8 else goto L4 +L2: + r2 = raise NameError('value for final name "_bytes_new" was not set') + if not r2 goto L7 (error at __new__:50) else goto L3 :: bool +L3: + unreachable +L4: + r3 = [cls, r0] + r4 = load_address r3 + r5 = PyObject_Vectorcall(r1, r4, 2, 0) + if is_error(r5) goto L9 (error at __new__:50) else goto L5 +L5: + dec_ref r0 + r6 = cast(faster_hexbytes.main.HexBytes, r5) + if is_error(r6) goto L7 (error at __new__:50) else goto L6 +L6: + return r6 +L7: + r7 = :: faster_hexbytes.main.HexBytes + return r7 +L8: + dec_ref r0 + goto L2 +L9: + dec_ref r0 + goto L7 + +def __getitem___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def __getitem___HexBytes_obj.__call__(__mypyc_self__, self, key): + __mypyc_self__ :: faster_hexbytes.main.__getitem___HexBytes_obj + self :: faster_hexbytes.main.HexBytes + key, r0 :: object + r1 :: str + r2 :: object[3] + r3 :: object_ptr + r4 :: object + r5 :: union[int, bytes] + r6 :: bit + r7 :: int + r8, r9, r10 :: object + r11 :: bit + r12 :: bytes + r13 :: object + r14 :: object[1] + r15 :: object_ptr + r16 :: object + r17 :: faster_hexbytes.main.HexBytes + r18 :: bytes + r19 :: object[1] + r20 :: object_ptr + r21 :: object + r22 :: faster_hexbytes.main.HexBytes + r23 :: union[int, faster_hexbytes.main.HexBytes] +L0: + r0 = load_address PyBytes_Type + r1 = '__getitem__' + r2 = [r0, self, key] + r3 = load_address r2 + r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775811, 0) + if is_error(r4) goto L14 (error at __getitem__:63) else goto L1 +L1: + r5 = cast(union[int, bytes], r4) + if is_error(r5) goto L14 (error at __getitem__:63) else goto L2 +L2: + r6 = PyLong_Check(r5) + if r6 goto L3 else goto L5 :: bool +L3: + r7 = unbox(int, r5) + dec_ref r5 + if is_error(r7) goto L14 (error at __getitem__:65) else goto L4 +L4: + r8 = box(int, r7) + return r8 +L5: + r9 = CPy_TYPE(self) + r10 = faster_hexbytes.main.HexBytes :: type + r11 = r9 == r10 + if r11 goto L15 else goto L10 :: bool +L6: + r12 = cast(bytes, r5) + if is_error(r12) goto L14 (error at __getitem__:69) else goto L7 +L7: + r13 = faster_hexbytes.main.HexBytes :: type + r14 = [r12] + r15 = load_address r14 + r16 = PyObject_Vectorcall(r13, r15, 1, 0) + if is_error(r16) goto L16 (error at __getitem__:69) else goto L8 +L8: + dec_ref r12 + r17 = cast(faster_hexbytes.main.HexBytes, r16) + if is_error(r17) goto L14 (error at __getitem__:69) else goto L9 +L9: + return r17 +L10: + r18 = cast(bytes, r5) + if is_error(r18) goto L17 (error at __getitem__:70) else goto L11 +L11: + r19 = [r18] + r20 = load_address r19 + r21 = PyObject_Vectorcall(r9, r20, 1, 0) + dec_ref r9 + if is_error(r21) goto L18 (error at __getitem__:70) else goto L12 +L12: + dec_ref r18 + r22 = cast(faster_hexbytes.main.HexBytes, r21) + if is_error(r22) goto L14 (error at __getitem__:70) else goto L13 L13: - r47 = faster_hexbytes.main.globals :: static - r48 = 'BytesLike' - r49 = CPyDict_SetItem(r47, r48, r46) - dec_ref r46 - r50 = r49 >= 0 :: signed - if not r50 goto L48 (error at :31) else goto L14 :: bool + return r22 L14: - r51 = load_address PyBytes_Type - r52 = '__new__' - r53 = CPyObject_GetAttr(r51, r52) - if is_error(r53) goto L48 (error at :33) else goto L15 + r23 = :: union[int, faster_hexbytes.main.HexBytes] + return r23 L15: - faster_hexbytes.main._bytes_new = r53 :: static - r54 = faster_hexbytes.main.globals :: static - r55 = '_bytes_new' - r56 = CPyDict_SetItem(r54, r55, r53) - dec_ref r53 - r57 = r56 >= 0 :: signed - if not r57 goto L48 (error at :33) else goto L16 :: bool + dec_ref r9 + goto L6 L16: - r58 = hexbytes.main :: module - r59 = 'HexBytes' - r60 = CPyObject_GetAttr(r58, r59) - if is_error(r60) goto L48 (error at :37) else goto L17 -L17: - r61 = PyTuple_Pack(1, r60) - dec_ref r60 - if is_error(r61) goto L48 (error at :37) else goto L18 + dec_ref r12 + goto L14 +L17: + dec_ref r9 + goto L14 L18: - r62 = load_address PyType_Type - r63 = CPy_CalculateMetaclass(r62, r61) - if is_error(r63) goto L51 (error at :37) else goto L19 -L19: - r64 = '__prepare__' - r65 = PyObject_HasAttr(r63, r64) - if r65 goto L20 else goto L24 :: bool -L20: - r66 = 'HexBytes' - r67 = '__prepare__' - r68 = CPyObject_GetAttr(r63, r67) - if is_error(r68) goto L51 (error at :37) else goto L21 -L21: - r69 = [r66, r61] - r70 = load_address r69 - r71 = PyObject_Vectorcall(r68, r70, 2, 0) - dec_ref r68 - if is_error(r71) goto L51 (error at :37) else goto L22 -L22: - r72 = cast(dict, r71) - if is_error(r72) goto L51 (error at :37) else goto L23 -L23: - r73 = r72 - goto L26 -L24: - r74 = PyDict_New() - if is_error(r74) goto L51 (error at :37) else goto L25 -L25: - r73 = r74 -L26: - r75 = PyDict_New() - if is_error(r75) goto L52 (error at :37) else goto L27 -L27: - r76 = __new___HexBytes_obj() - if is_error(r76) goto L53 (error at :48) else goto L28 -L28: - r77 = builtins :: module - r78 = 'staticmethod' - r79 = CPyObject_GetAttr(r77, r78) - if is_error(r79) goto L54 (error at :48) else goto L29 -L29: - r80 = [r76] - r81 = load_address r80 - r82 = PyObject_Vectorcall(r79, r81, 1, 0) - dec_ref r79 - if is_error(r82) goto L54 (error at :48) else goto L30 -L30: - dec_ref r76 - r83 = '__new__' - r84 = CPyDict_SetItem(r73, r83, r82) - dec_ref r82 - r85 = r84 >= 0 :: signed - if not r85 goto L53 (error at :48) else goto L31 :: bool -L31: - r86 = __getitem___HexBytes_obj() - if is_error(r86) goto L53 (error at :60) else goto L32 -L32: - r87 = '__getitem__' - r88 = CPyDict_SetItem(r73, r87, r86) - dec_ref r86 - r89 = r88 >= 0 :: signed - if not r89 goto L53 (error at :60) else goto L33 :: bool -L33: - r90 = __repr___HexBytes_obj() - if is_error(r90) goto L53 (error at :72) else goto L34 -L34: - r91 = '__repr__' - r92 = CPyDict_SetItem(r73, r91, r90) - dec_ref r90 - r93 = r92 >= 0 :: signed - if not r93 goto L53 (error at :72) else goto L35 :: bool -L35: - r94 = to_0x_hex_HexBytes_obj() - if is_error(r94) goto L53 (error at :75) else goto L36 -L36: - r95 = 'to_0x_hex' - r96 = CPyDict_SetItem(r73, r95, r94) - dec_ref r94 - r97 = r96 >= 0 :: signed - if not r97 goto L53 (error at :75) else goto L37 :: bool -L37: - r98 = __reduce___HexBytes_obj() - if is_error(r98) goto L53 (error at :81) else goto L38 -L38: - r99 = '__reduce__' - r100 = CPyDict_SetItem(r73, r99, r98) - dec_ref r98 - r101 = r100 >= 0 :: signed - if not r101 goto L53 (error at :81) else goto L39 :: bool -L39: - r102 = 'HexBytes' - r103 = '__annotations__' - r104 = CPyDict_SetItem(r73, r103, r75) - dec_ref r75 - r105 = r104 >= 0 :: signed - if not r105 goto L52 (error at :37) else goto L40 :: bool -L40: - r106 = 'mypyc filler docstring' - r107 = '__doc__' - r108 = CPyDict_SetItem(r73, r107, r106) - r109 = r108 >= 0 :: signed - if not r109 goto L52 (error at :37) else goto L41 :: bool -L41: - r110 = 'faster_hexbytes.main' - r111 = '__module__' - r112 = CPyDict_SetItem(r73, r111, r110) - r113 = r112 >= 0 :: signed - if not r113 goto L52 (error at :37) else goto L42 :: bool -L42: - r114 = [r102, r61, r73] - r115 = load_address r114 - r116 = PyObject_Vectorcall(r63, r115, 3, 0) - if is_error(r116) goto L52 (error at :37) else goto L43 -L43: - dec_ref r73 - dec_ref r61 - r117 = faster_hexbytes.main.globals :: static - r118 = 'mypyc_attr' - r119 = CPyDict_GetItem(r117, r118) - if is_error(r119) goto L55 (error at :36) else goto L44 -L44: - r120 = box(bool, 0) - r121 = [r120] - r122 = load_address r121 - r123 = ('native_class',) - r124 = PyObject_Vectorcall(r119, r122, 0, r123) - dec_ref r119 - if is_error(r124) goto L55 (error at :36) else goto L45 -L45: - r125 = [r116] - r126 = load_address r125 - r127 = PyObject_Vectorcall(r124, r126, 1, 0) - dec_ref r124 - if is_error(r127) goto L55 (error at :37) else goto L46 -L46: - dec_ref r116 - faster_hexbytes.main.HexBytes = r127 :: type - r128 = faster_hexbytes.main.globals :: static - r129 = 'HexBytes' - r130 = PyDict_SetItem(r128, r129, r127) - dec_ref r127 - r131 = r130 >= 0 :: signed - if not r131 goto L48 (error at :37) else goto L47 :: bool -L47: - r132 = faster_hexbytes.main.HexBytes :: type - return 1 -L48: - r133 = :: None - return r133 -L49: - dec_ref r33 - goto L48 -L50: - dec_ref r33 - dec_ref r39 - goto L48 -L51: - dec_ref r61 - goto L48 -L52: - dec_ref r61 - dec_ref r73 - goto L48 -L53: - dec_ref r61 - dec_ref r73 - dec_ref r75 - goto L48 -L54: - dec_ref r61 - dec_ref r73 - dec_ref r75 - dec_ref r76 - goto L48 -L55: - dec_ref r116 - goto L48 + dec_ref r18 + goto L14 -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4, r5, r6 :: object - r7 :: str - r8 :: dict - r9, r10 :: object - r11 :: str - r12 :: dict - r13 :: object - r14 :: str - r15 :: list - r16, r17 :: ptr - r18 :: dict - r19 :: str - r20 :: i32 - r21 :: bit - r22 :: str - r23 :: dict - r24 :: str - r25 :: object - r26 :: object[1] - r27 :: object_ptr - r28 :: object - r29 :: str - r30 :: dict - r31 :: str - r32 :: i32 - r33 :: bit - r34 :: None +def __repr___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L12 (error at :-1) else goto L2 + inc_ref __mypyc_self__ + return __mypyc_self__ L2: - builtins = r4 :: module - dec_ref r4 + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 L3: - r5 = ('version',) - r6 = ('__version',) - r7 = 'importlib.metadata' - r8 = faster_hexbytes.globals :: static - r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) - if is_error(r9) goto L12 (error at :1) else goto L4 + return r2 L4: - importlib.metadata = r9 :: module - dec_ref r9 - r10 = ('HexBytes',) - r11 = 'faster_hexbytes.main' - r12 = faster_hexbytes.globals :: static - r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) - if is_error(r13) goto L12 (error at :5) else goto L5 -L5: - faster_hexbytes.main = r13 :: module - dec_ref r13 - r14 = 'HexBytes' - r15 = PyList_New(1) - if is_error(r15) goto L12 (error at :9) else goto L6 -L6: - r16 = get_element_ptr r15 ob_item :: PyListObject - r17 = load_mem r16 :: ptr* - inc_ref r14 - set_mem r17, r14 :: builtins.object* - r18 = faster_hexbytes.globals :: static - r19 = '__all__' - r20 = CPyDict_SetItem(r18, r19, r15) - dec_ref r15 - r21 = r20 >= 0 :: signed - if not r21 goto L12 (error at :9) else goto L7 :: bool -L7: - r22 = 'hexbytes' - r23 = faster_hexbytes.globals :: static - r24 = '__version' - r25 = CPyDict_GetItem(r23, r24) - if is_error(r25) goto L12 (error at :11) else goto L8 -L8: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L12 (error at :11) else goto L9 -L9: - r29 = cast(str, r28) - if is_error(r29) goto L12 (error at :11) else goto L10 -L10: - r30 = faster_hexbytes.globals :: static - r31 = '__version__' - r32 = CPyDict_SetItem(r30, r31, r29) - dec_ref r29 - r33 = r32 >= 0 :: signed - if not r33 goto L12 (error at :11) else goto L11 :: bool -L11: - return 1 -L12: - r34 = :: None - return r34 + r3 = :: object + return r3 -def to_bytes(val): - val :: union[bytes, str, object, bool, int] - r0 :: bit - r1 :: bytes - r2 :: bit - r3 :: str - r4 :: bytes - r5 :: bit +def __repr___HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.__repr___HexBytes_obj + self :: faster_hexbytes.main.HexBytes + r0, r1 :: str + r2 :: object[1] + r3 :: object_ptr + r4 :: object + r5, r6, r7, r8 :: str +L0: + r0 = "HexBytes('0x" + r1 = 'hex' + r2 = [self] + r3 = load_address r2 + r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775809, 0) + if is_error(r4) goto L4 (error at __repr__:73) else goto L1 +L1: + r5 = cast(str, r4) + if is_error(r5) goto L4 (error at __repr__:73) else goto L2 +L2: + r6 = "')" + r7 = CPyStr_Build(3, r0, r5, r6) + dec_ref r5 + if is_error(r7) goto L4 (error at __repr__:73) else goto L3 +L3: + return r7 +L4: + r8 = :: str + return r8 + +def to_0x_hex_HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def to_0x_hex_HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.to_0x_hex_HexBytes_obj + self :: faster_hexbytes.main.HexBytes + r0, r1 :: str + r2 :: object[1] + r3 :: object_ptr + r4 :: object + r5, r6, r7 :: str +L0: + r0 = '0x' + r1 = 'hex' + r2 = [self] + r3 = load_address r2 + r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775809, 0) + if is_error(r4) goto L4 (error at to_0x_hex:79) else goto L1 +L1: + r5 = cast(str, r4) + if is_error(r5) goto L4 (error at to_0x_hex:79) else goto L2 +L2: + r6 = CPyStr_Build(2, r0, r5) + dec_ref r5 + if is_error(r6) goto L4 (error at to_0x_hex:79) else goto L3 +L3: + return r6 +L4: + r7 = :: str + return r7 + +def __reduce___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def __reduce___HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.__reduce___HexBytes_obj + self :: faster_hexbytes.main.HexBytes + r0 :: object + r1 :: bool + r2, r3 :: object + r4 :: object[1] + r5 :: object_ptr r6 :: object - r7 :: object[1] - r8 :: object_ptr - r9 :: object - r10 :: bytes - r11 :: bit - r12 :: bool - r13, r14, r15 :: bytes - r16 :: bit - r17 :: int - r18 :: native_int - r19 :: bit - r20 :: native_int - r21, r22 :: bit - r23 :: bool - r24 :: bit - r25 :: str - r26 :: int - r27, r28, r29 :: str - r30 :: object - r31 :: str - r32 :: object - r33 :: object[1] - r34 :: object_ptr - r35 :: object - r36 :: int - r37 :: object - r38 :: str - r39, r40 :: object - r41 :: object[1] - r42 :: object_ptr - r43 :: object - r44 :: str - r45 :: bytes - r46 :: object - r47 :: str - r48 :: object - r49 :: i32 - r50 :: bit - r51 :: bool - r52 :: object - r53 :: object[1] - r54 :: object_ptr - r55 :: object - r56 :: bytes - r57, r58, r59, r60, r61 :: str - r62 :: object[3] - r63 :: object_ptr - r64 :: object - r65, r66 :: str - r67 :: object - r68, r69 :: str - r70 :: object[3] - r71 :: object_ptr - r72 :: object - r73 :: str - r74 :: list - r75, r76, r77, r78, r79, r80 :: ptr - r81 :: str - r82 :: object - r83 :: str - r84 :: object - r85 :: object[1] - r86 :: object_ptr - r87 :: object - r88 :: bytes + r7 :: bytes + r8 :: tuple[object, bytes] + r9, r10 :: tuple[object, tuple[object, bytes]] L0: - r0 = PyBytes_Check(val) - if r0 goto L1 else goto L3 :: bool + r0 = faster_hexbytes.main._bytes_new :: static + if is_error(r0) goto L1 else goto L3 L1: - inc_ref val - r1 = cast(bytes, val) - if is_error(r1) goto L51 (error at to_bytes:19) else goto L2 + r1 = raise NameError('value for final name "_bytes_new" was not set') + if not r1 goto L6 (error at __reduce__:89) else goto L2 :: bool L2: - return r1 + unreachable L3: - r2 = PyUnicode_Check(val) - if r2 goto L4 else goto L7 :: bool + r2 = CPy_TYPE(self) + r3 = load_address PyBytes_Type + r4 = [self] + r5 = load_address r4 + r6 = PyObject_Vectorcall(r3, r5, 1, 0) + if is_error(r6) goto L7 (error at __reduce__:89) else goto L4 L4: - inc_ref val - r3 = cast(str, val) - if is_error(r3) goto L51 (error at to_bytes:21) else goto L5 + r7 = cast(bytes, r6) + if is_error(r7) goto L7 (error at __reduce__:89) else goto L5 L5: - r4 = hexstr_to_bytes(r3) - dec_ref r3 - if is_error(r4) goto L51 (error at to_bytes:21) else goto L6 + r8 = (r2, r7) + inc_ref r0 + r9 = (r0, r8) + return r9 L6: - return r4 -L7: - r5 = PyByteArray_Check(val) - if r5 goto L8 else goto L11 :: bool -L8: - r6 = load_address PyBytes_Type - r7 = [val] - r8 = load_address r7 - r9 = PyObject_Vectorcall(r6, r8, 1, 0) - if is_error(r9) goto L51 (error at to_bytes:23) else goto L9 -L9: - r10 = cast(bytes, r9) - if is_error(r10) goto L51 (error at to_bytes:23) else goto L10 -L10: + r10 = :: tuple[object, tuple[object, bytes]] return r10 -L11: - r11 = PyBool_Check(val) - if r11 goto L12 else goto L17 :: bool -L12: - r12 = unbox(bool, val) - if is_error(r12) goto L51 (error at to_bytes:25) else goto L13 -L13: - if r12 goto L14 else goto L15 :: bool -L14: - r13 = b'\x01' - inc_ref r13 - r14 = r13 - goto L16 -L15: - r15 = b'\x00' - inc_ref r15 - r14 = r15 -L16: - return r14 -L17: - r16 = PyLong_Check(val) - if r16 goto L18 else goto L37 :: bool -L18: - r17 = unbox(int, val) - if is_error(r17) goto L51 (error at to_bytes:29) else goto L19 -L19: - r18 = r17 & 1 - r19 = r18 != 0 - if r19 goto L21 else goto L20 :: bool -L20: - r20 = 0 & 1 - r21 = r20 != 0 - if r21 goto L21 else goto L22 :: bool -L21: - r22 = CPyTagged_IsLt_(r17, 0) - r23 = r22 - goto L23 -L22: - r24 = r17 < 0 :: signed - r23 = r24 -L23: - dec_ref r17 :: int - if r23 goto L24 else goto L31 :: bool -L24: - r25 = 'Cannot convert negative integer ' - r26 = unbox(int, val) - if is_error(r26) goto L51 (error at to_bytes:30) else goto L25 -L25: - r27 = CPyTagged_Str(r26) - dec_ref r26 :: int - if is_error(r27) goto L51 (error at to_bytes:30) else goto L26 -L26: - r28 = ' to bytes' - r29 = CPyStr_Build(3, r25, r27, r28) - dec_ref r27 - if is_error(r29) goto L51 (error at to_bytes:30) else goto L27 -L27: - r30 = builtins :: module - r31 = 'ValueError' - r32 = CPyObject_GetAttr(r30, r31) - if is_error(r32) goto L52 (error at to_bytes:30) else goto L28 -L28: - r33 = [r29] - r34 = load_address r33 - r35 = PyObject_Vectorcall(r32, r34, 1, 0) - dec_ref r32 - if is_error(r35) goto L52 (error at to_bytes:30) else goto L29 -L29: - dec_ref r29 - CPy_Raise(r35) - dec_ref r35 - if not 0 goto L51 (error at to_bytes:30) else goto L30 :: bool -L30: - unreachable -L31: - r36 = unbox(int, val) - if is_error(r36) goto L51 (error at to_bytes:32) else goto L32 -L32: - r37 = builtins :: module - r38 = 'hex' - r39 = CPyObject_GetAttr(r37, r38) - if is_error(r39) goto L53 (error at to_bytes:32) else goto L33 -L33: - r40 = box(int, r36) - r41 = [r40] - r42 = load_address r41 - r43 = PyObject_Vectorcall(r39, r42, 1, 0) - dec_ref r39 - if is_error(r43) goto L54 (error at to_bytes:32) else goto L34 -L34: - dec_ref r40 - r44 = cast(str, r43) - if is_error(r44) goto L51 (error at to_bytes:32) else goto L35 -L35: - r45 = to_bytes(r44) - dec_ref r44 - if is_error(r45) goto L51 (error at to_bytes:32) else goto L36 -L36: - return r45 -L37: - r46 = builtins :: module - r47 = 'memoryview' - r48 = CPyObject_GetAttr(r46, r47) - if is_error(r48) goto L51 (error at to_bytes:33) else goto L38 -L38: - r49 = PyObject_IsInstance(val, r48) - dec_ref r48 - r50 = r49 >= 0 :: signed - if not r50 goto L51 (error at to_bytes:33) else goto L39 :: bool -L39: - r51 = truncate r49: i32 to builtins.bool - if r51 goto L40 else goto L43 :: bool -L40: - r52 = load_address PyBytes_Type - r53 = [val] - r54 = load_address r53 - r55 = PyObject_Vectorcall(r52, r54, 1, 0) - if is_error(r55) goto L51 (error at to_bytes:34) else goto L41 -L41: - r56 = cast(bytes, r55) - if is_error(r56) goto L51 (error at to_bytes:34) else goto L42 -L42: - return r56 -L43: - r57 = '' - r58 = 'Cannot convert ' - r59 = '{!r:{}}' - r60 = '' - r61 = 'format' - r62 = [r59, val, r60] - r63 = load_address r62 - r64 = PyObject_VectorcallMethod(r61, r63, 9223372036854775811, 0) - if is_error(r64) goto L51 (error at to_bytes:36) else goto L44 -L44: - r65 = ' of type ' - r66 = '{:{}}' - r67 = CPy_TYPE(val) - r68 = '' - r69 = 'format' - r70 = [r66, r67, r68] - r71 = load_address r70 - r72 = PyObject_VectorcallMethod(r69, r71, 9223372036854775811, 0) - if is_error(r72) goto L55 (error at to_bytes:36) else goto L45 -L45: - dec_ref r67 - r73 = ' to bytes' - r74 = PyList_New(5) - if is_error(r74) goto L56 (error at to_bytes:36) else goto L46 -L46: - r75 = get_element_ptr r74 ob_item :: PyListObject - r76 = load_mem r75 :: ptr* - inc_ref r58 - set_mem r76, r58 :: builtins.object* - r77 = r76 + 8 - set_mem r77, r64 :: builtins.object* - inc_ref r65 - r78 = r76 + 16 - set_mem r78, r65 :: builtins.object* - r79 = r76 + 24 - set_mem r79, r72 :: builtins.object* - inc_ref r73 - r80 = r76 + 32 - set_mem r80, r73 :: builtins.object* - r81 = PyUnicode_Join(r57, r74) - dec_ref r74 - if is_error(r81) goto L51 (error at to_bytes:36) else goto L47 -L47: - r82 = builtins :: module - r83 = 'TypeError' - r84 = CPyObject_GetAttr(r82, r83) - if is_error(r84) goto L57 (error at to_bytes:36) else goto L48 -L48: - r85 = [r81] - r86 = load_address r85 - r87 = PyObject_Vectorcall(r84, r86, 1, 0) - dec_ref r84 - if is_error(r87) goto L57 (error at to_bytes:36) else goto L49 -L49: - dec_ref r81 - CPy_Raise(r87) - dec_ref r87 - if not 0 goto L51 (error at to_bytes:36) else goto L50 :: bool -L50: - unreachable -L51: - r88 = :: bytes - return r88 -L52: - dec_ref r29 - goto L51 -L53: - dec_ref r36 :: int - goto L51 -L54: - dec_ref r40 - goto L51 -L55: - dec_ref r64 - dec_ref r67 - goto L51 -L56: - dec_ref r64 - dec_ref r72 - goto L51 -L57: - dec_ref r81 - goto L51 +L7: + dec_ref r2 + goto L6 -def hexstr_to_bytes(hexstr): - hexstr, r0, r1 :: str - r2 :: tuple[str, str] - r3 :: object - r4 :: bool - r5 :: object - r6, non_prefixed_hex :: str - r7 :: native_int - r8 :: bit - r9 :: short_int - r10 :: int - r11 :: bit - r12, r13, padded_hex :: str - r14 :: bytes - r15 :: tuple[object, object, object] - r16 :: object - r17 :: str - r18 :: object - r19 :: bit - r20, r21, r22 :: str - r23 :: object +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4, r5 :: object + r6 :: str + r7 :: dict + r8 :: object + r9 :: object_ptr + r10 :: object_ptr[1] + r11 :: c_ptr + r12 :: native_int[1] + r13 :: c_ptr + r14 :: object + r15 :: dict + r16, r17 :: str + r18 :: bit + r19 :: object + r20 :: str + r21 :: dict + r22, r23 :: object r24 :: str - r25 :: object - r26 :: object[1] - r27 :: object_ptr - r28 :: object - r29 :: bit + r25 :: dict + r26, r27 :: object + r28 :: str + r29 :: dict r30 :: object - r31 :: bool - r32 :: object[1] - r33 :: object_ptr - r34 :: object - r35, r36 :: bytes + r31 :: dict + r32 :: str + r33, r34, r35, r36, r37 :: object + r38 :: str + r39, r40, r41 :: object + r42 :: str + r43 :: object + r44 :: tuple[object, object, object, object, object, object] + r45, r46 :: object + r47 :: dict + r48 :: str + r49 :: i32 + r50 :: bit + r51 :: object + r52 :: str + r53 :: object + r54 :: dict + r55 :: str + r56 :: i32 + r57 :: bit + r58 :: object + r59 :: str + r60 :: object + r61 :: tuple + r62, r63 :: object + r64 :: str + r65 :: bool + r66, r67 :: str + r68 :: object + r69 :: object[2] + r70 :: object_ptr + r71 :: object + r72, r73, r74, r75 :: dict + r76 :: faster_hexbytes.main.__new___HexBytes_obj + r77 :: object + r78 :: str + r79 :: object + r80 :: object[1] + r81 :: object_ptr + r82 :: object + r83 :: str + r84 :: i32 + r85 :: bit + r86 :: faster_hexbytes.main.__getitem___HexBytes_obj + r87 :: str + r88 :: i32 + r89 :: bit + r90 :: faster_hexbytes.main.__repr___HexBytes_obj + r91 :: str + r92 :: i32 + r93 :: bit + r94 :: faster_hexbytes.main.to_0x_hex_HexBytes_obj + r95 :: str + r96 :: i32 + r97 :: bit + r98 :: faster_hexbytes.main.__reduce___HexBytes_obj + r99 :: str + r100 :: i32 + r101 :: bit + r102, r103 :: str + r104 :: i32 + r105 :: bit + r106, r107 :: str + r108 :: i32 + r109 :: bit + r110, r111 :: str + r112 :: i32 + r113 :: bit + r114 :: object[3] + r115 :: object_ptr + r116 :: object + r117 :: dict + r118 :: str + r119, r120 :: object + r121 :: object[1] + r122 :: object_ptr + r123, r124 :: object + r125 :: object[1] + r126 :: object_ptr + r127 :: object + r128 :: dict + r129 :: str + r130 :: i32 + r131 :: bit + r132 :: object + r133 :: None L0: - r0 = '0x' - r1 = '0X' - inc_ref r0 - inc_ref r1 - r2 = (r0, r1) - r3 = box(tuple[str, str], r2) - r4 = CPyStr_Startswith(hexstr, r3) - dec_ref r3 - if is_error(r4) goto L31 (error at hexstr_to_bytes:40) else goto L1 + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool L1: - if r4 goto L2 else goto L5 :: bool + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L48 (error at :-1) else goto L2 L2: - r5 = CPyStr_GetSlice(hexstr, 4, 9223372036854775806) - if is_error(r5) goto L31 (error at hexstr_to_bytes:41) else goto L3 + builtins = r4 :: module + dec_ref r4 L3: - r6 = cast(str, r5) - if is_error(r6) goto L31 (error at hexstr_to_bytes:41) else goto L4 + r5 = ('TYPE_CHECKING', 'Callable', 'Final', 'Tuple', 'Type', 'Union', 'overload') + r6 = 'typing' + r7 = faster_hexbytes.main.globals :: static + r8 = CPyImport_ImportFromMany(r6, r5, r5, r7) + if is_error(r8) goto L48 (error at :1) else goto L4 L4: - non_prefixed_hex = r6 - goto L6 + typing = r8 :: module + dec_ref r8 + r9 = load_address hexbytes.main :: module + r10 = [r9] + r11 = load_address r10 + r12 = [14] + r13 = load_address r12 + r14 = (('hexbytes.main', 'hexbytes.main', 'hexbytes'),) + r15 = faster_hexbytes.main.globals :: static + r16 = 'faster_hexbytes/main.py' + r17 = '' + r18 = CPyImport_ImportMany(r14, r11, r15, r16, r17, r13) + if not r18 goto L48 else goto L5 :: bool L5: - inc_ref hexstr - non_prefixed_hex = hexstr + r19 = ('mypyc_attr',) + r20 = 'mypy_extensions' + r21 = faster_hexbytes.main.globals :: static + r22 = CPyImport_ImportFromMany(r20, r19, r19, r21) + if is_error(r22) goto L48 (error at :15) else goto L6 L6: - r7 = CPyStr_Size_size_t(hexstr) - r8 = r7 >= 0 :: signed - if not r8 goto L32 (error at hexstr_to_bytes:46) else goto L7 :: bool + mypy_extensions = r22 :: module + dec_ref r22 + r23 = ('Self',) + r24 = 'typing_extensions' + r25 = faster_hexbytes.main.globals :: static + r26 = CPyImport_ImportFromMany(r24, r23, r23, r25) + if is_error(r26) goto L48 (error at :18) else goto L7 L7: - r9 = r7 << 1 - r10 = CPyTagged_Remainder(r9, 4) - if is_error(r10) goto L32 (error at hexstr_to_bytes:46) else goto L8 + typing_extensions = r26 :: module + dec_ref r26 + r27 = ('to_bytes',) + r28 = 'faster_hexbytes._utils' + r29 = faster_hexbytes.main.globals :: static + r30 = CPyImport_ImportFromMany(r28, r27, r27, r29) + if is_error(r30) goto L48 (error at :22) else goto L8 L8: - r11 = r10 != 0 - dec_ref r10 :: int - if r11 goto L9 else goto L11 :: bool + faster_hexbytes._utils = r30 :: module + dec_ref r30 + if 0 goto L9 else goto L9 :: bool L9: - r12 = '0' - r13 = PyUnicode_Concat(r12, non_prefixed_hex) - dec_ref non_prefixed_hex - if is_error(r13) goto L31 (error at hexstr_to_bytes:47) else goto L10 + r31 = faster_hexbytes.main.globals :: static + r32 = 'Union' + r33 = CPyDict_GetItem(r31, r32) + if is_error(r33) goto L48 (error at :31) else goto L10 L10: - padded_hex = r13 - goto L12 + r34 = load_address PyBytes_Type + r35 = load_address PyUnicode_Type + r36 = load_address PyBool_Type + r37 = builtins :: module + r38 = 'bytearray' + r39 = CPyObject_GetAttr(r37, r38) + if is_error(r39) goto L49 (error at :31) else goto L11 L11: - padded_hex = non_prefixed_hex + r40 = load_address PyLong_Type + r41 = builtins :: module + r42 = 'memoryview' + r43 = CPyObject_GetAttr(r41, r42) + if is_error(r43) goto L50 (error at :31) else goto L12 L12: - r14 = PyUnicode_AsASCIIString(padded_hex) - if is_error(r14) goto L14 (error at hexstr_to_bytes:52) else goto L33 + inc_ref r34 + inc_ref r35 + inc_ref r36 + inc_ref r40 + r44 = (r34, r35, r36, r39, r40, r43) + r45 = box(tuple[object, object, object, object, object, object], r44) + r46 = PyObject_GetItem(r33, r45) + dec_ref r33 + dec_ref r45 + if is_error(r46) goto L48 (error at :31) else goto L13 L13: - goto L25 + r47 = faster_hexbytes.main.globals :: static + r48 = 'BytesLike' + r49 = CPyDict_SetItem(r47, r48, r46) + dec_ref r46 + r50 = r49 >= 0 :: signed + if not r50 goto L48 (error at :31) else goto L14 :: bool L14: - r15 = CPy_CatchError() - r16 = builtins :: module - r17 = 'UnicodeDecodeError' - r18 = CPyObject_GetAttr(r16, r17) - if is_error(r18) goto L34 (error at hexstr_to_bytes:53) else goto L15 + r51 = load_address PyBytes_Type + r52 = '__new__' + r53 = CPyObject_GetAttr(r51, r52) + if is_error(r53) goto L48 (error at :33) else goto L15 L15: - r19 = CPy_ExceptionMatches(r18) - dec_ref r18 - if r19 goto L16 else goto L35 :: bool + faster_hexbytes.main._bytes_new = r53 :: static + r54 = faster_hexbytes.main.globals :: static + r55 = '_bytes_new' + r56 = CPyDict_SetItem(r54, r55, r53) + dec_ref r53 + r57 = r56 >= 0 :: signed + if not r57 goto L48 (error at :33) else goto L16 :: bool L16: - r20 = 'hex string ' - r21 = ' may only contain [0-9a-fA-F] characters' - r22 = CPyStr_Build(3, r20, padded_hex, r21) - dec_ref padded_hex - if is_error(r22) goto L23 (error at hexstr_to_bytes:55) else goto L17 + r58 = hexbytes.main :: module + r59 = 'HexBytes' + r60 = CPyObject_GetAttr(r58, r59) + if is_error(r60) goto L48 (error at :37) else goto L17 L17: - r23 = builtins :: module - r24 = 'ValueError' - r25 = CPyObject_GetAttr(r23, r24) - if is_error(r25) goto L36 (error at hexstr_to_bytes:54) else goto L18 + r61 = PyTuple_Pack(1, r60) + dec_ref r60 + if is_error(r61) goto L48 (error at :37) else goto L18 L18: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L36 (error at hexstr_to_bytes:54) else goto L19 + r62 = load_address PyType_Type + r63 = CPy_CalculateMetaclass(r62, r61) + if is_error(r63) goto L51 (error at :37) else goto L19 L19: - dec_ref r22 - CPy_Raise(r28) - dec_ref r28 - if not 0 goto L23 (error at hexstr_to_bytes:54) else goto L37 :: bool + r64 = '__prepare__' + r65 = PyObject_HasAttr(r63, r64) + if r65 goto L20 else goto L24 :: bool L20: - unreachable + r66 = 'HexBytes' + r67 = '__prepare__' + r68 = CPyObject_GetAttr(r63, r67) + if is_error(r68) goto L51 (error at :37) else goto L21 L21: - CPy_Reraise() - if not 0 goto L23 else goto L38 :: bool + r69 = [r66, r61] + r70 = load_address r69 + r71 = PyObject_Vectorcall(r68, r70, 2, 0) + dec_ref r68 + if is_error(r71) goto L51 (error at :37) else goto L22 L22: - unreachable + r72 = cast(dict, r71) + if is_error(r72) goto L51 (error at :37) else goto L23 L23: - CPy_RestoreExcInfo(r15) - dec_ref r15 - r29 = CPy_KeepPropagating() - if not r29 goto L31 else goto L24 :: bool + r73 = r72 + goto L26 L24: - unreachable + r74 = PyDict_New() + if is_error(r74) goto L51 (error at :37) else goto L25 L25: - r30 = faster_hexbytes._utils.unhexlify :: static - if is_error(r30) goto L39 else goto L28 + r73 = r74 L26: - r31 = raise NameError('value for final name "unhexlify" was not set') - if not r31 goto L31 (error at hexstr_to_bytes:58) else goto L27 :: bool + r75 = PyDict_New() + if is_error(r75) goto L52 (error at :37) else goto L27 L27: - unreachable + r76 = __new___HexBytes_obj() + if is_error(r76) goto L53 (error at :48) else goto L28 L28: - r32 = [r14] - r33 = load_address r32 - r34 = PyObject_Vectorcall(r30, r33, 1, 0) - if is_error(r34) goto L40 (error at hexstr_to_bytes:58) else goto L29 + r77 = builtins :: module + r78 = 'staticmethod' + r79 = CPyObject_GetAttr(r77, r78) + if is_error(r79) goto L54 (error at :48) else goto L29 L29: - dec_ref r14 - r35 = cast(bytes, r34) - if is_error(r35) goto L31 (error at hexstr_to_bytes:58) else goto L30 + r80 = [r76] + r81 = load_address r80 + r82 = PyObject_Vectorcall(r79, r81, 1, 0) + dec_ref r79 + if is_error(r82) goto L54 (error at :48) else goto L30 L30: - return r35 + dec_ref r76 + r83 = '__new__' + r84 = CPyDict_SetItem(r73, r83, r82) + dec_ref r82 + r85 = r84 >= 0 :: signed + if not r85 goto L53 (error at :48) else goto L31 :: bool L31: - r36 = :: bytes - return r36 + r86 = __getitem___HexBytes_obj() + if is_error(r86) goto L53 (error at :60) else goto L32 L32: - dec_ref non_prefixed_hex - goto L31 + r87 = '__getitem__' + r88 = CPyDict_SetItem(r73, r87, r86) + dec_ref r86 + r89 = r88 >= 0 :: signed + if not r89 goto L53 (error at :60) else goto L33 :: bool L33: - dec_ref padded_hex - goto L13 + r90 = __repr___HexBytes_obj() + if is_error(r90) goto L53 (error at :72) else goto L34 L34: - dec_ref padded_hex - goto L23 + r91 = '__repr__' + r92 = CPyDict_SetItem(r73, r91, r90) + dec_ref r90 + r93 = r92 >= 0 :: signed + if not r93 goto L53 (error at :72) else goto L35 :: bool L35: - dec_ref padded_hex - goto L21 + r94 = to_0x_hex_HexBytes_obj() + if is_error(r94) goto L53 (error at :75) else goto L36 L36: - dec_ref r22 - goto L23 + r95 = 'to_0x_hex' + r96 = CPyDict_SetItem(r73, r95, r94) + dec_ref r94 + r97 = r96 >= 0 :: signed + if not r97 goto L53 (error at :75) else goto L37 :: bool L37: - dec_ref r15 - goto L20 + r98 = __reduce___HexBytes_obj() + if is_error(r98) goto L53 (error at :81) else goto L38 L38: - dec_ref r15 - goto L22 + r99 = '__reduce__' + r100 = CPyDict_SetItem(r73, r99, r98) + dec_ref r98 + r101 = r100 >= 0 :: signed + if not r101 goto L53 (error at :81) else goto L39 :: bool L39: - dec_ref r14 - goto L26 + r102 = 'HexBytes' + r103 = '__annotations__' + r104 = CPyDict_SetItem(r73, r103, r75) + dec_ref r75 + r105 = r104 >= 0 :: signed + if not r105 goto L52 (error at :37) else goto L40 :: bool L40: - dec_ref r14 - goto L31 - -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4 :: object - r5 :: object_ptr - r6 :: object_ptr[1] - r7 :: c_ptr - r8 :: native_int[1] - r9 :: c_ptr - r10 :: object - r11 :: dict - r12, r13 :: str - r14 :: bit - r15 :: object - r16 :: str - r17 :: dict - r18, r19 :: object - r20 :: str - r21 :: object - r22 :: dict - r23 :: str - r24 :: i32 - r25 :: bit - r26 :: None -L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool -L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L8 (error at :-1) else goto L2 -L2: - builtins = r4 :: module - dec_ref r4 -L3: - r5 = load_address binascii :: module - r6 = [r5] - r7 = load_address r6 - r8 = [1] - r9 = load_address r8 - r10 = (('binascii', 'binascii', 'binascii'),) - r11 = faster_hexbytes._utils.globals :: static - r12 = 'faster_hexbytes/_utils.py' - r13 = '' - r14 = CPyImport_ImportMany(r10, r7, r11, r12, r13, r9) - if not r14 goto L8 else goto L4 :: bool -L4: - r15 = ('Final', 'Union') - r16 = 'typing' - r17 = faster_hexbytes._utils.globals :: static - r18 = CPyImport_ImportFromMany(r16, r15, r15, r17) - if is_error(r18) goto L8 (error at :2) else goto L5 -L5: - typing = r18 :: module - dec_ref r18 - r19 = binascii :: module - r20 = 'unhexlify' - r21 = CPyObject_GetAttr(r19, r20) - if is_error(r21) goto L8 (error at :8) else goto L6 -L6: - faster_hexbytes._utils.unhexlify = r21 :: static - r22 = faster_hexbytes._utils.globals :: static - r23 = 'unhexlify' - r24 = CPyDict_SetItem(r22, r23, r21) - dec_ref r21 - r25 = r24 >= 0 :: signed - if not r25 goto L8 (error at :8) else goto L7 :: bool -L7: + r106 = 'mypyc filler docstring' + r107 = '__doc__' + r108 = CPyDict_SetItem(r73, r107, r106) + r109 = r108 >= 0 :: signed + if not r109 goto L52 (error at :37) else goto L41 :: bool +L41: + r110 = 'faster_hexbytes.main' + r111 = '__module__' + r112 = CPyDict_SetItem(r73, r111, r110) + r113 = r112 >= 0 :: signed + if not r113 goto L52 (error at :37) else goto L42 :: bool +L42: + r114 = [r102, r61, r73] + r115 = load_address r114 + r116 = PyObject_Vectorcall(r63, r115, 3, 0) + if is_error(r116) goto L52 (error at :37) else goto L43 +L43: + dec_ref r73 + dec_ref r61 + r117 = faster_hexbytes.main.globals :: static + r118 = 'mypyc_attr' + r119 = CPyDict_GetItem(r117, r118) + if is_error(r119) goto L55 (error at :36) else goto L44 +L44: + r120 = box(bool, 0) + r121 = [r120] + r122 = load_address r121 + r123 = ('native_class',) + r124 = PyObject_Vectorcall(r119, r122, 0, r123) + dec_ref r119 + if is_error(r124) goto L55 (error at :36) else goto L45 +L45: + r125 = [r116] + r126 = load_address r125 + r127 = PyObject_Vectorcall(r124, r126, 1, 0) + dec_ref r124 + if is_error(r127) goto L55 (error at :37) else goto L46 +L46: + dec_ref r116 + faster_hexbytes.main.HexBytes = r127 :: type + r128 = faster_hexbytes.main.globals :: static + r129 = 'HexBytes' + r130 = PyDict_SetItem(r128, r129, r127) + dec_ref r127 + r131 = r130 >= 0 :: signed + if not r131 goto L48 (error at :37) else goto L47 :: bool +L47: + r132 = faster_hexbytes.main.HexBytes :: type return 1 -L8: - r26 = :: None - return r26 +L48: + r133 = :: None + return r133 +L49: + dec_ref r33 + goto L48 +L50: + dec_ref r33 + dec_ref r39 + goto L48 +L51: + dec_ref r61 + goto L48 +L52: + dec_ref r61 + dec_ref r73 + goto L48 +L53: + dec_ref r61 + dec_ref r73 + dec_ref r75 + goto L48 +L54: + dec_ref r61 + dec_ref r73 + dec_ref r75 + dec_ref r76 + goto L48 +L55: + dec_ref r116 + goto L48 From 14b36cea91b6c4f7d645b673c84599a0d5288dfc Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Tue, 30 Sep 2025 15:21:31 -0400 Subject: [PATCH 56/98] fix: TypeError in `HexBytes.__new__` if called from subclass (#10) * Update main.py * Update main.py * chore: compile C files for source control * Create _helper.py * Update main.py * Update setup.py * chore: compile C files for source control * Delete build directory * chore: compile C files for source control * Update main.py * chore: compile C files for source control * Delete faster_hexbytes/_helper.py * chore: compile C files for source control * Update setup.py * chore: compile C files for source control * Update main.py * Delete build directory * chore: compile C files for source control --------- Co-authored-by: github-actions[bot] --- build/__native_6a32f4913d613d6a7ddf.c | 3043 ----------------- .../__native_internal_6a32f4913d613d6a7ddf.h | 5 +- build/ops.txt | 1229 +++++++ faster_hexbytes/main.py | 14 +- 4 files changed, 1246 insertions(+), 3045 deletions(-) diff --git a/build/__native_6a32f4913d613d6a7ddf.c b/build/__native_6a32f4913d613d6a7ddf.c index 2715d45..e69de29 100644 --- a/build/__native_6a32f4913d613d6a7ddf.c +++ b/build/__native_6a32f4913d613d6a7ddf.c @@ -1,3043 +0,0 @@ -#include "init.c" -#include "getargs.c" -#include "getargsfast.c" -#include "int_ops.c" -#include "float_ops.c" -#include "str_ops.c" -#include "bytes_ops.c" -#include "list_ops.c" -#include "dict_ops.c" -#include "set_ops.c" -#include "tuple_ops.c" -#include "exc_ops.c" -#include "misc_ops.c" -#include "generic_ops.c" -#include "pythonsupport.c" -#include "__native_6a32f4913d613d6a7ddf.h" -#include "__native_internal_6a32f4913d613d6a7ddf.h" -static PyMethodDef faster_hexbytesmodule_methods[] = { - {NULL, NULL, 0, NULL} -}; - -int CPyExec_faster_hexbytes(PyObject *module) -{ - PyObject* modname = NULL; - modname = PyObject_GetAttrString((PyObject *)CPyModule_faster_hexbytes__internal, "__name__"); - CPyStatic_faster_hexbytes___globals = PyModule_GetDict(CPyModule_faster_hexbytes__internal); - if (unlikely(CPyStatic_faster_hexbytes___globals == NULL)) - goto fail; - if (CPyGlobalsInit() < 0) - goto fail; - char result = CPyDef_faster_hexbytes_____top_level__(); - if (result == 2) - goto fail; - Py_DECREF(modname); - return 0; - fail: - Py_CLEAR(CPyModule_faster_hexbytes__internal); - Py_CLEAR(modname); - return -1; -} -static struct PyModuleDef faster_hexbytesmodule = { - PyModuleDef_HEAD_INIT, - "faster_hexbytes", - NULL, /* docstring */ - 0, /* size of per-interpreter state of the module */ - faster_hexbytesmodule_methods, - NULL, -}; - -PyObject *CPyInit_faster_hexbytes(void) -{ - if (CPyModule_faster_hexbytes__internal) { - Py_INCREF(CPyModule_faster_hexbytes__internal); - return CPyModule_faster_hexbytes__internal; - } - CPyModule_faster_hexbytes__internal = PyModule_Create(&faster_hexbytesmodule); - if (unlikely(CPyModule_faster_hexbytes__internal == NULL)) - goto fail; - if (CPyExec_faster_hexbytes(CPyModule_faster_hexbytes__internal) != 0) - goto fail; - return CPyModule_faster_hexbytes__internal; - fail: - return NULL; -} - -char CPyDef_faster_hexbytes_____top_level__(void) { - PyObject *cpy_r_r0; - PyObject *cpy_r_r1; - char cpy_r_r2; - PyObject *cpy_r_r3; - PyObject *cpy_r_r4; - PyObject *cpy_r_r5; - PyObject *cpy_r_r6; - PyObject *cpy_r_r7; - PyObject *cpy_r_r8; - PyObject *cpy_r_r9; - PyObject *cpy_r_r10; - PyObject *cpy_r_r11; - PyObject *cpy_r_r12; - PyObject *cpy_r_r13; - PyObject *cpy_r_r14; - PyObject *cpy_r_r15; - CPyPtr cpy_r_r16; - CPyPtr cpy_r_r17; - PyObject *cpy_r_r18; - PyObject *cpy_r_r19; - int32_t cpy_r_r20; - char cpy_r_r21; - PyObject *cpy_r_r22; - PyObject *cpy_r_r23; - PyObject *cpy_r_r24; - PyObject *cpy_r_r25; - PyObject **cpy_r_r27; - PyObject *cpy_r_r28; - PyObject *cpy_r_r29; - PyObject *cpy_r_r30; - PyObject *cpy_r_r31; - int32_t cpy_r_r32; - char cpy_r_r33; - char cpy_r_r34; - cpy_r_r0 = CPyModule_builtins; - cpy_r_r1 = (PyObject *)&_Py_NoneStruct; - cpy_r_r2 = cpy_r_r0 != cpy_r_r1; - if (cpy_r_r2) goto CPyL3; - cpy_r_r3 = CPyStatics[3]; /* 'builtins' */ - cpy_r_r4 = PyImport_Import(cpy_r_r3); - if (unlikely(cpy_r_r4 == NULL)) { - CPy_AddTraceback("faster_hexbytes/__init__.py", "", -1, CPyStatic_faster_hexbytes___globals); - goto CPyL12; - } - CPyModule_builtins = cpy_r_r4; - CPy_INCREF(CPyModule_builtins); - CPy_DECREF(cpy_r_r4); -CPyL3: ; - cpy_r_r5 = CPyStatics[69]; /* ('version',) */ - cpy_r_r6 = CPyStatics[70]; /* ('__version',) */ - cpy_r_r7 = CPyStatics[6]; /* 'importlib.metadata' */ - cpy_r_r8 = CPyStatic_faster_hexbytes___globals; - cpy_r_r9 = CPyImport_ImportFromMany(cpy_r_r7, cpy_r_r5, cpy_r_r6, cpy_r_r8); - if (unlikely(cpy_r_r9 == NULL)) { - CPy_AddTraceback("faster_hexbytes/__init__.py", "", 1, CPyStatic_faster_hexbytes___globals); - goto CPyL12; - } - CPyModule_importlib___metadata = cpy_r_r9; - CPy_INCREF(CPyModule_importlib___metadata); - CPy_DECREF(cpy_r_r9); - cpy_r_r10 = CPyStatics[71]; /* ('HexBytes',) */ - cpy_r_r11 = CPyStatics[8]; /* 'faster_hexbytes.main' */ - cpy_r_r12 = CPyStatic_faster_hexbytes___globals; - cpy_r_r13 = CPyImport_ImportFromMany(cpy_r_r11, cpy_r_r10, cpy_r_r10, cpy_r_r12); - if (unlikely(cpy_r_r13 == NULL)) { - CPy_AddTraceback("faster_hexbytes/__init__.py", "", 5, CPyStatic_faster_hexbytes___globals); - goto CPyL12; - } - CPyModule_faster_hexbytes___main = cpy_r_r13; - CPy_INCREF(CPyModule_faster_hexbytes___main); - CPy_DECREF(cpy_r_r13); - cpy_r_r14 = CPyStatics[7]; /* 'HexBytes' */ - cpy_r_r15 = PyList_New(1); - if (unlikely(cpy_r_r15 == NULL)) { - CPy_AddTraceback("faster_hexbytes/__init__.py", "", 9, CPyStatic_faster_hexbytes___globals); - goto CPyL12; - } - cpy_r_r16 = (CPyPtr)&((PyListObject *)cpy_r_r15)->ob_item; - cpy_r_r17 = *(CPyPtr *)cpy_r_r16; - CPy_INCREF(cpy_r_r14); - *(PyObject * *)cpy_r_r17 = cpy_r_r14; - cpy_r_r18 = CPyStatic_faster_hexbytes___globals; - cpy_r_r19 = CPyStatics[9]; /* '__all__' */ - cpy_r_r20 = CPyDict_SetItem(cpy_r_r18, cpy_r_r19, cpy_r_r15); - CPy_DECREF_NO_IMM(cpy_r_r15); - cpy_r_r21 = cpy_r_r20 >= 0; - if (unlikely(!cpy_r_r21)) { - CPy_AddTraceback("faster_hexbytes/__init__.py", "", 9, CPyStatic_faster_hexbytes___globals); - goto CPyL12; - } - cpy_r_r22 = CPyStatics[10]; /* 'hexbytes' */ - cpy_r_r23 = CPyStatic_faster_hexbytes___globals; - cpy_r_r24 = CPyStatics[5]; /* '__version' */ - cpy_r_r25 = CPyDict_GetItem(cpy_r_r23, cpy_r_r24); - if (unlikely(cpy_r_r25 == NULL)) { - CPy_AddTraceback("faster_hexbytes/__init__.py", "", 11, CPyStatic_faster_hexbytes___globals); - goto CPyL12; - } - PyObject *cpy_r_r26[1] = {cpy_r_r22}; - cpy_r_r27 = (PyObject **)&cpy_r_r26; - cpy_r_r28 = PyObject_Vectorcall(cpy_r_r25, cpy_r_r27, 1, 0); - CPy_DECREF(cpy_r_r25); - if (unlikely(cpy_r_r28 == NULL)) { - CPy_AddTraceback("faster_hexbytes/__init__.py", "", 11, CPyStatic_faster_hexbytes___globals); - goto CPyL12; - } - if (likely(PyUnicode_Check(cpy_r_r28))) - cpy_r_r29 = cpy_r_r28; - else { - CPy_TypeErrorTraceback("faster_hexbytes/__init__.py", "", 11, CPyStatic_faster_hexbytes___globals, "str", cpy_r_r28); - goto CPyL12; - } - cpy_r_r30 = CPyStatic_faster_hexbytes___globals; - cpy_r_r31 = CPyStatics[11]; /* '__version__' */ - cpy_r_r32 = CPyDict_SetItem(cpy_r_r30, cpy_r_r31, cpy_r_r29); - CPy_DECREF(cpy_r_r29); - cpy_r_r33 = cpy_r_r32 >= 0; - if (unlikely(!cpy_r_r33)) { - CPy_AddTraceback("faster_hexbytes/__init__.py", "", 11, CPyStatic_faster_hexbytes___globals); - goto CPyL12; - } - return 1; -CPyL12: ; - cpy_r_r34 = 2; - return cpy_r_r34; -} -static PyMethodDef _utilsmodule_methods[] = { - {"to_bytes", (PyCFunction)CPyPy__utils___to_bytes, METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("to_bytes(val)\n--\n\n") /* docstring */}, - {"hexstr_to_bytes", (PyCFunction)CPyPy__utils___hexstr_to_bytes, METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("hexstr_to_bytes(hexstr)\n--\n\n") /* docstring */}, - {NULL, NULL, 0, NULL} -}; - -int CPyExec_faster_hexbytes____utils(PyObject *module) -{ - PyObject* modname = NULL; - modname = PyObject_GetAttrString((PyObject *)CPyModule_faster_hexbytes____utils__internal, "__name__"); - CPyStatic__utils___globals = PyModule_GetDict(CPyModule_faster_hexbytes____utils__internal); - if (unlikely(CPyStatic__utils___globals == NULL)) - goto fail; - if (CPyGlobalsInit() < 0) - goto fail; - char result = CPyDef__utils_____top_level__(); - if (result == 2) - goto fail; - Py_DECREF(modname); - return 0; - fail: - Py_CLEAR(CPyModule_faster_hexbytes____utils__internal); - Py_CLEAR(modname); - CPy_XDECREF(CPyStatic__utils___unhexlify); - CPyStatic__utils___unhexlify = NULL; - return -1; -} -static struct PyModuleDef _utilsmodule = { - PyModuleDef_HEAD_INIT, - "faster_hexbytes._utils", - NULL, /* docstring */ - 0, /* size of per-interpreter state of the module */ - _utilsmodule_methods, - NULL, -}; - -PyObject *CPyInit_faster_hexbytes____utils(void) -{ - if (CPyModule_faster_hexbytes____utils__internal) { - Py_INCREF(CPyModule_faster_hexbytes____utils__internal); - return CPyModule_faster_hexbytes____utils__internal; - } - CPyModule_faster_hexbytes____utils__internal = PyModule_Create(&_utilsmodule); - if (unlikely(CPyModule_faster_hexbytes____utils__internal == NULL)) - goto fail; - if (CPyExec_faster_hexbytes____utils(CPyModule_faster_hexbytes____utils__internal) != 0) - goto fail; - return CPyModule_faster_hexbytes____utils__internal; - fail: - return NULL; -} - -PyObject *CPyDef__utils___to_bytes(PyObject *cpy_r_val) { - char cpy_r_r0; - PyObject *cpy_r_r1; - char cpy_r_r2; - PyObject *cpy_r_r3; - PyObject *cpy_r_r4; - char cpy_r_r5; - PyObject *cpy_r_r6; - PyObject **cpy_r_r8; - PyObject *cpy_r_r9; - PyObject *cpy_r_r10; - char cpy_r_r11; - char cpy_r_r12; - PyObject *cpy_r_r13; - PyObject *cpy_r_r14; - PyObject *cpy_r_r15; - char cpy_r_r16; - CPyTagged cpy_r_r17; - int64_t cpy_r_r18; - char cpy_r_r19; - int64_t cpy_r_r20; - char cpy_r_r21; - char cpy_r_r22; - char cpy_r_r23; - char cpy_r_r24; - PyObject *cpy_r_r25; - CPyTagged cpy_r_r26; - PyObject *cpy_r_r27; - PyObject *cpy_r_r28; - PyObject *cpy_r_r29; - PyObject *cpy_r_r30; - PyObject *cpy_r_r31; - PyObject *cpy_r_r32; - PyObject **cpy_r_r34; - PyObject *cpy_r_r35; - CPyTagged cpy_r_r36; - PyObject *cpy_r_r37; - PyObject *cpy_r_r38; - PyObject *cpy_r_r39; - PyObject *cpy_r_r40; - PyObject **cpy_r_r42; - PyObject *cpy_r_r43; - PyObject *cpy_r_r44; - PyObject *cpy_r_r45; - PyObject *cpy_r_r46; - PyObject *cpy_r_r47; - PyObject *cpy_r_r48; - int32_t cpy_r_r49; - char cpy_r_r50; - char cpy_r_r51; - PyObject *cpy_r_r52; - PyObject **cpy_r_r54; - PyObject *cpy_r_r55; - PyObject *cpy_r_r56; - PyObject *cpy_r_r57; - PyObject *cpy_r_r58; - PyObject *cpy_r_r59; - PyObject *cpy_r_r60; - PyObject *cpy_r_r61; - PyObject **cpy_r_r63; - PyObject *cpy_r_r64; - PyObject *cpy_r_r65; - PyObject *cpy_r_r66; - PyObject *cpy_r_r67; - PyObject *cpy_r_r68; - PyObject *cpy_r_r69; - PyObject **cpy_r_r71; - PyObject *cpy_r_r72; - PyObject *cpy_r_r73; - PyObject *cpy_r_r74; - CPyPtr cpy_r_r75; - CPyPtr cpy_r_r76; - CPyPtr cpy_r_r77; - CPyPtr cpy_r_r78; - CPyPtr cpy_r_r79; - CPyPtr cpy_r_r80; - PyObject *cpy_r_r81; - PyObject *cpy_r_r82; - PyObject *cpy_r_r83; - PyObject *cpy_r_r84; - PyObject **cpy_r_r86; - PyObject *cpy_r_r87; - PyObject *cpy_r_r88; - cpy_r_r0 = PyBytes_Check(cpy_r_val); - if (!cpy_r_r0) goto CPyL3; - CPy_INCREF(cpy_r_val); - if (likely(PyBytes_Check(cpy_r_val) || PyByteArray_Check(cpy_r_val))) - cpy_r_r1 = cpy_r_val; - else { - CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "to_bytes", 19, CPyStatic__utils___globals, "bytes", cpy_r_val); - goto CPyL51; - } - return cpy_r_r1; -CPyL3: ; - cpy_r_r2 = PyUnicode_Check(cpy_r_val); - if (!cpy_r_r2) goto CPyL7; - CPy_INCREF(cpy_r_val); - if (likely(PyUnicode_Check(cpy_r_val))) - cpy_r_r3 = cpy_r_val; - else { - CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "to_bytes", 21, CPyStatic__utils___globals, "str", cpy_r_val); - goto CPyL51; - } - cpy_r_r4 = CPyDef__utils___hexstr_to_bytes(cpy_r_r3); - CPy_DECREF(cpy_r_r3); - if (unlikely(cpy_r_r4 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 21, CPyStatic__utils___globals); - goto CPyL51; - } - return cpy_r_r4; -CPyL7: ; - cpy_r_r5 = PyByteArray_Check(cpy_r_val); - if (!cpy_r_r5) goto CPyL11; - cpy_r_r6 = (PyObject *)&PyBytes_Type; - PyObject *cpy_r_r7[1] = {cpy_r_val}; - cpy_r_r8 = (PyObject **)&cpy_r_r7; - cpy_r_r9 = PyObject_Vectorcall(cpy_r_r6, cpy_r_r8, 1, 0); - if (unlikely(cpy_r_r9 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 23, CPyStatic__utils___globals); - goto CPyL51; - } - if (likely(PyBytes_Check(cpy_r_r9) || PyByteArray_Check(cpy_r_r9))) - cpy_r_r10 = cpy_r_r9; - else { - CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "to_bytes", 23, CPyStatic__utils___globals, "bytes", cpy_r_r9); - goto CPyL51; - } - return cpy_r_r10; -CPyL11: ; - cpy_r_r11 = PyBool_Check(cpy_r_val); - if (!cpy_r_r11) goto CPyL17; - if (unlikely(!PyBool_Check(cpy_r_val))) { - CPy_TypeError("bool", cpy_r_val); cpy_r_r12 = 2; - } else - cpy_r_r12 = cpy_r_val == Py_True; - if (unlikely(cpy_r_r12 == 2)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 25, CPyStatic__utils___globals); - goto CPyL51; - } - if (!cpy_r_r12) goto CPyL15; - cpy_r_r13 = CPyStatics[67]; /* b'\x01' */ - CPy_INCREF(cpy_r_r13); - cpy_r_r14 = cpy_r_r13; - goto CPyL16; -CPyL15: ; - cpy_r_r15 = CPyStatics[68]; /* b'\x00' */ - CPy_INCREF(cpy_r_r15); - cpy_r_r14 = cpy_r_r15; -CPyL16: ; - return cpy_r_r14; -CPyL17: ; - cpy_r_r16 = PyLong_Check(cpy_r_val); - if (!cpy_r_r16) goto CPyL37; - if (likely(PyLong_Check(cpy_r_val))) - cpy_r_r17 = CPyTagged_FromObject(cpy_r_val); - else { - CPy_TypeError("int", cpy_r_val); cpy_r_r17 = CPY_INT_TAG; - } - if (unlikely(cpy_r_r17 == CPY_INT_TAG)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 29, CPyStatic__utils___globals); - goto CPyL51; - } - cpy_r_r18 = cpy_r_r17 & 1; - cpy_r_r19 = cpy_r_r18 != 0; - if (cpy_r_r19) goto CPyL21; - cpy_r_r20 = 0 & 1; - cpy_r_r21 = cpy_r_r20 != 0; - if (!cpy_r_r21) goto CPyL22; -CPyL21: ; - cpy_r_r22 = CPyTagged_IsLt_(cpy_r_r17, 0); - cpy_r_r23 = cpy_r_r22; - goto CPyL23; -CPyL22: ; - cpy_r_r24 = (Py_ssize_t)cpy_r_r17 < (Py_ssize_t)0; - cpy_r_r23 = cpy_r_r24; -CPyL23: ; - CPyTagged_DECREF(cpy_r_r17); - if (!cpy_r_r23) goto CPyL31; - cpy_r_r25 = CPyStatics[12]; /* 'Cannot convert negative integer ' */ - if (likely(PyLong_Check(cpy_r_val))) - cpy_r_r26 = CPyTagged_FromObject(cpy_r_val); - else { - CPy_TypeError("int", cpy_r_val); cpy_r_r26 = CPY_INT_TAG; - } - if (unlikely(cpy_r_r26 == CPY_INT_TAG)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 30, CPyStatic__utils___globals); - goto CPyL51; - } - cpy_r_r27 = CPyTagged_Str(cpy_r_r26); - CPyTagged_DECREF(cpy_r_r26); - if (unlikely(cpy_r_r27 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 30, CPyStatic__utils___globals); - goto CPyL51; - } - cpy_r_r28 = CPyStatics[13]; /* ' to bytes' */ - cpy_r_r29 = CPyStr_Build(3, cpy_r_r25, cpy_r_r27, cpy_r_r28); - CPy_DECREF(cpy_r_r27); - if (unlikely(cpy_r_r29 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 30, CPyStatic__utils___globals); - goto CPyL51; - } - cpy_r_r30 = CPyModule_builtins; - cpy_r_r31 = CPyStatics[14]; /* 'ValueError' */ - cpy_r_r32 = CPyObject_GetAttr(cpy_r_r30, cpy_r_r31); - if (unlikely(cpy_r_r32 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 30, CPyStatic__utils___globals); - goto CPyL52; - } - PyObject *cpy_r_r33[1] = {cpy_r_r29}; - cpy_r_r34 = (PyObject **)&cpy_r_r33; - cpy_r_r35 = PyObject_Vectorcall(cpy_r_r32, cpy_r_r34, 1, 0); - CPy_DECREF(cpy_r_r32); - if (unlikely(cpy_r_r35 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 30, CPyStatic__utils___globals); - goto CPyL52; - } - CPy_DECREF(cpy_r_r29); - CPy_Raise(cpy_r_r35); - CPy_DECREF(cpy_r_r35); - if (unlikely(!0)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 30, CPyStatic__utils___globals); - goto CPyL51; - } - CPy_Unreachable(); -CPyL31: ; - if (likely(PyLong_Check(cpy_r_val))) - cpy_r_r36 = CPyTagged_FromObject(cpy_r_val); - else { - CPy_TypeError("int", cpy_r_val); cpy_r_r36 = CPY_INT_TAG; - } - if (unlikely(cpy_r_r36 == CPY_INT_TAG)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals); - goto CPyL51; - } - cpy_r_r37 = CPyModule_builtins; - cpy_r_r38 = CPyStatics[15]; /* 'hex' */ - cpy_r_r39 = CPyObject_GetAttr(cpy_r_r37, cpy_r_r38); - if (unlikely(cpy_r_r39 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals); - goto CPyL53; - } - cpy_r_r40 = CPyTagged_StealAsObject(cpy_r_r36); - PyObject *cpy_r_r41[1] = {cpy_r_r40}; - cpy_r_r42 = (PyObject **)&cpy_r_r41; - cpy_r_r43 = PyObject_Vectorcall(cpy_r_r39, cpy_r_r42, 1, 0); - CPy_DECREF(cpy_r_r39); - if (unlikely(cpy_r_r43 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals); - goto CPyL54; - } - CPy_DECREF(cpy_r_r40); - if (likely(PyUnicode_Check(cpy_r_r43))) - cpy_r_r44 = cpy_r_r43; - else { - CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals, "str", cpy_r_r43); - goto CPyL51; - } - cpy_r_r45 = CPyDef__utils___to_bytes(cpy_r_r44); - CPy_DECREF(cpy_r_r44); - if (unlikely(cpy_r_r45 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals); - goto CPyL51; - } - return cpy_r_r45; -CPyL37: ; - cpy_r_r46 = CPyModule_builtins; - cpy_r_r47 = CPyStatics[16]; /* 'memoryview' */ - cpy_r_r48 = CPyObject_GetAttr(cpy_r_r46, cpy_r_r47); - if (unlikely(cpy_r_r48 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 33, CPyStatic__utils___globals); - goto CPyL51; - } - cpy_r_r49 = PyObject_IsInstance(cpy_r_val, cpy_r_r48); - CPy_DECREF(cpy_r_r48); - cpy_r_r50 = cpy_r_r49 >= 0; - if (unlikely(!cpy_r_r50)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 33, CPyStatic__utils___globals); - goto CPyL51; - } - cpy_r_r51 = cpy_r_r49; - if (!cpy_r_r51) goto CPyL43; - cpy_r_r52 = (PyObject *)&PyBytes_Type; - PyObject *cpy_r_r53[1] = {cpy_r_val}; - cpy_r_r54 = (PyObject **)&cpy_r_r53; - cpy_r_r55 = PyObject_Vectorcall(cpy_r_r52, cpy_r_r54, 1, 0); - if (unlikely(cpy_r_r55 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 34, CPyStatic__utils___globals); - goto CPyL51; - } - if (likely(PyBytes_Check(cpy_r_r55) || PyByteArray_Check(cpy_r_r55))) - cpy_r_r56 = cpy_r_r55; - else { - CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "to_bytes", 34, CPyStatic__utils___globals, "bytes", cpy_r_r55); - goto CPyL51; - } - return cpy_r_r56; -CPyL43: ; - cpy_r_r57 = CPyStatics[17]; /* '' */ - cpy_r_r58 = CPyStatics[18]; /* 'Cannot convert ' */ - cpy_r_r59 = CPyStatics[19]; /* '{!r:{}}' */ - cpy_r_r60 = CPyStatics[17]; /* '' */ - cpy_r_r61 = CPyStatics[20]; /* 'format' */ - PyObject *cpy_r_r62[3] = {cpy_r_r59, cpy_r_val, cpy_r_r60}; - cpy_r_r63 = (PyObject **)&cpy_r_r62; - cpy_r_r64 = PyObject_VectorcallMethod(cpy_r_r61, cpy_r_r63, 9223372036854775811ULL, 0); - if (unlikely(cpy_r_r64 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 36, CPyStatic__utils___globals); - goto CPyL51; - } - cpy_r_r65 = CPyStatics[21]; /* ' of type ' */ - cpy_r_r66 = CPyStatics[22]; /* '{:{}}' */ - cpy_r_r67 = CPy_TYPE(cpy_r_val); - cpy_r_r68 = CPyStatics[17]; /* '' */ - cpy_r_r69 = CPyStatics[20]; /* 'format' */ - PyObject *cpy_r_r70[3] = {cpy_r_r66, cpy_r_r67, cpy_r_r68}; - cpy_r_r71 = (PyObject **)&cpy_r_r70; - cpy_r_r72 = PyObject_VectorcallMethod(cpy_r_r69, cpy_r_r71, 9223372036854775811ULL, 0); - if (unlikely(cpy_r_r72 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 36, CPyStatic__utils___globals); - goto CPyL55; - } - CPy_DECREF(cpy_r_r67); - cpy_r_r73 = CPyStatics[13]; /* ' to bytes' */ - cpy_r_r74 = PyList_New(5); - if (unlikely(cpy_r_r74 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 36, CPyStatic__utils___globals); - goto CPyL56; - } - cpy_r_r75 = (CPyPtr)&((PyListObject *)cpy_r_r74)->ob_item; - cpy_r_r76 = *(CPyPtr *)cpy_r_r75; - CPy_INCREF(cpy_r_r58); - *(PyObject * *)cpy_r_r76 = cpy_r_r58; - cpy_r_r77 = cpy_r_r76 + 8; - *(PyObject * *)cpy_r_r77 = cpy_r_r64; - CPy_INCREF(cpy_r_r65); - cpy_r_r78 = cpy_r_r76 + 16; - *(PyObject * *)cpy_r_r78 = cpy_r_r65; - cpy_r_r79 = cpy_r_r76 + 24; - *(PyObject * *)cpy_r_r79 = cpy_r_r72; - CPy_INCREF(cpy_r_r73); - cpy_r_r80 = cpy_r_r76 + 32; - *(PyObject * *)cpy_r_r80 = cpy_r_r73; - cpy_r_r81 = PyUnicode_Join(cpy_r_r57, cpy_r_r74); - CPy_DECREF_NO_IMM(cpy_r_r74); - if (unlikely(cpy_r_r81 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 36, CPyStatic__utils___globals); - goto CPyL51; - } - cpy_r_r82 = CPyModule_builtins; - cpy_r_r83 = CPyStatics[23]; /* 'TypeError' */ - cpy_r_r84 = CPyObject_GetAttr(cpy_r_r82, cpy_r_r83); - if (unlikely(cpy_r_r84 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 36, CPyStatic__utils___globals); - goto CPyL57; - } - PyObject *cpy_r_r85[1] = {cpy_r_r81}; - cpy_r_r86 = (PyObject **)&cpy_r_r85; - cpy_r_r87 = PyObject_Vectorcall(cpy_r_r84, cpy_r_r86, 1, 0); - CPy_DECREF(cpy_r_r84); - if (unlikely(cpy_r_r87 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 36, CPyStatic__utils___globals); - goto CPyL57; - } - CPy_DECREF(cpy_r_r81); - CPy_Raise(cpy_r_r87); - CPy_DECREF(cpy_r_r87); - if (unlikely(!0)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 36, CPyStatic__utils___globals); - goto CPyL51; - } - CPy_Unreachable(); -CPyL51: ; - cpy_r_r88 = NULL; - return cpy_r_r88; -CPyL52: ; - CPy_DecRef(cpy_r_r29); - goto CPyL51; -CPyL53: ; - CPyTagged_DecRef(cpy_r_r36); - goto CPyL51; -CPyL54: ; - CPy_DecRef(cpy_r_r40); - goto CPyL51; -CPyL55: ; - CPy_DecRef(cpy_r_r64); - CPy_DecRef(cpy_r_r67); - goto CPyL51; -CPyL56: ; - CPy_DecRef(cpy_r_r64); - CPy_DecRef(cpy_r_r72); - goto CPyL51; -CPyL57: ; - CPy_DecRef(cpy_r_r81); - goto CPyL51; -} - -PyObject *CPyPy__utils___to_bytes(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { - static const char * const kwlist[] = {"val", 0}; - static CPyArg_Parser parser = {"O:to_bytes", kwlist, 0}; - PyObject *obj_val; - if (!CPyArg_ParseStackAndKeywordsOneArg(args, nargs, kwnames, &parser, &obj_val)) { - return NULL; - } - PyObject *arg_val; - if (PyBytes_Check(obj_val) || PyByteArray_Check(obj_val)) - arg_val = obj_val; - else { - arg_val = NULL; - } - if (arg_val != NULL) goto __LL1; - if (PyUnicode_Check(obj_val)) - arg_val = obj_val; - else { - arg_val = NULL; - } - if (arg_val != NULL) goto __LL1; - arg_val = obj_val; - if (arg_val != NULL) goto __LL1; - if (PyBool_Check(obj_val)) - arg_val = obj_val; - else { - arg_val = NULL; - } - if (arg_val != NULL) goto __LL1; - if (PyLong_Check(obj_val)) - arg_val = obj_val; - else { - arg_val = NULL; - } - if (arg_val != NULL) goto __LL1; - CPy_TypeError("union[bytes, str, object, bool, int]", obj_val); - goto fail; -__LL1: ; - PyObject *retval = CPyDef__utils___to_bytes(arg_val); - return retval; -fail: ; - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 11, CPyStatic__utils___globals); - return NULL; -} - -PyObject *CPyDef__utils___hexstr_to_bytes(PyObject *cpy_r_hexstr) { - PyObject *cpy_r_r0; - PyObject *cpy_r_r1; - tuple_T2OO cpy_r_r2; - PyObject *cpy_r_r3; - char cpy_r_r4; - PyObject *cpy_r_r5; - PyObject *cpy_r_r6; - PyObject *cpy_r_non_prefixed_hex; - int64_t cpy_r_r7; - char cpy_r_r8; - CPyTagged cpy_r_r9; - CPyTagged cpy_r_r10; - char cpy_r_r11; - PyObject *cpy_r_r12; - PyObject *cpy_r_r13; - PyObject *cpy_r_padded_hex; - PyObject *cpy_r_r14; - tuple_T3OOO cpy_r_r15; - PyObject *cpy_r_r16; - PyObject *cpy_r_r17; - PyObject *cpy_r_r18; - char cpy_r_r19; - PyObject *cpy_r_r20; - PyObject *cpy_r_r21; - PyObject *cpy_r_r22; - PyObject *cpy_r_r23; - PyObject *cpy_r_r24; - PyObject *cpy_r_r25; - PyObject **cpy_r_r27; - PyObject *cpy_r_r28; - char cpy_r_r29; - PyObject *cpy_r_r30; - char cpy_r_r31; - PyObject **cpy_r_r33; - PyObject *cpy_r_r34; - PyObject *cpy_r_r35; - PyObject *cpy_r_r36; - cpy_r_r0 = CPyStatics[24]; /* '0x' */ - cpy_r_r1 = CPyStatics[25]; /* '0X' */ - CPy_INCREF(cpy_r_r0); - CPy_INCREF(cpy_r_r1); - cpy_r_r2.f0 = cpy_r_r0; - cpy_r_r2.f1 = cpy_r_r1; - cpy_r_r3 = PyTuple_New(2); - if (unlikely(cpy_r_r3 == NULL)) - CPyError_OutOfMemory(); - PyObject *__tmp2 = cpy_r_r2.f0; - PyTuple_SET_ITEM(cpy_r_r3, 0, __tmp2); - PyObject *__tmp3 = cpy_r_r2.f1; - PyTuple_SET_ITEM(cpy_r_r3, 1, __tmp3); - cpy_r_r4 = CPyStr_Startswith(cpy_r_hexstr, cpy_r_r3); - CPy_DECREF(cpy_r_r3); - if (unlikely(cpy_r_r4 == 2)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 40, CPyStatic__utils___globals); - goto CPyL31; - } - if (!cpy_r_r4) goto CPyL5; - cpy_r_r5 = CPyStr_GetSlice(cpy_r_hexstr, 4, 9223372036854775806LL); - if (unlikely(cpy_r_r5 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 41, CPyStatic__utils___globals); - goto CPyL31; - } - if (likely(PyUnicode_Check(cpy_r_r5))) - cpy_r_r6 = cpy_r_r5; - else { - CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 41, CPyStatic__utils___globals, "str", cpy_r_r5); - goto CPyL31; - } - cpy_r_non_prefixed_hex = cpy_r_r6; - goto CPyL6; -CPyL5: ; - CPy_INCREF(cpy_r_hexstr); - cpy_r_non_prefixed_hex = cpy_r_hexstr; -CPyL6: ; - cpy_r_r7 = CPyStr_Size_size_t(cpy_r_hexstr); - cpy_r_r8 = cpy_r_r7 >= 0; - if (unlikely(!cpy_r_r8)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 46, CPyStatic__utils___globals); - goto CPyL32; - } - cpy_r_r9 = cpy_r_r7 << 1; - cpy_r_r10 = CPyTagged_Remainder(cpy_r_r9, 4); - if (unlikely(cpy_r_r10 == CPY_INT_TAG)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 46, CPyStatic__utils___globals); - goto CPyL32; - } - cpy_r_r11 = cpy_r_r10 != 0; - CPyTagged_DECREF(cpy_r_r10); - if (!cpy_r_r11) goto CPyL11; - cpy_r_r12 = CPyStatics[26]; /* '0' */ - cpy_r_r13 = PyUnicode_Concat(cpy_r_r12, cpy_r_non_prefixed_hex); - CPy_DECREF(cpy_r_non_prefixed_hex); - if (unlikely(cpy_r_r13 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 47, CPyStatic__utils___globals); - goto CPyL31; - } - cpy_r_padded_hex = cpy_r_r13; - goto CPyL12; -CPyL11: ; - cpy_r_padded_hex = cpy_r_non_prefixed_hex; -CPyL12: ; - cpy_r_r14 = PyUnicode_AsASCIIString(cpy_r_padded_hex); - if (unlikely(cpy_r_r14 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 52, CPyStatic__utils___globals); - goto CPyL14; - } else - goto CPyL33; -CPyL13: ; - goto CPyL25; -CPyL14: ; - cpy_r_r15 = CPy_CatchError(); - cpy_r_r16 = CPyModule_builtins; - cpy_r_r17 = CPyStatics[27]; /* 'UnicodeDecodeError' */ - cpy_r_r18 = CPyObject_GetAttr(cpy_r_r16, cpy_r_r17); - if (unlikely(cpy_r_r18 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 53, CPyStatic__utils___globals); - goto CPyL34; - } - cpy_r_r19 = CPy_ExceptionMatches(cpy_r_r18); - CPy_DecRef(cpy_r_r18); - if (!cpy_r_r19) goto CPyL35; - cpy_r_r20 = CPyStatics[28]; /* 'hex string ' */ - cpy_r_r21 = CPyStatics[29]; /* ' may only contain [0-9a-fA-F] characters' */ - cpy_r_r22 = CPyStr_Build(3, cpy_r_r20, cpy_r_padded_hex, cpy_r_r21); - CPy_DecRef(cpy_r_padded_hex); - if (unlikely(cpy_r_r22 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 55, CPyStatic__utils___globals); - goto CPyL23; - } - cpy_r_r23 = CPyModule_builtins; - cpy_r_r24 = CPyStatics[14]; /* 'ValueError' */ - cpy_r_r25 = CPyObject_GetAttr(cpy_r_r23, cpy_r_r24); - if (unlikely(cpy_r_r25 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 54, CPyStatic__utils___globals); - goto CPyL36; - } - PyObject *cpy_r_r26[1] = {cpy_r_r22}; - cpy_r_r27 = (PyObject **)&cpy_r_r26; - cpy_r_r28 = PyObject_Vectorcall(cpy_r_r25, cpy_r_r27, 1, 0); - CPy_DecRef(cpy_r_r25); - if (unlikely(cpy_r_r28 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 54, CPyStatic__utils___globals); - goto CPyL36; - } - CPy_DecRef(cpy_r_r22); - CPy_Raise(cpy_r_r28); - CPy_DecRef(cpy_r_r28); - if (unlikely(!0)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 54, CPyStatic__utils___globals); - goto CPyL23; - } else - goto CPyL37; -CPyL20: ; - CPy_Unreachable(); -CPyL21: ; - CPy_Reraise(); - if (!0) { - goto CPyL23; - } else - goto CPyL38; -CPyL22: ; - CPy_Unreachable(); -CPyL23: ; - CPy_RestoreExcInfo(cpy_r_r15); - CPy_DecRef(cpy_r_r15.f0); - CPy_DecRef(cpy_r_r15.f1); - CPy_DecRef(cpy_r_r15.f2); - cpy_r_r29 = CPy_KeepPropagating(); - if (!cpy_r_r29) goto CPyL31; - CPy_Unreachable(); -CPyL25: ; - cpy_r_r30 = CPyStatic__utils___unhexlify; - if (unlikely(cpy_r_r30 == NULL)) { - goto CPyL39; - } else - goto CPyL28; -CPyL26: ; - PyErr_SetString(PyExc_NameError, "value for final name \"unhexlify\" was not set"); - cpy_r_r31 = 0; - if (unlikely(!cpy_r_r31)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 58, CPyStatic__utils___globals); - goto CPyL31; - } - CPy_Unreachable(); -CPyL28: ; - PyObject *cpy_r_r32[1] = {cpy_r_r14}; - cpy_r_r33 = (PyObject **)&cpy_r_r32; - cpy_r_r34 = PyObject_Vectorcall(cpy_r_r30, cpy_r_r33, 1, 0); - if (unlikely(cpy_r_r34 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 58, CPyStatic__utils___globals); - goto CPyL40; - } - CPy_DECREF(cpy_r_r14); - if (likely(PyBytes_Check(cpy_r_r34) || PyByteArray_Check(cpy_r_r34))) - cpy_r_r35 = cpy_r_r34; - else { - CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 58, CPyStatic__utils___globals, "bytes", cpy_r_r34); - goto CPyL31; - } - return cpy_r_r35; -CPyL31: ; - cpy_r_r36 = NULL; - return cpy_r_r36; -CPyL32: ; - CPy_DecRef(cpy_r_non_prefixed_hex); - goto CPyL31; -CPyL33: ; - CPy_DECREF(cpy_r_padded_hex); - goto CPyL13; -CPyL34: ; - CPy_DecRef(cpy_r_padded_hex); - goto CPyL23; -CPyL35: ; - CPy_DecRef(cpy_r_padded_hex); - goto CPyL21; -CPyL36: ; - CPy_DecRef(cpy_r_r22); - goto CPyL23; -CPyL37: ; - CPy_DecRef(cpy_r_r15.f0); - CPy_DecRef(cpy_r_r15.f1); - CPy_DecRef(cpy_r_r15.f2); - goto CPyL20; -CPyL38: ; - CPy_DecRef(cpy_r_r15.f0); - CPy_DecRef(cpy_r_r15.f1); - CPy_DecRef(cpy_r_r15.f2); - goto CPyL22; -CPyL39: ; - CPy_DecRef(cpy_r_r14); - goto CPyL26; -CPyL40: ; - CPy_DecRef(cpy_r_r14); - goto CPyL31; -} - -PyObject *CPyPy__utils___hexstr_to_bytes(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { - static const char * const kwlist[] = {"hexstr", 0}; - static CPyArg_Parser parser = {"O:hexstr_to_bytes", kwlist, 0}; - PyObject *obj_hexstr; - if (!CPyArg_ParseStackAndKeywordsOneArg(args, nargs, kwnames, &parser, &obj_hexstr)) { - return NULL; - } - PyObject *arg_hexstr; - if (likely(PyUnicode_Check(obj_hexstr))) - arg_hexstr = obj_hexstr; - else { - CPy_TypeError("str", obj_hexstr); - goto fail; - } - PyObject *retval = CPyDef__utils___hexstr_to_bytes(arg_hexstr); - return retval; -fail: ; - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 39, CPyStatic__utils___globals); - return NULL; -} - -char CPyDef__utils_____top_level__(void) { - PyObject *cpy_r_r0; - PyObject *cpy_r_r1; - char cpy_r_r2; - PyObject *cpy_r_r3; - PyObject *cpy_r_r4; - PyObject **cpy_r_r5; - void *cpy_r_r7; - void *cpy_r_r9; - PyObject *cpy_r_r10; - PyObject *cpy_r_r11; - PyObject *cpy_r_r12; - PyObject *cpy_r_r13; - char cpy_r_r14; - PyObject *cpy_r_r15; - PyObject *cpy_r_r16; - PyObject *cpy_r_r17; - PyObject *cpy_r_r18; - PyObject *cpy_r_r19; - PyObject *cpy_r_r20; - PyObject *cpy_r_r21; - PyObject *cpy_r_r22; - PyObject *cpy_r_r23; - int32_t cpy_r_r24; - char cpy_r_r25; - char cpy_r_r26; - cpy_r_r0 = CPyModule_builtins; - cpy_r_r1 = (PyObject *)&_Py_NoneStruct; - cpy_r_r2 = cpy_r_r0 != cpy_r_r1; - if (cpy_r_r2) goto CPyL3; - cpy_r_r3 = CPyStatics[3]; /* 'builtins' */ - cpy_r_r4 = PyImport_Import(cpy_r_r3); - if (unlikely(cpy_r_r4 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "", -1, CPyStatic__utils___globals); - goto CPyL8; - } - CPyModule_builtins = cpy_r_r4; - CPy_INCREF(CPyModule_builtins); - CPy_DECREF(cpy_r_r4); -CPyL3: ; - cpy_r_r5 = (PyObject **)&CPyModule_binascii; - PyObject **cpy_r_r6[1] = {cpy_r_r5}; - cpy_r_r7 = (void *)&cpy_r_r6; - int64_t cpy_r_r8[1] = {1}; - cpy_r_r9 = (void *)&cpy_r_r8; - cpy_r_r10 = CPyStatics[73]; /* (('binascii', 'binascii', 'binascii'),) */ - cpy_r_r11 = CPyStatic__utils___globals; - cpy_r_r12 = CPyStatics[31]; /* 'faster_hexbytes/_utils.py' */ - cpy_r_r13 = CPyStatics[32]; /* '' */ - cpy_r_r14 = CPyImport_ImportMany(cpy_r_r10, cpy_r_r7, cpy_r_r11, cpy_r_r12, cpy_r_r13, cpy_r_r9); - if (!cpy_r_r14) goto CPyL8; - cpy_r_r15 = CPyStatics[74]; /* ('Final', 'Union') */ - cpy_r_r16 = CPyStatics[35]; /* 'typing' */ - cpy_r_r17 = CPyStatic__utils___globals; - cpy_r_r18 = CPyImport_ImportFromMany(cpy_r_r16, cpy_r_r15, cpy_r_r15, cpy_r_r17); - if (unlikely(cpy_r_r18 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "", 2, CPyStatic__utils___globals); - goto CPyL8; - } - CPyModule_typing = cpy_r_r18; - CPy_INCREF(CPyModule_typing); - CPy_DECREF(cpy_r_r18); - cpy_r_r19 = CPyModule_binascii; - cpy_r_r20 = CPyStatics[36]; /* 'unhexlify' */ - cpy_r_r21 = CPyObject_GetAttr(cpy_r_r19, cpy_r_r20); - if (unlikely(cpy_r_r21 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "", 8, CPyStatic__utils___globals); - goto CPyL8; - } - CPyStatic__utils___unhexlify = cpy_r_r21; - CPy_INCREF(CPyStatic__utils___unhexlify); - cpy_r_r22 = CPyStatic__utils___globals; - cpy_r_r23 = CPyStatics[36]; /* 'unhexlify' */ - cpy_r_r24 = CPyDict_SetItem(cpy_r_r22, cpy_r_r23, cpy_r_r21); - CPy_DECREF(cpy_r_r21); - cpy_r_r25 = cpy_r_r24 >= 0; - if (unlikely(!cpy_r_r25)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "", 8, CPyStatic__utils___globals); - goto CPyL8; - } - return 1; -CPyL8: ; - cpy_r_r26 = 2; - return cpy_r_r26; -} - -static PyObject *CPyDunder___get__main_____new___3_HexBytes_obj(PyObject *self, PyObject *instance, PyObject *owner) { - instance = instance ? instance : Py_None; - return CPyDef_main_____new___3_HexBytes_obj_____get__(self, instance, owner); -} -PyObject *CPyDef_main_____mypyc___3__new___3_HexBytes_obj_setup(PyObject *cpy_r_type); -PyObject *CPyDef_main_____new___3_HexBytes_obj(void); - -static PyObject * -main_____new___3_HexBytes_obj_new(PyTypeObject *type, PyObject *args, PyObject *kwds) -{ - if (type != CPyType_main_____new___3_HexBytes_obj) { - PyErr_SetString(PyExc_TypeError, "interpreted classes cannot inherit from compiled"); - return NULL; - } - PyObject *self = CPyDef_main_____mypyc___3__new___3_HexBytes_obj_setup((PyObject*)type); - if (self == NULL) - return NULL; - return self; -} - -static int -main_____new___3_HexBytes_obj_traverse(faster_hexbytes___main_____new___3_HexBytes_objObject *self, visitproc visit, void *arg) -{ - return 0; -} - -static int -main_____new___3_HexBytes_obj_clear(faster_hexbytes___main_____new___3_HexBytes_objObject *self) -{ - return 0; -} - -static void -main_____new___3_HexBytes_obj_dealloc(faster_hexbytes___main_____new___3_HexBytes_objObject *self) -{ - PyObject_GC_UnTrack(self); - if (main_____new___3_HexBytes_obj_free_instance == NULL) { - main_____new___3_HexBytes_obj_free_instance = self; - return; - } - CPy_TRASHCAN_BEGIN(self, main_____new___3_HexBytes_obj_dealloc) - main_____new___3_HexBytes_obj_clear(self); - Py_TYPE(self)->tp_free((PyObject *)self); - CPy_TRASHCAN_END(self) -} - -static CPyVTableItem main_____new___3_HexBytes_obj_vtable[2]; -static bool -CPyDef_main_____new___3_HexBytes_obj_trait_vtable_setup(void) -{ - CPyVTableItem main_____new___3_HexBytes_obj_vtable_scratch[] = { - (CPyVTableItem)CPyDef_main_____new___3_HexBytes_obj_____call__, - (CPyVTableItem)CPyDef_main_____new___3_HexBytes_obj_____get__, - }; - memcpy(main_____new___3_HexBytes_obj_vtable, main_____new___3_HexBytes_obj_vtable_scratch, sizeof(main_____new___3_HexBytes_obj_vtable)); - return 1; -} - -static PyMethodDef main_____new___3_HexBytes_obj_methods[] = { - {"__call__", - (PyCFunction)CPyPy_main_____new___3_HexBytes_obj_____call__, - METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__call__($cls, val)\n--\n\n")}, - {"__get__", - (PyCFunction)CPyPy_main_____new___3_HexBytes_obj_____get__, - METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__get__($instance, owner)\n--\n\n")}, - {"__setstate__", (PyCFunction)CPyPickle_SetState, METH_O, NULL}, - {"__getstate__", (PyCFunction)CPyPickle_GetState, METH_NOARGS, NULL}, - {NULL} /* Sentinel */ -}; - -static PyTypeObject CPyType_main_____new___3_HexBytes_obj_template_ = { - PyVarObject_HEAD_INIT(NULL, 0) - .tp_name = "__new___HexBytes_obj", - .tp_new = main_____new___3_HexBytes_obj_new, - .tp_dealloc = (destructor)main_____new___3_HexBytes_obj_dealloc, - .tp_traverse = (traverseproc)main_____new___3_HexBytes_obj_traverse, - .tp_clear = (inquiry)main_____new___3_HexBytes_obj_clear, - .tp_methods = main_____new___3_HexBytes_obj_methods, - .tp_call = PyVectorcall_Call, - .tp_descr_get = CPyDunder___get__main_____new___3_HexBytes_obj, - .tp_basicsize = sizeof(faster_hexbytes___main_____new___3_HexBytes_objObject), - .tp_vectorcall_offset = offsetof(faster_hexbytes___main_____new___3_HexBytes_objObject, vectorcall), - .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | _Py_TPFLAGS_HAVE_VECTORCALL, - .tp_doc = PyDoc_STR("__new___HexBytes_obj()\n--\n\n"), -}; -static PyTypeObject *CPyType_main_____new___3_HexBytes_obj_template = &CPyType_main_____new___3_HexBytes_obj_template_; - -PyObject *CPyDef_main_____mypyc___3__new___3_HexBytes_obj_setup(PyObject *cpy_r_type) -{ - PyTypeObject *type = (PyTypeObject*)cpy_r_type; - faster_hexbytes___main_____new___3_HexBytes_objObject *self; - if (main_____new___3_HexBytes_obj_free_instance != NULL) { - self = main_____new___3_HexBytes_obj_free_instance; - main_____new___3_HexBytes_obj_free_instance = NULL; - Py_SET_REFCNT(self, 1); - PyObject_GC_Track(self); - return (PyObject *)self; - } - self = (faster_hexbytes___main_____new___3_HexBytes_objObject *)type->tp_alloc(type, 0); - if (self == NULL) - return NULL; - self->vtable = main_____new___3_HexBytes_obj_vtable; - self->vectorcall = CPyPy_main_____new___3_HexBytes_obj_____call__; - return (PyObject *)self; -} - -PyObject *CPyDef_main_____new___3_HexBytes_obj(void) -{ - PyObject *self = CPyDef_main_____mypyc___3__new___3_HexBytes_obj_setup((PyObject *)CPyType_main_____new___3_HexBytes_obj); - if (self == NULL) - return NULL; - return self; -} - - -static PyObject *CPyDunder___get__main_____getitem___3_HexBytes_obj(PyObject *self, PyObject *instance, PyObject *owner) { - instance = instance ? instance : Py_None; - return CPyDef_main_____getitem___3_HexBytes_obj_____get__(self, instance, owner); -} -PyObject *CPyDef_main_____mypyc___3__getitem___3_HexBytes_obj_setup(PyObject *cpy_r_type); -PyObject *CPyDef_main_____getitem___3_HexBytes_obj(void); - -static PyObject * -main_____getitem___3_HexBytes_obj_new(PyTypeObject *type, PyObject *args, PyObject *kwds) -{ - if (type != CPyType_main_____getitem___3_HexBytes_obj) { - PyErr_SetString(PyExc_TypeError, "interpreted classes cannot inherit from compiled"); - return NULL; - } - PyObject *self = CPyDef_main_____mypyc___3__getitem___3_HexBytes_obj_setup((PyObject*)type); - if (self == NULL) - return NULL; - return self; -} - -static int -main_____getitem___3_HexBytes_obj_traverse(faster_hexbytes___main_____getitem___3_HexBytes_objObject *self, visitproc visit, void *arg) -{ - return 0; -} - -static int -main_____getitem___3_HexBytes_obj_clear(faster_hexbytes___main_____getitem___3_HexBytes_objObject *self) -{ - return 0; -} - -static void -main_____getitem___3_HexBytes_obj_dealloc(faster_hexbytes___main_____getitem___3_HexBytes_objObject *self) -{ - PyObject_GC_UnTrack(self); - if (main_____getitem___3_HexBytes_obj_free_instance == NULL) { - main_____getitem___3_HexBytes_obj_free_instance = self; - return; - } - CPy_TRASHCAN_BEGIN(self, main_____getitem___3_HexBytes_obj_dealloc) - main_____getitem___3_HexBytes_obj_clear(self); - Py_TYPE(self)->tp_free((PyObject *)self); - CPy_TRASHCAN_END(self) -} - -static CPyVTableItem main_____getitem___3_HexBytes_obj_vtable[2]; -static bool -CPyDef_main_____getitem___3_HexBytes_obj_trait_vtable_setup(void) -{ - CPyVTableItem main_____getitem___3_HexBytes_obj_vtable_scratch[] = { - (CPyVTableItem)CPyDef_main_____getitem___3_HexBytes_obj_____call__, - (CPyVTableItem)CPyDef_main_____getitem___3_HexBytes_obj_____get__, - }; - memcpy(main_____getitem___3_HexBytes_obj_vtable, main_____getitem___3_HexBytes_obj_vtable_scratch, sizeof(main_____getitem___3_HexBytes_obj_vtable)); - return 1; -} - -static PyMethodDef main_____getitem___3_HexBytes_obj_methods[] = { - {"__call__", - (PyCFunction)CPyPy_main_____getitem___3_HexBytes_obj_____call__, - METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__call__($self, key, /)\n--\n\n")}, - {"__get__", - (PyCFunction)CPyPy_main_____getitem___3_HexBytes_obj_____get__, - METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__get__($instance, owner)\n--\n\n")}, - {"__setstate__", (PyCFunction)CPyPickle_SetState, METH_O, NULL}, - {"__getstate__", (PyCFunction)CPyPickle_GetState, METH_NOARGS, NULL}, - {NULL} /* Sentinel */ -}; - -static PyTypeObject CPyType_main_____getitem___3_HexBytes_obj_template_ = { - PyVarObject_HEAD_INIT(NULL, 0) - .tp_name = "__getitem___HexBytes_obj", - .tp_new = main_____getitem___3_HexBytes_obj_new, - .tp_dealloc = (destructor)main_____getitem___3_HexBytes_obj_dealloc, - .tp_traverse = (traverseproc)main_____getitem___3_HexBytes_obj_traverse, - .tp_clear = (inquiry)main_____getitem___3_HexBytes_obj_clear, - .tp_methods = main_____getitem___3_HexBytes_obj_methods, - .tp_call = PyVectorcall_Call, - .tp_descr_get = CPyDunder___get__main_____getitem___3_HexBytes_obj, - .tp_basicsize = sizeof(faster_hexbytes___main_____getitem___3_HexBytes_objObject), - .tp_vectorcall_offset = offsetof(faster_hexbytes___main_____getitem___3_HexBytes_objObject, vectorcall), - .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | _Py_TPFLAGS_HAVE_VECTORCALL, - .tp_doc = PyDoc_STR("__getitem___HexBytes_obj()\n--\n\n"), -}; -static PyTypeObject *CPyType_main_____getitem___3_HexBytes_obj_template = &CPyType_main_____getitem___3_HexBytes_obj_template_; - -PyObject *CPyDef_main_____mypyc___3__getitem___3_HexBytes_obj_setup(PyObject *cpy_r_type) -{ - PyTypeObject *type = (PyTypeObject*)cpy_r_type; - faster_hexbytes___main_____getitem___3_HexBytes_objObject *self; - if (main_____getitem___3_HexBytes_obj_free_instance != NULL) { - self = main_____getitem___3_HexBytes_obj_free_instance; - main_____getitem___3_HexBytes_obj_free_instance = NULL; - Py_SET_REFCNT(self, 1); - PyObject_GC_Track(self); - return (PyObject *)self; - } - self = (faster_hexbytes___main_____getitem___3_HexBytes_objObject *)type->tp_alloc(type, 0); - if (self == NULL) - return NULL; - self->vtable = main_____getitem___3_HexBytes_obj_vtable; - self->vectorcall = CPyPy_main_____getitem___3_HexBytes_obj_____call__; - return (PyObject *)self; -} - -PyObject *CPyDef_main_____getitem___3_HexBytes_obj(void) -{ - PyObject *self = CPyDef_main_____mypyc___3__getitem___3_HexBytes_obj_setup((PyObject *)CPyType_main_____getitem___3_HexBytes_obj); - if (self == NULL) - return NULL; - return self; -} - - -static PyObject *CPyDunder___get__main_____repr___3_HexBytes_obj(PyObject *self, PyObject *instance, PyObject *owner) { - instance = instance ? instance : Py_None; - return CPyDef_main_____repr___3_HexBytes_obj_____get__(self, instance, owner); -} -PyObject *CPyDef_main_____mypyc___3__repr___3_HexBytes_obj_setup(PyObject *cpy_r_type); -PyObject *CPyDef_main_____repr___3_HexBytes_obj(void); - -static PyObject * -main_____repr___3_HexBytes_obj_new(PyTypeObject *type, PyObject *args, PyObject *kwds) -{ - if (type != CPyType_main_____repr___3_HexBytes_obj) { - PyErr_SetString(PyExc_TypeError, "interpreted classes cannot inherit from compiled"); - return NULL; - } - PyObject *self = CPyDef_main_____mypyc___3__repr___3_HexBytes_obj_setup((PyObject*)type); - if (self == NULL) - return NULL; - return self; -} - -static int -main_____repr___3_HexBytes_obj_traverse(faster_hexbytes___main_____repr___3_HexBytes_objObject *self, visitproc visit, void *arg) -{ - return 0; -} - -static int -main_____repr___3_HexBytes_obj_clear(faster_hexbytes___main_____repr___3_HexBytes_objObject *self) -{ - return 0; -} - -static void -main_____repr___3_HexBytes_obj_dealloc(faster_hexbytes___main_____repr___3_HexBytes_objObject *self) -{ - PyObject_GC_UnTrack(self); - if (main_____repr___3_HexBytes_obj_free_instance == NULL) { - main_____repr___3_HexBytes_obj_free_instance = self; - return; - } - CPy_TRASHCAN_BEGIN(self, main_____repr___3_HexBytes_obj_dealloc) - main_____repr___3_HexBytes_obj_clear(self); - Py_TYPE(self)->tp_free((PyObject *)self); - CPy_TRASHCAN_END(self) -} - -static CPyVTableItem main_____repr___3_HexBytes_obj_vtable[2]; -static bool -CPyDef_main_____repr___3_HexBytes_obj_trait_vtable_setup(void) -{ - CPyVTableItem main_____repr___3_HexBytes_obj_vtable_scratch[] = { - (CPyVTableItem)CPyDef_main_____repr___3_HexBytes_obj_____call__, - (CPyVTableItem)CPyDef_main_____repr___3_HexBytes_obj_____get__, - }; - memcpy(main_____repr___3_HexBytes_obj_vtable, main_____repr___3_HexBytes_obj_vtable_scratch, sizeof(main_____repr___3_HexBytes_obj_vtable)); - return 1; -} - -static PyMethodDef main_____repr___3_HexBytes_obj_methods[] = { - {"__call__", - (PyCFunction)CPyPy_main_____repr___3_HexBytes_obj_____call__, - METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__call__($self, /)\n--\n\n")}, - {"__get__", - (PyCFunction)CPyPy_main_____repr___3_HexBytes_obj_____get__, - METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__get__($instance, owner)\n--\n\n")}, - {"__setstate__", (PyCFunction)CPyPickle_SetState, METH_O, NULL}, - {"__getstate__", (PyCFunction)CPyPickle_GetState, METH_NOARGS, NULL}, - {NULL} /* Sentinel */ -}; - -static PyTypeObject CPyType_main_____repr___3_HexBytes_obj_template_ = { - PyVarObject_HEAD_INIT(NULL, 0) - .tp_name = "__repr___HexBytes_obj", - .tp_new = main_____repr___3_HexBytes_obj_new, - .tp_dealloc = (destructor)main_____repr___3_HexBytes_obj_dealloc, - .tp_traverse = (traverseproc)main_____repr___3_HexBytes_obj_traverse, - .tp_clear = (inquiry)main_____repr___3_HexBytes_obj_clear, - .tp_methods = main_____repr___3_HexBytes_obj_methods, - .tp_call = PyVectorcall_Call, - .tp_descr_get = CPyDunder___get__main_____repr___3_HexBytes_obj, - .tp_basicsize = sizeof(faster_hexbytes___main_____repr___3_HexBytes_objObject), - .tp_vectorcall_offset = offsetof(faster_hexbytes___main_____repr___3_HexBytes_objObject, vectorcall), - .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | _Py_TPFLAGS_HAVE_VECTORCALL, - .tp_doc = PyDoc_STR("__repr___HexBytes_obj()\n--\n\n"), -}; -static PyTypeObject *CPyType_main_____repr___3_HexBytes_obj_template = &CPyType_main_____repr___3_HexBytes_obj_template_; - -PyObject *CPyDef_main_____mypyc___3__repr___3_HexBytes_obj_setup(PyObject *cpy_r_type) -{ - PyTypeObject *type = (PyTypeObject*)cpy_r_type; - faster_hexbytes___main_____repr___3_HexBytes_objObject *self; - if (main_____repr___3_HexBytes_obj_free_instance != NULL) { - self = main_____repr___3_HexBytes_obj_free_instance; - main_____repr___3_HexBytes_obj_free_instance = NULL; - Py_SET_REFCNT(self, 1); - PyObject_GC_Track(self); - return (PyObject *)self; - } - self = (faster_hexbytes___main_____repr___3_HexBytes_objObject *)type->tp_alloc(type, 0); - if (self == NULL) - return NULL; - self->vtable = main_____repr___3_HexBytes_obj_vtable; - self->vectorcall = CPyPy_main_____repr___3_HexBytes_obj_____call__; - return (PyObject *)self; -} - -PyObject *CPyDef_main_____repr___3_HexBytes_obj(void) -{ - PyObject *self = CPyDef_main_____mypyc___3__repr___3_HexBytes_obj_setup((PyObject *)CPyType_main_____repr___3_HexBytes_obj); - if (self == NULL) - return NULL; - return self; -} - - -static PyObject *CPyDunder___get__main___to_0x_hex_HexBytes_obj(PyObject *self, PyObject *instance, PyObject *owner) { - instance = instance ? instance : Py_None; - return CPyDef_main___to_0x_hex_HexBytes_obj_____get__(self, instance, owner); -} -PyObject *CPyDef_main_____mypyc__to_0x_hex_HexBytes_obj_setup(PyObject *cpy_r_type); -PyObject *CPyDef_main___to_0x_hex_HexBytes_obj(void); - -static PyObject * -main___to_0x_hex_HexBytes_obj_new(PyTypeObject *type, PyObject *args, PyObject *kwds) -{ - if (type != CPyType_main___to_0x_hex_HexBytes_obj) { - PyErr_SetString(PyExc_TypeError, "interpreted classes cannot inherit from compiled"); - return NULL; - } - PyObject *self = CPyDef_main_____mypyc__to_0x_hex_HexBytes_obj_setup((PyObject*)type); - if (self == NULL) - return NULL; - return self; -} - -static int -main___to_0x_hex_HexBytes_obj_traverse(faster_hexbytes___main___to_0x_hex_HexBytes_objObject *self, visitproc visit, void *arg) -{ - return 0; -} - -static int -main___to_0x_hex_HexBytes_obj_clear(faster_hexbytes___main___to_0x_hex_HexBytes_objObject *self) -{ - return 0; -} - -static void -main___to_0x_hex_HexBytes_obj_dealloc(faster_hexbytes___main___to_0x_hex_HexBytes_objObject *self) -{ - PyObject_GC_UnTrack(self); - if (main___to_0x_hex_HexBytes_obj_free_instance == NULL) { - main___to_0x_hex_HexBytes_obj_free_instance = self; - return; - } - CPy_TRASHCAN_BEGIN(self, main___to_0x_hex_HexBytes_obj_dealloc) - main___to_0x_hex_HexBytes_obj_clear(self); - Py_TYPE(self)->tp_free((PyObject *)self); - CPy_TRASHCAN_END(self) -} - -static CPyVTableItem main___to_0x_hex_HexBytes_obj_vtable[2]; -static bool -CPyDef_main___to_0x_hex_HexBytes_obj_trait_vtable_setup(void) -{ - CPyVTableItem main___to_0x_hex_HexBytes_obj_vtable_scratch[] = { - (CPyVTableItem)CPyDef_main___to_0x_hex_HexBytes_obj_____call__, - (CPyVTableItem)CPyDef_main___to_0x_hex_HexBytes_obj_____get__, - }; - memcpy(main___to_0x_hex_HexBytes_obj_vtable, main___to_0x_hex_HexBytes_obj_vtable_scratch, sizeof(main___to_0x_hex_HexBytes_obj_vtable)); - return 1; -} - -static PyMethodDef main___to_0x_hex_HexBytes_obj_methods[] = { - {"__call__", - (PyCFunction)CPyPy_main___to_0x_hex_HexBytes_obj_____call__, - METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__call__($self)\n--\n\n")}, - {"__get__", - (PyCFunction)CPyPy_main___to_0x_hex_HexBytes_obj_____get__, - METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__get__($instance, owner)\n--\n\n")}, - {"__setstate__", (PyCFunction)CPyPickle_SetState, METH_O, NULL}, - {"__getstate__", (PyCFunction)CPyPickle_GetState, METH_NOARGS, NULL}, - {NULL} /* Sentinel */ -}; - -static PyTypeObject CPyType_main___to_0x_hex_HexBytes_obj_template_ = { - PyVarObject_HEAD_INIT(NULL, 0) - .tp_name = "to_0x_hex_HexBytes_obj", - .tp_new = main___to_0x_hex_HexBytes_obj_new, - .tp_dealloc = (destructor)main___to_0x_hex_HexBytes_obj_dealloc, - .tp_traverse = (traverseproc)main___to_0x_hex_HexBytes_obj_traverse, - .tp_clear = (inquiry)main___to_0x_hex_HexBytes_obj_clear, - .tp_methods = main___to_0x_hex_HexBytes_obj_methods, - .tp_call = PyVectorcall_Call, - .tp_descr_get = CPyDunder___get__main___to_0x_hex_HexBytes_obj, - .tp_basicsize = sizeof(faster_hexbytes___main___to_0x_hex_HexBytes_objObject), - .tp_vectorcall_offset = offsetof(faster_hexbytes___main___to_0x_hex_HexBytes_objObject, vectorcall), - .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | _Py_TPFLAGS_HAVE_VECTORCALL, - .tp_doc = PyDoc_STR("to_0x_hex_HexBytes_obj()\n--\n\n"), -}; -static PyTypeObject *CPyType_main___to_0x_hex_HexBytes_obj_template = &CPyType_main___to_0x_hex_HexBytes_obj_template_; - -PyObject *CPyDef_main_____mypyc__to_0x_hex_HexBytes_obj_setup(PyObject *cpy_r_type) -{ - PyTypeObject *type = (PyTypeObject*)cpy_r_type; - faster_hexbytes___main___to_0x_hex_HexBytes_objObject *self; - if (main___to_0x_hex_HexBytes_obj_free_instance != NULL) { - self = main___to_0x_hex_HexBytes_obj_free_instance; - main___to_0x_hex_HexBytes_obj_free_instance = NULL; - Py_SET_REFCNT(self, 1); - PyObject_GC_Track(self); - return (PyObject *)self; - } - self = (faster_hexbytes___main___to_0x_hex_HexBytes_objObject *)type->tp_alloc(type, 0); - if (self == NULL) - return NULL; - self->vtable = main___to_0x_hex_HexBytes_obj_vtable; - self->vectorcall = CPyPy_main___to_0x_hex_HexBytes_obj_____call__; - return (PyObject *)self; -} - -PyObject *CPyDef_main___to_0x_hex_HexBytes_obj(void) -{ - PyObject *self = CPyDef_main_____mypyc__to_0x_hex_HexBytes_obj_setup((PyObject *)CPyType_main___to_0x_hex_HexBytes_obj); - if (self == NULL) - return NULL; - return self; -} - - -static PyObject *CPyDunder___get__main_____reduce___3_HexBytes_obj(PyObject *self, PyObject *instance, PyObject *owner) { - instance = instance ? instance : Py_None; - return CPyDef_main_____reduce___3_HexBytes_obj_____get__(self, instance, owner); -} -PyObject *CPyDef_main_____mypyc___3__reduce___3_HexBytes_obj_setup(PyObject *cpy_r_type); -PyObject *CPyDef_main_____reduce___3_HexBytes_obj(void); - -static PyObject * -main_____reduce___3_HexBytes_obj_new(PyTypeObject *type, PyObject *args, PyObject *kwds) -{ - if (type != CPyType_main_____reduce___3_HexBytes_obj) { - PyErr_SetString(PyExc_TypeError, "interpreted classes cannot inherit from compiled"); - return NULL; - } - PyObject *self = CPyDef_main_____mypyc___3__reduce___3_HexBytes_obj_setup((PyObject*)type); - if (self == NULL) - return NULL; - return self; -} - -static int -main_____reduce___3_HexBytes_obj_traverse(faster_hexbytes___main_____reduce___3_HexBytes_objObject *self, visitproc visit, void *arg) -{ - return 0; -} - -static int -main_____reduce___3_HexBytes_obj_clear(faster_hexbytes___main_____reduce___3_HexBytes_objObject *self) -{ - return 0; -} - -static void -main_____reduce___3_HexBytes_obj_dealloc(faster_hexbytes___main_____reduce___3_HexBytes_objObject *self) -{ - PyObject_GC_UnTrack(self); - if (main_____reduce___3_HexBytes_obj_free_instance == NULL) { - main_____reduce___3_HexBytes_obj_free_instance = self; - return; - } - CPy_TRASHCAN_BEGIN(self, main_____reduce___3_HexBytes_obj_dealloc) - main_____reduce___3_HexBytes_obj_clear(self); - Py_TYPE(self)->tp_free((PyObject *)self); - CPy_TRASHCAN_END(self) -} - -static CPyVTableItem main_____reduce___3_HexBytes_obj_vtable[2]; -static bool -CPyDef_main_____reduce___3_HexBytes_obj_trait_vtable_setup(void) -{ - CPyVTableItem main_____reduce___3_HexBytes_obj_vtable_scratch[] = { - (CPyVTableItem)CPyDef_main_____reduce___3_HexBytes_obj_____call__, - (CPyVTableItem)CPyDef_main_____reduce___3_HexBytes_obj_____get__, - }; - memcpy(main_____reduce___3_HexBytes_obj_vtable, main_____reduce___3_HexBytes_obj_vtable_scratch, sizeof(main_____reduce___3_HexBytes_obj_vtable)); - return 1; -} - -static PyMethodDef main_____reduce___3_HexBytes_obj_methods[] = { - {"__call__", - (PyCFunction)CPyPy_main_____reduce___3_HexBytes_obj_____call__, - METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__call__($self)\n--\n\n")}, - {"__get__", - (PyCFunction)CPyPy_main_____reduce___3_HexBytes_obj_____get__, - METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__get__($instance, owner)\n--\n\n")}, - {"__setstate__", (PyCFunction)CPyPickle_SetState, METH_O, NULL}, - {"__getstate__", (PyCFunction)CPyPickle_GetState, METH_NOARGS, NULL}, - {NULL} /* Sentinel */ -}; - -static PyTypeObject CPyType_main_____reduce___3_HexBytes_obj_template_ = { - PyVarObject_HEAD_INIT(NULL, 0) - .tp_name = "__reduce___HexBytes_obj", - .tp_new = main_____reduce___3_HexBytes_obj_new, - .tp_dealloc = (destructor)main_____reduce___3_HexBytes_obj_dealloc, - .tp_traverse = (traverseproc)main_____reduce___3_HexBytes_obj_traverse, - .tp_clear = (inquiry)main_____reduce___3_HexBytes_obj_clear, - .tp_methods = main_____reduce___3_HexBytes_obj_methods, - .tp_call = PyVectorcall_Call, - .tp_descr_get = CPyDunder___get__main_____reduce___3_HexBytes_obj, - .tp_basicsize = sizeof(faster_hexbytes___main_____reduce___3_HexBytes_objObject), - .tp_vectorcall_offset = offsetof(faster_hexbytes___main_____reduce___3_HexBytes_objObject, vectorcall), - .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | _Py_TPFLAGS_HAVE_VECTORCALL, - .tp_doc = PyDoc_STR("__reduce___HexBytes_obj()\n--\n\n"), -}; -static PyTypeObject *CPyType_main_____reduce___3_HexBytes_obj_template = &CPyType_main_____reduce___3_HexBytes_obj_template_; - -PyObject *CPyDef_main_____mypyc___3__reduce___3_HexBytes_obj_setup(PyObject *cpy_r_type) -{ - PyTypeObject *type = (PyTypeObject*)cpy_r_type; - faster_hexbytes___main_____reduce___3_HexBytes_objObject *self; - if (main_____reduce___3_HexBytes_obj_free_instance != NULL) { - self = main_____reduce___3_HexBytes_obj_free_instance; - main_____reduce___3_HexBytes_obj_free_instance = NULL; - Py_SET_REFCNT(self, 1); - PyObject_GC_Track(self); - return (PyObject *)self; - } - self = (faster_hexbytes___main_____reduce___3_HexBytes_objObject *)type->tp_alloc(type, 0); - if (self == NULL) - return NULL; - self->vtable = main_____reduce___3_HexBytes_obj_vtable; - self->vectorcall = CPyPy_main_____reduce___3_HexBytes_obj_____call__; - return (PyObject *)self; -} - -PyObject *CPyDef_main_____reduce___3_HexBytes_obj(void) -{ - PyObject *self = CPyDef_main_____mypyc___3__reduce___3_HexBytes_obj_setup((PyObject *)CPyType_main_____reduce___3_HexBytes_obj); - if (self == NULL) - return NULL; - return self; -} - -static PyMethodDef mainmodule_methods[] = { - {NULL, NULL, 0, NULL} -}; - -int CPyExec_faster_hexbytes___main(PyObject *module) -{ - PyObject* modname = NULL; - modname = PyObject_GetAttrString((PyObject *)CPyModule_faster_hexbytes___main__internal, "__name__"); - CPyStatic_main___globals = PyModule_GetDict(CPyModule_faster_hexbytes___main__internal); - if (unlikely(CPyStatic_main___globals == NULL)) - goto fail; - CPyType_main_____new___3_HexBytes_obj = (PyTypeObject *)CPyType_FromTemplate((PyObject *)CPyType_main_____new___3_HexBytes_obj_template, NULL, modname); - if (unlikely(!CPyType_main_____new___3_HexBytes_obj)) - goto fail; - CPyType_main_____getitem___3_HexBytes_obj = (PyTypeObject *)CPyType_FromTemplate((PyObject *)CPyType_main_____getitem___3_HexBytes_obj_template, NULL, modname); - if (unlikely(!CPyType_main_____getitem___3_HexBytes_obj)) - goto fail; - CPyType_main_____repr___3_HexBytes_obj = (PyTypeObject *)CPyType_FromTemplate((PyObject *)CPyType_main_____repr___3_HexBytes_obj_template, NULL, modname); - if (unlikely(!CPyType_main_____repr___3_HexBytes_obj)) - goto fail; - CPyType_main___to_0x_hex_HexBytes_obj = (PyTypeObject *)CPyType_FromTemplate((PyObject *)CPyType_main___to_0x_hex_HexBytes_obj_template, NULL, modname); - if (unlikely(!CPyType_main___to_0x_hex_HexBytes_obj)) - goto fail; - CPyType_main_____reduce___3_HexBytes_obj = (PyTypeObject *)CPyType_FromTemplate((PyObject *)CPyType_main_____reduce___3_HexBytes_obj_template, NULL, modname); - if (unlikely(!CPyType_main_____reduce___3_HexBytes_obj)) - goto fail; - if (CPyGlobalsInit() < 0) - goto fail; - char result = CPyDef_main_____top_level__(); - if (result == 2) - goto fail; - Py_DECREF(modname); - return 0; - fail: - Py_CLEAR(CPyModule_faster_hexbytes___main__internal); - Py_CLEAR(modname); - CPy_XDECREF(CPyStatic_main____bytes_new); - CPyStatic_main____bytes_new = NULL; - Py_CLEAR(CPyType_main___HexBytes); - Py_CLEAR(CPyType_main_____new___3_HexBytes_obj); - Py_CLEAR(CPyType_main_____getitem___3_HexBytes_obj); - Py_CLEAR(CPyType_main_____repr___3_HexBytes_obj); - Py_CLEAR(CPyType_main___to_0x_hex_HexBytes_obj); - Py_CLEAR(CPyType_main_____reduce___3_HexBytes_obj); - return -1; -} -static struct PyModuleDef mainmodule = { - PyModuleDef_HEAD_INIT, - "faster_hexbytes.main", - NULL, /* docstring */ - 0, /* size of per-interpreter state of the module */ - mainmodule_methods, - NULL, -}; - -PyObject *CPyInit_faster_hexbytes___main(void) -{ - if (CPyModule_faster_hexbytes___main__internal) { - Py_INCREF(CPyModule_faster_hexbytes___main__internal); - return CPyModule_faster_hexbytes___main__internal; - } - CPyModule_faster_hexbytes___main__internal = PyModule_Create(&mainmodule); - if (unlikely(CPyModule_faster_hexbytes___main__internal == NULL)) - goto fail; - if (CPyExec_faster_hexbytes___main(CPyModule_faster_hexbytes___main__internal) != 0) - goto fail; - return CPyModule_faster_hexbytes___main__internal; - fail: - return NULL; -} - -PyObject *CPyDef_main_____new___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner) { - PyObject *cpy_r_r0; - char cpy_r_r1; - PyObject *cpy_r_r2; - PyObject *cpy_r_r3; - cpy_r_r0 = (PyObject *)&_Py_NoneStruct; - cpy_r_r1 = cpy_r_instance == cpy_r_r0; - if (!cpy_r_r1) goto CPyL2; - CPy_INCREF(cpy_r___mypyc_self__); - return cpy_r___mypyc_self__; -CPyL2: ; - cpy_r_r2 = PyMethod_New(cpy_r___mypyc_self__, cpy_r_instance); - if (cpy_r_r2 == NULL) goto CPyL4; - return cpy_r_r2; -CPyL4: ; - cpy_r_r3 = NULL; - return cpy_r_r3; -} - -PyObject *CPyPy_main_____new___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { - PyObject *obj___mypyc_self__ = self; - static const char * const kwlist[] = {"instance", "owner", 0}; - static CPyArg_Parser parser = {"OO:__get__", kwlist, 0}; - PyObject *obj_instance; - PyObject *obj_owner; - if (!CPyArg_ParseStackAndKeywordsSimple(args, nargs, kwnames, &parser, &obj_instance, &obj_owner)) { - return NULL; - } - PyObject *arg___mypyc_self__ = obj___mypyc_self__; - PyObject *arg_instance = obj_instance; - PyObject *arg_owner = obj_owner; - PyObject *retval = CPyDef_main_____new___3_HexBytes_obj_____get__(arg___mypyc_self__, arg_instance, arg_owner); - return retval; -fail: ; - CPy_AddTraceback("faster_hexbytes/main.py", "__get__", -1, CPyStatic_main___globals); - return NULL; -} - -PyObject *CPyDef_main_____new___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_cls, PyObject *cpy_r_val) { - PyObject *cpy_r_r0; - PyObject *cpy_r_r1; - char cpy_r_r2; - PyObject **cpy_r_r4; - PyObject *cpy_r_r5; - PyObject *cpy_r_r6; - PyObject *cpy_r_r7; - cpy_r_r0 = CPyDef__utils___to_bytes(cpy_r_val); - if (unlikely(cpy_r_r0 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__new__", 49, CPyStatic_main___globals); - goto CPyL7; - } - cpy_r_r1 = CPyStatic_main____bytes_new; - if (unlikely(cpy_r_r1 == NULL)) { - goto CPyL8; - } else - goto CPyL4; -CPyL2: ; - PyErr_SetString(PyExc_NameError, "value for final name \"_bytes_new\" was not set"); - cpy_r_r2 = 0; - if (unlikely(!cpy_r_r2)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__new__", 50, CPyStatic_main___globals); - goto CPyL7; - } - CPy_Unreachable(); -CPyL4: ; - PyObject *cpy_r_r3[2] = {cpy_r_cls, cpy_r_r0}; - cpy_r_r4 = (PyObject **)&cpy_r_r3; - cpy_r_r5 = PyObject_Vectorcall(cpy_r_r1, cpy_r_r4, 2, 0); - if (unlikely(cpy_r_r5 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__new__", 50, CPyStatic_main___globals); - goto CPyL9; - } - CPy_DECREF(cpy_r_r0); - if (likely(Py_TYPE(cpy_r_r5) == CPyType_main___HexBytes)) - cpy_r_r6 = cpy_r_r5; - else { - CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__new__", 50, CPyStatic_main___globals, "faster_hexbytes.main.HexBytes", cpy_r_r5); - goto CPyL7; - } - return cpy_r_r6; -CPyL7: ; - cpy_r_r7 = NULL; - return cpy_r_r7; -CPyL8: ; - CPy_DecRef(cpy_r_r0); - goto CPyL2; -CPyL9: ; - CPy_DecRef(cpy_r_r0); - goto CPyL7; -} - -PyObject *CPyPy_main_____new___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { - PyObject *obj___mypyc_self__ = self; - static const char * const kwlist[] = {"cls", "val", 0}; - static CPyArg_Parser parser = {"OO:__call__", kwlist, 0}; - PyObject *obj_cls; - PyObject *obj_val; - if (!CPyArg_ParseStackAndKeywordsSimple(args, PyVectorcall_NARGS(nargs), kwnames, &parser, &obj_cls, &obj_val)) { - return NULL; - } - PyObject *arg___mypyc_self__ = obj___mypyc_self__; - PyObject *arg_cls = obj_cls; - PyObject *arg_val; - if (PyBytes_Check(obj_val) || PyByteArray_Check(obj_val)) - arg_val = obj_val; - else { - arg_val = NULL; - } - if (arg_val != NULL) goto __LL4; - if (PyUnicode_Check(obj_val)) - arg_val = obj_val; - else { - arg_val = NULL; - } - if (arg_val != NULL) goto __LL4; - if (PyBool_Check(obj_val)) - arg_val = obj_val; - else { - arg_val = NULL; - } - if (arg_val != NULL) goto __LL4; - arg_val = obj_val; - if (arg_val != NULL) goto __LL4; - if (PyLong_Check(obj_val)) - arg_val = obj_val; - else { - arg_val = NULL; - } - if (arg_val != NULL) goto __LL4; - CPy_TypeError("union[bytes, str, bool, object, int]", obj_val); - goto fail; -__LL4: ; - PyObject *retval = CPyDef_main_____new___3_HexBytes_obj_____call__(arg___mypyc_self__, arg_cls, arg_val); - return retval; -fail: ; - CPy_AddTraceback("faster_hexbytes/main.py", "__new__", 48, CPyStatic_main___globals); - return NULL; -} - -PyObject *CPyDef_main_____getitem___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner) { - PyObject *cpy_r_r0; - char cpy_r_r1; - PyObject *cpy_r_r2; - PyObject *cpy_r_r3; - cpy_r_r0 = (PyObject *)&_Py_NoneStruct; - cpy_r_r1 = cpy_r_instance == cpy_r_r0; - if (!cpy_r_r1) goto CPyL2; - CPy_INCREF(cpy_r___mypyc_self__); - return cpy_r___mypyc_self__; -CPyL2: ; - cpy_r_r2 = PyMethod_New(cpy_r___mypyc_self__, cpy_r_instance); - if (cpy_r_r2 == NULL) goto CPyL4; - return cpy_r_r2; -CPyL4: ; - cpy_r_r3 = NULL; - return cpy_r_r3; -} - -PyObject *CPyPy_main_____getitem___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { - PyObject *obj___mypyc_self__ = self; - static const char * const kwlist[] = {"instance", "owner", 0}; - static CPyArg_Parser parser = {"OO:__get__", kwlist, 0}; - PyObject *obj_instance; - PyObject *obj_owner; - if (!CPyArg_ParseStackAndKeywordsSimple(args, nargs, kwnames, &parser, &obj_instance, &obj_owner)) { - return NULL; - } - PyObject *arg___mypyc_self__ = obj___mypyc_self__; - PyObject *arg_instance = obj_instance; - PyObject *arg_owner = obj_owner; - PyObject *retval = CPyDef_main_____getitem___3_HexBytes_obj_____get__(arg___mypyc_self__, arg_instance, arg_owner); - return retval; -fail: ; - CPy_AddTraceback("faster_hexbytes/main.py", "__get__", -1, CPyStatic_main___globals); - return NULL; -} - -PyObject *CPyDef_main_____getitem___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self, PyObject *cpy_r_key) { - PyObject *cpy_r_r0; - PyObject *cpy_r_r1; - PyObject **cpy_r_r3; - PyObject *cpy_r_r4; - PyObject *cpy_r_r5; - char cpy_r_r6; - CPyTagged cpy_r_r7; - PyObject *cpy_r_r8; - PyObject *cpy_r_r9; - PyObject *cpy_r_r10; - char cpy_r_r11; - PyObject *cpy_r_r12; - PyObject *cpy_r_r13; - PyObject **cpy_r_r15; - PyObject *cpy_r_r16; - PyObject *cpy_r_r17; - PyObject *cpy_r_r18; - PyObject **cpy_r_r20; - PyObject *cpy_r_r21; - PyObject *cpy_r_r22; - PyObject *cpy_r_r23; - cpy_r_r0 = (PyObject *)&PyBytes_Type; - cpy_r_r1 = CPyStatics[37]; /* '__getitem__' */ - PyObject *cpy_r_r2[3] = {cpy_r_r0, cpy_r_self, cpy_r_key}; - cpy_r_r3 = (PyObject **)&cpy_r_r2; - cpy_r_r4 = PyObject_VectorcallMethod(cpy_r_r1, cpy_r_r3, 9223372036854775811ULL, 0); - if (unlikely(cpy_r_r4 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 63, CPyStatic_main___globals); - goto CPyL14; - } - if (PyLong_Check(cpy_r_r4)) - cpy_r_r5 = cpy_r_r4; - else { - cpy_r_r5 = NULL; - } - if (cpy_r_r5 != NULL) goto __LL5; - if (PyBytes_Check(cpy_r_r4) || PyByteArray_Check(cpy_r_r4)) - cpy_r_r5 = cpy_r_r4; - else { - cpy_r_r5 = NULL; - } - if (cpy_r_r5 != NULL) goto __LL5; - CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__getitem__", 63, CPyStatic_main___globals, "union[int, bytes]", cpy_r_r4); - goto CPyL14; -__LL5: ; - cpy_r_r6 = PyLong_Check(cpy_r_r5); - if (!cpy_r_r6) goto CPyL5; - if (likely(PyLong_Check(cpy_r_r5))) - cpy_r_r7 = CPyTagged_FromObject(cpy_r_r5); - else { - CPy_TypeError("int", cpy_r_r5); cpy_r_r7 = CPY_INT_TAG; - } - CPy_DECREF(cpy_r_r5); - if (unlikely(cpy_r_r7 == CPY_INT_TAG)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 65, CPyStatic_main___globals); - goto CPyL14; - } - cpy_r_r8 = CPyTagged_StealAsObject(cpy_r_r7); - return cpy_r_r8; -CPyL5: ; - cpy_r_r9 = CPy_TYPE(cpy_r_self); - cpy_r_r10 = (PyObject *)CPyType_main___HexBytes; - cpy_r_r11 = cpy_r_r9 == cpy_r_r10; - if (cpy_r_r11) { - goto CPyL15; - } else - goto CPyL10; -CPyL6: ; - if (likely(PyBytes_Check(cpy_r_r5) || PyByteArray_Check(cpy_r_r5))) - cpy_r_r12 = cpy_r_r5; - else { - CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__getitem__", 69, CPyStatic_main___globals, "bytes", cpy_r_r5); - goto CPyL14; - } - cpy_r_r13 = (PyObject *)CPyType_main___HexBytes; - PyObject *cpy_r_r14[1] = {cpy_r_r12}; - cpy_r_r15 = (PyObject **)&cpy_r_r14; - cpy_r_r16 = PyObject_Vectorcall(cpy_r_r13, cpy_r_r15, 1, 0); - if (unlikely(cpy_r_r16 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 69, CPyStatic_main___globals); - goto CPyL16; - } - CPy_DECREF(cpy_r_r12); - if (likely(Py_TYPE(cpy_r_r16) == CPyType_main___HexBytes)) - cpy_r_r17 = cpy_r_r16; - else { - CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__getitem__", 69, CPyStatic_main___globals, "faster_hexbytes.main.HexBytes", cpy_r_r16); - goto CPyL14; - } - return cpy_r_r17; -CPyL10: ; - if (likely(PyBytes_Check(cpy_r_r5) || PyByteArray_Check(cpy_r_r5))) - cpy_r_r18 = cpy_r_r5; - else { - CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__getitem__", 70, CPyStatic_main___globals, "bytes", cpy_r_r5); - goto CPyL17; - } - PyObject *cpy_r_r19[1] = {cpy_r_r18}; - cpy_r_r20 = (PyObject **)&cpy_r_r19; - cpy_r_r21 = PyObject_Vectorcall(cpy_r_r9, cpy_r_r20, 1, 0); - CPy_DECREF(cpy_r_r9); - if (unlikely(cpy_r_r21 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 70, CPyStatic_main___globals); - goto CPyL18; - } - CPy_DECREF(cpy_r_r18); - if (likely(Py_TYPE(cpy_r_r21) == CPyType_main___HexBytes)) - cpy_r_r22 = cpy_r_r21; - else { - CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__getitem__", 70, CPyStatic_main___globals, "faster_hexbytes.main.HexBytes", cpy_r_r21); - goto CPyL14; - } - return cpy_r_r22; -CPyL14: ; - cpy_r_r23 = NULL; - return cpy_r_r23; -CPyL15: ; - CPy_DECREF(cpy_r_r9); - goto CPyL6; -CPyL16: ; - CPy_DecRef(cpy_r_r12); - goto CPyL14; -CPyL17: ; - CPy_DecRef(cpy_r_r9); - goto CPyL14; -CPyL18: ; - CPy_DecRef(cpy_r_r18); - goto CPyL14; -} - -PyObject *CPyPy_main_____getitem___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { - PyObject *obj___mypyc_self__ = self; - static const char * const kwlist[] = {"self", "key", 0}; - static CPyArg_Parser parser = {"OO:__call__", kwlist, 0}; - PyObject *obj_self; - PyObject *obj_key; - if (!CPyArg_ParseStackAndKeywordsSimple(args, PyVectorcall_NARGS(nargs), kwnames, &parser, &obj_self, &obj_key)) { - return NULL; - } - PyObject *arg___mypyc_self__ = obj___mypyc_self__; - PyObject *arg_self; - if (likely(Py_TYPE(obj_self) == CPyType_main___HexBytes)) - arg_self = obj_self; - else { - CPy_TypeError("faster_hexbytes.main.HexBytes", obj_self); - goto fail; - } - PyObject *arg_key = obj_key; - PyObject *retval = CPyDef_main_____getitem___3_HexBytes_obj_____call__(arg___mypyc_self__, arg_self, arg_key); - return retval; -fail: ; - CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 60, CPyStatic_main___globals); - return NULL; -} - -PyObject *CPyDef_main_____repr___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner) { - PyObject *cpy_r_r0; - char cpy_r_r1; - PyObject *cpy_r_r2; - PyObject *cpy_r_r3; - cpy_r_r0 = (PyObject *)&_Py_NoneStruct; - cpy_r_r1 = cpy_r_instance == cpy_r_r0; - if (!cpy_r_r1) goto CPyL2; - CPy_INCREF(cpy_r___mypyc_self__); - return cpy_r___mypyc_self__; -CPyL2: ; - cpy_r_r2 = PyMethod_New(cpy_r___mypyc_self__, cpy_r_instance); - if (cpy_r_r2 == NULL) goto CPyL4; - return cpy_r_r2; -CPyL4: ; - cpy_r_r3 = NULL; - return cpy_r_r3; -} - -PyObject *CPyPy_main_____repr___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { - PyObject *obj___mypyc_self__ = self; - static const char * const kwlist[] = {"instance", "owner", 0}; - static CPyArg_Parser parser = {"OO:__get__", kwlist, 0}; - PyObject *obj_instance; - PyObject *obj_owner; - if (!CPyArg_ParseStackAndKeywordsSimple(args, nargs, kwnames, &parser, &obj_instance, &obj_owner)) { - return NULL; - } - PyObject *arg___mypyc_self__ = obj___mypyc_self__; - PyObject *arg_instance = obj_instance; - PyObject *arg_owner = obj_owner; - PyObject *retval = CPyDef_main_____repr___3_HexBytes_obj_____get__(arg___mypyc_self__, arg_instance, arg_owner); - return retval; -fail: ; - CPy_AddTraceback("faster_hexbytes/main.py", "__get__", -1, CPyStatic_main___globals); - return NULL; -} - -PyObject *CPyDef_main_____repr___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self) { - PyObject *cpy_r_r0; - PyObject *cpy_r_r1; - PyObject **cpy_r_r3; - PyObject *cpy_r_r4; - PyObject *cpy_r_r5; - PyObject *cpy_r_r6; - PyObject *cpy_r_r7; - PyObject *cpy_r_r8; - cpy_r_r0 = CPyStatics[38]; /* "HexBytes('0x" */ - cpy_r_r1 = CPyStatics[15]; /* 'hex' */ - PyObject *cpy_r_r2[1] = {cpy_r_self}; - cpy_r_r3 = (PyObject **)&cpy_r_r2; - cpy_r_r4 = PyObject_VectorcallMethod(cpy_r_r1, cpy_r_r3, 9223372036854775809ULL, 0); - if (unlikely(cpy_r_r4 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 73, CPyStatic_main___globals); - goto CPyL4; - } - if (likely(PyUnicode_Check(cpy_r_r4))) - cpy_r_r5 = cpy_r_r4; - else { - CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__repr__", 73, CPyStatic_main___globals, "str", cpy_r_r4); - goto CPyL4; - } - cpy_r_r6 = CPyStatics[39]; /* "')" */ - cpy_r_r7 = CPyStr_Build(3, cpy_r_r0, cpy_r_r5, cpy_r_r6); - CPy_DECREF(cpy_r_r5); - if (unlikely(cpy_r_r7 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 73, CPyStatic_main___globals); - goto CPyL4; - } - return cpy_r_r7; -CPyL4: ; - cpy_r_r8 = NULL; - return cpy_r_r8; -} - -PyObject *CPyPy_main_____repr___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { - PyObject *obj___mypyc_self__ = self; - static const char * const kwlist[] = {"self", 0}; - static CPyArg_Parser parser = {"O:__call__", kwlist, 0}; - PyObject *obj_self; - if (!CPyArg_ParseStackAndKeywordsOneArg(args, PyVectorcall_NARGS(nargs), kwnames, &parser, &obj_self)) { - return NULL; - } - PyObject *arg___mypyc_self__ = obj___mypyc_self__; - PyObject *arg_self; - if (likely(Py_TYPE(obj_self) == CPyType_main___HexBytes)) - arg_self = obj_self; - else { - CPy_TypeError("faster_hexbytes.main.HexBytes", obj_self); - goto fail; - } - PyObject *retval = CPyDef_main_____repr___3_HexBytes_obj_____call__(arg___mypyc_self__, arg_self); - return retval; -fail: ; - CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 72, CPyStatic_main___globals); - return NULL; -} - -PyObject *CPyDef_main___to_0x_hex_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner) { - PyObject *cpy_r_r0; - char cpy_r_r1; - PyObject *cpy_r_r2; - PyObject *cpy_r_r3; - cpy_r_r0 = (PyObject *)&_Py_NoneStruct; - cpy_r_r1 = cpy_r_instance == cpy_r_r0; - if (!cpy_r_r1) goto CPyL2; - CPy_INCREF(cpy_r___mypyc_self__); - return cpy_r___mypyc_self__; -CPyL2: ; - cpy_r_r2 = PyMethod_New(cpy_r___mypyc_self__, cpy_r_instance); - if (cpy_r_r2 == NULL) goto CPyL4; - return cpy_r_r2; -CPyL4: ; - cpy_r_r3 = NULL; - return cpy_r_r3; -} - -PyObject *CPyPy_main___to_0x_hex_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { - PyObject *obj___mypyc_self__ = self; - static const char * const kwlist[] = {"instance", "owner", 0}; - static CPyArg_Parser parser = {"OO:__get__", kwlist, 0}; - PyObject *obj_instance; - PyObject *obj_owner; - if (!CPyArg_ParseStackAndKeywordsSimple(args, nargs, kwnames, &parser, &obj_instance, &obj_owner)) { - return NULL; - } - PyObject *arg___mypyc_self__ = obj___mypyc_self__; - PyObject *arg_instance = obj_instance; - PyObject *arg_owner = obj_owner; - PyObject *retval = CPyDef_main___to_0x_hex_HexBytes_obj_____get__(arg___mypyc_self__, arg_instance, arg_owner); - return retval; -fail: ; - CPy_AddTraceback("faster_hexbytes/main.py", "__get__", -1, CPyStatic_main___globals); - return NULL; -} - -PyObject *CPyDef_main___to_0x_hex_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self) { - PyObject *cpy_r_r0; - PyObject *cpy_r_r1; - PyObject **cpy_r_r3; - PyObject *cpy_r_r4; - PyObject *cpy_r_r5; - PyObject *cpy_r_r6; - PyObject *cpy_r_r7; - cpy_r_r0 = CPyStatics[24]; /* '0x' */ - cpy_r_r1 = CPyStatics[15]; /* 'hex' */ - PyObject *cpy_r_r2[1] = {cpy_r_self}; - cpy_r_r3 = (PyObject **)&cpy_r_r2; - cpy_r_r4 = PyObject_VectorcallMethod(cpy_r_r1, cpy_r_r3, 9223372036854775809ULL, 0); - if (unlikely(cpy_r_r4 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "to_0x_hex", 79, CPyStatic_main___globals); - goto CPyL4; - } - if (likely(PyUnicode_Check(cpy_r_r4))) - cpy_r_r5 = cpy_r_r4; - else { - CPy_TypeErrorTraceback("faster_hexbytes/main.py", "to_0x_hex", 79, CPyStatic_main___globals, "str", cpy_r_r4); - goto CPyL4; - } - cpy_r_r6 = CPyStr_Build(2, cpy_r_r0, cpy_r_r5); - CPy_DECREF(cpy_r_r5); - if (unlikely(cpy_r_r6 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "to_0x_hex", 79, CPyStatic_main___globals); - goto CPyL4; - } - return cpy_r_r6; -CPyL4: ; - cpy_r_r7 = NULL; - return cpy_r_r7; -} - -PyObject *CPyPy_main___to_0x_hex_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { - PyObject *obj___mypyc_self__ = self; - static const char * const kwlist[] = {"self", 0}; - static CPyArg_Parser parser = {"O:__call__", kwlist, 0}; - PyObject *obj_self; - if (!CPyArg_ParseStackAndKeywordsOneArg(args, PyVectorcall_NARGS(nargs), kwnames, &parser, &obj_self)) { - return NULL; - } - PyObject *arg___mypyc_self__ = obj___mypyc_self__; - PyObject *arg_self; - if (likely(Py_TYPE(obj_self) == CPyType_main___HexBytes)) - arg_self = obj_self; - else { - CPy_TypeError("faster_hexbytes.main.HexBytes", obj_self); - goto fail; - } - PyObject *retval = CPyDef_main___to_0x_hex_HexBytes_obj_____call__(arg___mypyc_self__, arg_self); - return retval; -fail: ; - CPy_AddTraceback("faster_hexbytes/main.py", "to_0x_hex", 75, CPyStatic_main___globals); - return NULL; -} - -PyObject *CPyDef_main_____reduce___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner) { - PyObject *cpy_r_r0; - char cpy_r_r1; - PyObject *cpy_r_r2; - PyObject *cpy_r_r3; - cpy_r_r0 = (PyObject *)&_Py_NoneStruct; - cpy_r_r1 = cpy_r_instance == cpy_r_r0; - if (!cpy_r_r1) goto CPyL2; - CPy_INCREF(cpy_r___mypyc_self__); - return cpy_r___mypyc_self__; -CPyL2: ; - cpy_r_r2 = PyMethod_New(cpy_r___mypyc_self__, cpy_r_instance); - if (cpy_r_r2 == NULL) goto CPyL4; - return cpy_r_r2; -CPyL4: ; - cpy_r_r3 = NULL; - return cpy_r_r3; -} - -PyObject *CPyPy_main_____reduce___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { - PyObject *obj___mypyc_self__ = self; - static const char * const kwlist[] = {"instance", "owner", 0}; - static CPyArg_Parser parser = {"OO:__get__", kwlist, 0}; - PyObject *obj_instance; - PyObject *obj_owner; - if (!CPyArg_ParseStackAndKeywordsSimple(args, nargs, kwnames, &parser, &obj_instance, &obj_owner)) { - return NULL; - } - PyObject *arg___mypyc_self__ = obj___mypyc_self__; - PyObject *arg_instance = obj_instance; - PyObject *arg_owner = obj_owner; - PyObject *retval = CPyDef_main_____reduce___3_HexBytes_obj_____get__(arg___mypyc_self__, arg_instance, arg_owner); - return retval; -fail: ; - CPy_AddTraceback("faster_hexbytes/main.py", "__get__", -1, CPyStatic_main___globals); - return NULL; -} - -tuple_T2OT2OO CPyDef_main_____reduce___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self) { - PyObject *cpy_r_r0; - char cpy_r_r1; - PyObject *cpy_r_r2; - PyObject *cpy_r_r3; - PyObject **cpy_r_r5; - PyObject *cpy_r_r6; - PyObject *cpy_r_r7; - tuple_T2OO cpy_r_r8; - tuple_T2OT2OO cpy_r_r9; - tuple_T2OT2OO cpy_r_r10; - cpy_r_r0 = CPyStatic_main____bytes_new; - if (likely(cpy_r_r0 != NULL)) goto CPyL3; - PyErr_SetString(PyExc_NameError, "value for final name \"_bytes_new\" was not set"); - cpy_r_r1 = 0; - if (unlikely(!cpy_r_r1)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__reduce__", 89, CPyStatic_main___globals); - goto CPyL6; - } - CPy_Unreachable(); -CPyL3: ; - cpy_r_r2 = CPy_TYPE(cpy_r_self); - cpy_r_r3 = (PyObject *)&PyBytes_Type; - PyObject *cpy_r_r4[1] = {cpy_r_self}; - cpy_r_r5 = (PyObject **)&cpy_r_r4; - cpy_r_r6 = PyObject_Vectorcall(cpy_r_r3, cpy_r_r5, 1, 0); - if (unlikely(cpy_r_r6 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__reduce__", 89, CPyStatic_main___globals); - goto CPyL7; - } - if (likely(PyBytes_Check(cpy_r_r6) || PyByteArray_Check(cpy_r_r6))) - cpy_r_r7 = cpy_r_r6; - else { - CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__reduce__", 89, CPyStatic_main___globals, "bytes", cpy_r_r6); - goto CPyL7; - } - cpy_r_r8.f0 = cpy_r_r2; - cpy_r_r8.f1 = cpy_r_r7; - CPy_INCREF(cpy_r_r0); - cpy_r_r9.f0 = cpy_r_r0; - cpy_r_r9.f1 = cpy_r_r8; - return cpy_r_r9; -CPyL6: ; - tuple_T2OT2OO __tmp6 = { NULL, (tuple_T2OO) { NULL, NULL } }; - cpy_r_r10 = __tmp6; - return cpy_r_r10; -CPyL7: ; - CPy_DecRef(cpy_r_r2); - goto CPyL6; -} - -PyObject *CPyPy_main_____reduce___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { - PyObject *obj___mypyc_self__ = self; - static const char * const kwlist[] = {"self", 0}; - static CPyArg_Parser parser = {"O:__call__", kwlist, 0}; - PyObject *obj_self; - if (!CPyArg_ParseStackAndKeywordsOneArg(args, PyVectorcall_NARGS(nargs), kwnames, &parser, &obj_self)) { - return NULL; - } - PyObject *arg___mypyc_self__ = obj___mypyc_self__; - PyObject *arg_self; - if (likely(Py_TYPE(obj_self) == CPyType_main___HexBytes)) - arg_self = obj_self; - else { - CPy_TypeError("faster_hexbytes.main.HexBytes", obj_self); - goto fail; - } - tuple_T2OT2OO retval = CPyDef_main_____reduce___3_HexBytes_obj_____call__(arg___mypyc_self__, arg_self); - if (retval.f0 == NULL) { - return NULL; - } - PyObject *retbox = PyTuple_New(2); - if (unlikely(retbox == NULL)) - CPyError_OutOfMemory(); - PyObject *__tmp7 = retval.f0; - PyTuple_SET_ITEM(retbox, 0, __tmp7); - PyObject *__tmp8 = PyTuple_New(2); - if (unlikely(__tmp8 == NULL)) - CPyError_OutOfMemory(); - PyObject *__tmp9 = retval.f1.f0; - PyTuple_SET_ITEM(__tmp8, 0, __tmp9); - PyObject *__tmp10 = retval.f1.f1; - PyTuple_SET_ITEM(__tmp8, 1, __tmp10); - PyTuple_SET_ITEM(retbox, 1, __tmp8); - return retbox; -fail: ; - CPy_AddTraceback("faster_hexbytes/main.py", "__reduce__", 81, CPyStatic_main___globals); - return NULL; -} - -char CPyDef_main_____top_level__(void) { - PyObject *cpy_r_r0; - PyObject *cpy_r_r1; - char cpy_r_r2; - PyObject *cpy_r_r3; - PyObject *cpy_r_r4; - PyObject *cpy_r_r5; - PyObject *cpy_r_r6; - PyObject *cpy_r_r7; - PyObject *cpy_r_r8; - PyObject **cpy_r_r9; - void *cpy_r_r11; - void *cpy_r_r13; - PyObject *cpy_r_r14; - PyObject *cpy_r_r15; - PyObject *cpy_r_r16; - PyObject *cpy_r_r17; - char cpy_r_r18; - PyObject *cpy_r_r19; - PyObject *cpy_r_r20; - PyObject *cpy_r_r21; - PyObject *cpy_r_r22; - PyObject *cpy_r_r23; - PyObject *cpy_r_r24; - PyObject *cpy_r_r25; - PyObject *cpy_r_r26; - PyObject *cpy_r_r27; - PyObject *cpy_r_r28; - PyObject *cpy_r_r29; - PyObject *cpy_r_r30; - PyObject *cpy_r_r31; - PyObject *cpy_r_r32; - PyObject *cpy_r_r33; - PyObject *cpy_r_r34; - PyObject *cpy_r_r35; - PyObject *cpy_r_r36; - PyObject *cpy_r_r37; - PyObject *cpy_r_r38; - PyObject *cpy_r_r39; - PyObject *cpy_r_r40; - PyObject *cpy_r_r41; - PyObject *cpy_r_r42; - PyObject *cpy_r_r43; - tuple_T6OOOOOO cpy_r_r44; - PyObject *cpy_r_r45; - PyObject *cpy_r_r46; - PyObject *cpy_r_r47; - PyObject *cpy_r_r48; - int32_t cpy_r_r49; - char cpy_r_r50; - PyObject *cpy_r_r51; - PyObject *cpy_r_r52; - PyObject *cpy_r_r53; - PyObject *cpy_r_r54; - PyObject *cpy_r_r55; - int32_t cpy_r_r56; - char cpy_r_r57; - PyObject *cpy_r_r58; - PyObject *cpy_r_r59; - PyObject *cpy_r_r60; - PyObject *cpy_r_r61; - PyObject *cpy_r_r62; - PyObject *cpy_r_r63; - PyObject *cpy_r_r64; - char cpy_r_r65; - PyObject *cpy_r_r66; - PyObject *cpy_r_r67; - PyObject *cpy_r_r68; - PyObject **cpy_r_r70; - PyObject *cpy_r_r71; - PyObject *cpy_r_r72; - PyObject *cpy_r_r73; - PyObject *cpy_r_r74; - PyObject *cpy_r_r75; - PyObject *cpy_r_r76; - PyObject *cpy_r_r77; - PyObject *cpy_r_r78; - PyObject *cpy_r_r79; - PyObject **cpy_r_r81; - PyObject *cpy_r_r82; - PyObject *cpy_r_r83; - int32_t cpy_r_r84; - char cpy_r_r85; - PyObject *cpy_r_r86; - PyObject *cpy_r_r87; - int32_t cpy_r_r88; - char cpy_r_r89; - PyObject *cpy_r_r90; - PyObject *cpy_r_r91; - int32_t cpy_r_r92; - char cpy_r_r93; - PyObject *cpy_r_r94; - PyObject *cpy_r_r95; - int32_t cpy_r_r96; - char cpy_r_r97; - PyObject *cpy_r_r98; - PyObject *cpy_r_r99; - int32_t cpy_r_r100; - char cpy_r_r101; - PyObject *cpy_r_r102; - PyObject *cpy_r_r103; - int32_t cpy_r_r104; - char cpy_r_r105; - PyObject *cpy_r_r106; - PyObject *cpy_r_r107; - int32_t cpy_r_r108; - char cpy_r_r109; - PyObject *cpy_r_r110; - PyObject *cpy_r_r111; - int32_t cpy_r_r112; - char cpy_r_r113; - PyObject **cpy_r_r115; - PyObject *cpy_r_r116; - PyObject *cpy_r_r117; - PyObject *cpy_r_r118; - PyObject *cpy_r_r119; - PyObject *cpy_r_r120; - PyObject **cpy_r_r122; - PyObject *cpy_r_r123; - PyObject *cpy_r_r124; - PyObject **cpy_r_r126; - PyObject *cpy_r_r127; - PyObject *cpy_r_r128; - PyObject *cpy_r_r129; - int32_t cpy_r_r130; - char cpy_r_r131; - PyObject *cpy_r_r132; - char cpy_r_r133; - cpy_r_r0 = CPyModule_builtins; - cpy_r_r1 = (PyObject *)&_Py_NoneStruct; - cpy_r_r2 = cpy_r_r0 != cpy_r_r1; - if (cpy_r_r2) goto CPyL3; - cpy_r_r3 = CPyStatics[3]; /* 'builtins' */ - cpy_r_r4 = PyImport_Import(cpy_r_r3); - if (unlikely(cpy_r_r4 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", -1, CPyStatic_main___globals); - goto CPyL48; - } - CPyModule_builtins = cpy_r_r4; - CPy_INCREF(CPyModule_builtins); - CPy_DECREF(cpy_r_r4); -CPyL3: ; - cpy_r_r5 = CPyStatics[75]; /* ('TYPE_CHECKING', 'Callable', 'Final', 'Tuple', 'Type', - 'Union', 'overload') */ - cpy_r_r6 = CPyStatics[35]; /* 'typing' */ - cpy_r_r7 = CPyStatic_main___globals; - cpy_r_r8 = CPyImport_ImportFromMany(cpy_r_r6, cpy_r_r5, cpy_r_r5, cpy_r_r7); - if (unlikely(cpy_r_r8 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 1, CPyStatic_main___globals); - goto CPyL48; - } - CPyModule_typing = cpy_r_r8; - CPy_INCREF(CPyModule_typing); - CPy_DECREF(cpy_r_r8); - cpy_r_r9 = (PyObject **)&CPyModule_hexbytes___main; - PyObject **cpy_r_r10[1] = {cpy_r_r9}; - cpy_r_r11 = (void *)&cpy_r_r10; - int64_t cpy_r_r12[1] = {14}; - cpy_r_r13 = (void *)&cpy_r_r12; - cpy_r_r14 = CPyStatics[77]; /* (('hexbytes.main', 'hexbytes.main', 'hexbytes'),) */ - cpy_r_r15 = CPyStatic_main___globals; - cpy_r_r16 = CPyStatics[46]; /* 'faster_hexbytes/main.py' */ - cpy_r_r17 = CPyStatics[32]; /* '' */ - cpy_r_r18 = CPyImport_ImportMany(cpy_r_r14, cpy_r_r11, cpy_r_r15, cpy_r_r16, cpy_r_r17, cpy_r_r13); - if (!cpy_r_r18) goto CPyL48; - cpy_r_r19 = CPyStatics[78]; /* ('mypyc_attr',) */ - cpy_r_r20 = CPyStatics[48]; /* 'mypy_extensions' */ - cpy_r_r21 = CPyStatic_main___globals; - cpy_r_r22 = CPyImport_ImportFromMany(cpy_r_r20, cpy_r_r19, cpy_r_r19, cpy_r_r21); - if (unlikely(cpy_r_r22 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 15, CPyStatic_main___globals); - goto CPyL48; - } - CPyModule_mypy_extensions = cpy_r_r22; - CPy_INCREF(CPyModule_mypy_extensions); - CPy_DECREF(cpy_r_r22); - cpy_r_r23 = CPyStatics[79]; /* ('Self',) */ - cpy_r_r24 = CPyStatics[50]; /* 'typing_extensions' */ - cpy_r_r25 = CPyStatic_main___globals; - cpy_r_r26 = CPyImport_ImportFromMany(cpy_r_r24, cpy_r_r23, cpy_r_r23, cpy_r_r25); - if (unlikely(cpy_r_r26 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 18, CPyStatic_main___globals); - goto CPyL48; - } - CPyModule_typing_extensions = cpy_r_r26; - CPy_INCREF(CPyModule_typing_extensions); - CPy_DECREF(cpy_r_r26); - cpy_r_r27 = CPyStatics[80]; /* ('to_bytes',) */ - cpy_r_r28 = CPyStatics[52]; /* 'faster_hexbytes._utils' */ - cpy_r_r29 = CPyStatic_main___globals; - cpy_r_r30 = CPyImport_ImportFromMany(cpy_r_r28, cpy_r_r27, cpy_r_r27, cpy_r_r29); - if (unlikely(cpy_r_r30 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 22, CPyStatic_main___globals); - goto CPyL48; - } - CPyModule_faster_hexbytes____utils = cpy_r_r30; - CPy_INCREF(CPyModule_faster_hexbytes____utils); - CPy_DECREF(cpy_r_r30); - cpy_r_r31 = CPyStatic_main___globals; - cpy_r_r32 = CPyStatics[34]; /* 'Union' */ - cpy_r_r33 = CPyDict_GetItem(cpy_r_r31, cpy_r_r32); - if (unlikely(cpy_r_r33 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 31, CPyStatic_main___globals); - goto CPyL48; - } - cpy_r_r34 = (PyObject *)&PyBytes_Type; - cpy_r_r35 = (PyObject *)&PyUnicode_Type; - cpy_r_r36 = (PyObject *)&PyBool_Type; - cpy_r_r37 = CPyModule_builtins; - cpy_r_r38 = CPyStatics[53]; /* 'bytearray' */ - cpy_r_r39 = CPyObject_GetAttr(cpy_r_r37, cpy_r_r38); - if (unlikely(cpy_r_r39 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 31, CPyStatic_main___globals); - goto CPyL49; - } - cpy_r_r40 = (PyObject *)&PyLong_Type; - cpy_r_r41 = CPyModule_builtins; - cpy_r_r42 = CPyStatics[16]; /* 'memoryview' */ - cpy_r_r43 = CPyObject_GetAttr(cpy_r_r41, cpy_r_r42); - if (unlikely(cpy_r_r43 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 31, CPyStatic_main___globals); - goto CPyL50; - } - CPy_INCREF(cpy_r_r34); - CPy_INCREF(cpy_r_r35); - CPy_INCREF(cpy_r_r36); - CPy_INCREF(cpy_r_r40); - cpy_r_r44.f0 = cpy_r_r34; - cpy_r_r44.f1 = cpy_r_r35; - cpy_r_r44.f2 = cpy_r_r36; - cpy_r_r44.f3 = cpy_r_r39; - cpy_r_r44.f4 = cpy_r_r40; - cpy_r_r44.f5 = cpy_r_r43; - cpy_r_r45 = PyTuple_New(6); - if (unlikely(cpy_r_r45 == NULL)) - CPyError_OutOfMemory(); - PyObject *__tmp11 = cpy_r_r44.f0; - PyTuple_SET_ITEM(cpy_r_r45, 0, __tmp11); - PyObject *__tmp12 = cpy_r_r44.f1; - PyTuple_SET_ITEM(cpy_r_r45, 1, __tmp12); - PyObject *__tmp13 = cpy_r_r44.f2; - PyTuple_SET_ITEM(cpy_r_r45, 2, __tmp13); - PyObject *__tmp14 = cpy_r_r44.f3; - PyTuple_SET_ITEM(cpy_r_r45, 3, __tmp14); - PyObject *__tmp15 = cpy_r_r44.f4; - PyTuple_SET_ITEM(cpy_r_r45, 4, __tmp15); - PyObject *__tmp16 = cpy_r_r44.f5; - PyTuple_SET_ITEM(cpy_r_r45, 5, __tmp16); - cpy_r_r46 = PyObject_GetItem(cpy_r_r33, cpy_r_r45); - CPy_DECREF(cpy_r_r33); - CPy_DECREF(cpy_r_r45); - if (unlikely(cpy_r_r46 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 31, CPyStatic_main___globals); - goto CPyL48; - } - cpy_r_r47 = CPyStatic_main___globals; - cpy_r_r48 = CPyStatics[54]; /* 'BytesLike' */ - cpy_r_r49 = CPyDict_SetItem(cpy_r_r47, cpy_r_r48, cpy_r_r46); - CPy_DECREF(cpy_r_r46); - cpy_r_r50 = cpy_r_r49 >= 0; - if (unlikely(!cpy_r_r50)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 31, CPyStatic_main___globals); - goto CPyL48; - } - cpy_r_r51 = (PyObject *)&PyBytes_Type; - cpy_r_r52 = CPyStatics[55]; /* '__new__' */ - cpy_r_r53 = CPyObject_GetAttr(cpy_r_r51, cpy_r_r52); - if (unlikely(cpy_r_r53 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 33, CPyStatic_main___globals); - goto CPyL48; - } - CPyStatic_main____bytes_new = cpy_r_r53; - CPy_INCREF(CPyStatic_main____bytes_new); - cpy_r_r54 = CPyStatic_main___globals; - cpy_r_r55 = CPyStatics[56]; /* '_bytes_new' */ - cpy_r_r56 = CPyDict_SetItem(cpy_r_r54, cpy_r_r55, cpy_r_r53); - CPy_DECREF(cpy_r_r53); - cpy_r_r57 = cpy_r_r56 >= 0; - if (unlikely(!cpy_r_r57)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 33, CPyStatic_main___globals); - goto CPyL48; - } - cpy_r_r58 = CPyModule_hexbytes___main; - cpy_r_r59 = CPyStatics[7]; /* 'HexBytes' */ - cpy_r_r60 = CPyObject_GetAttr(cpy_r_r58, cpy_r_r59); - if (unlikely(cpy_r_r60 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals); - goto CPyL48; - } - cpy_r_r61 = PyTuple_Pack(1, cpy_r_r60); - CPy_DECREF(cpy_r_r60); - if (unlikely(cpy_r_r61 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals); - goto CPyL48; - } - cpy_r_r62 = (PyObject *)&PyType_Type; - cpy_r_r63 = CPy_CalculateMetaclass(cpy_r_r62, cpy_r_r61); - if (unlikely(cpy_r_r63 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals); - goto CPyL51; - } - cpy_r_r64 = CPyStatics[57]; /* '__prepare__' */ - cpy_r_r65 = PyObject_HasAttr(cpy_r_r63, cpy_r_r64); - if (!cpy_r_r65) goto CPyL24; - cpy_r_r66 = CPyStatics[7]; /* 'HexBytes' */ - cpy_r_r67 = CPyStatics[57]; /* '__prepare__' */ - cpy_r_r68 = CPyObject_GetAttr(cpy_r_r63, cpy_r_r67); - if (unlikely(cpy_r_r68 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals); - goto CPyL51; - } - PyObject *cpy_r_r69[2] = {cpy_r_r66, cpy_r_r61}; - cpy_r_r70 = (PyObject **)&cpy_r_r69; - cpy_r_r71 = PyObject_Vectorcall(cpy_r_r68, cpy_r_r70, 2, 0); - CPy_DECREF(cpy_r_r68); - if (unlikely(cpy_r_r71 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals); - goto CPyL51; - } - if (likely(PyDict_Check(cpy_r_r71))) - cpy_r_r72 = cpy_r_r71; - else { - CPy_TypeErrorTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals, "dict", cpy_r_r71); - goto CPyL51; - } - cpy_r_r73 = cpy_r_r72; - goto CPyL26; -CPyL24: ; - cpy_r_r74 = PyDict_New(); - if (unlikely(cpy_r_r74 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals); - goto CPyL51; - } - cpy_r_r73 = cpy_r_r74; -CPyL26: ; - cpy_r_r75 = PyDict_New(); - if (unlikely(cpy_r_r75 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals); - goto CPyL52; - } - cpy_r_r76 = CPyDef_main_____new___3_HexBytes_obj(); - if (unlikely(cpy_r_r76 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 48, CPyStatic_main___globals); - goto CPyL53; - } - cpy_r_r77 = CPyModule_builtins; - cpy_r_r78 = CPyStatics[58]; /* 'staticmethod' */ - cpy_r_r79 = CPyObject_GetAttr(cpy_r_r77, cpy_r_r78); - if (unlikely(cpy_r_r79 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 48, CPyStatic_main___globals); - goto CPyL54; - } - PyObject *cpy_r_r80[1] = {cpy_r_r76}; - cpy_r_r81 = (PyObject **)&cpy_r_r80; - cpy_r_r82 = PyObject_Vectorcall(cpy_r_r79, cpy_r_r81, 1, 0); - CPy_DECREF(cpy_r_r79); - if (unlikely(cpy_r_r82 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 48, CPyStatic_main___globals); - goto CPyL54; - } - CPy_DECREF_NO_IMM(cpy_r_r76); - cpy_r_r83 = CPyStatics[55]; /* '__new__' */ - cpy_r_r84 = CPyDict_SetItem(cpy_r_r73, cpy_r_r83, cpy_r_r82); - CPy_DECREF(cpy_r_r82); - cpy_r_r85 = cpy_r_r84 >= 0; - if (unlikely(!cpy_r_r85)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 48, CPyStatic_main___globals); - goto CPyL53; - } - cpy_r_r86 = CPyDef_main_____getitem___3_HexBytes_obj(); - if (unlikely(cpy_r_r86 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 60, CPyStatic_main___globals); - goto CPyL53; - } - cpy_r_r87 = CPyStatics[37]; /* '__getitem__' */ - cpy_r_r88 = CPyDict_SetItem(cpy_r_r73, cpy_r_r87, cpy_r_r86); - CPy_DECREF_NO_IMM(cpy_r_r86); - cpy_r_r89 = cpy_r_r88 >= 0; - if (unlikely(!cpy_r_r89)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 60, CPyStatic_main___globals); - goto CPyL53; - } - cpy_r_r90 = CPyDef_main_____repr___3_HexBytes_obj(); - if (unlikely(cpy_r_r90 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 72, CPyStatic_main___globals); - goto CPyL53; - } - cpy_r_r91 = CPyStatics[59]; /* '__repr__' */ - cpy_r_r92 = CPyDict_SetItem(cpy_r_r73, cpy_r_r91, cpy_r_r90); - CPy_DECREF_NO_IMM(cpy_r_r90); - cpy_r_r93 = cpy_r_r92 >= 0; - if (unlikely(!cpy_r_r93)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 72, CPyStatic_main___globals); - goto CPyL53; - } - cpy_r_r94 = CPyDef_main___to_0x_hex_HexBytes_obj(); - if (unlikely(cpy_r_r94 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 75, CPyStatic_main___globals); - goto CPyL53; - } - cpy_r_r95 = CPyStatics[60]; /* 'to_0x_hex' */ - cpy_r_r96 = CPyDict_SetItem(cpy_r_r73, cpy_r_r95, cpy_r_r94); - CPy_DECREF_NO_IMM(cpy_r_r94); - cpy_r_r97 = cpy_r_r96 >= 0; - if (unlikely(!cpy_r_r97)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 75, CPyStatic_main___globals); - goto CPyL53; - } - cpy_r_r98 = CPyDef_main_____reduce___3_HexBytes_obj(); - if (unlikely(cpy_r_r98 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 81, CPyStatic_main___globals); - goto CPyL53; - } - cpy_r_r99 = CPyStatics[61]; /* '__reduce__' */ - cpy_r_r100 = CPyDict_SetItem(cpy_r_r73, cpy_r_r99, cpy_r_r98); - CPy_DECREF_NO_IMM(cpy_r_r98); - cpy_r_r101 = cpy_r_r100 >= 0; - if (unlikely(!cpy_r_r101)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 81, CPyStatic_main___globals); - goto CPyL53; - } - cpy_r_r102 = CPyStatics[7]; /* 'HexBytes' */ - cpy_r_r103 = CPyStatics[62]; /* '__annotations__' */ - cpy_r_r104 = CPyDict_SetItem(cpy_r_r73, cpy_r_r103, cpy_r_r75); - CPy_DECREF(cpy_r_r75); - cpy_r_r105 = cpy_r_r104 >= 0; - if (unlikely(!cpy_r_r105)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals); - goto CPyL52; - } - cpy_r_r106 = CPyStatics[63]; /* 'mypyc filler docstring' */ - cpy_r_r107 = CPyStatics[64]; /* '__doc__' */ - cpy_r_r108 = CPyDict_SetItem(cpy_r_r73, cpy_r_r107, cpy_r_r106); - cpy_r_r109 = cpy_r_r108 >= 0; - if (unlikely(!cpy_r_r109)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals); - goto CPyL52; - } - cpy_r_r110 = CPyStatics[8]; /* 'faster_hexbytes.main' */ - cpy_r_r111 = CPyStatics[65]; /* '__module__' */ - cpy_r_r112 = CPyDict_SetItem(cpy_r_r73, cpy_r_r111, cpy_r_r110); - cpy_r_r113 = cpy_r_r112 >= 0; - if (unlikely(!cpy_r_r113)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals); - goto CPyL52; - } - PyObject *cpy_r_r114[3] = {cpy_r_r102, cpy_r_r61, cpy_r_r73}; - cpy_r_r115 = (PyObject **)&cpy_r_r114; - cpy_r_r116 = PyObject_Vectorcall(cpy_r_r63, cpy_r_r115, 3, 0); - if (unlikely(cpy_r_r116 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals); - goto CPyL52; - } - CPy_DECREF(cpy_r_r73); - CPy_DECREF(cpy_r_r61); - cpy_r_r117 = CPyStatic_main___globals; - cpy_r_r118 = CPyStatics[47]; /* 'mypyc_attr' */ - cpy_r_r119 = CPyDict_GetItem(cpy_r_r117, cpy_r_r118); - if (unlikely(cpy_r_r119 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 36, CPyStatic_main___globals); - goto CPyL55; - } - cpy_r_r120 = 0 ? Py_True : Py_False; - PyObject *cpy_r_r121[1] = {cpy_r_r120}; - cpy_r_r122 = (PyObject **)&cpy_r_r121; - cpy_r_r123 = CPyStatics[81]; /* ('native_class',) */ - cpy_r_r124 = PyObject_Vectorcall(cpy_r_r119, cpy_r_r122, 0, cpy_r_r123); - CPy_DECREF(cpy_r_r119); - if (unlikely(cpy_r_r124 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 36, CPyStatic_main___globals); - goto CPyL55; - } - PyObject *cpy_r_r125[1] = {cpy_r_r116}; - cpy_r_r126 = (PyObject **)&cpy_r_r125; - cpy_r_r127 = PyObject_Vectorcall(cpy_r_r124, cpy_r_r126, 1, 0); - CPy_DECREF(cpy_r_r124); - if (unlikely(cpy_r_r127 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals); - goto CPyL55; - } - CPy_DECREF(cpy_r_r116); - CPyType_main___HexBytes = (PyTypeObject *)cpy_r_r127; - CPy_INCREF(CPyType_main___HexBytes); - cpy_r_r128 = CPyStatic_main___globals; - cpy_r_r129 = CPyStatics[7]; /* 'HexBytes' */ - cpy_r_r130 = PyDict_SetItem(cpy_r_r128, cpy_r_r129, cpy_r_r127); - CPy_DECREF(cpy_r_r127); - cpy_r_r131 = cpy_r_r130 >= 0; - if (unlikely(!cpy_r_r131)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals); - goto CPyL48; - } - cpy_r_r132 = (PyObject *)CPyType_main___HexBytes; - return 1; -CPyL48: ; - cpy_r_r133 = 2; - return cpy_r_r133; -CPyL49: ; - CPy_DecRef(cpy_r_r33); - goto CPyL48; -CPyL50: ; - CPy_DecRef(cpy_r_r33); - CPy_DecRef(cpy_r_r39); - goto CPyL48; -CPyL51: ; - CPy_DecRef(cpy_r_r61); - goto CPyL48; -CPyL52: ; - CPy_DecRef(cpy_r_r61); - CPy_DecRef(cpy_r_r73); - goto CPyL48; -CPyL53: ; - CPy_DecRef(cpy_r_r61); - CPy_DecRef(cpy_r_r73); - CPy_DecRef(cpy_r_r75); - goto CPyL48; -CPyL54: ; - CPy_DecRef(cpy_r_r61); - CPy_DecRef(cpy_r_r73); - CPy_DecRef(cpy_r_r75); - CPy_DecRef(cpy_r_r76); - goto CPyL48; -CPyL55: ; - CPy_DecRef(cpy_r_r116); - goto CPyL48; -} - -int CPyGlobalsInit(void) -{ - static int is_initialized = 0; - if (is_initialized) return 0; - - CPy_Init(); - CPyModule_faster_hexbytes = Py_None; - CPyModule_builtins = Py_None; - CPyModule_importlib___metadata = Py_None; - CPyModule_faster_hexbytes___main = Py_None; - CPyModule_faster_hexbytes____utils = Py_None; - CPyModule_builtins = Py_None; - CPyModule_binascii = Py_None; - CPyModule_typing = Py_None; - CPyModule_faster_hexbytes___main = Py_None; - CPyModule_builtins = Py_None; - CPyModule_typing = Py_None; - CPyModule_hexbytes___main = Py_None; - CPyModule_mypy_extensions = Py_None; - CPyModule_typing_extensions = Py_None; - CPyModule_faster_hexbytes____utils = Py_None; - if (CPyStatics_Initialize(CPyStatics, CPyLit_Str, CPyLit_Bytes, CPyLit_Int, CPyLit_Float, CPyLit_Complex, CPyLit_Tuple, CPyLit_FrozenSet) < 0) { - return -1; - } - is_initialized = 1; - return 0; -} - -PyObject *CPyStatics[82]; -const char * const CPyLit_Str[] = { - "\005\bbuiltins\aversion\t__version\022importlib.metadata\bHexBytes", - "\004\024faster_hexbytes.main\a__all__\bhexbytes\v__version__", - "\006 Cannot convert negative integer \t to bytes\nValueError\003hex\nmemoryview\000", - "\t\017Cannot convert \a{!r:{}}\006format\t of type \005{:{}}\tTypeError\0020x\0020X\0010", - "\002\022UnicodeDecodeError\vhex string ", - "\002( may only contain [0-9a-fA-F] characters\bbinascii", - "\006\031faster_hexbytes/_utils.py\b\005Final\005Union\006typing\tunhexlify", - "\a\v__getitem__\fHexBytes(\'0x\002\')\rTYPE_CHECKING\bCallable\005Tuple\004Type", - "\004\boverload\rhexbytes.main\027faster_hexbytes/main.py\nmypyc_attr", - "\004\017mypy_extensions\004Self\021typing_extensions\bto_bytes", - "\005\026faster_hexbytes._utils\tbytearray\tBytesLike\a__new__\n_bytes_new", - "\005\v__prepare__\fstaticmethod\b__repr__\tto_0x_hex\n__reduce__", - "\004\017__annotations__\026mypyc filler docstring\a__doc__\n__module__", - "\001\fnative_class", - "", -}; -const char * const CPyLit_Bytes[] = { - "\002\001\001\001\000", - "", -}; -const char * const CPyLit_Int[] = { - "", -}; -const double CPyLit_Float[] = {0}; -const double CPyLit_Complex[] = {0}; -const int CPyLit_Tuple[] = { - 13, 1, 4, 1, 5, 1, 7, 3, 30, 30, 30, 1, 72, 2, 33, 34, 7, 40, 41, - 33, 42, 43, 34, 44, 3, 45, 45, 10, 1, 76, 1, 47, 1, 49, 1, 51, 1, 66 -}; -const int CPyLit_FrozenSet[] = {0}; -CPyModule *CPyModule_faster_hexbytes__internal = NULL; -CPyModule *CPyModule_faster_hexbytes; -PyObject *CPyStatic_faster_hexbytes___globals; -CPyModule *CPyModule_builtins; -CPyModule *CPyModule_importlib___metadata; -CPyModule *CPyModule_faster_hexbytes___main__internal = NULL; -CPyModule *CPyModule_faster_hexbytes___main; -CPyModule *CPyModule_faster_hexbytes____utils__internal = NULL; -CPyModule *CPyModule_faster_hexbytes____utils; -PyObject *CPyStatic__utils___globals; -CPyModule *CPyModule_binascii; -CPyModule *CPyModule_typing; -PyObject *CPyStatic_main___globals; -CPyModule *CPyModule_hexbytes___main; -CPyModule *CPyModule_mypy_extensions; -CPyModule *CPyModule_typing_extensions; -char CPyDef_faster_hexbytes_____top_level__(void); -PyObject *CPyStatic__utils___unhexlify = NULL; -PyObject *CPyDef__utils___to_bytes(PyObject *cpy_r_val); -PyObject *CPyPy__utils___to_bytes(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -PyObject *CPyDef__utils___hexstr_to_bytes(PyObject *cpy_r_hexstr); -PyObject *CPyPy__utils___hexstr_to_bytes(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -char CPyDef__utils_____top_level__(void); -PyObject *CPyStatic_main____bytes_new = NULL; -PyTypeObject *CPyType_main___HexBytes; -PyTypeObject *CPyType_main_____new___3_HexBytes_obj; -PyObject *CPyDef_main_____new___3_HexBytes_obj(void); -CPyThreadLocal faster_hexbytes___main_____new___3_HexBytes_objObject *main_____new___3_HexBytes_obj_free_instance; -PyTypeObject *CPyType_main_____getitem___3_HexBytes_obj; -PyObject *CPyDef_main_____getitem___3_HexBytes_obj(void); -CPyThreadLocal faster_hexbytes___main_____getitem___3_HexBytes_objObject *main_____getitem___3_HexBytes_obj_free_instance; -PyTypeObject *CPyType_main_____repr___3_HexBytes_obj; -PyObject *CPyDef_main_____repr___3_HexBytes_obj(void); -CPyThreadLocal faster_hexbytes___main_____repr___3_HexBytes_objObject *main_____repr___3_HexBytes_obj_free_instance; -PyTypeObject *CPyType_main___to_0x_hex_HexBytes_obj; -PyObject *CPyDef_main___to_0x_hex_HexBytes_obj(void); -CPyThreadLocal faster_hexbytes___main___to_0x_hex_HexBytes_objObject *main___to_0x_hex_HexBytes_obj_free_instance; -PyTypeObject *CPyType_main_____reduce___3_HexBytes_obj; -PyObject *CPyDef_main_____reduce___3_HexBytes_obj(void); -CPyThreadLocal faster_hexbytes___main_____reduce___3_HexBytes_objObject *main_____reduce___3_HexBytes_obj_free_instance; -PyObject *CPyDef_main_____new___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); -PyObject *CPyPy_main_____new___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -PyObject *CPyDef_main_____new___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_cls, PyObject *cpy_r_val); -PyObject *CPyPy_main_____new___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -PyObject *CPyDef_main_____getitem___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); -PyObject *CPyPy_main_____getitem___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -PyObject *CPyDef_main_____getitem___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self, PyObject *cpy_r_key); -PyObject *CPyPy_main_____getitem___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -PyObject *CPyDef_main_____repr___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); -PyObject *CPyPy_main_____repr___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -PyObject *CPyDef_main_____repr___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self); -PyObject *CPyPy_main_____repr___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -PyObject *CPyDef_main___to_0x_hex_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); -PyObject *CPyPy_main___to_0x_hex_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -PyObject *CPyDef_main___to_0x_hex_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self); -PyObject *CPyPy_main___to_0x_hex_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -PyObject *CPyDef_main_____reduce___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); -PyObject *CPyPy_main_____reduce___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -tuple_T2OT2OO CPyDef_main_____reduce___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self); -PyObject *CPyPy_main_____reduce___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); -char CPyDef_main_____top_level__(void); - -static int exec_6a32f4913d613d6a7ddf__mypyc(PyObject *module) -{ - int res; - PyObject *capsule; - PyObject *tmp; - - extern PyObject *CPyInit_faster_hexbytes(void); - capsule = PyCapsule_New((void *)CPyInit_faster_hexbytes, "6a32f4913d613d6a7ddf__mypyc.init_faster_hexbytes", NULL); - if (!capsule) { - goto fail; - } - res = PyObject_SetAttrString(module, "init_faster_hexbytes", capsule); - Py_DECREF(capsule); - if (res < 0) { - goto fail; - } - - extern PyObject *CPyInit_faster_hexbytes____utils(void); - capsule = PyCapsule_New((void *)CPyInit_faster_hexbytes____utils, "6a32f4913d613d6a7ddf__mypyc.init_faster_hexbytes____utils", NULL); - if (!capsule) { - goto fail; - } - res = PyObject_SetAttrString(module, "init_faster_hexbytes____utils", capsule); - Py_DECREF(capsule); - if (res < 0) { - goto fail; - } - - extern PyObject *CPyInit_faster_hexbytes___main(void); - capsule = PyCapsule_New((void *)CPyInit_faster_hexbytes___main, "6a32f4913d613d6a7ddf__mypyc.init_faster_hexbytes___main", NULL); - if (!capsule) { - goto fail; - } - res = PyObject_SetAttrString(module, "init_faster_hexbytes___main", capsule); - Py_DECREF(capsule); - if (res < 0) { - goto fail; - } - - return 0; - fail: - return -1; -} -static PyModuleDef module_def_6a32f4913d613d6a7ddf__mypyc = { - PyModuleDef_HEAD_INIT, - .m_name = "6a32f4913d613d6a7ddf__mypyc", - .m_doc = NULL, - .m_size = -1, - .m_methods = NULL, -}; -PyMODINIT_FUNC PyInit_6a32f4913d613d6a7ddf__mypyc(void) { - static PyObject *module = NULL; - if (module) { - Py_INCREF(module); - return module; - } - module = PyModule_Create(&module_def_6a32f4913d613d6a7ddf__mypyc); - if (!module) { - return NULL; - } - if (exec_6a32f4913d613d6a7ddf__mypyc(module) < 0) { - Py_DECREF(module); - return NULL; - } - return module; -} diff --git a/build/__native_internal_6a32f4913d613d6a7ddf.h b/build/__native_internal_6a32f4913d613d6a7ddf.h index 84b1a09..a093531 100644 --- a/build/__native_internal_6a32f4913d613d6a7ddf.h +++ b/build/__native_internal_6a32f4913d613d6a7ddf.h @@ -6,7 +6,7 @@ int CPyGlobalsInit(void); -extern PyObject *CPyStatics[82]; +extern PyObject *CPyStatics[87]; extern const char * const CPyLit_Str[]; extern const char * const CPyLit_Bytes[]; extern const char * const CPyLit_Int[]; @@ -39,6 +39,9 @@ extern PyObject *CPyPy__utils___hexstr_to_bytes(PyObject *self, PyObject *const extern char CPyDef__utils_____top_level__(void); extern PyObject *CPyStatic_main____bytes_new; extern PyTypeObject *CPyType_main___HexBytes; +extern PyTypeObject *CPyType_main____HexBytesSubclass1; +extern PyTypeObject *CPyType_main____HexBytesSubclass2; +extern PyTypeObject *CPyType_main____HexBytesSubclass3; extern PyTypeObject *CPyType_main_____new___3_HexBytes_obj; extern PyObject *CPyDef_main_____new___3_HexBytes_obj(void); extern CPyThreadLocal faster_hexbytes___main_____new___3_HexBytes_objObject *main_____new___3_HexBytes_obj_free_instance; diff --git a/build/ops.txt b/build/ops.txt index 390263a..00e1254 100644 --- a/build/ops.txt +++ b/build/ops.txt @@ -572,6 +572,1235 @@ L8: r26 = :: None return r26 +def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def __new___HexBytes_obj.__call__(__mypyc_self__, cls, val): + __mypyc_self__ :: faster_hexbytes.main.__new___HexBytes_obj + cls :: object + val :: union[bytes, str, bool, object, int] + r0 :: bytes + r1 :: object + r2 :: bool + r3 :: object[2] + r4 :: object_ptr + r5 :: object + r6, r7 :: faster_hexbytes.main.HexBytes +L0: + r0 = to_bytes(val) + if is_error(r0) goto L7 (error at __new__:50) else goto L1 +L1: + r1 = faster_hexbytes.main._bytes_new :: static + if is_error(r1) goto L8 else goto L4 +L2: + r2 = raise NameError('value for final name "_bytes_new" was not set') + if not r2 goto L7 (error at __new__:51) else goto L3 :: bool +L3: + unreachable +L4: + r3 = [cls, r0] + r4 = load_address r3 + r5 = PyObject_Vectorcall(r1, r4, 2, 0) + if is_error(r5) goto L9 (error at __new__:51) else goto L5 +L5: + dec_ref r0 + r6 = cast(faster_hexbytes.main.HexBytes, r5) + if is_error(r6) goto L7 (error at __new__:51) else goto L6 +L6: + return r6 +L7: + r7 = :: faster_hexbytes.main.HexBytes + return r7 +L8: + dec_ref r0 + goto L2 +L9: + dec_ref r0 + goto L7 + +def __getitem___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def __getitem___HexBytes_obj.__call__(__mypyc_self__, self, key): + __mypyc_self__ :: faster_hexbytes.main.__getitem___HexBytes_obj + self :: faster_hexbytes.main.HexBytes + key, r0 :: object + r1 :: str + r2 :: object[3] + r3 :: object_ptr + r4 :: object + r5 :: union[int, bytes] + r6 :: bit + r7 :: int + r8, r9, r10 :: object + r11 :: bit + r12 :: bytes + r13 :: object + r14 :: object[1] + r15 :: object_ptr + r16 :: object + r17 :: faster_hexbytes.main.HexBytes + r18 :: bytes + r19 :: object[1] + r20 :: object_ptr + r21 :: object + r22 :: faster_hexbytes.main.HexBytes + r23 :: union[int, faster_hexbytes.main.HexBytes] +L0: + r0 = load_address PyBytes_Type + r1 = '__getitem__' + r2 = [r0, self, key] + r3 = load_address r2 + r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775811, 0) + if is_error(r4) goto L14 (error at __getitem__:64) else goto L1 +L1: + r5 = cast(union[int, bytes], r4) + if is_error(r5) goto L14 (error at __getitem__:64) else goto L2 +L2: + r6 = PyLong_Check(r5) + if r6 goto L3 else goto L5 :: bool +L3: + r7 = unbox(int, r5) + dec_ref r5 + if is_error(r7) goto L14 (error at __getitem__:66) else goto L4 +L4: + r8 = box(int, r7) + return r8 +L5: + r9 = CPy_TYPE(self) + r10 = faster_hexbytes.main.HexBytes :: type + r11 = r9 == r10 + if r11 goto L15 else goto L10 :: bool +L6: + r12 = cast(bytes, r5) + if is_error(r12) goto L14 (error at __getitem__:70) else goto L7 +L7: + r13 = faster_hexbytes.main.HexBytes :: type + r14 = [r12] + r15 = load_address r14 + r16 = PyObject_Vectorcall(r13, r15, 1, 0) + if is_error(r16) goto L16 (error at __getitem__:70) else goto L8 +L8: + dec_ref r12 + r17 = cast(faster_hexbytes.main.HexBytes, r16) + if is_error(r17) goto L14 (error at __getitem__:70) else goto L9 +L9: + return r17 +L10: + r18 = cast(bytes, r5) + if is_error(r18) goto L17 (error at __getitem__:71) else goto L11 +L11: + r19 = [r18] + r20 = load_address r19 + r21 = PyObject_Vectorcall(r9, r20, 1, 0) + dec_ref r9 + if is_error(r21) goto L18 (error at __getitem__:71) else goto L12 +L12: + dec_ref r18 + r22 = cast(faster_hexbytes.main.HexBytes, r21) + if is_error(r22) goto L14 (error at __getitem__:71) else goto L13 +L13: + return r22 +L14: + r23 = :: union[int, faster_hexbytes.main.HexBytes] + return r23 +L15: + dec_ref r9 + goto L6 +L16: + dec_ref r12 + goto L14 +L17: + dec_ref r9 + goto L14 +L18: + dec_ref r18 + goto L14 + +def __repr___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def __repr___HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.__repr___HexBytes_obj + self :: faster_hexbytes.main.HexBytes + r0, r1, r2, r3, r4 :: str + r5 :: object[1] + r6 :: object_ptr + r7 :: object + r8, r9, r10, r11 :: str + r12 :: object[3] + r13 :: object_ptr + r14 :: object + r15, r16 :: str + r17 :: list + r18, r19, r20, r21 :: ptr + r22, r23 :: str +L0: + r0 = '' + r1 = 'HexBytes(' + r2 = '{!r:{}}' + r3 = '0x' + r4 = 'hex' + r5 = [self] + r6 = load_address r5 + r7 = PyObject_VectorcallMethod(r4, r6, 9223372036854775809, 0) + if is_error(r7) goto L8 (error at __repr__:74) else goto L1 +L1: + r8 = cast(str, r7) + if is_error(r8) goto L8 (error at __repr__:74) else goto L2 +L2: + r9 = PyUnicode_Concat(r3, r8) + dec_ref r8 + if is_error(r9) goto L8 (error at __repr__:74) else goto L3 +L3: + r10 = '' + r11 = 'format' + r12 = [r2, r9, r10] + r13 = load_address r12 + r14 = PyObject_VectorcallMethod(r11, r13, 9223372036854775811, 0) + if is_error(r14) goto L9 (error at __repr__:74) else goto L4 +L4: + dec_ref r9 + r15 = cast(str, r14) + if is_error(r15) goto L8 (error at __repr__:74) else goto L5 +L5: + r16 = ')' + r17 = PyList_New(3) + if is_error(r17) goto L10 (error at __repr__:74) else goto L6 +L6: + r18 = get_element_ptr r17 ob_item :: PyListObject + r19 = load_mem r18 :: ptr* + inc_ref r1 + set_mem r19, r1 :: builtins.object* + r20 = r19 + 8 + set_mem r20, r15 :: builtins.object* + inc_ref r16 + r21 = r19 + 16 + set_mem r21, r16 :: builtins.object* + r22 = PyUnicode_Join(r0, r17) + dec_ref r17 + if is_error(r22) goto L8 (error at __repr__:74) else goto L7 +L7: + return r22 +L8: + r23 = :: str + return r23 +L9: + dec_ref r9 + goto L8 +L10: + dec_ref r15 + goto L8 + +def to_0x_hex_HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def to_0x_hex_HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.to_0x_hex_HexBytes_obj + self :: faster_hexbytes.main.HexBytes + r0, r1 :: str + r2 :: object[1] + r3 :: object_ptr + r4 :: object + r5, r6, r7 :: str +L0: + r0 = '0x' + r1 = 'hex' + r2 = [self] + r3 = load_address r2 + r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775809, 0) + if is_error(r4) goto L4 (error at to_0x_hex:80) else goto L1 +L1: + r5 = cast(str, r4) + if is_error(r5) goto L4 (error at to_0x_hex:80) else goto L2 +L2: + r6 = CPyStr_Build(2, r0, r5) + dec_ref r5 + if is_error(r6) goto L4 (error at to_0x_hex:80) else goto L3 +L3: + return r6 +L4: + r7 = :: str + return r7 + +def __reduce___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def __reduce___HexBytes_obj.__call__(__mypyc_self__, self): + __mypyc_self__ :: faster_hexbytes.main.__reduce___HexBytes_obj + self :: faster_hexbytes.main.HexBytes + r0 :: object + r1 :: bool + r2, r3 :: object + r4 :: object[1] + r5 :: object_ptr + r6 :: object + r7 :: bytes + r8 :: tuple[object, bytes] + r9, r10 :: tuple[object, tuple[object, bytes]] +L0: + r0 = faster_hexbytes.main._bytes_new :: static + if is_error(r0) goto L1 else goto L3 +L1: + r1 = raise NameError('value for final name "_bytes_new" was not set') + if not r1 goto L6 (error at __reduce__:90) else goto L2 :: bool +L2: + unreachable +L3: + r2 = CPy_TYPE(self) + r3 = load_address PyBytes_Type + r4 = [self] + r5 = load_address r4 + r6 = PyObject_Vectorcall(r3, r5, 1, 0) + if is_error(r6) goto L7 (error at __reduce__:90) else goto L4 +L4: + r7 = cast(bytes, r6) + if is_error(r7) goto L7 (error at __reduce__:90) else goto L5 +L5: + r8 = (r2, r7) + inc_ref r0 + r9 = (r0, r8) + return r9 +L6: + r10 = :: tuple[object, tuple[object, bytes]] + return r10 +L7: + dec_ref r2 + goto L6 + +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4, r5 :: object + r6 :: str + r7 :: dict + r8 :: object + r9 :: object_ptr + r10 :: object_ptr[1] + r11 :: c_ptr + r12 :: native_int[1] + r13 :: c_ptr + r14 :: object + r15 :: dict + r16, r17 :: str + r18 :: bit + r19 :: object + r20 :: str + r21 :: dict + r22, r23 :: object + r24 :: str + r25 :: dict + r26, r27 :: object + r28 :: str + r29 :: dict + r30 :: object + r31 :: dict + r32 :: str + r33, r34, r35, r36, r37 :: object + r38 :: str + r39, r40, r41 :: object + r42 :: str + r43 :: object + r44 :: tuple[object, object, object, object, object, object] + r45, r46 :: object + r47 :: dict + r48 :: str + r49 :: i32 + r50 :: bit + r51 :: object + r52 :: str + r53 :: object + r54 :: dict + r55 :: str + r56 :: i32 + r57 :: bit + r58 :: object + r59 :: str + r60 :: object + r61 :: tuple + r62, r63 :: object + r64 :: str + r65 :: bool + r66, r67 :: str + r68 :: object + r69 :: object[2] + r70 :: object_ptr + r71 :: object + r72, r73, r74, r75 :: dict + r76 :: faster_hexbytes.main.__new___HexBytes_obj + r77 :: object + r78 :: str + r79 :: object + r80 :: object[1] + r81 :: object_ptr + r82 :: object + r83 :: str + r84 :: i32 + r85 :: bit + r86 :: faster_hexbytes.main.__getitem___HexBytes_obj + r87 :: str + r88 :: i32 + r89 :: bit + r90 :: faster_hexbytes.main.__repr___HexBytes_obj + r91 :: str + r92 :: i32 + r93 :: bit + r94 :: faster_hexbytes.main.to_0x_hex_HexBytes_obj + r95 :: str + r96 :: i32 + r97 :: bit + r98 :: faster_hexbytes.main.__reduce___HexBytes_obj + r99 :: str + r100 :: i32 + r101 :: bit + r102, r103 :: str + r104 :: i32 + r105 :: bit + r106, r107 :: str + r108 :: i32 + r109 :: bit + r110, r111 :: str + r112 :: i32 + r113 :: bit + r114 :: object[3] + r115 :: object_ptr + r116 :: object + r117 :: dict + r118 :: str + r119, r120, r121 :: object + r122 :: object[2] + r123 :: object_ptr + r124, r125 :: object + r126 :: object[1] + r127 :: object_ptr + r128 :: object + r129 :: dict + r130 :: str + r131 :: i32 + r132 :: bit + r133 :: object + r134 :: dict + r135 :: str + r136 :: object + r137 :: tuple + r138, r139 :: object + r140 :: str + r141 :: bool + r142, r143 :: str + r144 :: object + r145 :: object[2] + r146 :: object_ptr + r147 :: object + r148, r149, r150, r151 :: dict + r152, r153 :: str + r154 :: i32 + r155 :: bit + r156, r157 :: str + r158 :: i32 + r159 :: bit + r160, r161 :: str + r162 :: i32 + r163 :: bit + r164 :: object[3] + r165 :: object_ptr + r166 :: object + r167 :: dict + r168 :: str + r169, r170 :: object + r171 :: object[1] + r172 :: object_ptr + r173, r174 :: object + r175 :: object[1] + r176 :: object_ptr + r177 :: object + r178 :: dict + r179 :: str + r180 :: i32 + r181 :: bit + r182 :: object + r183 :: dict + r184 :: str + r185 :: object + r186 :: tuple + r187, r188 :: object + r189 :: str + r190 :: bool + r191, r192 :: str + r193 :: object + r194 :: object[2] + r195 :: object_ptr + r196 :: object + r197, r198, r199, r200 :: dict + r201, r202 :: str + r203 :: i32 + r204 :: bit + r205, r206 :: str + r207 :: i32 + r208 :: bit + r209, r210 :: str + r211 :: i32 + r212 :: bit + r213 :: object[3] + r214 :: object_ptr + r215 :: object + r216 :: dict + r217 :: str + r218, r219 :: object + r220 :: object[1] + r221 :: object_ptr + r222, r223 :: object + r224 :: object[1] + r225 :: object_ptr + r226 :: object + r227 :: dict + r228 :: str + r229 :: i32 + r230 :: bit + r231 :: object + r232 :: dict + r233 :: str + r234 :: object + r235 :: tuple + r236, r237 :: object + r238 :: str + r239 :: bool + r240, r241 :: str + r242 :: object + r243 :: object[2] + r244 :: object_ptr + r245 :: object + r246, r247, r248, r249 :: dict + r250, r251 :: str + r252 :: i32 + r253 :: bit + r254, r255 :: str + r256 :: i32 + r257 :: bit + r258, r259 :: str + r260 :: i32 + r261 :: bit + r262 :: object[3] + r263 :: object_ptr + r264 :: object + r265 :: dict + r266 :: str + r267, r268 :: object + r269 :: object[1] + r270 :: object_ptr + r271, r272 :: object + r273 :: object[1] + r274 :: object_ptr + r275 :: object + r276 :: dict + r277 :: str + r278 :: i32 + r279 :: bit + r280 :: object + r281 :: None +L0: + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool +L1: + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L105 (error at :-1) else goto L2 +L2: + builtins = r4 :: module + dec_ref r4 +L3: + r5 = ('TYPE_CHECKING', 'Callable', 'Final', 'Tuple', 'Type', 'Union', 'overload') + r6 = 'typing' + r7 = faster_hexbytes.main.globals :: static + r8 = CPyImport_ImportFromMany(r6, r5, r5, r7) + if is_error(r8) goto L105 (error at :1) else goto L4 +L4: + typing = r8 :: module + dec_ref r8 + r9 = load_address hexbytes.main :: module + r10 = [r9] + r11 = load_address r10 + r12 = [14] + r13 = load_address r12 + r14 = (('hexbytes.main', 'hexbytes.main', 'hexbytes'),) + r15 = faster_hexbytes.main.globals :: static + r16 = 'faster_hexbytes/main.py' + r17 = '' + r18 = CPyImport_ImportMany(r14, r11, r15, r16, r17, r13) + if not r18 goto L105 else goto L5 :: bool +L5: + r19 = ('mypyc_attr',) + r20 = 'mypy_extensions' + r21 = faster_hexbytes.main.globals :: static + r22 = CPyImport_ImportFromMany(r20, r19, r19, r21) + if is_error(r22) goto L105 (error at :15) else goto L6 +L6: + mypy_extensions = r22 :: module + dec_ref r22 + r23 = ('Self',) + r24 = 'typing_extensions' + r25 = faster_hexbytes.main.globals :: static + r26 = CPyImport_ImportFromMany(r24, r23, r23, r25) + if is_error(r26) goto L105 (error at :18) else goto L7 +L7: + typing_extensions = r26 :: module + dec_ref r26 + r27 = ('to_bytes',) + r28 = 'faster_hexbytes._utils' + r29 = faster_hexbytes.main.globals :: static + r30 = CPyImport_ImportFromMany(r28, r27, r27, r29) + if is_error(r30) goto L105 (error at :22) else goto L8 +L8: + faster_hexbytes._utils = r30 :: module + dec_ref r30 + if 0 goto L9 else goto L9 :: bool +L9: + r31 = faster_hexbytes.main.globals :: static + r32 = 'Union' + r33 = CPyDict_GetItem(r31, r32) + if is_error(r33) goto L105 (error at :32) else goto L10 +L10: + r34 = load_address PyBytes_Type + r35 = load_address PyUnicode_Type + r36 = load_address PyBool_Type + r37 = builtins :: module + r38 = 'bytearray' + r39 = CPyObject_GetAttr(r37, r38) + if is_error(r39) goto L106 (error at :32) else goto L11 +L11: + r40 = load_address PyLong_Type + r41 = builtins :: module + r42 = 'memoryview' + r43 = CPyObject_GetAttr(r41, r42) + if is_error(r43) goto L107 (error at :32) else goto L12 +L12: + inc_ref r34 + inc_ref r35 + inc_ref r36 + inc_ref r40 + r44 = (r34, r35, r36, r39, r40, r43) + r45 = box(tuple[object, object, object, object, object, object], r44) + r46 = PyObject_GetItem(r33, r45) + dec_ref r33 + dec_ref r45 + if is_error(r46) goto L105 (error at :32) else goto L13 +L13: + r47 = faster_hexbytes.main.globals :: static + r48 = 'BytesLike' + r49 = CPyDict_SetItem(r47, r48, r46) + dec_ref r46 + r50 = r49 >= 0 :: signed + if not r50 goto L105 (error at :32) else goto L14 :: bool +L14: + r51 = load_address PyBytes_Type + r52 = '__new__' + r53 = CPyObject_GetAttr(r51, r52) + if is_error(r53) goto L105 (error at :34) else goto L15 +L15: + faster_hexbytes.main._bytes_new = r53 :: static + r54 = faster_hexbytes.main.globals :: static + r55 = '_bytes_new' + r56 = CPyDict_SetItem(r54, r55, r53) + dec_ref r53 + r57 = r56 >= 0 :: signed + if not r57 goto L105 (error at :34) else goto L16 :: bool +L16: + r58 = hexbytes.main :: module + r59 = 'HexBytes' + r60 = CPyObject_GetAttr(r58, r59) + if is_error(r60) goto L105 (error at :38) else goto L17 +L17: + r61 = PyTuple_Pack(1, r60) + dec_ref r60 + if is_error(r61) goto L105 (error at :38) else goto L18 +L18: + r62 = load_address PyType_Type + r63 = CPy_CalculateMetaclass(r62, r61) + if is_error(r63) goto L108 (error at :38) else goto L19 +L19: + r64 = '__prepare__' + r65 = PyObject_HasAttr(r63, r64) + if r65 goto L20 else goto L24 :: bool +L20: + r66 = 'HexBytes' + r67 = '__prepare__' + r68 = CPyObject_GetAttr(r63, r67) + if is_error(r68) goto L108 (error at :38) else goto L21 +L21: + r69 = [r66, r61] + r70 = load_address r69 + r71 = PyObject_Vectorcall(r68, r70, 2, 0) + dec_ref r68 + if is_error(r71) goto L108 (error at :38) else goto L22 +L22: + r72 = cast(dict, r71) + if is_error(r72) goto L108 (error at :38) else goto L23 +L23: + r73 = r72 + goto L26 +L24: + r74 = PyDict_New() + if is_error(r74) goto L108 (error at :38) else goto L25 +L25: + r73 = r74 +L26: + r75 = PyDict_New() + if is_error(r75) goto L109 (error at :38) else goto L27 +L27: + r76 = __new___HexBytes_obj() + if is_error(r76) goto L110 (error at :49) else goto L28 +L28: + r77 = builtins :: module + r78 = 'staticmethod' + r79 = CPyObject_GetAttr(r77, r78) + if is_error(r79) goto L111 (error at :49) else goto L29 +L29: + r80 = [r76] + r81 = load_address r80 + r82 = PyObject_Vectorcall(r79, r81, 1, 0) + dec_ref r79 + if is_error(r82) goto L111 (error at :49) else goto L30 +L30: + dec_ref r76 + r83 = '__new__' + r84 = CPyDict_SetItem(r73, r83, r82) + dec_ref r82 + r85 = r84 >= 0 :: signed + if not r85 goto L110 (error at :49) else goto L31 :: bool +L31: + r86 = __getitem___HexBytes_obj() + if is_error(r86) goto L110 (error at :61) else goto L32 +L32: + r87 = '__getitem__' + r88 = CPyDict_SetItem(r73, r87, r86) + dec_ref r86 + r89 = r88 >= 0 :: signed + if not r89 goto L110 (error at :61) else goto L33 :: bool +L33: + r90 = __repr___HexBytes_obj() + if is_error(r90) goto L110 (error at :73) else goto L34 +L34: + r91 = '__repr__' + r92 = CPyDict_SetItem(r73, r91, r90) + dec_ref r90 + r93 = r92 >= 0 :: signed + if not r93 goto L110 (error at :73) else goto L35 :: bool +L35: + r94 = to_0x_hex_HexBytes_obj() + if is_error(r94) goto L110 (error at :76) else goto L36 +L36: + r95 = 'to_0x_hex' + r96 = CPyDict_SetItem(r73, r95, r94) + dec_ref r94 + r97 = r96 >= 0 :: signed + if not r97 goto L110 (error at :76) else goto L37 :: bool +L37: + r98 = __reduce___HexBytes_obj() + if is_error(r98) goto L110 (error at :82) else goto L38 +L38: + r99 = '__reduce__' + r100 = CPyDict_SetItem(r73, r99, r98) + dec_ref r98 + r101 = r100 >= 0 :: signed + if not r101 goto L110 (error at :82) else goto L39 :: bool +L39: + r102 = 'HexBytes' + r103 = '__annotations__' + r104 = CPyDict_SetItem(r73, r103, r75) + dec_ref r75 + r105 = r104 >= 0 :: signed + if not r105 goto L109 (error at :38) else goto L40 :: bool +L40: + r106 = 'mypyc filler docstring' + r107 = '__doc__' + r108 = CPyDict_SetItem(r73, r107, r106) + r109 = r108 >= 0 :: signed + if not r109 goto L109 (error at :38) else goto L41 :: bool +L41: + r110 = 'faster_hexbytes.main' + r111 = '__module__' + r112 = CPyDict_SetItem(r73, r111, r110) + r113 = r112 >= 0 :: signed + if not r113 goto L109 (error at :38) else goto L42 :: bool +L42: + r114 = [r102, r61, r73] + r115 = load_address r114 + r116 = PyObject_Vectorcall(r63, r115, 3, 0) + if is_error(r116) goto L109 (error at :38) else goto L43 +L43: + dec_ref r73 + dec_ref r61 + r117 = faster_hexbytes.main.globals :: static + r118 = 'mypyc_attr' + r119 = CPyDict_GetItem(r117, r118) + if is_error(r119) goto L112 (error at :37) else goto L44 +L44: + r120 = box(bool, 0) + r121 = box(bool, 1) + r122 = [r120, r121] + r123 = load_address r122 + r124 = ('native_class', 'allow_interpreted_subclasses') + r125 = PyObject_Vectorcall(r119, r123, 0, r124) + dec_ref r119 + if is_error(r125) goto L112 (error at :37) else goto L45 +L45: + r126 = [r116] + r127 = load_address r126 + r128 = PyObject_Vectorcall(r125, r127, 1, 0) + dec_ref r125 + if is_error(r128) goto L112 (error at :38) else goto L46 +L46: + dec_ref r116 + faster_hexbytes.main.HexBytes = r128 :: type + r129 = faster_hexbytes.main.globals :: static + r130 = 'HexBytes' + r131 = PyDict_SetItem(r129, r130, r128) + dec_ref r128 + r132 = r131 >= 0 :: signed + if not r132 goto L105 (error at :38) else goto L47 :: bool +L47: + r133 = faster_hexbytes.main.HexBytes :: type + r134 = faster_hexbytes.main.globals :: static + r135 = 'HexBytes' + r136 = CPyDict_GetItem(r134, r135) + if is_error(r136) goto L105 (error at :97) else goto L48 +L48: + r137 = PyTuple_Pack(1, r136) + dec_ref r136 + if is_error(r137) goto L105 (error at :97) else goto L49 +L49: + r138 = load_address PyType_Type + r139 = CPy_CalculateMetaclass(r138, r137) + if is_error(r139) goto L113 (error at :97) else goto L50 +L50: + r140 = '__prepare__' + r141 = PyObject_HasAttr(r139, r140) + if r141 goto L51 else goto L55 :: bool +L51: + r142 = '_HexBytesSubclass1' + r143 = '__prepare__' + r144 = CPyObject_GetAttr(r139, r143) + if is_error(r144) goto L113 (error at :97) else goto L52 +L52: + r145 = [r142, r137] + r146 = load_address r145 + r147 = PyObject_Vectorcall(r144, r146, 2, 0) + dec_ref r144 + if is_error(r147) goto L113 (error at :97) else goto L53 +L53: + r148 = cast(dict, r147) + if is_error(r148) goto L113 (error at :97) else goto L54 +L54: + r149 = r148 + goto L57 +L55: + r150 = PyDict_New() + if is_error(r150) goto L113 (error at :97) else goto L56 +L56: + r149 = r150 +L57: + r151 = PyDict_New() + if is_error(r151) goto L114 (error at :97) else goto L58 +L58: + r152 = '_HexBytesSubclass1' + r153 = '__annotations__' + r154 = CPyDict_SetItem(r149, r153, r151) + dec_ref r151 + r155 = r154 >= 0 :: signed + if not r155 goto L114 (error at :97) else goto L59 :: bool +L59: + r156 = 'mypyc filler docstring' + r157 = '__doc__' + r158 = CPyDict_SetItem(r149, r157, r156) + r159 = r158 >= 0 :: signed + if not r159 goto L114 (error at :97) else goto L60 :: bool +L60: + r160 = 'faster_hexbytes.main' + r161 = '__module__' + r162 = CPyDict_SetItem(r149, r161, r160) + r163 = r162 >= 0 :: signed + if not r163 goto L114 (error at :97) else goto L61 :: bool +L61: + r164 = [r152, r137, r149] + r165 = load_address r164 + r166 = PyObject_Vectorcall(r139, r165, 3, 0) + if is_error(r166) goto L114 (error at :97) else goto L62 +L62: + dec_ref r149 + dec_ref r137 + r167 = faster_hexbytes.main.globals :: static + r168 = 'mypyc_attr' + r169 = CPyDict_GetItem(r167, r168) + if is_error(r169) goto L115 (error at :96) else goto L63 +L63: + r170 = box(bool, 0) + r171 = [r170] + r172 = load_address r171 + r173 = ('native_class',) + r174 = PyObject_Vectorcall(r169, r172, 0, r173) + dec_ref r169 + if is_error(r174) goto L115 (error at :96) else goto L64 +L64: + r175 = [r166] + r176 = load_address r175 + r177 = PyObject_Vectorcall(r174, r176, 1, 0) + dec_ref r174 + if is_error(r177) goto L115 (error at :97) else goto L65 +L65: + dec_ref r166 + faster_hexbytes.main._HexBytesSubclass1 = r177 :: type + r178 = faster_hexbytes.main.globals :: static + r179 = '_HexBytesSubclass1' + r180 = PyDict_SetItem(r178, r179, r177) + dec_ref r177 + r181 = r180 >= 0 :: signed + if not r181 goto L105 (error at :97) else goto L66 :: bool +L66: + r182 = faster_hexbytes.main._HexBytesSubclass1 :: type + r183 = faster_hexbytes.main.globals :: static + r184 = 'HexBytes' + r185 = CPyDict_GetItem(r183, r184) + if is_error(r185) goto L105 (error at :99) else goto L67 +L67: + r186 = PyTuple_Pack(1, r185) + dec_ref r185 + if is_error(r186) goto L105 (error at :99) else goto L68 +L68: + r187 = load_address PyType_Type + r188 = CPy_CalculateMetaclass(r187, r186) + if is_error(r188) goto L116 (error at :99) else goto L69 +L69: + r189 = '__prepare__' + r190 = PyObject_HasAttr(r188, r189) + if r190 goto L70 else goto L74 :: bool +L70: + r191 = '_HexBytesSubclass2' + r192 = '__prepare__' + r193 = CPyObject_GetAttr(r188, r192) + if is_error(r193) goto L116 (error at :99) else goto L71 +L71: + r194 = [r191, r186] + r195 = load_address r194 + r196 = PyObject_Vectorcall(r193, r195, 2, 0) + dec_ref r193 + if is_error(r196) goto L116 (error at :99) else goto L72 +L72: + r197 = cast(dict, r196) + if is_error(r197) goto L116 (error at :99) else goto L73 +L73: + r198 = r197 + goto L76 +L74: + r199 = PyDict_New() + if is_error(r199) goto L116 (error at :99) else goto L75 +L75: + r198 = r199 +L76: + r200 = PyDict_New() + if is_error(r200) goto L117 (error at :99) else goto L77 +L77: + r201 = '_HexBytesSubclass2' + r202 = '__annotations__' + r203 = CPyDict_SetItem(r198, r202, r200) + dec_ref r200 + r204 = r203 >= 0 :: signed + if not r204 goto L117 (error at :99) else goto L78 :: bool +L78: + r205 = 'mypyc filler docstring' + r206 = '__doc__' + r207 = CPyDict_SetItem(r198, r206, r205) + r208 = r207 >= 0 :: signed + if not r208 goto L117 (error at :99) else goto L79 :: bool +L79: + r209 = 'faster_hexbytes.main' + r210 = '__module__' + r211 = CPyDict_SetItem(r198, r210, r209) + r212 = r211 >= 0 :: signed + if not r212 goto L117 (error at :99) else goto L80 :: bool +L80: + r213 = [r201, r186, r198] + r214 = load_address r213 + r215 = PyObject_Vectorcall(r188, r214, 3, 0) + if is_error(r215) goto L117 (error at :99) else goto L81 +L81: + dec_ref r198 + dec_ref r186 + r216 = faster_hexbytes.main.globals :: static + r217 = 'mypyc_attr' + r218 = CPyDict_GetItem(r216, r217) + if is_error(r218) goto L118 (error at :98) else goto L82 +L82: + r219 = box(bool, 0) + r220 = [r219] + r221 = load_address r220 + r222 = ('native_class',) + r223 = PyObject_Vectorcall(r218, r221, 0, r222) + dec_ref r218 + if is_error(r223) goto L118 (error at :98) else goto L83 +L83: + r224 = [r215] + r225 = load_address r224 + r226 = PyObject_Vectorcall(r223, r225, 1, 0) + dec_ref r223 + if is_error(r226) goto L118 (error at :99) else goto L84 +L84: + dec_ref r215 + faster_hexbytes.main._HexBytesSubclass2 = r226 :: type + r227 = faster_hexbytes.main.globals :: static + r228 = '_HexBytesSubclass2' + r229 = PyDict_SetItem(r227, r228, r226) + dec_ref r226 + r230 = r229 >= 0 :: signed + if not r230 goto L105 (error at :99) else goto L85 :: bool +L85: + r231 = faster_hexbytes.main._HexBytesSubclass2 :: type + r232 = faster_hexbytes.main.globals :: static + r233 = 'HexBytes' + r234 = CPyDict_GetItem(r232, r233) + if is_error(r234) goto L105 (error at :101) else goto L86 +L86: + r235 = PyTuple_Pack(1, r234) + dec_ref r234 + if is_error(r235) goto L105 (error at :101) else goto L87 +L87: + r236 = load_address PyType_Type + r237 = CPy_CalculateMetaclass(r236, r235) + if is_error(r237) goto L119 (error at :101) else goto L88 +L88: + r238 = '__prepare__' + r239 = PyObject_HasAttr(r237, r238) + if r239 goto L89 else goto L93 :: bool +L89: + r240 = '_HexBytesSubclass3' + r241 = '__prepare__' + r242 = CPyObject_GetAttr(r237, r241) + if is_error(r242) goto L119 (error at :101) else goto L90 +L90: + r243 = [r240, r235] + r244 = load_address r243 + r245 = PyObject_Vectorcall(r242, r244, 2, 0) + dec_ref r242 + if is_error(r245) goto L119 (error at :101) else goto L91 +L91: + r246 = cast(dict, r245) + if is_error(r246) goto L119 (error at :101) else goto L92 +L92: + r247 = r246 + goto L95 +L93: + r248 = PyDict_New() + if is_error(r248) goto L119 (error at :101) else goto L94 +L94: + r247 = r248 +L95: + r249 = PyDict_New() + if is_error(r249) goto L120 (error at :101) else goto L96 +L96: + r250 = '_HexBytesSubclass3' + r251 = '__annotations__' + r252 = CPyDict_SetItem(r247, r251, r249) + dec_ref r249 + r253 = r252 >= 0 :: signed + if not r253 goto L120 (error at :101) else goto L97 :: bool +L97: + r254 = 'mypyc filler docstring' + r255 = '__doc__' + r256 = CPyDict_SetItem(r247, r255, r254) + r257 = r256 >= 0 :: signed + if not r257 goto L120 (error at :101) else goto L98 :: bool +L98: + r258 = 'faster_hexbytes.main' + r259 = '__module__' + r260 = CPyDict_SetItem(r247, r259, r258) + r261 = r260 >= 0 :: signed + if not r261 goto L120 (error at :101) else goto L99 :: bool +L99: + r262 = [r250, r235, r247] + r263 = load_address r262 + r264 = PyObject_Vectorcall(r237, r263, 3, 0) + if is_error(r264) goto L120 (error at :101) else goto L100 +L100: + dec_ref r247 + dec_ref r235 + r265 = faster_hexbytes.main.globals :: static + r266 = 'mypyc_attr' + r267 = CPyDict_GetItem(r265, r266) + if is_error(r267) goto L121 (error at :100) else goto L101 +L101: + r268 = box(bool, 0) + r269 = [r268] + r270 = load_address r269 + r271 = ('native_class',) + r272 = PyObject_Vectorcall(r267, r270, 0, r271) + dec_ref r267 + if is_error(r272) goto L121 (error at :100) else goto L102 +L102: + r273 = [r264] + r274 = load_address r273 + r275 = PyObject_Vectorcall(r272, r274, 1, 0) + dec_ref r272 + if is_error(r275) goto L121 (error at :101) else goto L103 +L103: + dec_ref r264 + faster_hexbytes.main._HexBytesSubclass3 = r275 :: type + r276 = faster_hexbytes.main.globals :: static + r277 = '_HexBytesSubclass3' + r278 = PyDict_SetItem(r276, r277, r275) + dec_ref r275 + r279 = r278 >= 0 :: signed + if not r279 goto L105 (error at :101) else goto L104 :: bool +L104: + r280 = faster_hexbytes.main._HexBytesSubclass3 :: type + return 1 +L105: + r281 = :: None + return r281 +L106: + dec_ref r33 + goto L105 +L107: + dec_ref r33 + dec_ref r39 + goto L105 +L108: + dec_ref r61 + goto L105 +L109: + dec_ref r61 + dec_ref r73 + goto L105 +L110: + dec_ref r61 + dec_ref r73 + dec_ref r75 + goto L105 +L111: + dec_ref r61 + dec_ref r73 + dec_ref r75 + dec_ref r76 + goto L105 +L112: + dec_ref r116 + goto L105 +L113: + dec_ref r137 + goto L105 +L114: + dec_ref r137 + dec_ref r149 + goto L105 +L115: + dec_ref r166 + goto L105 +L116: + dec_ref r186 + goto L105 +L117: + dec_ref r186 + dec_ref r198 + goto L105 +L118: + dec_ref r215 + goto L105 +L119: + dec_ref r235 + goto L105 +L120: + dec_ref r235 + dec_ref r247 + goto L105 +L121: + dec_ref r264 + goto L105 + def __top_level__(): r0, r1 :: object r2 :: bit diff --git a/faster_hexbytes/main.py b/faster_hexbytes/main.py index 8cbc5c2..774cd23 100644 --- a/faster_hexbytes/main.py +++ b/faster_hexbytes/main.py @@ -28,12 +28,13 @@ SupportsIndex, ) + BytesLike = Union[bytes, str, bool, bytearray, int, memoryview] _bytes_new: Final = bytes.__new__ -@mypyc_attr(native_class=False) +@mypyc_attr(native_class=False, allow_interpreted_subclasses=True) class HexBytes(hexbytes.HexBytes): """ Thin wrapper around the python built-in :class:`bytes` class. @@ -87,3 +88,14 @@ def __reduce__( validated when created. """ return _bytes_new, (type(self), bytes(self)) + + +# these 3 helpers serve as a workaround for a mypyc bug until +# https://github.com/python/mypy/pull/19957 is merged and released + +@mypyc_attr(native_class=False) +class _HexBytesSubclass1(HexBytes): ... +@mypyc_attr(native_class=False) +class _HexBytesSubclass2(HexBytes): ... +@mypyc_attr(native_class=False) +class _HexBytesSubclass3(HexBytes): ... From 56ac7cb8d77bc7915b3f5474b0eabec4e49df562 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Tue, 30 Sep 2025 15:23:44 -0400 Subject: [PATCH 57/98] chore: bump version to 1.3.2 --- setup.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 9df5152..11dc299 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,8 @@ from mypyc.build import mypycify -version = "1.3.1" +version = "1.3.2" +hexbytes_version = "1.3.1" extras_require = { "dev": [ @@ -61,7 +62,7 @@ author_email="snakecharmers@ethereum.org", url="https://github.com/ethereum/hexbytes", include_package_data=True, - install_requires=[f"hexbytes=={version}", "mypy_extensions"], + install_requires=[f"hexbytes=={hexbytes_version}", "mypy_extensions"], python_requires=">=3.9, <4", extras_require=extras_require, py_modules=["faster_hexbytes"], From a68fc534bbbe26cdc9c38927b72263d0be92579d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 30 Sep 2025 19:30:54 +0000 Subject: [PATCH 58/98] chore: compile C files for source control --- build/__native_6a32f4913d613d6a7ddf.c | 3608 +++++++++++++++++++++++++ build/ops.txt | 2250 +++++---------- 2 files changed, 4338 insertions(+), 1520 deletions(-) diff --git a/build/__native_6a32f4913d613d6a7ddf.c b/build/__native_6a32f4913d613d6a7ddf.c index e69de29..5effd18 100644 --- a/build/__native_6a32f4913d613d6a7ddf.c +++ b/build/__native_6a32f4913d613d6a7ddf.c @@ -0,0 +1,3608 @@ +#include "init.c" +#include "getargs.c" +#include "getargsfast.c" +#include "int_ops.c" +#include "float_ops.c" +#include "str_ops.c" +#include "bytes_ops.c" +#include "list_ops.c" +#include "dict_ops.c" +#include "set_ops.c" +#include "tuple_ops.c" +#include "exc_ops.c" +#include "misc_ops.c" +#include "generic_ops.c" +#include "pythonsupport.c" +#include "__native_6a32f4913d613d6a7ddf.h" +#include "__native_internal_6a32f4913d613d6a7ddf.h" +static PyMethodDef faster_hexbytesmodule_methods[] = { + {NULL, NULL, 0, NULL} +}; + +int CPyExec_faster_hexbytes(PyObject *module) +{ + PyObject* modname = NULL; + modname = PyObject_GetAttrString((PyObject *)CPyModule_faster_hexbytes__internal, "__name__"); + CPyStatic_faster_hexbytes___globals = PyModule_GetDict(CPyModule_faster_hexbytes__internal); + if (unlikely(CPyStatic_faster_hexbytes___globals == NULL)) + goto fail; + if (CPyGlobalsInit() < 0) + goto fail; + char result = CPyDef_faster_hexbytes_____top_level__(); + if (result == 2) + goto fail; + Py_DECREF(modname); + return 0; + fail: + Py_CLEAR(CPyModule_faster_hexbytes__internal); + Py_CLEAR(modname); + return -1; +} +static struct PyModuleDef faster_hexbytesmodule = { + PyModuleDef_HEAD_INIT, + "faster_hexbytes", + NULL, /* docstring */ + 0, /* size of per-interpreter state of the module */ + faster_hexbytesmodule_methods, + NULL, +}; + +PyObject *CPyInit_faster_hexbytes(void) +{ + if (CPyModule_faster_hexbytes__internal) { + Py_INCREF(CPyModule_faster_hexbytes__internal); + return CPyModule_faster_hexbytes__internal; + } + CPyModule_faster_hexbytes__internal = PyModule_Create(&faster_hexbytesmodule); + if (unlikely(CPyModule_faster_hexbytes__internal == NULL)) + goto fail; + if (CPyExec_faster_hexbytes(CPyModule_faster_hexbytes__internal) != 0) + goto fail; + return CPyModule_faster_hexbytes__internal; + fail: + return NULL; +} + +char CPyDef_faster_hexbytes_____top_level__(void) { + PyObject *cpy_r_r0; + PyObject *cpy_r_r1; + char cpy_r_r2; + PyObject *cpy_r_r3; + PyObject *cpy_r_r4; + PyObject *cpy_r_r5; + PyObject *cpy_r_r6; + PyObject *cpy_r_r7; + PyObject *cpy_r_r8; + PyObject *cpy_r_r9; + PyObject *cpy_r_r10; + PyObject *cpy_r_r11; + PyObject *cpy_r_r12; + PyObject *cpy_r_r13; + PyObject *cpy_r_r14; + PyObject *cpy_r_r15; + CPyPtr cpy_r_r16; + CPyPtr cpy_r_r17; + PyObject *cpy_r_r18; + PyObject *cpy_r_r19; + int32_t cpy_r_r20; + char cpy_r_r21; + PyObject *cpy_r_r22; + PyObject *cpy_r_r23; + PyObject *cpy_r_r24; + PyObject *cpy_r_r25; + PyObject **cpy_r_r27; + PyObject *cpy_r_r28; + PyObject *cpy_r_r29; + PyObject *cpy_r_r30; + PyObject *cpy_r_r31; + int32_t cpy_r_r32; + char cpy_r_r33; + char cpy_r_r34; + cpy_r_r0 = CPyModule_builtins; + cpy_r_r1 = (PyObject *)&_Py_NoneStruct; + cpy_r_r2 = cpy_r_r0 != cpy_r_r1; + if (cpy_r_r2) goto CPyL3; + cpy_r_r3 = CPyStatics[3]; /* 'builtins' */ + cpy_r_r4 = PyImport_Import(cpy_r_r3); + if (unlikely(cpy_r_r4 == NULL)) { + CPy_AddTraceback("faster_hexbytes/__init__.py", "", -1, CPyStatic_faster_hexbytes___globals); + goto CPyL12; + } + CPyModule_builtins = cpy_r_r4; + CPy_INCREF(CPyModule_builtins); + CPy_DECREF(cpy_r_r4); +CPyL3: ; + cpy_r_r5 = CPyStatics[73]; /* ('version',) */ + cpy_r_r6 = CPyStatics[74]; /* ('__version',) */ + cpy_r_r7 = CPyStatics[6]; /* 'importlib.metadata' */ + cpy_r_r8 = CPyStatic_faster_hexbytes___globals; + cpy_r_r9 = CPyImport_ImportFromMany(cpy_r_r7, cpy_r_r5, cpy_r_r6, cpy_r_r8); + if (unlikely(cpy_r_r9 == NULL)) { + CPy_AddTraceback("faster_hexbytes/__init__.py", "", 1, CPyStatic_faster_hexbytes___globals); + goto CPyL12; + } + CPyModule_importlib___metadata = cpy_r_r9; + CPy_INCREF(CPyModule_importlib___metadata); + CPy_DECREF(cpy_r_r9); + cpy_r_r10 = CPyStatics[75]; /* ('HexBytes',) */ + cpy_r_r11 = CPyStatics[8]; /* 'faster_hexbytes.main' */ + cpy_r_r12 = CPyStatic_faster_hexbytes___globals; + cpy_r_r13 = CPyImport_ImportFromMany(cpy_r_r11, cpy_r_r10, cpy_r_r10, cpy_r_r12); + if (unlikely(cpy_r_r13 == NULL)) { + CPy_AddTraceback("faster_hexbytes/__init__.py", "", 5, CPyStatic_faster_hexbytes___globals); + goto CPyL12; + } + CPyModule_faster_hexbytes___main = cpy_r_r13; + CPy_INCREF(CPyModule_faster_hexbytes___main); + CPy_DECREF(cpy_r_r13); + cpy_r_r14 = CPyStatics[7]; /* 'HexBytes' */ + cpy_r_r15 = PyList_New(1); + if (unlikely(cpy_r_r15 == NULL)) { + CPy_AddTraceback("faster_hexbytes/__init__.py", "", 9, CPyStatic_faster_hexbytes___globals); + goto CPyL12; + } + cpy_r_r16 = (CPyPtr)&((PyListObject *)cpy_r_r15)->ob_item; + cpy_r_r17 = *(CPyPtr *)cpy_r_r16; + CPy_INCREF(cpy_r_r14); + *(PyObject * *)cpy_r_r17 = cpy_r_r14; + cpy_r_r18 = CPyStatic_faster_hexbytes___globals; + cpy_r_r19 = CPyStatics[9]; /* '__all__' */ + cpy_r_r20 = CPyDict_SetItem(cpy_r_r18, cpy_r_r19, cpy_r_r15); + CPy_DECREF_NO_IMM(cpy_r_r15); + cpy_r_r21 = cpy_r_r20 >= 0; + if (unlikely(!cpy_r_r21)) { + CPy_AddTraceback("faster_hexbytes/__init__.py", "", 9, CPyStatic_faster_hexbytes___globals); + goto CPyL12; + } + cpy_r_r22 = CPyStatics[10]; /* 'hexbytes' */ + cpy_r_r23 = CPyStatic_faster_hexbytes___globals; + cpy_r_r24 = CPyStatics[5]; /* '__version' */ + cpy_r_r25 = CPyDict_GetItem(cpy_r_r23, cpy_r_r24); + if (unlikely(cpy_r_r25 == NULL)) { + CPy_AddTraceback("faster_hexbytes/__init__.py", "", 11, CPyStatic_faster_hexbytes___globals); + goto CPyL12; + } + PyObject *cpy_r_r26[1] = {cpy_r_r22}; + cpy_r_r27 = (PyObject **)&cpy_r_r26; + cpy_r_r28 = PyObject_Vectorcall(cpy_r_r25, cpy_r_r27, 1, 0); + CPy_DECREF(cpy_r_r25); + if (unlikely(cpy_r_r28 == NULL)) { + CPy_AddTraceback("faster_hexbytes/__init__.py", "", 11, CPyStatic_faster_hexbytes___globals); + goto CPyL12; + } + if (likely(PyUnicode_Check(cpy_r_r28))) + cpy_r_r29 = cpy_r_r28; + else { + CPy_TypeErrorTraceback("faster_hexbytes/__init__.py", "", 11, CPyStatic_faster_hexbytes___globals, "str", cpy_r_r28); + goto CPyL12; + } + cpy_r_r30 = CPyStatic_faster_hexbytes___globals; + cpy_r_r31 = CPyStatics[11]; /* '__version__' */ + cpy_r_r32 = CPyDict_SetItem(cpy_r_r30, cpy_r_r31, cpy_r_r29); + CPy_DECREF(cpy_r_r29); + cpy_r_r33 = cpy_r_r32 >= 0; + if (unlikely(!cpy_r_r33)) { + CPy_AddTraceback("faster_hexbytes/__init__.py", "", 11, CPyStatic_faster_hexbytes___globals); + goto CPyL12; + } + return 1; +CPyL12: ; + cpy_r_r34 = 2; + return cpy_r_r34; +} +static PyMethodDef _utilsmodule_methods[] = { + {"to_bytes", (PyCFunction)CPyPy__utils___to_bytes, METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("to_bytes(val)\n--\n\n") /* docstring */}, + {"hexstr_to_bytes", (PyCFunction)CPyPy__utils___hexstr_to_bytes, METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("hexstr_to_bytes(hexstr)\n--\n\n") /* docstring */}, + {NULL, NULL, 0, NULL} +}; + +int CPyExec_faster_hexbytes____utils(PyObject *module) +{ + PyObject* modname = NULL; + modname = PyObject_GetAttrString((PyObject *)CPyModule_faster_hexbytes____utils__internal, "__name__"); + CPyStatic__utils___globals = PyModule_GetDict(CPyModule_faster_hexbytes____utils__internal); + if (unlikely(CPyStatic__utils___globals == NULL)) + goto fail; + if (CPyGlobalsInit() < 0) + goto fail; + char result = CPyDef__utils_____top_level__(); + if (result == 2) + goto fail; + Py_DECREF(modname); + return 0; + fail: + Py_CLEAR(CPyModule_faster_hexbytes____utils__internal); + Py_CLEAR(modname); + CPy_XDECREF(CPyStatic__utils___unhexlify); + CPyStatic__utils___unhexlify = NULL; + return -1; +} +static struct PyModuleDef _utilsmodule = { + PyModuleDef_HEAD_INIT, + "faster_hexbytes._utils", + NULL, /* docstring */ + 0, /* size of per-interpreter state of the module */ + _utilsmodule_methods, + NULL, +}; + +PyObject *CPyInit_faster_hexbytes____utils(void) +{ + if (CPyModule_faster_hexbytes____utils__internal) { + Py_INCREF(CPyModule_faster_hexbytes____utils__internal); + return CPyModule_faster_hexbytes____utils__internal; + } + CPyModule_faster_hexbytes____utils__internal = PyModule_Create(&_utilsmodule); + if (unlikely(CPyModule_faster_hexbytes____utils__internal == NULL)) + goto fail; + if (CPyExec_faster_hexbytes____utils(CPyModule_faster_hexbytes____utils__internal) != 0) + goto fail; + return CPyModule_faster_hexbytes____utils__internal; + fail: + return NULL; +} + +PyObject *CPyDef__utils___to_bytes(PyObject *cpy_r_val) { + char cpy_r_r0; + PyObject *cpy_r_r1; + char cpy_r_r2; + PyObject *cpy_r_r3; + PyObject *cpy_r_r4; + char cpy_r_r5; + PyObject *cpy_r_r6; + PyObject **cpy_r_r8; + PyObject *cpy_r_r9; + PyObject *cpy_r_r10; + char cpy_r_r11; + char cpy_r_r12; + PyObject *cpy_r_r13; + PyObject *cpy_r_r14; + PyObject *cpy_r_r15; + char cpy_r_r16; + CPyTagged cpy_r_r17; + int64_t cpy_r_r18; + char cpy_r_r19; + int64_t cpy_r_r20; + char cpy_r_r21; + char cpy_r_r22; + char cpy_r_r23; + char cpy_r_r24; + PyObject *cpy_r_r25; + CPyTagged cpy_r_r26; + PyObject *cpy_r_r27; + PyObject *cpy_r_r28; + PyObject *cpy_r_r29; + PyObject *cpy_r_r30; + PyObject *cpy_r_r31; + PyObject *cpy_r_r32; + PyObject **cpy_r_r34; + PyObject *cpy_r_r35; + CPyTagged cpy_r_r36; + PyObject *cpy_r_r37; + PyObject *cpy_r_r38; + PyObject *cpy_r_r39; + PyObject *cpy_r_r40; + PyObject **cpy_r_r42; + PyObject *cpy_r_r43; + PyObject *cpy_r_r44; + PyObject *cpy_r_r45; + PyObject *cpy_r_r46; + PyObject *cpy_r_r47; + PyObject *cpy_r_r48; + int32_t cpy_r_r49; + char cpy_r_r50; + char cpy_r_r51; + PyObject *cpy_r_r52; + PyObject **cpy_r_r54; + PyObject *cpy_r_r55; + PyObject *cpy_r_r56; + PyObject *cpy_r_r57; + PyObject *cpy_r_r58; + PyObject *cpy_r_r59; + PyObject *cpy_r_r60; + PyObject *cpy_r_r61; + PyObject **cpy_r_r63; + PyObject *cpy_r_r64; + PyObject *cpy_r_r65; + PyObject *cpy_r_r66; + PyObject *cpy_r_r67; + PyObject *cpy_r_r68; + PyObject *cpy_r_r69; + PyObject **cpy_r_r71; + PyObject *cpy_r_r72; + PyObject *cpy_r_r73; + PyObject *cpy_r_r74; + CPyPtr cpy_r_r75; + CPyPtr cpy_r_r76; + CPyPtr cpy_r_r77; + CPyPtr cpy_r_r78; + CPyPtr cpy_r_r79; + CPyPtr cpy_r_r80; + PyObject *cpy_r_r81; + PyObject *cpy_r_r82; + PyObject *cpy_r_r83; + PyObject *cpy_r_r84; + PyObject **cpy_r_r86; + PyObject *cpy_r_r87; + PyObject *cpy_r_r88; + cpy_r_r0 = PyBytes_Check(cpy_r_val); + if (!cpy_r_r0) goto CPyL3; + CPy_INCREF(cpy_r_val); + if (likely(PyBytes_Check(cpy_r_val) || PyByteArray_Check(cpy_r_val))) + cpy_r_r1 = cpy_r_val; + else { + CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "to_bytes", 19, CPyStatic__utils___globals, "bytes", cpy_r_val); + goto CPyL51; + } + return cpy_r_r1; +CPyL3: ; + cpy_r_r2 = PyUnicode_Check(cpy_r_val); + if (!cpy_r_r2) goto CPyL7; + CPy_INCREF(cpy_r_val); + if (likely(PyUnicode_Check(cpy_r_val))) + cpy_r_r3 = cpy_r_val; + else { + CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "to_bytes", 21, CPyStatic__utils___globals, "str", cpy_r_val); + goto CPyL51; + } + cpy_r_r4 = CPyDef__utils___hexstr_to_bytes(cpy_r_r3); + CPy_DECREF(cpy_r_r3); + if (unlikely(cpy_r_r4 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 21, CPyStatic__utils___globals); + goto CPyL51; + } + return cpy_r_r4; +CPyL7: ; + cpy_r_r5 = PyByteArray_Check(cpy_r_val); + if (!cpy_r_r5) goto CPyL11; + cpy_r_r6 = (PyObject *)&PyBytes_Type; + PyObject *cpy_r_r7[1] = {cpy_r_val}; + cpy_r_r8 = (PyObject **)&cpy_r_r7; + cpy_r_r9 = PyObject_Vectorcall(cpy_r_r6, cpy_r_r8, 1, 0); + if (unlikely(cpy_r_r9 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 23, CPyStatic__utils___globals); + goto CPyL51; + } + if (likely(PyBytes_Check(cpy_r_r9) || PyByteArray_Check(cpy_r_r9))) + cpy_r_r10 = cpy_r_r9; + else { + CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "to_bytes", 23, CPyStatic__utils___globals, "bytes", cpy_r_r9); + goto CPyL51; + } + return cpy_r_r10; +CPyL11: ; + cpy_r_r11 = PyBool_Check(cpy_r_val); + if (!cpy_r_r11) goto CPyL17; + if (unlikely(!PyBool_Check(cpy_r_val))) { + CPy_TypeError("bool", cpy_r_val); cpy_r_r12 = 2; + } else + cpy_r_r12 = cpy_r_val == Py_True; + if (unlikely(cpy_r_r12 == 2)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 25, CPyStatic__utils___globals); + goto CPyL51; + } + if (!cpy_r_r12) goto CPyL15; + cpy_r_r13 = CPyStatics[71]; /* b'\x01' */ + CPy_INCREF(cpy_r_r13); + cpy_r_r14 = cpy_r_r13; + goto CPyL16; +CPyL15: ; + cpy_r_r15 = CPyStatics[72]; /* b'\x00' */ + CPy_INCREF(cpy_r_r15); + cpy_r_r14 = cpy_r_r15; +CPyL16: ; + return cpy_r_r14; +CPyL17: ; + cpy_r_r16 = PyLong_Check(cpy_r_val); + if (!cpy_r_r16) goto CPyL37; + if (likely(PyLong_Check(cpy_r_val))) + cpy_r_r17 = CPyTagged_FromObject(cpy_r_val); + else { + CPy_TypeError("int", cpy_r_val); cpy_r_r17 = CPY_INT_TAG; + } + if (unlikely(cpy_r_r17 == CPY_INT_TAG)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 29, CPyStatic__utils___globals); + goto CPyL51; + } + cpy_r_r18 = cpy_r_r17 & 1; + cpy_r_r19 = cpy_r_r18 != 0; + if (cpy_r_r19) goto CPyL21; + cpy_r_r20 = 0 & 1; + cpy_r_r21 = cpy_r_r20 != 0; + if (!cpy_r_r21) goto CPyL22; +CPyL21: ; + cpy_r_r22 = CPyTagged_IsLt_(cpy_r_r17, 0); + cpy_r_r23 = cpy_r_r22; + goto CPyL23; +CPyL22: ; + cpy_r_r24 = (Py_ssize_t)cpy_r_r17 < (Py_ssize_t)0; + cpy_r_r23 = cpy_r_r24; +CPyL23: ; + CPyTagged_DECREF(cpy_r_r17); + if (!cpy_r_r23) goto CPyL31; + cpy_r_r25 = CPyStatics[12]; /* 'Cannot convert negative integer ' */ + if (likely(PyLong_Check(cpy_r_val))) + cpy_r_r26 = CPyTagged_FromObject(cpy_r_val); + else { + CPy_TypeError("int", cpy_r_val); cpy_r_r26 = CPY_INT_TAG; + } + if (unlikely(cpy_r_r26 == CPY_INT_TAG)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 30, CPyStatic__utils___globals); + goto CPyL51; + } + cpy_r_r27 = CPyTagged_Str(cpy_r_r26); + CPyTagged_DECREF(cpy_r_r26); + if (unlikely(cpy_r_r27 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 30, CPyStatic__utils___globals); + goto CPyL51; + } + cpy_r_r28 = CPyStatics[13]; /* ' to bytes' */ + cpy_r_r29 = CPyStr_Build(3, cpy_r_r25, cpy_r_r27, cpy_r_r28); + CPy_DECREF(cpy_r_r27); + if (unlikely(cpy_r_r29 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 30, CPyStatic__utils___globals); + goto CPyL51; + } + cpy_r_r30 = CPyModule_builtins; + cpy_r_r31 = CPyStatics[14]; /* 'ValueError' */ + cpy_r_r32 = CPyObject_GetAttr(cpy_r_r30, cpy_r_r31); + if (unlikely(cpy_r_r32 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 30, CPyStatic__utils___globals); + goto CPyL52; + } + PyObject *cpy_r_r33[1] = {cpy_r_r29}; + cpy_r_r34 = (PyObject **)&cpy_r_r33; + cpy_r_r35 = PyObject_Vectorcall(cpy_r_r32, cpy_r_r34, 1, 0); + CPy_DECREF(cpy_r_r32); + if (unlikely(cpy_r_r35 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 30, CPyStatic__utils___globals); + goto CPyL52; + } + CPy_DECREF(cpy_r_r29); + CPy_Raise(cpy_r_r35); + CPy_DECREF(cpy_r_r35); + if (unlikely(!0)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 30, CPyStatic__utils___globals); + goto CPyL51; + } + CPy_Unreachable(); +CPyL31: ; + if (likely(PyLong_Check(cpy_r_val))) + cpy_r_r36 = CPyTagged_FromObject(cpy_r_val); + else { + CPy_TypeError("int", cpy_r_val); cpy_r_r36 = CPY_INT_TAG; + } + if (unlikely(cpy_r_r36 == CPY_INT_TAG)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals); + goto CPyL51; + } + cpy_r_r37 = CPyModule_builtins; + cpy_r_r38 = CPyStatics[15]; /* 'hex' */ + cpy_r_r39 = CPyObject_GetAttr(cpy_r_r37, cpy_r_r38); + if (unlikely(cpy_r_r39 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals); + goto CPyL53; + } + cpy_r_r40 = CPyTagged_StealAsObject(cpy_r_r36); + PyObject *cpy_r_r41[1] = {cpy_r_r40}; + cpy_r_r42 = (PyObject **)&cpy_r_r41; + cpy_r_r43 = PyObject_Vectorcall(cpy_r_r39, cpy_r_r42, 1, 0); + CPy_DECREF(cpy_r_r39); + if (unlikely(cpy_r_r43 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals); + goto CPyL54; + } + CPy_DECREF(cpy_r_r40); + if (likely(PyUnicode_Check(cpy_r_r43))) + cpy_r_r44 = cpy_r_r43; + else { + CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals, "str", cpy_r_r43); + goto CPyL51; + } + cpy_r_r45 = CPyDef__utils___to_bytes(cpy_r_r44); + CPy_DECREF(cpy_r_r44); + if (unlikely(cpy_r_r45 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals); + goto CPyL51; + } + return cpy_r_r45; +CPyL37: ; + cpy_r_r46 = CPyModule_builtins; + cpy_r_r47 = CPyStatics[16]; /* 'memoryview' */ + cpy_r_r48 = CPyObject_GetAttr(cpy_r_r46, cpy_r_r47); + if (unlikely(cpy_r_r48 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 33, CPyStatic__utils___globals); + goto CPyL51; + } + cpy_r_r49 = PyObject_IsInstance(cpy_r_val, cpy_r_r48); + CPy_DECREF(cpy_r_r48); + cpy_r_r50 = cpy_r_r49 >= 0; + if (unlikely(!cpy_r_r50)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 33, CPyStatic__utils___globals); + goto CPyL51; + } + cpy_r_r51 = cpy_r_r49; + if (!cpy_r_r51) goto CPyL43; + cpy_r_r52 = (PyObject *)&PyBytes_Type; + PyObject *cpy_r_r53[1] = {cpy_r_val}; + cpy_r_r54 = (PyObject **)&cpy_r_r53; + cpy_r_r55 = PyObject_Vectorcall(cpy_r_r52, cpy_r_r54, 1, 0); + if (unlikely(cpy_r_r55 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 34, CPyStatic__utils___globals); + goto CPyL51; + } + if (likely(PyBytes_Check(cpy_r_r55) || PyByteArray_Check(cpy_r_r55))) + cpy_r_r56 = cpy_r_r55; + else { + CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "to_bytes", 34, CPyStatic__utils___globals, "bytes", cpy_r_r55); + goto CPyL51; + } + return cpy_r_r56; +CPyL43: ; + cpy_r_r57 = CPyStatics[17]; /* '' */ + cpy_r_r58 = CPyStatics[18]; /* 'Cannot convert ' */ + cpy_r_r59 = CPyStatics[19]; /* '{!r:{}}' */ + cpy_r_r60 = CPyStatics[17]; /* '' */ + cpy_r_r61 = CPyStatics[20]; /* 'format' */ + PyObject *cpy_r_r62[3] = {cpy_r_r59, cpy_r_val, cpy_r_r60}; + cpy_r_r63 = (PyObject **)&cpy_r_r62; + cpy_r_r64 = PyObject_VectorcallMethod(cpy_r_r61, cpy_r_r63, 9223372036854775811ULL, 0); + if (unlikely(cpy_r_r64 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 36, CPyStatic__utils___globals); + goto CPyL51; + } + cpy_r_r65 = CPyStatics[21]; /* ' of type ' */ + cpy_r_r66 = CPyStatics[22]; /* '{:{}}' */ + cpy_r_r67 = CPy_TYPE(cpy_r_val); + cpy_r_r68 = CPyStatics[17]; /* '' */ + cpy_r_r69 = CPyStatics[20]; /* 'format' */ + PyObject *cpy_r_r70[3] = {cpy_r_r66, cpy_r_r67, cpy_r_r68}; + cpy_r_r71 = (PyObject **)&cpy_r_r70; + cpy_r_r72 = PyObject_VectorcallMethod(cpy_r_r69, cpy_r_r71, 9223372036854775811ULL, 0); + if (unlikely(cpy_r_r72 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 36, CPyStatic__utils___globals); + goto CPyL55; + } + CPy_DECREF(cpy_r_r67); + cpy_r_r73 = CPyStatics[13]; /* ' to bytes' */ + cpy_r_r74 = PyList_New(5); + if (unlikely(cpy_r_r74 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 36, CPyStatic__utils___globals); + goto CPyL56; + } + cpy_r_r75 = (CPyPtr)&((PyListObject *)cpy_r_r74)->ob_item; + cpy_r_r76 = *(CPyPtr *)cpy_r_r75; + CPy_INCREF(cpy_r_r58); + *(PyObject * *)cpy_r_r76 = cpy_r_r58; + cpy_r_r77 = cpy_r_r76 + 8; + *(PyObject * *)cpy_r_r77 = cpy_r_r64; + CPy_INCREF(cpy_r_r65); + cpy_r_r78 = cpy_r_r76 + 16; + *(PyObject * *)cpy_r_r78 = cpy_r_r65; + cpy_r_r79 = cpy_r_r76 + 24; + *(PyObject * *)cpy_r_r79 = cpy_r_r72; + CPy_INCREF(cpy_r_r73); + cpy_r_r80 = cpy_r_r76 + 32; + *(PyObject * *)cpy_r_r80 = cpy_r_r73; + cpy_r_r81 = PyUnicode_Join(cpy_r_r57, cpy_r_r74); + CPy_DECREF_NO_IMM(cpy_r_r74); + if (unlikely(cpy_r_r81 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 36, CPyStatic__utils___globals); + goto CPyL51; + } + cpy_r_r82 = CPyModule_builtins; + cpy_r_r83 = CPyStatics[23]; /* 'TypeError' */ + cpy_r_r84 = CPyObject_GetAttr(cpy_r_r82, cpy_r_r83); + if (unlikely(cpy_r_r84 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 36, CPyStatic__utils___globals); + goto CPyL57; + } + PyObject *cpy_r_r85[1] = {cpy_r_r81}; + cpy_r_r86 = (PyObject **)&cpy_r_r85; + cpy_r_r87 = PyObject_Vectorcall(cpy_r_r84, cpy_r_r86, 1, 0); + CPy_DECREF(cpy_r_r84); + if (unlikely(cpy_r_r87 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 36, CPyStatic__utils___globals); + goto CPyL57; + } + CPy_DECREF(cpy_r_r81); + CPy_Raise(cpy_r_r87); + CPy_DECREF(cpy_r_r87); + if (unlikely(!0)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 36, CPyStatic__utils___globals); + goto CPyL51; + } + CPy_Unreachable(); +CPyL51: ; + cpy_r_r88 = NULL; + return cpy_r_r88; +CPyL52: ; + CPy_DecRef(cpy_r_r29); + goto CPyL51; +CPyL53: ; + CPyTagged_DecRef(cpy_r_r36); + goto CPyL51; +CPyL54: ; + CPy_DecRef(cpy_r_r40); + goto CPyL51; +CPyL55: ; + CPy_DecRef(cpy_r_r64); + CPy_DecRef(cpy_r_r67); + goto CPyL51; +CPyL56: ; + CPy_DecRef(cpy_r_r64); + CPy_DecRef(cpy_r_r72); + goto CPyL51; +CPyL57: ; + CPy_DecRef(cpy_r_r81); + goto CPyL51; +} + +PyObject *CPyPy__utils___to_bytes(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + static const char * const kwlist[] = {"val", 0}; + static CPyArg_Parser parser = {"O:to_bytes", kwlist, 0}; + PyObject *obj_val; + if (!CPyArg_ParseStackAndKeywordsOneArg(args, nargs, kwnames, &parser, &obj_val)) { + return NULL; + } + PyObject *arg_val; + if (PyBytes_Check(obj_val) || PyByteArray_Check(obj_val)) + arg_val = obj_val; + else { + arg_val = NULL; + } + if (arg_val != NULL) goto __LL1; + if (PyUnicode_Check(obj_val)) + arg_val = obj_val; + else { + arg_val = NULL; + } + if (arg_val != NULL) goto __LL1; + arg_val = obj_val; + if (arg_val != NULL) goto __LL1; + if (PyBool_Check(obj_val)) + arg_val = obj_val; + else { + arg_val = NULL; + } + if (arg_val != NULL) goto __LL1; + if (PyLong_Check(obj_val)) + arg_val = obj_val; + else { + arg_val = NULL; + } + if (arg_val != NULL) goto __LL1; + CPy_TypeError("union[bytes, str, object, bool, int]", obj_val); + goto fail; +__LL1: ; + PyObject *retval = CPyDef__utils___to_bytes(arg_val); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 11, CPyStatic__utils___globals); + return NULL; +} + +PyObject *CPyDef__utils___hexstr_to_bytes(PyObject *cpy_r_hexstr) { + PyObject *cpy_r_r0; + PyObject *cpy_r_r1; + tuple_T2OO cpy_r_r2; + PyObject *cpy_r_r3; + char cpy_r_r4; + PyObject *cpy_r_r5; + PyObject *cpy_r_r6; + PyObject *cpy_r_non_prefixed_hex; + int64_t cpy_r_r7; + char cpy_r_r8; + CPyTagged cpy_r_r9; + CPyTagged cpy_r_r10; + char cpy_r_r11; + PyObject *cpy_r_r12; + PyObject *cpy_r_r13; + PyObject *cpy_r_padded_hex; + PyObject *cpy_r_r14; + tuple_T3OOO cpy_r_r15; + PyObject *cpy_r_r16; + PyObject *cpy_r_r17; + PyObject *cpy_r_r18; + char cpy_r_r19; + PyObject *cpy_r_r20; + PyObject *cpy_r_r21; + PyObject *cpy_r_r22; + PyObject *cpy_r_r23; + PyObject *cpy_r_r24; + PyObject *cpy_r_r25; + PyObject **cpy_r_r27; + PyObject *cpy_r_r28; + char cpy_r_r29; + PyObject *cpy_r_r30; + char cpy_r_r31; + PyObject **cpy_r_r33; + PyObject *cpy_r_r34; + PyObject *cpy_r_r35; + PyObject *cpy_r_r36; + cpy_r_r0 = CPyStatics[24]; /* '0x' */ + cpy_r_r1 = CPyStatics[25]; /* '0X' */ + CPy_INCREF(cpy_r_r0); + CPy_INCREF(cpy_r_r1); + cpy_r_r2.f0 = cpy_r_r0; + cpy_r_r2.f1 = cpy_r_r1; + cpy_r_r3 = PyTuple_New(2); + if (unlikely(cpy_r_r3 == NULL)) + CPyError_OutOfMemory(); + PyObject *__tmp2 = cpy_r_r2.f0; + PyTuple_SET_ITEM(cpy_r_r3, 0, __tmp2); + PyObject *__tmp3 = cpy_r_r2.f1; + PyTuple_SET_ITEM(cpy_r_r3, 1, __tmp3); + cpy_r_r4 = CPyStr_Startswith(cpy_r_hexstr, cpy_r_r3); + CPy_DECREF(cpy_r_r3); + if (unlikely(cpy_r_r4 == 2)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 40, CPyStatic__utils___globals); + goto CPyL31; + } + if (!cpy_r_r4) goto CPyL5; + cpy_r_r5 = CPyStr_GetSlice(cpy_r_hexstr, 4, 9223372036854775806LL); + if (unlikely(cpy_r_r5 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 41, CPyStatic__utils___globals); + goto CPyL31; + } + if (likely(PyUnicode_Check(cpy_r_r5))) + cpy_r_r6 = cpy_r_r5; + else { + CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 41, CPyStatic__utils___globals, "str", cpy_r_r5); + goto CPyL31; + } + cpy_r_non_prefixed_hex = cpy_r_r6; + goto CPyL6; +CPyL5: ; + CPy_INCREF(cpy_r_hexstr); + cpy_r_non_prefixed_hex = cpy_r_hexstr; +CPyL6: ; + cpy_r_r7 = CPyStr_Size_size_t(cpy_r_hexstr); + cpy_r_r8 = cpy_r_r7 >= 0; + if (unlikely(!cpy_r_r8)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 46, CPyStatic__utils___globals); + goto CPyL32; + } + cpy_r_r9 = cpy_r_r7 << 1; + cpy_r_r10 = CPyTagged_Remainder(cpy_r_r9, 4); + if (unlikely(cpy_r_r10 == CPY_INT_TAG)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 46, CPyStatic__utils___globals); + goto CPyL32; + } + cpy_r_r11 = cpy_r_r10 != 0; + CPyTagged_DECREF(cpy_r_r10); + if (!cpy_r_r11) goto CPyL11; + cpy_r_r12 = CPyStatics[26]; /* '0' */ + cpy_r_r13 = PyUnicode_Concat(cpy_r_r12, cpy_r_non_prefixed_hex); + CPy_DECREF(cpy_r_non_prefixed_hex); + if (unlikely(cpy_r_r13 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 47, CPyStatic__utils___globals); + goto CPyL31; + } + cpy_r_padded_hex = cpy_r_r13; + goto CPyL12; +CPyL11: ; + cpy_r_padded_hex = cpy_r_non_prefixed_hex; +CPyL12: ; + cpy_r_r14 = PyUnicode_AsASCIIString(cpy_r_padded_hex); + if (unlikely(cpy_r_r14 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 52, CPyStatic__utils___globals); + goto CPyL14; + } else + goto CPyL33; +CPyL13: ; + goto CPyL25; +CPyL14: ; + cpy_r_r15 = CPy_CatchError(); + cpy_r_r16 = CPyModule_builtins; + cpy_r_r17 = CPyStatics[27]; /* 'UnicodeDecodeError' */ + cpy_r_r18 = CPyObject_GetAttr(cpy_r_r16, cpy_r_r17); + if (unlikely(cpy_r_r18 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 53, CPyStatic__utils___globals); + goto CPyL34; + } + cpy_r_r19 = CPy_ExceptionMatches(cpy_r_r18); + CPy_DecRef(cpy_r_r18); + if (!cpy_r_r19) goto CPyL35; + cpy_r_r20 = CPyStatics[28]; /* 'hex string ' */ + cpy_r_r21 = CPyStatics[29]; /* ' may only contain [0-9a-fA-F] characters' */ + cpy_r_r22 = CPyStr_Build(3, cpy_r_r20, cpy_r_padded_hex, cpy_r_r21); + CPy_DecRef(cpy_r_padded_hex); + if (unlikely(cpy_r_r22 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 55, CPyStatic__utils___globals); + goto CPyL23; + } + cpy_r_r23 = CPyModule_builtins; + cpy_r_r24 = CPyStatics[14]; /* 'ValueError' */ + cpy_r_r25 = CPyObject_GetAttr(cpy_r_r23, cpy_r_r24); + if (unlikely(cpy_r_r25 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 54, CPyStatic__utils___globals); + goto CPyL36; + } + PyObject *cpy_r_r26[1] = {cpy_r_r22}; + cpy_r_r27 = (PyObject **)&cpy_r_r26; + cpy_r_r28 = PyObject_Vectorcall(cpy_r_r25, cpy_r_r27, 1, 0); + CPy_DecRef(cpy_r_r25); + if (unlikely(cpy_r_r28 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 54, CPyStatic__utils___globals); + goto CPyL36; + } + CPy_DecRef(cpy_r_r22); + CPy_Raise(cpy_r_r28); + CPy_DecRef(cpy_r_r28); + if (unlikely(!0)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 54, CPyStatic__utils___globals); + goto CPyL23; + } else + goto CPyL37; +CPyL20: ; + CPy_Unreachable(); +CPyL21: ; + CPy_Reraise(); + if (!0) { + goto CPyL23; + } else + goto CPyL38; +CPyL22: ; + CPy_Unreachable(); +CPyL23: ; + CPy_RestoreExcInfo(cpy_r_r15); + CPy_DecRef(cpy_r_r15.f0); + CPy_DecRef(cpy_r_r15.f1); + CPy_DecRef(cpy_r_r15.f2); + cpy_r_r29 = CPy_KeepPropagating(); + if (!cpy_r_r29) goto CPyL31; + CPy_Unreachable(); +CPyL25: ; + cpy_r_r30 = CPyStatic__utils___unhexlify; + if (unlikely(cpy_r_r30 == NULL)) { + goto CPyL39; + } else + goto CPyL28; +CPyL26: ; + PyErr_SetString(PyExc_NameError, "value for final name \"unhexlify\" was not set"); + cpy_r_r31 = 0; + if (unlikely(!cpy_r_r31)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 58, CPyStatic__utils___globals); + goto CPyL31; + } + CPy_Unreachable(); +CPyL28: ; + PyObject *cpy_r_r32[1] = {cpy_r_r14}; + cpy_r_r33 = (PyObject **)&cpy_r_r32; + cpy_r_r34 = PyObject_Vectorcall(cpy_r_r30, cpy_r_r33, 1, 0); + if (unlikely(cpy_r_r34 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 58, CPyStatic__utils___globals); + goto CPyL40; + } + CPy_DECREF(cpy_r_r14); + if (likely(PyBytes_Check(cpy_r_r34) || PyByteArray_Check(cpy_r_r34))) + cpy_r_r35 = cpy_r_r34; + else { + CPy_TypeErrorTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 58, CPyStatic__utils___globals, "bytes", cpy_r_r34); + goto CPyL31; + } + return cpy_r_r35; +CPyL31: ; + cpy_r_r36 = NULL; + return cpy_r_r36; +CPyL32: ; + CPy_DecRef(cpy_r_non_prefixed_hex); + goto CPyL31; +CPyL33: ; + CPy_DECREF(cpy_r_padded_hex); + goto CPyL13; +CPyL34: ; + CPy_DecRef(cpy_r_padded_hex); + goto CPyL23; +CPyL35: ; + CPy_DecRef(cpy_r_padded_hex); + goto CPyL21; +CPyL36: ; + CPy_DecRef(cpy_r_r22); + goto CPyL23; +CPyL37: ; + CPy_DecRef(cpy_r_r15.f0); + CPy_DecRef(cpy_r_r15.f1); + CPy_DecRef(cpy_r_r15.f2); + goto CPyL20; +CPyL38: ; + CPy_DecRef(cpy_r_r15.f0); + CPy_DecRef(cpy_r_r15.f1); + CPy_DecRef(cpy_r_r15.f2); + goto CPyL22; +CPyL39: ; + CPy_DecRef(cpy_r_r14); + goto CPyL26; +CPyL40: ; + CPy_DecRef(cpy_r_r14); + goto CPyL31; +} + +PyObject *CPyPy__utils___hexstr_to_bytes(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + static const char * const kwlist[] = {"hexstr", 0}; + static CPyArg_Parser parser = {"O:hexstr_to_bytes", kwlist, 0}; + PyObject *obj_hexstr; + if (!CPyArg_ParseStackAndKeywordsOneArg(args, nargs, kwnames, &parser, &obj_hexstr)) { + return NULL; + } + PyObject *arg_hexstr; + if (likely(PyUnicode_Check(obj_hexstr))) + arg_hexstr = obj_hexstr; + else { + CPy_TypeError("str", obj_hexstr); + goto fail; + } + PyObject *retval = CPyDef__utils___hexstr_to_bytes(arg_hexstr); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 39, CPyStatic__utils___globals); + return NULL; +} + +char CPyDef__utils_____top_level__(void) { + PyObject *cpy_r_r0; + PyObject *cpy_r_r1; + char cpy_r_r2; + PyObject *cpy_r_r3; + PyObject *cpy_r_r4; + PyObject **cpy_r_r5; + void *cpy_r_r7; + void *cpy_r_r9; + PyObject *cpy_r_r10; + PyObject *cpy_r_r11; + PyObject *cpy_r_r12; + PyObject *cpy_r_r13; + char cpy_r_r14; + PyObject *cpy_r_r15; + PyObject *cpy_r_r16; + PyObject *cpy_r_r17; + PyObject *cpy_r_r18; + PyObject *cpy_r_r19; + PyObject *cpy_r_r20; + PyObject *cpy_r_r21; + PyObject *cpy_r_r22; + PyObject *cpy_r_r23; + int32_t cpy_r_r24; + char cpy_r_r25; + char cpy_r_r26; + cpy_r_r0 = CPyModule_builtins; + cpy_r_r1 = (PyObject *)&_Py_NoneStruct; + cpy_r_r2 = cpy_r_r0 != cpy_r_r1; + if (cpy_r_r2) goto CPyL3; + cpy_r_r3 = CPyStatics[3]; /* 'builtins' */ + cpy_r_r4 = PyImport_Import(cpy_r_r3); + if (unlikely(cpy_r_r4 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "", -1, CPyStatic__utils___globals); + goto CPyL8; + } + CPyModule_builtins = cpy_r_r4; + CPy_INCREF(CPyModule_builtins); + CPy_DECREF(cpy_r_r4); +CPyL3: ; + cpy_r_r5 = (PyObject **)&CPyModule_binascii; + PyObject **cpy_r_r6[1] = {cpy_r_r5}; + cpy_r_r7 = (void *)&cpy_r_r6; + int64_t cpy_r_r8[1] = {1}; + cpy_r_r9 = (void *)&cpy_r_r8; + cpy_r_r10 = CPyStatics[77]; /* (('binascii', 'binascii', 'binascii'),) */ + cpy_r_r11 = CPyStatic__utils___globals; + cpy_r_r12 = CPyStatics[31]; /* 'faster_hexbytes/_utils.py' */ + cpy_r_r13 = CPyStatics[32]; /* '' */ + cpy_r_r14 = CPyImport_ImportMany(cpy_r_r10, cpy_r_r7, cpy_r_r11, cpy_r_r12, cpy_r_r13, cpy_r_r9); + if (!cpy_r_r14) goto CPyL8; + cpy_r_r15 = CPyStatics[78]; /* ('Final', 'Union') */ + cpy_r_r16 = CPyStatics[35]; /* 'typing' */ + cpy_r_r17 = CPyStatic__utils___globals; + cpy_r_r18 = CPyImport_ImportFromMany(cpy_r_r16, cpy_r_r15, cpy_r_r15, cpy_r_r17); + if (unlikely(cpy_r_r18 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "", 2, CPyStatic__utils___globals); + goto CPyL8; + } + CPyModule_typing = cpy_r_r18; + CPy_INCREF(CPyModule_typing); + CPy_DECREF(cpy_r_r18); + cpy_r_r19 = CPyModule_binascii; + cpy_r_r20 = CPyStatics[36]; /* 'unhexlify' */ + cpy_r_r21 = CPyObject_GetAttr(cpy_r_r19, cpy_r_r20); + if (unlikely(cpy_r_r21 == NULL)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "", 8, CPyStatic__utils___globals); + goto CPyL8; + } + CPyStatic__utils___unhexlify = cpy_r_r21; + CPy_INCREF(CPyStatic__utils___unhexlify); + cpy_r_r22 = CPyStatic__utils___globals; + cpy_r_r23 = CPyStatics[36]; /* 'unhexlify' */ + cpy_r_r24 = CPyDict_SetItem(cpy_r_r22, cpy_r_r23, cpy_r_r21); + CPy_DECREF(cpy_r_r21); + cpy_r_r25 = cpy_r_r24 >= 0; + if (unlikely(!cpy_r_r25)) { + CPy_AddTraceback("faster_hexbytes/_utils.py", "", 8, CPyStatic__utils___globals); + goto CPyL8; + } + return 1; +CPyL8: ; + cpy_r_r26 = 2; + return cpy_r_r26; +} + +static PyObject *CPyDunder___get__main_____new___3_HexBytes_obj(PyObject *self, PyObject *instance, PyObject *owner) { + instance = instance ? instance : Py_None; + return CPyDef_main_____new___3_HexBytes_obj_____get__(self, instance, owner); +} +PyObject *CPyDef_main_____mypyc___3__new___3_HexBytes_obj_setup(PyObject *cpy_r_type); +PyObject *CPyDef_main_____new___3_HexBytes_obj(void); + +static PyObject * +main_____new___3_HexBytes_obj_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + if (type != CPyType_main_____new___3_HexBytes_obj) { + PyErr_SetString(PyExc_TypeError, "interpreted classes cannot inherit from compiled"); + return NULL; + } + PyObject *self = CPyDef_main_____mypyc___3__new___3_HexBytes_obj_setup((PyObject*)type); + if (self == NULL) + return NULL; + return self; +} + +static int +main_____new___3_HexBytes_obj_traverse(faster_hexbytes___main_____new___3_HexBytes_objObject *self, visitproc visit, void *arg) +{ + return 0; +} + +static int +main_____new___3_HexBytes_obj_clear(faster_hexbytes___main_____new___3_HexBytes_objObject *self) +{ + return 0; +} + +static void +main_____new___3_HexBytes_obj_dealloc(faster_hexbytes___main_____new___3_HexBytes_objObject *self) +{ + PyObject_GC_UnTrack(self); + if (main_____new___3_HexBytes_obj_free_instance == NULL) { + main_____new___3_HexBytes_obj_free_instance = self; + return; + } + CPy_TRASHCAN_BEGIN(self, main_____new___3_HexBytes_obj_dealloc) + main_____new___3_HexBytes_obj_clear(self); + Py_TYPE(self)->tp_free((PyObject *)self); + CPy_TRASHCAN_END(self) +} + +static CPyVTableItem main_____new___3_HexBytes_obj_vtable[2]; +static bool +CPyDef_main_____new___3_HexBytes_obj_trait_vtable_setup(void) +{ + CPyVTableItem main_____new___3_HexBytes_obj_vtable_scratch[] = { + (CPyVTableItem)CPyDef_main_____new___3_HexBytes_obj_____call__, + (CPyVTableItem)CPyDef_main_____new___3_HexBytes_obj_____get__, + }; + memcpy(main_____new___3_HexBytes_obj_vtable, main_____new___3_HexBytes_obj_vtable_scratch, sizeof(main_____new___3_HexBytes_obj_vtable)); + return 1; +} + +static PyMethodDef main_____new___3_HexBytes_obj_methods[] = { + {"__call__", + (PyCFunction)CPyPy_main_____new___3_HexBytes_obj_____call__, + METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__call__($cls, val)\n--\n\n")}, + {"__get__", + (PyCFunction)CPyPy_main_____new___3_HexBytes_obj_____get__, + METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__get__($instance, owner)\n--\n\n")}, + {"__setstate__", (PyCFunction)CPyPickle_SetState, METH_O, NULL}, + {"__getstate__", (PyCFunction)CPyPickle_GetState, METH_NOARGS, NULL}, + {NULL} /* Sentinel */ +}; + +static PyTypeObject CPyType_main_____new___3_HexBytes_obj_template_ = { + PyVarObject_HEAD_INIT(NULL, 0) + .tp_name = "__new___HexBytes_obj", + .tp_new = main_____new___3_HexBytes_obj_new, + .tp_dealloc = (destructor)main_____new___3_HexBytes_obj_dealloc, + .tp_traverse = (traverseproc)main_____new___3_HexBytes_obj_traverse, + .tp_clear = (inquiry)main_____new___3_HexBytes_obj_clear, + .tp_methods = main_____new___3_HexBytes_obj_methods, + .tp_call = PyVectorcall_Call, + .tp_descr_get = CPyDunder___get__main_____new___3_HexBytes_obj, + .tp_basicsize = sizeof(faster_hexbytes___main_____new___3_HexBytes_objObject), + .tp_vectorcall_offset = offsetof(faster_hexbytes___main_____new___3_HexBytes_objObject, vectorcall), + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | _Py_TPFLAGS_HAVE_VECTORCALL, + .tp_doc = PyDoc_STR("__new___HexBytes_obj()\n--\n\n"), +}; +static PyTypeObject *CPyType_main_____new___3_HexBytes_obj_template = &CPyType_main_____new___3_HexBytes_obj_template_; + +PyObject *CPyDef_main_____mypyc___3__new___3_HexBytes_obj_setup(PyObject *cpy_r_type) +{ + PyTypeObject *type = (PyTypeObject*)cpy_r_type; + faster_hexbytes___main_____new___3_HexBytes_objObject *self; + if (main_____new___3_HexBytes_obj_free_instance != NULL) { + self = main_____new___3_HexBytes_obj_free_instance; + main_____new___3_HexBytes_obj_free_instance = NULL; + Py_SET_REFCNT(self, 1); + PyObject_GC_Track(self); + return (PyObject *)self; + } + self = (faster_hexbytes___main_____new___3_HexBytes_objObject *)type->tp_alloc(type, 0); + if (self == NULL) + return NULL; + self->vtable = main_____new___3_HexBytes_obj_vtable; + self->vectorcall = CPyPy_main_____new___3_HexBytes_obj_____call__; + return (PyObject *)self; +} + +PyObject *CPyDef_main_____new___3_HexBytes_obj(void) +{ + PyObject *self = CPyDef_main_____mypyc___3__new___3_HexBytes_obj_setup((PyObject *)CPyType_main_____new___3_HexBytes_obj); + if (self == NULL) + return NULL; + return self; +} + + +static PyObject *CPyDunder___get__main_____getitem___3_HexBytes_obj(PyObject *self, PyObject *instance, PyObject *owner) { + instance = instance ? instance : Py_None; + return CPyDef_main_____getitem___3_HexBytes_obj_____get__(self, instance, owner); +} +PyObject *CPyDef_main_____mypyc___3__getitem___3_HexBytes_obj_setup(PyObject *cpy_r_type); +PyObject *CPyDef_main_____getitem___3_HexBytes_obj(void); + +static PyObject * +main_____getitem___3_HexBytes_obj_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + if (type != CPyType_main_____getitem___3_HexBytes_obj) { + PyErr_SetString(PyExc_TypeError, "interpreted classes cannot inherit from compiled"); + return NULL; + } + PyObject *self = CPyDef_main_____mypyc___3__getitem___3_HexBytes_obj_setup((PyObject*)type); + if (self == NULL) + return NULL; + return self; +} + +static int +main_____getitem___3_HexBytes_obj_traverse(faster_hexbytes___main_____getitem___3_HexBytes_objObject *self, visitproc visit, void *arg) +{ + return 0; +} + +static int +main_____getitem___3_HexBytes_obj_clear(faster_hexbytes___main_____getitem___3_HexBytes_objObject *self) +{ + return 0; +} + +static void +main_____getitem___3_HexBytes_obj_dealloc(faster_hexbytes___main_____getitem___3_HexBytes_objObject *self) +{ + PyObject_GC_UnTrack(self); + if (main_____getitem___3_HexBytes_obj_free_instance == NULL) { + main_____getitem___3_HexBytes_obj_free_instance = self; + return; + } + CPy_TRASHCAN_BEGIN(self, main_____getitem___3_HexBytes_obj_dealloc) + main_____getitem___3_HexBytes_obj_clear(self); + Py_TYPE(self)->tp_free((PyObject *)self); + CPy_TRASHCAN_END(self) +} + +static CPyVTableItem main_____getitem___3_HexBytes_obj_vtable[2]; +static bool +CPyDef_main_____getitem___3_HexBytes_obj_trait_vtable_setup(void) +{ + CPyVTableItem main_____getitem___3_HexBytes_obj_vtable_scratch[] = { + (CPyVTableItem)CPyDef_main_____getitem___3_HexBytes_obj_____call__, + (CPyVTableItem)CPyDef_main_____getitem___3_HexBytes_obj_____get__, + }; + memcpy(main_____getitem___3_HexBytes_obj_vtable, main_____getitem___3_HexBytes_obj_vtable_scratch, sizeof(main_____getitem___3_HexBytes_obj_vtable)); + return 1; +} + +static PyMethodDef main_____getitem___3_HexBytes_obj_methods[] = { + {"__call__", + (PyCFunction)CPyPy_main_____getitem___3_HexBytes_obj_____call__, + METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__call__($self, key, /)\n--\n\n")}, + {"__get__", + (PyCFunction)CPyPy_main_____getitem___3_HexBytes_obj_____get__, + METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__get__($instance, owner)\n--\n\n")}, + {"__setstate__", (PyCFunction)CPyPickle_SetState, METH_O, NULL}, + {"__getstate__", (PyCFunction)CPyPickle_GetState, METH_NOARGS, NULL}, + {NULL} /* Sentinel */ +}; + +static PyTypeObject CPyType_main_____getitem___3_HexBytes_obj_template_ = { + PyVarObject_HEAD_INIT(NULL, 0) + .tp_name = "__getitem___HexBytes_obj", + .tp_new = main_____getitem___3_HexBytes_obj_new, + .tp_dealloc = (destructor)main_____getitem___3_HexBytes_obj_dealloc, + .tp_traverse = (traverseproc)main_____getitem___3_HexBytes_obj_traverse, + .tp_clear = (inquiry)main_____getitem___3_HexBytes_obj_clear, + .tp_methods = main_____getitem___3_HexBytes_obj_methods, + .tp_call = PyVectorcall_Call, + .tp_descr_get = CPyDunder___get__main_____getitem___3_HexBytes_obj, + .tp_basicsize = sizeof(faster_hexbytes___main_____getitem___3_HexBytes_objObject), + .tp_vectorcall_offset = offsetof(faster_hexbytes___main_____getitem___3_HexBytes_objObject, vectorcall), + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | _Py_TPFLAGS_HAVE_VECTORCALL, + .tp_doc = PyDoc_STR("__getitem___HexBytes_obj()\n--\n\n"), +}; +static PyTypeObject *CPyType_main_____getitem___3_HexBytes_obj_template = &CPyType_main_____getitem___3_HexBytes_obj_template_; + +PyObject *CPyDef_main_____mypyc___3__getitem___3_HexBytes_obj_setup(PyObject *cpy_r_type) +{ + PyTypeObject *type = (PyTypeObject*)cpy_r_type; + faster_hexbytes___main_____getitem___3_HexBytes_objObject *self; + if (main_____getitem___3_HexBytes_obj_free_instance != NULL) { + self = main_____getitem___3_HexBytes_obj_free_instance; + main_____getitem___3_HexBytes_obj_free_instance = NULL; + Py_SET_REFCNT(self, 1); + PyObject_GC_Track(self); + return (PyObject *)self; + } + self = (faster_hexbytes___main_____getitem___3_HexBytes_objObject *)type->tp_alloc(type, 0); + if (self == NULL) + return NULL; + self->vtable = main_____getitem___3_HexBytes_obj_vtable; + self->vectorcall = CPyPy_main_____getitem___3_HexBytes_obj_____call__; + return (PyObject *)self; +} + +PyObject *CPyDef_main_____getitem___3_HexBytes_obj(void) +{ + PyObject *self = CPyDef_main_____mypyc___3__getitem___3_HexBytes_obj_setup((PyObject *)CPyType_main_____getitem___3_HexBytes_obj); + if (self == NULL) + return NULL; + return self; +} + + +static PyObject *CPyDunder___get__main_____repr___3_HexBytes_obj(PyObject *self, PyObject *instance, PyObject *owner) { + instance = instance ? instance : Py_None; + return CPyDef_main_____repr___3_HexBytes_obj_____get__(self, instance, owner); +} +PyObject *CPyDef_main_____mypyc___3__repr___3_HexBytes_obj_setup(PyObject *cpy_r_type); +PyObject *CPyDef_main_____repr___3_HexBytes_obj(void); + +static PyObject * +main_____repr___3_HexBytes_obj_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + if (type != CPyType_main_____repr___3_HexBytes_obj) { + PyErr_SetString(PyExc_TypeError, "interpreted classes cannot inherit from compiled"); + return NULL; + } + PyObject *self = CPyDef_main_____mypyc___3__repr___3_HexBytes_obj_setup((PyObject*)type); + if (self == NULL) + return NULL; + return self; +} + +static int +main_____repr___3_HexBytes_obj_traverse(faster_hexbytes___main_____repr___3_HexBytes_objObject *self, visitproc visit, void *arg) +{ + return 0; +} + +static int +main_____repr___3_HexBytes_obj_clear(faster_hexbytes___main_____repr___3_HexBytes_objObject *self) +{ + return 0; +} + +static void +main_____repr___3_HexBytes_obj_dealloc(faster_hexbytes___main_____repr___3_HexBytes_objObject *self) +{ + PyObject_GC_UnTrack(self); + if (main_____repr___3_HexBytes_obj_free_instance == NULL) { + main_____repr___3_HexBytes_obj_free_instance = self; + return; + } + CPy_TRASHCAN_BEGIN(self, main_____repr___3_HexBytes_obj_dealloc) + main_____repr___3_HexBytes_obj_clear(self); + Py_TYPE(self)->tp_free((PyObject *)self); + CPy_TRASHCAN_END(self) +} + +static CPyVTableItem main_____repr___3_HexBytes_obj_vtable[2]; +static bool +CPyDef_main_____repr___3_HexBytes_obj_trait_vtable_setup(void) +{ + CPyVTableItem main_____repr___3_HexBytes_obj_vtable_scratch[] = { + (CPyVTableItem)CPyDef_main_____repr___3_HexBytes_obj_____call__, + (CPyVTableItem)CPyDef_main_____repr___3_HexBytes_obj_____get__, + }; + memcpy(main_____repr___3_HexBytes_obj_vtable, main_____repr___3_HexBytes_obj_vtable_scratch, sizeof(main_____repr___3_HexBytes_obj_vtable)); + return 1; +} + +static PyMethodDef main_____repr___3_HexBytes_obj_methods[] = { + {"__call__", + (PyCFunction)CPyPy_main_____repr___3_HexBytes_obj_____call__, + METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__call__($self, /)\n--\n\n")}, + {"__get__", + (PyCFunction)CPyPy_main_____repr___3_HexBytes_obj_____get__, + METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__get__($instance, owner)\n--\n\n")}, + {"__setstate__", (PyCFunction)CPyPickle_SetState, METH_O, NULL}, + {"__getstate__", (PyCFunction)CPyPickle_GetState, METH_NOARGS, NULL}, + {NULL} /* Sentinel */ +}; + +static PyTypeObject CPyType_main_____repr___3_HexBytes_obj_template_ = { + PyVarObject_HEAD_INIT(NULL, 0) + .tp_name = "__repr___HexBytes_obj", + .tp_new = main_____repr___3_HexBytes_obj_new, + .tp_dealloc = (destructor)main_____repr___3_HexBytes_obj_dealloc, + .tp_traverse = (traverseproc)main_____repr___3_HexBytes_obj_traverse, + .tp_clear = (inquiry)main_____repr___3_HexBytes_obj_clear, + .tp_methods = main_____repr___3_HexBytes_obj_methods, + .tp_call = PyVectorcall_Call, + .tp_descr_get = CPyDunder___get__main_____repr___3_HexBytes_obj, + .tp_basicsize = sizeof(faster_hexbytes___main_____repr___3_HexBytes_objObject), + .tp_vectorcall_offset = offsetof(faster_hexbytes___main_____repr___3_HexBytes_objObject, vectorcall), + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | _Py_TPFLAGS_HAVE_VECTORCALL, + .tp_doc = PyDoc_STR("__repr___HexBytes_obj()\n--\n\n"), +}; +static PyTypeObject *CPyType_main_____repr___3_HexBytes_obj_template = &CPyType_main_____repr___3_HexBytes_obj_template_; + +PyObject *CPyDef_main_____mypyc___3__repr___3_HexBytes_obj_setup(PyObject *cpy_r_type) +{ + PyTypeObject *type = (PyTypeObject*)cpy_r_type; + faster_hexbytes___main_____repr___3_HexBytes_objObject *self; + if (main_____repr___3_HexBytes_obj_free_instance != NULL) { + self = main_____repr___3_HexBytes_obj_free_instance; + main_____repr___3_HexBytes_obj_free_instance = NULL; + Py_SET_REFCNT(self, 1); + PyObject_GC_Track(self); + return (PyObject *)self; + } + self = (faster_hexbytes___main_____repr___3_HexBytes_objObject *)type->tp_alloc(type, 0); + if (self == NULL) + return NULL; + self->vtable = main_____repr___3_HexBytes_obj_vtable; + self->vectorcall = CPyPy_main_____repr___3_HexBytes_obj_____call__; + return (PyObject *)self; +} + +PyObject *CPyDef_main_____repr___3_HexBytes_obj(void) +{ + PyObject *self = CPyDef_main_____mypyc___3__repr___3_HexBytes_obj_setup((PyObject *)CPyType_main_____repr___3_HexBytes_obj); + if (self == NULL) + return NULL; + return self; +} + + +static PyObject *CPyDunder___get__main___to_0x_hex_HexBytes_obj(PyObject *self, PyObject *instance, PyObject *owner) { + instance = instance ? instance : Py_None; + return CPyDef_main___to_0x_hex_HexBytes_obj_____get__(self, instance, owner); +} +PyObject *CPyDef_main_____mypyc__to_0x_hex_HexBytes_obj_setup(PyObject *cpy_r_type); +PyObject *CPyDef_main___to_0x_hex_HexBytes_obj(void); + +static PyObject * +main___to_0x_hex_HexBytes_obj_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + if (type != CPyType_main___to_0x_hex_HexBytes_obj) { + PyErr_SetString(PyExc_TypeError, "interpreted classes cannot inherit from compiled"); + return NULL; + } + PyObject *self = CPyDef_main_____mypyc__to_0x_hex_HexBytes_obj_setup((PyObject*)type); + if (self == NULL) + return NULL; + return self; +} + +static int +main___to_0x_hex_HexBytes_obj_traverse(faster_hexbytes___main___to_0x_hex_HexBytes_objObject *self, visitproc visit, void *arg) +{ + return 0; +} + +static int +main___to_0x_hex_HexBytes_obj_clear(faster_hexbytes___main___to_0x_hex_HexBytes_objObject *self) +{ + return 0; +} + +static void +main___to_0x_hex_HexBytes_obj_dealloc(faster_hexbytes___main___to_0x_hex_HexBytes_objObject *self) +{ + PyObject_GC_UnTrack(self); + if (main___to_0x_hex_HexBytes_obj_free_instance == NULL) { + main___to_0x_hex_HexBytes_obj_free_instance = self; + return; + } + CPy_TRASHCAN_BEGIN(self, main___to_0x_hex_HexBytes_obj_dealloc) + main___to_0x_hex_HexBytes_obj_clear(self); + Py_TYPE(self)->tp_free((PyObject *)self); + CPy_TRASHCAN_END(self) +} + +static CPyVTableItem main___to_0x_hex_HexBytes_obj_vtable[2]; +static bool +CPyDef_main___to_0x_hex_HexBytes_obj_trait_vtable_setup(void) +{ + CPyVTableItem main___to_0x_hex_HexBytes_obj_vtable_scratch[] = { + (CPyVTableItem)CPyDef_main___to_0x_hex_HexBytes_obj_____call__, + (CPyVTableItem)CPyDef_main___to_0x_hex_HexBytes_obj_____get__, + }; + memcpy(main___to_0x_hex_HexBytes_obj_vtable, main___to_0x_hex_HexBytes_obj_vtable_scratch, sizeof(main___to_0x_hex_HexBytes_obj_vtable)); + return 1; +} + +static PyMethodDef main___to_0x_hex_HexBytes_obj_methods[] = { + {"__call__", + (PyCFunction)CPyPy_main___to_0x_hex_HexBytes_obj_____call__, + METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__call__($self)\n--\n\n")}, + {"__get__", + (PyCFunction)CPyPy_main___to_0x_hex_HexBytes_obj_____get__, + METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__get__($instance, owner)\n--\n\n")}, + {"__setstate__", (PyCFunction)CPyPickle_SetState, METH_O, NULL}, + {"__getstate__", (PyCFunction)CPyPickle_GetState, METH_NOARGS, NULL}, + {NULL} /* Sentinel */ +}; + +static PyTypeObject CPyType_main___to_0x_hex_HexBytes_obj_template_ = { + PyVarObject_HEAD_INIT(NULL, 0) + .tp_name = "to_0x_hex_HexBytes_obj", + .tp_new = main___to_0x_hex_HexBytes_obj_new, + .tp_dealloc = (destructor)main___to_0x_hex_HexBytes_obj_dealloc, + .tp_traverse = (traverseproc)main___to_0x_hex_HexBytes_obj_traverse, + .tp_clear = (inquiry)main___to_0x_hex_HexBytes_obj_clear, + .tp_methods = main___to_0x_hex_HexBytes_obj_methods, + .tp_call = PyVectorcall_Call, + .tp_descr_get = CPyDunder___get__main___to_0x_hex_HexBytes_obj, + .tp_basicsize = sizeof(faster_hexbytes___main___to_0x_hex_HexBytes_objObject), + .tp_vectorcall_offset = offsetof(faster_hexbytes___main___to_0x_hex_HexBytes_objObject, vectorcall), + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | _Py_TPFLAGS_HAVE_VECTORCALL, + .tp_doc = PyDoc_STR("to_0x_hex_HexBytes_obj()\n--\n\n"), +}; +static PyTypeObject *CPyType_main___to_0x_hex_HexBytes_obj_template = &CPyType_main___to_0x_hex_HexBytes_obj_template_; + +PyObject *CPyDef_main_____mypyc__to_0x_hex_HexBytes_obj_setup(PyObject *cpy_r_type) +{ + PyTypeObject *type = (PyTypeObject*)cpy_r_type; + faster_hexbytes___main___to_0x_hex_HexBytes_objObject *self; + if (main___to_0x_hex_HexBytes_obj_free_instance != NULL) { + self = main___to_0x_hex_HexBytes_obj_free_instance; + main___to_0x_hex_HexBytes_obj_free_instance = NULL; + Py_SET_REFCNT(self, 1); + PyObject_GC_Track(self); + return (PyObject *)self; + } + self = (faster_hexbytes___main___to_0x_hex_HexBytes_objObject *)type->tp_alloc(type, 0); + if (self == NULL) + return NULL; + self->vtable = main___to_0x_hex_HexBytes_obj_vtable; + self->vectorcall = CPyPy_main___to_0x_hex_HexBytes_obj_____call__; + return (PyObject *)self; +} + +PyObject *CPyDef_main___to_0x_hex_HexBytes_obj(void) +{ + PyObject *self = CPyDef_main_____mypyc__to_0x_hex_HexBytes_obj_setup((PyObject *)CPyType_main___to_0x_hex_HexBytes_obj); + if (self == NULL) + return NULL; + return self; +} + + +static PyObject *CPyDunder___get__main_____reduce___3_HexBytes_obj(PyObject *self, PyObject *instance, PyObject *owner) { + instance = instance ? instance : Py_None; + return CPyDef_main_____reduce___3_HexBytes_obj_____get__(self, instance, owner); +} +PyObject *CPyDef_main_____mypyc___3__reduce___3_HexBytes_obj_setup(PyObject *cpy_r_type); +PyObject *CPyDef_main_____reduce___3_HexBytes_obj(void); + +static PyObject * +main_____reduce___3_HexBytes_obj_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + if (type != CPyType_main_____reduce___3_HexBytes_obj) { + PyErr_SetString(PyExc_TypeError, "interpreted classes cannot inherit from compiled"); + return NULL; + } + PyObject *self = CPyDef_main_____mypyc___3__reduce___3_HexBytes_obj_setup((PyObject*)type); + if (self == NULL) + return NULL; + return self; +} + +static int +main_____reduce___3_HexBytes_obj_traverse(faster_hexbytes___main_____reduce___3_HexBytes_objObject *self, visitproc visit, void *arg) +{ + return 0; +} + +static int +main_____reduce___3_HexBytes_obj_clear(faster_hexbytes___main_____reduce___3_HexBytes_objObject *self) +{ + return 0; +} + +static void +main_____reduce___3_HexBytes_obj_dealloc(faster_hexbytes___main_____reduce___3_HexBytes_objObject *self) +{ + PyObject_GC_UnTrack(self); + if (main_____reduce___3_HexBytes_obj_free_instance == NULL) { + main_____reduce___3_HexBytes_obj_free_instance = self; + return; + } + CPy_TRASHCAN_BEGIN(self, main_____reduce___3_HexBytes_obj_dealloc) + main_____reduce___3_HexBytes_obj_clear(self); + Py_TYPE(self)->tp_free((PyObject *)self); + CPy_TRASHCAN_END(self) +} + +static CPyVTableItem main_____reduce___3_HexBytes_obj_vtable[2]; +static bool +CPyDef_main_____reduce___3_HexBytes_obj_trait_vtable_setup(void) +{ + CPyVTableItem main_____reduce___3_HexBytes_obj_vtable_scratch[] = { + (CPyVTableItem)CPyDef_main_____reduce___3_HexBytes_obj_____call__, + (CPyVTableItem)CPyDef_main_____reduce___3_HexBytes_obj_____get__, + }; + memcpy(main_____reduce___3_HexBytes_obj_vtable, main_____reduce___3_HexBytes_obj_vtable_scratch, sizeof(main_____reduce___3_HexBytes_obj_vtable)); + return 1; +} + +static PyMethodDef main_____reduce___3_HexBytes_obj_methods[] = { + {"__call__", + (PyCFunction)CPyPy_main_____reduce___3_HexBytes_obj_____call__, + METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__call__($self)\n--\n\n")}, + {"__get__", + (PyCFunction)CPyPy_main_____reduce___3_HexBytes_obj_____get__, + METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__get__($instance, owner)\n--\n\n")}, + {"__setstate__", (PyCFunction)CPyPickle_SetState, METH_O, NULL}, + {"__getstate__", (PyCFunction)CPyPickle_GetState, METH_NOARGS, NULL}, + {NULL} /* Sentinel */ +}; + +static PyTypeObject CPyType_main_____reduce___3_HexBytes_obj_template_ = { + PyVarObject_HEAD_INIT(NULL, 0) + .tp_name = "__reduce___HexBytes_obj", + .tp_new = main_____reduce___3_HexBytes_obj_new, + .tp_dealloc = (destructor)main_____reduce___3_HexBytes_obj_dealloc, + .tp_traverse = (traverseproc)main_____reduce___3_HexBytes_obj_traverse, + .tp_clear = (inquiry)main_____reduce___3_HexBytes_obj_clear, + .tp_methods = main_____reduce___3_HexBytes_obj_methods, + .tp_call = PyVectorcall_Call, + .tp_descr_get = CPyDunder___get__main_____reduce___3_HexBytes_obj, + .tp_basicsize = sizeof(faster_hexbytes___main_____reduce___3_HexBytes_objObject), + .tp_vectorcall_offset = offsetof(faster_hexbytes___main_____reduce___3_HexBytes_objObject, vectorcall), + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | _Py_TPFLAGS_HAVE_VECTORCALL, + .tp_doc = PyDoc_STR("__reduce___HexBytes_obj()\n--\n\n"), +}; +static PyTypeObject *CPyType_main_____reduce___3_HexBytes_obj_template = &CPyType_main_____reduce___3_HexBytes_obj_template_; + +PyObject *CPyDef_main_____mypyc___3__reduce___3_HexBytes_obj_setup(PyObject *cpy_r_type) +{ + PyTypeObject *type = (PyTypeObject*)cpy_r_type; + faster_hexbytes___main_____reduce___3_HexBytes_objObject *self; + if (main_____reduce___3_HexBytes_obj_free_instance != NULL) { + self = main_____reduce___3_HexBytes_obj_free_instance; + main_____reduce___3_HexBytes_obj_free_instance = NULL; + Py_SET_REFCNT(self, 1); + PyObject_GC_Track(self); + return (PyObject *)self; + } + self = (faster_hexbytes___main_____reduce___3_HexBytes_objObject *)type->tp_alloc(type, 0); + if (self == NULL) + return NULL; + self->vtable = main_____reduce___3_HexBytes_obj_vtable; + self->vectorcall = CPyPy_main_____reduce___3_HexBytes_obj_____call__; + return (PyObject *)self; +} + +PyObject *CPyDef_main_____reduce___3_HexBytes_obj(void) +{ + PyObject *self = CPyDef_main_____mypyc___3__reduce___3_HexBytes_obj_setup((PyObject *)CPyType_main_____reduce___3_HexBytes_obj); + if (self == NULL) + return NULL; + return self; +} + +static PyMethodDef mainmodule_methods[] = { + {NULL, NULL, 0, NULL} +}; + +int CPyExec_faster_hexbytes___main(PyObject *module) +{ + PyObject* modname = NULL; + modname = PyObject_GetAttrString((PyObject *)CPyModule_faster_hexbytes___main__internal, "__name__"); + CPyStatic_main___globals = PyModule_GetDict(CPyModule_faster_hexbytes___main__internal); + if (unlikely(CPyStatic_main___globals == NULL)) + goto fail; + CPyType_main_____new___3_HexBytes_obj = (PyTypeObject *)CPyType_FromTemplate((PyObject *)CPyType_main_____new___3_HexBytes_obj_template, NULL, modname); + if (unlikely(!CPyType_main_____new___3_HexBytes_obj)) + goto fail; + CPyType_main_____getitem___3_HexBytes_obj = (PyTypeObject *)CPyType_FromTemplate((PyObject *)CPyType_main_____getitem___3_HexBytes_obj_template, NULL, modname); + if (unlikely(!CPyType_main_____getitem___3_HexBytes_obj)) + goto fail; + CPyType_main_____repr___3_HexBytes_obj = (PyTypeObject *)CPyType_FromTemplate((PyObject *)CPyType_main_____repr___3_HexBytes_obj_template, NULL, modname); + if (unlikely(!CPyType_main_____repr___3_HexBytes_obj)) + goto fail; + CPyType_main___to_0x_hex_HexBytes_obj = (PyTypeObject *)CPyType_FromTemplate((PyObject *)CPyType_main___to_0x_hex_HexBytes_obj_template, NULL, modname); + if (unlikely(!CPyType_main___to_0x_hex_HexBytes_obj)) + goto fail; + CPyType_main_____reduce___3_HexBytes_obj = (PyTypeObject *)CPyType_FromTemplate((PyObject *)CPyType_main_____reduce___3_HexBytes_obj_template, NULL, modname); + if (unlikely(!CPyType_main_____reduce___3_HexBytes_obj)) + goto fail; + if (CPyGlobalsInit() < 0) + goto fail; + char result = CPyDef_main_____top_level__(); + if (result == 2) + goto fail; + Py_DECREF(modname); + return 0; + fail: + Py_CLEAR(CPyModule_faster_hexbytes___main__internal); + Py_CLEAR(modname); + CPy_XDECREF(CPyStatic_main____bytes_new); + CPyStatic_main____bytes_new = NULL; + Py_CLEAR(CPyType_main___HexBytes); + Py_CLEAR(CPyType_main____HexBytesSubclass1); + Py_CLEAR(CPyType_main____HexBytesSubclass2); + Py_CLEAR(CPyType_main____HexBytesSubclass3); + Py_CLEAR(CPyType_main_____new___3_HexBytes_obj); + Py_CLEAR(CPyType_main_____getitem___3_HexBytes_obj); + Py_CLEAR(CPyType_main_____repr___3_HexBytes_obj); + Py_CLEAR(CPyType_main___to_0x_hex_HexBytes_obj); + Py_CLEAR(CPyType_main_____reduce___3_HexBytes_obj); + return -1; +} +static struct PyModuleDef mainmodule = { + PyModuleDef_HEAD_INIT, + "faster_hexbytes.main", + NULL, /* docstring */ + 0, /* size of per-interpreter state of the module */ + mainmodule_methods, + NULL, +}; + +PyObject *CPyInit_faster_hexbytes___main(void) +{ + if (CPyModule_faster_hexbytes___main__internal) { + Py_INCREF(CPyModule_faster_hexbytes___main__internal); + return CPyModule_faster_hexbytes___main__internal; + } + CPyModule_faster_hexbytes___main__internal = PyModule_Create(&mainmodule); + if (unlikely(CPyModule_faster_hexbytes___main__internal == NULL)) + goto fail; + if (CPyExec_faster_hexbytes___main(CPyModule_faster_hexbytes___main__internal) != 0) + goto fail; + return CPyModule_faster_hexbytes___main__internal; + fail: + return NULL; +} + +PyObject *CPyDef_main_____new___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner) { + PyObject *cpy_r_r0; + char cpy_r_r1; + PyObject *cpy_r_r2; + PyObject *cpy_r_r3; + cpy_r_r0 = (PyObject *)&_Py_NoneStruct; + cpy_r_r1 = cpy_r_instance == cpy_r_r0; + if (!cpy_r_r1) goto CPyL2; + CPy_INCREF(cpy_r___mypyc_self__); + return cpy_r___mypyc_self__; +CPyL2: ; + cpy_r_r2 = PyMethod_New(cpy_r___mypyc_self__, cpy_r_instance); + if (cpy_r_r2 == NULL) goto CPyL4; + return cpy_r_r2; +CPyL4: ; + cpy_r_r3 = NULL; + return cpy_r_r3; +} + +PyObject *CPyPy_main_____new___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + PyObject *obj___mypyc_self__ = self; + static const char * const kwlist[] = {"instance", "owner", 0}; + static CPyArg_Parser parser = {"OO:__get__", kwlist, 0}; + PyObject *obj_instance; + PyObject *obj_owner; + if (!CPyArg_ParseStackAndKeywordsSimple(args, nargs, kwnames, &parser, &obj_instance, &obj_owner)) { + return NULL; + } + PyObject *arg___mypyc_self__ = obj___mypyc_self__; + PyObject *arg_instance = obj_instance; + PyObject *arg_owner = obj_owner; + PyObject *retval = CPyDef_main_____new___3_HexBytes_obj_____get__(arg___mypyc_self__, arg_instance, arg_owner); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/main.py", "__get__", -1, CPyStatic_main___globals); + return NULL; +} + +PyObject *CPyDef_main_____new___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_cls, PyObject *cpy_r_val) { + PyObject *cpy_r_r0; + PyObject *cpy_r_r1; + char cpy_r_r2; + PyObject **cpy_r_r4; + PyObject *cpy_r_r5; + PyObject *cpy_r_r6; + PyObject *cpy_r_r7; + cpy_r_r0 = CPyDef__utils___to_bytes(cpy_r_val); + if (unlikely(cpy_r_r0 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__new__", 50, CPyStatic_main___globals); + goto CPyL7; + } + cpy_r_r1 = CPyStatic_main____bytes_new; + if (unlikely(cpy_r_r1 == NULL)) { + goto CPyL8; + } else + goto CPyL4; +CPyL2: ; + PyErr_SetString(PyExc_NameError, "value for final name \"_bytes_new\" was not set"); + cpy_r_r2 = 0; + if (unlikely(!cpy_r_r2)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__new__", 51, CPyStatic_main___globals); + goto CPyL7; + } + CPy_Unreachable(); +CPyL4: ; + PyObject *cpy_r_r3[2] = {cpy_r_cls, cpy_r_r0}; + cpy_r_r4 = (PyObject **)&cpy_r_r3; + cpy_r_r5 = PyObject_Vectorcall(cpy_r_r1, cpy_r_r4, 2, 0); + if (unlikely(cpy_r_r5 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__new__", 51, CPyStatic_main___globals); + goto CPyL9; + } + CPy_DECREF(cpy_r_r0); + if (likely(PyObject_TypeCheck(cpy_r_r5, CPyType_main___HexBytes))) + cpy_r_r6 = cpy_r_r5; + else { + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__new__", 51, CPyStatic_main___globals, "faster_hexbytes.main.HexBytes", cpy_r_r5); + goto CPyL7; + } + return cpy_r_r6; +CPyL7: ; + cpy_r_r7 = NULL; + return cpy_r_r7; +CPyL8: ; + CPy_DecRef(cpy_r_r0); + goto CPyL2; +CPyL9: ; + CPy_DecRef(cpy_r_r0); + goto CPyL7; +} + +PyObject *CPyPy_main_____new___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + PyObject *obj___mypyc_self__ = self; + static const char * const kwlist[] = {"cls", "val", 0}; + static CPyArg_Parser parser = {"OO:__call__", kwlist, 0}; + PyObject *obj_cls; + PyObject *obj_val; + if (!CPyArg_ParseStackAndKeywordsSimple(args, PyVectorcall_NARGS(nargs), kwnames, &parser, &obj_cls, &obj_val)) { + return NULL; + } + PyObject *arg___mypyc_self__ = obj___mypyc_self__; + PyObject *arg_cls = obj_cls; + PyObject *arg_val; + if (PyBytes_Check(obj_val) || PyByteArray_Check(obj_val)) + arg_val = obj_val; + else { + arg_val = NULL; + } + if (arg_val != NULL) goto __LL4; + if (PyUnicode_Check(obj_val)) + arg_val = obj_val; + else { + arg_val = NULL; + } + if (arg_val != NULL) goto __LL4; + if (PyBool_Check(obj_val)) + arg_val = obj_val; + else { + arg_val = NULL; + } + if (arg_val != NULL) goto __LL4; + arg_val = obj_val; + if (arg_val != NULL) goto __LL4; + if (PyLong_Check(obj_val)) + arg_val = obj_val; + else { + arg_val = NULL; + } + if (arg_val != NULL) goto __LL4; + CPy_TypeError("union[bytes, str, bool, object, int]", obj_val); + goto fail; +__LL4: ; + PyObject *retval = CPyDef_main_____new___3_HexBytes_obj_____call__(arg___mypyc_self__, arg_cls, arg_val); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/main.py", "__new__", 49, CPyStatic_main___globals); + return NULL; +} + +PyObject *CPyDef_main_____getitem___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner) { + PyObject *cpy_r_r0; + char cpy_r_r1; + PyObject *cpy_r_r2; + PyObject *cpy_r_r3; + cpy_r_r0 = (PyObject *)&_Py_NoneStruct; + cpy_r_r1 = cpy_r_instance == cpy_r_r0; + if (!cpy_r_r1) goto CPyL2; + CPy_INCREF(cpy_r___mypyc_self__); + return cpy_r___mypyc_self__; +CPyL2: ; + cpy_r_r2 = PyMethod_New(cpy_r___mypyc_self__, cpy_r_instance); + if (cpy_r_r2 == NULL) goto CPyL4; + return cpy_r_r2; +CPyL4: ; + cpy_r_r3 = NULL; + return cpy_r_r3; +} + +PyObject *CPyPy_main_____getitem___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + PyObject *obj___mypyc_self__ = self; + static const char * const kwlist[] = {"instance", "owner", 0}; + static CPyArg_Parser parser = {"OO:__get__", kwlist, 0}; + PyObject *obj_instance; + PyObject *obj_owner; + if (!CPyArg_ParseStackAndKeywordsSimple(args, nargs, kwnames, &parser, &obj_instance, &obj_owner)) { + return NULL; + } + PyObject *arg___mypyc_self__ = obj___mypyc_self__; + PyObject *arg_instance = obj_instance; + PyObject *arg_owner = obj_owner; + PyObject *retval = CPyDef_main_____getitem___3_HexBytes_obj_____get__(arg___mypyc_self__, arg_instance, arg_owner); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/main.py", "__get__", -1, CPyStatic_main___globals); + return NULL; +} + +PyObject *CPyDef_main_____getitem___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self, PyObject *cpy_r_key) { + PyObject *cpy_r_r0; + PyObject *cpy_r_r1; + PyObject **cpy_r_r3; + PyObject *cpy_r_r4; + PyObject *cpy_r_r5; + char cpy_r_r6; + CPyTagged cpy_r_r7; + PyObject *cpy_r_r8; + PyObject *cpy_r_r9; + PyObject *cpy_r_r10; + char cpy_r_r11; + PyObject *cpy_r_r12; + PyObject *cpy_r_r13; + PyObject **cpy_r_r15; + PyObject *cpy_r_r16; + PyObject *cpy_r_r17; + PyObject *cpy_r_r18; + PyObject **cpy_r_r20; + PyObject *cpy_r_r21; + PyObject *cpy_r_r22; + PyObject *cpy_r_r23; + cpy_r_r0 = (PyObject *)&PyBytes_Type; + cpy_r_r1 = CPyStatics[37]; /* '__getitem__' */ + PyObject *cpy_r_r2[3] = {cpy_r_r0, cpy_r_self, cpy_r_key}; + cpy_r_r3 = (PyObject **)&cpy_r_r2; + cpy_r_r4 = PyObject_VectorcallMethod(cpy_r_r1, cpy_r_r3, 9223372036854775811ULL, 0); + if (unlikely(cpy_r_r4 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 64, CPyStatic_main___globals); + goto CPyL14; + } + if (PyLong_Check(cpy_r_r4)) + cpy_r_r5 = cpy_r_r4; + else { + cpy_r_r5 = NULL; + } + if (cpy_r_r5 != NULL) goto __LL5; + if (PyBytes_Check(cpy_r_r4) || PyByteArray_Check(cpy_r_r4)) + cpy_r_r5 = cpy_r_r4; + else { + cpy_r_r5 = NULL; + } + if (cpy_r_r5 != NULL) goto __LL5; + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__getitem__", 64, CPyStatic_main___globals, "union[int, bytes]", cpy_r_r4); + goto CPyL14; +__LL5: ; + cpy_r_r6 = PyLong_Check(cpy_r_r5); + if (!cpy_r_r6) goto CPyL5; + if (likely(PyLong_Check(cpy_r_r5))) + cpy_r_r7 = CPyTagged_FromObject(cpy_r_r5); + else { + CPy_TypeError("int", cpy_r_r5); cpy_r_r7 = CPY_INT_TAG; + } + CPy_DECREF(cpy_r_r5); + if (unlikely(cpy_r_r7 == CPY_INT_TAG)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 66, CPyStatic_main___globals); + goto CPyL14; + } + cpy_r_r8 = CPyTagged_StealAsObject(cpy_r_r7); + return cpy_r_r8; +CPyL5: ; + cpy_r_r9 = CPy_TYPE(cpy_r_self); + cpy_r_r10 = (PyObject *)CPyType_main___HexBytes; + cpy_r_r11 = cpy_r_r9 == cpy_r_r10; + if (cpy_r_r11) { + goto CPyL15; + } else + goto CPyL10; +CPyL6: ; + if (likely(PyBytes_Check(cpy_r_r5) || PyByteArray_Check(cpy_r_r5))) + cpy_r_r12 = cpy_r_r5; + else { + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__getitem__", 70, CPyStatic_main___globals, "bytes", cpy_r_r5); + goto CPyL14; + } + cpy_r_r13 = (PyObject *)CPyType_main___HexBytes; + PyObject *cpy_r_r14[1] = {cpy_r_r12}; + cpy_r_r15 = (PyObject **)&cpy_r_r14; + cpy_r_r16 = PyObject_Vectorcall(cpy_r_r13, cpy_r_r15, 1, 0); + if (unlikely(cpy_r_r16 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 70, CPyStatic_main___globals); + goto CPyL16; + } + CPy_DECREF(cpy_r_r12); + if (likely(PyObject_TypeCheck(cpy_r_r16, CPyType_main___HexBytes))) + cpy_r_r17 = cpy_r_r16; + else { + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__getitem__", 70, CPyStatic_main___globals, "faster_hexbytes.main.HexBytes", cpy_r_r16); + goto CPyL14; + } + return cpy_r_r17; +CPyL10: ; + if (likely(PyBytes_Check(cpy_r_r5) || PyByteArray_Check(cpy_r_r5))) + cpy_r_r18 = cpy_r_r5; + else { + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__getitem__", 71, CPyStatic_main___globals, "bytes", cpy_r_r5); + goto CPyL17; + } + PyObject *cpy_r_r19[1] = {cpy_r_r18}; + cpy_r_r20 = (PyObject **)&cpy_r_r19; + cpy_r_r21 = PyObject_Vectorcall(cpy_r_r9, cpy_r_r20, 1, 0); + CPy_DECREF(cpy_r_r9); + if (unlikely(cpy_r_r21 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 71, CPyStatic_main___globals); + goto CPyL18; + } + CPy_DECREF(cpy_r_r18); + if (likely(PyObject_TypeCheck(cpy_r_r21, CPyType_main___HexBytes))) + cpy_r_r22 = cpy_r_r21; + else { + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__getitem__", 71, CPyStatic_main___globals, "faster_hexbytes.main.HexBytes", cpy_r_r21); + goto CPyL14; + } + return cpy_r_r22; +CPyL14: ; + cpy_r_r23 = NULL; + return cpy_r_r23; +CPyL15: ; + CPy_DECREF(cpy_r_r9); + goto CPyL6; +CPyL16: ; + CPy_DecRef(cpy_r_r12); + goto CPyL14; +CPyL17: ; + CPy_DecRef(cpy_r_r9); + goto CPyL14; +CPyL18: ; + CPy_DecRef(cpy_r_r18); + goto CPyL14; +} + +PyObject *CPyPy_main_____getitem___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + PyObject *obj___mypyc_self__ = self; + static const char * const kwlist[] = {"self", "key", 0}; + static CPyArg_Parser parser = {"OO:__call__", kwlist, 0}; + PyObject *obj_self; + PyObject *obj_key; + if (!CPyArg_ParseStackAndKeywordsSimple(args, PyVectorcall_NARGS(nargs), kwnames, &parser, &obj_self, &obj_key)) { + return NULL; + } + PyObject *arg___mypyc_self__ = obj___mypyc_self__; + PyObject *arg_self; + if (likely(PyObject_TypeCheck(obj_self, CPyType_main___HexBytes))) + arg_self = obj_self; + else { + CPy_TypeError("faster_hexbytes.main.HexBytes", obj_self); + goto fail; + } + PyObject *arg_key = obj_key; + PyObject *retval = CPyDef_main_____getitem___3_HexBytes_obj_____call__(arg___mypyc_self__, arg_self, arg_key); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 61, CPyStatic_main___globals); + return NULL; +} + +PyObject *CPyDef_main_____repr___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner) { + PyObject *cpy_r_r0; + char cpy_r_r1; + PyObject *cpy_r_r2; + PyObject *cpy_r_r3; + cpy_r_r0 = (PyObject *)&_Py_NoneStruct; + cpy_r_r1 = cpy_r_instance == cpy_r_r0; + if (!cpy_r_r1) goto CPyL2; + CPy_INCREF(cpy_r___mypyc_self__); + return cpy_r___mypyc_self__; +CPyL2: ; + cpy_r_r2 = PyMethod_New(cpy_r___mypyc_self__, cpy_r_instance); + if (cpy_r_r2 == NULL) goto CPyL4; + return cpy_r_r2; +CPyL4: ; + cpy_r_r3 = NULL; + return cpy_r_r3; +} + +PyObject *CPyPy_main_____repr___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + PyObject *obj___mypyc_self__ = self; + static const char * const kwlist[] = {"instance", "owner", 0}; + static CPyArg_Parser parser = {"OO:__get__", kwlist, 0}; + PyObject *obj_instance; + PyObject *obj_owner; + if (!CPyArg_ParseStackAndKeywordsSimple(args, nargs, kwnames, &parser, &obj_instance, &obj_owner)) { + return NULL; + } + PyObject *arg___mypyc_self__ = obj___mypyc_self__; + PyObject *arg_instance = obj_instance; + PyObject *arg_owner = obj_owner; + PyObject *retval = CPyDef_main_____repr___3_HexBytes_obj_____get__(arg___mypyc_self__, arg_instance, arg_owner); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/main.py", "__get__", -1, CPyStatic_main___globals); + return NULL; +} + +PyObject *CPyDef_main_____repr___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self) { + PyObject *cpy_r_r0; + PyObject *cpy_r_r1; + PyObject **cpy_r_r3; + PyObject *cpy_r_r4; + PyObject *cpy_r_r5; + PyObject *cpy_r_r6; + PyObject *cpy_r_r7; + PyObject *cpy_r_r8; + cpy_r_r0 = CPyStatics[38]; /* "HexBytes('0x" */ + cpy_r_r1 = CPyStatics[15]; /* 'hex' */ + PyObject *cpy_r_r2[1] = {cpy_r_self}; + cpy_r_r3 = (PyObject **)&cpy_r_r2; + cpy_r_r4 = PyObject_VectorcallMethod(cpy_r_r1, cpy_r_r3, 9223372036854775809ULL, 0); + if (unlikely(cpy_r_r4 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 74, CPyStatic_main___globals); + goto CPyL4; + } + if (likely(PyUnicode_Check(cpy_r_r4))) + cpy_r_r5 = cpy_r_r4; + else { + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__repr__", 74, CPyStatic_main___globals, "str", cpy_r_r4); + goto CPyL4; + } + cpy_r_r6 = CPyStatics[39]; /* "')" */ + cpy_r_r7 = CPyStr_Build(3, cpy_r_r0, cpy_r_r5, cpy_r_r6); + CPy_DECREF(cpy_r_r5); + if (unlikely(cpy_r_r7 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 74, CPyStatic_main___globals); + goto CPyL4; + } + return cpy_r_r7; +CPyL4: ; + cpy_r_r8 = NULL; + return cpy_r_r8; +} + +PyObject *CPyPy_main_____repr___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + PyObject *obj___mypyc_self__ = self; + static const char * const kwlist[] = {"self", 0}; + static CPyArg_Parser parser = {"O:__call__", kwlist, 0}; + PyObject *obj_self; + if (!CPyArg_ParseStackAndKeywordsOneArg(args, PyVectorcall_NARGS(nargs), kwnames, &parser, &obj_self)) { + return NULL; + } + PyObject *arg___mypyc_self__ = obj___mypyc_self__; + PyObject *arg_self; + if (likely(PyObject_TypeCheck(obj_self, CPyType_main___HexBytes))) + arg_self = obj_self; + else { + CPy_TypeError("faster_hexbytes.main.HexBytes", obj_self); + goto fail; + } + PyObject *retval = CPyDef_main_____repr___3_HexBytes_obj_____call__(arg___mypyc_self__, arg_self); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 73, CPyStatic_main___globals); + return NULL; +} + +PyObject *CPyDef_main___to_0x_hex_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner) { + PyObject *cpy_r_r0; + char cpy_r_r1; + PyObject *cpy_r_r2; + PyObject *cpy_r_r3; + cpy_r_r0 = (PyObject *)&_Py_NoneStruct; + cpy_r_r1 = cpy_r_instance == cpy_r_r0; + if (!cpy_r_r1) goto CPyL2; + CPy_INCREF(cpy_r___mypyc_self__); + return cpy_r___mypyc_self__; +CPyL2: ; + cpy_r_r2 = PyMethod_New(cpy_r___mypyc_self__, cpy_r_instance); + if (cpy_r_r2 == NULL) goto CPyL4; + return cpy_r_r2; +CPyL4: ; + cpy_r_r3 = NULL; + return cpy_r_r3; +} + +PyObject *CPyPy_main___to_0x_hex_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + PyObject *obj___mypyc_self__ = self; + static const char * const kwlist[] = {"instance", "owner", 0}; + static CPyArg_Parser parser = {"OO:__get__", kwlist, 0}; + PyObject *obj_instance; + PyObject *obj_owner; + if (!CPyArg_ParseStackAndKeywordsSimple(args, nargs, kwnames, &parser, &obj_instance, &obj_owner)) { + return NULL; + } + PyObject *arg___mypyc_self__ = obj___mypyc_self__; + PyObject *arg_instance = obj_instance; + PyObject *arg_owner = obj_owner; + PyObject *retval = CPyDef_main___to_0x_hex_HexBytes_obj_____get__(arg___mypyc_self__, arg_instance, arg_owner); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/main.py", "__get__", -1, CPyStatic_main___globals); + return NULL; +} + +PyObject *CPyDef_main___to_0x_hex_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self) { + PyObject *cpy_r_r0; + PyObject *cpy_r_r1; + PyObject **cpy_r_r3; + PyObject *cpy_r_r4; + PyObject *cpy_r_r5; + PyObject *cpy_r_r6; + PyObject *cpy_r_r7; + cpy_r_r0 = CPyStatics[24]; /* '0x' */ + cpy_r_r1 = CPyStatics[15]; /* 'hex' */ + PyObject *cpy_r_r2[1] = {cpy_r_self}; + cpy_r_r3 = (PyObject **)&cpy_r_r2; + cpy_r_r4 = PyObject_VectorcallMethod(cpy_r_r1, cpy_r_r3, 9223372036854775809ULL, 0); + if (unlikely(cpy_r_r4 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "to_0x_hex", 80, CPyStatic_main___globals); + goto CPyL4; + } + if (likely(PyUnicode_Check(cpy_r_r4))) + cpy_r_r5 = cpy_r_r4; + else { + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "to_0x_hex", 80, CPyStatic_main___globals, "str", cpy_r_r4); + goto CPyL4; + } + cpy_r_r6 = CPyStr_Build(2, cpy_r_r0, cpy_r_r5); + CPy_DECREF(cpy_r_r5); + if (unlikely(cpy_r_r6 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "to_0x_hex", 80, CPyStatic_main___globals); + goto CPyL4; + } + return cpy_r_r6; +CPyL4: ; + cpy_r_r7 = NULL; + return cpy_r_r7; +} + +PyObject *CPyPy_main___to_0x_hex_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + PyObject *obj___mypyc_self__ = self; + static const char * const kwlist[] = {"self", 0}; + static CPyArg_Parser parser = {"O:__call__", kwlist, 0}; + PyObject *obj_self; + if (!CPyArg_ParseStackAndKeywordsOneArg(args, PyVectorcall_NARGS(nargs), kwnames, &parser, &obj_self)) { + return NULL; + } + PyObject *arg___mypyc_self__ = obj___mypyc_self__; + PyObject *arg_self; + if (likely(PyObject_TypeCheck(obj_self, CPyType_main___HexBytes))) + arg_self = obj_self; + else { + CPy_TypeError("faster_hexbytes.main.HexBytes", obj_self); + goto fail; + } + PyObject *retval = CPyDef_main___to_0x_hex_HexBytes_obj_____call__(arg___mypyc_self__, arg_self); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/main.py", "to_0x_hex", 76, CPyStatic_main___globals); + return NULL; +} + +PyObject *CPyDef_main_____reduce___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner) { + PyObject *cpy_r_r0; + char cpy_r_r1; + PyObject *cpy_r_r2; + PyObject *cpy_r_r3; + cpy_r_r0 = (PyObject *)&_Py_NoneStruct; + cpy_r_r1 = cpy_r_instance == cpy_r_r0; + if (!cpy_r_r1) goto CPyL2; + CPy_INCREF(cpy_r___mypyc_self__); + return cpy_r___mypyc_self__; +CPyL2: ; + cpy_r_r2 = PyMethod_New(cpy_r___mypyc_self__, cpy_r_instance); + if (cpy_r_r2 == NULL) goto CPyL4; + return cpy_r_r2; +CPyL4: ; + cpy_r_r3 = NULL; + return cpy_r_r3; +} + +PyObject *CPyPy_main_____reduce___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + PyObject *obj___mypyc_self__ = self; + static const char * const kwlist[] = {"instance", "owner", 0}; + static CPyArg_Parser parser = {"OO:__get__", kwlist, 0}; + PyObject *obj_instance; + PyObject *obj_owner; + if (!CPyArg_ParseStackAndKeywordsSimple(args, nargs, kwnames, &parser, &obj_instance, &obj_owner)) { + return NULL; + } + PyObject *arg___mypyc_self__ = obj___mypyc_self__; + PyObject *arg_instance = obj_instance; + PyObject *arg_owner = obj_owner; + PyObject *retval = CPyDef_main_____reduce___3_HexBytes_obj_____get__(arg___mypyc_self__, arg_instance, arg_owner); + return retval; +fail: ; + CPy_AddTraceback("faster_hexbytes/main.py", "__get__", -1, CPyStatic_main___globals); + return NULL; +} + +tuple_T2OT2OO CPyDef_main_____reduce___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self) { + PyObject *cpy_r_r0; + char cpy_r_r1; + PyObject *cpy_r_r2; + PyObject *cpy_r_r3; + PyObject **cpy_r_r5; + PyObject *cpy_r_r6; + PyObject *cpy_r_r7; + tuple_T2OO cpy_r_r8; + tuple_T2OT2OO cpy_r_r9; + tuple_T2OT2OO cpy_r_r10; + cpy_r_r0 = CPyStatic_main____bytes_new; + if (likely(cpy_r_r0 != NULL)) goto CPyL3; + PyErr_SetString(PyExc_NameError, "value for final name \"_bytes_new\" was not set"); + cpy_r_r1 = 0; + if (unlikely(!cpy_r_r1)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__reduce__", 90, CPyStatic_main___globals); + goto CPyL6; + } + CPy_Unreachable(); +CPyL3: ; + cpy_r_r2 = CPy_TYPE(cpy_r_self); + cpy_r_r3 = (PyObject *)&PyBytes_Type; + PyObject *cpy_r_r4[1] = {cpy_r_self}; + cpy_r_r5 = (PyObject **)&cpy_r_r4; + cpy_r_r6 = PyObject_Vectorcall(cpy_r_r3, cpy_r_r5, 1, 0); + if (unlikely(cpy_r_r6 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "__reduce__", 90, CPyStatic_main___globals); + goto CPyL7; + } + if (likely(PyBytes_Check(cpy_r_r6) || PyByteArray_Check(cpy_r_r6))) + cpy_r_r7 = cpy_r_r6; + else { + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__reduce__", 90, CPyStatic_main___globals, "bytes", cpy_r_r6); + goto CPyL7; + } + cpy_r_r8.f0 = cpy_r_r2; + cpy_r_r8.f1 = cpy_r_r7; + CPy_INCREF(cpy_r_r0); + cpy_r_r9.f0 = cpy_r_r0; + cpy_r_r9.f1 = cpy_r_r8; + return cpy_r_r9; +CPyL6: ; + tuple_T2OT2OO __tmp6 = { NULL, (tuple_T2OO) { NULL, NULL } }; + cpy_r_r10 = __tmp6; + return cpy_r_r10; +CPyL7: ; + CPy_DecRef(cpy_r_r2); + goto CPyL6; +} + +PyObject *CPyPy_main_____reduce___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) { + PyObject *obj___mypyc_self__ = self; + static const char * const kwlist[] = {"self", 0}; + static CPyArg_Parser parser = {"O:__call__", kwlist, 0}; + PyObject *obj_self; + if (!CPyArg_ParseStackAndKeywordsOneArg(args, PyVectorcall_NARGS(nargs), kwnames, &parser, &obj_self)) { + return NULL; + } + PyObject *arg___mypyc_self__ = obj___mypyc_self__; + PyObject *arg_self; + if (likely(PyObject_TypeCheck(obj_self, CPyType_main___HexBytes))) + arg_self = obj_self; + else { + CPy_TypeError("faster_hexbytes.main.HexBytes", obj_self); + goto fail; + } + tuple_T2OT2OO retval = CPyDef_main_____reduce___3_HexBytes_obj_____call__(arg___mypyc_self__, arg_self); + if (retval.f0 == NULL) { + return NULL; + } + PyObject *retbox = PyTuple_New(2); + if (unlikely(retbox == NULL)) + CPyError_OutOfMemory(); + PyObject *__tmp7 = retval.f0; + PyTuple_SET_ITEM(retbox, 0, __tmp7); + PyObject *__tmp8 = PyTuple_New(2); + if (unlikely(__tmp8 == NULL)) + CPyError_OutOfMemory(); + PyObject *__tmp9 = retval.f1.f0; + PyTuple_SET_ITEM(__tmp8, 0, __tmp9); + PyObject *__tmp10 = retval.f1.f1; + PyTuple_SET_ITEM(__tmp8, 1, __tmp10); + PyTuple_SET_ITEM(retbox, 1, __tmp8); + return retbox; +fail: ; + CPy_AddTraceback("faster_hexbytes/main.py", "__reduce__", 82, CPyStatic_main___globals); + return NULL; +} + +char CPyDef_main_____top_level__(void) { + PyObject *cpy_r_r0; + PyObject *cpy_r_r1; + char cpy_r_r2; + PyObject *cpy_r_r3; + PyObject *cpy_r_r4; + PyObject *cpy_r_r5; + PyObject *cpy_r_r6; + PyObject *cpy_r_r7; + PyObject *cpy_r_r8; + PyObject **cpy_r_r9; + void *cpy_r_r11; + void *cpy_r_r13; + PyObject *cpy_r_r14; + PyObject *cpy_r_r15; + PyObject *cpy_r_r16; + PyObject *cpy_r_r17; + char cpy_r_r18; + PyObject *cpy_r_r19; + PyObject *cpy_r_r20; + PyObject *cpy_r_r21; + PyObject *cpy_r_r22; + PyObject *cpy_r_r23; + PyObject *cpy_r_r24; + PyObject *cpy_r_r25; + PyObject *cpy_r_r26; + PyObject *cpy_r_r27; + PyObject *cpy_r_r28; + PyObject *cpy_r_r29; + PyObject *cpy_r_r30; + PyObject *cpy_r_r31; + PyObject *cpy_r_r32; + PyObject *cpy_r_r33; + PyObject *cpy_r_r34; + PyObject *cpy_r_r35; + PyObject *cpy_r_r36; + PyObject *cpy_r_r37; + PyObject *cpy_r_r38; + PyObject *cpy_r_r39; + PyObject *cpy_r_r40; + PyObject *cpy_r_r41; + PyObject *cpy_r_r42; + PyObject *cpy_r_r43; + tuple_T6OOOOOO cpy_r_r44; + PyObject *cpy_r_r45; + PyObject *cpy_r_r46; + PyObject *cpy_r_r47; + PyObject *cpy_r_r48; + int32_t cpy_r_r49; + char cpy_r_r50; + PyObject *cpy_r_r51; + PyObject *cpy_r_r52; + PyObject *cpy_r_r53; + PyObject *cpy_r_r54; + PyObject *cpy_r_r55; + int32_t cpy_r_r56; + char cpy_r_r57; + PyObject *cpy_r_r58; + PyObject *cpy_r_r59; + PyObject *cpy_r_r60; + PyObject *cpy_r_r61; + PyObject *cpy_r_r62; + PyObject *cpy_r_r63; + PyObject *cpy_r_r64; + char cpy_r_r65; + PyObject *cpy_r_r66; + PyObject *cpy_r_r67; + PyObject *cpy_r_r68; + PyObject **cpy_r_r70; + PyObject *cpy_r_r71; + PyObject *cpy_r_r72; + PyObject *cpy_r_r73; + PyObject *cpy_r_r74; + PyObject *cpy_r_r75; + PyObject *cpy_r_r76; + PyObject *cpy_r_r77; + PyObject *cpy_r_r78; + PyObject *cpy_r_r79; + PyObject **cpy_r_r81; + PyObject *cpy_r_r82; + PyObject *cpy_r_r83; + int32_t cpy_r_r84; + char cpy_r_r85; + PyObject *cpy_r_r86; + PyObject *cpy_r_r87; + int32_t cpy_r_r88; + char cpy_r_r89; + PyObject *cpy_r_r90; + PyObject *cpy_r_r91; + int32_t cpy_r_r92; + char cpy_r_r93; + PyObject *cpy_r_r94; + PyObject *cpy_r_r95; + int32_t cpy_r_r96; + char cpy_r_r97; + PyObject *cpy_r_r98; + PyObject *cpy_r_r99; + int32_t cpy_r_r100; + char cpy_r_r101; + PyObject *cpy_r_r102; + PyObject *cpy_r_r103; + int32_t cpy_r_r104; + char cpy_r_r105; + PyObject *cpy_r_r106; + PyObject *cpy_r_r107; + int32_t cpy_r_r108; + char cpy_r_r109; + PyObject *cpy_r_r110; + PyObject *cpy_r_r111; + int32_t cpy_r_r112; + char cpy_r_r113; + PyObject **cpy_r_r115; + PyObject *cpy_r_r116; + PyObject *cpy_r_r117; + PyObject *cpy_r_r118; + PyObject *cpy_r_r119; + PyObject *cpy_r_r120; + PyObject *cpy_r_r121; + PyObject **cpy_r_r123; + PyObject *cpy_r_r124; + PyObject *cpy_r_r125; + PyObject **cpy_r_r127; + PyObject *cpy_r_r128; + PyObject *cpy_r_r129; + PyObject *cpy_r_r130; + int32_t cpy_r_r131; + char cpy_r_r132; + PyObject *cpy_r_r133; + PyObject *cpy_r_r134; + PyObject *cpy_r_r135; + PyObject *cpy_r_r136; + PyObject *cpy_r_r137; + PyObject *cpy_r_r138; + PyObject *cpy_r_r139; + PyObject *cpy_r_r140; + char cpy_r_r141; + PyObject *cpy_r_r142; + PyObject *cpy_r_r143; + PyObject *cpy_r_r144; + PyObject **cpy_r_r146; + PyObject *cpy_r_r147; + PyObject *cpy_r_r148; + PyObject *cpy_r_r149; + PyObject *cpy_r_r150; + PyObject *cpy_r_r151; + PyObject *cpy_r_r152; + PyObject *cpy_r_r153; + int32_t cpy_r_r154; + char cpy_r_r155; + PyObject *cpy_r_r156; + PyObject *cpy_r_r157; + int32_t cpy_r_r158; + char cpy_r_r159; + PyObject *cpy_r_r160; + PyObject *cpy_r_r161; + int32_t cpy_r_r162; + char cpy_r_r163; + PyObject **cpy_r_r165; + PyObject *cpy_r_r166; + PyObject *cpy_r_r167; + PyObject *cpy_r_r168; + PyObject *cpy_r_r169; + PyObject *cpy_r_r170; + PyObject **cpy_r_r172; + PyObject *cpy_r_r173; + PyObject *cpy_r_r174; + PyObject **cpy_r_r176; + PyObject *cpy_r_r177; + PyObject *cpy_r_r178; + PyObject *cpy_r_r179; + int32_t cpy_r_r180; + char cpy_r_r181; + PyObject *cpy_r_r182; + PyObject *cpy_r_r183; + PyObject *cpy_r_r184; + PyObject *cpy_r_r185; + PyObject *cpy_r_r186; + PyObject *cpy_r_r187; + PyObject *cpy_r_r188; + PyObject *cpy_r_r189; + char cpy_r_r190; + PyObject *cpy_r_r191; + PyObject *cpy_r_r192; + PyObject *cpy_r_r193; + PyObject **cpy_r_r195; + PyObject *cpy_r_r196; + PyObject *cpy_r_r197; + PyObject *cpy_r_r198; + PyObject *cpy_r_r199; + PyObject *cpy_r_r200; + PyObject *cpy_r_r201; + PyObject *cpy_r_r202; + int32_t cpy_r_r203; + char cpy_r_r204; + PyObject *cpy_r_r205; + PyObject *cpy_r_r206; + int32_t cpy_r_r207; + char cpy_r_r208; + PyObject *cpy_r_r209; + PyObject *cpy_r_r210; + int32_t cpy_r_r211; + char cpy_r_r212; + PyObject **cpy_r_r214; + PyObject *cpy_r_r215; + PyObject *cpy_r_r216; + PyObject *cpy_r_r217; + PyObject *cpy_r_r218; + PyObject *cpy_r_r219; + PyObject **cpy_r_r221; + PyObject *cpy_r_r222; + PyObject *cpy_r_r223; + PyObject **cpy_r_r225; + PyObject *cpy_r_r226; + PyObject *cpy_r_r227; + PyObject *cpy_r_r228; + int32_t cpy_r_r229; + char cpy_r_r230; + PyObject *cpy_r_r231; + PyObject *cpy_r_r232; + PyObject *cpy_r_r233; + PyObject *cpy_r_r234; + PyObject *cpy_r_r235; + PyObject *cpy_r_r236; + PyObject *cpy_r_r237; + PyObject *cpy_r_r238; + char cpy_r_r239; + PyObject *cpy_r_r240; + PyObject *cpy_r_r241; + PyObject *cpy_r_r242; + PyObject **cpy_r_r244; + PyObject *cpy_r_r245; + PyObject *cpy_r_r246; + PyObject *cpy_r_r247; + PyObject *cpy_r_r248; + PyObject *cpy_r_r249; + PyObject *cpy_r_r250; + PyObject *cpy_r_r251; + int32_t cpy_r_r252; + char cpy_r_r253; + PyObject *cpy_r_r254; + PyObject *cpy_r_r255; + int32_t cpy_r_r256; + char cpy_r_r257; + PyObject *cpy_r_r258; + PyObject *cpy_r_r259; + int32_t cpy_r_r260; + char cpy_r_r261; + PyObject **cpy_r_r263; + PyObject *cpy_r_r264; + PyObject *cpy_r_r265; + PyObject *cpy_r_r266; + PyObject *cpy_r_r267; + PyObject *cpy_r_r268; + PyObject **cpy_r_r270; + PyObject *cpy_r_r271; + PyObject *cpy_r_r272; + PyObject **cpy_r_r274; + PyObject *cpy_r_r275; + PyObject *cpy_r_r276; + PyObject *cpy_r_r277; + int32_t cpy_r_r278; + char cpy_r_r279; + PyObject *cpy_r_r280; + char cpy_r_r281; + cpy_r_r0 = CPyModule_builtins; + cpy_r_r1 = (PyObject *)&_Py_NoneStruct; + cpy_r_r2 = cpy_r_r0 != cpy_r_r1; + if (cpy_r_r2) goto CPyL3; + cpy_r_r3 = CPyStatics[3]; /* 'builtins' */ + cpy_r_r4 = PyImport_Import(cpy_r_r3); + if (unlikely(cpy_r_r4 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", -1, CPyStatic_main___globals); + goto CPyL105; + } + CPyModule_builtins = cpy_r_r4; + CPy_INCREF(CPyModule_builtins); + CPy_DECREF(cpy_r_r4); +CPyL3: ; + cpy_r_r5 = CPyStatics[79]; /* ('TYPE_CHECKING', 'Callable', 'Final', 'Tuple', 'Type', + 'Union', 'overload') */ + cpy_r_r6 = CPyStatics[35]; /* 'typing' */ + cpy_r_r7 = CPyStatic_main___globals; + cpy_r_r8 = CPyImport_ImportFromMany(cpy_r_r6, cpy_r_r5, cpy_r_r5, cpy_r_r7); + if (unlikely(cpy_r_r8 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 1, CPyStatic_main___globals); + goto CPyL105; + } + CPyModule_typing = cpy_r_r8; + CPy_INCREF(CPyModule_typing); + CPy_DECREF(cpy_r_r8); + cpy_r_r9 = (PyObject **)&CPyModule_hexbytes___main; + PyObject **cpy_r_r10[1] = {cpy_r_r9}; + cpy_r_r11 = (void *)&cpy_r_r10; + int64_t cpy_r_r12[1] = {14}; + cpy_r_r13 = (void *)&cpy_r_r12; + cpy_r_r14 = CPyStatics[81]; /* (('hexbytes.main', 'hexbytes.main', 'hexbytes'),) */ + cpy_r_r15 = CPyStatic_main___globals; + cpy_r_r16 = CPyStatics[46]; /* 'faster_hexbytes/main.py' */ + cpy_r_r17 = CPyStatics[32]; /* '' */ + cpy_r_r18 = CPyImport_ImportMany(cpy_r_r14, cpy_r_r11, cpy_r_r15, cpy_r_r16, cpy_r_r17, cpy_r_r13); + if (!cpy_r_r18) goto CPyL105; + cpy_r_r19 = CPyStatics[82]; /* ('mypyc_attr',) */ + cpy_r_r20 = CPyStatics[48]; /* 'mypy_extensions' */ + cpy_r_r21 = CPyStatic_main___globals; + cpy_r_r22 = CPyImport_ImportFromMany(cpy_r_r20, cpy_r_r19, cpy_r_r19, cpy_r_r21); + if (unlikely(cpy_r_r22 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 15, CPyStatic_main___globals); + goto CPyL105; + } + CPyModule_mypy_extensions = cpy_r_r22; + CPy_INCREF(CPyModule_mypy_extensions); + CPy_DECREF(cpy_r_r22); + cpy_r_r23 = CPyStatics[83]; /* ('Self',) */ + cpy_r_r24 = CPyStatics[50]; /* 'typing_extensions' */ + cpy_r_r25 = CPyStatic_main___globals; + cpy_r_r26 = CPyImport_ImportFromMany(cpy_r_r24, cpy_r_r23, cpy_r_r23, cpy_r_r25); + if (unlikely(cpy_r_r26 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 18, CPyStatic_main___globals); + goto CPyL105; + } + CPyModule_typing_extensions = cpy_r_r26; + CPy_INCREF(CPyModule_typing_extensions); + CPy_DECREF(cpy_r_r26); + cpy_r_r27 = CPyStatics[84]; /* ('to_bytes',) */ + cpy_r_r28 = CPyStatics[52]; /* 'faster_hexbytes._utils' */ + cpy_r_r29 = CPyStatic_main___globals; + cpy_r_r30 = CPyImport_ImportFromMany(cpy_r_r28, cpy_r_r27, cpy_r_r27, cpy_r_r29); + if (unlikely(cpy_r_r30 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 22, CPyStatic_main___globals); + goto CPyL105; + } + CPyModule_faster_hexbytes____utils = cpy_r_r30; + CPy_INCREF(CPyModule_faster_hexbytes____utils); + CPy_DECREF(cpy_r_r30); + cpy_r_r31 = CPyStatic_main___globals; + cpy_r_r32 = CPyStatics[34]; /* 'Union' */ + cpy_r_r33 = CPyDict_GetItem(cpy_r_r31, cpy_r_r32); + if (unlikely(cpy_r_r33 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 32, CPyStatic_main___globals); + goto CPyL105; + } + cpy_r_r34 = (PyObject *)&PyBytes_Type; + cpy_r_r35 = (PyObject *)&PyUnicode_Type; + cpy_r_r36 = (PyObject *)&PyBool_Type; + cpy_r_r37 = CPyModule_builtins; + cpy_r_r38 = CPyStatics[53]; /* 'bytearray' */ + cpy_r_r39 = CPyObject_GetAttr(cpy_r_r37, cpy_r_r38); + if (unlikely(cpy_r_r39 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 32, CPyStatic_main___globals); + goto CPyL106; + } + cpy_r_r40 = (PyObject *)&PyLong_Type; + cpy_r_r41 = CPyModule_builtins; + cpy_r_r42 = CPyStatics[16]; /* 'memoryview' */ + cpy_r_r43 = CPyObject_GetAttr(cpy_r_r41, cpy_r_r42); + if (unlikely(cpy_r_r43 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 32, CPyStatic_main___globals); + goto CPyL107; + } + CPy_INCREF(cpy_r_r34); + CPy_INCREF(cpy_r_r35); + CPy_INCREF(cpy_r_r36); + CPy_INCREF(cpy_r_r40); + cpy_r_r44.f0 = cpy_r_r34; + cpy_r_r44.f1 = cpy_r_r35; + cpy_r_r44.f2 = cpy_r_r36; + cpy_r_r44.f3 = cpy_r_r39; + cpy_r_r44.f4 = cpy_r_r40; + cpy_r_r44.f5 = cpy_r_r43; + cpy_r_r45 = PyTuple_New(6); + if (unlikely(cpy_r_r45 == NULL)) + CPyError_OutOfMemory(); + PyObject *__tmp11 = cpy_r_r44.f0; + PyTuple_SET_ITEM(cpy_r_r45, 0, __tmp11); + PyObject *__tmp12 = cpy_r_r44.f1; + PyTuple_SET_ITEM(cpy_r_r45, 1, __tmp12); + PyObject *__tmp13 = cpy_r_r44.f2; + PyTuple_SET_ITEM(cpy_r_r45, 2, __tmp13); + PyObject *__tmp14 = cpy_r_r44.f3; + PyTuple_SET_ITEM(cpy_r_r45, 3, __tmp14); + PyObject *__tmp15 = cpy_r_r44.f4; + PyTuple_SET_ITEM(cpy_r_r45, 4, __tmp15); + PyObject *__tmp16 = cpy_r_r44.f5; + PyTuple_SET_ITEM(cpy_r_r45, 5, __tmp16); + cpy_r_r46 = PyObject_GetItem(cpy_r_r33, cpy_r_r45); + CPy_DECREF(cpy_r_r33); + CPy_DECREF(cpy_r_r45); + if (unlikely(cpy_r_r46 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 32, CPyStatic_main___globals); + goto CPyL105; + } + cpy_r_r47 = CPyStatic_main___globals; + cpy_r_r48 = CPyStatics[54]; /* 'BytesLike' */ + cpy_r_r49 = CPyDict_SetItem(cpy_r_r47, cpy_r_r48, cpy_r_r46); + CPy_DECREF(cpy_r_r46); + cpy_r_r50 = cpy_r_r49 >= 0; + if (unlikely(!cpy_r_r50)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 32, CPyStatic_main___globals); + goto CPyL105; + } + cpy_r_r51 = (PyObject *)&PyBytes_Type; + cpy_r_r52 = CPyStatics[55]; /* '__new__' */ + cpy_r_r53 = CPyObject_GetAttr(cpy_r_r51, cpy_r_r52); + if (unlikely(cpy_r_r53 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 34, CPyStatic_main___globals); + goto CPyL105; + } + CPyStatic_main____bytes_new = cpy_r_r53; + CPy_INCREF(CPyStatic_main____bytes_new); + cpy_r_r54 = CPyStatic_main___globals; + cpy_r_r55 = CPyStatics[56]; /* '_bytes_new' */ + cpy_r_r56 = CPyDict_SetItem(cpy_r_r54, cpy_r_r55, cpy_r_r53); + CPy_DECREF(cpy_r_r53); + cpy_r_r57 = cpy_r_r56 >= 0; + if (unlikely(!cpy_r_r57)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 34, CPyStatic_main___globals); + goto CPyL105; + } + cpy_r_r58 = CPyModule_hexbytes___main; + cpy_r_r59 = CPyStatics[7]; /* 'HexBytes' */ + cpy_r_r60 = CPyObject_GetAttr(cpy_r_r58, cpy_r_r59); + if (unlikely(cpy_r_r60 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 38, CPyStatic_main___globals); + goto CPyL105; + } + cpy_r_r61 = PyTuple_Pack(1, cpy_r_r60); + CPy_DECREF(cpy_r_r60); + if (unlikely(cpy_r_r61 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 38, CPyStatic_main___globals); + goto CPyL105; + } + cpy_r_r62 = (PyObject *)&PyType_Type; + cpy_r_r63 = CPy_CalculateMetaclass(cpy_r_r62, cpy_r_r61); + if (unlikely(cpy_r_r63 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 38, CPyStatic_main___globals); + goto CPyL108; + } + cpy_r_r64 = CPyStatics[57]; /* '__prepare__' */ + cpy_r_r65 = PyObject_HasAttr(cpy_r_r63, cpy_r_r64); + if (!cpy_r_r65) goto CPyL24; + cpy_r_r66 = CPyStatics[7]; /* 'HexBytes' */ + cpy_r_r67 = CPyStatics[57]; /* '__prepare__' */ + cpy_r_r68 = CPyObject_GetAttr(cpy_r_r63, cpy_r_r67); + if (unlikely(cpy_r_r68 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 38, CPyStatic_main___globals); + goto CPyL108; + } + PyObject *cpy_r_r69[2] = {cpy_r_r66, cpy_r_r61}; + cpy_r_r70 = (PyObject **)&cpy_r_r69; + cpy_r_r71 = PyObject_Vectorcall(cpy_r_r68, cpy_r_r70, 2, 0); + CPy_DECREF(cpy_r_r68); + if (unlikely(cpy_r_r71 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 38, CPyStatic_main___globals); + goto CPyL108; + } + if (likely(PyDict_Check(cpy_r_r71))) + cpy_r_r72 = cpy_r_r71; + else { + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "", 38, CPyStatic_main___globals, "dict", cpy_r_r71); + goto CPyL108; + } + cpy_r_r73 = cpy_r_r72; + goto CPyL26; +CPyL24: ; + cpy_r_r74 = PyDict_New(); + if (unlikely(cpy_r_r74 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 38, CPyStatic_main___globals); + goto CPyL108; + } + cpy_r_r73 = cpy_r_r74; +CPyL26: ; + cpy_r_r75 = PyDict_New(); + if (unlikely(cpy_r_r75 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 38, CPyStatic_main___globals); + goto CPyL109; + } + cpy_r_r76 = CPyDef_main_____new___3_HexBytes_obj(); + if (unlikely(cpy_r_r76 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 49, CPyStatic_main___globals); + goto CPyL110; + } + cpy_r_r77 = CPyModule_builtins; + cpy_r_r78 = CPyStatics[58]; /* 'staticmethod' */ + cpy_r_r79 = CPyObject_GetAttr(cpy_r_r77, cpy_r_r78); + if (unlikely(cpy_r_r79 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 49, CPyStatic_main___globals); + goto CPyL111; + } + PyObject *cpy_r_r80[1] = {cpy_r_r76}; + cpy_r_r81 = (PyObject **)&cpy_r_r80; + cpy_r_r82 = PyObject_Vectorcall(cpy_r_r79, cpy_r_r81, 1, 0); + CPy_DECREF(cpy_r_r79); + if (unlikely(cpy_r_r82 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 49, CPyStatic_main___globals); + goto CPyL111; + } + CPy_DECREF_NO_IMM(cpy_r_r76); + cpy_r_r83 = CPyStatics[55]; /* '__new__' */ + cpy_r_r84 = CPyDict_SetItem(cpy_r_r73, cpy_r_r83, cpy_r_r82); + CPy_DECREF(cpy_r_r82); + cpy_r_r85 = cpy_r_r84 >= 0; + if (unlikely(!cpy_r_r85)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 49, CPyStatic_main___globals); + goto CPyL110; + } + cpy_r_r86 = CPyDef_main_____getitem___3_HexBytes_obj(); + if (unlikely(cpy_r_r86 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 61, CPyStatic_main___globals); + goto CPyL110; + } + cpy_r_r87 = CPyStatics[37]; /* '__getitem__' */ + cpy_r_r88 = CPyDict_SetItem(cpy_r_r73, cpy_r_r87, cpy_r_r86); + CPy_DECREF_NO_IMM(cpy_r_r86); + cpy_r_r89 = cpy_r_r88 >= 0; + if (unlikely(!cpy_r_r89)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 61, CPyStatic_main___globals); + goto CPyL110; + } + cpy_r_r90 = CPyDef_main_____repr___3_HexBytes_obj(); + if (unlikely(cpy_r_r90 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 73, CPyStatic_main___globals); + goto CPyL110; + } + cpy_r_r91 = CPyStatics[59]; /* '__repr__' */ + cpy_r_r92 = CPyDict_SetItem(cpy_r_r73, cpy_r_r91, cpy_r_r90); + CPy_DECREF_NO_IMM(cpy_r_r90); + cpy_r_r93 = cpy_r_r92 >= 0; + if (unlikely(!cpy_r_r93)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 73, CPyStatic_main___globals); + goto CPyL110; + } + cpy_r_r94 = CPyDef_main___to_0x_hex_HexBytes_obj(); + if (unlikely(cpy_r_r94 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 76, CPyStatic_main___globals); + goto CPyL110; + } + cpy_r_r95 = CPyStatics[60]; /* 'to_0x_hex' */ + cpy_r_r96 = CPyDict_SetItem(cpy_r_r73, cpy_r_r95, cpy_r_r94); + CPy_DECREF_NO_IMM(cpy_r_r94); + cpy_r_r97 = cpy_r_r96 >= 0; + if (unlikely(!cpy_r_r97)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 76, CPyStatic_main___globals); + goto CPyL110; + } + cpy_r_r98 = CPyDef_main_____reduce___3_HexBytes_obj(); + if (unlikely(cpy_r_r98 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 82, CPyStatic_main___globals); + goto CPyL110; + } + cpy_r_r99 = CPyStatics[61]; /* '__reduce__' */ + cpy_r_r100 = CPyDict_SetItem(cpy_r_r73, cpy_r_r99, cpy_r_r98); + CPy_DECREF_NO_IMM(cpy_r_r98); + cpy_r_r101 = cpy_r_r100 >= 0; + if (unlikely(!cpy_r_r101)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 82, CPyStatic_main___globals); + goto CPyL110; + } + cpy_r_r102 = CPyStatics[7]; /* 'HexBytes' */ + cpy_r_r103 = CPyStatics[62]; /* '__annotations__' */ + cpy_r_r104 = CPyDict_SetItem(cpy_r_r73, cpy_r_r103, cpy_r_r75); + CPy_DECREF(cpy_r_r75); + cpy_r_r105 = cpy_r_r104 >= 0; + if (unlikely(!cpy_r_r105)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 38, CPyStatic_main___globals); + goto CPyL109; + } + cpy_r_r106 = CPyStatics[63]; /* 'mypyc filler docstring' */ + cpy_r_r107 = CPyStatics[64]; /* '__doc__' */ + cpy_r_r108 = CPyDict_SetItem(cpy_r_r73, cpy_r_r107, cpy_r_r106); + cpy_r_r109 = cpy_r_r108 >= 0; + if (unlikely(!cpy_r_r109)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 38, CPyStatic_main___globals); + goto CPyL109; + } + cpy_r_r110 = CPyStatics[8]; /* 'faster_hexbytes.main' */ + cpy_r_r111 = CPyStatics[65]; /* '__module__' */ + cpy_r_r112 = CPyDict_SetItem(cpy_r_r73, cpy_r_r111, cpy_r_r110); + cpy_r_r113 = cpy_r_r112 >= 0; + if (unlikely(!cpy_r_r113)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 38, CPyStatic_main___globals); + goto CPyL109; + } + PyObject *cpy_r_r114[3] = {cpy_r_r102, cpy_r_r61, cpy_r_r73}; + cpy_r_r115 = (PyObject **)&cpy_r_r114; + cpy_r_r116 = PyObject_Vectorcall(cpy_r_r63, cpy_r_r115, 3, 0); + if (unlikely(cpy_r_r116 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 38, CPyStatic_main___globals); + goto CPyL109; + } + CPy_DECREF(cpy_r_r73); + CPy_DECREF(cpy_r_r61); + cpy_r_r117 = CPyStatic_main___globals; + cpy_r_r118 = CPyStatics[47]; /* 'mypyc_attr' */ + cpy_r_r119 = CPyDict_GetItem(cpy_r_r117, cpy_r_r118); + if (unlikely(cpy_r_r119 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals); + goto CPyL112; + } + cpy_r_r120 = 0 ? Py_True : Py_False; + cpy_r_r121 = 1 ? Py_True : Py_False; + PyObject *cpy_r_r122[2] = {cpy_r_r120, cpy_r_r121}; + cpy_r_r123 = (PyObject **)&cpy_r_r122; + cpy_r_r124 = CPyStatics[85]; /* ('native_class', 'allow_interpreted_subclasses') */ + cpy_r_r125 = PyObject_Vectorcall(cpy_r_r119, cpy_r_r123, 0, cpy_r_r124); + CPy_DECREF(cpy_r_r119); + if (unlikely(cpy_r_r125 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals); + goto CPyL112; + } + PyObject *cpy_r_r126[1] = {cpy_r_r116}; + cpy_r_r127 = (PyObject **)&cpy_r_r126; + cpy_r_r128 = PyObject_Vectorcall(cpy_r_r125, cpy_r_r127, 1, 0); + CPy_DECREF(cpy_r_r125); + if (unlikely(cpy_r_r128 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 38, CPyStatic_main___globals); + goto CPyL112; + } + CPy_DECREF(cpy_r_r116); + CPyType_main___HexBytes = (PyTypeObject *)cpy_r_r128; + CPy_INCREF(CPyType_main___HexBytes); + cpy_r_r129 = CPyStatic_main___globals; + cpy_r_r130 = CPyStatics[7]; /* 'HexBytes' */ + cpy_r_r131 = PyDict_SetItem(cpy_r_r129, cpy_r_r130, cpy_r_r128); + CPy_DECREF(cpy_r_r128); + cpy_r_r132 = cpy_r_r131 >= 0; + if (unlikely(!cpy_r_r132)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 38, CPyStatic_main___globals); + goto CPyL105; + } + cpy_r_r133 = (PyObject *)CPyType_main___HexBytes; + cpy_r_r134 = CPyStatic_main___globals; + cpy_r_r135 = CPyStatics[7]; /* 'HexBytes' */ + cpy_r_r136 = CPyDict_GetItem(cpy_r_r134, cpy_r_r135); + if (unlikely(cpy_r_r136 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 97, CPyStatic_main___globals); + goto CPyL105; + } + cpy_r_r137 = PyTuple_Pack(1, cpy_r_r136); + CPy_DECREF(cpy_r_r136); + if (unlikely(cpy_r_r137 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 97, CPyStatic_main___globals); + goto CPyL105; + } + cpy_r_r138 = (PyObject *)&PyType_Type; + cpy_r_r139 = CPy_CalculateMetaclass(cpy_r_r138, cpy_r_r137); + if (unlikely(cpy_r_r139 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 97, CPyStatic_main___globals); + goto CPyL113; + } + cpy_r_r140 = CPyStatics[57]; /* '__prepare__' */ + cpy_r_r141 = PyObject_HasAttr(cpy_r_r139, cpy_r_r140); + if (!cpy_r_r141) goto CPyL55; + cpy_r_r142 = CPyStatics[68]; /* '_HexBytesSubclass1' */ + cpy_r_r143 = CPyStatics[57]; /* '__prepare__' */ + cpy_r_r144 = CPyObject_GetAttr(cpy_r_r139, cpy_r_r143); + if (unlikely(cpy_r_r144 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 97, CPyStatic_main___globals); + goto CPyL113; + } + PyObject *cpy_r_r145[2] = {cpy_r_r142, cpy_r_r137}; + cpy_r_r146 = (PyObject **)&cpy_r_r145; + cpy_r_r147 = PyObject_Vectorcall(cpy_r_r144, cpy_r_r146, 2, 0); + CPy_DECREF(cpy_r_r144); + if (unlikely(cpy_r_r147 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 97, CPyStatic_main___globals); + goto CPyL113; + } + if (likely(PyDict_Check(cpy_r_r147))) + cpy_r_r148 = cpy_r_r147; + else { + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "", 97, CPyStatic_main___globals, "dict", cpy_r_r147); + goto CPyL113; + } + cpy_r_r149 = cpy_r_r148; + goto CPyL57; +CPyL55: ; + cpy_r_r150 = PyDict_New(); + if (unlikely(cpy_r_r150 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 97, CPyStatic_main___globals); + goto CPyL113; + } + cpy_r_r149 = cpy_r_r150; +CPyL57: ; + cpy_r_r151 = PyDict_New(); + if (unlikely(cpy_r_r151 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 97, CPyStatic_main___globals); + goto CPyL114; + } + cpy_r_r152 = CPyStatics[68]; /* '_HexBytesSubclass1' */ + cpy_r_r153 = CPyStatics[62]; /* '__annotations__' */ + cpy_r_r154 = CPyDict_SetItem(cpy_r_r149, cpy_r_r153, cpy_r_r151); + CPy_DECREF(cpy_r_r151); + cpy_r_r155 = cpy_r_r154 >= 0; + if (unlikely(!cpy_r_r155)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 97, CPyStatic_main___globals); + goto CPyL114; + } + cpy_r_r156 = CPyStatics[63]; /* 'mypyc filler docstring' */ + cpy_r_r157 = CPyStatics[64]; /* '__doc__' */ + cpy_r_r158 = CPyDict_SetItem(cpy_r_r149, cpy_r_r157, cpy_r_r156); + cpy_r_r159 = cpy_r_r158 >= 0; + if (unlikely(!cpy_r_r159)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 97, CPyStatic_main___globals); + goto CPyL114; + } + cpy_r_r160 = CPyStatics[8]; /* 'faster_hexbytes.main' */ + cpy_r_r161 = CPyStatics[65]; /* '__module__' */ + cpy_r_r162 = CPyDict_SetItem(cpy_r_r149, cpy_r_r161, cpy_r_r160); + cpy_r_r163 = cpy_r_r162 >= 0; + if (unlikely(!cpy_r_r163)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 97, CPyStatic_main___globals); + goto CPyL114; + } + PyObject *cpy_r_r164[3] = {cpy_r_r152, cpy_r_r137, cpy_r_r149}; + cpy_r_r165 = (PyObject **)&cpy_r_r164; + cpy_r_r166 = PyObject_Vectorcall(cpy_r_r139, cpy_r_r165, 3, 0); + if (unlikely(cpy_r_r166 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 97, CPyStatic_main___globals); + goto CPyL114; + } + CPy_DECREF(cpy_r_r149); + CPy_DECREF(cpy_r_r137); + cpy_r_r167 = CPyStatic_main___globals; + cpy_r_r168 = CPyStatics[47]; /* 'mypyc_attr' */ + cpy_r_r169 = CPyDict_GetItem(cpy_r_r167, cpy_r_r168); + if (unlikely(cpy_r_r169 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 96, CPyStatic_main___globals); + goto CPyL115; + } + cpy_r_r170 = 0 ? Py_True : Py_False; + PyObject *cpy_r_r171[1] = {cpy_r_r170}; + cpy_r_r172 = (PyObject **)&cpy_r_r171; + cpy_r_r173 = CPyStatics[86]; /* ('native_class',) */ + cpy_r_r174 = PyObject_Vectorcall(cpy_r_r169, cpy_r_r172, 0, cpy_r_r173); + CPy_DECREF(cpy_r_r169); + if (unlikely(cpy_r_r174 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 96, CPyStatic_main___globals); + goto CPyL115; + } + PyObject *cpy_r_r175[1] = {cpy_r_r166}; + cpy_r_r176 = (PyObject **)&cpy_r_r175; + cpy_r_r177 = PyObject_Vectorcall(cpy_r_r174, cpy_r_r176, 1, 0); + CPy_DECREF(cpy_r_r174); + if (unlikely(cpy_r_r177 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 97, CPyStatic_main___globals); + goto CPyL115; + } + CPy_DECREF(cpy_r_r166); + CPyType_main____HexBytesSubclass1 = (PyTypeObject *)cpy_r_r177; + CPy_INCREF(CPyType_main____HexBytesSubclass1); + cpy_r_r178 = CPyStatic_main___globals; + cpy_r_r179 = CPyStatics[68]; /* '_HexBytesSubclass1' */ + cpy_r_r180 = PyDict_SetItem(cpy_r_r178, cpy_r_r179, cpy_r_r177); + CPy_DECREF(cpy_r_r177); + cpy_r_r181 = cpy_r_r180 >= 0; + if (unlikely(!cpy_r_r181)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 97, CPyStatic_main___globals); + goto CPyL105; + } + cpy_r_r182 = (PyObject *)CPyType_main____HexBytesSubclass1; + cpy_r_r183 = CPyStatic_main___globals; + cpy_r_r184 = CPyStatics[7]; /* 'HexBytes' */ + cpy_r_r185 = CPyDict_GetItem(cpy_r_r183, cpy_r_r184); + if (unlikely(cpy_r_r185 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 99, CPyStatic_main___globals); + goto CPyL105; + } + cpy_r_r186 = PyTuple_Pack(1, cpy_r_r185); + CPy_DECREF(cpy_r_r185); + if (unlikely(cpy_r_r186 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 99, CPyStatic_main___globals); + goto CPyL105; + } + cpy_r_r187 = (PyObject *)&PyType_Type; + cpy_r_r188 = CPy_CalculateMetaclass(cpy_r_r187, cpy_r_r186); + if (unlikely(cpy_r_r188 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 99, CPyStatic_main___globals); + goto CPyL116; + } + cpy_r_r189 = CPyStatics[57]; /* '__prepare__' */ + cpy_r_r190 = PyObject_HasAttr(cpy_r_r188, cpy_r_r189); + if (!cpy_r_r190) goto CPyL74; + cpy_r_r191 = CPyStatics[69]; /* '_HexBytesSubclass2' */ + cpy_r_r192 = CPyStatics[57]; /* '__prepare__' */ + cpy_r_r193 = CPyObject_GetAttr(cpy_r_r188, cpy_r_r192); + if (unlikely(cpy_r_r193 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 99, CPyStatic_main___globals); + goto CPyL116; + } + PyObject *cpy_r_r194[2] = {cpy_r_r191, cpy_r_r186}; + cpy_r_r195 = (PyObject **)&cpy_r_r194; + cpy_r_r196 = PyObject_Vectorcall(cpy_r_r193, cpy_r_r195, 2, 0); + CPy_DECREF(cpy_r_r193); + if (unlikely(cpy_r_r196 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 99, CPyStatic_main___globals); + goto CPyL116; + } + if (likely(PyDict_Check(cpy_r_r196))) + cpy_r_r197 = cpy_r_r196; + else { + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "", 99, CPyStatic_main___globals, "dict", cpy_r_r196); + goto CPyL116; + } + cpy_r_r198 = cpy_r_r197; + goto CPyL76; +CPyL74: ; + cpy_r_r199 = PyDict_New(); + if (unlikely(cpy_r_r199 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 99, CPyStatic_main___globals); + goto CPyL116; + } + cpy_r_r198 = cpy_r_r199; +CPyL76: ; + cpy_r_r200 = PyDict_New(); + if (unlikely(cpy_r_r200 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 99, CPyStatic_main___globals); + goto CPyL117; + } + cpy_r_r201 = CPyStatics[69]; /* '_HexBytesSubclass2' */ + cpy_r_r202 = CPyStatics[62]; /* '__annotations__' */ + cpy_r_r203 = CPyDict_SetItem(cpy_r_r198, cpy_r_r202, cpy_r_r200); + CPy_DECREF(cpy_r_r200); + cpy_r_r204 = cpy_r_r203 >= 0; + if (unlikely(!cpy_r_r204)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 99, CPyStatic_main___globals); + goto CPyL117; + } + cpy_r_r205 = CPyStatics[63]; /* 'mypyc filler docstring' */ + cpy_r_r206 = CPyStatics[64]; /* '__doc__' */ + cpy_r_r207 = CPyDict_SetItem(cpy_r_r198, cpy_r_r206, cpy_r_r205); + cpy_r_r208 = cpy_r_r207 >= 0; + if (unlikely(!cpy_r_r208)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 99, CPyStatic_main___globals); + goto CPyL117; + } + cpy_r_r209 = CPyStatics[8]; /* 'faster_hexbytes.main' */ + cpy_r_r210 = CPyStatics[65]; /* '__module__' */ + cpy_r_r211 = CPyDict_SetItem(cpy_r_r198, cpy_r_r210, cpy_r_r209); + cpy_r_r212 = cpy_r_r211 >= 0; + if (unlikely(!cpy_r_r212)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 99, CPyStatic_main___globals); + goto CPyL117; + } + PyObject *cpy_r_r213[3] = {cpy_r_r201, cpy_r_r186, cpy_r_r198}; + cpy_r_r214 = (PyObject **)&cpy_r_r213; + cpy_r_r215 = PyObject_Vectorcall(cpy_r_r188, cpy_r_r214, 3, 0); + if (unlikely(cpy_r_r215 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 99, CPyStatic_main___globals); + goto CPyL117; + } + CPy_DECREF(cpy_r_r198); + CPy_DECREF(cpy_r_r186); + cpy_r_r216 = CPyStatic_main___globals; + cpy_r_r217 = CPyStatics[47]; /* 'mypyc_attr' */ + cpy_r_r218 = CPyDict_GetItem(cpy_r_r216, cpy_r_r217); + if (unlikely(cpy_r_r218 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 98, CPyStatic_main___globals); + goto CPyL118; + } + cpy_r_r219 = 0 ? Py_True : Py_False; + PyObject *cpy_r_r220[1] = {cpy_r_r219}; + cpy_r_r221 = (PyObject **)&cpy_r_r220; + cpy_r_r222 = CPyStatics[86]; /* ('native_class',) */ + cpy_r_r223 = PyObject_Vectorcall(cpy_r_r218, cpy_r_r221, 0, cpy_r_r222); + CPy_DECREF(cpy_r_r218); + if (unlikely(cpy_r_r223 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 98, CPyStatic_main___globals); + goto CPyL118; + } + PyObject *cpy_r_r224[1] = {cpy_r_r215}; + cpy_r_r225 = (PyObject **)&cpy_r_r224; + cpy_r_r226 = PyObject_Vectorcall(cpy_r_r223, cpy_r_r225, 1, 0); + CPy_DECREF(cpy_r_r223); + if (unlikely(cpy_r_r226 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 99, CPyStatic_main___globals); + goto CPyL118; + } + CPy_DECREF(cpy_r_r215); + CPyType_main____HexBytesSubclass2 = (PyTypeObject *)cpy_r_r226; + CPy_INCREF(CPyType_main____HexBytesSubclass2); + cpy_r_r227 = CPyStatic_main___globals; + cpy_r_r228 = CPyStatics[69]; /* '_HexBytesSubclass2' */ + cpy_r_r229 = PyDict_SetItem(cpy_r_r227, cpy_r_r228, cpy_r_r226); + CPy_DECREF(cpy_r_r226); + cpy_r_r230 = cpy_r_r229 >= 0; + if (unlikely(!cpy_r_r230)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 99, CPyStatic_main___globals); + goto CPyL105; + } + cpy_r_r231 = (PyObject *)CPyType_main____HexBytesSubclass2; + cpy_r_r232 = CPyStatic_main___globals; + cpy_r_r233 = CPyStatics[7]; /* 'HexBytes' */ + cpy_r_r234 = CPyDict_GetItem(cpy_r_r232, cpy_r_r233); + if (unlikely(cpy_r_r234 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 101, CPyStatic_main___globals); + goto CPyL105; + } + cpy_r_r235 = PyTuple_Pack(1, cpy_r_r234); + CPy_DECREF(cpy_r_r234); + if (unlikely(cpy_r_r235 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 101, CPyStatic_main___globals); + goto CPyL105; + } + cpy_r_r236 = (PyObject *)&PyType_Type; + cpy_r_r237 = CPy_CalculateMetaclass(cpy_r_r236, cpy_r_r235); + if (unlikely(cpy_r_r237 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 101, CPyStatic_main___globals); + goto CPyL119; + } + cpy_r_r238 = CPyStatics[57]; /* '__prepare__' */ + cpy_r_r239 = PyObject_HasAttr(cpy_r_r237, cpy_r_r238); + if (!cpy_r_r239) goto CPyL93; + cpy_r_r240 = CPyStatics[70]; /* '_HexBytesSubclass3' */ + cpy_r_r241 = CPyStatics[57]; /* '__prepare__' */ + cpy_r_r242 = CPyObject_GetAttr(cpy_r_r237, cpy_r_r241); + if (unlikely(cpy_r_r242 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 101, CPyStatic_main___globals); + goto CPyL119; + } + PyObject *cpy_r_r243[2] = {cpy_r_r240, cpy_r_r235}; + cpy_r_r244 = (PyObject **)&cpy_r_r243; + cpy_r_r245 = PyObject_Vectorcall(cpy_r_r242, cpy_r_r244, 2, 0); + CPy_DECREF(cpy_r_r242); + if (unlikely(cpy_r_r245 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 101, CPyStatic_main___globals); + goto CPyL119; + } + if (likely(PyDict_Check(cpy_r_r245))) + cpy_r_r246 = cpy_r_r245; + else { + CPy_TypeErrorTraceback("faster_hexbytes/main.py", "", 101, CPyStatic_main___globals, "dict", cpy_r_r245); + goto CPyL119; + } + cpy_r_r247 = cpy_r_r246; + goto CPyL95; +CPyL93: ; + cpy_r_r248 = PyDict_New(); + if (unlikely(cpy_r_r248 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 101, CPyStatic_main___globals); + goto CPyL119; + } + cpy_r_r247 = cpy_r_r248; +CPyL95: ; + cpy_r_r249 = PyDict_New(); + if (unlikely(cpy_r_r249 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 101, CPyStatic_main___globals); + goto CPyL120; + } + cpy_r_r250 = CPyStatics[70]; /* '_HexBytesSubclass3' */ + cpy_r_r251 = CPyStatics[62]; /* '__annotations__' */ + cpy_r_r252 = CPyDict_SetItem(cpy_r_r247, cpy_r_r251, cpy_r_r249); + CPy_DECREF(cpy_r_r249); + cpy_r_r253 = cpy_r_r252 >= 0; + if (unlikely(!cpy_r_r253)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 101, CPyStatic_main___globals); + goto CPyL120; + } + cpy_r_r254 = CPyStatics[63]; /* 'mypyc filler docstring' */ + cpy_r_r255 = CPyStatics[64]; /* '__doc__' */ + cpy_r_r256 = CPyDict_SetItem(cpy_r_r247, cpy_r_r255, cpy_r_r254); + cpy_r_r257 = cpy_r_r256 >= 0; + if (unlikely(!cpy_r_r257)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 101, CPyStatic_main___globals); + goto CPyL120; + } + cpy_r_r258 = CPyStatics[8]; /* 'faster_hexbytes.main' */ + cpy_r_r259 = CPyStatics[65]; /* '__module__' */ + cpy_r_r260 = CPyDict_SetItem(cpy_r_r247, cpy_r_r259, cpy_r_r258); + cpy_r_r261 = cpy_r_r260 >= 0; + if (unlikely(!cpy_r_r261)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 101, CPyStatic_main___globals); + goto CPyL120; + } + PyObject *cpy_r_r262[3] = {cpy_r_r250, cpy_r_r235, cpy_r_r247}; + cpy_r_r263 = (PyObject **)&cpy_r_r262; + cpy_r_r264 = PyObject_Vectorcall(cpy_r_r237, cpy_r_r263, 3, 0); + if (unlikely(cpy_r_r264 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 101, CPyStatic_main___globals); + goto CPyL120; + } + CPy_DECREF(cpy_r_r247); + CPy_DECREF(cpy_r_r235); + cpy_r_r265 = CPyStatic_main___globals; + cpy_r_r266 = CPyStatics[47]; /* 'mypyc_attr' */ + cpy_r_r267 = CPyDict_GetItem(cpy_r_r265, cpy_r_r266); + if (unlikely(cpy_r_r267 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 100, CPyStatic_main___globals); + goto CPyL121; + } + cpy_r_r268 = 0 ? Py_True : Py_False; + PyObject *cpy_r_r269[1] = {cpy_r_r268}; + cpy_r_r270 = (PyObject **)&cpy_r_r269; + cpy_r_r271 = CPyStatics[86]; /* ('native_class',) */ + cpy_r_r272 = PyObject_Vectorcall(cpy_r_r267, cpy_r_r270, 0, cpy_r_r271); + CPy_DECREF(cpy_r_r267); + if (unlikely(cpy_r_r272 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 100, CPyStatic_main___globals); + goto CPyL121; + } + PyObject *cpy_r_r273[1] = {cpy_r_r264}; + cpy_r_r274 = (PyObject **)&cpy_r_r273; + cpy_r_r275 = PyObject_Vectorcall(cpy_r_r272, cpy_r_r274, 1, 0); + CPy_DECREF(cpy_r_r272); + if (unlikely(cpy_r_r275 == NULL)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 101, CPyStatic_main___globals); + goto CPyL121; + } + CPy_DECREF(cpy_r_r264); + CPyType_main____HexBytesSubclass3 = (PyTypeObject *)cpy_r_r275; + CPy_INCREF(CPyType_main____HexBytesSubclass3); + cpy_r_r276 = CPyStatic_main___globals; + cpy_r_r277 = CPyStatics[70]; /* '_HexBytesSubclass3' */ + cpy_r_r278 = PyDict_SetItem(cpy_r_r276, cpy_r_r277, cpy_r_r275); + CPy_DECREF(cpy_r_r275); + cpy_r_r279 = cpy_r_r278 >= 0; + if (unlikely(!cpy_r_r279)) { + CPy_AddTraceback("faster_hexbytes/main.py", "", 101, CPyStatic_main___globals); + goto CPyL105; + } + cpy_r_r280 = (PyObject *)CPyType_main____HexBytesSubclass3; + return 1; +CPyL105: ; + cpy_r_r281 = 2; + return cpy_r_r281; +CPyL106: ; + CPy_DecRef(cpy_r_r33); + goto CPyL105; +CPyL107: ; + CPy_DecRef(cpy_r_r33); + CPy_DecRef(cpy_r_r39); + goto CPyL105; +CPyL108: ; + CPy_DecRef(cpy_r_r61); + goto CPyL105; +CPyL109: ; + CPy_DecRef(cpy_r_r61); + CPy_DecRef(cpy_r_r73); + goto CPyL105; +CPyL110: ; + CPy_DecRef(cpy_r_r61); + CPy_DecRef(cpy_r_r73); + CPy_DecRef(cpy_r_r75); + goto CPyL105; +CPyL111: ; + CPy_DecRef(cpy_r_r61); + CPy_DecRef(cpy_r_r73); + CPy_DecRef(cpy_r_r75); + CPy_DecRef(cpy_r_r76); + goto CPyL105; +CPyL112: ; + CPy_DecRef(cpy_r_r116); + goto CPyL105; +CPyL113: ; + CPy_DecRef(cpy_r_r137); + goto CPyL105; +CPyL114: ; + CPy_DecRef(cpy_r_r137); + CPy_DecRef(cpy_r_r149); + goto CPyL105; +CPyL115: ; + CPy_DecRef(cpy_r_r166); + goto CPyL105; +CPyL116: ; + CPy_DecRef(cpy_r_r186); + goto CPyL105; +CPyL117: ; + CPy_DecRef(cpy_r_r186); + CPy_DecRef(cpy_r_r198); + goto CPyL105; +CPyL118: ; + CPy_DecRef(cpy_r_r215); + goto CPyL105; +CPyL119: ; + CPy_DecRef(cpy_r_r235); + goto CPyL105; +CPyL120: ; + CPy_DecRef(cpy_r_r235); + CPy_DecRef(cpy_r_r247); + goto CPyL105; +CPyL121: ; + CPy_DecRef(cpy_r_r264); + goto CPyL105; +} + +int CPyGlobalsInit(void) +{ + static int is_initialized = 0; + if (is_initialized) return 0; + + CPy_Init(); + CPyModule_faster_hexbytes = Py_None; + CPyModule_builtins = Py_None; + CPyModule_importlib___metadata = Py_None; + CPyModule_faster_hexbytes___main = Py_None; + CPyModule_faster_hexbytes____utils = Py_None; + CPyModule_builtins = Py_None; + CPyModule_binascii = Py_None; + CPyModule_typing = Py_None; + CPyModule_faster_hexbytes___main = Py_None; + CPyModule_builtins = Py_None; + CPyModule_typing = Py_None; + CPyModule_hexbytes___main = Py_None; + CPyModule_mypy_extensions = Py_None; + CPyModule_typing_extensions = Py_None; + CPyModule_faster_hexbytes____utils = Py_None; + if (CPyStatics_Initialize(CPyStatics, CPyLit_Str, CPyLit_Bytes, CPyLit_Int, CPyLit_Float, CPyLit_Complex, CPyLit_Tuple, CPyLit_FrozenSet) < 0) { + return -1; + } + is_initialized = 1; + return 0; +} + +PyObject *CPyStatics[87]; +const char * const CPyLit_Str[] = { + "\005\bbuiltins\aversion\t__version\022importlib.metadata\bHexBytes", + "\004\024faster_hexbytes.main\a__all__\bhexbytes\v__version__", + "\006 Cannot convert negative integer \t to bytes\nValueError\003hex\nmemoryview\000", + "\t\017Cannot convert \a{!r:{}}\006format\t of type \005{:{}}\tTypeError\0020x\0020X\0010", + "\002\022UnicodeDecodeError\vhex string ", + "\002( may only contain [0-9a-fA-F] characters\bbinascii", + "\006\031faster_hexbytes/_utils.py\b\005Final\005Union\006typing\tunhexlify", + "\a\v__getitem__\fHexBytes(\'0x\002\')\rTYPE_CHECKING\bCallable\005Tuple\004Type", + "\004\boverload\rhexbytes.main\027faster_hexbytes/main.py\nmypyc_attr", + "\004\017mypy_extensions\004Self\021typing_extensions\bto_bytes", + "\005\026faster_hexbytes._utils\tbytearray\tBytesLike\a__new__\n_bytes_new", + "\005\v__prepare__\fstaticmethod\b__repr__\tto_0x_hex\n__reduce__", + "\004\017__annotations__\026mypyc filler docstring\a__doc__\n__module__", + "\003\fnative_class\034allow_interpreted_subclasses\022_HexBytesSubclass1", + "\002\022_HexBytesSubclass2\022_HexBytesSubclass3", + "", +}; +const char * const CPyLit_Bytes[] = { + "\002\001\001\001\000", + "", +}; +const char * const CPyLit_Int[] = { + "", +}; +const double CPyLit_Float[] = {0}; +const double CPyLit_Complex[] = {0}; +const int CPyLit_Tuple[] = { + 14, 1, 4, 1, 5, 1, 7, 3, 30, 30, 30, 1, 76, 2, 33, 34, 7, 40, 41, + 33, 42, 43, 34, 44, 3, 45, 45, 10, 1, 80, 1, 47, 1, 49, 1, 51, 2, 66, + 67, 1, 66 +}; +const int CPyLit_FrozenSet[] = {0}; +CPyModule *CPyModule_faster_hexbytes__internal = NULL; +CPyModule *CPyModule_faster_hexbytes; +PyObject *CPyStatic_faster_hexbytes___globals; +CPyModule *CPyModule_builtins; +CPyModule *CPyModule_importlib___metadata; +CPyModule *CPyModule_faster_hexbytes___main__internal = NULL; +CPyModule *CPyModule_faster_hexbytes___main; +CPyModule *CPyModule_faster_hexbytes____utils__internal = NULL; +CPyModule *CPyModule_faster_hexbytes____utils; +PyObject *CPyStatic__utils___globals; +CPyModule *CPyModule_binascii; +CPyModule *CPyModule_typing; +PyObject *CPyStatic_main___globals; +CPyModule *CPyModule_hexbytes___main; +CPyModule *CPyModule_mypy_extensions; +CPyModule *CPyModule_typing_extensions; +char CPyDef_faster_hexbytes_____top_level__(void); +PyObject *CPyStatic__utils___unhexlify = NULL; +PyObject *CPyDef__utils___to_bytes(PyObject *cpy_r_val); +PyObject *CPyPy__utils___to_bytes(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +PyObject *CPyDef__utils___hexstr_to_bytes(PyObject *cpy_r_hexstr); +PyObject *CPyPy__utils___hexstr_to_bytes(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +char CPyDef__utils_____top_level__(void); +PyObject *CPyStatic_main____bytes_new = NULL; +PyTypeObject *CPyType_main___HexBytes; +PyTypeObject *CPyType_main____HexBytesSubclass1; +PyTypeObject *CPyType_main____HexBytesSubclass2; +PyTypeObject *CPyType_main____HexBytesSubclass3; +PyTypeObject *CPyType_main_____new___3_HexBytes_obj; +PyObject *CPyDef_main_____new___3_HexBytes_obj(void); +CPyThreadLocal faster_hexbytes___main_____new___3_HexBytes_objObject *main_____new___3_HexBytes_obj_free_instance; +PyTypeObject *CPyType_main_____getitem___3_HexBytes_obj; +PyObject *CPyDef_main_____getitem___3_HexBytes_obj(void); +CPyThreadLocal faster_hexbytes___main_____getitem___3_HexBytes_objObject *main_____getitem___3_HexBytes_obj_free_instance; +PyTypeObject *CPyType_main_____repr___3_HexBytes_obj; +PyObject *CPyDef_main_____repr___3_HexBytes_obj(void); +CPyThreadLocal faster_hexbytes___main_____repr___3_HexBytes_objObject *main_____repr___3_HexBytes_obj_free_instance; +PyTypeObject *CPyType_main___to_0x_hex_HexBytes_obj; +PyObject *CPyDef_main___to_0x_hex_HexBytes_obj(void); +CPyThreadLocal faster_hexbytes___main___to_0x_hex_HexBytes_objObject *main___to_0x_hex_HexBytes_obj_free_instance; +PyTypeObject *CPyType_main_____reduce___3_HexBytes_obj; +PyObject *CPyDef_main_____reduce___3_HexBytes_obj(void); +CPyThreadLocal faster_hexbytes___main_____reduce___3_HexBytes_objObject *main_____reduce___3_HexBytes_obj_free_instance; +PyObject *CPyDef_main_____new___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); +PyObject *CPyPy_main_____new___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +PyObject *CPyDef_main_____new___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_cls, PyObject *cpy_r_val); +PyObject *CPyPy_main_____new___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +PyObject *CPyDef_main_____getitem___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); +PyObject *CPyPy_main_____getitem___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +PyObject *CPyDef_main_____getitem___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self, PyObject *cpy_r_key); +PyObject *CPyPy_main_____getitem___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +PyObject *CPyDef_main_____repr___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); +PyObject *CPyPy_main_____repr___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +PyObject *CPyDef_main_____repr___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self); +PyObject *CPyPy_main_____repr___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +PyObject *CPyDef_main___to_0x_hex_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); +PyObject *CPyPy_main___to_0x_hex_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +PyObject *CPyDef_main___to_0x_hex_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self); +PyObject *CPyPy_main___to_0x_hex_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +PyObject *CPyDef_main_____reduce___3_HexBytes_obj_____get__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_instance, PyObject *cpy_r_owner); +PyObject *CPyPy_main_____reduce___3_HexBytes_obj_____get__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +tuple_T2OT2OO CPyDef_main_____reduce___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self); +PyObject *CPyPy_main_____reduce___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); +char CPyDef_main_____top_level__(void); + +static int exec_6a32f4913d613d6a7ddf__mypyc(PyObject *module) +{ + int res; + PyObject *capsule; + PyObject *tmp; + + extern PyObject *CPyInit_faster_hexbytes(void); + capsule = PyCapsule_New((void *)CPyInit_faster_hexbytes, "6a32f4913d613d6a7ddf__mypyc.init_faster_hexbytes", NULL); + if (!capsule) { + goto fail; + } + res = PyObject_SetAttrString(module, "init_faster_hexbytes", capsule); + Py_DECREF(capsule); + if (res < 0) { + goto fail; + } + + extern PyObject *CPyInit_faster_hexbytes____utils(void); + capsule = PyCapsule_New((void *)CPyInit_faster_hexbytes____utils, "6a32f4913d613d6a7ddf__mypyc.init_faster_hexbytes____utils", NULL); + if (!capsule) { + goto fail; + } + res = PyObject_SetAttrString(module, "init_faster_hexbytes____utils", capsule); + Py_DECREF(capsule); + if (res < 0) { + goto fail; + } + + extern PyObject *CPyInit_faster_hexbytes___main(void); + capsule = PyCapsule_New((void *)CPyInit_faster_hexbytes___main, "6a32f4913d613d6a7ddf__mypyc.init_faster_hexbytes___main", NULL); + if (!capsule) { + goto fail; + } + res = PyObject_SetAttrString(module, "init_faster_hexbytes___main", capsule); + Py_DECREF(capsule); + if (res < 0) { + goto fail; + } + + return 0; + fail: + return -1; +} +static PyModuleDef module_def_6a32f4913d613d6a7ddf__mypyc = { + PyModuleDef_HEAD_INIT, + .m_name = "6a32f4913d613d6a7ddf__mypyc", + .m_doc = NULL, + .m_size = -1, + .m_methods = NULL, +}; +PyMODINIT_FUNC PyInit_6a32f4913d613d6a7ddf__mypyc(void) { + static PyObject *module = NULL; + if (module) { + Py_INCREF(module); + return module; + } + module = PyModule_Create(&module_def_6a32f4913d613d6a7ddf__mypyc); + if (!module) { + return NULL; + } + if (exec_6a32f4913d613d6a7ddf__mypyc(module) < 0) { + Py_DECREF(module); + return NULL; + } + return module; +} diff --git a/build/ops.txt b/build/ops.txt index 00e1254..8dfadfc 100644 --- a/build/ops.txt +++ b/build/ops.txt @@ -1,740 +1,166 @@ -def to_bytes(val): - val :: union[bytes, str, object, bool, int] - r0 :: bit - r1 :: bytes - r2 :: bit - r3 :: str - r4 :: bytes - r5 :: bit - r6 :: object - r7 :: object[1] - r8 :: object_ptr - r9 :: object - r10 :: bytes +def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def __new___HexBytes_obj.__call__(__mypyc_self__, cls, val): + __mypyc_self__ :: faster_hexbytes.main.__new___HexBytes_obj + cls :: object + val :: union[bytes, str, bool, object, int] + r0 :: bytes + r1 :: object + r2 :: bool + r3 :: object[2] + r4 :: object_ptr + r5 :: object + r6, r7 :: faster_hexbytes.main.HexBytes +L0: + r0 = to_bytes(val) + if is_error(r0) goto L7 (error at __new__:50) else goto L1 +L1: + r1 = faster_hexbytes.main._bytes_new :: static + if is_error(r1) goto L8 else goto L4 +L2: + r2 = raise NameError('value for final name "_bytes_new" was not set') + if not r2 goto L7 (error at __new__:51) else goto L3 :: bool +L3: + unreachable +L4: + r3 = [cls, r0] + r4 = load_address r3 + r5 = PyObject_Vectorcall(r1, r4, 2, 0) + if is_error(r5) goto L9 (error at __new__:51) else goto L5 +L5: + dec_ref r0 + r6 = cast(faster_hexbytes.main.HexBytes, r5) + if is_error(r6) goto L7 (error at __new__:51) else goto L6 +L6: + return r6 +L7: + r7 = :: faster_hexbytes.main.HexBytes + return r7 +L8: + dec_ref r0 + goto L2 +L9: + dec_ref r0 + goto L7 + +def __getitem___HexBytes_obj.__get__(__mypyc_self__, instance, owner): + __mypyc_self__, instance, owner, r0 :: object + r1 :: bit + r2, r3 :: object +L0: + r0 = load_address _Py_NoneStruct + r1 = instance == r0 + if r1 goto L1 else goto L2 :: bool +L1: + inc_ref __mypyc_self__ + return __mypyc_self__ +L2: + r2 = PyMethod_New(__mypyc_self__, instance) + if is_error(r2) goto L4 else goto L3 +L3: + return r2 +L4: + r3 = :: object + return r3 + +def __getitem___HexBytes_obj.__call__(__mypyc_self__, self, key): + __mypyc_self__ :: faster_hexbytes.main.__getitem___HexBytes_obj + self :: faster_hexbytes.main.HexBytes + key, r0 :: object + r1 :: str + r2 :: object[3] + r3 :: object_ptr + r4 :: object + r5 :: union[int, bytes] + r6 :: bit + r7 :: int + r8, r9, r10 :: object r11 :: bit - r12 :: bool - r13, r14, r15 :: bytes - r16 :: bit - r17 :: int - r18 :: native_int - r19 :: bit - r20 :: native_int - r21, r22 :: bit - r23 :: bool - r24 :: bit - r25 :: str - r26 :: int - r27, r28, r29 :: str - r30 :: object - r31 :: str - r32 :: object - r33 :: object[1] - r34 :: object_ptr - r35 :: object - r36 :: int - r37 :: object - r38 :: str - r39, r40 :: object - r41 :: object[1] - r42 :: object_ptr - r43 :: object - r44 :: str - r45 :: bytes - r46 :: object - r47 :: str - r48 :: object - r49 :: i32 - r50 :: bit - r51 :: bool - r52 :: object - r53 :: object[1] - r54 :: object_ptr - r55 :: object - r56 :: bytes - r57, r58, r59, r60, r61 :: str - r62 :: object[3] - r63 :: object_ptr - r64 :: object - r65, r66 :: str - r67 :: object - r68, r69 :: str - r70 :: object[3] - r71 :: object_ptr - r72 :: object - r73 :: str - r74 :: list - r75, r76, r77, r78, r79, r80 :: ptr - r81 :: str - r82 :: object - r83 :: str - r84 :: object - r85 :: object[1] - r86 :: object_ptr - r87 :: object - r88 :: bytes + r12 :: bytes + r13 :: object + r14 :: object[1] + r15 :: object_ptr + r16 :: object + r17 :: faster_hexbytes.main.HexBytes + r18 :: bytes + r19 :: object[1] + r20 :: object_ptr + r21 :: object + r22 :: faster_hexbytes.main.HexBytes + r23 :: union[int, faster_hexbytes.main.HexBytes] L0: - r0 = PyBytes_Check(val) - if r0 goto L1 else goto L3 :: bool + r0 = load_address PyBytes_Type + r1 = '__getitem__' + r2 = [r0, self, key] + r3 = load_address r2 + r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775811, 0) + if is_error(r4) goto L14 (error at __getitem__:64) else goto L1 L1: - inc_ref val - r1 = cast(bytes, val) - if is_error(r1) goto L51 (error at to_bytes:19) else goto L2 + r5 = cast(union[int, bytes], r4) + if is_error(r5) goto L14 (error at __getitem__:64) else goto L2 L2: - return r1 + r6 = PyLong_Check(r5) + if r6 goto L3 else goto L5 :: bool L3: - r2 = PyUnicode_Check(val) - if r2 goto L4 else goto L7 :: bool + r7 = unbox(int, r5) + dec_ref r5 + if is_error(r7) goto L14 (error at __getitem__:66) else goto L4 L4: - inc_ref val - r3 = cast(str, val) - if is_error(r3) goto L51 (error at to_bytes:21) else goto L5 + r8 = box(int, r7) + return r8 L5: - r4 = hexstr_to_bytes(r3) - dec_ref r3 - if is_error(r4) goto L51 (error at to_bytes:21) else goto L6 + r9 = CPy_TYPE(self) + r10 = faster_hexbytes.main.HexBytes :: type + r11 = r9 == r10 + if r11 goto L15 else goto L10 :: bool L6: - return r4 + r12 = cast(bytes, r5) + if is_error(r12) goto L14 (error at __getitem__:70) else goto L7 L7: - r5 = PyByteArray_Check(val) - if r5 goto L8 else goto L11 :: bool + r13 = faster_hexbytes.main.HexBytes :: type + r14 = [r12] + r15 = load_address r14 + r16 = PyObject_Vectorcall(r13, r15, 1, 0) + if is_error(r16) goto L16 (error at __getitem__:70) else goto L8 L8: - r6 = load_address PyBytes_Type - r7 = [val] - r8 = load_address r7 - r9 = PyObject_Vectorcall(r6, r8, 1, 0) - if is_error(r9) goto L51 (error at to_bytes:23) else goto L9 + dec_ref r12 + r17 = cast(faster_hexbytes.main.HexBytes, r16) + if is_error(r17) goto L14 (error at __getitem__:70) else goto L9 L9: - r10 = cast(bytes, r9) - if is_error(r10) goto L51 (error at to_bytes:23) else goto L10 + return r17 L10: - return r10 + r18 = cast(bytes, r5) + if is_error(r18) goto L17 (error at __getitem__:71) else goto L11 L11: - r11 = PyBool_Check(val) - if r11 goto L12 else goto L17 :: bool + r19 = [r18] + r20 = load_address r19 + r21 = PyObject_Vectorcall(r9, r20, 1, 0) + dec_ref r9 + if is_error(r21) goto L18 (error at __getitem__:71) else goto L12 L12: - r12 = unbox(bool, val) - if is_error(r12) goto L51 (error at to_bytes:25) else goto L13 + dec_ref r18 + r22 = cast(faster_hexbytes.main.HexBytes, r21) + if is_error(r22) goto L14 (error at __getitem__:71) else goto L13 L13: - if r12 goto L14 else goto L15 :: bool -L14: - r13 = b'\x01' - inc_ref r13 - r14 = r13 - goto L16 -L15: - r15 = b'\x00' - inc_ref r15 - r14 = r15 -L16: - return r14 -L17: - r16 = PyLong_Check(val) - if r16 goto L18 else goto L37 :: bool -L18: - r17 = unbox(int, val) - if is_error(r17) goto L51 (error at to_bytes:29) else goto L19 -L19: - r18 = r17 & 1 - r19 = r18 != 0 - if r19 goto L21 else goto L20 :: bool -L20: - r20 = 0 & 1 - r21 = r20 != 0 - if r21 goto L21 else goto L22 :: bool -L21: - r22 = CPyTagged_IsLt_(r17, 0) - r23 = r22 - goto L23 -L22: - r24 = r17 < 0 :: signed - r23 = r24 -L23: - dec_ref r17 :: int - if r23 goto L24 else goto L31 :: bool -L24: - r25 = 'Cannot convert negative integer ' - r26 = unbox(int, val) - if is_error(r26) goto L51 (error at to_bytes:30) else goto L25 -L25: - r27 = CPyTagged_Str(r26) - dec_ref r26 :: int - if is_error(r27) goto L51 (error at to_bytes:30) else goto L26 -L26: - r28 = ' to bytes' - r29 = CPyStr_Build(3, r25, r27, r28) - dec_ref r27 - if is_error(r29) goto L51 (error at to_bytes:30) else goto L27 -L27: - r30 = builtins :: module - r31 = 'ValueError' - r32 = CPyObject_GetAttr(r30, r31) - if is_error(r32) goto L52 (error at to_bytes:30) else goto L28 -L28: - r33 = [r29] - r34 = load_address r33 - r35 = PyObject_Vectorcall(r32, r34, 1, 0) - dec_ref r32 - if is_error(r35) goto L52 (error at to_bytes:30) else goto L29 -L29: - dec_ref r29 - CPy_Raise(r35) - dec_ref r35 - if not 0 goto L51 (error at to_bytes:30) else goto L30 :: bool -L30: - unreachable -L31: - r36 = unbox(int, val) - if is_error(r36) goto L51 (error at to_bytes:32) else goto L32 -L32: - r37 = builtins :: module - r38 = 'hex' - r39 = CPyObject_GetAttr(r37, r38) - if is_error(r39) goto L53 (error at to_bytes:32) else goto L33 -L33: - r40 = box(int, r36) - r41 = [r40] - r42 = load_address r41 - r43 = PyObject_Vectorcall(r39, r42, 1, 0) - dec_ref r39 - if is_error(r43) goto L54 (error at to_bytes:32) else goto L34 -L34: - dec_ref r40 - r44 = cast(str, r43) - if is_error(r44) goto L51 (error at to_bytes:32) else goto L35 -L35: - r45 = to_bytes(r44) - dec_ref r44 - if is_error(r45) goto L51 (error at to_bytes:32) else goto L36 -L36: - return r45 -L37: - r46 = builtins :: module - r47 = 'memoryview' - r48 = CPyObject_GetAttr(r46, r47) - if is_error(r48) goto L51 (error at to_bytes:33) else goto L38 -L38: - r49 = PyObject_IsInstance(val, r48) - dec_ref r48 - r50 = r49 >= 0 :: signed - if not r50 goto L51 (error at to_bytes:33) else goto L39 :: bool -L39: - r51 = truncate r49: i32 to builtins.bool - if r51 goto L40 else goto L43 :: bool -L40: - r52 = load_address PyBytes_Type - r53 = [val] - r54 = load_address r53 - r55 = PyObject_Vectorcall(r52, r54, 1, 0) - if is_error(r55) goto L51 (error at to_bytes:34) else goto L41 -L41: - r56 = cast(bytes, r55) - if is_error(r56) goto L51 (error at to_bytes:34) else goto L42 -L42: - return r56 -L43: - r57 = '' - r58 = 'Cannot convert ' - r59 = '{!r:{}}' - r60 = '' - r61 = 'format' - r62 = [r59, val, r60] - r63 = load_address r62 - r64 = PyObject_VectorcallMethod(r61, r63, 9223372036854775811, 0) - if is_error(r64) goto L51 (error at to_bytes:36) else goto L44 -L44: - r65 = ' of type ' - r66 = '{:{}}' - r67 = CPy_TYPE(val) - r68 = '' - r69 = 'format' - r70 = [r66, r67, r68] - r71 = load_address r70 - r72 = PyObject_VectorcallMethod(r69, r71, 9223372036854775811, 0) - if is_error(r72) goto L55 (error at to_bytes:36) else goto L45 -L45: - dec_ref r67 - r73 = ' to bytes' - r74 = PyList_New(5) - if is_error(r74) goto L56 (error at to_bytes:36) else goto L46 -L46: - r75 = get_element_ptr r74 ob_item :: PyListObject - r76 = load_mem r75 :: ptr* - inc_ref r58 - set_mem r76, r58 :: builtins.object* - r77 = r76 + 8 - set_mem r77, r64 :: builtins.object* - inc_ref r65 - r78 = r76 + 16 - set_mem r78, r65 :: builtins.object* - r79 = r76 + 24 - set_mem r79, r72 :: builtins.object* - inc_ref r73 - r80 = r76 + 32 - set_mem r80, r73 :: builtins.object* - r81 = PyUnicode_Join(r57, r74) - dec_ref r74 - if is_error(r81) goto L51 (error at to_bytes:36) else goto L47 -L47: - r82 = builtins :: module - r83 = 'TypeError' - r84 = CPyObject_GetAttr(r82, r83) - if is_error(r84) goto L57 (error at to_bytes:36) else goto L48 -L48: - r85 = [r81] - r86 = load_address r85 - r87 = PyObject_Vectorcall(r84, r86, 1, 0) - dec_ref r84 - if is_error(r87) goto L57 (error at to_bytes:36) else goto L49 -L49: - dec_ref r81 - CPy_Raise(r87) - dec_ref r87 - if not 0 goto L51 (error at to_bytes:36) else goto L50 :: bool -L50: - unreachable -L51: - r88 = :: bytes - return r88 -L52: - dec_ref r29 - goto L51 -L53: - dec_ref r36 :: int - goto L51 -L54: - dec_ref r40 - goto L51 -L55: - dec_ref r64 - dec_ref r67 - goto L51 -L56: - dec_ref r64 - dec_ref r72 - goto L51 -L57: - dec_ref r81 - goto L51 - -def hexstr_to_bytes(hexstr): - hexstr, r0, r1 :: str - r2 :: tuple[str, str] - r3 :: object - r4 :: bool - r5 :: object - r6, non_prefixed_hex :: str - r7 :: native_int - r8 :: bit - r9 :: short_int - r10 :: int - r11 :: bit - r12, r13, padded_hex :: str - r14 :: bytes - r15 :: tuple[object, object, object] - r16 :: object - r17 :: str - r18 :: object - r19 :: bit - r20, r21, r22 :: str - r23 :: object - r24 :: str - r25 :: object - r26 :: object[1] - r27 :: object_ptr - r28 :: object - r29 :: bit - r30 :: object - r31 :: bool - r32 :: object[1] - r33 :: object_ptr - r34 :: object - r35, r36 :: bytes -L0: - r0 = '0x' - r1 = '0X' - inc_ref r0 - inc_ref r1 - r2 = (r0, r1) - r3 = box(tuple[str, str], r2) - r4 = CPyStr_Startswith(hexstr, r3) - dec_ref r3 - if is_error(r4) goto L31 (error at hexstr_to_bytes:40) else goto L1 -L1: - if r4 goto L2 else goto L5 :: bool -L2: - r5 = CPyStr_GetSlice(hexstr, 4, 9223372036854775806) - if is_error(r5) goto L31 (error at hexstr_to_bytes:41) else goto L3 -L3: - r6 = cast(str, r5) - if is_error(r6) goto L31 (error at hexstr_to_bytes:41) else goto L4 -L4: - non_prefixed_hex = r6 - goto L6 -L5: - inc_ref hexstr - non_prefixed_hex = hexstr -L6: - r7 = CPyStr_Size_size_t(hexstr) - r8 = r7 >= 0 :: signed - if not r8 goto L32 (error at hexstr_to_bytes:46) else goto L7 :: bool -L7: - r9 = r7 << 1 - r10 = CPyTagged_Remainder(r9, 4) - if is_error(r10) goto L32 (error at hexstr_to_bytes:46) else goto L8 -L8: - r11 = r10 != 0 - dec_ref r10 :: int - if r11 goto L9 else goto L11 :: bool -L9: - r12 = '0' - r13 = PyUnicode_Concat(r12, non_prefixed_hex) - dec_ref non_prefixed_hex - if is_error(r13) goto L31 (error at hexstr_to_bytes:47) else goto L10 -L10: - padded_hex = r13 - goto L12 -L11: - padded_hex = non_prefixed_hex -L12: - r14 = PyUnicode_AsASCIIString(padded_hex) - if is_error(r14) goto L14 (error at hexstr_to_bytes:52) else goto L33 -L13: - goto L25 -L14: - r15 = CPy_CatchError() - r16 = builtins :: module - r17 = 'UnicodeDecodeError' - r18 = CPyObject_GetAttr(r16, r17) - if is_error(r18) goto L34 (error at hexstr_to_bytes:53) else goto L15 -L15: - r19 = CPy_ExceptionMatches(r18) - dec_ref r18 - if r19 goto L16 else goto L35 :: bool -L16: - r20 = 'hex string ' - r21 = ' may only contain [0-9a-fA-F] characters' - r22 = CPyStr_Build(3, r20, padded_hex, r21) - dec_ref padded_hex - if is_error(r22) goto L23 (error at hexstr_to_bytes:55) else goto L17 -L17: - r23 = builtins :: module - r24 = 'ValueError' - r25 = CPyObject_GetAttr(r23, r24) - if is_error(r25) goto L36 (error at hexstr_to_bytes:54) else goto L18 -L18: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L36 (error at hexstr_to_bytes:54) else goto L19 -L19: - dec_ref r22 - CPy_Raise(r28) - dec_ref r28 - if not 0 goto L23 (error at hexstr_to_bytes:54) else goto L37 :: bool -L20: - unreachable -L21: - CPy_Reraise() - if not 0 goto L23 else goto L38 :: bool -L22: - unreachable -L23: - CPy_RestoreExcInfo(r15) - dec_ref r15 - r29 = CPy_KeepPropagating() - if not r29 goto L31 else goto L24 :: bool -L24: - unreachable -L25: - r30 = faster_hexbytes._utils.unhexlify :: static - if is_error(r30) goto L39 else goto L28 -L26: - r31 = raise NameError('value for final name "unhexlify" was not set') - if not r31 goto L31 (error at hexstr_to_bytes:58) else goto L27 :: bool -L27: - unreachable -L28: - r32 = [r14] - r33 = load_address r32 - r34 = PyObject_Vectorcall(r30, r33, 1, 0) - if is_error(r34) goto L40 (error at hexstr_to_bytes:58) else goto L29 -L29: - dec_ref r14 - r35 = cast(bytes, r34) - if is_error(r35) goto L31 (error at hexstr_to_bytes:58) else goto L30 -L30: - return r35 -L31: - r36 = :: bytes - return r36 -L32: - dec_ref non_prefixed_hex - goto L31 -L33: - dec_ref padded_hex - goto L13 -L34: - dec_ref padded_hex - goto L23 -L35: - dec_ref padded_hex - goto L21 -L36: - dec_ref r22 - goto L23 -L37: - dec_ref r15 - goto L20 -L38: - dec_ref r15 - goto L22 -L39: - dec_ref r14 - goto L26 -L40: - dec_ref r14 - goto L31 - -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4 :: object - r5 :: object_ptr - r6 :: object_ptr[1] - r7 :: c_ptr - r8 :: native_int[1] - r9 :: c_ptr - r10 :: object - r11 :: dict - r12, r13 :: str - r14 :: bit - r15 :: object - r16 :: str - r17 :: dict - r18, r19 :: object - r20 :: str - r21 :: object - r22 :: dict - r23 :: str - r24 :: i32 - r25 :: bit - r26 :: None -L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool -L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L8 (error at :-1) else goto L2 -L2: - builtins = r4 :: module - dec_ref r4 -L3: - r5 = load_address binascii :: module - r6 = [r5] - r7 = load_address r6 - r8 = [1] - r9 = load_address r8 - r10 = (('binascii', 'binascii', 'binascii'),) - r11 = faster_hexbytes._utils.globals :: static - r12 = 'faster_hexbytes/_utils.py' - r13 = '' - r14 = CPyImport_ImportMany(r10, r7, r11, r12, r13, r9) - if not r14 goto L8 else goto L4 :: bool -L4: - r15 = ('Final', 'Union') - r16 = 'typing' - r17 = faster_hexbytes._utils.globals :: static - r18 = CPyImport_ImportFromMany(r16, r15, r15, r17) - if is_error(r18) goto L8 (error at :2) else goto L5 -L5: - typing = r18 :: module - dec_ref r18 - r19 = binascii :: module - r20 = 'unhexlify' - r21 = CPyObject_GetAttr(r19, r20) - if is_error(r21) goto L8 (error at :8) else goto L6 -L6: - faster_hexbytes._utils.unhexlify = r21 :: static - r22 = faster_hexbytes._utils.globals :: static - r23 = 'unhexlify' - r24 = CPyDict_SetItem(r22, r23, r21) - dec_ref r21 - r25 = r24 >= 0 :: signed - if not r25 goto L8 (error at :8) else goto L7 :: bool -L7: - return 1 -L8: - r26 = :: None - return r26 - -def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __new___HexBytes_obj.__call__(__mypyc_self__, cls, val): - __mypyc_self__ :: faster_hexbytes.main.__new___HexBytes_obj - cls :: object - val :: union[bytes, str, bool, object, int] - r0 :: bytes - r1 :: object - r2 :: bool - r3 :: object[2] - r4 :: object_ptr - r5 :: object - r6, r7 :: faster_hexbytes.main.HexBytes -L0: - r0 = to_bytes(val) - if is_error(r0) goto L7 (error at __new__:50) else goto L1 -L1: - r1 = faster_hexbytes.main._bytes_new :: static - if is_error(r1) goto L8 else goto L4 -L2: - r2 = raise NameError('value for final name "_bytes_new" was not set') - if not r2 goto L7 (error at __new__:51) else goto L3 :: bool -L3: - unreachable -L4: - r3 = [cls, r0] - r4 = load_address r3 - r5 = PyObject_Vectorcall(r1, r4, 2, 0) - if is_error(r5) goto L9 (error at __new__:51) else goto L5 -L5: - dec_ref r0 - r6 = cast(faster_hexbytes.main.HexBytes, r5) - if is_error(r6) goto L7 (error at __new__:51) else goto L6 -L6: - return r6 -L7: - r7 = :: faster_hexbytes.main.HexBytes - return r7 -L8: - dec_ref r0 - goto L2 -L9: - dec_ref r0 - goto L7 - -def __getitem___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __getitem___HexBytes_obj.__call__(__mypyc_self__, self, key): - __mypyc_self__ :: faster_hexbytes.main.__getitem___HexBytes_obj - self :: faster_hexbytes.main.HexBytes - key, r0 :: object - r1 :: str - r2 :: object[3] - r3 :: object_ptr - r4 :: object - r5 :: union[int, bytes] - r6 :: bit - r7 :: int - r8, r9, r10 :: object - r11 :: bit - r12 :: bytes - r13 :: object - r14 :: object[1] - r15 :: object_ptr - r16 :: object - r17 :: faster_hexbytes.main.HexBytes - r18 :: bytes - r19 :: object[1] - r20 :: object_ptr - r21 :: object - r22 :: faster_hexbytes.main.HexBytes - r23 :: union[int, faster_hexbytes.main.HexBytes] -L0: - r0 = load_address PyBytes_Type - r1 = '__getitem__' - r2 = [r0, self, key] - r3 = load_address r2 - r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775811, 0) - if is_error(r4) goto L14 (error at __getitem__:64) else goto L1 -L1: - r5 = cast(union[int, bytes], r4) - if is_error(r5) goto L14 (error at __getitem__:64) else goto L2 -L2: - r6 = PyLong_Check(r5) - if r6 goto L3 else goto L5 :: bool -L3: - r7 = unbox(int, r5) - dec_ref r5 - if is_error(r7) goto L14 (error at __getitem__:66) else goto L4 -L4: - r8 = box(int, r7) - return r8 -L5: - r9 = CPy_TYPE(self) - r10 = faster_hexbytes.main.HexBytes :: type - r11 = r9 == r10 - if r11 goto L15 else goto L10 :: bool -L6: - r12 = cast(bytes, r5) - if is_error(r12) goto L14 (error at __getitem__:70) else goto L7 -L7: - r13 = faster_hexbytes.main.HexBytes :: type - r14 = [r12] - r15 = load_address r14 - r16 = PyObject_Vectorcall(r13, r15, 1, 0) - if is_error(r16) goto L16 (error at __getitem__:70) else goto L8 -L8: - dec_ref r12 - r17 = cast(faster_hexbytes.main.HexBytes, r16) - if is_error(r17) goto L14 (error at __getitem__:70) else goto L9 -L9: - return r17 -L10: - r18 = cast(bytes, r5) - if is_error(r18) goto L17 (error at __getitem__:71) else goto L11 -L11: - r19 = [r18] - r20 = load_address r19 - r21 = PyObject_Vectorcall(r9, r20, 1, 0) - dec_ref r9 - if is_error(r21) goto L18 (error at __getitem__:71) else goto L12 -L12: - dec_ref r18 - r22 = cast(faster_hexbytes.main.HexBytes, r21) - if is_error(r22) goto L14 (error at __getitem__:71) else goto L13 -L13: - return r22 + return r22 L14: r23 = :: union[int, faster_hexbytes.main.HexBytes] return r23 @@ -774,74 +200,31 @@ L4: def __repr___HexBytes_obj.__call__(__mypyc_self__, self): __mypyc_self__ :: faster_hexbytes.main.__repr___HexBytes_obj self :: faster_hexbytes.main.HexBytes - r0, r1, r2, r3, r4 :: str - r5 :: object[1] - r6 :: object_ptr - r7 :: object - r8, r9, r10, r11 :: str - r12 :: object[3] - r13 :: object_ptr - r14 :: object - r15, r16 :: str - r17 :: list - r18, r19, r20, r21 :: ptr - r22, r23 :: str + r0, r1 :: str + r2 :: object[1] + r3 :: object_ptr + r4 :: object + r5, r6, r7, r8 :: str L0: - r0 = '' - r1 = 'HexBytes(' - r2 = '{!r:{}}' - r3 = '0x' - r4 = 'hex' - r5 = [self] - r6 = load_address r5 - r7 = PyObject_VectorcallMethod(r4, r6, 9223372036854775809, 0) - if is_error(r7) goto L8 (error at __repr__:74) else goto L1 + r0 = "HexBytes('0x" + r1 = 'hex' + r2 = [self] + r3 = load_address r2 + r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775809, 0) + if is_error(r4) goto L4 (error at __repr__:74) else goto L1 L1: - r8 = cast(str, r7) - if is_error(r8) goto L8 (error at __repr__:74) else goto L2 + r5 = cast(str, r4) + if is_error(r5) goto L4 (error at __repr__:74) else goto L2 L2: - r9 = PyUnicode_Concat(r3, r8) - dec_ref r8 - if is_error(r9) goto L8 (error at __repr__:74) else goto L3 + r6 = "')" + r7 = CPyStr_Build(3, r0, r5, r6) + dec_ref r5 + if is_error(r7) goto L4 (error at __repr__:74) else goto L3 L3: - r10 = '' - r11 = 'format' - r12 = [r2, r9, r10] - r13 = load_address r12 - r14 = PyObject_VectorcallMethod(r11, r13, 9223372036854775811, 0) - if is_error(r14) goto L9 (error at __repr__:74) else goto L4 + return r7 L4: - dec_ref r9 - r15 = cast(str, r14) - if is_error(r15) goto L8 (error at __repr__:74) else goto L5 -L5: - r16 = ')' - r17 = PyList_New(3) - if is_error(r17) goto L10 (error at __repr__:74) else goto L6 -L6: - r18 = get_element_ptr r17 ob_item :: PyListObject - r19 = load_mem r18 :: ptr* - inc_ref r1 - set_mem r19, r1 :: builtins.object* - r20 = r19 + 8 - set_mem r20, r15 :: builtins.object* - inc_ref r16 - r21 = r19 + 16 - set_mem r21, r16 :: builtins.object* - r22 = PyUnicode_Join(r0, r17) - dec_ref r17 - if is_error(r22) goto L8 (error at __repr__:74) else goto L7 -L7: - return r22 -L8: - r23 = :: str - return r23 -L9: - dec_ref r9 - goto L8 -L10: - dec_ref r15 - goto L8 + r8 = :: str + return r8 def to_0x_hex_HexBytes_obj.__get__(__mypyc_self__, instance, owner): __mypyc_self__, instance, owner, r0 :: object @@ -1852,801 +1235,628 @@ L3: r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) if is_error(r9) goto L12 (error at :1) else goto L4 L4: - importlib.metadata = r9 :: module - dec_ref r9 - r10 = ('HexBytes',) - r11 = 'faster_hexbytes.main' - r12 = faster_hexbytes.globals :: static - r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) - if is_error(r13) goto L12 (error at :5) else goto L5 -L5: - faster_hexbytes.main = r13 :: module - dec_ref r13 - r14 = 'HexBytes' - r15 = PyList_New(1) - if is_error(r15) goto L12 (error at :9) else goto L6 -L6: - r16 = get_element_ptr r15 ob_item :: PyListObject - r17 = load_mem r16 :: ptr* - inc_ref r14 - set_mem r17, r14 :: builtins.object* - r18 = faster_hexbytes.globals :: static - r19 = '__all__' - r20 = CPyDict_SetItem(r18, r19, r15) - dec_ref r15 - r21 = r20 >= 0 :: signed - if not r21 goto L12 (error at :9) else goto L7 :: bool -L7: - r22 = 'hexbytes' - r23 = faster_hexbytes.globals :: static - r24 = '__version' - r25 = CPyDict_GetItem(r23, r24) - if is_error(r25) goto L12 (error at :11) else goto L8 -L8: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L12 (error at :11) else goto L9 -L9: - r29 = cast(str, r28) - if is_error(r29) goto L12 (error at :11) else goto L10 -L10: - r30 = faster_hexbytes.globals :: static - r31 = '__version__' - r32 = CPyDict_SetItem(r30, r31, r29) - dec_ref r29 - r33 = r32 >= 0 :: signed - if not r33 goto L12 (error at :11) else goto L11 :: bool -L11: - return 1 -L12: - r34 = :: None - return r34 - -def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __new___HexBytes_obj.__call__(__mypyc_self__, cls, val): - __mypyc_self__ :: faster_hexbytes.main.__new___HexBytes_obj - cls :: object - val :: union[bytes, str, bool, object, int] - r0 :: bytes - r1 :: object - r2 :: bool - r3 :: object[2] - r4 :: object_ptr - r5 :: object - r6, r7 :: faster_hexbytes.main.HexBytes -L0: - r0 = to_bytes(val) - if is_error(r0) goto L7 (error at __new__:49) else goto L1 -L1: - r1 = faster_hexbytes.main._bytes_new :: static - if is_error(r1) goto L8 else goto L4 -L2: - r2 = raise NameError('value for final name "_bytes_new" was not set') - if not r2 goto L7 (error at __new__:50) else goto L3 :: bool -L3: - unreachable -L4: - r3 = [cls, r0] - r4 = load_address r3 - r5 = PyObject_Vectorcall(r1, r4, 2, 0) - if is_error(r5) goto L9 (error at __new__:50) else goto L5 -L5: - dec_ref r0 - r6 = cast(faster_hexbytes.main.HexBytes, r5) - if is_error(r6) goto L7 (error at __new__:50) else goto L6 -L6: - return r6 -L7: - r7 = :: faster_hexbytes.main.HexBytes - return r7 -L8: - dec_ref r0 - goto L2 -L9: - dec_ref r0 - goto L7 - -def __getitem___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __getitem___HexBytes_obj.__call__(__mypyc_self__, self, key): - __mypyc_self__ :: faster_hexbytes.main.__getitem___HexBytes_obj - self :: faster_hexbytes.main.HexBytes - key, r0 :: object - r1 :: str - r2 :: object[3] - r3 :: object_ptr - r4 :: object - r5 :: union[int, bytes] - r6 :: bit - r7 :: int - r8, r9, r10 :: object - r11 :: bit - r12 :: bytes - r13 :: object - r14 :: object[1] - r15 :: object_ptr - r16 :: object - r17 :: faster_hexbytes.main.HexBytes - r18 :: bytes - r19 :: object[1] - r20 :: object_ptr - r21 :: object - r22 :: faster_hexbytes.main.HexBytes - r23 :: union[int, faster_hexbytes.main.HexBytes] -L0: - r0 = load_address PyBytes_Type - r1 = '__getitem__' - r2 = [r0, self, key] - r3 = load_address r2 - r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775811, 0) - if is_error(r4) goto L14 (error at __getitem__:63) else goto L1 -L1: - r5 = cast(union[int, bytes], r4) - if is_error(r5) goto L14 (error at __getitem__:63) else goto L2 -L2: - r6 = PyLong_Check(r5) - if r6 goto L3 else goto L5 :: bool -L3: - r7 = unbox(int, r5) - dec_ref r5 - if is_error(r7) goto L14 (error at __getitem__:65) else goto L4 -L4: - r8 = box(int, r7) - return r8 + importlib.metadata = r9 :: module + dec_ref r9 + r10 = ('HexBytes',) + r11 = 'faster_hexbytes.main' + r12 = faster_hexbytes.globals :: static + r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) + if is_error(r13) goto L12 (error at :5) else goto L5 L5: - r9 = CPy_TYPE(self) - r10 = faster_hexbytes.main.HexBytes :: type - r11 = r9 == r10 - if r11 goto L15 else goto L10 :: bool + faster_hexbytes.main = r13 :: module + dec_ref r13 + r14 = 'HexBytes' + r15 = PyList_New(1) + if is_error(r15) goto L12 (error at :9) else goto L6 L6: - r12 = cast(bytes, r5) - if is_error(r12) goto L14 (error at __getitem__:69) else goto L7 + r16 = get_element_ptr r15 ob_item :: PyListObject + r17 = load_mem r16 :: ptr* + inc_ref r14 + set_mem r17, r14 :: builtins.object* + r18 = faster_hexbytes.globals :: static + r19 = '__all__' + r20 = CPyDict_SetItem(r18, r19, r15) + dec_ref r15 + r21 = r20 >= 0 :: signed + if not r21 goto L12 (error at :9) else goto L7 :: bool L7: - r13 = faster_hexbytes.main.HexBytes :: type - r14 = [r12] - r15 = load_address r14 - r16 = PyObject_Vectorcall(r13, r15, 1, 0) - if is_error(r16) goto L16 (error at __getitem__:69) else goto L8 + r22 = 'hexbytes' + r23 = faster_hexbytes.globals :: static + r24 = '__version' + r25 = CPyDict_GetItem(r23, r24) + if is_error(r25) goto L12 (error at :11) else goto L8 L8: - dec_ref r12 - r17 = cast(faster_hexbytes.main.HexBytes, r16) - if is_error(r17) goto L14 (error at __getitem__:69) else goto L9 + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L12 (error at :11) else goto L9 L9: - return r17 + r29 = cast(str, r28) + if is_error(r29) goto L12 (error at :11) else goto L10 L10: - r18 = cast(bytes, r5) - if is_error(r18) goto L17 (error at __getitem__:70) else goto L11 + r30 = faster_hexbytes.globals :: static + r31 = '__version__' + r32 = CPyDict_SetItem(r30, r31, r29) + dec_ref r29 + r33 = r32 >= 0 :: signed + if not r33 goto L12 (error at :11) else goto L11 :: bool L11: - r19 = [r18] - r20 = load_address r19 - r21 = PyObject_Vectorcall(r9, r20, 1, 0) - dec_ref r9 - if is_error(r21) goto L18 (error at __getitem__:70) else goto L12 + return 1 L12: - dec_ref r18 - r22 = cast(faster_hexbytes.main.HexBytes, r21) - if is_error(r22) goto L14 (error at __getitem__:70) else goto L13 -L13: - return r22 -L14: - r23 = :: union[int, faster_hexbytes.main.HexBytes] - return r23 -L15: - dec_ref r9 - goto L6 -L16: - dec_ref r12 - goto L14 -L17: - dec_ref r9 - goto L14 -L18: - dec_ref r18 - goto L14 - -def __repr___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __repr___HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.__repr___HexBytes_obj - self :: faster_hexbytes.main.HexBytes - r0, r1 :: str - r2 :: object[1] - r3 :: object_ptr - r4 :: object - r5, r6, r7, r8 :: str -L0: - r0 = "HexBytes('0x" - r1 = 'hex' - r2 = [self] - r3 = load_address r2 - r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775809, 0) - if is_error(r4) goto L4 (error at __repr__:73) else goto L1 -L1: - r5 = cast(str, r4) - if is_error(r5) goto L4 (error at __repr__:73) else goto L2 -L2: - r6 = "')" - r7 = CPyStr_Build(3, r0, r5, r6) - dec_ref r5 - if is_error(r7) goto L4 (error at __repr__:73) else goto L3 -L3: - return r7 -L4: - r8 = :: str - return r8 - -def to_0x_hex_HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def to_0x_hex_HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.to_0x_hex_HexBytes_obj - self :: faster_hexbytes.main.HexBytes - r0, r1 :: str - r2 :: object[1] - r3 :: object_ptr - r4 :: object - r5, r6, r7 :: str -L0: - r0 = '0x' - r1 = 'hex' - r2 = [self] - r3 = load_address r2 - r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775809, 0) - if is_error(r4) goto L4 (error at to_0x_hex:79) else goto L1 -L1: - r5 = cast(str, r4) - if is_error(r5) goto L4 (error at to_0x_hex:79) else goto L2 -L2: - r6 = CPyStr_Build(2, r0, r5) - dec_ref r5 - if is_error(r6) goto L4 (error at to_0x_hex:79) else goto L3 -L3: - return r6 -L4: - r7 = :: str - return r7 - -def __reduce___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 + r34 = :: None + return r34 -def __reduce___HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.__reduce___HexBytes_obj - self :: faster_hexbytes.main.HexBytes - r0 :: object - r1 :: bool - r2, r3 :: object - r4 :: object[1] - r5 :: object_ptr +def to_bytes(val): + val :: union[bytes, str, object, bool, int] + r0 :: bit + r1 :: bytes + r2 :: bit + r3 :: str + r4 :: bytes + r5 :: bit r6 :: object - r7 :: bytes - r8 :: tuple[object, bytes] - r9, r10 :: tuple[object, tuple[object, bytes]] + r7 :: object[1] + r8 :: object_ptr + r9 :: object + r10 :: bytes + r11 :: bit + r12 :: bool + r13, r14, r15 :: bytes + r16 :: bit + r17 :: int + r18 :: native_int + r19 :: bit + r20 :: native_int + r21, r22 :: bit + r23 :: bool + r24 :: bit + r25 :: str + r26 :: int + r27, r28, r29 :: str + r30 :: object + r31 :: str + r32 :: object + r33 :: object[1] + r34 :: object_ptr + r35 :: object + r36 :: int + r37 :: object + r38 :: str + r39, r40 :: object + r41 :: object[1] + r42 :: object_ptr + r43 :: object + r44 :: str + r45 :: bytes + r46 :: object + r47 :: str + r48 :: object + r49 :: i32 + r50 :: bit + r51 :: bool + r52 :: object + r53 :: object[1] + r54 :: object_ptr + r55 :: object + r56 :: bytes + r57, r58, r59, r60, r61 :: str + r62 :: object[3] + r63 :: object_ptr + r64 :: object + r65, r66 :: str + r67 :: object + r68, r69 :: str + r70 :: object[3] + r71 :: object_ptr + r72 :: object + r73 :: str + r74 :: list + r75, r76, r77, r78, r79, r80 :: ptr + r81 :: str + r82 :: object + r83 :: str + r84 :: object + r85 :: object[1] + r86 :: object_ptr + r87 :: object + r88 :: bytes L0: - r0 = faster_hexbytes.main._bytes_new :: static - if is_error(r0) goto L1 else goto L3 + r0 = PyBytes_Check(val) + if r0 goto L1 else goto L3 :: bool L1: - r1 = raise NameError('value for final name "_bytes_new" was not set') - if not r1 goto L6 (error at __reduce__:89) else goto L2 :: bool + inc_ref val + r1 = cast(bytes, val) + if is_error(r1) goto L51 (error at to_bytes:19) else goto L2 L2: - unreachable + return r1 L3: - r2 = CPy_TYPE(self) - r3 = load_address PyBytes_Type - r4 = [self] - r5 = load_address r4 - r6 = PyObject_Vectorcall(r3, r5, 1, 0) - if is_error(r6) goto L7 (error at __reduce__:89) else goto L4 + r2 = PyUnicode_Check(val) + if r2 goto L4 else goto L7 :: bool L4: - r7 = cast(bytes, r6) - if is_error(r7) goto L7 (error at __reduce__:89) else goto L5 + inc_ref val + r3 = cast(str, val) + if is_error(r3) goto L51 (error at to_bytes:21) else goto L5 L5: - r8 = (r2, r7) - inc_ref r0 - r9 = (r0, r8) - return r9 + r4 = hexstr_to_bytes(r3) + dec_ref r3 + if is_error(r4) goto L51 (error at to_bytes:21) else goto L6 L6: - r10 = :: tuple[object, tuple[object, bytes]] - return r10 + return r4 L7: - dec_ref r2 - goto L6 + r5 = PyByteArray_Check(val) + if r5 goto L8 else goto L11 :: bool +L8: + r6 = load_address PyBytes_Type + r7 = [val] + r8 = load_address r7 + r9 = PyObject_Vectorcall(r6, r8, 1, 0) + if is_error(r9) goto L51 (error at to_bytes:23) else goto L9 +L9: + r10 = cast(bytes, r9) + if is_error(r10) goto L51 (error at to_bytes:23) else goto L10 +L10: + return r10 +L11: + r11 = PyBool_Check(val) + if r11 goto L12 else goto L17 :: bool +L12: + r12 = unbox(bool, val) + if is_error(r12) goto L51 (error at to_bytes:25) else goto L13 +L13: + if r12 goto L14 else goto L15 :: bool +L14: + r13 = b'\x01' + inc_ref r13 + r14 = r13 + goto L16 +L15: + r15 = b'\x00' + inc_ref r15 + r14 = r15 +L16: + return r14 +L17: + r16 = PyLong_Check(val) + if r16 goto L18 else goto L37 :: bool +L18: + r17 = unbox(int, val) + if is_error(r17) goto L51 (error at to_bytes:29) else goto L19 +L19: + r18 = r17 & 1 + r19 = r18 != 0 + if r19 goto L21 else goto L20 :: bool +L20: + r20 = 0 & 1 + r21 = r20 != 0 + if r21 goto L21 else goto L22 :: bool +L21: + r22 = CPyTagged_IsLt_(r17, 0) + r23 = r22 + goto L23 +L22: + r24 = r17 < 0 :: signed + r23 = r24 +L23: + dec_ref r17 :: int + if r23 goto L24 else goto L31 :: bool +L24: + r25 = 'Cannot convert negative integer ' + r26 = unbox(int, val) + if is_error(r26) goto L51 (error at to_bytes:30) else goto L25 +L25: + r27 = CPyTagged_Str(r26) + dec_ref r26 :: int + if is_error(r27) goto L51 (error at to_bytes:30) else goto L26 +L26: + r28 = ' to bytes' + r29 = CPyStr_Build(3, r25, r27, r28) + dec_ref r27 + if is_error(r29) goto L51 (error at to_bytes:30) else goto L27 +L27: + r30 = builtins :: module + r31 = 'ValueError' + r32 = CPyObject_GetAttr(r30, r31) + if is_error(r32) goto L52 (error at to_bytes:30) else goto L28 +L28: + r33 = [r29] + r34 = load_address r33 + r35 = PyObject_Vectorcall(r32, r34, 1, 0) + dec_ref r32 + if is_error(r35) goto L52 (error at to_bytes:30) else goto L29 +L29: + dec_ref r29 + CPy_Raise(r35) + dec_ref r35 + if not 0 goto L51 (error at to_bytes:30) else goto L30 :: bool +L30: + unreachable +L31: + r36 = unbox(int, val) + if is_error(r36) goto L51 (error at to_bytes:32) else goto L32 +L32: + r37 = builtins :: module + r38 = 'hex' + r39 = CPyObject_GetAttr(r37, r38) + if is_error(r39) goto L53 (error at to_bytes:32) else goto L33 +L33: + r40 = box(int, r36) + r41 = [r40] + r42 = load_address r41 + r43 = PyObject_Vectorcall(r39, r42, 1, 0) + dec_ref r39 + if is_error(r43) goto L54 (error at to_bytes:32) else goto L34 +L34: + dec_ref r40 + r44 = cast(str, r43) + if is_error(r44) goto L51 (error at to_bytes:32) else goto L35 +L35: + r45 = to_bytes(r44) + dec_ref r44 + if is_error(r45) goto L51 (error at to_bytes:32) else goto L36 +L36: + return r45 +L37: + r46 = builtins :: module + r47 = 'memoryview' + r48 = CPyObject_GetAttr(r46, r47) + if is_error(r48) goto L51 (error at to_bytes:33) else goto L38 +L38: + r49 = PyObject_IsInstance(val, r48) + dec_ref r48 + r50 = r49 >= 0 :: signed + if not r50 goto L51 (error at to_bytes:33) else goto L39 :: bool +L39: + r51 = truncate r49: i32 to builtins.bool + if r51 goto L40 else goto L43 :: bool +L40: + r52 = load_address PyBytes_Type + r53 = [val] + r54 = load_address r53 + r55 = PyObject_Vectorcall(r52, r54, 1, 0) + if is_error(r55) goto L51 (error at to_bytes:34) else goto L41 +L41: + r56 = cast(bytes, r55) + if is_error(r56) goto L51 (error at to_bytes:34) else goto L42 +L42: + return r56 +L43: + r57 = '' + r58 = 'Cannot convert ' + r59 = '{!r:{}}' + r60 = '' + r61 = 'format' + r62 = [r59, val, r60] + r63 = load_address r62 + r64 = PyObject_VectorcallMethod(r61, r63, 9223372036854775811, 0) + if is_error(r64) goto L51 (error at to_bytes:36) else goto L44 +L44: + r65 = ' of type ' + r66 = '{:{}}' + r67 = CPy_TYPE(val) + r68 = '' + r69 = 'format' + r70 = [r66, r67, r68] + r71 = load_address r70 + r72 = PyObject_VectorcallMethod(r69, r71, 9223372036854775811, 0) + if is_error(r72) goto L55 (error at to_bytes:36) else goto L45 +L45: + dec_ref r67 + r73 = ' to bytes' + r74 = PyList_New(5) + if is_error(r74) goto L56 (error at to_bytes:36) else goto L46 +L46: + r75 = get_element_ptr r74 ob_item :: PyListObject + r76 = load_mem r75 :: ptr* + inc_ref r58 + set_mem r76, r58 :: builtins.object* + r77 = r76 + 8 + set_mem r77, r64 :: builtins.object* + inc_ref r65 + r78 = r76 + 16 + set_mem r78, r65 :: builtins.object* + r79 = r76 + 24 + set_mem r79, r72 :: builtins.object* + inc_ref r73 + r80 = r76 + 32 + set_mem r80, r73 :: builtins.object* + r81 = PyUnicode_Join(r57, r74) + dec_ref r74 + if is_error(r81) goto L51 (error at to_bytes:36) else goto L47 +L47: + r82 = builtins :: module + r83 = 'TypeError' + r84 = CPyObject_GetAttr(r82, r83) + if is_error(r84) goto L57 (error at to_bytes:36) else goto L48 +L48: + r85 = [r81] + r86 = load_address r85 + r87 = PyObject_Vectorcall(r84, r86, 1, 0) + dec_ref r84 + if is_error(r87) goto L57 (error at to_bytes:36) else goto L49 +L49: + dec_ref r81 + CPy_Raise(r87) + dec_ref r87 + if not 0 goto L51 (error at to_bytes:36) else goto L50 :: bool +L50: + unreachable +L51: + r88 = :: bytes + return r88 +L52: + dec_ref r29 + goto L51 +L53: + dec_ref r36 :: int + goto L51 +L54: + dec_ref r40 + goto L51 +L55: + dec_ref r64 + dec_ref r67 + goto L51 +L56: + dec_ref r64 + dec_ref r72 + goto L51 +L57: + dec_ref r81 + goto L51 -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4, r5 :: object - r6 :: str - r7 :: dict - r8 :: object - r9 :: object_ptr - r10 :: object_ptr[1] - r11 :: c_ptr - r12 :: native_int[1] - r13 :: c_ptr - r14 :: object - r15 :: dict - r16, r17 :: str - r18 :: bit - r19 :: object - r20 :: str - r21 :: dict - r22, r23 :: object +def hexstr_to_bytes(hexstr): + hexstr, r0, r1 :: str + r2 :: tuple[str, str] + r3 :: object + r4 :: bool + r5 :: object + r6, non_prefixed_hex :: str + r7 :: native_int + r8 :: bit + r9 :: short_int + r10 :: int + r11 :: bit + r12, r13, padded_hex :: str + r14 :: bytes + r15 :: tuple[object, object, object] + r16 :: object + r17 :: str + r18 :: object + r19 :: bit + r20, r21, r22 :: str + r23 :: object r24 :: str - r25 :: dict - r26, r27 :: object - r28 :: str - r29 :: dict + r25 :: object + r26 :: object[1] + r27 :: object_ptr + r28 :: object + r29 :: bit r30 :: object - r31 :: dict - r32 :: str - r33, r34, r35, r36, r37 :: object - r38 :: str - r39, r40, r41 :: object - r42 :: str - r43 :: object - r44 :: tuple[object, object, object, object, object, object] - r45, r46 :: object - r47 :: dict - r48 :: str - r49 :: i32 - r50 :: bit - r51 :: object - r52 :: str - r53 :: object - r54 :: dict - r55 :: str - r56 :: i32 - r57 :: bit - r58 :: object - r59 :: str - r60 :: object - r61 :: tuple - r62, r63 :: object - r64 :: str - r65 :: bool - r66, r67 :: str - r68 :: object - r69 :: object[2] - r70 :: object_ptr - r71 :: object - r72, r73, r74, r75 :: dict - r76 :: faster_hexbytes.main.__new___HexBytes_obj - r77 :: object - r78 :: str - r79 :: object - r80 :: object[1] - r81 :: object_ptr - r82 :: object - r83 :: str - r84 :: i32 - r85 :: bit - r86 :: faster_hexbytes.main.__getitem___HexBytes_obj - r87 :: str - r88 :: i32 - r89 :: bit - r90 :: faster_hexbytes.main.__repr___HexBytes_obj - r91 :: str - r92 :: i32 - r93 :: bit - r94 :: faster_hexbytes.main.to_0x_hex_HexBytes_obj - r95 :: str - r96 :: i32 - r97 :: bit - r98 :: faster_hexbytes.main.__reduce___HexBytes_obj - r99 :: str - r100 :: i32 - r101 :: bit - r102, r103 :: str - r104 :: i32 - r105 :: bit - r106, r107 :: str - r108 :: i32 - r109 :: bit - r110, r111 :: str - r112 :: i32 - r113 :: bit - r114 :: object[3] - r115 :: object_ptr - r116 :: object - r117 :: dict - r118 :: str - r119, r120 :: object - r121 :: object[1] - r122 :: object_ptr - r123, r124 :: object - r125 :: object[1] - r126 :: object_ptr - r127 :: object - r128 :: dict - r129 :: str - r130 :: i32 - r131 :: bit - r132 :: object - r133 :: None + r31 :: bool + r32 :: object[1] + r33 :: object_ptr + r34 :: object + r35, r36 :: bytes L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool + r0 = '0x' + r1 = '0X' + inc_ref r0 + inc_ref r1 + r2 = (r0, r1) + r3 = box(tuple[str, str], r2) + r4 = CPyStr_Startswith(hexstr, r3) + dec_ref r3 + if is_error(r4) goto L31 (error at hexstr_to_bytes:40) else goto L1 L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L48 (error at :-1) else goto L2 + if r4 goto L2 else goto L5 :: bool L2: - builtins = r4 :: module - dec_ref r4 + r5 = CPyStr_GetSlice(hexstr, 4, 9223372036854775806) + if is_error(r5) goto L31 (error at hexstr_to_bytes:41) else goto L3 L3: - r5 = ('TYPE_CHECKING', 'Callable', 'Final', 'Tuple', 'Type', 'Union', 'overload') - r6 = 'typing' - r7 = faster_hexbytes.main.globals :: static - r8 = CPyImport_ImportFromMany(r6, r5, r5, r7) - if is_error(r8) goto L48 (error at :1) else goto L4 + r6 = cast(str, r5) + if is_error(r6) goto L31 (error at hexstr_to_bytes:41) else goto L4 L4: - typing = r8 :: module - dec_ref r8 - r9 = load_address hexbytes.main :: module - r10 = [r9] - r11 = load_address r10 - r12 = [14] - r13 = load_address r12 - r14 = (('hexbytes.main', 'hexbytes.main', 'hexbytes'),) - r15 = faster_hexbytes.main.globals :: static - r16 = 'faster_hexbytes/main.py' - r17 = '' - r18 = CPyImport_ImportMany(r14, r11, r15, r16, r17, r13) - if not r18 goto L48 else goto L5 :: bool + non_prefixed_hex = r6 + goto L6 L5: - r19 = ('mypyc_attr',) - r20 = 'mypy_extensions' - r21 = faster_hexbytes.main.globals :: static - r22 = CPyImport_ImportFromMany(r20, r19, r19, r21) - if is_error(r22) goto L48 (error at :15) else goto L6 + inc_ref hexstr + non_prefixed_hex = hexstr L6: - mypy_extensions = r22 :: module - dec_ref r22 - r23 = ('Self',) - r24 = 'typing_extensions' - r25 = faster_hexbytes.main.globals :: static - r26 = CPyImport_ImportFromMany(r24, r23, r23, r25) - if is_error(r26) goto L48 (error at :18) else goto L7 + r7 = CPyStr_Size_size_t(hexstr) + r8 = r7 >= 0 :: signed + if not r8 goto L32 (error at hexstr_to_bytes:46) else goto L7 :: bool L7: - typing_extensions = r26 :: module - dec_ref r26 - r27 = ('to_bytes',) - r28 = 'faster_hexbytes._utils' - r29 = faster_hexbytes.main.globals :: static - r30 = CPyImport_ImportFromMany(r28, r27, r27, r29) - if is_error(r30) goto L48 (error at :22) else goto L8 + r9 = r7 << 1 + r10 = CPyTagged_Remainder(r9, 4) + if is_error(r10) goto L32 (error at hexstr_to_bytes:46) else goto L8 L8: - faster_hexbytes._utils = r30 :: module - dec_ref r30 - if 0 goto L9 else goto L9 :: bool + r11 = r10 != 0 + dec_ref r10 :: int + if r11 goto L9 else goto L11 :: bool L9: - r31 = faster_hexbytes.main.globals :: static - r32 = 'Union' - r33 = CPyDict_GetItem(r31, r32) - if is_error(r33) goto L48 (error at :31) else goto L10 + r12 = '0' + r13 = PyUnicode_Concat(r12, non_prefixed_hex) + dec_ref non_prefixed_hex + if is_error(r13) goto L31 (error at hexstr_to_bytes:47) else goto L10 L10: - r34 = load_address PyBytes_Type - r35 = load_address PyUnicode_Type - r36 = load_address PyBool_Type - r37 = builtins :: module - r38 = 'bytearray' - r39 = CPyObject_GetAttr(r37, r38) - if is_error(r39) goto L49 (error at :31) else goto L11 + padded_hex = r13 + goto L12 L11: - r40 = load_address PyLong_Type - r41 = builtins :: module - r42 = 'memoryview' - r43 = CPyObject_GetAttr(r41, r42) - if is_error(r43) goto L50 (error at :31) else goto L12 + padded_hex = non_prefixed_hex L12: - inc_ref r34 - inc_ref r35 - inc_ref r36 - inc_ref r40 - r44 = (r34, r35, r36, r39, r40, r43) - r45 = box(tuple[object, object, object, object, object, object], r44) - r46 = PyObject_GetItem(r33, r45) - dec_ref r33 - dec_ref r45 - if is_error(r46) goto L48 (error at :31) else goto L13 + r14 = PyUnicode_AsASCIIString(padded_hex) + if is_error(r14) goto L14 (error at hexstr_to_bytes:52) else goto L33 L13: - r47 = faster_hexbytes.main.globals :: static - r48 = 'BytesLike' - r49 = CPyDict_SetItem(r47, r48, r46) - dec_ref r46 - r50 = r49 >= 0 :: signed - if not r50 goto L48 (error at :31) else goto L14 :: bool + goto L25 L14: - r51 = load_address PyBytes_Type - r52 = '__new__' - r53 = CPyObject_GetAttr(r51, r52) - if is_error(r53) goto L48 (error at :33) else goto L15 + r15 = CPy_CatchError() + r16 = builtins :: module + r17 = 'UnicodeDecodeError' + r18 = CPyObject_GetAttr(r16, r17) + if is_error(r18) goto L34 (error at hexstr_to_bytes:53) else goto L15 L15: - faster_hexbytes.main._bytes_new = r53 :: static - r54 = faster_hexbytes.main.globals :: static - r55 = '_bytes_new' - r56 = CPyDict_SetItem(r54, r55, r53) - dec_ref r53 - r57 = r56 >= 0 :: signed - if not r57 goto L48 (error at :33) else goto L16 :: bool + r19 = CPy_ExceptionMatches(r18) + dec_ref r18 + if r19 goto L16 else goto L35 :: bool L16: - r58 = hexbytes.main :: module - r59 = 'HexBytes' - r60 = CPyObject_GetAttr(r58, r59) - if is_error(r60) goto L48 (error at :37) else goto L17 + r20 = 'hex string ' + r21 = ' may only contain [0-9a-fA-F] characters' + r22 = CPyStr_Build(3, r20, padded_hex, r21) + dec_ref padded_hex + if is_error(r22) goto L23 (error at hexstr_to_bytes:55) else goto L17 L17: - r61 = PyTuple_Pack(1, r60) - dec_ref r60 - if is_error(r61) goto L48 (error at :37) else goto L18 + r23 = builtins :: module + r24 = 'ValueError' + r25 = CPyObject_GetAttr(r23, r24) + if is_error(r25) goto L36 (error at hexstr_to_bytes:54) else goto L18 L18: - r62 = load_address PyType_Type - r63 = CPy_CalculateMetaclass(r62, r61) - if is_error(r63) goto L51 (error at :37) else goto L19 + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L36 (error at hexstr_to_bytes:54) else goto L19 L19: - r64 = '__prepare__' - r65 = PyObject_HasAttr(r63, r64) - if r65 goto L20 else goto L24 :: bool + dec_ref r22 + CPy_Raise(r28) + dec_ref r28 + if not 0 goto L23 (error at hexstr_to_bytes:54) else goto L37 :: bool L20: - r66 = 'HexBytes' - r67 = '__prepare__' - r68 = CPyObject_GetAttr(r63, r67) - if is_error(r68) goto L51 (error at :37) else goto L21 + unreachable L21: - r69 = [r66, r61] - r70 = load_address r69 - r71 = PyObject_Vectorcall(r68, r70, 2, 0) - dec_ref r68 - if is_error(r71) goto L51 (error at :37) else goto L22 + CPy_Reraise() + if not 0 goto L23 else goto L38 :: bool L22: - r72 = cast(dict, r71) - if is_error(r72) goto L51 (error at :37) else goto L23 + unreachable L23: - r73 = r72 - goto L26 + CPy_RestoreExcInfo(r15) + dec_ref r15 + r29 = CPy_KeepPropagating() + if not r29 goto L31 else goto L24 :: bool L24: - r74 = PyDict_New() - if is_error(r74) goto L51 (error at :37) else goto L25 + unreachable L25: - r73 = r74 + r30 = faster_hexbytes._utils.unhexlify :: static + if is_error(r30) goto L39 else goto L28 L26: - r75 = PyDict_New() - if is_error(r75) goto L52 (error at :37) else goto L27 + r31 = raise NameError('value for final name "unhexlify" was not set') + if not r31 goto L31 (error at hexstr_to_bytes:58) else goto L27 :: bool L27: - r76 = __new___HexBytes_obj() - if is_error(r76) goto L53 (error at :48) else goto L28 + unreachable L28: - r77 = builtins :: module - r78 = 'staticmethod' - r79 = CPyObject_GetAttr(r77, r78) - if is_error(r79) goto L54 (error at :48) else goto L29 + r32 = [r14] + r33 = load_address r32 + r34 = PyObject_Vectorcall(r30, r33, 1, 0) + if is_error(r34) goto L40 (error at hexstr_to_bytes:58) else goto L29 L29: - r80 = [r76] - r81 = load_address r80 - r82 = PyObject_Vectorcall(r79, r81, 1, 0) - dec_ref r79 - if is_error(r82) goto L54 (error at :48) else goto L30 + dec_ref r14 + r35 = cast(bytes, r34) + if is_error(r35) goto L31 (error at hexstr_to_bytes:58) else goto L30 L30: - dec_ref r76 - r83 = '__new__' - r84 = CPyDict_SetItem(r73, r83, r82) - dec_ref r82 - r85 = r84 >= 0 :: signed - if not r85 goto L53 (error at :48) else goto L31 :: bool + return r35 L31: - r86 = __getitem___HexBytes_obj() - if is_error(r86) goto L53 (error at :60) else goto L32 + r36 = :: bytes + return r36 L32: - r87 = '__getitem__' - r88 = CPyDict_SetItem(r73, r87, r86) - dec_ref r86 - r89 = r88 >= 0 :: signed - if not r89 goto L53 (error at :60) else goto L33 :: bool + dec_ref non_prefixed_hex + goto L31 L33: - r90 = __repr___HexBytes_obj() - if is_error(r90) goto L53 (error at :72) else goto L34 + dec_ref padded_hex + goto L13 L34: - r91 = '__repr__' - r92 = CPyDict_SetItem(r73, r91, r90) - dec_ref r90 - r93 = r92 >= 0 :: signed - if not r93 goto L53 (error at :72) else goto L35 :: bool + dec_ref padded_hex + goto L23 L35: - r94 = to_0x_hex_HexBytes_obj() - if is_error(r94) goto L53 (error at :75) else goto L36 + dec_ref padded_hex + goto L21 L36: - r95 = 'to_0x_hex' - r96 = CPyDict_SetItem(r73, r95, r94) - dec_ref r94 - r97 = r96 >= 0 :: signed - if not r97 goto L53 (error at :75) else goto L37 :: bool + dec_ref r22 + goto L23 L37: - r98 = __reduce___HexBytes_obj() - if is_error(r98) goto L53 (error at :81) else goto L38 + dec_ref r15 + goto L20 L38: - r99 = '__reduce__' - r100 = CPyDict_SetItem(r73, r99, r98) - dec_ref r98 - r101 = r100 >= 0 :: signed - if not r101 goto L53 (error at :81) else goto L39 :: bool + dec_ref r15 + goto L22 L39: - r102 = 'HexBytes' - r103 = '__annotations__' - r104 = CPyDict_SetItem(r73, r103, r75) - dec_ref r75 - r105 = r104 >= 0 :: signed - if not r105 goto L52 (error at :37) else goto L40 :: bool + dec_ref r14 + goto L26 L40: - r106 = 'mypyc filler docstring' - r107 = '__doc__' - r108 = CPyDict_SetItem(r73, r107, r106) - r109 = r108 >= 0 :: signed - if not r109 goto L52 (error at :37) else goto L41 :: bool -L41: - r110 = 'faster_hexbytes.main' - r111 = '__module__' - r112 = CPyDict_SetItem(r73, r111, r110) - r113 = r112 >= 0 :: signed - if not r113 goto L52 (error at :37) else goto L42 :: bool -L42: - r114 = [r102, r61, r73] - r115 = load_address r114 - r116 = PyObject_Vectorcall(r63, r115, 3, 0) - if is_error(r116) goto L52 (error at :37) else goto L43 -L43: - dec_ref r73 - dec_ref r61 - r117 = faster_hexbytes.main.globals :: static - r118 = 'mypyc_attr' - r119 = CPyDict_GetItem(r117, r118) - if is_error(r119) goto L55 (error at :36) else goto L44 -L44: - r120 = box(bool, 0) - r121 = [r120] - r122 = load_address r121 - r123 = ('native_class',) - r124 = PyObject_Vectorcall(r119, r122, 0, r123) - dec_ref r119 - if is_error(r124) goto L55 (error at :36) else goto L45 -L45: - r125 = [r116] - r126 = load_address r125 - r127 = PyObject_Vectorcall(r124, r126, 1, 0) - dec_ref r124 - if is_error(r127) goto L55 (error at :37) else goto L46 -L46: - dec_ref r116 - faster_hexbytes.main.HexBytes = r127 :: type - r128 = faster_hexbytes.main.globals :: static - r129 = 'HexBytes' - r130 = PyDict_SetItem(r128, r129, r127) - dec_ref r127 - r131 = r130 >= 0 :: signed - if not r131 goto L48 (error at :37) else goto L47 :: bool -L47: - r132 = faster_hexbytes.main.HexBytes :: type + dec_ref r14 + goto L31 + +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4 :: object + r5 :: object_ptr + r6 :: object_ptr[1] + r7 :: c_ptr + r8 :: native_int[1] + r9 :: c_ptr + r10 :: object + r11 :: dict + r12, r13 :: str + r14 :: bit + r15 :: object + r16 :: str + r17 :: dict + r18, r19 :: object + r20 :: str + r21 :: object + r22 :: dict + r23 :: str + r24 :: i32 + r25 :: bit + r26 :: None +L0: + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool +L1: + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L8 (error at :-1) else goto L2 +L2: + builtins = r4 :: module + dec_ref r4 +L3: + r5 = load_address binascii :: module + r6 = [r5] + r7 = load_address r6 + r8 = [1] + r9 = load_address r8 + r10 = (('binascii', 'binascii', 'binascii'),) + r11 = faster_hexbytes._utils.globals :: static + r12 = 'faster_hexbytes/_utils.py' + r13 = '' + r14 = CPyImport_ImportMany(r10, r7, r11, r12, r13, r9) + if not r14 goto L8 else goto L4 :: bool +L4: + r15 = ('Final', 'Union') + r16 = 'typing' + r17 = faster_hexbytes._utils.globals :: static + r18 = CPyImport_ImportFromMany(r16, r15, r15, r17) + if is_error(r18) goto L8 (error at :2) else goto L5 +L5: + typing = r18 :: module + dec_ref r18 + r19 = binascii :: module + r20 = 'unhexlify' + r21 = CPyObject_GetAttr(r19, r20) + if is_error(r21) goto L8 (error at :8) else goto L6 +L6: + faster_hexbytes._utils.unhexlify = r21 :: static + r22 = faster_hexbytes._utils.globals :: static + r23 = 'unhexlify' + r24 = CPyDict_SetItem(r22, r23, r21) + dec_ref r21 + r25 = r24 >= 0 :: signed + if not r25 goto L8 (error at :8) else goto L7 :: bool +L7: return 1 -L48: - r133 = :: None - return r133 -L49: - dec_ref r33 - goto L48 -L50: - dec_ref r33 - dec_ref r39 - goto L48 -L51: - dec_ref r61 - goto L48 -L52: - dec_ref r61 - dec_ref r73 - goto L48 -L53: - dec_ref r61 - dec_ref r73 - dec_ref r75 - goto L48 -L54: - dec_ref r61 - dec_ref r73 - dec_ref r75 - dec_ref r76 - goto L48 -L55: - dec_ref r116 - goto L48 +L8: + r26 = :: None + return r26 From e4d966ffaccf469c540b5a2cda6ebe54adf9130b Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Tue, 30 Sep 2025 15:49:51 -0400 Subject: [PATCH 59/98] fix(cicd): missing dep in release workflow --- .github/workflows/release.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 3608a5b..802fbf8 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -129,7 +129,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install setuptools wheel twine + pip install setuptools wheel twine mypy==1.18.2 - name: Build sdist run: | From 04c6a8e3da54f19ea72234afeac245b67d60c4e9 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Tue, 30 Sep 2025 16:03:04 -0400 Subject: [PATCH 60/98] fix(cicd): missing dep in release workflow --- .github/workflows/release.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 802fbf8..4cb1a77 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -129,7 +129,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install setuptools wheel twine mypy==1.18.2 + pip install setuptools wheel twine mypy==1.18.2 hexbytes==1.3.1 - name: Build sdist run: | From aa1b04cf6d3cc90e1d1564f7028325a01048c949 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 30 Sep 2025 20:03:29 +0000 Subject: [PATCH 61/98] chore: compile C files for source control --- build/ops.txt | 206 +++++++++++++++++++++++++------------------------- 1 file changed, 103 insertions(+), 103 deletions(-) diff --git a/build/ops.txt b/build/ops.txt index 8dfadfc..50ef3d3 100644 --- a/build/ops.txt +++ b/build/ops.txt @@ -1184,109 +1184,6 @@ L121: dec_ref r264 goto L105 -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4, r5, r6 :: object - r7 :: str - r8 :: dict - r9, r10 :: object - r11 :: str - r12 :: dict - r13 :: object - r14 :: str - r15 :: list - r16, r17 :: ptr - r18 :: dict - r19 :: str - r20 :: i32 - r21 :: bit - r22 :: str - r23 :: dict - r24 :: str - r25 :: object - r26 :: object[1] - r27 :: object_ptr - r28 :: object - r29 :: str - r30 :: dict - r31 :: str - r32 :: i32 - r33 :: bit - r34 :: None -L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool -L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L12 (error at :-1) else goto L2 -L2: - builtins = r4 :: module - dec_ref r4 -L3: - r5 = ('version',) - r6 = ('__version',) - r7 = 'importlib.metadata' - r8 = faster_hexbytes.globals :: static - r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) - if is_error(r9) goto L12 (error at :1) else goto L4 -L4: - importlib.metadata = r9 :: module - dec_ref r9 - r10 = ('HexBytes',) - r11 = 'faster_hexbytes.main' - r12 = faster_hexbytes.globals :: static - r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) - if is_error(r13) goto L12 (error at :5) else goto L5 -L5: - faster_hexbytes.main = r13 :: module - dec_ref r13 - r14 = 'HexBytes' - r15 = PyList_New(1) - if is_error(r15) goto L12 (error at :9) else goto L6 -L6: - r16 = get_element_ptr r15 ob_item :: PyListObject - r17 = load_mem r16 :: ptr* - inc_ref r14 - set_mem r17, r14 :: builtins.object* - r18 = faster_hexbytes.globals :: static - r19 = '__all__' - r20 = CPyDict_SetItem(r18, r19, r15) - dec_ref r15 - r21 = r20 >= 0 :: signed - if not r21 goto L12 (error at :9) else goto L7 :: bool -L7: - r22 = 'hexbytes' - r23 = faster_hexbytes.globals :: static - r24 = '__version' - r25 = CPyDict_GetItem(r23, r24) - if is_error(r25) goto L12 (error at :11) else goto L8 -L8: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L12 (error at :11) else goto L9 -L9: - r29 = cast(str, r28) - if is_error(r29) goto L12 (error at :11) else goto L10 -L10: - r30 = faster_hexbytes.globals :: static - r31 = '__version__' - r32 = CPyDict_SetItem(r30, r31, r29) - dec_ref r29 - r33 = r32 >= 0 :: signed - if not r33 goto L12 (error at :11) else goto L11 :: bool -L11: - return 1 -L12: - r34 = :: None - return r34 - def to_bytes(val): val :: union[bytes, str, object, bool, int] r0 :: bit @@ -1860,3 +1757,106 @@ L7: L8: r26 = :: None return r26 + +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4, r5, r6 :: object + r7 :: str + r8 :: dict + r9, r10 :: object + r11 :: str + r12 :: dict + r13 :: object + r14 :: str + r15 :: list + r16, r17 :: ptr + r18 :: dict + r19 :: str + r20 :: i32 + r21 :: bit + r22 :: str + r23 :: dict + r24 :: str + r25 :: object + r26 :: object[1] + r27 :: object_ptr + r28 :: object + r29 :: str + r30 :: dict + r31 :: str + r32 :: i32 + r33 :: bit + r34 :: None +L0: + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool +L1: + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L12 (error at :-1) else goto L2 +L2: + builtins = r4 :: module + dec_ref r4 +L3: + r5 = ('version',) + r6 = ('__version',) + r7 = 'importlib.metadata' + r8 = faster_hexbytes.globals :: static + r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) + if is_error(r9) goto L12 (error at :1) else goto L4 +L4: + importlib.metadata = r9 :: module + dec_ref r9 + r10 = ('HexBytes',) + r11 = 'faster_hexbytes.main' + r12 = faster_hexbytes.globals :: static + r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) + if is_error(r13) goto L12 (error at :5) else goto L5 +L5: + faster_hexbytes.main = r13 :: module + dec_ref r13 + r14 = 'HexBytes' + r15 = PyList_New(1) + if is_error(r15) goto L12 (error at :9) else goto L6 +L6: + r16 = get_element_ptr r15 ob_item :: PyListObject + r17 = load_mem r16 :: ptr* + inc_ref r14 + set_mem r17, r14 :: builtins.object* + r18 = faster_hexbytes.globals :: static + r19 = '__all__' + r20 = CPyDict_SetItem(r18, r19, r15) + dec_ref r15 + r21 = r20 >= 0 :: signed + if not r21 goto L12 (error at :9) else goto L7 :: bool +L7: + r22 = 'hexbytes' + r23 = faster_hexbytes.globals :: static + r24 = '__version' + r25 = CPyDict_GetItem(r23, r24) + if is_error(r25) goto L12 (error at :11) else goto L8 +L8: + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L12 (error at :11) else goto L9 +L9: + r29 = cast(str, r28) + if is_error(r29) goto L12 (error at :11) else goto L10 +L10: + r30 = faster_hexbytes.globals :: static + r31 = '__version__' + r32 = CPyDict_SetItem(r30, r31, r29) + dec_ref r29 + r33 = r32 >= 0 :: signed + if not r33 goto L12 (error at :11) else goto L11 :: bool +L11: + return 1 +L12: + r34 = :: None + return r34 From ac67e298a5cc1be8dae3c08fdbfea9eff10752ce Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Wed, 1 Oct 2025 00:57:01 -0400 Subject: [PATCH 62/98] Update README.md --- README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/README.md b/README.md index c7e0ade..7440cb6 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,17 @@ +### I forked hexbytes and compiled it to C. It does the same stuff, now faster + +[![PyPI](https://img.shields.io/pypi/v/faster-hexbytes.svg?logo=Python&logoColor=white)](https://pypi.org/project/faster-hexbytes/) +[![Monthly Downloads](https://img.shields.io/pypi/dm/faster-hexbytes)](https://pypistats.org/packages/faster-hexbytes) +[![Codspeed.io Status](https://img.shields.io/endpoint?url=https://codspeed.io/badge.json)](https://codspeed.io/BobTheBuidler/faster-hexbytes) + +##### This fork will be kept up-to-date with [hexbytes](https://github.com/ethereum/hexbytes). I will pull updates as they are released and push new [faster-hexbytes](https://github.com/BobTheBuidler/faster-hexbytes) releases to [PyPI](https://pypi.org/project/faster-hexbytes/). + +##### You can find the compiled C code on faster-hexbytes [master](https://github.com/BobTheBuidler/hexbytes/tree/master) branch. + +##### We benchmark `faster-hexbytes` against the original `hexbytes` for your convenience. [See results](https://github.com/BobTheBuidler/faster-hexbytes/tree/master/benchmarks/results). + +##### The original eth-abi readme is below: + # HexBytes [![Join the conversation on Discord](https://img.shields.io/discord/809793915578089484?color=blue&label=chat&logo=discord&logoColor=white)](https://discord.gg/GHryRvPB84) From 092cedefb6a7f641cefbf404d47538ce493542ee Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 1 Oct 2025 04:57:27 +0000 Subject: [PATCH 63/98] chore: compile C files for source control --- build/ops.txt | 206 +++++++++++++++++++++++++------------------------- 1 file changed, 103 insertions(+), 103 deletions(-) diff --git a/build/ops.txt b/build/ops.txt index 50ef3d3..7a59370 100644 --- a/build/ops.txt +++ b/build/ops.txt @@ -1,3 +1,106 @@ +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4, r5, r6 :: object + r7 :: str + r8 :: dict + r9, r10 :: object + r11 :: str + r12 :: dict + r13 :: object + r14 :: str + r15 :: list + r16, r17 :: ptr + r18 :: dict + r19 :: str + r20 :: i32 + r21 :: bit + r22 :: str + r23 :: dict + r24 :: str + r25 :: object + r26 :: object[1] + r27 :: object_ptr + r28 :: object + r29 :: str + r30 :: dict + r31 :: str + r32 :: i32 + r33 :: bit + r34 :: None +L0: + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool +L1: + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L12 (error at :-1) else goto L2 +L2: + builtins = r4 :: module + dec_ref r4 +L3: + r5 = ('version',) + r6 = ('__version',) + r7 = 'importlib.metadata' + r8 = faster_hexbytes.globals :: static + r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) + if is_error(r9) goto L12 (error at :1) else goto L4 +L4: + importlib.metadata = r9 :: module + dec_ref r9 + r10 = ('HexBytes',) + r11 = 'faster_hexbytes.main' + r12 = faster_hexbytes.globals :: static + r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) + if is_error(r13) goto L12 (error at :5) else goto L5 +L5: + faster_hexbytes.main = r13 :: module + dec_ref r13 + r14 = 'HexBytes' + r15 = PyList_New(1) + if is_error(r15) goto L12 (error at :9) else goto L6 +L6: + r16 = get_element_ptr r15 ob_item :: PyListObject + r17 = load_mem r16 :: ptr* + inc_ref r14 + set_mem r17, r14 :: builtins.object* + r18 = faster_hexbytes.globals :: static + r19 = '__all__' + r20 = CPyDict_SetItem(r18, r19, r15) + dec_ref r15 + r21 = r20 >= 0 :: signed + if not r21 goto L12 (error at :9) else goto L7 :: bool +L7: + r22 = 'hexbytes' + r23 = faster_hexbytes.globals :: static + r24 = '__version' + r25 = CPyDict_GetItem(r23, r24) + if is_error(r25) goto L12 (error at :11) else goto L8 +L8: + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L12 (error at :11) else goto L9 +L9: + r29 = cast(str, r28) + if is_error(r29) goto L12 (error at :11) else goto L10 +L10: + r30 = faster_hexbytes.globals :: static + r31 = '__version__' + r32 = CPyDict_SetItem(r30, r31, r29) + dec_ref r29 + r33 = r32 >= 0 :: signed + if not r33 goto L12 (error at :11) else goto L11 :: bool +L11: + return 1 +L12: + r34 = :: None + return r34 + def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): __mypyc_self__, instance, owner, r0 :: object r1 :: bit @@ -1757,106 +1860,3 @@ L7: L8: r26 = :: None return r26 - -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4, r5, r6 :: object - r7 :: str - r8 :: dict - r9, r10 :: object - r11 :: str - r12 :: dict - r13 :: object - r14 :: str - r15 :: list - r16, r17 :: ptr - r18 :: dict - r19 :: str - r20 :: i32 - r21 :: bit - r22 :: str - r23 :: dict - r24 :: str - r25 :: object - r26 :: object[1] - r27 :: object_ptr - r28 :: object - r29 :: str - r30 :: dict - r31 :: str - r32 :: i32 - r33 :: bit - r34 :: None -L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool -L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L12 (error at :-1) else goto L2 -L2: - builtins = r4 :: module - dec_ref r4 -L3: - r5 = ('version',) - r6 = ('__version',) - r7 = 'importlib.metadata' - r8 = faster_hexbytes.globals :: static - r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) - if is_error(r9) goto L12 (error at :1) else goto L4 -L4: - importlib.metadata = r9 :: module - dec_ref r9 - r10 = ('HexBytes',) - r11 = 'faster_hexbytes.main' - r12 = faster_hexbytes.globals :: static - r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) - if is_error(r13) goto L12 (error at :5) else goto L5 -L5: - faster_hexbytes.main = r13 :: module - dec_ref r13 - r14 = 'HexBytes' - r15 = PyList_New(1) - if is_error(r15) goto L12 (error at :9) else goto L6 -L6: - r16 = get_element_ptr r15 ob_item :: PyListObject - r17 = load_mem r16 :: ptr* - inc_ref r14 - set_mem r17, r14 :: builtins.object* - r18 = faster_hexbytes.globals :: static - r19 = '__all__' - r20 = CPyDict_SetItem(r18, r19, r15) - dec_ref r15 - r21 = r20 >= 0 :: signed - if not r21 goto L12 (error at :9) else goto L7 :: bool -L7: - r22 = 'hexbytes' - r23 = faster_hexbytes.globals :: static - r24 = '__version' - r25 = CPyDict_GetItem(r23, r24) - if is_error(r25) goto L12 (error at :11) else goto L8 -L8: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L12 (error at :11) else goto L9 -L9: - r29 = cast(str, r28) - if is_error(r29) goto L12 (error at :11) else goto L10 -L10: - r30 = faster_hexbytes.globals :: static - r31 = '__version__' - r32 = CPyDict_SetItem(r30, r31, r29) - dec_ref r29 - r33 = r32 >= 0 :: signed - if not r33 goto L12 (error at :11) else goto L11 :: bool -L11: - return 1 -L12: - r34 = :: None - return r34 From 72fb548a39d091f2c6b9aa9e94abee8b3917969b Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Wed, 1 Oct 2025 00:57:46 -0400 Subject: [PATCH 64/98] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7440cb6..d9c368e 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ ##### We benchmark `faster-hexbytes` against the original `hexbytes` for your convenience. [See results](https://github.com/BobTheBuidler/faster-hexbytes/tree/master/benchmarks/results). -##### The original eth-abi readme is below: +##### The original hexbytes readme is below: # HexBytes From 554bb2ae943e78899cbf2e0c55465f3e9aae0963 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 1 Oct 2025 04:58:33 +0000 Subject: [PATCH 65/98] chore: compile C files for source control --- build/ops.txt | 206 +++++++++++++++++++++++++------------------------- 1 file changed, 103 insertions(+), 103 deletions(-) diff --git a/build/ops.txt b/build/ops.txt index 7a59370..50ef3d3 100644 --- a/build/ops.txt +++ b/build/ops.txt @@ -1,106 +1,3 @@ -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4, r5, r6 :: object - r7 :: str - r8 :: dict - r9, r10 :: object - r11 :: str - r12 :: dict - r13 :: object - r14 :: str - r15 :: list - r16, r17 :: ptr - r18 :: dict - r19 :: str - r20 :: i32 - r21 :: bit - r22 :: str - r23 :: dict - r24 :: str - r25 :: object - r26 :: object[1] - r27 :: object_ptr - r28 :: object - r29 :: str - r30 :: dict - r31 :: str - r32 :: i32 - r33 :: bit - r34 :: None -L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool -L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L12 (error at :-1) else goto L2 -L2: - builtins = r4 :: module - dec_ref r4 -L3: - r5 = ('version',) - r6 = ('__version',) - r7 = 'importlib.metadata' - r8 = faster_hexbytes.globals :: static - r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) - if is_error(r9) goto L12 (error at :1) else goto L4 -L4: - importlib.metadata = r9 :: module - dec_ref r9 - r10 = ('HexBytes',) - r11 = 'faster_hexbytes.main' - r12 = faster_hexbytes.globals :: static - r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) - if is_error(r13) goto L12 (error at :5) else goto L5 -L5: - faster_hexbytes.main = r13 :: module - dec_ref r13 - r14 = 'HexBytes' - r15 = PyList_New(1) - if is_error(r15) goto L12 (error at :9) else goto L6 -L6: - r16 = get_element_ptr r15 ob_item :: PyListObject - r17 = load_mem r16 :: ptr* - inc_ref r14 - set_mem r17, r14 :: builtins.object* - r18 = faster_hexbytes.globals :: static - r19 = '__all__' - r20 = CPyDict_SetItem(r18, r19, r15) - dec_ref r15 - r21 = r20 >= 0 :: signed - if not r21 goto L12 (error at :9) else goto L7 :: bool -L7: - r22 = 'hexbytes' - r23 = faster_hexbytes.globals :: static - r24 = '__version' - r25 = CPyDict_GetItem(r23, r24) - if is_error(r25) goto L12 (error at :11) else goto L8 -L8: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L12 (error at :11) else goto L9 -L9: - r29 = cast(str, r28) - if is_error(r29) goto L12 (error at :11) else goto L10 -L10: - r30 = faster_hexbytes.globals :: static - r31 = '__version__' - r32 = CPyDict_SetItem(r30, r31, r29) - dec_ref r29 - r33 = r32 >= 0 :: signed - if not r33 goto L12 (error at :11) else goto L11 :: bool -L11: - return 1 -L12: - r34 = :: None - return r34 - def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): __mypyc_self__, instance, owner, r0 :: object r1 :: bit @@ -1860,3 +1757,106 @@ L7: L8: r26 = :: None return r26 + +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4, r5, r6 :: object + r7 :: str + r8 :: dict + r9, r10 :: object + r11 :: str + r12 :: dict + r13 :: object + r14 :: str + r15 :: list + r16, r17 :: ptr + r18 :: dict + r19 :: str + r20 :: i32 + r21 :: bit + r22 :: str + r23 :: dict + r24 :: str + r25 :: object + r26 :: object[1] + r27 :: object_ptr + r28 :: object + r29 :: str + r30 :: dict + r31 :: str + r32 :: i32 + r33 :: bit + r34 :: None +L0: + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool +L1: + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L12 (error at :-1) else goto L2 +L2: + builtins = r4 :: module + dec_ref r4 +L3: + r5 = ('version',) + r6 = ('__version',) + r7 = 'importlib.metadata' + r8 = faster_hexbytes.globals :: static + r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) + if is_error(r9) goto L12 (error at :1) else goto L4 +L4: + importlib.metadata = r9 :: module + dec_ref r9 + r10 = ('HexBytes',) + r11 = 'faster_hexbytes.main' + r12 = faster_hexbytes.globals :: static + r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) + if is_error(r13) goto L12 (error at :5) else goto L5 +L5: + faster_hexbytes.main = r13 :: module + dec_ref r13 + r14 = 'HexBytes' + r15 = PyList_New(1) + if is_error(r15) goto L12 (error at :9) else goto L6 +L6: + r16 = get_element_ptr r15 ob_item :: PyListObject + r17 = load_mem r16 :: ptr* + inc_ref r14 + set_mem r17, r14 :: builtins.object* + r18 = faster_hexbytes.globals :: static + r19 = '__all__' + r20 = CPyDict_SetItem(r18, r19, r15) + dec_ref r15 + r21 = r20 >= 0 :: signed + if not r21 goto L12 (error at :9) else goto L7 :: bool +L7: + r22 = 'hexbytes' + r23 = faster_hexbytes.globals :: static + r24 = '__version' + r25 = CPyDict_GetItem(r23, r24) + if is_error(r25) goto L12 (error at :11) else goto L8 +L8: + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L12 (error at :11) else goto L9 +L9: + r29 = cast(str, r28) + if is_error(r29) goto L12 (error at :11) else goto L10 +L10: + r30 = faster_hexbytes.globals :: static + r31 = '__version__' + r32 = CPyDict_SetItem(r30, r31, r29) + dec_ref r29 + r33 = r32 >= 0 :: signed + if not r33 goto L12 (error at :11) else goto L11 :: bool +L11: + return 1 +L12: + r34 = :: None + return r34 From a7d1cc1d1fceeb1b0260759cdeded73d32b4c7bd Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Sat, 4 Oct 2025 23:21:18 -0400 Subject: [PATCH 66/98] chore(cicd): limit tox action concurrency --- .github/workflows/tox.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/tox.yaml b/.github/workflows/tox.yaml index 36b0e10..e145fb1 100644 --- a/.github/workflows/tox.yaml +++ b/.github/workflows/tox.yaml @@ -8,6 +8,10 @@ on: schedule: - cron: '0 12 * * 1-5' # Weekdays 12:00 UTC +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: test: name: Test (${{ matrix.jobtype }}, ${{ matrix.python-version}}, ${{ matrix.os }}) From b0df50655708d2ca133bc469e184d1e8a3fdf67b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 5 Oct 2025 03:21:45 +0000 Subject: [PATCH 67/98] chore: compile C files for source control --- build/ops.txt | 206 +++++++++++++++++++++++++------------------------- 1 file changed, 103 insertions(+), 103 deletions(-) diff --git a/build/ops.txt b/build/ops.txt index 50ef3d3..7a59370 100644 --- a/build/ops.txt +++ b/build/ops.txt @@ -1,3 +1,106 @@ +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4, r5, r6 :: object + r7 :: str + r8 :: dict + r9, r10 :: object + r11 :: str + r12 :: dict + r13 :: object + r14 :: str + r15 :: list + r16, r17 :: ptr + r18 :: dict + r19 :: str + r20 :: i32 + r21 :: bit + r22 :: str + r23 :: dict + r24 :: str + r25 :: object + r26 :: object[1] + r27 :: object_ptr + r28 :: object + r29 :: str + r30 :: dict + r31 :: str + r32 :: i32 + r33 :: bit + r34 :: None +L0: + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool +L1: + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L12 (error at :-1) else goto L2 +L2: + builtins = r4 :: module + dec_ref r4 +L3: + r5 = ('version',) + r6 = ('__version',) + r7 = 'importlib.metadata' + r8 = faster_hexbytes.globals :: static + r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) + if is_error(r9) goto L12 (error at :1) else goto L4 +L4: + importlib.metadata = r9 :: module + dec_ref r9 + r10 = ('HexBytes',) + r11 = 'faster_hexbytes.main' + r12 = faster_hexbytes.globals :: static + r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) + if is_error(r13) goto L12 (error at :5) else goto L5 +L5: + faster_hexbytes.main = r13 :: module + dec_ref r13 + r14 = 'HexBytes' + r15 = PyList_New(1) + if is_error(r15) goto L12 (error at :9) else goto L6 +L6: + r16 = get_element_ptr r15 ob_item :: PyListObject + r17 = load_mem r16 :: ptr* + inc_ref r14 + set_mem r17, r14 :: builtins.object* + r18 = faster_hexbytes.globals :: static + r19 = '__all__' + r20 = CPyDict_SetItem(r18, r19, r15) + dec_ref r15 + r21 = r20 >= 0 :: signed + if not r21 goto L12 (error at :9) else goto L7 :: bool +L7: + r22 = 'hexbytes' + r23 = faster_hexbytes.globals :: static + r24 = '__version' + r25 = CPyDict_GetItem(r23, r24) + if is_error(r25) goto L12 (error at :11) else goto L8 +L8: + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L12 (error at :11) else goto L9 +L9: + r29 = cast(str, r28) + if is_error(r29) goto L12 (error at :11) else goto L10 +L10: + r30 = faster_hexbytes.globals :: static + r31 = '__version__' + r32 = CPyDict_SetItem(r30, r31, r29) + dec_ref r29 + r33 = r32 >= 0 :: signed + if not r33 goto L12 (error at :11) else goto L11 :: bool +L11: + return 1 +L12: + r34 = :: None + return r34 + def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): __mypyc_self__, instance, owner, r0 :: object r1 :: bit @@ -1757,106 +1860,3 @@ L7: L8: r26 = :: None return r26 - -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4, r5, r6 :: object - r7 :: str - r8 :: dict - r9, r10 :: object - r11 :: str - r12 :: dict - r13 :: object - r14 :: str - r15 :: list - r16, r17 :: ptr - r18 :: dict - r19 :: str - r20 :: i32 - r21 :: bit - r22 :: str - r23 :: dict - r24 :: str - r25 :: object - r26 :: object[1] - r27 :: object_ptr - r28 :: object - r29 :: str - r30 :: dict - r31 :: str - r32 :: i32 - r33 :: bit - r34 :: None -L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool -L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L12 (error at :-1) else goto L2 -L2: - builtins = r4 :: module - dec_ref r4 -L3: - r5 = ('version',) - r6 = ('__version',) - r7 = 'importlib.metadata' - r8 = faster_hexbytes.globals :: static - r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) - if is_error(r9) goto L12 (error at :1) else goto L4 -L4: - importlib.metadata = r9 :: module - dec_ref r9 - r10 = ('HexBytes',) - r11 = 'faster_hexbytes.main' - r12 = faster_hexbytes.globals :: static - r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) - if is_error(r13) goto L12 (error at :5) else goto L5 -L5: - faster_hexbytes.main = r13 :: module - dec_ref r13 - r14 = 'HexBytes' - r15 = PyList_New(1) - if is_error(r15) goto L12 (error at :9) else goto L6 -L6: - r16 = get_element_ptr r15 ob_item :: PyListObject - r17 = load_mem r16 :: ptr* - inc_ref r14 - set_mem r17, r14 :: builtins.object* - r18 = faster_hexbytes.globals :: static - r19 = '__all__' - r20 = CPyDict_SetItem(r18, r19, r15) - dec_ref r15 - r21 = r20 >= 0 :: signed - if not r21 goto L12 (error at :9) else goto L7 :: bool -L7: - r22 = 'hexbytes' - r23 = faster_hexbytes.globals :: static - r24 = '__version' - r25 = CPyDict_GetItem(r23, r24) - if is_error(r25) goto L12 (error at :11) else goto L8 -L8: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L12 (error at :11) else goto L9 -L9: - r29 = cast(str, r28) - if is_error(r29) goto L12 (error at :11) else goto L10 -L10: - r30 = faster_hexbytes.globals :: static - r31 = '__version__' - r32 = CPyDict_SetItem(r30, r31, r29) - dec_ref r29 - r33 = r32 >= 0 :: signed - if not r33 goto L12 (error at :11) else goto L11 :: bool -L11: - return 1 -L12: - r34 = :: None - return r34 From 9dc06e7e6a4e17c7de51e0ae655c39e5da579999 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Tue, 7 Oct 2025 03:39:15 -0400 Subject: [PATCH 68/98] feat(cicd): normalize C files for diffchecking (#12) * feat(cicd): normalize C files for diffchecking * chore: compile C files for source control --------- Co-authored-by: github-actions[bot] --- .github/workflows/compile.yaml | 20 + build/__native_6a32f4913d613d6a7ddf.c | 557 +++++++++++++------------- build/faster_hexbytes.c | 3 + build/ops.txt | 206 +++++----- 4 files changed, 406 insertions(+), 380 deletions(-) diff --git a/.github/workflows/compile.yaml b/.github/workflows/compile.yaml index 71baa09..7f0ffcd 100644 --- a/.github/workflows/compile.yaml +++ b/.github/workflows/compile.yaml @@ -4,9 +4,15 @@ on: pull_request: branches: - master + paths-ignore: + - '.github/workflows/**' + - '!.github/workflows/compile.yaml' push: branches: - master + paths-ignore: + - '.github/workflows/**' + - '!.github/workflows/compile.yaml' concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -31,6 +37,20 @@ jobs: env: MYPYC_STRICT_DUNDER_TYPING: 1 run: pip install . + + - name: Normalize C files for diffchecking + # This makes it much easier to diffcheck changes in the C files + run: | + # Insert DIFFCHECK_PLACEHOLDER macro at the top if not present + for f in build/*.c; do + if ! grep -q 'DIFFCHECK_PLACEHOLDER' "$f"; then + sed -i '1i#ifndef DIFFCHECK_PLACEHOLDER\n#define DIFFCHECK_PLACEHOLDER 0\n#endif' "$f" + fi + done + # Replace line number in CPy_AddTraceback with macro + sed -i 's/\(CPy_AddTraceback([^,]*, *[^,]*, *\)[0-9]\+\(, *[^)]*)\)/\1DIFFCHECK_PLACEHOLDER\2/g' build/*.c + # Replace index in CPyStatics[...] with macro + sed -i 's/CPyStatics\[[0-9]\+\]/CPyStatics[DIFFCHECK_PLACEHOLDER]/g' build/*.c - name: Check for changes run: | diff --git a/build/__native_6a32f4913d613d6a7ddf.c b/build/__native_6a32f4913d613d6a7ddf.c index 5effd18..c73096d 100644 --- a/build/__native_6a32f4913d613d6a7ddf.c +++ b/build/__native_6a32f4913d613d6a7ddf.c @@ -1,3 +1,6 @@ +#ifndef DIFFCHECK_PLACEHOLDER +#define DIFFCHECK_PLACEHOLDER 0 +#endif #include "init.c" #include "getargs.c" #include "getargsfast.c" @@ -102,7 +105,7 @@ char CPyDef_faster_hexbytes_____top_level__(void) { cpy_r_r1 = (PyObject *)&_Py_NoneStruct; cpy_r_r2 = cpy_r_r0 != cpy_r_r1; if (cpy_r_r2) goto CPyL3; - cpy_r_r3 = CPyStatics[3]; /* 'builtins' */ + cpy_r_r3 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'builtins' */ cpy_r_r4 = PyImport_Import(cpy_r_r3); if (unlikely(cpy_r_r4 == NULL)) { CPy_AddTraceback("faster_hexbytes/__init__.py", "", -1, CPyStatic_faster_hexbytes___globals); @@ -112,33 +115,33 @@ char CPyDef_faster_hexbytes_____top_level__(void) { CPy_INCREF(CPyModule_builtins); CPy_DECREF(cpy_r_r4); CPyL3: ; - cpy_r_r5 = CPyStatics[73]; /* ('version',) */ - cpy_r_r6 = CPyStatics[74]; /* ('__version',) */ - cpy_r_r7 = CPyStatics[6]; /* 'importlib.metadata' */ + cpy_r_r5 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* ('version',) */ + cpy_r_r6 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* ('__version',) */ + cpy_r_r7 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'importlib.metadata' */ cpy_r_r8 = CPyStatic_faster_hexbytes___globals; cpy_r_r9 = CPyImport_ImportFromMany(cpy_r_r7, cpy_r_r5, cpy_r_r6, cpy_r_r8); if (unlikely(cpy_r_r9 == NULL)) { - CPy_AddTraceback("faster_hexbytes/__init__.py", "", 1, CPyStatic_faster_hexbytes___globals); + CPy_AddTraceback("faster_hexbytes/__init__.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_faster_hexbytes___globals); goto CPyL12; } CPyModule_importlib___metadata = cpy_r_r9; CPy_INCREF(CPyModule_importlib___metadata); CPy_DECREF(cpy_r_r9); - cpy_r_r10 = CPyStatics[75]; /* ('HexBytes',) */ - cpy_r_r11 = CPyStatics[8]; /* 'faster_hexbytes.main' */ + cpy_r_r10 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* ('HexBytes',) */ + cpy_r_r11 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'faster_hexbytes.main' */ cpy_r_r12 = CPyStatic_faster_hexbytes___globals; cpy_r_r13 = CPyImport_ImportFromMany(cpy_r_r11, cpy_r_r10, cpy_r_r10, cpy_r_r12); if (unlikely(cpy_r_r13 == NULL)) { - CPy_AddTraceback("faster_hexbytes/__init__.py", "", 5, CPyStatic_faster_hexbytes___globals); + CPy_AddTraceback("faster_hexbytes/__init__.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_faster_hexbytes___globals); goto CPyL12; } CPyModule_faster_hexbytes___main = cpy_r_r13; CPy_INCREF(CPyModule_faster_hexbytes___main); CPy_DECREF(cpy_r_r13); - cpy_r_r14 = CPyStatics[7]; /* 'HexBytes' */ + cpy_r_r14 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'HexBytes' */ cpy_r_r15 = PyList_New(1); if (unlikely(cpy_r_r15 == NULL)) { - CPy_AddTraceback("faster_hexbytes/__init__.py", "", 9, CPyStatic_faster_hexbytes___globals); + CPy_AddTraceback("faster_hexbytes/__init__.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_faster_hexbytes___globals); goto CPyL12; } cpy_r_r16 = (CPyPtr)&((PyListObject *)cpy_r_r15)->ob_item; @@ -146,20 +149,20 @@ CPyL3: ; CPy_INCREF(cpy_r_r14); *(PyObject * *)cpy_r_r17 = cpy_r_r14; cpy_r_r18 = CPyStatic_faster_hexbytes___globals; - cpy_r_r19 = CPyStatics[9]; /* '__all__' */ + cpy_r_r19 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '__all__' */ cpy_r_r20 = CPyDict_SetItem(cpy_r_r18, cpy_r_r19, cpy_r_r15); CPy_DECREF_NO_IMM(cpy_r_r15); cpy_r_r21 = cpy_r_r20 >= 0; if (unlikely(!cpy_r_r21)) { - CPy_AddTraceback("faster_hexbytes/__init__.py", "", 9, CPyStatic_faster_hexbytes___globals); + CPy_AddTraceback("faster_hexbytes/__init__.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_faster_hexbytes___globals); goto CPyL12; } - cpy_r_r22 = CPyStatics[10]; /* 'hexbytes' */ + cpy_r_r22 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'hexbytes' */ cpy_r_r23 = CPyStatic_faster_hexbytes___globals; - cpy_r_r24 = CPyStatics[5]; /* '__version' */ + cpy_r_r24 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '__version' */ cpy_r_r25 = CPyDict_GetItem(cpy_r_r23, cpy_r_r24); if (unlikely(cpy_r_r25 == NULL)) { - CPy_AddTraceback("faster_hexbytes/__init__.py", "", 11, CPyStatic_faster_hexbytes___globals); + CPy_AddTraceback("faster_hexbytes/__init__.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_faster_hexbytes___globals); goto CPyL12; } PyObject *cpy_r_r26[1] = {cpy_r_r22}; @@ -167,7 +170,7 @@ CPyL3: ; cpy_r_r28 = PyObject_Vectorcall(cpy_r_r25, cpy_r_r27, 1, 0); CPy_DECREF(cpy_r_r25); if (unlikely(cpy_r_r28 == NULL)) { - CPy_AddTraceback("faster_hexbytes/__init__.py", "", 11, CPyStatic_faster_hexbytes___globals); + CPy_AddTraceback("faster_hexbytes/__init__.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_faster_hexbytes___globals); goto CPyL12; } if (likely(PyUnicode_Check(cpy_r_r28))) @@ -177,12 +180,12 @@ CPyL3: ; goto CPyL12; } cpy_r_r30 = CPyStatic_faster_hexbytes___globals; - cpy_r_r31 = CPyStatics[11]; /* '__version__' */ + cpy_r_r31 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '__version__' */ cpy_r_r32 = CPyDict_SetItem(cpy_r_r30, cpy_r_r31, cpy_r_r29); CPy_DECREF(cpy_r_r29); cpy_r_r33 = cpy_r_r32 >= 0; if (unlikely(!cpy_r_r33)) { - CPy_AddTraceback("faster_hexbytes/__init__.py", "", 11, CPyStatic_faster_hexbytes___globals); + CPy_AddTraceback("faster_hexbytes/__init__.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_faster_hexbytes___globals); goto CPyL12; } return 1; @@ -348,7 +351,7 @@ CPyL3: ; cpy_r_r4 = CPyDef__utils___hexstr_to_bytes(cpy_r_r3); CPy_DECREF(cpy_r_r3); if (unlikely(cpy_r_r4 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 21, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL51; } return cpy_r_r4; @@ -360,7 +363,7 @@ CPyL7: ; cpy_r_r8 = (PyObject **)&cpy_r_r7; cpy_r_r9 = PyObject_Vectorcall(cpy_r_r6, cpy_r_r8, 1, 0); if (unlikely(cpy_r_r9 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 23, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL51; } if (likely(PyBytes_Check(cpy_r_r9) || PyByteArray_Check(cpy_r_r9))) @@ -378,16 +381,16 @@ CPyL11: ; } else cpy_r_r12 = cpy_r_val == Py_True; if (unlikely(cpy_r_r12 == 2)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 25, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL51; } if (!cpy_r_r12) goto CPyL15; - cpy_r_r13 = CPyStatics[71]; /* b'\x01' */ + cpy_r_r13 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* b'\x01' */ CPy_INCREF(cpy_r_r13); cpy_r_r14 = cpy_r_r13; goto CPyL16; CPyL15: ; - cpy_r_r15 = CPyStatics[72]; /* b'\x00' */ + cpy_r_r15 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* b'\x00' */ CPy_INCREF(cpy_r_r15); cpy_r_r14 = cpy_r_r15; CPyL16: ; @@ -401,7 +404,7 @@ CPyL17: ; CPy_TypeError("int", cpy_r_val); cpy_r_r17 = CPY_INT_TAG; } if (unlikely(cpy_r_r17 == CPY_INT_TAG)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 29, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL51; } cpy_r_r18 = cpy_r_r17 & 1; @@ -420,34 +423,34 @@ CPyL22: ; CPyL23: ; CPyTagged_DECREF(cpy_r_r17); if (!cpy_r_r23) goto CPyL31; - cpy_r_r25 = CPyStatics[12]; /* 'Cannot convert negative integer ' */ + cpy_r_r25 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'Cannot convert negative integer ' */ if (likely(PyLong_Check(cpy_r_val))) cpy_r_r26 = CPyTagged_FromObject(cpy_r_val); else { CPy_TypeError("int", cpy_r_val); cpy_r_r26 = CPY_INT_TAG; } if (unlikely(cpy_r_r26 == CPY_INT_TAG)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 30, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL51; } cpy_r_r27 = CPyTagged_Str(cpy_r_r26); CPyTagged_DECREF(cpy_r_r26); if (unlikely(cpy_r_r27 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 30, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL51; } - cpy_r_r28 = CPyStatics[13]; /* ' to bytes' */ + cpy_r_r28 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* ' to bytes' */ cpy_r_r29 = CPyStr_Build(3, cpy_r_r25, cpy_r_r27, cpy_r_r28); CPy_DECREF(cpy_r_r27); if (unlikely(cpy_r_r29 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 30, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL51; } cpy_r_r30 = CPyModule_builtins; - cpy_r_r31 = CPyStatics[14]; /* 'ValueError' */ + cpy_r_r31 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'ValueError' */ cpy_r_r32 = CPyObject_GetAttr(cpy_r_r30, cpy_r_r31); if (unlikely(cpy_r_r32 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 30, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL52; } PyObject *cpy_r_r33[1] = {cpy_r_r29}; @@ -455,14 +458,14 @@ CPyL23: ; cpy_r_r35 = PyObject_Vectorcall(cpy_r_r32, cpy_r_r34, 1, 0); CPy_DECREF(cpy_r_r32); if (unlikely(cpy_r_r35 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 30, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL52; } CPy_DECREF(cpy_r_r29); CPy_Raise(cpy_r_r35); CPy_DECREF(cpy_r_r35); if (unlikely(!0)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 30, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL51; } CPy_Unreachable(); @@ -473,14 +476,14 @@ CPyL31: ; CPy_TypeError("int", cpy_r_val); cpy_r_r36 = CPY_INT_TAG; } if (unlikely(cpy_r_r36 == CPY_INT_TAG)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL51; } cpy_r_r37 = CPyModule_builtins; - cpy_r_r38 = CPyStatics[15]; /* 'hex' */ + cpy_r_r38 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'hex' */ cpy_r_r39 = CPyObject_GetAttr(cpy_r_r37, cpy_r_r38); if (unlikely(cpy_r_r39 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL53; } cpy_r_r40 = CPyTagged_StealAsObject(cpy_r_r36); @@ -489,7 +492,7 @@ CPyL31: ; cpy_r_r43 = PyObject_Vectorcall(cpy_r_r39, cpy_r_r42, 1, 0); CPy_DECREF(cpy_r_r39); if (unlikely(cpy_r_r43 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL54; } CPy_DECREF(cpy_r_r40); @@ -502,23 +505,23 @@ CPyL31: ; cpy_r_r45 = CPyDef__utils___to_bytes(cpy_r_r44); CPy_DECREF(cpy_r_r44); if (unlikely(cpy_r_r45 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 32, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL51; } return cpy_r_r45; CPyL37: ; cpy_r_r46 = CPyModule_builtins; - cpy_r_r47 = CPyStatics[16]; /* 'memoryview' */ + cpy_r_r47 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'memoryview' */ cpy_r_r48 = CPyObject_GetAttr(cpy_r_r46, cpy_r_r47); if (unlikely(cpy_r_r48 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 33, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL51; } cpy_r_r49 = PyObject_IsInstance(cpy_r_val, cpy_r_r48); CPy_DECREF(cpy_r_r48); cpy_r_r50 = cpy_r_r49 >= 0; if (unlikely(!cpy_r_r50)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 33, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL51; } cpy_r_r51 = cpy_r_r49; @@ -528,7 +531,7 @@ CPyL37: ; cpy_r_r54 = (PyObject **)&cpy_r_r53; cpy_r_r55 = PyObject_Vectorcall(cpy_r_r52, cpy_r_r54, 1, 0); if (unlikely(cpy_r_r55 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 34, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL51; } if (likely(PyBytes_Check(cpy_r_r55) || PyByteArray_Check(cpy_r_r55))) @@ -539,35 +542,35 @@ CPyL37: ; } return cpy_r_r56; CPyL43: ; - cpy_r_r57 = CPyStatics[17]; /* '' */ - cpy_r_r58 = CPyStatics[18]; /* 'Cannot convert ' */ - cpy_r_r59 = CPyStatics[19]; /* '{!r:{}}' */ - cpy_r_r60 = CPyStatics[17]; /* '' */ - cpy_r_r61 = CPyStatics[20]; /* 'format' */ + cpy_r_r57 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '' */ + cpy_r_r58 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'Cannot convert ' */ + cpy_r_r59 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '{!r:{}}' */ + cpy_r_r60 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '' */ + cpy_r_r61 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'format' */ PyObject *cpy_r_r62[3] = {cpy_r_r59, cpy_r_val, cpy_r_r60}; cpy_r_r63 = (PyObject **)&cpy_r_r62; cpy_r_r64 = PyObject_VectorcallMethod(cpy_r_r61, cpy_r_r63, 9223372036854775811ULL, 0); if (unlikely(cpy_r_r64 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 36, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL51; } - cpy_r_r65 = CPyStatics[21]; /* ' of type ' */ - cpy_r_r66 = CPyStatics[22]; /* '{:{}}' */ + cpy_r_r65 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* ' of type ' */ + cpy_r_r66 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '{:{}}' */ cpy_r_r67 = CPy_TYPE(cpy_r_val); - cpy_r_r68 = CPyStatics[17]; /* '' */ - cpy_r_r69 = CPyStatics[20]; /* 'format' */ + cpy_r_r68 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '' */ + cpy_r_r69 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'format' */ PyObject *cpy_r_r70[3] = {cpy_r_r66, cpy_r_r67, cpy_r_r68}; cpy_r_r71 = (PyObject **)&cpy_r_r70; cpy_r_r72 = PyObject_VectorcallMethod(cpy_r_r69, cpy_r_r71, 9223372036854775811ULL, 0); if (unlikely(cpy_r_r72 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 36, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL55; } CPy_DECREF(cpy_r_r67); - cpy_r_r73 = CPyStatics[13]; /* ' to bytes' */ + cpy_r_r73 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* ' to bytes' */ cpy_r_r74 = PyList_New(5); if (unlikely(cpy_r_r74 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 36, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL56; } cpy_r_r75 = (CPyPtr)&((PyListObject *)cpy_r_r74)->ob_item; @@ -587,14 +590,14 @@ CPyL43: ; cpy_r_r81 = PyUnicode_Join(cpy_r_r57, cpy_r_r74); CPy_DECREF_NO_IMM(cpy_r_r74); if (unlikely(cpy_r_r81 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 36, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL51; } cpy_r_r82 = CPyModule_builtins; - cpy_r_r83 = CPyStatics[23]; /* 'TypeError' */ + cpy_r_r83 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'TypeError' */ cpy_r_r84 = CPyObject_GetAttr(cpy_r_r82, cpy_r_r83); if (unlikely(cpy_r_r84 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 36, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL57; } PyObject *cpy_r_r85[1] = {cpy_r_r81}; @@ -602,14 +605,14 @@ CPyL43: ; cpy_r_r87 = PyObject_Vectorcall(cpy_r_r84, cpy_r_r86, 1, 0); CPy_DECREF(cpy_r_r84); if (unlikely(cpy_r_r87 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 36, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL57; } CPy_DECREF(cpy_r_r81); CPy_Raise(cpy_r_r87); CPy_DECREF(cpy_r_r87); if (unlikely(!0)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 36, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL51; } CPy_Unreachable(); @@ -678,7 +681,7 @@ __LL1: ; PyObject *retval = CPyDef__utils___to_bytes(arg_val); return retval; fail: ; - CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", 11, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); return NULL; } @@ -720,8 +723,8 @@ PyObject *CPyDef__utils___hexstr_to_bytes(PyObject *cpy_r_hexstr) { PyObject *cpy_r_r34; PyObject *cpy_r_r35; PyObject *cpy_r_r36; - cpy_r_r0 = CPyStatics[24]; /* '0x' */ - cpy_r_r1 = CPyStatics[25]; /* '0X' */ + cpy_r_r0 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '0x' */ + cpy_r_r1 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '0X' */ CPy_INCREF(cpy_r_r0); CPy_INCREF(cpy_r_r1); cpy_r_r2.f0 = cpy_r_r0; @@ -736,13 +739,13 @@ PyObject *CPyDef__utils___hexstr_to_bytes(PyObject *cpy_r_hexstr) { cpy_r_r4 = CPyStr_Startswith(cpy_r_hexstr, cpy_r_r3); CPy_DECREF(cpy_r_r3); if (unlikely(cpy_r_r4 == 2)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 40, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL31; } if (!cpy_r_r4) goto CPyL5; cpy_r_r5 = CPyStr_GetSlice(cpy_r_hexstr, 4, 9223372036854775806LL); if (unlikely(cpy_r_r5 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 41, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL31; } if (likely(PyUnicode_Check(cpy_r_r5))) @@ -760,23 +763,23 @@ CPyL6: ; cpy_r_r7 = CPyStr_Size_size_t(cpy_r_hexstr); cpy_r_r8 = cpy_r_r7 >= 0; if (unlikely(!cpy_r_r8)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 46, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL32; } cpy_r_r9 = cpy_r_r7 << 1; cpy_r_r10 = CPyTagged_Remainder(cpy_r_r9, 4); if (unlikely(cpy_r_r10 == CPY_INT_TAG)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 46, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL32; } cpy_r_r11 = cpy_r_r10 != 0; CPyTagged_DECREF(cpy_r_r10); if (!cpy_r_r11) goto CPyL11; - cpy_r_r12 = CPyStatics[26]; /* '0' */ + cpy_r_r12 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '0' */ cpy_r_r13 = PyUnicode_Concat(cpy_r_r12, cpy_r_non_prefixed_hex); CPy_DECREF(cpy_r_non_prefixed_hex); if (unlikely(cpy_r_r13 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 47, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL31; } cpy_r_padded_hex = cpy_r_r13; @@ -786,7 +789,7 @@ CPyL11: ; CPyL12: ; cpy_r_r14 = PyUnicode_AsASCIIString(cpy_r_padded_hex); if (unlikely(cpy_r_r14 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 52, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL14; } else goto CPyL33; @@ -795,28 +798,28 @@ CPyL13: ; CPyL14: ; cpy_r_r15 = CPy_CatchError(); cpy_r_r16 = CPyModule_builtins; - cpy_r_r17 = CPyStatics[27]; /* 'UnicodeDecodeError' */ + cpy_r_r17 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'UnicodeDecodeError' */ cpy_r_r18 = CPyObject_GetAttr(cpy_r_r16, cpy_r_r17); if (unlikely(cpy_r_r18 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 53, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL34; } cpy_r_r19 = CPy_ExceptionMatches(cpy_r_r18); CPy_DecRef(cpy_r_r18); if (!cpy_r_r19) goto CPyL35; - cpy_r_r20 = CPyStatics[28]; /* 'hex string ' */ - cpy_r_r21 = CPyStatics[29]; /* ' may only contain [0-9a-fA-F] characters' */ + cpy_r_r20 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'hex string ' */ + cpy_r_r21 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* ' may only contain [0-9a-fA-F] characters' */ cpy_r_r22 = CPyStr_Build(3, cpy_r_r20, cpy_r_padded_hex, cpy_r_r21); CPy_DecRef(cpy_r_padded_hex); if (unlikely(cpy_r_r22 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 55, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL23; } cpy_r_r23 = CPyModule_builtins; - cpy_r_r24 = CPyStatics[14]; /* 'ValueError' */ + cpy_r_r24 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'ValueError' */ cpy_r_r25 = CPyObject_GetAttr(cpy_r_r23, cpy_r_r24); if (unlikely(cpy_r_r25 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 54, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL36; } PyObject *cpy_r_r26[1] = {cpy_r_r22}; @@ -824,14 +827,14 @@ CPyL14: ; cpy_r_r28 = PyObject_Vectorcall(cpy_r_r25, cpy_r_r27, 1, 0); CPy_DecRef(cpy_r_r25); if (unlikely(cpy_r_r28 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 54, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL36; } CPy_DecRef(cpy_r_r22); CPy_Raise(cpy_r_r28); CPy_DecRef(cpy_r_r28); if (unlikely(!0)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 54, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL23; } else goto CPyL37; @@ -863,7 +866,7 @@ CPyL26: ; PyErr_SetString(PyExc_NameError, "value for final name \"unhexlify\" was not set"); cpy_r_r31 = 0; if (unlikely(!cpy_r_r31)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 58, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL31; } CPy_Unreachable(); @@ -872,7 +875,7 @@ CPyL28: ; cpy_r_r33 = (PyObject **)&cpy_r_r32; cpy_r_r34 = PyObject_Vectorcall(cpy_r_r30, cpy_r_r33, 1, 0); if (unlikely(cpy_r_r34 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 58, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL40; } CPy_DECREF(cpy_r_r14); @@ -936,7 +939,7 @@ PyObject *CPyPy__utils___hexstr_to_bytes(PyObject *self, PyObject *const *args, PyObject *retval = CPyDef__utils___hexstr_to_bytes(arg_hexstr); return retval; fail: ; - CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", 39, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "hexstr_to_bytes", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); return NULL; } @@ -970,7 +973,7 @@ char CPyDef__utils_____top_level__(void) { cpy_r_r1 = (PyObject *)&_Py_NoneStruct; cpy_r_r2 = cpy_r_r0 != cpy_r_r1; if (cpy_r_r2) goto CPyL3; - cpy_r_r3 = CPyStatics[3]; /* 'builtins' */ + cpy_r_r3 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'builtins' */ cpy_r_r4 = PyImport_Import(cpy_r_r3); if (unlikely(cpy_r_r4 == NULL)) { CPy_AddTraceback("faster_hexbytes/_utils.py", "", -1, CPyStatic__utils___globals); @@ -985,39 +988,39 @@ CPyL3: ; cpy_r_r7 = (void *)&cpy_r_r6; int64_t cpy_r_r8[1] = {1}; cpy_r_r9 = (void *)&cpy_r_r8; - cpy_r_r10 = CPyStatics[77]; /* (('binascii', 'binascii', 'binascii'),) */ + cpy_r_r10 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* (('binascii', 'binascii', 'binascii'),) */ cpy_r_r11 = CPyStatic__utils___globals; - cpy_r_r12 = CPyStatics[31]; /* 'faster_hexbytes/_utils.py' */ - cpy_r_r13 = CPyStatics[32]; /* '' */ + cpy_r_r12 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'faster_hexbytes/_utils.py' */ + cpy_r_r13 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '' */ cpy_r_r14 = CPyImport_ImportMany(cpy_r_r10, cpy_r_r7, cpy_r_r11, cpy_r_r12, cpy_r_r13, cpy_r_r9); if (!cpy_r_r14) goto CPyL8; - cpy_r_r15 = CPyStatics[78]; /* ('Final', 'Union') */ - cpy_r_r16 = CPyStatics[35]; /* 'typing' */ + cpy_r_r15 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* ('Final', 'Union') */ + cpy_r_r16 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'typing' */ cpy_r_r17 = CPyStatic__utils___globals; cpy_r_r18 = CPyImport_ImportFromMany(cpy_r_r16, cpy_r_r15, cpy_r_r15, cpy_r_r17); if (unlikely(cpy_r_r18 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "", 2, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL8; } CPyModule_typing = cpy_r_r18; CPy_INCREF(CPyModule_typing); CPy_DECREF(cpy_r_r18); cpy_r_r19 = CPyModule_binascii; - cpy_r_r20 = CPyStatics[36]; /* 'unhexlify' */ + cpy_r_r20 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'unhexlify' */ cpy_r_r21 = CPyObject_GetAttr(cpy_r_r19, cpy_r_r20); if (unlikely(cpy_r_r21 == NULL)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "", 8, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL8; } CPyStatic__utils___unhexlify = cpy_r_r21; CPy_INCREF(CPyStatic__utils___unhexlify); cpy_r_r22 = CPyStatic__utils___globals; - cpy_r_r23 = CPyStatics[36]; /* 'unhexlify' */ + cpy_r_r23 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'unhexlify' */ cpy_r_r24 = CPyDict_SetItem(cpy_r_r22, cpy_r_r23, cpy_r_r21); CPy_DECREF(cpy_r_r21); cpy_r_r25 = cpy_r_r24 >= 0; if (unlikely(!cpy_r_r25)) { - CPy_AddTraceback("faster_hexbytes/_utils.py", "", 8, CPyStatic__utils___globals); + CPy_AddTraceback("faster_hexbytes/_utils.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic__utils___globals); goto CPyL8; } return 1; @@ -1722,7 +1725,7 @@ PyObject *CPyDef_main_____new___3_HexBytes_obj_____call__(PyObject *cpy_r___mypy PyObject *cpy_r_r7; cpy_r_r0 = CPyDef__utils___to_bytes(cpy_r_val); if (unlikely(cpy_r_r0 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__new__", 50, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "__new__", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL7; } cpy_r_r1 = CPyStatic_main____bytes_new; @@ -1734,7 +1737,7 @@ CPyL2: ; PyErr_SetString(PyExc_NameError, "value for final name \"_bytes_new\" was not set"); cpy_r_r2 = 0; if (unlikely(!cpy_r_r2)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__new__", 51, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "__new__", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL7; } CPy_Unreachable(); @@ -1743,7 +1746,7 @@ CPyL4: ; cpy_r_r4 = (PyObject **)&cpy_r_r3; cpy_r_r5 = PyObject_Vectorcall(cpy_r_r1, cpy_r_r4, 2, 0); if (unlikely(cpy_r_r5 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__new__", 51, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "__new__", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL9; } CPy_DECREF(cpy_r_r0); @@ -1809,7 +1812,7 @@ __LL4: ; PyObject *retval = CPyDef_main_____new___3_HexBytes_obj_____call__(arg___mypyc_self__, arg_cls, arg_val); return retval; fail: ; - CPy_AddTraceback("faster_hexbytes/main.py", "__new__", 49, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "__new__", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); return NULL; } @@ -1874,12 +1877,12 @@ PyObject *CPyDef_main_____getitem___3_HexBytes_obj_____call__(PyObject *cpy_r___ PyObject *cpy_r_r22; PyObject *cpy_r_r23; cpy_r_r0 = (PyObject *)&PyBytes_Type; - cpy_r_r1 = CPyStatics[37]; /* '__getitem__' */ + cpy_r_r1 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '__getitem__' */ PyObject *cpy_r_r2[3] = {cpy_r_r0, cpy_r_self, cpy_r_key}; cpy_r_r3 = (PyObject **)&cpy_r_r2; cpy_r_r4 = PyObject_VectorcallMethod(cpy_r_r1, cpy_r_r3, 9223372036854775811ULL, 0); if (unlikely(cpy_r_r4 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 64, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL14; } if (PyLong_Check(cpy_r_r4)) @@ -1906,7 +1909,7 @@ __LL5: ; } CPy_DECREF(cpy_r_r5); if (unlikely(cpy_r_r7 == CPY_INT_TAG)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 66, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL14; } cpy_r_r8 = CPyTagged_StealAsObject(cpy_r_r7); @@ -1931,7 +1934,7 @@ CPyL6: ; cpy_r_r15 = (PyObject **)&cpy_r_r14; cpy_r_r16 = PyObject_Vectorcall(cpy_r_r13, cpy_r_r15, 1, 0); if (unlikely(cpy_r_r16 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 70, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL16; } CPy_DECREF(cpy_r_r12); @@ -1954,7 +1957,7 @@ CPyL10: ; cpy_r_r21 = PyObject_Vectorcall(cpy_r_r9, cpy_r_r20, 1, 0); CPy_DECREF(cpy_r_r9); if (unlikely(cpy_r_r21 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 71, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL18; } CPy_DECREF(cpy_r_r18); @@ -2003,7 +2006,7 @@ PyObject *CPyPy_main_____getitem___3_HexBytes_obj_____call__(PyObject *self, PyO PyObject *retval = CPyDef_main_____getitem___3_HexBytes_obj_____call__(arg___mypyc_self__, arg_self, arg_key); return retval; fail: ; - CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", 61, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "__getitem__", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); return NULL; } @@ -2054,13 +2057,13 @@ PyObject *CPyDef_main_____repr___3_HexBytes_obj_____call__(PyObject *cpy_r___myp PyObject *cpy_r_r6; PyObject *cpy_r_r7; PyObject *cpy_r_r8; - cpy_r_r0 = CPyStatics[38]; /* "HexBytes('0x" */ - cpy_r_r1 = CPyStatics[15]; /* 'hex' */ + cpy_r_r0 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* "HexBytes('0x" */ + cpy_r_r1 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'hex' */ PyObject *cpy_r_r2[1] = {cpy_r_self}; cpy_r_r3 = (PyObject **)&cpy_r_r2; cpy_r_r4 = PyObject_VectorcallMethod(cpy_r_r1, cpy_r_r3, 9223372036854775809ULL, 0); if (unlikely(cpy_r_r4 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 74, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL4; } if (likely(PyUnicode_Check(cpy_r_r4))) @@ -2069,11 +2072,11 @@ PyObject *CPyDef_main_____repr___3_HexBytes_obj_____call__(PyObject *cpy_r___myp CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__repr__", 74, CPyStatic_main___globals, "str", cpy_r_r4); goto CPyL4; } - cpy_r_r6 = CPyStatics[39]; /* "')" */ + cpy_r_r6 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* "')" */ cpy_r_r7 = CPyStr_Build(3, cpy_r_r0, cpy_r_r5, cpy_r_r6); CPy_DECREF(cpy_r_r5); if (unlikely(cpy_r_r7 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 74, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL4; } return cpy_r_r7; @@ -2101,7 +2104,7 @@ PyObject *CPyPy_main_____repr___3_HexBytes_obj_____call__(PyObject *self, PyObje PyObject *retval = CPyDef_main_____repr___3_HexBytes_obj_____call__(arg___mypyc_self__, arg_self); return retval; fail: ; - CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 73, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); return NULL; } @@ -2151,13 +2154,13 @@ PyObject *CPyDef_main___to_0x_hex_HexBytes_obj_____call__(PyObject *cpy_r___mypy PyObject *cpy_r_r5; PyObject *cpy_r_r6; PyObject *cpy_r_r7; - cpy_r_r0 = CPyStatics[24]; /* '0x' */ - cpy_r_r1 = CPyStatics[15]; /* 'hex' */ + cpy_r_r0 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '0x' */ + cpy_r_r1 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'hex' */ PyObject *cpy_r_r2[1] = {cpy_r_self}; cpy_r_r3 = (PyObject **)&cpy_r_r2; cpy_r_r4 = PyObject_VectorcallMethod(cpy_r_r1, cpy_r_r3, 9223372036854775809ULL, 0); if (unlikely(cpy_r_r4 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "to_0x_hex", 80, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "to_0x_hex", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL4; } if (likely(PyUnicode_Check(cpy_r_r4))) @@ -2169,7 +2172,7 @@ PyObject *CPyDef_main___to_0x_hex_HexBytes_obj_____call__(PyObject *cpy_r___mypy cpy_r_r6 = CPyStr_Build(2, cpy_r_r0, cpy_r_r5); CPy_DECREF(cpy_r_r5); if (unlikely(cpy_r_r6 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "to_0x_hex", 80, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "to_0x_hex", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL4; } return cpy_r_r6; @@ -2197,7 +2200,7 @@ PyObject *CPyPy_main___to_0x_hex_HexBytes_obj_____call__(PyObject *self, PyObjec PyObject *retval = CPyDef_main___to_0x_hex_HexBytes_obj_____call__(arg___mypyc_self__, arg_self); return retval; fail: ; - CPy_AddTraceback("faster_hexbytes/main.py", "to_0x_hex", 76, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "to_0x_hex", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); return NULL; } @@ -2255,7 +2258,7 @@ tuple_T2OT2OO CPyDef_main_____reduce___3_HexBytes_obj_____call__(PyObject *cpy_r PyErr_SetString(PyExc_NameError, "value for final name \"_bytes_new\" was not set"); cpy_r_r1 = 0; if (unlikely(!cpy_r_r1)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__reduce__", 90, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "__reduce__", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL6; } CPy_Unreachable(); @@ -2266,7 +2269,7 @@ CPyL3: ; cpy_r_r5 = (PyObject **)&cpy_r_r4; cpy_r_r6 = PyObject_Vectorcall(cpy_r_r3, cpy_r_r5, 1, 0); if (unlikely(cpy_r_r6 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "__reduce__", 90, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "__reduce__", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL7; } if (likely(PyBytes_Check(cpy_r_r6) || PyByteArray_Check(cpy_r_r6))) @@ -2325,7 +2328,7 @@ PyObject *CPyPy_main_____reduce___3_HexBytes_obj_____call__(PyObject *self, PyOb PyTuple_SET_ITEM(retbox, 1, __tmp8); return retbox; fail: ; - CPy_AddTraceback("faster_hexbytes/main.py", "__reduce__", 82, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "__reduce__", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); return NULL; } @@ -2597,7 +2600,7 @@ char CPyDef_main_____top_level__(void) { cpy_r_r1 = (PyObject *)&_Py_NoneStruct; cpy_r_r2 = cpy_r_r0 != cpy_r_r1; if (cpy_r_r2) goto CPyL3; - cpy_r_r3 = CPyStatics[3]; /* 'builtins' */ + cpy_r_r3 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'builtins' */ cpy_r_r4 = PyImport_Import(cpy_r_r3); if (unlikely(cpy_r_r4 == NULL)) { CPy_AddTraceback("faster_hexbytes/main.py", "", -1, CPyStatic_main___globals); @@ -2607,13 +2610,13 @@ char CPyDef_main_____top_level__(void) { CPy_INCREF(CPyModule_builtins); CPy_DECREF(cpy_r_r4); CPyL3: ; - cpy_r_r5 = CPyStatics[79]; /* ('TYPE_CHECKING', 'Callable', 'Final', 'Tuple', 'Type', + cpy_r_r5 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* ('TYPE_CHECKING', 'Callable', 'Final', 'Tuple', 'Type', 'Union', 'overload') */ - cpy_r_r6 = CPyStatics[35]; /* 'typing' */ + cpy_r_r6 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'typing' */ cpy_r_r7 = CPyStatic_main___globals; cpy_r_r8 = CPyImport_ImportFromMany(cpy_r_r6, cpy_r_r5, cpy_r_r5, cpy_r_r7); if (unlikely(cpy_r_r8 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 1, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL105; } CPyModule_typing = cpy_r_r8; @@ -2624,68 +2627,68 @@ CPyL3: ; cpy_r_r11 = (void *)&cpy_r_r10; int64_t cpy_r_r12[1] = {14}; cpy_r_r13 = (void *)&cpy_r_r12; - cpy_r_r14 = CPyStatics[81]; /* (('hexbytes.main', 'hexbytes.main', 'hexbytes'),) */ + cpy_r_r14 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* (('hexbytes.main', 'hexbytes.main', 'hexbytes'),) */ cpy_r_r15 = CPyStatic_main___globals; - cpy_r_r16 = CPyStatics[46]; /* 'faster_hexbytes/main.py' */ - cpy_r_r17 = CPyStatics[32]; /* '' */ + cpy_r_r16 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'faster_hexbytes/main.py' */ + cpy_r_r17 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '' */ cpy_r_r18 = CPyImport_ImportMany(cpy_r_r14, cpy_r_r11, cpy_r_r15, cpy_r_r16, cpy_r_r17, cpy_r_r13); if (!cpy_r_r18) goto CPyL105; - cpy_r_r19 = CPyStatics[82]; /* ('mypyc_attr',) */ - cpy_r_r20 = CPyStatics[48]; /* 'mypy_extensions' */ + cpy_r_r19 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* ('mypyc_attr',) */ + cpy_r_r20 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'mypy_extensions' */ cpy_r_r21 = CPyStatic_main___globals; cpy_r_r22 = CPyImport_ImportFromMany(cpy_r_r20, cpy_r_r19, cpy_r_r19, cpy_r_r21); if (unlikely(cpy_r_r22 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 15, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL105; } CPyModule_mypy_extensions = cpy_r_r22; CPy_INCREF(CPyModule_mypy_extensions); CPy_DECREF(cpy_r_r22); - cpy_r_r23 = CPyStatics[83]; /* ('Self',) */ - cpy_r_r24 = CPyStatics[50]; /* 'typing_extensions' */ + cpy_r_r23 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* ('Self',) */ + cpy_r_r24 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'typing_extensions' */ cpy_r_r25 = CPyStatic_main___globals; cpy_r_r26 = CPyImport_ImportFromMany(cpy_r_r24, cpy_r_r23, cpy_r_r23, cpy_r_r25); if (unlikely(cpy_r_r26 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 18, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL105; } CPyModule_typing_extensions = cpy_r_r26; CPy_INCREF(CPyModule_typing_extensions); CPy_DECREF(cpy_r_r26); - cpy_r_r27 = CPyStatics[84]; /* ('to_bytes',) */ - cpy_r_r28 = CPyStatics[52]; /* 'faster_hexbytes._utils' */ + cpy_r_r27 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* ('to_bytes',) */ + cpy_r_r28 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'faster_hexbytes._utils' */ cpy_r_r29 = CPyStatic_main___globals; cpy_r_r30 = CPyImport_ImportFromMany(cpy_r_r28, cpy_r_r27, cpy_r_r27, cpy_r_r29); if (unlikely(cpy_r_r30 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 22, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL105; } CPyModule_faster_hexbytes____utils = cpy_r_r30; CPy_INCREF(CPyModule_faster_hexbytes____utils); CPy_DECREF(cpy_r_r30); cpy_r_r31 = CPyStatic_main___globals; - cpy_r_r32 = CPyStatics[34]; /* 'Union' */ + cpy_r_r32 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'Union' */ cpy_r_r33 = CPyDict_GetItem(cpy_r_r31, cpy_r_r32); if (unlikely(cpy_r_r33 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 32, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL105; } cpy_r_r34 = (PyObject *)&PyBytes_Type; cpy_r_r35 = (PyObject *)&PyUnicode_Type; cpy_r_r36 = (PyObject *)&PyBool_Type; cpy_r_r37 = CPyModule_builtins; - cpy_r_r38 = CPyStatics[53]; /* 'bytearray' */ + cpy_r_r38 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'bytearray' */ cpy_r_r39 = CPyObject_GetAttr(cpy_r_r37, cpy_r_r38); if (unlikely(cpy_r_r39 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 32, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL106; } cpy_r_r40 = (PyObject *)&PyLong_Type; cpy_r_r41 = CPyModule_builtins; - cpy_r_r42 = CPyStatics[16]; /* 'memoryview' */ + cpy_r_r42 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'memoryview' */ cpy_r_r43 = CPyObject_GetAttr(cpy_r_r41, cpy_r_r42); if (unlikely(cpy_r_r43 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 32, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL107; } CPy_INCREF(cpy_r_r34); @@ -2717,63 +2720,63 @@ CPyL3: ; CPy_DECREF(cpy_r_r33); CPy_DECREF(cpy_r_r45); if (unlikely(cpy_r_r46 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 32, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL105; } cpy_r_r47 = CPyStatic_main___globals; - cpy_r_r48 = CPyStatics[54]; /* 'BytesLike' */ + cpy_r_r48 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'BytesLike' */ cpy_r_r49 = CPyDict_SetItem(cpy_r_r47, cpy_r_r48, cpy_r_r46); CPy_DECREF(cpy_r_r46); cpy_r_r50 = cpy_r_r49 >= 0; if (unlikely(!cpy_r_r50)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 32, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL105; } cpy_r_r51 = (PyObject *)&PyBytes_Type; - cpy_r_r52 = CPyStatics[55]; /* '__new__' */ + cpy_r_r52 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '__new__' */ cpy_r_r53 = CPyObject_GetAttr(cpy_r_r51, cpy_r_r52); if (unlikely(cpy_r_r53 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 34, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL105; } CPyStatic_main____bytes_new = cpy_r_r53; CPy_INCREF(CPyStatic_main____bytes_new); cpy_r_r54 = CPyStatic_main___globals; - cpy_r_r55 = CPyStatics[56]; /* '_bytes_new' */ + cpy_r_r55 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '_bytes_new' */ cpy_r_r56 = CPyDict_SetItem(cpy_r_r54, cpy_r_r55, cpy_r_r53); CPy_DECREF(cpy_r_r53); cpy_r_r57 = cpy_r_r56 >= 0; if (unlikely(!cpy_r_r57)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 34, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL105; } cpy_r_r58 = CPyModule_hexbytes___main; - cpy_r_r59 = CPyStatics[7]; /* 'HexBytes' */ + cpy_r_r59 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'HexBytes' */ cpy_r_r60 = CPyObject_GetAttr(cpy_r_r58, cpy_r_r59); if (unlikely(cpy_r_r60 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 38, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL105; } cpy_r_r61 = PyTuple_Pack(1, cpy_r_r60); CPy_DECREF(cpy_r_r60); if (unlikely(cpy_r_r61 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 38, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL105; } cpy_r_r62 = (PyObject *)&PyType_Type; cpy_r_r63 = CPy_CalculateMetaclass(cpy_r_r62, cpy_r_r61); if (unlikely(cpy_r_r63 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 38, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL108; } - cpy_r_r64 = CPyStatics[57]; /* '__prepare__' */ + cpy_r_r64 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '__prepare__' */ cpy_r_r65 = PyObject_HasAttr(cpy_r_r63, cpy_r_r64); if (!cpy_r_r65) goto CPyL24; - cpy_r_r66 = CPyStatics[7]; /* 'HexBytes' */ - cpy_r_r67 = CPyStatics[57]; /* '__prepare__' */ + cpy_r_r66 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'HexBytes' */ + cpy_r_r67 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '__prepare__' */ cpy_r_r68 = CPyObject_GetAttr(cpy_r_r63, cpy_r_r67); if (unlikely(cpy_r_r68 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 38, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL108; } PyObject *cpy_r_r69[2] = {cpy_r_r66, cpy_r_r61}; @@ -2781,7 +2784,7 @@ CPyL3: ; cpy_r_r71 = PyObject_Vectorcall(cpy_r_r68, cpy_r_r70, 2, 0); CPy_DECREF(cpy_r_r68); if (unlikely(cpy_r_r71 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 38, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL108; } if (likely(PyDict_Check(cpy_r_r71))) @@ -2795,26 +2798,26 @@ CPyL3: ; CPyL24: ; cpy_r_r74 = PyDict_New(); if (unlikely(cpy_r_r74 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 38, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL108; } cpy_r_r73 = cpy_r_r74; CPyL26: ; cpy_r_r75 = PyDict_New(); if (unlikely(cpy_r_r75 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 38, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL109; } cpy_r_r76 = CPyDef_main_____new___3_HexBytes_obj(); if (unlikely(cpy_r_r76 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 49, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL110; } cpy_r_r77 = CPyModule_builtins; - cpy_r_r78 = CPyStatics[58]; /* 'staticmethod' */ + cpy_r_r78 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'staticmethod' */ cpy_r_r79 = CPyObject_GetAttr(cpy_r_r77, cpy_r_r78); if (unlikely(cpy_r_r79 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 49, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL111; } PyObject *cpy_r_r80[1] = {cpy_r_r76}; @@ -2822,120 +2825,120 @@ CPyL26: ; cpy_r_r82 = PyObject_Vectorcall(cpy_r_r79, cpy_r_r81, 1, 0); CPy_DECREF(cpy_r_r79); if (unlikely(cpy_r_r82 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 49, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL111; } CPy_DECREF_NO_IMM(cpy_r_r76); - cpy_r_r83 = CPyStatics[55]; /* '__new__' */ + cpy_r_r83 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '__new__' */ cpy_r_r84 = CPyDict_SetItem(cpy_r_r73, cpy_r_r83, cpy_r_r82); CPy_DECREF(cpy_r_r82); cpy_r_r85 = cpy_r_r84 >= 0; if (unlikely(!cpy_r_r85)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 49, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL110; } cpy_r_r86 = CPyDef_main_____getitem___3_HexBytes_obj(); if (unlikely(cpy_r_r86 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 61, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL110; } - cpy_r_r87 = CPyStatics[37]; /* '__getitem__' */ + cpy_r_r87 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '__getitem__' */ cpy_r_r88 = CPyDict_SetItem(cpy_r_r73, cpy_r_r87, cpy_r_r86); CPy_DECREF_NO_IMM(cpy_r_r86); cpy_r_r89 = cpy_r_r88 >= 0; if (unlikely(!cpy_r_r89)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 61, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL110; } cpy_r_r90 = CPyDef_main_____repr___3_HexBytes_obj(); if (unlikely(cpy_r_r90 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 73, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL110; } - cpy_r_r91 = CPyStatics[59]; /* '__repr__' */ + cpy_r_r91 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '__repr__' */ cpy_r_r92 = CPyDict_SetItem(cpy_r_r73, cpy_r_r91, cpy_r_r90); CPy_DECREF_NO_IMM(cpy_r_r90); cpy_r_r93 = cpy_r_r92 >= 0; if (unlikely(!cpy_r_r93)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 73, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL110; } cpy_r_r94 = CPyDef_main___to_0x_hex_HexBytes_obj(); if (unlikely(cpy_r_r94 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 76, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL110; } - cpy_r_r95 = CPyStatics[60]; /* 'to_0x_hex' */ + cpy_r_r95 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'to_0x_hex' */ cpy_r_r96 = CPyDict_SetItem(cpy_r_r73, cpy_r_r95, cpy_r_r94); CPy_DECREF_NO_IMM(cpy_r_r94); cpy_r_r97 = cpy_r_r96 >= 0; if (unlikely(!cpy_r_r97)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 76, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL110; } cpy_r_r98 = CPyDef_main_____reduce___3_HexBytes_obj(); if (unlikely(cpy_r_r98 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 82, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL110; } - cpy_r_r99 = CPyStatics[61]; /* '__reduce__' */ + cpy_r_r99 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '__reduce__' */ cpy_r_r100 = CPyDict_SetItem(cpy_r_r73, cpy_r_r99, cpy_r_r98); CPy_DECREF_NO_IMM(cpy_r_r98); cpy_r_r101 = cpy_r_r100 >= 0; if (unlikely(!cpy_r_r101)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 82, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL110; } - cpy_r_r102 = CPyStatics[7]; /* 'HexBytes' */ - cpy_r_r103 = CPyStatics[62]; /* '__annotations__' */ + cpy_r_r102 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'HexBytes' */ + cpy_r_r103 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '__annotations__' */ cpy_r_r104 = CPyDict_SetItem(cpy_r_r73, cpy_r_r103, cpy_r_r75); CPy_DECREF(cpy_r_r75); cpy_r_r105 = cpy_r_r104 >= 0; if (unlikely(!cpy_r_r105)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 38, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL109; } - cpy_r_r106 = CPyStatics[63]; /* 'mypyc filler docstring' */ - cpy_r_r107 = CPyStatics[64]; /* '__doc__' */ + cpy_r_r106 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'mypyc filler docstring' */ + cpy_r_r107 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '__doc__' */ cpy_r_r108 = CPyDict_SetItem(cpy_r_r73, cpy_r_r107, cpy_r_r106); cpy_r_r109 = cpy_r_r108 >= 0; if (unlikely(!cpy_r_r109)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 38, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL109; } - cpy_r_r110 = CPyStatics[8]; /* 'faster_hexbytes.main' */ - cpy_r_r111 = CPyStatics[65]; /* '__module__' */ + cpy_r_r110 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'faster_hexbytes.main' */ + cpy_r_r111 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '__module__' */ cpy_r_r112 = CPyDict_SetItem(cpy_r_r73, cpy_r_r111, cpy_r_r110); cpy_r_r113 = cpy_r_r112 >= 0; if (unlikely(!cpy_r_r113)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 38, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL109; } PyObject *cpy_r_r114[3] = {cpy_r_r102, cpy_r_r61, cpy_r_r73}; cpy_r_r115 = (PyObject **)&cpy_r_r114; cpy_r_r116 = PyObject_Vectorcall(cpy_r_r63, cpy_r_r115, 3, 0); if (unlikely(cpy_r_r116 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 38, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL109; } CPy_DECREF(cpy_r_r73); CPy_DECREF(cpy_r_r61); cpy_r_r117 = CPyStatic_main___globals; - cpy_r_r118 = CPyStatics[47]; /* 'mypyc_attr' */ + cpy_r_r118 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'mypyc_attr' */ cpy_r_r119 = CPyDict_GetItem(cpy_r_r117, cpy_r_r118); if (unlikely(cpy_r_r119 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL112; } cpy_r_r120 = 0 ? Py_True : Py_False; cpy_r_r121 = 1 ? Py_True : Py_False; PyObject *cpy_r_r122[2] = {cpy_r_r120, cpy_r_r121}; cpy_r_r123 = (PyObject **)&cpy_r_r122; - cpy_r_r124 = CPyStatics[85]; /* ('native_class', 'allow_interpreted_subclasses') */ + cpy_r_r124 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* ('native_class', 'allow_interpreted_subclasses') */ cpy_r_r125 = PyObject_Vectorcall(cpy_r_r119, cpy_r_r123, 0, cpy_r_r124); CPy_DECREF(cpy_r_r119); if (unlikely(cpy_r_r125 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 37, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL112; } PyObject *cpy_r_r126[1] = {cpy_r_r116}; @@ -2943,49 +2946,49 @@ CPyL26: ; cpy_r_r128 = PyObject_Vectorcall(cpy_r_r125, cpy_r_r127, 1, 0); CPy_DECREF(cpy_r_r125); if (unlikely(cpy_r_r128 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 38, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL112; } CPy_DECREF(cpy_r_r116); CPyType_main___HexBytes = (PyTypeObject *)cpy_r_r128; CPy_INCREF(CPyType_main___HexBytes); cpy_r_r129 = CPyStatic_main___globals; - cpy_r_r130 = CPyStatics[7]; /* 'HexBytes' */ + cpy_r_r130 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'HexBytes' */ cpy_r_r131 = PyDict_SetItem(cpy_r_r129, cpy_r_r130, cpy_r_r128); CPy_DECREF(cpy_r_r128); cpy_r_r132 = cpy_r_r131 >= 0; if (unlikely(!cpy_r_r132)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 38, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL105; } cpy_r_r133 = (PyObject *)CPyType_main___HexBytes; cpy_r_r134 = CPyStatic_main___globals; - cpy_r_r135 = CPyStatics[7]; /* 'HexBytes' */ + cpy_r_r135 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'HexBytes' */ cpy_r_r136 = CPyDict_GetItem(cpy_r_r134, cpy_r_r135); if (unlikely(cpy_r_r136 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 97, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL105; } cpy_r_r137 = PyTuple_Pack(1, cpy_r_r136); CPy_DECREF(cpy_r_r136); if (unlikely(cpy_r_r137 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 97, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL105; } cpy_r_r138 = (PyObject *)&PyType_Type; cpy_r_r139 = CPy_CalculateMetaclass(cpy_r_r138, cpy_r_r137); if (unlikely(cpy_r_r139 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 97, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL113; } - cpy_r_r140 = CPyStatics[57]; /* '__prepare__' */ + cpy_r_r140 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '__prepare__' */ cpy_r_r141 = PyObject_HasAttr(cpy_r_r139, cpy_r_r140); if (!cpy_r_r141) goto CPyL55; - cpy_r_r142 = CPyStatics[68]; /* '_HexBytesSubclass1' */ - cpy_r_r143 = CPyStatics[57]; /* '__prepare__' */ + cpy_r_r142 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '_HexBytesSubclass1' */ + cpy_r_r143 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '__prepare__' */ cpy_r_r144 = CPyObject_GetAttr(cpy_r_r139, cpy_r_r143); if (unlikely(cpy_r_r144 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 97, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL113; } PyObject *cpy_r_r145[2] = {cpy_r_r142, cpy_r_r137}; @@ -2993,7 +2996,7 @@ CPyL26: ; cpy_r_r147 = PyObject_Vectorcall(cpy_r_r144, cpy_r_r146, 2, 0); CPy_DECREF(cpy_r_r144); if (unlikely(cpy_r_r147 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 97, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL113; } if (likely(PyDict_Check(cpy_r_r147))) @@ -3007,65 +3010,65 @@ CPyL26: ; CPyL55: ; cpy_r_r150 = PyDict_New(); if (unlikely(cpy_r_r150 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 97, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL113; } cpy_r_r149 = cpy_r_r150; CPyL57: ; cpy_r_r151 = PyDict_New(); if (unlikely(cpy_r_r151 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 97, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL114; } - cpy_r_r152 = CPyStatics[68]; /* '_HexBytesSubclass1' */ - cpy_r_r153 = CPyStatics[62]; /* '__annotations__' */ + cpy_r_r152 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '_HexBytesSubclass1' */ + cpy_r_r153 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '__annotations__' */ cpy_r_r154 = CPyDict_SetItem(cpy_r_r149, cpy_r_r153, cpy_r_r151); CPy_DECREF(cpy_r_r151); cpy_r_r155 = cpy_r_r154 >= 0; if (unlikely(!cpy_r_r155)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 97, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL114; } - cpy_r_r156 = CPyStatics[63]; /* 'mypyc filler docstring' */ - cpy_r_r157 = CPyStatics[64]; /* '__doc__' */ + cpy_r_r156 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'mypyc filler docstring' */ + cpy_r_r157 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '__doc__' */ cpy_r_r158 = CPyDict_SetItem(cpy_r_r149, cpy_r_r157, cpy_r_r156); cpy_r_r159 = cpy_r_r158 >= 0; if (unlikely(!cpy_r_r159)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 97, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL114; } - cpy_r_r160 = CPyStatics[8]; /* 'faster_hexbytes.main' */ - cpy_r_r161 = CPyStatics[65]; /* '__module__' */ + cpy_r_r160 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'faster_hexbytes.main' */ + cpy_r_r161 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '__module__' */ cpy_r_r162 = CPyDict_SetItem(cpy_r_r149, cpy_r_r161, cpy_r_r160); cpy_r_r163 = cpy_r_r162 >= 0; if (unlikely(!cpy_r_r163)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 97, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL114; } PyObject *cpy_r_r164[3] = {cpy_r_r152, cpy_r_r137, cpy_r_r149}; cpy_r_r165 = (PyObject **)&cpy_r_r164; cpy_r_r166 = PyObject_Vectorcall(cpy_r_r139, cpy_r_r165, 3, 0); if (unlikely(cpy_r_r166 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 97, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL114; } CPy_DECREF(cpy_r_r149); CPy_DECREF(cpy_r_r137); cpy_r_r167 = CPyStatic_main___globals; - cpy_r_r168 = CPyStatics[47]; /* 'mypyc_attr' */ + cpy_r_r168 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'mypyc_attr' */ cpy_r_r169 = CPyDict_GetItem(cpy_r_r167, cpy_r_r168); if (unlikely(cpy_r_r169 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 96, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL115; } cpy_r_r170 = 0 ? Py_True : Py_False; PyObject *cpy_r_r171[1] = {cpy_r_r170}; cpy_r_r172 = (PyObject **)&cpy_r_r171; - cpy_r_r173 = CPyStatics[86]; /* ('native_class',) */ + cpy_r_r173 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* ('native_class',) */ cpy_r_r174 = PyObject_Vectorcall(cpy_r_r169, cpy_r_r172, 0, cpy_r_r173); CPy_DECREF(cpy_r_r169); if (unlikely(cpy_r_r174 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 96, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL115; } PyObject *cpy_r_r175[1] = {cpy_r_r166}; @@ -3073,49 +3076,49 @@ CPyL57: ; cpy_r_r177 = PyObject_Vectorcall(cpy_r_r174, cpy_r_r176, 1, 0); CPy_DECREF(cpy_r_r174); if (unlikely(cpy_r_r177 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 97, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL115; } CPy_DECREF(cpy_r_r166); CPyType_main____HexBytesSubclass1 = (PyTypeObject *)cpy_r_r177; CPy_INCREF(CPyType_main____HexBytesSubclass1); cpy_r_r178 = CPyStatic_main___globals; - cpy_r_r179 = CPyStatics[68]; /* '_HexBytesSubclass1' */ + cpy_r_r179 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '_HexBytesSubclass1' */ cpy_r_r180 = PyDict_SetItem(cpy_r_r178, cpy_r_r179, cpy_r_r177); CPy_DECREF(cpy_r_r177); cpy_r_r181 = cpy_r_r180 >= 0; if (unlikely(!cpy_r_r181)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 97, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL105; } cpy_r_r182 = (PyObject *)CPyType_main____HexBytesSubclass1; cpy_r_r183 = CPyStatic_main___globals; - cpy_r_r184 = CPyStatics[7]; /* 'HexBytes' */ + cpy_r_r184 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'HexBytes' */ cpy_r_r185 = CPyDict_GetItem(cpy_r_r183, cpy_r_r184); if (unlikely(cpy_r_r185 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 99, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL105; } cpy_r_r186 = PyTuple_Pack(1, cpy_r_r185); CPy_DECREF(cpy_r_r185); if (unlikely(cpy_r_r186 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 99, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL105; } cpy_r_r187 = (PyObject *)&PyType_Type; cpy_r_r188 = CPy_CalculateMetaclass(cpy_r_r187, cpy_r_r186); if (unlikely(cpy_r_r188 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 99, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL116; } - cpy_r_r189 = CPyStatics[57]; /* '__prepare__' */ + cpy_r_r189 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '__prepare__' */ cpy_r_r190 = PyObject_HasAttr(cpy_r_r188, cpy_r_r189); if (!cpy_r_r190) goto CPyL74; - cpy_r_r191 = CPyStatics[69]; /* '_HexBytesSubclass2' */ - cpy_r_r192 = CPyStatics[57]; /* '__prepare__' */ + cpy_r_r191 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '_HexBytesSubclass2' */ + cpy_r_r192 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '__prepare__' */ cpy_r_r193 = CPyObject_GetAttr(cpy_r_r188, cpy_r_r192); if (unlikely(cpy_r_r193 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 99, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL116; } PyObject *cpy_r_r194[2] = {cpy_r_r191, cpy_r_r186}; @@ -3123,7 +3126,7 @@ CPyL57: ; cpy_r_r196 = PyObject_Vectorcall(cpy_r_r193, cpy_r_r195, 2, 0); CPy_DECREF(cpy_r_r193); if (unlikely(cpy_r_r196 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 99, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL116; } if (likely(PyDict_Check(cpy_r_r196))) @@ -3137,65 +3140,65 @@ CPyL57: ; CPyL74: ; cpy_r_r199 = PyDict_New(); if (unlikely(cpy_r_r199 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 99, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL116; } cpy_r_r198 = cpy_r_r199; CPyL76: ; cpy_r_r200 = PyDict_New(); if (unlikely(cpy_r_r200 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 99, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL117; } - cpy_r_r201 = CPyStatics[69]; /* '_HexBytesSubclass2' */ - cpy_r_r202 = CPyStatics[62]; /* '__annotations__' */ + cpy_r_r201 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '_HexBytesSubclass2' */ + cpy_r_r202 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '__annotations__' */ cpy_r_r203 = CPyDict_SetItem(cpy_r_r198, cpy_r_r202, cpy_r_r200); CPy_DECREF(cpy_r_r200); cpy_r_r204 = cpy_r_r203 >= 0; if (unlikely(!cpy_r_r204)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 99, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL117; } - cpy_r_r205 = CPyStatics[63]; /* 'mypyc filler docstring' */ - cpy_r_r206 = CPyStatics[64]; /* '__doc__' */ + cpy_r_r205 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'mypyc filler docstring' */ + cpy_r_r206 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '__doc__' */ cpy_r_r207 = CPyDict_SetItem(cpy_r_r198, cpy_r_r206, cpy_r_r205); cpy_r_r208 = cpy_r_r207 >= 0; if (unlikely(!cpy_r_r208)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 99, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL117; } - cpy_r_r209 = CPyStatics[8]; /* 'faster_hexbytes.main' */ - cpy_r_r210 = CPyStatics[65]; /* '__module__' */ + cpy_r_r209 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'faster_hexbytes.main' */ + cpy_r_r210 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '__module__' */ cpy_r_r211 = CPyDict_SetItem(cpy_r_r198, cpy_r_r210, cpy_r_r209); cpy_r_r212 = cpy_r_r211 >= 0; if (unlikely(!cpy_r_r212)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 99, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL117; } PyObject *cpy_r_r213[3] = {cpy_r_r201, cpy_r_r186, cpy_r_r198}; cpy_r_r214 = (PyObject **)&cpy_r_r213; cpy_r_r215 = PyObject_Vectorcall(cpy_r_r188, cpy_r_r214, 3, 0); if (unlikely(cpy_r_r215 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 99, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL117; } CPy_DECREF(cpy_r_r198); CPy_DECREF(cpy_r_r186); cpy_r_r216 = CPyStatic_main___globals; - cpy_r_r217 = CPyStatics[47]; /* 'mypyc_attr' */ + cpy_r_r217 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'mypyc_attr' */ cpy_r_r218 = CPyDict_GetItem(cpy_r_r216, cpy_r_r217); if (unlikely(cpy_r_r218 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 98, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL118; } cpy_r_r219 = 0 ? Py_True : Py_False; PyObject *cpy_r_r220[1] = {cpy_r_r219}; cpy_r_r221 = (PyObject **)&cpy_r_r220; - cpy_r_r222 = CPyStatics[86]; /* ('native_class',) */ + cpy_r_r222 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* ('native_class',) */ cpy_r_r223 = PyObject_Vectorcall(cpy_r_r218, cpy_r_r221, 0, cpy_r_r222); CPy_DECREF(cpy_r_r218); if (unlikely(cpy_r_r223 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 98, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL118; } PyObject *cpy_r_r224[1] = {cpy_r_r215}; @@ -3203,49 +3206,49 @@ CPyL76: ; cpy_r_r226 = PyObject_Vectorcall(cpy_r_r223, cpy_r_r225, 1, 0); CPy_DECREF(cpy_r_r223); if (unlikely(cpy_r_r226 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 99, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL118; } CPy_DECREF(cpy_r_r215); CPyType_main____HexBytesSubclass2 = (PyTypeObject *)cpy_r_r226; CPy_INCREF(CPyType_main____HexBytesSubclass2); cpy_r_r227 = CPyStatic_main___globals; - cpy_r_r228 = CPyStatics[69]; /* '_HexBytesSubclass2' */ + cpy_r_r228 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '_HexBytesSubclass2' */ cpy_r_r229 = PyDict_SetItem(cpy_r_r227, cpy_r_r228, cpy_r_r226); CPy_DECREF(cpy_r_r226); cpy_r_r230 = cpy_r_r229 >= 0; if (unlikely(!cpy_r_r230)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 99, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL105; } cpy_r_r231 = (PyObject *)CPyType_main____HexBytesSubclass2; cpy_r_r232 = CPyStatic_main___globals; - cpy_r_r233 = CPyStatics[7]; /* 'HexBytes' */ + cpy_r_r233 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'HexBytes' */ cpy_r_r234 = CPyDict_GetItem(cpy_r_r232, cpy_r_r233); if (unlikely(cpy_r_r234 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 101, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL105; } cpy_r_r235 = PyTuple_Pack(1, cpy_r_r234); CPy_DECREF(cpy_r_r234); if (unlikely(cpy_r_r235 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 101, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL105; } cpy_r_r236 = (PyObject *)&PyType_Type; cpy_r_r237 = CPy_CalculateMetaclass(cpy_r_r236, cpy_r_r235); if (unlikely(cpy_r_r237 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 101, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL119; } - cpy_r_r238 = CPyStatics[57]; /* '__prepare__' */ + cpy_r_r238 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '__prepare__' */ cpy_r_r239 = PyObject_HasAttr(cpy_r_r237, cpy_r_r238); if (!cpy_r_r239) goto CPyL93; - cpy_r_r240 = CPyStatics[70]; /* '_HexBytesSubclass3' */ - cpy_r_r241 = CPyStatics[57]; /* '__prepare__' */ + cpy_r_r240 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '_HexBytesSubclass3' */ + cpy_r_r241 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '__prepare__' */ cpy_r_r242 = CPyObject_GetAttr(cpy_r_r237, cpy_r_r241); if (unlikely(cpy_r_r242 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 101, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL119; } PyObject *cpy_r_r243[2] = {cpy_r_r240, cpy_r_r235}; @@ -3253,7 +3256,7 @@ CPyL76: ; cpy_r_r245 = PyObject_Vectorcall(cpy_r_r242, cpy_r_r244, 2, 0); CPy_DECREF(cpy_r_r242); if (unlikely(cpy_r_r245 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 101, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL119; } if (likely(PyDict_Check(cpy_r_r245))) @@ -3267,65 +3270,65 @@ CPyL76: ; CPyL93: ; cpy_r_r248 = PyDict_New(); if (unlikely(cpy_r_r248 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 101, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL119; } cpy_r_r247 = cpy_r_r248; CPyL95: ; cpy_r_r249 = PyDict_New(); if (unlikely(cpy_r_r249 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 101, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL120; } - cpy_r_r250 = CPyStatics[70]; /* '_HexBytesSubclass3' */ - cpy_r_r251 = CPyStatics[62]; /* '__annotations__' */ + cpy_r_r250 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '_HexBytesSubclass3' */ + cpy_r_r251 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '__annotations__' */ cpy_r_r252 = CPyDict_SetItem(cpy_r_r247, cpy_r_r251, cpy_r_r249); CPy_DECREF(cpy_r_r249); cpy_r_r253 = cpy_r_r252 >= 0; if (unlikely(!cpy_r_r253)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 101, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL120; } - cpy_r_r254 = CPyStatics[63]; /* 'mypyc filler docstring' */ - cpy_r_r255 = CPyStatics[64]; /* '__doc__' */ + cpy_r_r254 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'mypyc filler docstring' */ + cpy_r_r255 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '__doc__' */ cpy_r_r256 = CPyDict_SetItem(cpy_r_r247, cpy_r_r255, cpy_r_r254); cpy_r_r257 = cpy_r_r256 >= 0; if (unlikely(!cpy_r_r257)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 101, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL120; } - cpy_r_r258 = CPyStatics[8]; /* 'faster_hexbytes.main' */ - cpy_r_r259 = CPyStatics[65]; /* '__module__' */ + cpy_r_r258 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'faster_hexbytes.main' */ + cpy_r_r259 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '__module__' */ cpy_r_r260 = CPyDict_SetItem(cpy_r_r247, cpy_r_r259, cpy_r_r258); cpy_r_r261 = cpy_r_r260 >= 0; if (unlikely(!cpy_r_r261)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 101, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL120; } PyObject *cpy_r_r262[3] = {cpy_r_r250, cpy_r_r235, cpy_r_r247}; cpy_r_r263 = (PyObject **)&cpy_r_r262; cpy_r_r264 = PyObject_Vectorcall(cpy_r_r237, cpy_r_r263, 3, 0); if (unlikely(cpy_r_r264 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 101, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL120; } CPy_DECREF(cpy_r_r247); CPy_DECREF(cpy_r_r235); cpy_r_r265 = CPyStatic_main___globals; - cpy_r_r266 = CPyStatics[47]; /* 'mypyc_attr' */ + cpy_r_r266 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* 'mypyc_attr' */ cpy_r_r267 = CPyDict_GetItem(cpy_r_r265, cpy_r_r266); if (unlikely(cpy_r_r267 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 100, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL121; } cpy_r_r268 = 0 ? Py_True : Py_False; PyObject *cpy_r_r269[1] = {cpy_r_r268}; cpy_r_r270 = (PyObject **)&cpy_r_r269; - cpy_r_r271 = CPyStatics[86]; /* ('native_class',) */ + cpy_r_r271 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* ('native_class',) */ cpy_r_r272 = PyObject_Vectorcall(cpy_r_r267, cpy_r_r270, 0, cpy_r_r271); CPy_DECREF(cpy_r_r267); if (unlikely(cpy_r_r272 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 100, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL121; } PyObject *cpy_r_r273[1] = {cpy_r_r264}; @@ -3333,19 +3336,19 @@ CPyL95: ; cpy_r_r275 = PyObject_Vectorcall(cpy_r_r272, cpy_r_r274, 1, 0); CPy_DECREF(cpy_r_r272); if (unlikely(cpy_r_r275 == NULL)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 101, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL121; } CPy_DECREF(cpy_r_r264); CPyType_main____HexBytesSubclass3 = (PyTypeObject *)cpy_r_r275; CPy_INCREF(CPyType_main____HexBytesSubclass3); cpy_r_r276 = CPyStatic_main___globals; - cpy_r_r277 = CPyStatics[70]; /* '_HexBytesSubclass3' */ + cpy_r_r277 = CPyStatics[DIFFCHECK_PLACEHOLDER]; /* '_HexBytesSubclass3' */ cpy_r_r278 = PyDict_SetItem(cpy_r_r276, cpy_r_r277, cpy_r_r275); CPy_DECREF(cpy_r_r275); cpy_r_r279 = cpy_r_r278 >= 0; if (unlikely(!cpy_r_r279)) { - CPy_AddTraceback("faster_hexbytes/main.py", "", 101, CPyStatic_main___globals); + CPy_AddTraceback("faster_hexbytes/main.py", "", DIFFCHECK_PLACEHOLDER, CPyStatic_main___globals); goto CPyL105; } cpy_r_r280 = (PyObject *)CPyType_main____HexBytesSubclass3; @@ -3441,7 +3444,7 @@ int CPyGlobalsInit(void) return 0; } -PyObject *CPyStatics[87]; +PyObject *CPyStatics[DIFFCHECK_PLACEHOLDER]; const char * const CPyLit_Str[] = { "\005\bbuiltins\aversion\t__version\022importlib.metadata\bHexBytes", "\004\024faster_hexbytes.main\a__all__\bhexbytes\v__version__", diff --git a/build/faster_hexbytes.c b/build/faster_hexbytes.c index c09d246..c0722af 100644 --- a/build/faster_hexbytes.c +++ b/build/faster_hexbytes.c @@ -1,3 +1,6 @@ +#ifndef DIFFCHECK_PLACEHOLDER +#define DIFFCHECK_PLACEHOLDER 0 +#endif #include PyMODINIT_FUNC diff --git a/build/ops.txt b/build/ops.txt index 7a59370..8dfadfc 100644 --- a/build/ops.txt +++ b/build/ops.txt @@ -1,106 +1,3 @@ -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4, r5, r6 :: object - r7 :: str - r8 :: dict - r9, r10 :: object - r11 :: str - r12 :: dict - r13 :: object - r14 :: str - r15 :: list - r16, r17 :: ptr - r18 :: dict - r19 :: str - r20 :: i32 - r21 :: bit - r22 :: str - r23 :: dict - r24 :: str - r25 :: object - r26 :: object[1] - r27 :: object_ptr - r28 :: object - r29 :: str - r30 :: dict - r31 :: str - r32 :: i32 - r33 :: bit - r34 :: None -L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool -L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L12 (error at :-1) else goto L2 -L2: - builtins = r4 :: module - dec_ref r4 -L3: - r5 = ('version',) - r6 = ('__version',) - r7 = 'importlib.metadata' - r8 = faster_hexbytes.globals :: static - r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) - if is_error(r9) goto L12 (error at :1) else goto L4 -L4: - importlib.metadata = r9 :: module - dec_ref r9 - r10 = ('HexBytes',) - r11 = 'faster_hexbytes.main' - r12 = faster_hexbytes.globals :: static - r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) - if is_error(r13) goto L12 (error at :5) else goto L5 -L5: - faster_hexbytes.main = r13 :: module - dec_ref r13 - r14 = 'HexBytes' - r15 = PyList_New(1) - if is_error(r15) goto L12 (error at :9) else goto L6 -L6: - r16 = get_element_ptr r15 ob_item :: PyListObject - r17 = load_mem r16 :: ptr* - inc_ref r14 - set_mem r17, r14 :: builtins.object* - r18 = faster_hexbytes.globals :: static - r19 = '__all__' - r20 = CPyDict_SetItem(r18, r19, r15) - dec_ref r15 - r21 = r20 >= 0 :: signed - if not r21 goto L12 (error at :9) else goto L7 :: bool -L7: - r22 = 'hexbytes' - r23 = faster_hexbytes.globals :: static - r24 = '__version' - r25 = CPyDict_GetItem(r23, r24) - if is_error(r25) goto L12 (error at :11) else goto L8 -L8: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L12 (error at :11) else goto L9 -L9: - r29 = cast(str, r28) - if is_error(r29) goto L12 (error at :11) else goto L10 -L10: - r30 = faster_hexbytes.globals :: static - r31 = '__version__' - r32 = CPyDict_SetItem(r30, r31, r29) - dec_ref r29 - r33 = r32 >= 0 :: signed - if not r33 goto L12 (error at :11) else goto L11 :: bool -L11: - return 1 -L12: - r34 = :: None - return r34 - def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): __mypyc_self__, instance, owner, r0 :: object r1 :: bit @@ -1287,6 +1184,109 @@ L121: dec_ref r264 goto L105 +def __top_level__(): + r0, r1 :: object + r2 :: bit + r3 :: str + r4, r5, r6 :: object + r7 :: str + r8 :: dict + r9, r10 :: object + r11 :: str + r12 :: dict + r13 :: object + r14 :: str + r15 :: list + r16, r17 :: ptr + r18 :: dict + r19 :: str + r20 :: i32 + r21 :: bit + r22 :: str + r23 :: dict + r24 :: str + r25 :: object + r26 :: object[1] + r27 :: object_ptr + r28 :: object + r29 :: str + r30 :: dict + r31 :: str + r32 :: i32 + r33 :: bit + r34 :: None +L0: + r0 = builtins :: module + r1 = load_address _Py_NoneStruct + r2 = r0 != r1 + if r2 goto L3 else goto L1 :: bool +L1: + r3 = 'builtins' + r4 = PyImport_Import(r3) + if is_error(r4) goto L12 (error at :-1) else goto L2 +L2: + builtins = r4 :: module + dec_ref r4 +L3: + r5 = ('version',) + r6 = ('__version',) + r7 = 'importlib.metadata' + r8 = faster_hexbytes.globals :: static + r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) + if is_error(r9) goto L12 (error at :1) else goto L4 +L4: + importlib.metadata = r9 :: module + dec_ref r9 + r10 = ('HexBytes',) + r11 = 'faster_hexbytes.main' + r12 = faster_hexbytes.globals :: static + r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) + if is_error(r13) goto L12 (error at :5) else goto L5 +L5: + faster_hexbytes.main = r13 :: module + dec_ref r13 + r14 = 'HexBytes' + r15 = PyList_New(1) + if is_error(r15) goto L12 (error at :9) else goto L6 +L6: + r16 = get_element_ptr r15 ob_item :: PyListObject + r17 = load_mem r16 :: ptr* + inc_ref r14 + set_mem r17, r14 :: builtins.object* + r18 = faster_hexbytes.globals :: static + r19 = '__all__' + r20 = CPyDict_SetItem(r18, r19, r15) + dec_ref r15 + r21 = r20 >= 0 :: signed + if not r21 goto L12 (error at :9) else goto L7 :: bool +L7: + r22 = 'hexbytes' + r23 = faster_hexbytes.globals :: static + r24 = '__version' + r25 = CPyDict_GetItem(r23, r24) + if is_error(r25) goto L12 (error at :11) else goto L8 +L8: + r26 = [r22] + r27 = load_address r26 + r28 = PyObject_Vectorcall(r25, r27, 1, 0) + dec_ref r25 + if is_error(r28) goto L12 (error at :11) else goto L9 +L9: + r29 = cast(str, r28) + if is_error(r29) goto L12 (error at :11) else goto L10 +L10: + r30 = faster_hexbytes.globals :: static + r31 = '__version__' + r32 = CPyDict_SetItem(r30, r31, r29) + dec_ref r29 + r33 = r32 >= 0 :: signed + if not r33 goto L12 (error at :11) else goto L11 :: bool +L11: + return 1 +L12: + r34 = :: None + return r34 + def to_bytes(val): val :: union[bytes, str, object, bool, int] r0 :: bit From 915a16fb1487b0776d7da1e8537c53525fe18396 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Tue, 7 Oct 2025 03:41:32 -0400 Subject: [PATCH 69/98] feat(cicd): only run runners on code changes (#13) --- .github/workflows/benchmark.yaml | 10 ++++++++++ .github/workflows/codspeed.yaml | 10 ++++++++++ .github/workflows/tox.yaml | 10 ++++++++++ 3 files changed, 30 insertions(+) diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml index 33b4ce8..761ebb8 100644 --- a/.github/workflows/benchmark.yaml +++ b/.github/workflows/benchmark.yaml @@ -3,8 +3,18 @@ name: Pytest Benchmarks on: pull_request: branches: [master] + paths: + - '**.py' + - '.github/workflows/benchmark.yaml' + - 'pyproject.toml' + - 'setup.py' push: branches: [master] + paths: + - '**.py' + - '.github/workflows/benchmark.yaml' + - 'pyproject.toml' + - 'setup.py' workflow_dispatch: concurrency: diff --git a/.github/workflows/codspeed.yaml b/.github/workflows/codspeed.yaml index 6448073..621dc47 100644 --- a/.github/workflows/codspeed.yaml +++ b/.github/workflows/codspeed.yaml @@ -3,8 +3,18 @@ name: CodSpeed Benchmarks on: pull_request: branches: [master] + paths: + - '**.py' + - '.github/workflows/codspeed.yaml' + - 'pyproject.toml' + - 'setup.py' push: branches: [master] + paths: + - '**.py' + - '.github/workflows/codspeed.yaml' + - 'pyproject.toml' + - 'setup.py' workflow_dispatch: concurrency: diff --git a/.github/workflows/tox.yaml b/.github/workflows/tox.yaml index e145fb1..45ca152 100644 --- a/.github/workflows/tox.yaml +++ b/.github/workflows/tox.yaml @@ -3,8 +3,18 @@ name: Tox on: push: branches: [main, master] + paths: + - '**.py' + - '.github/workflows/benchmark.yaml' + - 'pyproject.toml' + - 'setup.py' pull_request: branches: [main, master] + paths: + - '**.py' + - '.github/workflows/benchmark.yaml' + - 'pyproject.toml' + - 'setup.py' schedule: - cron: '0 12 * * 1-5' # Weekdays 12:00 UTC From 5b5cf49f82270bcdf9bb3d27e568058924864f67 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 7 Oct 2025 08:10:57 +0000 Subject: [PATCH 70/98] Update benchmark results [skip ci] --- benchmarks/results/_utils.md | 276 +++++----- benchmarks/results/main.md | 966 +++++++++++++++++------------------ 2 files changed, 621 insertions(+), 621 deletions(-) diff --git a/benchmarks/results/_utils.md b/benchmarks/results/_utils.md index cddf5a2..558a7fa 100644 --- a/benchmarks/results/_utils.md +++ b/benchmarks/results/_utils.md @@ -1,141 +1,141 @@ -#### [faster_hexbytes._utils](https://github.com/BobTheBuidler/faster-hexbytes/blob/benchmark/faster_hexbytes/_utils.py) - [view benchmarks](https://github.com/BobTheBuidler/faster-hexbytes/blob/benchmark/benchmarks/test__utils_benchmarks.py) +#### [faster_hexbytes._utils](https://github.com/BobTheBuidler/faster-hexbytes/blob/master/faster_hexbytes/_utils.py) - [view benchmarks](https://github.com/BobTheBuidler/faster-hexbytes/blob/master/benchmarks/test__utils_benchmarks.py) | Function | Reference Mean | Faster Mean | % Change | Speedup (%) | x Faster | Faster | |----------|---------------|-------------|----------|-------------|----------|--------| -| `hexstr_to_bytes['']` | 1.7693315307804868e-05 | 1.1179726147479144e-05 | 36.81% | 58.26% | 1.58x | ✅ | -| `hexstr_to_bytes['0x'+'0'*128]` | 3.42949906090721e-05 | 2.098034489856244e-05 | 38.82% | 63.46% | 1.63x | ✅ | -| `hexstr_to_bytes['0x'+'00'*64]` | 3.4029689635560134e-05 | 2.10303706868544e-05 | 38.20% | 61.81% | 1.62x | ✅ | -| `hexstr_to_bytes['0x'+'00ff'*16]` | 3.094838328028653e-05 | 1.807462000181124e-05 | 41.60% | 71.23% | 1.71x | ✅ | -| `hexstr_to_bytes['0x'+'0123456789abcdef'*8]` | 3.432770530738586e-05 | 2.0939726654757956e-05 | 39.00% | 63.94% | 1.64x | ✅ | -| `hexstr_to_bytes['0x'+'1'*64]` | 3.106500558142552e-05 | 1.803506739850267e-05 | 41.94% | 72.25% | 1.72x | ✅ | -| `hexstr_to_bytes['0x'+'1234567890abcdef'*8]` | 3.444213332083847e-05 | 2.1062415055709138e-05 | 38.85% | 63.52% | 1.64x | ✅ | -| `hexstr_to_bytes['0x'+'a'*128]` | 3.402123802839552e-05 | 2.1096504577780626e-05 | 37.99% | 61.26% | 1.61x | ✅ | -| `hexstr_to_bytes['0x'+'a1b2c3d4'*8]` | 3.118321973125747e-05 | 1.865736666332591e-05 | 40.17% | 67.14% | 1.67x | ✅ | -| `hexstr_to_bytes['0x'+'b'*2048]` | 0.00013594383303039772 | 0.00011740238816895623 | 13.64% | 15.79% | 1.16x | ✅ | -| `hexstr_to_bytes['0x'+'badc0ffee0ddf00d'*4]` | 3.0637299606844215e-05 | 1.825061606833408e-05 | 40.43% | 67.87% | 1.68x | ✅ | -| `hexstr_to_bytes['0x'+'beef'*16]` | 3.0686441614538446e-05 | 1.828964146387517e-05 | 40.40% | 67.78% | 1.68x | ✅ | -| `hexstr_to_bytes['0x'+'c'*1024]` | 8.930193709352504e-05 | 7.109606211638662e-05 | 20.39% | 25.61% | 1.26x | ✅ | -| `hexstr_to_bytes['0x'+'cafebabe'*8]` | 3.088379314855554e-05 | 1.8427330656680643e-05 | 40.33% | 67.60% | 1.68x | ✅ | -| `hexstr_to_bytes['0x'+'d'*512]` | 5.7096419255965127e-05 | 4.083693236247332e-05 | 28.48% | 39.82% | 1.40x | ✅ | -| `hexstr_to_bytes['0x'+'dead'*16]` | 3.058232145729629e-05 | 1.809661975645168e-05 | 40.83% | 68.99% | 1.69x | ✅ | -| `hexstr_to_bytes['0x'+'e'*256]` | 4.3404514225927844e-05 | 2.765456002913683e-05 | 36.29% | 56.95% | 1.57x | ✅ | -| `hexstr_to_bytes['0x'+'f'*128]` | 3.399261691057168e-05 | 2.222686285822979e-05 | 34.61% | 52.93% | 1.53x | ✅ | -| `hexstr_to_bytes['0x'+'f'*64]` | 3.1021508877018215e-05 | 1.8116641999804634e-05 | 41.60% | 71.23% | 1.71x | ✅ | -| `hexstr_to_bytes['0x'+'facefeed'*8]` | 3.080530283390321e-05 | 1.836125208505399e-05 | 40.40% | 67.77% | 1.68x | ✅ | -| `hexstr_to_bytes['0x'+'ff'*32]` | 3.025273538705345e-05 | 1.869490905427472e-05 | 38.20% | 61.82% | 1.62x | ✅ | -| `hexstr_to_bytes['0x'+'ff00'*16]` | 3.133593755440466e-05 | 1.793547693437449e-05 | 42.76% | 74.71% | 1.75x | ✅ | -| `hexstr_to_bytes['0x']` | 2.2363566556968745e-05 | 1.0721175914161055e-05 | 52.06% | 108.59% | 2.09x | ✅ | -| `hexstr_to_bytes['0x0']` | 3.117668463108531e-05 | 1.8295366577069213e-05 | 41.32% | 70.41% | 1.70x | ✅ | -| `hexstr_to_bytes['0x1']` | 3.0849555815962966e-05 | 1.8261551169755883e-05 | 40.80% | 68.93% | 1.69x | ✅ | -| `hexstr_to_bytes['0x1234']` | 2.8017224899503598e-05 | 1.6290132930728818e-05 | 41.86% | 71.99% | 1.72x | ✅ | -| `hexstr_to_bytes['0xCAFEBABE']` | 2.8630167761260635e-05 | 1.590381517649548e-05 | 44.45% | 80.02% | 1.80x | ✅ | -| `hexstr_to_bytes['0xabcdef']` | 2.819579268732196e-05 | 1.6022231111650803e-05 | 43.18% | 75.98% | 1.76x | ✅ | -| `hexstr_to_bytes['0xdeadbeef']` | 2.830248157006902e-05 | 1.585293612257558e-05 | 43.99% | 78.53% | 1.79x | ✅ | -| `hexstr_to_bytes['deadbeef']` | 2.1769765855138907e-05 | 1.4235579165167571e-05 | 34.61% | 52.93% | 1.53x | ✅ | -| `to_bytes['']` | 2.780713012713541e-05 | 1.2309232769289748e-05 | 55.73% | 125.90% | 2.26x | ✅ | -| `to_bytes['0x'+'00'*64]` | 4.614754749205394e-05 | 2.454348694205276e-05 | 46.82% | 88.02% | 1.88x | ✅ | -| `to_bytes['0x'+'a'*128]` | 4.578380867751802e-05 | 2.2843051102385115e-05 | 50.11% | 100.43% | 2.00x | ✅ | -| `to_bytes['0x'+'ff'*32]` | 4.2892556366788844e-05 | 2.0060250794027318e-05 | 53.23% | 113.82% | 2.14x | ✅ | -| `to_bytes['0x']` | 3.378070519013953e-05 | 1.2405538866200987e-05 | 63.28% | 172.30% | 2.72x | ✅ | -| `to_bytes['0x1234']` | 4.0135614389222814e-05 | 1.7331320939841e-05 | 56.82% | 131.58% | 2.32x | ✅ | -| `to_bytes['0xCAFEBABE']` | 4.028950128859023e-05 | 1.7608736971127636e-05 | 56.29% | 128.80% | 2.29x | ✅ | -| `to_bytes['0xabcdef']` | 4.033539702017461e-05 | 1.7413172587315903e-05 | 56.83% | 131.64% | 2.32x | ✅ | -| `to_bytes['0xdeadbeef']` | 4.013742988293151e-05 | 1.753887938858019e-05 | 56.30% | 128.85% | 2.29x | ✅ | -| `to_bytes['abc']` | 3.626267484598067e-05 | 1.9475589274551575e-05 | 46.29% | 86.20% | 1.86x | ✅ | -| `to_bytes['deadbeef']` | 3.2121970134094524e-05 | 1.4998967326784364e-05 | 53.31% | 114.16% | 2.14x | ✅ | -| `to_bytes[0-9]` | 6.3886084044368e-06 | 3.6301764321770105e-06 | 43.18% | 75.99% | 1.76x | ✅ | -| `to_bytes[0]` | 7.379821878600025e-05 | 3.0514048254667094e-05 | 58.65% | 141.85% | 2.42x | ✅ | -| `to_bytes[123456]` | 7.73908812451048e-05 | 3.575842943020024e-05 | 53.80% | 116.43% | 2.16x | ✅ | -| `to_bytes[2**16]` | 7.617986899797664e-05 | 3.527787514997935e-05 | 53.69% | 115.94% | 2.16x | ✅ | -| `to_bytes[2**256-1]` | 8.129447794758294e-05 | 4.0483949767541644e-05 | 50.20% | 100.81% | 2.01x | ✅ | -| `to_bytes[2**32]` | 7.885789630365754e-05 | 3.807714350478118e-05 | 51.71% | 107.10% | 2.07x | ✅ | -| `to_bytes[2**64]` | 8.069210213483589e-05 | 3.965815884713019e-05 | 50.85% | 103.47% | 2.03x | ✅ | -| `to_bytes[2**8]` | 7.60528725562803e-05 | 3.317653912689118e-05 | 56.38% | 129.24% | 2.29x | ✅ | -| `to_bytes[4-byte pattern]` | 5.966323180854022e-06 | 3.3885955799150795e-06 | 43.20% | 76.07% | 1.76x | ✅ | -| `to_bytes[False]` | 2.132333374780846e-05 | 4.322555878144883e-06 | 79.73% | 393.30% | 4.93x | ✅ | -| `to_bytes[True]` | 2.114009323563744e-05 | 4.474505459519339e-06 | 78.83% | 372.46% | 4.72x | ✅ | -| `to_bytes[all byte values]` | 6.388727853404534e-06 | 3.6321036172973787e-06 | 43.15% | 75.90% | 1.76x | ✅ | -| `to_bytes[alternating 0x00/0xff]` | 6.363086431103152e-06 | 3.4449100293139135e-06 | 45.86% | 84.71% | 1.85x | ✅ | -| `to_bytes[alternating 0xaa/0x55]` | 6.278620315055821e-06 | 3.535981761329247e-06 | 43.68% | 77.56% | 1.78x | ✅ | -| `to_bytes[ascii sentence]` | 6.385267134108629e-06 | 3.7213794053924145e-06 | 41.72% | 71.58% | 1.72x | ✅ | -| `to_bytes[b'']` | 6.10807762546999e-06 | 3.559441642548437e-06 | 41.73% | 71.60% | 1.72x | ✅ | -| `to_bytes[b'\\x00'*32]` | 6.1997821267900955e-06 | 3.7227266437959667e-06 | 39.95% | 66.54% | 1.67x | ✅ | -| `to_bytes[b'\\x00\\xff\\x00\\xff']` | 6.115080140454961e-06 | 3.6294043971970026e-06 | 40.65% | 68.49% | 1.68x | ✅ | -| `to_bytes[b'\\x01'*100]` | 6.38729320124322e-06 | 3.629548274374021e-06 | 43.18% | 75.98% | 1.76x | ✅ | -| `to_bytes[b'\\x01'*2048]` | 6.392970547909741e-06 | 3.5681287886529697e-06 | 44.19% | 79.17% | 1.79x | ✅ | -| `to_bytes[b'\\x01\\x02\\x03']` | 6.214807194428287e-06 | 3.5724200907566754e-06 | 42.52% | 73.97% | 1.74x | ✅ | -| `to_bytes[b'\\x10\\x20\\x30\\x40\\x50']` | 6.384759732087906e-06 | 3.4718455445162805e-06 | 45.62% | 83.90% | 1.84x | ✅ | -| `to_bytes[b'\\x7f'*8]` | 6.2221944530742285e-06 | 3.6299630009677656e-06 | 41.66% | 71.41% | 1.71x | ✅ | -| `to_bytes[b'\\x80'*8]` | 6.154746823977371e-06 | 3.5098569762158247e-06 | 42.97% | 75.36% | 1.75x | ✅ | -| `to_bytes[b'\\xde\\xad\\xbe\\xef']` | 6.118508096629166e-06 | 3.5327114331565147e-06 | 42.26% | 73.20% | 1.73x | ✅ | -| `to_bytes[b'\\xff'*64]` | 6.228611346948233e-06 | 3.5638385534057674e-06 | 42.78% | 74.77% | 1.75x | ✅ | -| `to_bytes[b'a'*1024]` | 6.214476654822796e-06 | 3.6405793911024955e-06 | 41.42% | 70.70% | 1.71x | ✅ | -| `to_bytes[b'abc']` | 5.704947810781707e-06 | 3.6286094943273793e-06 | 36.40% | 57.22% | 1.57x | ✅ | -| `to_bytes[bytearray(0-9)]` | 2.8385540980501474e-05 | 1.3892159525838066e-05 | 51.06% | 104.33% | 2.04x | ✅ | -| `to_bytes[bytearray(4-byte pattern)]` | 2.827050900870094e-05 | 1.4056222794783555e-05 | 50.28% | 101.12% | 2.01x | ✅ | -| `to_bytes[bytearray(all byte values)]` | 2.877292936670269e-05 | 1.435422533320354e-05 | 50.11% | 100.45% | 2.00x | ✅ | -| `to_bytes[bytearray(alternating 0x00/0xff)]` | 2.8227929229195593e-05 | 1.3651875261692757e-05 | 51.64% | 106.77% | 2.07x | ✅ | -| `to_bytes[bytearray(alternating 0xaa/0x55)]` | 2.837463577403303e-05 | 1.4085501772100954e-05 | 50.36% | 101.45% | 2.01x | ✅ | -| `to_bytes[bytearray(ascii sentence)]` | 2.788046431872048e-05 | 1.4073893727957965e-05 | 49.52% | 98.10% | 1.98x | ✅ | -| `to_bytes[bytearray(b'')]` | 2.5972620905868233e-05 | 1.2685871938856117e-05 | 51.16% | 104.74% | 2.05x | ✅ | -| `to_bytes[bytearray(b'\\x00'*32)]` | 2.790329559512333e-05 | 1.403080114449928e-05 | 49.72% | 98.87% | 1.99x | ✅ | -| `to_bytes[bytearray(b'\\x00\\xff\\x00\\xff')]` | 2.7745585095988548e-05 | 1.4024106217358874e-05 | 49.45% | 97.84% | 1.98x | ✅ | -| `to_bytes[bytearray(b'\\x01'*100)]` | 2.8536359978812884e-05 | 1.4236424049013974e-05 | 50.11% | 100.45% | 2.00x | ✅ | -| `to_bytes[bytearray(b'\\x01'*2048)]` | 3.549077378005222e-05 | 1.9352766224829574e-05 | 45.47% | 83.39% | 1.83x | ✅ | -| `to_bytes[bytearray(b'\\x01\\x02\\x03')]` | 2.8101052165112413e-05 | 1.4292128556009155e-05 | 49.14% | 96.62% | 1.97x | ✅ | -| `to_bytes[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 2.7661397342967836e-05 | 1.4095613005042919e-05 | 49.04% | 96.24% | 1.96x | ✅ | -| `to_bytes[bytearray(b'\\x7f'*8)]` | 2.725931521432537e-05 | 1.3800682471510037e-05 | 49.37% | 97.52% | 1.98x | ✅ | -| `to_bytes[bytearray(b'\\x80'*8)]` | 2.8590031839184632e-05 | 1.4021589244572647e-05 | 50.96% | 103.90% | 2.04x | ✅ | -| `to_bytes[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 2.7673809875166307e-05 | 1.3955245016922358e-05 | 49.57% | 98.30% | 1.98x | ✅ | -| `to_bytes[bytearray(b'\\xff'*64)]` | 2.7825869941964144e-05 | 1.397535630887856e-05 | 49.78% | 99.11% | 1.99x | ✅ | -| `to_bytes[bytearray(b'a'*1024)]` | 3.4580409459484653e-05 | 1.8673202446672093e-05 | 46.00% | 85.19% | 1.85x | ✅ | -| `to_bytes[bytearray(b'abc')]` | 2.7632051275317663e-05 | 1.4212278275687856e-05 | 48.57% | 94.42% | 1.94x | ✅ | -| `to_bytes[bytearray(long alternating)]` | 3.447633488580355e-05 | 1.863387225839248e-05 | 45.95% | 85.02% | 1.85x | ✅ | -| `to_bytes[bytearray(mixed pattern)]` | 2.8541322877722866e-05 | 1.4195507938501473e-05 | 50.26% | 101.06% | 2.01x | ✅ | -| `to_bytes[bytearray(multiples of 0x10)]` | 2.8730667094271124e-05 | 1.4011019797634606e-05 | 51.23% | 105.06% | 2.05x | ✅ | -| `to_bytes[bytearray(palindrome ascii)]` | 2.8401192649128307e-05 | 1.3961644776858775e-05 | 50.84% | 103.42% | 2.03x | ✅ | -| `to_bytes[bytearray(palindrome numeric)]` | 2.805100416648689e-05 | 1.4152590803546867e-05 | 49.55% | 98.20% | 1.98x | ✅ | -| `to_bytes[bytearray(palindrome)]` | 2.7361673603877895e-05 | 1.411429298192429e-05 | 48.42% | 93.86% | 1.94x | ✅ | -| `to_bytes[bytearray(repeated 0-9)]` | 2.8494565334918126e-05 | 1.4258424138299958e-05 | 49.96% | 99.84% | 2.00x | ✅ | -| `to_bytes[bytearray(single 0xff)]` | 2.8234466593201184e-05 | 1.3801473578009802e-05 | 51.12% | 104.58% | 2.05x | ✅ | -| `to_bytes[bytearray(single null byte)]` | 2.8434517722019846e-05 | 1.3809952582861235e-05 | 51.43% | 105.90% | 2.06x | ✅ | -| `to_bytes[bytearray(two patterns)]` | 2.836216679184966e-05 | 1.3887588637424222e-05 | 51.03% | 104.23% | 2.04x | ✅ | -| `to_bytes[long alternating]` | 6.353790402607213e-06 | 3.5938990087545537e-06 | 43.44% | 76.79% | 1.77x | ✅ | -| `to_bytes[memoryview(0-9)]` | 4.191141964546983e-05 | 1.7061112356892058e-05 | 59.29% | 145.65% | 2.46x | ✅ | -| `to_bytes[memoryview(4-byte pattern)]` | 4.227527549170472e-05 | 1.785782064892619e-05 | 57.76% | 136.73% | 2.37x | ✅ | -| `to_bytes[memoryview(all byte values)]` | 4.25000108585221e-05 | 1.7688601774026213e-05 | 58.38% | 140.27% | 2.40x | ✅ | -| `to_bytes[memoryview(alternating 0x00/0xff)]` | 4.1347704048452746e-05 | 1.6650846971237402e-05 | 59.73% | 148.32% | 2.48x | ✅ | -| `to_bytes[memoryview(alternating 0xaa/0x55)]` | 4.171208060914525e-05 | 1.675602408003079e-05 | 59.83% | 148.94% | 2.49x | ✅ | -| `to_bytes[memoryview(ascii sentence)]` | 4.166324952645984e-05 | 1.709207709767455e-05 | 58.98% | 143.76% | 2.44x | ✅ | -| `to_bytes[memoryview(b'')]` | 3.925414926485738e-05 | 1.5303932766174733e-05 | 61.01% | 156.50% | 2.56x | ✅ | -| `to_bytes[memoryview(b'\\x00'*32)]` | 4.1375511773526405e-05 | 1.6976747870806958e-05 | 58.97% | 143.72% | 2.44x | ✅ | -| `to_bytes[memoryview(b'\\x00\\xff\\x00\\xff')]` | 4.106893288361651e-05 | 1.7061131875227936e-05 | 58.46% | 140.72% | 2.41x | ✅ | -| `to_bytes[memoryview(b'\\x01'*100)]` | 4.193922634521223e-05 | 1.7745782258368427e-05 | 57.69% | 136.33% | 2.36x | ✅ | -| `to_bytes[memoryview(b'\\x01'*2048)]` | 5.0798682929570083e-05 | 2.40390666370428e-05 | 52.68% | 111.32% | 2.11x | ✅ | -| `to_bytes[memoryview(b'\\x01\\x02\\x03')]` | 4.036702557146768e-05 | 1.7250564311840054e-05 | 57.27% | 134.00% | 2.34x | ✅ | -| `to_bytes[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 4.175508032041267e-05 | 1.6957717517602734e-05 | 59.39% | 146.23% | 2.46x | ✅ | -| `to_bytes[memoryview(b'\\x7f'*8)]` | 4.1358438818942784e-05 | 1.6817791110631697e-05 | 59.34% | 145.92% | 2.46x | ✅ | -| `to_bytes[memoryview(b'\\x80'*8)]` | 4.203092161038334e-05 | 1.681154500200111e-05 | 60.00% | 150.01% | 2.50x | ✅ | -| `to_bytes[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 4.231867737850461e-05 | 1.6846002165597455e-05 | 60.19% | 151.21% | 2.51x | ✅ | -| `to_bytes[memoryview(b'\\xff'*64)]` | 4.126073396736014e-05 | 1.6694308190545488e-05 | 59.54% | 147.15% | 2.47x | ✅ | -| `to_bytes[memoryview(b'a'*1024)]` | 4.88048523792244e-05 | 2.4008626930621554e-05 | 50.81% | 103.28% | 2.03x | ✅ | -| `to_bytes[memoryview(b'abc')]` | 4.134610001372583e-05 | 1.7269193990729754e-05 | 58.23% | 139.42% | 2.39x | ✅ | -| `to_bytes[memoryview(long alternating)]` | 4.8406942144499424e-05 | 2.388143899713461e-05 | 50.67% | 102.70% | 2.03x | ✅ | -| `to_bytes[memoryview(mixed pattern)]` | 4.167505874201827e-05 | 1.7698671546729557e-05 | 57.53% | 135.47% | 2.35x | ✅ | -| `to_bytes[memoryview(multiples of 0x10)]` | 4.2573899493451105e-05 | 1.705716143319723e-05 | 59.94% | 149.60% | 2.50x | ✅ | -| `to_bytes[memoryview(palindrome ascii)]` | 4.147093203068994e-05 | 1.6858821327193028e-05 | 59.35% | 145.99% | 2.46x | ✅ | -| `to_bytes[memoryview(palindrome numeric)]` | 4.2052385986215005e-05 | 1.6783240695512243e-05 | 60.09% | 150.56% | 2.51x | ✅ | -| `to_bytes[memoryview(palindrome)]` | 4.010310828456553e-05 | 1.6841586810144283e-05 | 58.00% | 138.12% | 2.38x | ✅ | -| `to_bytes[memoryview(repeated 0-9)]` | 4.2346341955859134e-05 | 1.7627392408451933e-05 | 58.37% | 140.23% | 2.40x | ✅ | -| `to_bytes[memoryview(single 0xff)]` | 4.154646686337471e-05 | 1.708420634946452e-05 | 58.88% | 143.19% | 2.43x | ✅ | -| `to_bytes[memoryview(single null byte)]` | 4.1426186115767904e-05 | 1.7216447723124524e-05 | 58.44% | 140.62% | 2.41x | ✅ | -| `to_bytes[memoryview(two patterns)]` | 4.120532411573023e-05 | 1.6795418517469898e-05 | 59.24% | 145.34% | 2.45x | ✅ | -| `to_bytes[mixed pattern]` | 6.402295260899727e-06 | 3.6240499846615196e-06 | 43.39% | 76.66% | 1.77x | ✅ | -| `to_bytes[multiples of 0x10]` | 6.11021314345847e-06 | 3.5831417482492563e-06 | 41.36% | 70.53% | 1.71x | ✅ | -| `to_bytes[palindrome ascii]` | 6.034686767709764e-06 | 3.5377684971786242e-06 | 41.38% | 70.58% | 1.71x | ✅ | -| `to_bytes[palindrome numeric]` | 6.402815719286604e-06 | 3.659680142558091e-06 | 42.84% | 74.96% | 1.75x | ✅ | -| `to_bytes[palindrome]` | 5.802467693826409e-06 | 3.521160495735191e-06 | 39.32% | 64.79% | 1.65x | ✅ | -| `to_bytes[repeated 0-9]` | 6.383479853505014e-06 | 3.638034291718348e-06 | 43.01% | 75.47% | 1.75x | ✅ | -| `to_bytes[single 0xff]` | 6.267069994516826e-06 | 3.559259039534453e-06 | 43.21% | 76.08% | 1.76x | ✅ | -| `to_bytes[single null byte]` | 6.26625804427524e-06 | 3.271624181759306e-06 | 47.79% | 91.53% | 1.92x | ✅ | -| `to_bytes[two patterns]` | 6.347030519900153e-06 | 3.5394506816199115e-06 | 44.23% | 79.32% | 1.79x | ✅ | +| `hexstr_to_bytes['']` | 1.8448173054630068e-05 | 1.1081327282258675e-05 | 39.93% | 66.48% | 1.66x | ✅ | +| `hexstr_to_bytes['0x'+'0'*128]` | 3.5010302596263576e-05 | 2.1963078559743485e-05 | 37.27% | 59.41% | 1.59x | ✅ | +| `hexstr_to_bytes['0x'+'00'*64]` | 3.5872280479722826e-05 | 2.1835577381899273e-05 | 39.13% | 64.28% | 1.64x | ✅ | +| `hexstr_to_bytes['0x'+'00ff'*16]` | 3.207654558679734e-05 | 1.869541155559719e-05 | 41.72% | 71.57% | 1.72x | ✅ | +| `hexstr_to_bytes['0x'+'0123456789abcdef'*8]` | 3.4987447867315116e-05 | 2.178945236948726e-05 | 37.72% | 60.57% | 1.61x | ✅ | +| `hexstr_to_bytes['0x'+'1'*64]` | 3.2389060060779915e-05 | 1.8501119211229607e-05 | 42.88% | 75.07% | 1.75x | ✅ | +| `hexstr_to_bytes['0x'+'1234567890abcdef'*8]` | 3.444874510553207e-05 | 2.1502671017062903e-05 | 37.58% | 60.21% | 1.60x | ✅ | +| `hexstr_to_bytes['0x'+'a'*128]` | 3.5264738009439144e-05 | 2.158244799088343e-05 | 38.80% | 63.40% | 1.63x | ✅ | +| `hexstr_to_bytes['0x'+'a1b2c3d4'*8]` | 3.2396264056787564e-05 | 1.8735612379785145e-05 | 42.17% | 72.91% | 1.73x | ✅ | +| `hexstr_to_bytes['0x'+'b'*2048]` | 0.0001398787403252671 | 0.0001236088855531614 | 11.63% | 13.16% | 1.13x | ✅ | +| `hexstr_to_bytes['0x'+'badc0ffee0ddf00d'*4]` | 3.2141636095463136e-05 | 1.8578952246858088e-05 | 42.20% | 73.00% | 1.73x | ✅ | +| `hexstr_to_bytes['0x'+'beef'*16]` | 3.125322299956043e-05 | 1.847773134031433e-05 | 40.88% | 69.14% | 1.69x | ✅ | +| `hexstr_to_bytes['0x'+'c'*1024]` | 9.174784195341271e-05 | 7.372294570322513e-05 | 19.65% | 24.45% | 1.24x | ✅ | +| `hexstr_to_bytes['0x'+'cafebabe'*8]` | 3.206340673007434e-05 | 1.860500047978184e-05 | 41.97% | 72.34% | 1.72x | ✅ | +| `hexstr_to_bytes['0x'+'d'*512]` | 5.873433669224578e-05 | 4.221991293357004e-05 | 28.12% | 39.12% | 1.39x | ✅ | +| `hexstr_to_bytes['0x'+'dead'*16]` | 3.180377264061887e-05 | 1.8717742330490115e-05 | 41.15% | 69.91% | 1.70x | ✅ | +| `hexstr_to_bytes['0x'+'e'*256]` | 4.4382508443150276e-05 | 2.855283578799186e-05 | 35.67% | 55.44% | 1.55x | ✅ | +| `hexstr_to_bytes['0x'+'f'*128]` | 3.495303635696786e-05 | 2.1718649302139505e-05 | 37.86% | 60.94% | 1.61x | ✅ | +| `hexstr_to_bytes['0x'+'f'*64]` | 3.2189130050460675e-05 | 1.8570359597155347e-05 | 42.31% | 73.34% | 1.73x | ✅ | +| `hexstr_to_bytes['0x'+'facefeed'*8]` | 3.1915963751809865e-05 | 1.8586999385518e-05 | 41.76% | 71.71% | 1.72x | ✅ | +| `hexstr_to_bytes['0x'+'ff'*32]` | 3.1905875591085456e-05 | 1.872841641170212e-05 | 41.30% | 70.36% | 1.70x | ✅ | +| `hexstr_to_bytes['0x'+'ff00'*16]` | 3.2106684891321425e-05 | 1.869685182626014e-05 | 41.77% | 71.72% | 1.72x | ✅ | +| `hexstr_to_bytes['0x']` | 2.2841874514238e-05 | 1.070881031847781e-05 | 53.12% | 113.30% | 2.13x | ✅ | +| `hexstr_to_bytes['0x0']` | 3.219212926666915e-05 | 1.9252426841545055e-05 | 40.20% | 67.21% | 1.67x | ✅ | +| `hexstr_to_bytes['0x1']` | 3.1901743141036275e-05 | 1.8980112380918578e-05 | 40.50% | 68.08% | 1.68x | ✅ | +| `hexstr_to_bytes['0x1234']` | 2.9499241468315646e-05 | 1.6726659333468447e-05 | 43.30% | 76.36% | 1.76x | ✅ | +| `hexstr_to_bytes['0xCAFEBABE']` | 2.9741717442893304e-05 | 1.6433473688372215e-05 | 44.75% | 80.98% | 1.81x | ✅ | +| `hexstr_to_bytes['0xabcdef']` | 2.9782669488161317e-05 | 1.62653914218193e-05 | 45.39% | 83.10% | 1.83x | ✅ | +| `hexstr_to_bytes['0xdeadbeef']` | 2.9666457610410784e-05 | 1.640743453376295e-05 | 44.69% | 80.81% | 1.81x | ✅ | +| `hexstr_to_bytes['deadbeef']` | 2.2690808462857158e-05 | 1.4418166275825207e-05 | 36.46% | 57.38% | 1.57x | ✅ | +| `to_bytes['']` | 2.865643236061303e-05 | 1.2222655397417577e-05 | 57.35% | 134.45% | 2.34x | ✅ | +| `to_bytes['0x'+'00'*64]` | 4.8784657924300516e-05 | 2.341495978085352e-05 | 52.00% | 108.35% | 2.08x | ✅ | +| `to_bytes['0x'+'a'*128]` | 4.8496313290994355e-05 | 2.2836847571904974e-05 | 52.91% | 112.36% | 2.12x | ✅ | +| `to_bytes['0x'+'ff'*32]` | 4.386399464230912e-05 | 1.9831429689361942e-05 | 54.79% | 121.18% | 2.21x | ✅ | +| `to_bytes['0x']` | 3.411775089291513e-05 | 1.2469393681146973e-05 | 63.45% | 173.61% | 2.74x | ✅ | +| `to_bytes['0x1234']` | 4.0758243663260276e-05 | 1.7902721023036014e-05 | 56.08% | 127.67% | 2.28x | ✅ | +| `to_bytes['0xCAFEBABE']` | 4.150746846565401e-05 | 1.7776359062763724e-05 | 57.17% | 133.50% | 2.33x | ✅ | +| `to_bytes['0xabcdef']` | 4.137074395266492e-05 | 1.7867306827215806e-05 | 56.81% | 131.54% | 2.32x | ✅ | +| `to_bytes['0xdeadbeef']` | 4.052291114368097e-05 | 1.7808346038185112e-05 | 56.05% | 127.55% | 2.28x | ✅ | +| `to_bytes['abc']` | 3.725041229930926e-05 | 1.9893637376178685e-05 | 46.59% | 87.25% | 1.87x | ✅ | +| `to_bytes['deadbeef']` | 3.28707727173849e-05 | 1.5747286292947015e-05 | 52.09% | 108.74% | 2.09x | ✅ | +| `to_bytes[0-9]` | 6.392680429027989e-06 | 3.6665572175734814e-06 | 42.64% | 74.35% | 1.74x | ✅ | +| `to_bytes[0]` | 7.474990538374166e-05 | 3.1264307007406345e-05 | 58.17% | 139.09% | 2.39x | ✅ | +| `to_bytes[123456]` | 8.031723937717636e-05 | 3.583260732121917e-05 | 55.39% | 124.15% | 2.24x | ✅ | +| `to_bytes[2**16]` | 7.867131007941883e-05 | 3.543881033746167e-05 | 54.95% | 121.99% | 2.22x | ✅ | +| `to_bytes[2**256-1]` | 8.307037388319841e-05 | 3.999529664536154e-05 | 51.85% | 107.70% | 2.08x | ✅ | +| `to_bytes[2**32]` | 8.138002992487582e-05 | 3.768455911305675e-05 | 53.69% | 115.95% | 2.16x | ✅ | +| `to_bytes[2**64]` | 8.428159123745304e-05 | 3.936584078727712e-05 | 53.29% | 114.10% | 2.14x | ✅ | +| `to_bytes[2**8]` | 7.809924869950352e-05 | 3.4441774366024405e-05 | 55.90% | 126.76% | 2.27x | ✅ | +| `to_bytes[4-byte pattern]` | 6.431185549605626e-06 | 3.5980801152854216e-06 | 44.05% | 78.74% | 1.79x | ✅ | +| `to_bytes[False]` | 2.2332413291133547e-05 | 4.182064017718794e-06 | 81.27% | 434.00% | 5.34x | ✅ | +| `to_bytes[True]` | 2.1212508048572107e-05 | 4.396064199077823e-06 | 79.28% | 382.53% | 4.83x | ✅ | +| `to_bytes[all byte values]` | 6.4051107715197005e-06 | 3.659983388573715e-06 | 42.86% | 75.00% | 1.75x | ✅ | +| `to_bytes[alternating 0x00/0xff]` | 6.291576331053291e-06 | 3.588196285281199e-06 | 42.97% | 75.34% | 1.75x | ✅ | +| `to_bytes[alternating 0xaa/0x55]` | 6.194616538288459e-06 | 3.6003222282648873e-06 | 41.88% | 72.06% | 1.72x | ✅ | +| `to_bytes[ascii sentence]` | 6.235820939835287e-06 | 3.6054959932631564e-06 | 42.18% | 72.95% | 1.73x | ✅ | +| `to_bytes[b'']` | 6.247750855499567e-06 | 3.5606263584800245e-06 | 43.01% | 75.47% | 1.75x | ✅ | +| `to_bytes[b'\\x00'*32]` | 6.248676519153925e-06 | 3.3745443494729644e-06 | 46.00% | 85.17% | 1.85x | ✅ | +| `to_bytes[b'\\x00\\xff\\x00\\xff']` | 6.26840453637847e-06 | 3.5393130577618807e-06 | 43.54% | 77.11% | 1.77x | ✅ | +| `to_bytes[b'\\x01'*100]` | 6.336584323221155e-06 | 3.5939162551217587e-06 | 43.28% | 76.31% | 1.76x | ✅ | +| `to_bytes[b'\\x01'*2048]` | 6.390587741813924e-06 | 3.603225833318425e-06 | 43.62% | 77.36% | 1.77x | ✅ | +| `to_bytes[b'\\x01\\x02\\x03']` | 6.277859385984753e-06 | 3.6065595523320303e-06 | 42.55% | 74.07% | 1.74x | ✅ | +| `to_bytes[b'\\x10\\x20\\x30\\x40\\x50']` | 6.301466782496292e-06 | 3.4131452737215008e-06 | 45.84% | 84.62% | 1.85x | ✅ | +| `to_bytes[b'\\x7f'*8]` | 6.103761197689352e-06 | 3.5084465223527928e-06 | 42.52% | 73.97% | 1.74x | ✅ | +| `to_bytes[b'\\x80'*8]` | 6.345391992893792e-06 | 3.6846543980723536e-06 | 41.93% | 72.21% | 1.72x | ✅ | +| `to_bytes[b'\\xde\\xad\\xbe\\xef']` | 6.486572866741052e-06 | 3.667832499695979e-06 | 43.46% | 76.85% | 1.77x | ✅ | +| `to_bytes[b'\\xff'*64]` | 6.220489174384481e-06 | 3.589998349570086e-06 | 42.29% | 73.27% | 1.73x | ✅ | +| `to_bytes[b'a'*1024]` | 6.322454795164475e-06 | 3.6109064872519575e-06 | 42.89% | 75.09% | 1.75x | ✅ | +| `to_bytes[b'abc']` | 5.983371371601951e-06 | 3.596904579432301e-06 | 39.88% | 66.35% | 1.66x | ✅ | +| `to_bytes[bytearray(0-9)]` | 2.851752689179582e-05 | 1.4100032948586441e-05 | 50.56% | 102.25% | 2.02x | ✅ | +| `to_bytes[bytearray(4-byte pattern)]` | 2.845067834059761e-05 | 1.4245819424813336e-05 | 49.93% | 99.71% | 2.00x | ✅ | +| `to_bytes[bytearray(all byte values)]` | 2.847146062039673e-05 | 1.4114352870484827e-05 | 50.43% | 101.72% | 2.02x | ✅ | +| `to_bytes[bytearray(alternating 0x00/0xff)]` | 2.8244084219536807e-05 | 1.4108083916372851e-05 | 50.05% | 100.20% | 2.00x | ✅ | +| `to_bytes[bytearray(alternating 0xaa/0x55)]` | 2.6805007249030893e-05 | 1.406473615913314e-05 | 47.53% | 90.58% | 1.91x | ✅ | +| `to_bytes[bytearray(ascii sentence)]` | 2.823413988970806e-05 | 1.4000302125732125e-05 | 50.41% | 101.67% | 2.02x | ✅ | +| `to_bytes[bytearray(b'')]` | 2.6639069173684403e-05 | 1.2602941826560676e-05 | 52.69% | 111.37% | 2.11x | ✅ | +| `to_bytes[bytearray(b'\\x00'*32)]` | 2.8156118972531e-05 | 1.3877909544068545e-05 | 50.71% | 102.88% | 2.03x | ✅ | +| `to_bytes[bytearray(b'\\x00\\xff\\x00\\xff')]` | 2.7322220413948243e-05 | 1.3869531555771666e-05 | 49.24% | 96.99% | 1.97x | ✅ | +| `to_bytes[bytearray(b'\\x01'*100)]` | 2.838248918908459e-05 | 1.4130987762821069e-05 | 50.21% | 100.85% | 2.01x | ✅ | +| `to_bytes[bytearray(b'\\x01'*2048)]` | 3.566426924335632e-05 | 1.9741059102779643e-05 | 44.65% | 80.66% | 1.81x | ✅ | +| `to_bytes[bytearray(b'\\x01\\x02\\x03')]` | 2.7769669573774038e-05 | 1.4209190864397038e-05 | 48.83% | 95.43% | 1.95x | ✅ | +| `to_bytes[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 2.821436049417827e-05 | 1.4028346484937784e-05 | 50.28% | 101.12% | 2.01x | ✅ | +| `to_bytes[bytearray(b'\\x7f'*8)]` | 2.8001111534548763e-05 | 1.4112222872031011e-05 | 49.60% | 98.42% | 1.98x | ✅ | +| `to_bytes[bytearray(b'\\x80'*8)]` | 2.8263957611526317e-05 | 1.4051768918369121e-05 | 50.28% | 101.14% | 2.01x | ✅ | +| `to_bytes[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 2.801184594699646e-05 | 1.4217942130193738e-05 | 49.24% | 97.02% | 1.97x | ✅ | +| `to_bytes[bytearray(b'\\xff'*64)]` | 2.814113498014268e-05 | 1.3949142391907784e-05 | 50.43% | 101.74% | 2.02x | ✅ | +| `to_bytes[bytearray(b'a'*1024)]` | 3.450654671454752e-05 | 1.8647268096646113e-05 | 45.96% | 85.05% | 1.85x | ✅ | +| `to_bytes[bytearray(b'abc')]` | 2.826278078576417e-05 | 1.4076240484360553e-05 | 50.20% | 100.78% | 2.01x | ✅ | +| `to_bytes[bytearray(long alternating)]` | 3.428897142317143e-05 | 1.885244665211656e-05 | 45.02% | 81.88% | 1.82x | ✅ | +| `to_bytes[bytearray(mixed pattern)]` | 2.8550843894829426e-05 | 1.4057538033805411e-05 | 50.76% | 103.10% | 2.03x | ✅ | +| `to_bytes[bytearray(multiples of 0x10)]` | 2.841128872876021e-05 | 1.4151446016212423e-05 | 50.19% | 100.77% | 2.01x | ✅ | +| `to_bytes[bytearray(palindrome ascii)]` | 2.8068802539871594e-05 | 1.4087048358979992e-05 | 49.81% | 99.25% | 1.99x | ✅ | +| `to_bytes[bytearray(palindrome numeric)]` | 2.80545669490435e-05 | 1.4007068585212743e-05 | 50.07% | 100.29% | 2.00x | ✅ | +| `to_bytes[bytearray(palindrome)]` | 2.8374768328758902e-05 | 1.4108846841136526e-05 | 50.28% | 101.11% | 2.01x | ✅ | +| `to_bytes[bytearray(repeated 0-9)]` | 2.8606785788866837e-05 | 1.4130353166296833e-05 | 50.60% | 102.45% | 2.02x | ✅ | +| `to_bytes[bytearray(single 0xff)]` | 2.7300373642402008e-05 | 1.3885423983501136e-05 | 49.14% | 96.61% | 1.97x | ✅ | +| `to_bytes[bytearray(single null byte)]` | 2.814976992575725e-05 | 1.386862396273808e-05 | 50.73% | 102.97% | 2.03x | ✅ | +| `to_bytes[bytearray(two patterns)]` | 2.819769312027098e-05 | 1.3986306562031273e-05 | 50.40% | 101.61% | 2.02x | ✅ | +| `to_bytes[long alternating]` | 6.396609815380122e-06 | 3.439330397220323e-06 | 46.23% | 85.98% | 1.86x | ✅ | +| `to_bytes[memoryview(0-9)]` | 4.255114393825894e-05 | 1.686850578079563e-05 | 60.36% | 152.25% | 2.52x | ✅ | +| `to_bytes[memoryview(4-byte pattern)]` | 4.335974687951539e-05 | 1.771775709983696e-05 | 59.14% | 144.72% | 2.45x | ✅ | +| `to_bytes[memoryview(all byte values)]` | 4.2927701557385316e-05 | 1.7745172128233992e-05 | 58.66% | 141.91% | 2.42x | ✅ | +| `to_bytes[memoryview(alternating 0x00/0xff)]` | 4.178031067742147e-05 | 1.6858626134633555e-05 | 59.65% | 147.83% | 2.48x | ✅ | +| `to_bytes[memoryview(alternating 0xaa/0x55)]` | 4.139789092845351e-05 | 1.6836062220090475e-05 | 59.33% | 145.89% | 2.46x | ✅ | +| `to_bytes[memoryview(ascii sentence)]` | 4.129124266139894e-05 | 1.680817534214905e-05 | 59.29% | 145.66% | 2.46x | ✅ | +| `to_bytes[memoryview(b'')]` | 4.1053105093802525e-05 | 1.5148793779229502e-05 | 63.10% | 171.00% | 2.71x | ✅ | +| `to_bytes[memoryview(b'\\x00'*32)]` | 4.110585039715829e-05 | 1.6502010166339198e-05 | 59.85% | 149.10% | 2.49x | ✅ | +| `to_bytes[memoryview(b'\\x00\\xff\\x00\\xff')]` | 4.2435316612999743e-05 | 1.6861035691154262e-05 | 60.27% | 151.68% | 2.52x | ✅ | +| `to_bytes[memoryview(b'\\x01'*100)]` | 4.324380330197488e-05 | 1.745931870406607e-05 | 59.63% | 147.68% | 2.48x | ✅ | +| `to_bytes[memoryview(b'\\x01'*2048)]` | 5.0206085110919153e-05 | 2.471243934399673e-05 | 50.78% | 103.16% | 2.03x | ✅ | +| `to_bytes[memoryview(b'\\x01\\x02\\x03')]` | 4.2447757119633205e-05 | 1.6994701376815252e-05 | 59.96% | 149.77% | 2.50x | ✅ | +| `to_bytes[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 4.1248679638937775e-05 | 1.734914864868936e-05 | 57.94% | 137.76% | 2.38x | ✅ | +| `to_bytes[memoryview(b'\\x7f'*8)]` | 4.174658051909768e-05 | 1.679007976846315e-05 | 59.78% | 148.64% | 2.49x | ✅ | +| `to_bytes[memoryview(b'\\x80'*8)]` | 4.277517067909022e-05 | 1.6897968547959087e-05 | 60.50% | 153.14% | 2.53x | ✅ | +| `to_bytes[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 4.267069336174905e-05 | 1.6777520890177795e-05 | 60.68% | 154.33% | 2.54x | ✅ | +| `to_bytes[memoryview(b'\\xff'*64)]` | 4.111431950229854e-05 | 1.6594332999044477e-05 | 59.64% | 147.76% | 2.48x | ✅ | +| `to_bytes[memoryview(b'a'*1024)]` | 4.970186674479165e-05 | 2.3308744133791374e-05 | 53.10% | 113.23% | 2.13x | ✅ | +| `to_bytes[memoryview(b'abc')]` | 4.2161779398659305e-05 | 1.7233377498499344e-05 | 59.13% | 144.65% | 2.45x | ✅ | +| `to_bytes[memoryview(long alternating)]` | 4.933880648763538e-05 | 2.379929684892584e-05 | 51.76% | 107.31% | 2.07x | ✅ | +| `to_bytes[memoryview(mixed pattern)]` | 4.336767836732776e-05 | 1.7817717463838505e-05 | 58.91% | 143.40% | 2.43x | ✅ | +| `to_bytes[memoryview(multiples of 0x10)]` | 4.2076891338922106e-05 | 1.7082655766101556e-05 | 59.40% | 146.31% | 2.46x | ✅ | +| `to_bytes[memoryview(palindrome ascii)]` | 4.275228517291261e-05 | 1.7060631694258164e-05 | 60.09% | 150.59% | 2.51x | ✅ | +| `to_bytes[memoryview(palindrome numeric)]` | 4.2494318630680566e-05 | 1.74411845198838e-05 | 58.96% | 143.64% | 2.44x | ✅ | +| `to_bytes[memoryview(palindrome)]` | 4.172269363653348e-05 | 1.6836153134686148e-05 | 59.65% | 147.82% | 2.48x | ✅ | +| `to_bytes[memoryview(repeated 0-9)]` | 4.175146999997561e-05 | 1.7582876416691497e-05 | 57.89% | 137.46% | 2.37x | ✅ | +| `to_bytes[memoryview(single 0xff)]` | 4.227267428545802e-05 | 1.733625862334249e-05 | 58.99% | 143.84% | 2.44x | ✅ | +| `to_bytes[memoryview(single null byte)]` | 4.246033378468887e-05 | 1.7390510060750006e-05 | 59.04% | 144.16% | 2.44x | ✅ | +| `to_bytes[memoryview(two patterns)]` | 4.285952619240663e-05 | 1.676726650405356e-05 | 60.88% | 155.61% | 2.56x | ✅ | +| `to_bytes[mixed pattern]` | 6.3728835067023204e-06 | 3.5144979379580874e-06 | 44.85% | 81.33% | 1.81x | ✅ | +| `to_bytes[multiples of 0x10]` | 6.353682758343685e-06 | 3.6064188856255064e-06 | 43.24% | 76.18% | 1.76x | ✅ | +| `to_bytes[palindrome ascii]` | 6.354533869329388e-06 | 3.698503023927502e-06 | 41.80% | 71.81% | 1.72x | ✅ | +| `to_bytes[palindrome numeric]` | 6.398644547904841e-06 | 3.601760442862087e-06 | 43.71% | 77.65% | 1.78x | ✅ | +| `to_bytes[palindrome]` | 6.173316469727805e-06 | 3.6074676640655877e-06 | 41.56% | 71.13% | 1.71x | ✅ | +| `to_bytes[repeated 0-9]` | 6.35993533756668e-06 | 3.5162183911763178e-06 | 44.71% | 80.87% | 1.81x | ✅ | +| `to_bytes[single 0xff]` | 6.343852087509244e-06 | 3.521705533276903e-06 | 44.49% | 80.14% | 1.80x | ✅ | +| `to_bytes[single null byte]` | 6.22791155842468e-06 | 3.5482001633570303e-06 | 43.03% | 75.52% | 1.76x | ✅ | +| `to_bytes[two patterns]` | 6.3927062921028e-06 | 3.592129844784131e-06 | 43.81% | 77.96% | 1.78x | ✅ | diff --git a/benchmarks/results/main.md b/benchmarks/results/main.md index b4be1f4..67f7743 100644 --- a/benchmarks/results/main.md +++ b/benchmarks/results/main.md @@ -1,486 +1,486 @@ -#### [faster_hexbytes.main](https://github.com/BobTheBuidler/faster-hexbytes/blob/benchmark/faster_hexbytes/main.py) - [view benchmarks](https://github.com/BobTheBuidler/faster-hexbytes/blob/benchmark/benchmarks/test_main_benchmarks.py) +#### [faster_hexbytes.main](https://github.com/BobTheBuidler/faster-hexbytes/blob/master/faster_hexbytes/main.py) - [view benchmarks](https://github.com/BobTheBuidler/faster-hexbytes/blob/master/benchmarks/test_main_benchmarks.py) | Function | Reference Mean | Faster Mean | % Change | Speedup (%) | x Faster | Faster | |----------|---------------|-------------|----------|-------------|----------|--------| -| `hexbytes_getitem_index[-1-0-9]` | 2.4847447452029246e-05 | 2.3450026731823607e-05 | 5.62% | 5.96% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-4-byte pattern]` | 2.446805682924332e-05 | 2.3635641231548687e-05 | 3.40% | 3.52% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-all byte values]` | 2.4726612057580454e-05 | 2.3407566330406905e-05 | 5.33% | 5.64% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-alternating 0x00/0xff]` | 2.4731667416142e-05 | 2.3283497082720465e-05 | 5.86% | 6.22% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-alternating 0xaa/0x55]` | 2.4523115479161836e-05 | 2.3346323921959994e-05 | 4.80% | 5.04% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-ascii sentence]` | 2.471176627058649e-05 | 2.3615962469828527e-05 | 4.43% | 4.64% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x00'*32]` | 2.4777311257616818e-05 | 2.3405050535681556e-05 | 5.54% | 5.86% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x00\\xff\\x00\\xff']` | 2.4313481344212053e-05 | 2.3204503403589972e-05 | 4.56% | 4.78% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x01'*100]` | 2.468310354706276e-05 | 2.327476042499668e-05 | 5.71% | 6.05% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x01'*2048]` | 2.4854226475343243e-05 | 2.3390127621197537e-05 | 5.89% | 6.26% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x01\\x02\\x03']` | 2.4745279930320675e-05 | 2.3522761413737913e-05 | 4.94% | 5.20% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.438506663016707e-05 | 2.3257755613599015e-05 | 4.62% | 4.85% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x7f'*8]` | 2.4743313419518356e-05 | 2.3370369649475358e-05 | 5.55% | 5.87% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x80'*8]` | 2.4816026228816605e-05 | 2.3249313657766363e-05 | 6.31% | 6.74% | 1.07x | ✅ | -| `hexbytes_getitem_index[-1-b'\\xde\\xad\\xbe\\xef']` | 2.448254310611167e-05 | 2.3316949833370263e-05 | 4.76% | 5.00% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-b'\\xff'*64]` | 2.4849436712534857e-05 | 2.3344878336245734e-05 | 6.05% | 6.44% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-b'a'*1024]` | 2.493238498788441e-05 | 2.3606790961815634e-05 | 5.32% | 5.62% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-b'abc']` | 2.4834496919024717e-05 | 2.3382304411471888e-05 | 5.85% | 6.21% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-long alternating]` | 2.4615057704326276e-05 | 2.3430983714349e-05 | 4.81% | 5.05% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-mixed pattern]` | 2.4671778626251292e-05 | 2.3627064998301808e-05 | 4.23% | 4.42% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-multiples of 0x10]` | 2.468829805610535e-05 | 2.3326285352224695e-05 | 5.52% | 5.84% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-palindrome ascii]` | 2.4370598961263974e-05 | 2.338947068419359e-05 | 4.03% | 4.19% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-palindrome numeric]` | 2.4579864556403647e-05 | 2.3370869518498163e-05 | 4.92% | 5.17% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-palindrome]` | 2.4879236943731623e-05 | 2.3387243476769648e-05 | 6.00% | 6.38% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-repeated 0-9]` | 2.448997201236898e-05 | 2.3253474233650765e-05 | 5.05% | 5.32% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-two patterns]` | 2.450192796439518e-05 | 2.357708117878136e-05 | 3.77% | 3.92% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-0-9]` | 2.3640609440231097e-05 | 2.232804370059225e-05 | 5.55% | 5.88% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-4-byte pattern]` | 2.373320584882109e-05 | 2.233125115448439e-05 | 5.91% | 6.28% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-all byte values]` | 2.3559061122321206e-05 | 2.2250773621945793e-05 | 5.55% | 5.88% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-alternating 0x00/0xff]` | 2.3749435700519763e-05 | 2.218071530181339e-05 | 6.61% | 7.07% | 1.07x | ✅ | -| `hexbytes_getitem_index[0-alternating 0xaa/0x55]` | 2.3719266900758352e-05 | 2.2353831626638472e-05 | 5.76% | 6.11% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-ascii sentence]` | 2.3597481287196645e-05 | 2.2091971995881697e-05 | 6.38% | 6.81% | 1.07x | ✅ | -| `hexbytes_getitem_index[0-b'\\x00'*32]` | 2.392226984110175e-05 | 2.2037988705510813e-05 | 7.88% | 8.55% | 1.09x | ✅ | -| `hexbytes_getitem_index[0-b'\\x00\\xff\\x00\\xff']` | 2.3727784820388614e-05 | 2.2021295173813944e-05 | 7.19% | 7.75% | 1.08x | ✅ | -| `hexbytes_getitem_index[0-b'\\x01'*100]` | 2.3659152481324694e-05 | 2.2252363327119516e-05 | 5.95% | 6.32% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-b'\\x01'*2048]` | 2.3578475937046213e-05 | 2.230988678238333e-05 | 5.38% | 5.69% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-b'\\x01\\x02\\x03']` | 2.3631310564377923e-05 | 2.2118711270966876e-05 | 6.40% | 6.84% | 1.07x | ✅ | -| `hexbytes_getitem_index[0-b'\\x10\\x20\\x30\\x40\\x50']` | 2.372311879146398e-05 | 2.213856237305192e-05 | 6.68% | 7.16% | 1.07x | ✅ | -| `hexbytes_getitem_index[0-b'\\x7f'*8]` | 2.3915516289643552e-05 | 2.2307433582913363e-05 | 6.72% | 7.21% | 1.07x | ✅ | -| `hexbytes_getitem_index[0-b'\\x80'*8]` | 2.3735412525488777e-05 | 2.2230167485098905e-05 | 6.34% | 6.77% | 1.07x | ✅ | -| `hexbytes_getitem_index[0-b'\\xde\\xad\\xbe\\xef']` | 2.3683889844274444e-05 | 2.2163847819654035e-05 | 6.42% | 6.86% | 1.07x | ✅ | -| `hexbytes_getitem_index[0-b'\\xff'*64]` | 2.4175792186616108e-05 | 2.200889907538998e-05 | 8.96% | 9.85% | 1.10x | ✅ | -| `hexbytes_getitem_index[0-b'a'*1024]` | 2.3862376567425472e-05 | 2.2006472774346828e-05 | 7.78% | 8.43% | 1.08x | ✅ | -| `hexbytes_getitem_index[0-b'abc']` | 2.3732148887069292e-05 | 2.2575495507843222e-05 | 4.87% | 5.12% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-long alternating]` | 2.3670516671074392e-05 | 2.2302816885162254e-05 | 5.78% | 6.13% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-mixed pattern]` | 2.369279636677286e-05 | 2.1967241132713774e-05 | 7.28% | 7.86% | 1.08x | ✅ | -| `hexbytes_getitem_index[0-multiples of 0x10]` | 2.3713163133561152e-05 | 2.2395580512059475e-05 | 5.56% | 5.88% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-palindrome ascii]` | 2.372535189391524e-05 | 2.2258396730235407e-05 | 6.18% | 6.59% | 1.07x | ✅ | -| `hexbytes_getitem_index[0-palindrome numeric]` | 2.375859390888847e-05 | 2.2285298064844566e-05 | 6.20% | 6.61% | 1.07x | ✅ | -| `hexbytes_getitem_index[0-palindrome]` | 2.363382163680642e-05 | 2.2135741423325648e-05 | 6.34% | 6.77% | 1.07x | ✅ | -| `hexbytes_getitem_index[0-repeated 0-9]` | 2.3882651063446776e-05 | 2.2259791641842352e-05 | 6.80% | 7.29% | 1.07x | ✅ | -| `hexbytes_getitem_index[0-single 0xff]` | 2.3767333200041022e-05 | 2.2120169400764797e-05 | 6.93% | 7.45% | 1.07x | ✅ | -| `hexbytes_getitem_index[0-single null byte]` | 2.3618790092504198e-05 | 2.2262308923352927e-05 | 5.74% | 6.09% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-two patterns]` | 2.365909050841332e-05 | 2.2210445110527486e-05 | 6.12% | 6.52% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-0-9]` | 2.350437963646178e-05 | 2.230597783626155e-05 | 5.10% | 5.37% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-4-byte pattern]` | 2.3388753001021146e-05 | 2.241563514334635e-05 | 4.16% | 4.34% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-all byte values]` | 2.3389290477161366e-05 | 2.222879750713185e-05 | 4.96% | 5.22% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-alternating 0x00/0xff]` | 2.3624362951330394e-05 | 2.228589793267534e-05 | 5.67% | 6.01% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-alternating 0xaa/0x55]` | 2.3597960178016714e-05 | 2.2363680838750865e-05 | 5.23% | 5.52% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-ascii sentence]` | 2.3531461388181766e-05 | 2.2335075747968907e-05 | 5.08% | 5.36% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-b'\\x00'*32]` | 2.3747036836208635e-05 | 2.2402921023370407e-05 | 5.66% | 6.00% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-b'\\x00\\xff\\x00\\xff']` | 2.359141030040157e-05 | 2.2419787480451866e-05 | 4.97% | 5.23% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-b'\\x01'*100]` | 2.351381044957054e-05 | 2.2326575628342087e-05 | 5.05% | 5.32% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-b'\\x01'*2048]` | 2.3430996963478045e-05 | 2.2274605783180455e-05 | 4.94% | 5.19% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-b'\\x01\\x02\\x03']` | 2.3524676320574997e-05 | 2.2310255654855533e-05 | 5.16% | 5.44% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3733780166228564e-05 | 2.2327814863199725e-05 | 5.92% | 6.30% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-b'\\x7f'*8]` | 2.3687369965297325e-05 | 2.240640951745013e-05 | 5.41% | 5.72% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-b'\\x80'*8]` | 2.3397852464771586e-05 | 2.192985444328968e-05 | 6.27% | 6.69% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-b'\\xde\\xad\\xbe\\xef']` | 2.368834322710453e-05 | 2.2273048897882523e-05 | 5.97% | 6.35% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-b'\\xff'*64]` | 2.3485814293986674e-05 | 2.231628684523511e-05 | 4.98% | 5.24% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-b'a'*1024]` | 2.386470804413667e-05 | 2.2281061209550367e-05 | 6.64% | 7.11% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-b'abc']` | 2.3691218604520744e-05 | 2.2422567641292406e-05 | 5.35% | 5.66% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-long alternating]` | 2.3648119368974904e-05 | 2.2379031486075737e-05 | 5.37% | 5.67% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-mixed pattern]` | 2.347146341953654e-05 | 2.229130324896944e-05 | 5.03% | 5.29% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-multiples of 0x10]` | 2.353816276859851e-05 | 2.2144607709767796e-05 | 5.92% | 6.29% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-palindrome ascii]` | 2.3612440878305855e-05 | 2.2357479185841583e-05 | 5.31% | 5.61% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-palindrome numeric]` | 2.3520370890261427e-05 | 2.2218627957983257e-05 | 5.53% | 5.86% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-palindrome]` | 2.3657794497085767e-05 | 2.256005699098937e-05 | 4.64% | 4.87% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-repeated 0-9]` | 2.343486460477775e-05 | 2.2357192532938336e-05 | 4.60% | 4.82% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-two patterns]` | 2.3571511712386594e-05 | 2.2294920635925086e-05 | 5.42% | 5.73% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-0-9]` | 2.376859702714776e-05 | 2.240866077092658e-05 | 5.72% | 6.07% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-4-byte pattern]` | 2.3971286041117216e-05 | 2.232290985420918e-05 | 6.88% | 7.38% | 1.07x | ✅ | -| `hexbytes_getitem_index[2-all byte values]` | 2.3814855939904812e-05 | 2.2196273233205883e-05 | 6.80% | 7.29% | 1.07x | ✅ | -| `hexbytes_getitem_index[2-alternating 0x00/0xff]` | 2.390055381360492e-05 | 2.2330467329889835e-05 | 6.57% | 7.03% | 1.07x | ✅ | -| `hexbytes_getitem_index[2-alternating 0xaa/0x55]` | 2.3807921178646178e-05 | 2.2431680109115197e-05 | 5.78% | 6.14% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-ascii sentence]` | 2.3365220473568995e-05 | 2.2343897980482263e-05 | 4.37% | 4.57% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-b'\\x00'*32]` | 2.3375625650513347e-05 | 2.2390547339726867e-05 | 4.21% | 4.40% | 1.04x | ✅ | -| `hexbytes_getitem_index[2-b'\\x00\\xff\\x00\\xff']` | 2.350530882275377e-05 | 2.218305857151874e-05 | 5.63% | 5.96% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-b'\\x01'*100]` | 2.3425987917706524e-05 | 2.2096632828754697e-05 | 5.67% | 6.02% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-b'\\x01'*2048]` | 2.3927392356409264e-05 | 2.2239041943430718e-05 | 7.06% | 7.59% | 1.08x | ✅ | -| `hexbytes_getitem_index[2-b'\\x01\\x02\\x03']` | 2.3640994193771224e-05 | 2.2206297555999423e-05 | 6.07% | 6.46% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-b'\\x10\\x20\\x30\\x40\\x50']` | 2.374901494471697e-05 | 2.2245854974556628e-05 | 6.33% | 6.76% | 1.07x | ✅ | -| `hexbytes_getitem_index[2-b'\\x7f'*8]` | 2.3410950031940884e-05 | 2.1972938435673387e-05 | 6.14% | 6.54% | 1.07x | ✅ | -| `hexbytes_getitem_index[2-b'\\x80'*8]` | 2.3365199463743537e-05 | 2.22919694642195e-05 | 4.59% | 4.81% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-b'\\xde\\xad\\xbe\\xef']` | 2.365441097718043e-05 | 2.2245648112737955e-05 | 5.96% | 6.33% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-b'\\xff'*64]` | 2.35864065938133e-05 | 2.231155832021235e-05 | 5.41% | 5.71% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-b'a'*1024]` | 2.323605423398757e-05 | 2.4404525747935898e-05 | -5.03% | -4.79% | 0.95x | ❌ | -| `hexbytes_getitem_index[2-b'abc']` | 2.3722461264859212e-05 | 2.2385468150396267e-05 | 5.64% | 5.97% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-long alternating]` | 2.3847633974548234e-05 | 2.2236601070996807e-05 | 6.76% | 7.24% | 1.07x | ✅ | -| `hexbytes_getitem_index[2-mixed pattern]` | 2.3826645668796012e-05 | 2.2248675041882893e-05 | 6.62% | 7.09% | 1.07x | ✅ | -| `hexbytes_getitem_index[2-multiples of 0x10]` | 2.3607274029087297e-05 | 2.238016502011036e-05 | 5.20% | 5.48% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-palindrome ascii]` | 2.3843746513752824e-05 | 2.2074706956929303e-05 | 7.42% | 8.01% | 1.08x | ✅ | -| `hexbytes_getitem_index[2-palindrome numeric]` | 2.384995983697482e-05 | 2.2168935214868402e-05 | 7.05% | 7.58% | 1.08x | ✅ | -| `hexbytes_getitem_index[2-palindrome]` | 2.3353639762196912e-05 | 2.3184971391492197e-05 | 0.72% | 0.73% | 1.01x | ✅ | -| `hexbytes_getitem_index[2-repeated 0-9]` | 2.3479222769940935e-05 | 2.2220355241910037e-05 | 5.36% | 5.67% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-two patterns]` | 2.3870436406362992e-05 | 2.2326472681800106e-05 | 6.47% | 6.92% | 1.07x | ✅ | -| `hexbytes_getitem_index[3-0-9]` | 2.346875938372422e-05 | 2.240947646466136e-05 | 4.51% | 4.73% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-4-byte pattern]` | 2.3721855409706934e-05 | 2.222300970933843e-05 | 6.32% | 6.74% | 1.07x | ✅ | -| `hexbytes_getitem_index[3-all byte values]` | 2.390814788126935e-05 | 2.283953127459055e-05 | 4.47% | 4.68% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-alternating 0x00/0xff]` | 2.3669588520335587e-05 | 2.2366387821447823e-05 | 5.51% | 5.83% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-alternating 0xaa/0x55]` | 2.37963607593483e-05 | 2.243596847380388e-05 | 5.72% | 6.06% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-ascii sentence]` | 2.385759012590493e-05 | 2.2598322450417e-05 | 5.28% | 5.57% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'\\x00'*32]` | 2.3505933187042217e-05 | 2.224940013158834e-05 | 5.35% | 5.65% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'\\x00\\xff\\x00\\xff']` | 2.3560394405510724e-05 | 2.2325916175874644e-05 | 5.24% | 5.53% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'\\x01'*100]` | 2.3743939819745725e-05 | 2.2253526385851708e-05 | 6.28% | 6.70% | 1.07x | ✅ | -| `hexbytes_getitem_index[3-b'\\x01'*2048]` | 2.3905277881044007e-05 | 2.2377902060079857e-05 | 6.39% | 6.83% | 1.07x | ✅ | -| `hexbytes_getitem_index[3-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3647841778410742e-05 | 2.2284219330703748e-05 | 5.77% | 6.12% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'\\x7f'*8]` | 2.3583389431878405e-05 | 2.2293803599500448e-05 | 5.47% | 5.78% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'\\x80'*8]` | 2.3722950242620407e-05 | 2.2286066181847813e-05 | 6.06% | 6.45% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'\\xde\\xad\\xbe\\xef']` | 2.3845356834118778e-05 | 2.212288604441631e-05 | 7.22% | 7.79% | 1.08x | ✅ | -| `hexbytes_getitem_index[3-b'\\xff'*64]` | 2.3719538098640988e-05 | 2.2142743590668913e-05 | 6.65% | 7.12% | 1.07x | ✅ | -| `hexbytes_getitem_index[3-b'a'*1024]` | 2.3485133845154906e-05 | 2.2153670264862265e-05 | 5.67% | 6.01% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-long alternating]` | 2.388198217001513e-05 | 2.22183555885802e-05 | 6.97% | 7.49% | 1.07x | ✅ | -| `hexbytes_getitem_index[3-mixed pattern]` | 2.388614646004389e-05 | 2.2712403800206335e-05 | 4.91% | 5.17% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-multiples of 0x10]` | 2.387063951538705e-05 | 2.230592252192809e-05 | 6.55% | 7.01% | 1.07x | ✅ | -| `hexbytes_getitem_index[3-palindrome ascii]` | 2.389725274772817e-05 | 2.2360159584640115e-05 | 6.43% | 6.87% | 1.07x | ✅ | -| `hexbytes_getitem_index[3-palindrome numeric]` | 2.3798089009595062e-05 | 2.2526916278931338e-05 | 5.34% | 5.64% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-palindrome]` | 2.3655942653303613e-05 | 2.213796458225677e-05 | 6.42% | 6.86% | 1.07x | ✅ | -| `hexbytes_getitem_index[3-repeated 0-9]` | 2.396342222639396e-05 | 2.2323883357804693e-05 | 6.84% | 7.34% | 1.07x | ✅ | -| `hexbytes_getitem_index[3-two patterns]` | 2.385684287372088e-05 | 2.2693310760618144e-05 | 4.88% | 5.13% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-0-9]` | 2.3899973992024223e-05 | 2.2453763928799237e-05 | 6.05% | 6.44% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-4-byte pattern]` | 2.3705508776158425e-05 | 2.238011738911868e-05 | 5.59% | 5.92% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-all byte values]` | 2.377875104005379e-05 | 2.22712890085195e-05 | 6.34% | 6.77% | 1.07x | ✅ | -| `hexbytes_getitem_index[4-alternating 0x00/0xff]` | 2.3802997980227825e-05 | 2.25064045339907e-05 | 5.45% | 5.76% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-alternating 0xaa/0x55]` | 2.3656997750980488e-05 | 2.246474914798274e-05 | 5.04% | 5.31% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-ascii sentence]` | 2.3889494842101873e-05 | 2.2232110147189814e-05 | 6.94% | 7.45% | 1.07x | ✅ | -| `hexbytes_getitem_index[4-b'\\x00'*32]` | 2.3948612391353527e-05 | 2.2580159784875707e-05 | 5.71% | 6.06% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-b'\\x01'*100]` | 2.36230588877441e-05 | 2.2538682146090458e-05 | 4.59% | 4.81% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-b'\\x01'*2048]` | 2.354046874295225e-05 | 2.2404037494145434e-05 | 4.83% | 5.07% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3690927947699704e-05 | 2.2461979332169837e-05 | 5.19% | 5.47% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-b'\\x7f'*8]` | 2.3799501582564888e-05 | 2.225404823020082e-05 | 6.49% | 6.94% | 1.07x | ✅ | -| `hexbytes_getitem_index[4-b'\\x80'*8]` | 2.364995371200852e-05 | 2.2431861192374475e-05 | 5.15% | 5.43% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-b'\\xff'*64]` | 2.3899208143721178e-05 | 2.2336480376619072e-05 | 6.54% | 7.00% | 1.07x | ✅ | -| `hexbytes_getitem_index[4-b'a'*1024]` | 2.388219329567692e-05 | 2.237994391119528e-05 | 6.29% | 6.71% | 1.07x | ✅ | -| `hexbytes_getitem_index[4-long alternating]` | 2.3825226326260514e-05 | 2.235339194559478e-05 | 6.18% | 6.58% | 1.07x | ✅ | -| `hexbytes_getitem_index[4-mixed pattern]` | 2.4263073550289538e-05 | 2.2477951042731033e-05 | 7.36% | 7.94% | 1.08x | ✅ | -| `hexbytes_getitem_index[4-multiples of 0x10]` | 2.3839900411638854e-05 | 2.2410074104850746e-05 | 6.00% | 6.38% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-palindrome ascii]` | 2.413395342536019e-05 | 2.2403790136882604e-05 | 7.17% | 7.72% | 1.08x | ✅ | -| `hexbytes_getitem_index[4-palindrome numeric]` | 2.386539608948987e-05 | 2.2444926049628023e-05 | 5.95% | 6.33% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-palindrome]` | 2.3624708736914828e-05 | 2.2501062408512196e-05 | 4.76% | 4.99% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-repeated 0-9]` | 2.4036002099408217e-05 | 2.2293087839859523e-05 | 7.25% | 7.82% | 1.08x | ✅ | -| `hexbytes_getitem_index[4-two patterns]` | 2.377668644820311e-05 | 2.2229137838792795e-05 | 6.51% | 6.96% | 1.07x | ✅ | -| `hexbytes_getitem_index[5-0-9]` | 2.3804482853094745e-05 | 2.2123400947219126e-05 | 7.06% | 7.60% | 1.08x | ✅ | -| `hexbytes_getitem_index[5-4-byte pattern]` | 2.3919398750660017e-05 | 2.2342013515976855e-05 | 6.59% | 7.06% | 1.07x | ✅ | -| `hexbytes_getitem_index[5-all byte values]` | 2.381642502048813e-05 | 2.225679471078651e-05 | 6.55% | 7.01% | 1.07x | ✅ | -| `hexbytes_getitem_index[5-alternating 0x00/0xff]` | 2.3850033761120395e-05 | 2.242768382035353e-05 | 5.96% | 6.34% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-alternating 0xaa/0x55]` | 2.3859982486855523e-05 | 2.185253475627353e-05 | 8.41% | 9.19% | 1.09x | ✅ | -| `hexbytes_getitem_index[5-ascii sentence]` | 2.3835025727299785e-05 | 2.2395683686574797e-05 | 6.04% | 6.43% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-b'\\x00'*32]` | 2.3798403675411692e-05 | 2.2465672940989854e-05 | 5.60% | 5.93% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-b'\\x01'*100]` | 2.3492257981176665e-05 | 2.2142185976849883e-05 | 5.75% | 6.10% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-b'\\x01'*2048]` | 2.366747898620313e-05 | 2.2198146171781466e-05 | 6.21% | 6.62% | 1.07x | ✅ | -| `hexbytes_getitem_index[5-b'\\x7f'*8]` | 2.35597953145184e-05 | 2.2171523646048525e-05 | 5.89% | 6.26% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-b'\\x80'*8]` | 2.3860267252043716e-05 | 2.2325881149106178e-05 | 6.43% | 6.87% | 1.07x | ✅ | -| `hexbytes_getitem_index[5-b'\\xff'*64]` | 2.38133876111381e-05 | 2.221470970606235e-05 | 6.71% | 7.20% | 1.07x | ✅ | -| `hexbytes_getitem_index[5-b'a'*1024]` | 2.387664162249834e-05 | 2.2220958262310435e-05 | 6.93% | 7.45% | 1.07x | ✅ | -| `hexbytes_getitem_index[5-long alternating]` | 2.3447450794083876e-05 | 2.2117716532324473e-05 | 5.67% | 6.01% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-mixed pattern]` | 2.3858675352130537e-05 | 2.237369899823486e-05 | 6.22% | 6.64% | 1.07x | ✅ | -| `hexbytes_getitem_index[5-multiples of 0x10]` | 2.3441867659560046e-05 | 2.204999308430266e-05 | 5.94% | 6.31% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-palindrome ascii]` | 2.3958043445209287e-05 | 2.2279548089798347e-05 | 7.01% | 7.53% | 1.08x | ✅ | -| `hexbytes_getitem_index[5-palindrome]` | 2.370622874194218e-05 | 2.2535518141703165e-05 | 4.94% | 5.19% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-repeated 0-9]` | 2.401607357845209e-05 | 2.2335016478901267e-05 | 7.00% | 7.53% | 1.08x | ✅ | -| `hexbytes_getitem_index[5-two patterns]` | 2.384207955910319e-05 | 2.2819046333930514e-05 | 4.29% | 4.48% | 1.04x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-0-9]` | 8.068234990254468e-05 | 5.9908517862950774e-05 | 25.75% | 34.68% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-4-byte pattern]` | 8.11249058632316e-05 | 5.914985501307563e-05 | 27.09% | 37.15% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-all byte values]` | 8.09292051944004e-05 | 5.996926055642412e-05 | 25.90% | 34.95% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-alternating 0x00/0xff]` | 8.050372644893333e-05 | 5.9492500278013574e-05 | 26.10% | 35.32% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-alternating 0xaa/0x55]` | 8.160105677786958e-05 | 5.9768697206212395e-05 | 26.75% | 36.53% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-ascii sentence]` | 8.059944833324778e-05 | 6.0538737184844244e-05 | 24.89% | 33.14% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'']` | 7.879725653296983e-05 | 5.773333058399736e-05 | 26.73% | 36.48% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00'*32]` | 8.065340013430995e-05 | 5.992783206681132e-05 | 25.70% | 34.58% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00\\xff\\x00\\xff']` | 8.110106993329847e-05 | 6.036323340154663e-05 | 25.57% | 34.36% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*100]` | 8.112706850935604e-05 | 5.985948007817502e-05 | 26.22% | 35.53% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*2048]` | 8.147721111379799e-05 | 6.052596027497756e-05 | 25.71% | 34.62% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01\\x02\\x03']` | 8.167215920607164e-05 | 6.009837985140856e-05 | 26.42% | 35.90% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.114676602016646e-05 | 6.013714140361474e-05 | 25.89% | 34.94% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x7f'*8]` | 8.158437482314103e-05 | 5.9964215072264316e-05 | 26.50% | 36.06% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x80'*8]` | 8.11956405283511e-05 | 6.012798039697782e-05 | 25.95% | 35.04% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\xde\\xad\\xbe\\xef']` | 8.133062109897846e-05 | 6.0024769901838476e-05 | 26.20% | 35.50% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\xff'*64]` | 8.147021273208189e-05 | 6.014110090091815e-05 | 26.18% | 35.47% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'a'*1024]` | 8.184092645393188e-05 | 5.9690798562356445e-05 | 27.06% | 37.11% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'abc']` | 8.11407611580561e-05 | 6.0269786530966417e-05 | 25.72% | 34.63% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-long alternating]` | 8.138515989132823e-05 | 6.0051330791540194e-05 | 26.21% | 35.53% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-mixed pattern]` | 8.11307849411989e-05 | 5.948433203317993e-05 | 26.68% | 36.39% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-multiples of 0x10]` | 8.0865044025069e-05 | 6.067042211538623e-05 | 24.97% | 33.29% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-palindrome ascii]` | 8.098974116830668e-05 | 5.946342412898394e-05 | 26.58% | 36.20% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-palindrome numeric]` | 8.30720497246577e-05 | 5.996928553820368e-05 | 27.81% | 38.52% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-palindrome]` | 8.052636510236694e-05 | 6.009066007473859e-05 | 25.38% | 34.01% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-repeated 0-9]` | 8.17800832421859e-05 | 5.937056592499519e-05 | 27.40% | 37.75% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-single 0xff]` | 7.866251040166223e-05 | 5.7545369679967186e-05 | 26.85% | 36.70% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-single null byte]` | 7.89915242249266e-05 | 5.753772649427693e-05 | 27.16% | 37.29% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-two patterns]` | 8.080403866485248e-05 | 5.922889017319143e-05 | 26.70% | 36.43% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-0-9]` | 8.2622325636055e-05 | 6.0528968239167615e-05 | 26.74% | 36.50% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-4-byte pattern]` | 8.272651418364963e-05 | 6.092795295403125e-05 | 26.35% | 35.78% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-all byte values]` | 8.255031829407812e-05 | 6.0791886106560145e-05 | 26.36% | 35.79% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-alternating 0x00/0xff]` | 8.21723996281765e-05 | 6.0797497703534535e-05 | 26.01% | 35.16% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-alternating 0xaa/0x55]` | 8.221975981903979e-05 | 6.072751465186438e-05 | 26.14% | 35.39% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-ascii sentence]` | 8.367206394174686e-05 | 6.133230997235685e-05 | 26.70% | 36.42% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'']` | 8.06918569884131e-05 | 5.772912687932482e-05 | 28.46% | 39.78% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x00'*32]` | 8.266038445917815e-05 | 6.0560119980356125e-05 | 26.74% | 36.49% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x00\\xff\\x00\\xff']` | 8.20339136045329e-05 | 6.0075424777740126e-05 | 26.77% | 36.55% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*100]` | 8.217707354153222e-05 | 6.054433994945807e-05 | 26.32% | 35.73% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*2048]` | 8.258134725819903e-05 | 6.037501951340134e-05 | 26.89% | 36.78% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x01\\x02\\x03']` | 8.256973994855508e-05 | 6.028594637574512e-05 | 26.99% | 36.96% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.248224031876366e-05 | 6.0332711841273715e-05 | 26.85% | 36.71% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x7f'*8]` | 8.179846849894452e-05 | 6.092441941098647e-05 | 25.52% | 34.26% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x80'*8]` | 8.186628293610639e-05 | 6.0235752841171e-05 | 26.42% | 35.91% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\xde\\xad\\xbe\\xef']` | 8.092846841651972e-05 | 6.04425395196323e-05 | 25.31% | 33.89% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\xff'*64]` | 8.124670067572987e-05 | 6.041566846002542e-05 | 25.64% | 34.48% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'a'*1024]` | 8.175597454964947e-05 | 6.06864513192614e-05 | 25.77% | 34.72% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'abc']` | 8.198075665936462e-05 | 6.0627726194316385e-05 | 26.05% | 35.22% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-long alternating]` | 8.204332835156302e-05 | 6.07988550706465e-05 | 25.89% | 34.94% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-mixed pattern]` | 8.17248904408768e-05 | 6.108961798914236e-05 | 25.25% | 33.78% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-multiples of 0x10]` | 8.291109128917191e-05 | 6.126453753386428e-05 | 26.11% | 35.33% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-palindrome ascii]` | 8.302702215551893e-05 | 6.0712845747646644e-05 | 26.88% | 36.75% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-palindrome numeric]` | 8.24454859497045e-05 | 6.0612859259637294e-05 | 26.48% | 36.02% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-palindrome]` | 8.080784793291502e-05 | 6.0116598701386324e-05 | 25.61% | 34.42% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-repeated 0-9]` | 8.334414217224779e-05 | 5.999776415961464e-05 | 28.01% | 38.91% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-single 0xff]` | 8.156183284693949e-05 | 5.931348806830272e-05 | 27.28% | 37.51% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-single null byte]` | 8.174356108905515e-05 | 5.900020044260341e-05 | 27.82% | 38.55% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-two patterns]` | 8.22219209418392e-05 | 6.084418406394616e-05 | 26.00% | 35.14% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-0-9]` | 8.313658701170756e-05 | 5.895483225067839e-05 | 29.09% | 41.02% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-4-byte pattern]` | 8.196193234840055e-05 | 5.9606213484058697e-05 | 27.28% | 37.51% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-all byte values]` | 8.346399715113727e-05 | 6.023051273376708e-05 | 27.84% | 38.57% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-alternating 0x00/0xff]` | 8.179198156866263e-05 | 6.016420690452284e-05 | 26.44% | 35.95% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-alternating 0xaa/0x55]` | 8.163817929710001e-05 | 5.9934526712899444e-05 | 26.59% | 36.21% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-ascii sentence]` | 8.209272865155255e-05 | 6.092703580256333e-05 | 25.78% | 34.74% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'']` | 8.027790615778153e-05 | 5.7995641927442527e-05 | 27.76% | 38.42% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x00'*32]` | 8.276872109450775e-05 | 6.056089253842826e-05 | 26.83% | 36.67% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x00\\xff\\x00\\xff']` | 8.19567980550223e-05 | 5.9205196348911915e-05 | 27.76% | 38.43% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*100]` | 8.313834030044157e-05 | 6.092565019477837e-05 | 26.72% | 36.46% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*2048]` | 8.246281656146155e-05 | 5.975929586280049e-05 | 27.53% | 37.99% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x01\\x02\\x03']` | 8.199072701858649e-05 | 5.940088034279834e-05 | 27.55% | 38.03% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.258274406057332e-05 | 6.110407110891471e-05 | 26.01% | 35.15% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x7f'*8]` | 8.206723002467621e-05 | 6.056757308507195e-05 | 26.20% | 35.50% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x80'*8]` | 8.208912763807277e-05 | 6.06431315458422e-05 | 26.13% | 35.36% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\xde\\xad\\xbe\\xef']` | 8.281438339446592e-05 | 5.9749517630166066e-05 | 27.85% | 38.60% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\xff'*64]` | 8.281844606293529e-05 | 5.9608617469888645e-05 | 28.02% | 38.94% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'a'*1024]` | 8.233301537469728e-05 | 5.9421223063502564e-05 | 27.83% | 38.56% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'abc']` | 8.317798982465156e-05 | 6.0510199715760295e-05 | 27.25% | 37.46% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-long alternating]` | 8.177884355440976e-05 | 5.960249797801825e-05 | 27.12% | 37.21% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-mixed pattern]` | 8.153793358950345e-05 | 6.058071977552699e-05 | 25.70% | 34.59% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-multiples of 0x10]` | 8.248096552844894e-05 | 5.9685025348125585e-05 | 27.64% | 38.19% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-palindrome ascii]` | 8.139138326813279e-05 | 6.119322011840429e-05 | 24.82% | 33.01% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-palindrome numeric]` | 8.14961322142407e-05 | 6.135827801269117e-05 | 24.71% | 32.82% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-palindrome]` | 8.155820494943751e-05 | 6.018801583839876e-05 | 26.20% | 35.51% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-repeated 0-9]` | 8.264213345195723e-05 | 6.0417248049566416e-05 | 26.89% | 36.79% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-single 0xff]` | 8.023151070244493e-05 | 5.7594480021759474e-05 | 28.21% | 39.30% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-single null byte]` | 8.018753225122147e-05 | 5.765371340802396e-05 | 28.10% | 39.08% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-two patterns]` | 8.131570729214625e-05 | 6.049279725871943e-05 | 25.61% | 34.42% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-0-9]` | 8.14121963052695e-05 | 6.018746420393172e-05 | 26.07% | 35.26% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-4-byte pattern]` | 8.240409685413533e-05 | 6.081408245115794e-05 | 26.20% | 35.50% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-all byte values]` | 8.202717933675196e-05 | 6.065021454450571e-05 | 26.06% | 35.25% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-alternating 0x00/0xff]` | 8.2030339885261e-05 | 6.0688604341073643e-05 | 26.02% | 35.17% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-alternating 0xaa/0x55]` | 8.191594718237171e-05 | 6.068378042598657e-05 | 25.92% | 34.99% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-ascii sentence]` | 8.218106248410972e-05 | 6.071176547484893e-05 | 26.12% | 35.36% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'']` | 7.846717309544713e-05 | 5.731748541262407e-05 | 26.95% | 36.90% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x00'*32]` | 8.171215331135617e-05 | 6.049818370995403e-05 | 25.96% | 35.07% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x00\\xff\\x00\\xff']` | 8.008490774949858e-05 | 6.003003665949191e-05 | 25.04% | 33.41% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*100]` | 8.170876382529361e-05 | 6.096559520721099e-05 | 25.39% | 34.02% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*2048]` | 0.00010476437791326655 | 7.746346799212244e-05 | 26.06% | 35.24% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x01\\x02\\x03']` | 7.960454609000436e-05 | 5.7623088750788484e-05 | 27.61% | 38.15% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.107940673613911e-05 | 6.017446222218925e-05 | 25.78% | 34.74% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x7f'*8]` | 8.179921890396522e-05 | 6.0127637423181724e-05 | 26.49% | 36.04% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x80'*8]` | 8.094503061559896e-05 | 6.033906979829822e-05 | 25.46% | 34.15% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\xde\\xad\\xbe\\xef']` | 8.2657600133284e-05 | 6.065080339822555e-05 | 26.62% | 36.28% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\xff'*64]` | 8.194716225175662e-05 | 6.017795967458637e-05 | 26.56% | 36.17% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'a'*1024]` | 9.693064215296854e-05 | 7.569989005474179e-05 | 21.90% | 28.05% | 1.28x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'abc']` | 7.912194866352589e-05 | 5.7795536500223504e-05 | 26.95% | 36.90% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-long alternating]` | 0.00010049567496632814 | 7.225055857475158e-05 | 28.11% | 39.09% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-mixed pattern]` | 8.21531364470839e-05 | 6.0966463356750096e-05 | 25.79% | 34.75% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-multiples of 0x10]` | 8.182128273575786e-05 | 5.950911816715105e-05 | 27.27% | 37.49% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-palindrome ascii]` | 8.173102597293032e-05 | 6.0450363378619016e-05 | 26.04% | 35.20% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-palindrome numeric]` | 8.064481667943535e-05 | 6.005529660558877e-05 | 25.53% | 34.28% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-palindrome]` | 8.146838256348088e-05 | 5.930252168165231e-05 | 27.21% | 37.38% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-repeated 0-9]` | 8.158039589364289e-05 | 6.068757436283316e-05 | 25.61% | 34.43% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-single 0xff]` | 7.892234626219822e-05 | 5.709236282816077e-05 | 27.66% | 38.24% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-single null byte]` | 7.835202393129527e-05 | 5.734935938542202e-05 | 26.81% | 36.62% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-two patterns]` | 8.124228911371968e-05 | 6.0960659161912064e-05 | 24.96% | 33.27% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-0-9]` | 7.9430356937195e-05 | 5.75138086086997e-05 | 27.59% | 38.11% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-4-byte pattern]` | 8.083538128638625e-05 | 5.862082945179073e-05 | 27.48% | 37.90% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-all byte values]` | 8.060951725703728e-05 | 5.933151936678779e-05 | 26.40% | 35.86% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-alternating 0x00/0xff]` | 7.999629243724944e-05 | 5.763557713639643e-05 | 27.95% | 38.80% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-alternating 0xaa/0x55]` | 8.02130539314506e-05 | 5.7282829826576e-05 | 28.59% | 40.03% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-ascii sentence]` | 8.022463458559608e-05 | 5.9020510442109744e-05 | 26.43% | 35.93% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'']` | 7.71061669046454e-05 | 5.565648922236641e-05 | 27.82% | 38.54% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x00'*32]` | 8.090211399786762e-05 | 5.926002974818658e-05 | 26.75% | 36.52% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x00\\xff\\x00\\xff']` | 8.099782549973611e-05 | 5.8727517655832474e-05 | 27.49% | 37.92% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*100]` | 8.115939604376683e-05 | 5.710263988029543e-05 | 29.64% | 42.13% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*2048]` | 0.00010146242689006956 | 7.806360940270111e-05 | 23.06% | 29.97% | 1.30x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x01\\x02\\x03']` | 8.020230350063798e-05 | 5.804965471422574e-05 | 27.62% | 38.16% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 7.97868648430571e-05 | 5.6351813911057925e-05 | 29.37% | 41.59% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x7f'*8]` | 7.975691366162501e-05 | 5.600672332160979e-05 | 29.78% | 42.41% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x80'*8]` | 7.945457643561741e-05 | 5.638943533155044e-05 | 29.03% | 40.90% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\xde\\xad\\xbe\\xef']` | 7.999624765962864e-05 | 5.88580201326653e-05 | 26.42% | 35.91% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\xff'*64]` | 8.017778856891062e-05 | 5.9135237732123635e-05 | 26.24% | 35.58% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'a'*1024]` | 9.863015309092291e-05 | 6.957885123547411e-05 | 29.45% | 41.75% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'abc']` | 8.043158298894438e-05 | 5.794496088357798e-05 | 27.96% | 38.81% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-long alternating]` | 9.52467992574056e-05 | 7.340333486803448e-05 | 22.93% | 29.76% | 1.30x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-mixed pattern]` | 8.073709406148429e-05 | 5.952576523301626e-05 | 26.27% | 35.63% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-multiples of 0x10]` | 7.976009010096381e-05 | 5.6305954230380405e-05 | 29.41% | 41.65% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-palindrome ascii]` | 7.920245338866143e-05 | 5.763644401517949e-05 | 27.23% | 37.42% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-palindrome numeric]` | 7.9939929537322e-05 | 5.7125410998791315e-05 | 28.54% | 39.94% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-palindrome]` | 8.016544171041521e-05 | 5.551693119839742e-05 | 30.75% | 44.40% | 1.44x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-repeated 0-9]` | 8.068510058369967e-05 | 6.0166740150958995e-05 | 25.43% | 34.10% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-single 0xff]` | 7.804954601624467e-05 | 5.506197227846088e-05 | 29.45% | 41.75% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-single null byte]` | 7.816215323890064e-05 | 5.5627027377838706e-05 | 28.83% | 40.51% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-two patterns]` | 8.071645942788979e-05 | 5.934724027483824e-05 | 26.47% | 36.01% | 1.36x | ✅ | -| `hexbytes_new['']` | 7.059339453681849e-05 | 3.720572167745306e-05 | 47.30% | 89.74% | 1.90x | ✅ | -| `hexbytes_new['0x'+'00'*64]` | 9.185311650414212e-05 | 4.9458678953195796e-05 | 46.15% | 85.72% | 1.86x | ✅ | -| `hexbytes_new['0x'+'a'*128]` | 9.184894177237468e-05 | 5.104373326869315e-05 | 44.43% | 79.94% | 1.80x | ✅ | -| `hexbytes_new['0x'+'ff'*32]` | 8.88221703346839e-05 | 4.645459160491125e-05 | 47.70% | 91.20% | 1.91x | ✅ | -| `hexbytes_new['0x']` | 7.839122044398893e-05 | 3.842018705163114e-05 | 50.99% | 104.04% | 2.04x | ✅ | -| `hexbytes_new['0x1234']` | 8.604767258883253e-05 | 4.458978211603869e-05 | 48.18% | 92.98% | 1.93x | ✅ | -| `hexbytes_new['0xCAFEBABE']` | 8.569109342851317e-05 | 4.365468820511476e-05 | 49.06% | 96.29% | 1.96x | ✅ | -| `hexbytes_new['0xabcdef']` | 8.593088756520804e-05 | 4.45373277594925e-05 | 48.17% | 92.94% | 1.93x | ✅ | -| `hexbytes_new['0xdeadbeef']` | 8.627125497488135e-05 | 4.442037623583596e-05 | 48.51% | 94.22% | 1.94x | ✅ | -| `hexbytes_new['abc']` | 8.213154539849242e-05 | 4.7106935923321183e-05 | 42.64% | 74.35% | 1.74x | ✅ | -| `hexbytes_new['deadbeef']` | 7.619061738594097e-05 | 4.1301610026598785e-05 | 45.79% | 84.47% | 1.84x | ✅ | -| `hexbytes_new[0-9]` | 4.295882153627664e-05 | 2.5316265129541266e-05 | 41.07% | 69.69% | 1.70x | ✅ | -| `hexbytes_new[0]` | 0.00012231687726766509 | 6.0478503253778025e-05 | 50.56% | 102.25% | 2.02x | ✅ | -| `hexbytes_new[123456]` | 0.0001266123322099141 | 6.583570512732421e-05 | 48.00% | 92.32% | 1.92x | ✅ | -| `hexbytes_new[2**16]` | 0.00012774508225165453 | 6.617318450917904e-05 | 48.20% | 93.05% | 1.93x | ✅ | -| `hexbytes_new[2**256-1]` | 0.00013121266143061903 | 7.351050389468393e-05 | 43.98% | 78.50% | 1.78x | ✅ | -| `hexbytes_new[2**32]` | 0.00013085130021646147 | 6.981460054531131e-05 | 46.65% | 87.43% | 1.87x | ✅ | -| `hexbytes_new[2**64]` | 0.0001324229245798965 | 7.127814146942154e-05 | 46.17% | 85.78% | 1.86x | ✅ | -| `hexbytes_new[2**8]` | 0.00012605911740696366 | 6.3048691085867e-05 | 49.98% | 99.94% | 2.00x | ✅ | -| `hexbytes_new[4-byte pattern]` | 4.295112867205666e-05 | 2.7806419556598662e-05 | 35.26% | 54.46% | 1.54x | ✅ | -| `hexbytes_new[False]` | 6.087290743084603e-05 | 2.6771864289568586e-05 | 56.02% | 127.38% | 2.27x | ✅ | -| `hexbytes_new[True]` | 6.088600700348238e-05 | 2.696853017901539e-05 | 55.71% | 125.77% | 2.26x | ✅ | -| `hexbytes_new[all byte values]` | 4.333466030390133e-05 | 2.7894081810705685e-05 | 35.63% | 55.35% | 1.55x | ✅ | -| `hexbytes_new[alternating 0x00/0xff]` | 4.287333638228319e-05 | 2.594063403652535e-05 | 39.49% | 65.27% | 1.65x | ✅ | -| `hexbytes_new[alternating 0xaa/0x55]` | 4.273885980923265e-05 | 2.5827765223145366e-05 | 39.57% | 65.48% | 1.65x | ✅ | -| `hexbytes_new[ascii sentence]` | 4.313410983817353e-05 | 2.546554532135807e-05 | 40.96% | 69.38% | 1.69x | ✅ | -| `hexbytes_new[b'']` | 4.1701536417217834e-05 | 2.5443427864218587e-05 | 38.99% | 63.90% | 1.64x | ✅ | -| `hexbytes_new[b'\\x00'*32]` | 4.2708400224018625e-05 | 2.531691282877622e-05 | 40.72% | 68.70% | 1.69x | ✅ | -| `hexbytes_new[b'\\x00\\xff\\x00\\xff']` | 4.2081834338195306e-05 | 2.5464436144364045e-05 | 39.49% | 65.26% | 1.65x | ✅ | -| `hexbytes_new[b'\\x01'*100]` | 4.387343088107201e-05 | 2.6034466974391452e-05 | 40.66% | 68.52% | 1.69x | ✅ | -| `hexbytes_new[b'\\x01'*2048]` | 5.733198446675121e-05 | 3.879941616922359e-05 | 32.33% | 47.77% | 1.48x | ✅ | -| `hexbytes_new[b'\\x01\\x02\\x03']` | 4.2723619263841565e-05 | 2.5355395989687225e-05 | 40.65% | 68.50% | 1.68x | ✅ | -| `hexbytes_new[b'\\x10\\x20\\x30\\x40\\x50']` | 4.224746088317716e-05 | 2.528448930199794e-05 | 40.15% | 67.09% | 1.67x | ✅ | -| `hexbytes_new[b'\\x7f'*8]` | 4.213323056509161e-05 | 2.4986245013606142e-05 | 40.70% | 68.63% | 1.69x | ✅ | -| `hexbytes_new[b'\\x80'*8]` | 4.2536395501683135e-05 | 2.5072862766728953e-05 | 41.06% | 69.65% | 1.70x | ✅ | -| `hexbytes_new[b'\\xde\\xad\\xbe\\xef']` | 4.2394029725542104e-05 | 2.540955404834232e-05 | 40.06% | 66.84% | 1.67x | ✅ | -| `hexbytes_new[b'\\xff'*64]` | 4.261945097059883e-05 | 2.587775309265785e-05 | 39.28% | 64.70% | 1.65x | ✅ | -| `hexbytes_new[b'a'*1024]` | 5.133675556752819e-05 | 3.3138708548557765e-05 | 35.45% | 54.91% | 1.55x | ✅ | -| `hexbytes_new[b'abc']` | 4.2674347397571076e-05 | 2.5163975539327663e-05 | 41.03% | 69.59% | 1.70x | ✅ | -| `hexbytes_new[bytearray(0-9)]` | 6.865169676977511e-05 | 3.7259202139075596e-05 | 45.73% | 84.25% | 1.84x | ✅ | -| `hexbytes_new[bytearray(4-byte pattern)]` | 6.953209316813137e-05 | 3.816708106647471e-05 | 45.11% | 82.18% | 1.82x | ✅ | -| `hexbytes_new[bytearray(all byte values)]` | 6.898457893830663e-05 | 3.8168352788462077e-05 | 44.67% | 80.74% | 1.81x | ✅ | -| `hexbytes_new[bytearray(alternating 0x00/0xff)]` | 6.908631410366376e-05 | 3.778673334190037e-05 | 45.31% | 82.83% | 1.83x | ✅ | -| `hexbytes_new[bytearray(alternating 0xaa/0x55)]` | 6.845419039658357e-05 | 3.777392923671646e-05 | 44.82% | 81.22% | 1.81x | ✅ | -| `hexbytes_new[bytearray(ascii sentence)]` | 6.972701953861159e-05 | 3.732977678561211e-05 | 46.46% | 86.79% | 1.87x | ✅ | -| `hexbytes_new[bytearray(b'')]` | 6.678502978133552e-05 | 3.561588238570766e-05 | 46.67% | 87.51% | 1.88x | ✅ | -| `hexbytes_new[bytearray(b'\\x00'*32)]` | 6.932840331862772e-05 | 3.722964287143302e-05 | 46.30% | 86.22% | 1.86x | ✅ | -| `hexbytes_new[bytearray(b'\\x00\\xff\\x00\\xff')]` | 6.955368340544366e-05 | 4.051862445406872e-05 | 41.74% | 71.66% | 1.72x | ✅ | -| `hexbytes_new[bytearray(b'\\x01'*100)]` | 6.929357571310845e-05 | 3.8765838753758206e-05 | 44.06% | 78.75% | 1.79x | ✅ | -| `hexbytes_new[bytearray(b'\\x01'*2048)]` | 9.350162891314769e-05 | 5.560644346862349e-05 | 40.53% | 68.15% | 1.68x | ✅ | -| `hexbytes_new[bytearray(b'\\x01\\x02\\x03')]` | 6.935026736671355e-05 | 3.845283974606172e-05 | 44.55% | 80.35% | 1.80x | ✅ | -| `hexbytes_new[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 6.868295439875171e-05 | 3.880361048641301e-05 | 43.50% | 77.00% | 1.77x | ✅ | -| `hexbytes_new[bytearray(b'\\x7f'*8)]` | 6.8469512349617e-05 | 3.72148175217809e-05 | 45.65% | 83.98% | 1.84x | ✅ | -| `hexbytes_new[bytearray(b'\\x80'*8)]` | 6.842226934820798e-05 | 3.7711169514167804e-05 | 44.88% | 81.44% | 1.81x | ✅ | -| `hexbytes_new[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 6.90195149679681e-05 | 3.838316011293737e-05 | 44.39% | 79.82% | 1.80x | ✅ | -| `hexbytes_new[bytearray(b'\\xff'*64)]` | 6.919485734372232e-05 | 3.7846437835231215e-05 | 45.30% | 82.83% | 1.83x | ✅ | -| `hexbytes_new[bytearray(b'a'*1024)]` | 8.567915298868023e-05 | 5.015077982644348e-05 | 41.47% | 70.84% | 1.71x | ✅ | -| `hexbytes_new[bytearray(b'abc')]` | 6.9138375339417e-05 | 3.831013846730171e-05 | 44.59% | 80.47% | 1.80x | ✅ | -| `hexbytes_new[bytearray(long alternating)]` | 8.756419426149756e-05 | 4.940683158110184e-05 | 43.58% | 77.23% | 1.77x | ✅ | -| `hexbytes_new[bytearray(mixed pattern)]` | 6.93203185786192e-05 | 3.906978385134366e-05 | 43.64% | 77.43% | 1.77x | ✅ | -| `hexbytes_new[bytearray(multiples of 0x10)]` | 6.887247167193475e-05 | 3.7106534309345784e-05 | 46.12% | 85.61% | 1.86x | ✅ | -| `hexbytes_new[bytearray(palindrome ascii)]` | 6.746962549895354e-05 | 3.7175894460748066e-05 | 44.90% | 81.49% | 1.81x | ✅ | -| `hexbytes_new[bytearray(palindrome numeric)]` | 6.869543028529821e-05 | 3.81874595499812e-05 | 44.41% | 79.89% | 1.80x | ✅ | -| `hexbytes_new[bytearray(palindrome)]` | 6.868747138894986e-05 | 3.733346010256775e-05 | 45.65% | 83.98% | 1.84x | ✅ | -| `hexbytes_new[bytearray(repeated 0-9)]` | 6.911508148086022e-05 | 3.761974277890361e-05 | 45.57% | 83.72% | 1.84x | ✅ | -| `hexbytes_new[bytearray(single 0xff)]` | 6.969344641567276e-05 | 3.821283515052185e-05 | 45.17% | 82.38% | 1.82x | ✅ | -| `hexbytes_new[bytearray(single null byte)]` | 6.8821272252622e-05 | 3.81009238681271e-05 | 44.64% | 80.63% | 1.81x | ✅ | -| `hexbytes_new[bytearray(two patterns)]` | 6.947249127955981e-05 | 3.830322091851254e-05 | 44.87% | 81.38% | 1.81x | ✅ | -| `hexbytes_new[long alternating]` | 5.160353372444581e-05 | 3.319370597996107e-05 | 35.68% | 55.46% | 1.55x | ✅ | -| `hexbytes_new[memoryview(0-9)]` | 8.402488421221348e-05 | 4.305165841161287e-05 | 48.76% | 95.17% | 1.95x | ✅ | -| `hexbytes_new[memoryview(4-byte pattern)]` | 8.483368913519236e-05 | 4.420043890266264e-05 | 47.90% | 91.93% | 1.92x | ✅ | -| `hexbytes_new[memoryview(all byte values)]` | 8.277553206819768e-05 | 4.437347169215945e-05 | 46.39% | 86.54% | 1.87x | ✅ | -| `hexbytes_new[memoryview(alternating 0x00/0xff)]` | 8.432842735782323e-05 | 4.3162543582832885e-05 | 48.82% | 95.37% | 1.95x | ✅ | -| `hexbytes_new[memoryview(alternating 0xaa/0x55)]` | 8.4226051455622e-05 | 4.2706406710533925e-05 | 49.30% | 97.22% | 1.97x | ✅ | -| `hexbytes_new[memoryview(ascii sentence)]` | 8.28974079227692e-05 | 4.2487380181126084e-05 | 48.75% | 95.11% | 1.95x | ✅ | -| `hexbytes_new[memoryview(b'')]` | 8.23962123283304e-05 | 4.025397220300485e-05 | 51.15% | 104.69% | 2.05x | ✅ | -| `hexbytes_new[memoryview(b'\\x00'*32)]` | 8.302596758787724e-05 | 4.27510432520547e-05 | 48.51% | 94.21% | 1.94x | ✅ | -| `hexbytes_new[memoryview(b'\\x00\\xff\\x00\\xff')]` | 8.356703476862896e-05 | 4.305663606365146e-05 | 48.48% | 94.09% | 1.94x | ✅ | -| `hexbytes_new[memoryview(b'\\x01'*100)]` | 8.392830503024734e-05 | 4.306008859209643e-05 | 48.69% | 94.91% | 1.95x | ✅ | -| `hexbytes_new[memoryview(b'\\x01'*2048)]` | 0.0001083133241625787 | 6.181063451514009e-05 | 42.93% | 75.23% | 1.75x | ✅ | -| `hexbytes_new[memoryview(b'\\x01\\x02\\x03')]` | 8.274879907228332e-05 | 4.235713144033117e-05 | 48.81% | 95.36% | 1.95x | ✅ | -| `hexbytes_new[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 8.341332207145342e-05 | 4.2522852834659024e-05 | 49.02% | 96.16% | 1.96x | ✅ | -| `hexbytes_new[memoryview(b'\\x7f'*8)]` | 8.277404148909936e-05 | 4.275480455433159e-05 | 48.35% | 93.60% | 1.94x | ✅ | -| `hexbytes_new[memoryview(b'\\x80'*8)]` | 8.32985845173698e-05 | 4.2725686219471154e-05 | 48.71% | 94.96% | 1.95x | ✅ | -| `hexbytes_new[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 8.34094967409787e-05 | 4.253482172593846e-05 | 49.00% | 96.10% | 1.96x | ✅ | -| `hexbytes_new[memoryview(b'\\xff'*64)]` | 8.333514805646204e-05 | 4.2686659313615054e-05 | 48.78% | 95.23% | 1.95x | ✅ | -| `hexbytes_new[memoryview(b'a'*1024)]` | 9.924937529033548e-05 | 5.5952107027414155e-05 | 43.62% | 77.38% | 1.77x | ✅ | -| `hexbytes_new[memoryview(b'abc')]` | 8.35927274669656e-05 | 4.261450935855843e-05 | 49.02% | 96.16% | 1.96x | ✅ | -| `hexbytes_new[memoryview(long alternating)]` | 0.00010227541168152174 | 5.6218582273413e-05 | 45.03% | 81.92% | 1.82x | ✅ | -| `hexbytes_new[memoryview(mixed pattern)]` | 8.042701159791098e-05 | 4.298920272923132e-05 | 46.55% | 87.09% | 1.87x | ✅ | -| `hexbytes_new[memoryview(multiples of 0x10)]` | 8.40677904662531e-05 | 4.314210112540732e-05 | 48.68% | 94.86% | 1.95x | ✅ | -| `hexbytes_new[memoryview(palindrome ascii)]` | 8.324889707805461e-05 | 4.310495465835889e-05 | 48.22% | 93.13% | 1.93x | ✅ | -| `hexbytes_new[memoryview(palindrome numeric)]` | 8.343425922642345e-05 | 4.273448915555574e-05 | 48.78% | 95.24% | 1.95x | ✅ | -| `hexbytes_new[memoryview(palindrome)]` | 8.561975046176595e-05 | 4.265896393780081e-05 | 50.18% | 100.71% | 2.01x | ✅ | -| `hexbytes_new[memoryview(repeated 0-9)]` | 8.310467831977971e-05 | 4.3063931759602075e-05 | 48.18% | 92.98% | 1.93x | ✅ | -| `hexbytes_new[memoryview(single 0xff)]` | 8.320841623582506e-05 | 4.2339979937306514e-05 | 49.12% | 96.52% | 1.97x | ✅ | -| `hexbytes_new[memoryview(single null byte)]` | 8.366610652141289e-05 | 4.24293937974122e-05 | 49.29% | 97.19% | 1.97x | ✅ | -| `hexbytes_new[memoryview(two patterns)]` | 8.162854716979587e-05 | 4.3148312062757567e-05 | 47.14% | 89.18% | 1.89x | ✅ | -| `hexbytes_new[mixed pattern]` | 4.3233341128517325e-05 | 2.5983755841529144e-05 | 39.90% | 66.39% | 1.66x | ✅ | -| `hexbytes_new[multiples of 0x10]` | 4.453038188270421e-05 | 2.5264566840342406e-05 | 43.26% | 76.26% | 1.76x | ✅ | -| `hexbytes_new[palindrome ascii]` | 4.229629357318056e-05 | 2.5336603703738986e-05 | 40.10% | 66.94% | 1.67x | ✅ | -| `hexbytes_new[palindrome numeric]` | 4.272307948255706e-05 | 2.5146011528992055e-05 | 41.14% | 69.90% | 1.70x | ✅ | -| `hexbytes_new[palindrome]` | 4.201348902376135e-05 | 2.5233103985190362e-05 | 39.94% | 66.50% | 1.67x | ✅ | -| `hexbytes_new[repeated 0-9]` | 4.2849040366098236e-05 | 2.5941053878904493e-05 | 39.46% | 65.18% | 1.65x | ✅ | -| `hexbytes_new[single 0xff]` | 4.286213200795317e-05 | 2.492020956546657e-05 | 41.86% | 72.00% | 1.72x | ✅ | -| `hexbytes_new[single null byte]` | 4.192499090325599e-05 | 2.499780743653151e-05 | 40.37% | 67.71% | 1.68x | ✅ | -| `hexbytes_new[two patterns]` | 4.263737600661353e-05 | 2.5978849285802113e-05 | 39.07% | 64.12% | 1.64x | ✅ | -| `hexbytes_repr[0-9]` | 2.8906603901256988e-05 | 4.826409864705047e-05 | -66.97% | -40.11% | 0.60x | ❌ | -| `hexbytes_repr[4-byte pattern]` | 0.00011963341642583751 | 0.0001400665401070896 | -17.08% | -14.59% | 0.85x | ❌ | -| `hexbytes_repr[all byte values]` | 0.00011982235283705905 | 0.00013990902582604605 | -16.76% | -14.36% | 0.86x | ❌ | -| `hexbytes_repr[alternating 0x00/0xff]` | 4.856278231022973e-05 | 6.823805107868716e-05 | -40.52% | -28.83% | 0.71x | ❌ | -| `hexbytes_repr[alternating 0xaa/0x55]` | 4.857590398733753e-05 | 6.995288404312158e-05 | -44.01% | -30.56% | 0.69x | ❌ | -| `hexbytes_repr[ascii sentence]` | 4.031931849084338e-05 | 5.950601363909072e-05 | -47.59% | -32.24% | 0.68x | ❌ | -| `hexbytes_repr[b'']` | 2.1317235451217533e-05 | 3.9220457560879214e-05 | -83.98% | -45.65% | 0.54x | ❌ | -| `hexbytes_repr[b'\\x00'*32]` | 3.6531415565533604e-05 | 5.550275792589815e-05 | -51.93% | -34.18% | 0.66x | ❌ | -| `hexbytes_repr[b'\\x00\\xff\\x00\\xff']` | 2.637317037783945e-05 | 4.5718566832638076e-05 | -73.35% | -42.31% | 0.58x | ❌ | -| `hexbytes_repr[b'\\x01'*100]` | 6.088965111409175e-05 | 8.061184262466249e-05 | -32.39% | -24.47% | 0.76x | ❌ | -| `hexbytes_repr[b'\\x01'*2048]` | 0.0007614258905273656 | 0.0007861038751990369 | -3.24% | -3.14% | 0.97x | ❌ | -| `hexbytes_repr[b'\\x01\\x02\\x03']` | 2.6209223833763088e-05 | 4.54939655277082e-05 | -73.58% | -42.39% | 0.58x | ❌ | -| `hexbytes_repr[b'\\x10\\x20\\x30\\x40\\x50']` | 2.7028655231277712e-05 | 4.619027613384838e-05 | -70.89% | -41.48% | 0.59x | ❌ | -| `hexbytes_repr[b'\\x7f'*8]` | 2.8230645154587657e-05 | 4.904206182181031e-05 | -73.72% | -42.44% | 0.58x | ❌ | -| `hexbytes_repr[b'\\x80'*8]` | 2.8426131680960446e-05 | 4.777460813929573e-05 | -68.07% | -40.50% | 0.60x | ❌ | -| `hexbytes_repr[b'\\xde\\xad\\xbe\\xef']` | 2.6337729088802863e-05 | 4.547637607019854e-05 | -72.67% | -42.08% | 0.58x | ❌ | -| `hexbytes_repr[b'\\xff'*64]` | 4.864470126407969e-05 | 6.820290034013081e-05 | -40.21% | -28.68% | 0.71x | ❌ | -| `hexbytes_repr[b'a'*1024]` | 0.0003943152236865464 | 0.0004167634849109744 | -5.69% | -5.39% | 0.95x | ❌ | -| `hexbytes_repr[b'abc']` | 2.6066297462518963e-05 | 4.519746535806044e-05 | -73.39% | -42.33% | 0.58x | ❌ | -| `hexbytes_repr[long alternating]` | 0.00039789659825941614 | 0.00041966943296914243 | -5.47% | -5.19% | 0.95x | ❌ | -| `hexbytes_repr[mixed pattern]` | 9.750328166691435e-05 | 0.00011687490478363051 | -19.87% | -16.57% | 0.83x | ❌ | -| `hexbytes_repr[multiples of 0x10]` | 2.8799433607726066e-05 | 4.825756547722914e-05 | -67.56% | -40.32% | 0.60x | ❌ | -| `hexbytes_repr[palindrome ascii]` | 2.7796805953080366e-05 | 4.6697563483038906e-05 | -68.00% | -40.47% | 0.60x | ❌ | -| `hexbytes_repr[palindrome numeric]` | 2.7060029458088667e-05 | 4.60052916156726e-05 | -70.01% | -41.18% | 0.59x | ❌ | -| `hexbytes_repr[palindrome]` | 3.1699440174901834e-05 | 5.113128257544771e-05 | -61.30% | -38.00% | 0.62x | ❌ | -| `hexbytes_repr[repeated 0-9]` | 6.1059735802075e-05 | 8.09308274489489e-05 | -32.54% | -24.55% | 0.75x | ❌ | -| `hexbytes_repr[single 0xff]` | 2.5412433661322482e-05 | 4.4486854740555556e-05 | -75.06% | -42.88% | 0.57x | ❌ | -| `hexbytes_repr[single null byte]` | 2.571699182079626e-05 | 4.427370703012172e-05 | -72.16% | -41.91% | 0.58x | ❌ | -| `hexbytes_repr[two patterns]` | 4.8579280895801936e-05 | 6.850903517262255e-05 | -41.03% | -29.09% | 0.71x | ❌ | -| `hexbytes_to_0x_hex[0-9]` | 1.551396585047557e-05 | 1.3630300793019073e-05 | 12.14% | 13.82% | 1.14x | ✅ | -| `hexbytes_to_0x_hex[4-byte pattern]` | 4.195234456795008e-05 | 4.012706081221306e-05 | 4.35% | 4.55% | 1.05x | ✅ | -| `hexbytes_to_0x_hex[all byte values]` | 4.211303275401072e-05 | 4.028452591251296e-05 | 4.34% | 4.54% | 1.05x | ✅ | -| `hexbytes_to_0x_hex[alternating 0x00/0xff]` | 2.0800595554670752e-05 | 1.9010172893267305e-05 | 8.61% | 9.42% | 1.09x | ✅ | -| `hexbytes_to_0x_hex[alternating 0xaa/0x55]` | 2.0904581121842868e-05 | 1.9147459039671937e-05 | 8.41% | 9.18% | 1.09x | ✅ | -| `hexbytes_to_0x_hex[ascii sentence]` | 1.885077859672098e-05 | 1.7071625813539214e-05 | 9.44% | 10.42% | 1.10x | ✅ | -| `hexbytes_to_0x_hex[b'']` | 1.026480036137029e-05 | 1.1345847549565756e-05 | -10.53% | -9.53% | 0.90x | ❌ | -| `hexbytes_to_0x_hex[b'\\x00'*32]` | 1.7477926479293212e-05 | 1.583933858505862e-05 | 9.38% | 10.35% | 1.10x | ✅ | -| `hexbytes_to_0x_hex[b'\\x00\\xff\\x00\\xff']` | 1.5048574884238393e-05 | 1.3065242835046563e-05 | 13.18% | 15.18% | 1.15x | ✅ | -| `hexbytes_to_0x_hex[b'\\x01'*100]` | 2.5080113367605668e-05 | 2.2536233916689552e-05 | 10.14% | 11.29% | 1.11x | ✅ | -| `hexbytes_to_0x_hex[b'\\x01'*2048]` | 0.00022120556912250792 | 0.0002211920219665213 | 0.01% | 0.01% | 1.00x | ✅ | -| `hexbytes_to_0x_hex[b'\\x01\\x02\\x03']` | 1.484649658669481e-05 | 1.3091211127426347e-05 | 11.82% | 13.41% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[b'\\x10\\x20\\x30\\x40\\x50']` | 1.5047836277518734e-05 | 1.3107099760095945e-05 | 12.90% | 14.81% | 1.15x | ✅ | -| `hexbytes_to_0x_hex[b'\\x7f'*8]` | 1.5407694127854997e-05 | 1.354045064787356e-05 | 12.12% | 13.79% | 1.14x | ✅ | -| `hexbytes_to_0x_hex[b'\\x80'*8]` | 1.5428943320727377e-05 | 1.3440175575873593e-05 | 12.89% | 14.80% | 1.15x | ✅ | -| `hexbytes_to_0x_hex[b'\\xde\\xad\\xbe\\xef']` | 1.5012446645307307e-05 | 1.313473795929436e-05 | 12.51% | 14.30% | 1.14x | ✅ | -| `hexbytes_to_0x_hex[b'\\xff'*64]` | 2.0806946366311905e-05 | 1.92471000032091e-05 | 7.50% | 8.10% | 1.08x | ✅ | -| `hexbytes_to_0x_hex[b'a'*1024]` | 0.0001223788737133279 | 0.00011830648768577156 | 3.33% | 3.44% | 1.03x | ✅ | -| `hexbytes_to_0x_hex[b'abc']` | 1.5010069965050508e-05 | 1.3101622063792088e-05 | 12.71% | 14.57% | 1.15x | ✅ | -| `hexbytes_to_0x_hex[long alternating]` | 0.00012198009534447016 | 0.00012121568938859308 | 0.63% | 0.63% | 1.01x | ✅ | -| `hexbytes_to_0x_hex[mixed pattern]` | 3.4878635442167046e-05 | 3.308848224624071e-05 | 5.13% | 5.41% | 1.05x | ✅ | -| `hexbytes_to_0x_hex[multiples of 0x10]` | 1.5537679378131247e-05 | 1.3550212089721784e-05 | 12.79% | 14.67% | 1.15x | ✅ | -| `hexbytes_to_0x_hex[palindrome ascii]` | 1.526067072378255e-05 | 1.3441697074053967e-05 | 11.92% | 13.53% | 1.14x | ✅ | -| `hexbytes_to_0x_hex[palindrome numeric]` | 1.4922041049843883e-05 | 1.3376076252462054e-05 | 10.36% | 11.56% | 1.12x | ✅ | -| `hexbytes_to_0x_hex[palindrome]` | 1.6556797581452576e-05 | 1.4670629146908296e-05 | 11.39% | 12.86% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[repeated 0-9]` | 2.5101944937213006e-05 | 2.2453825049654264e-05 | 10.55% | 11.79% | 1.12x | ✅ | -| `hexbytes_to_0x_hex[single 0xff]` | 1.4652719088638188e-05 | 1.2820154930984992e-05 | 12.51% | 14.29% | 1.14x | ✅ | -| `hexbytes_to_0x_hex[single null byte]` | 1.4640124525707886e-05 | 1.2928737904935405e-05 | 11.69% | 13.24% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[two patterns]` | 2.076404064230241e-05 | 1.8906706862571387e-05 | 8.94% | 9.82% | 1.10x | ✅ | +| `hexbytes_getitem_index[-1-0-9]` | 2.4974771827181897e-05 | 2.3489039626820835e-05 | 5.95% | 6.33% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-4-byte pattern]` | 2.5042264261058584e-05 | 2.364848536772021e-05 | 5.57% | 5.89% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-all byte values]` | 2.5137855625638378e-05 | 2.3720033546297786e-05 | 5.64% | 5.98% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-alternating 0x00/0xff]` | 2.5030684153374865e-05 | 2.3552104820489803e-05 | 5.91% | 6.28% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-alternating 0xaa/0x55]` | 2.505620069627172e-05 | 2.3483708569485328e-05 | 6.28% | 6.70% | 1.07x | ✅ | +| `hexbytes_getitem_index[-1-ascii sentence]` | 2.5064513305574524e-05 | 2.3718124057050798e-05 | 5.37% | 5.68% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x00'*32]` | 2.4985265340223425e-05 | 2.3454761228561156e-05 | 6.13% | 6.53% | 1.07x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x00\\xff\\x00\\xff']` | 2.505699557364792e-05 | 2.3524084615638373e-05 | 6.12% | 6.52% | 1.07x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x01'*100]` | 2.506672216969694e-05 | 2.3596224371056686e-05 | 5.87% | 6.23% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x01'*2048]` | 2.497479688223083e-05 | 2.3483547967537782e-05 | 5.97% | 6.35% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x01\\x02\\x03']` | 2.4442670332048083e-05 | 2.3401986597870747e-05 | 4.26% | 4.45% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.5074086215810466e-05 | 2.3598864463180418e-05 | 5.88% | 6.25% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x7f'*8]` | 2.5065014151333793e-05 | 2.3543938923351243e-05 | 6.07% | 6.46% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x80'*8]` | 2.5220519874327197e-05 | 2.37157888911254e-05 | 5.97% | 6.34% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-b'\\xde\\xad\\xbe\\xef']` | 2.504567603742626e-05 | 2.3494605446047307e-05 | 6.19% | 6.60% | 1.07x | ✅ | +| `hexbytes_getitem_index[-1-b'\\xff'*64]` | 2.4932125768517834e-05 | 2.3438983457583956e-05 | 5.99% | 6.37% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-b'a'*1024]` | 2.4882742317005563e-05 | 2.339541785963384e-05 | 5.98% | 6.36% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-b'abc']` | 2.5031112124800094e-05 | 2.3545826504433072e-05 | 5.93% | 6.31% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-long alternating]` | 2.4832978894317234e-05 | 2.3595585601205813e-05 | 4.98% | 5.24% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-mixed pattern]` | 2.4779676951389124e-05 | 2.3612256333453484e-05 | 4.71% | 4.94% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-multiples of 0x10]` | 2.4824238834000748e-05 | 2.3566153141899418e-05 | 5.07% | 5.34% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-palindrome ascii]` | 2.5154203720767808e-05 | 2.3903923703467056e-05 | 4.97% | 5.23% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-palindrome numeric]` | 2.5181425994367855e-05 | 2.39232222505473e-05 | 5.00% | 5.26% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-palindrome]` | 2.4993928272304583e-05 | 2.3538769680617625e-05 | 5.82% | 6.18% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-repeated 0-9]` | 2.5077524352934472e-05 | 2.35907031759849e-05 | 5.93% | 6.30% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-two patterns]` | 2.4949906681915885e-05 | 2.373517911646081e-05 | 4.87% | 5.12% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-0-9]` | 2.3531756124396414e-05 | 2.2741287052293544e-05 | 3.36% | 3.48% | 1.03x | ✅ | +| `hexbytes_getitem_index[0-4-byte pattern]` | 2.3576078835835645e-05 | 2.2679761240140386e-05 | 3.80% | 3.95% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-all byte values]` | 2.3629023700159172e-05 | 2.2722122217288658e-05 | 3.84% | 3.99% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-alternating 0x00/0xff]` | 2.3975276876259966e-05 | 2.2800886374743004e-05 | 4.90% | 5.15% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-alternating 0xaa/0x55]` | 2.3189177823695155e-05 | 2.2679946931536876e-05 | 2.20% | 2.25% | 1.02x | ✅ | +| `hexbytes_getitem_index[0-ascii sentence]` | 2.3624156649738275e-05 | 2.2553473080793245e-05 | 4.53% | 4.75% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-b'\\x00'*32]` | 2.353438258120873e-05 | 2.2734915814411394e-05 | 3.40% | 3.52% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-b'\\x00\\xff\\x00\\xff']` | 2.374878959330058e-05 | 2.2614185246510433e-05 | 4.78% | 5.02% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-b'\\x01'*100]` | 2.41279313863889e-05 | 2.2596522353938602e-05 | 6.35% | 6.78% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-b'\\x01'*2048]` | 2.3554666650036696e-05 | 2.2645970119406046e-05 | 3.86% | 4.01% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-b'\\x01\\x02\\x03']` | 2.3512114840641765e-05 | 2.271148158157297e-05 | 3.41% | 3.53% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-b'\\x10\\x20\\x30\\x40\\x50']` | 2.377904033408723e-05 | 2.2618658803571557e-05 | 4.88% | 5.13% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-b'\\x7f'*8]` | 2.3571377122273238e-05 | 2.2711353447942822e-05 | 3.65% | 3.79% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-b'\\x80'*8]` | 2.3752596990966765e-05 | 2.2615238351887905e-05 | 4.79% | 5.03% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-b'\\xde\\xad\\xbe\\xef']` | 2.3661120894013888e-05 | 2.2695572302769318e-05 | 4.08% | 4.25% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-b'\\xff'*64]` | 2.3429939678251354e-05 | 2.2578077607577794e-05 | 3.64% | 3.77% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-b'a'*1024]` | 2.3586346502094735e-05 | 2.2583989892457297e-05 | 4.25% | 4.44% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-b'abc']` | 2.3596641890355795e-05 | 2.284988144270888e-05 | 3.16% | 3.27% | 1.03x | ✅ | +| `hexbytes_getitem_index[0-long alternating]` | 2.3579629902354034e-05 | 2.272256452013501e-05 | 3.63% | 3.77% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-mixed pattern]` | 2.348886390218501e-05 | 2.26663205816842e-05 | 3.50% | 3.63% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-multiples of 0x10]` | 2.3755756155565336e-05 | 2.2684444549592303e-05 | 4.51% | 4.72% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-palindrome ascii]` | 2.349535370776188e-05 | 2.2770975763136598e-05 | 3.08% | 3.18% | 1.03x | ✅ | +| `hexbytes_getitem_index[0-palindrome numeric]` | 2.337190945216496e-05 | 2.2694451451694404e-05 | 2.90% | 2.99% | 1.03x | ✅ | +| `hexbytes_getitem_index[0-palindrome]` | 2.3599027229104353e-05 | 2.281287201377941e-05 | 3.33% | 3.45% | 1.03x | ✅ | +| `hexbytes_getitem_index[0-repeated 0-9]` | 2.3479737898393928e-05 | 2.2474100883792333e-05 | 4.28% | 4.47% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-single 0xff]` | 2.3556955424328008e-05 | 2.2498143798931113e-05 | 4.49% | 4.71% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-single null byte]` | 2.3544149302085754e-05 | 2.266364270510691e-05 | 3.74% | 3.89% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-two patterns]` | 2.349938523680419e-05 | 2.267407240939456e-05 | 3.51% | 3.64% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-0-9]` | 2.3941628878856478e-05 | 2.238562197061027e-05 | 6.50% | 6.95% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-4-byte pattern]` | 2.3459215480275835e-05 | 2.25035480580949e-05 | 4.07% | 4.25% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-all byte values]` | 2.3692088205424884e-05 | 2.2429812264125767e-05 | 5.33% | 5.63% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-alternating 0x00/0xff]` | 2.3446280066150825e-05 | 2.24697307576066e-05 | 4.17% | 4.35% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-alternating 0xaa/0x55]` | 2.3563639894989885e-05 | 2.242449026545892e-05 | 4.83% | 5.08% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-ascii sentence]` | 2.356930783917189e-05 | 2.255828929172418e-05 | 4.29% | 4.48% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-b'\\x00'*32]` | 2.346190082259289e-05 | 2.2626844176141594e-05 | 3.56% | 3.69% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-b'\\x00\\xff\\x00\\xff']` | 2.362062629767284e-05 | 2.252990877489162e-05 | 4.62% | 4.84% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-b'\\x01'*100]` | 2.3937010492767375e-05 | 2.258784613295552e-05 | 5.64% | 5.97% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-b'\\x01'*2048]` | 2.3646103622346774e-05 | 2.2537096775883214e-05 | 4.69% | 4.92% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-b'\\x01\\x02\\x03']` | 2.348208895580977e-05 | 2.2687027363485923e-05 | 3.39% | 3.50% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3991542947151564e-05 | 2.3337377714610525e-05 | 2.73% | 2.80% | 1.03x | ✅ | +| `hexbytes_getitem_index[1-b'\\x7f'*8]` | 2.3156590400523595e-05 | 2.2520134405915174e-05 | 2.75% | 2.83% | 1.03x | ✅ | +| `hexbytes_getitem_index[1-b'\\x80'*8]` | 2.4008837328638457e-05 | 2.2551398804038836e-05 | 6.07% | 6.46% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-b'\\xde\\xad\\xbe\\xef']` | 2.357539583778391e-05 | 2.2584879369159534e-05 | 4.20% | 4.39% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-b'\\xff'*64]` | 2.3533563567868987e-05 | 2.2618566487134104e-05 | 3.89% | 4.05% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-b'a'*1024]` | 2.3554919018231658e-05 | 2.255088105796229e-05 | 4.26% | 4.45% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-b'abc']` | 2.3492314519807196e-05 | 2.2429311127976137e-05 | 4.52% | 4.74% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-long alternating]` | 2.3914905642871082e-05 | 2.2409783783821288e-05 | 6.29% | 6.72% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-mixed pattern]` | 2.3402988815528228e-05 | 2.2310055566441695e-05 | 4.67% | 4.90% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-multiples of 0x10]` | 2.3488472063617166e-05 | 2.2483522306279873e-05 | 4.28% | 4.47% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-palindrome ascii]` | 2.3571362515272675e-05 | 2.2638198058688688e-05 | 3.96% | 4.12% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-palindrome numeric]` | 2.3684285678268387e-05 | 2.2492235377861063e-05 | 5.03% | 5.30% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-palindrome]` | 2.366675757241078e-05 | 2.2525830985712013e-05 | 4.82% | 5.06% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-repeated 0-9]` | 2.3805169802398606e-05 | 2.245219139330297e-05 | 5.68% | 6.03% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-two patterns]` | 2.351877033672121e-05 | 2.250451786009603e-05 | 4.31% | 4.51% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-0-9]` | 2.38056461531784e-05 | 2.2675536027782405e-05 | 4.75% | 4.98% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-4-byte pattern]` | 2.402414487694682e-05 | 2.255395929782672e-05 | 6.12% | 6.52% | 1.07x | ✅ | +| `hexbytes_getitem_index[2-all byte values]` | 2.379310589411092e-05 | 2.270728452906697e-05 | 4.56% | 4.78% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-alternating 0x00/0xff]` | 2.3678709834624557e-05 | 2.2926074692318642e-05 | 3.18% | 3.28% | 1.03x | ✅ | +| `hexbytes_getitem_index[2-alternating 0xaa/0x55]` | 2.3850792470361628e-05 | 2.271798365996102e-05 | 4.75% | 4.99% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-ascii sentence]` | 2.343255693489763e-05 | 2.26193151602647e-05 | 3.47% | 3.60% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-b'\\x00'*32]` | 2.352765719876344e-05 | 2.2866431282427788e-05 | 2.81% | 2.89% | 1.03x | ✅ | +| `hexbytes_getitem_index[2-b'\\x00\\xff\\x00\\xff']` | 2.376434511538767e-05 | 2.266823973774627e-05 | 4.61% | 4.84% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-b'\\x01'*100]` | 2.374554875181984e-05 | 2.2639413814062238e-05 | 4.66% | 4.89% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-b'\\x01'*2048]` | 2.3587271081151273e-05 | 2.2660862347001356e-05 | 3.93% | 4.09% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-b'\\x01\\x02\\x03']` | 2.3618608694549723e-05 | 2.252422297816767e-05 | 4.63% | 4.86% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3878174196126332e-05 | 2.254063021125863e-05 | 5.60% | 5.93% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-b'\\x7f'*8]` | 2.3745435800092113e-05 | 2.2745217667866628e-05 | 4.21% | 4.40% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-b'\\x80'*8]` | 2.3788169696168914e-05 | 2.3546484888022876e-05 | 1.02% | 1.03% | 1.01x | ✅ | +| `hexbytes_getitem_index[2-b'\\xde\\xad\\xbe\\xef']` | 2.3646154715422308e-05 | 2.2606969852977713e-05 | 4.39% | 4.60% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-b'\\xff'*64]` | 2.3511709488648884e-05 | 2.257585984883315e-05 | 3.98% | 4.15% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-b'a'*1024]` | 2.3340685865710936e-05 | 2.5423726518153615e-05 | -8.92% | -8.19% | 0.92x | ❌ | +| `hexbytes_getitem_index[2-b'abc']` | 2.3175433063217012e-05 | 2.2550647798866564e-05 | 2.70% | 2.77% | 1.03x | ✅ | +| `hexbytes_getitem_index[2-long alternating]` | 2.406417065333271e-05 | 2.2769548104464662e-05 | 5.38% | 5.69% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-mixed pattern]` | 2.381747839094766e-05 | 2.264675801248471e-05 | 4.92% | 5.17% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-multiples of 0x10]` | 2.3924167514143954e-05 | 2.2585441713199425e-05 | 5.60% | 5.93% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-palindrome ascii]` | 2.4276779224433546e-05 | 2.2666776362671148e-05 | 6.63% | 7.10% | 1.07x | ✅ | +| `hexbytes_getitem_index[2-palindrome numeric]` | 2.373319545585192e-05 | 2.2575056855609498e-05 | 4.88% | 5.13% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-palindrome]` | 2.3723200387610405e-05 | 2.2576568080127513e-05 | 4.83% | 5.08% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-repeated 0-9]` | 2.376872653679594e-05 | 2.2603089299927364e-05 | 4.90% | 5.16% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-two patterns]` | 2.401548532433942e-05 | 2.2681371105368242e-05 | 5.56% | 5.88% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-0-9]` | 2.352170183896843e-05 | 2.264768518871492e-05 | 3.72% | 3.86% | 1.04x | ✅ | +| `hexbytes_getitem_index[3-4-byte pattern]` | 2.3868960758809386e-05 | 2.2630745109388206e-05 | 5.19% | 5.47% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-all byte values]` | 2.3787084368097443e-05 | 2.2591931712582734e-05 | 5.02% | 5.29% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-alternating 0x00/0xff]` | 2.3443288876369168e-05 | 2.2621026493206824e-05 | 3.51% | 3.63% | 1.04x | ✅ | +| `hexbytes_getitem_index[3-alternating 0xaa/0x55]` | 2.3633027335032908e-05 | 2.264748181208867e-05 | 4.17% | 4.35% | 1.04x | ✅ | +| `hexbytes_getitem_index[3-ascii sentence]` | 2.359470180751561e-05 | 2.3024799231359857e-05 | 2.42% | 2.48% | 1.02x | ✅ | +| `hexbytes_getitem_index[3-b'\\x00'*32]` | 2.364100012539441e-05 | 2.269375385658395e-05 | 4.01% | 4.17% | 1.04x | ✅ | +| `hexbytes_getitem_index[3-b'\\x00\\xff\\x00\\xff']` | 2.3738466070879168e-05 | 2.2705073010270786e-05 | 4.35% | 4.55% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-b'\\x01'*100]` | 2.3083935534710256e-05 | 2.2562207394486284e-05 | 2.26% | 2.31% | 1.02x | ✅ | +| `hexbytes_getitem_index[3-b'\\x01'*2048]` | 2.3595955767761793e-05 | 2.265158743013335e-05 | 4.00% | 4.17% | 1.04x | ✅ | +| `hexbytes_getitem_index[3-b'\\x10\\x20\\x30\\x40\\x50']` | 2.356127624915128e-05 | 2.255450410187886e-05 | 4.27% | 4.46% | 1.04x | ✅ | +| `hexbytes_getitem_index[3-b'\\x7f'*8]` | 2.3504053908103263e-05 | 2.256094432605327e-05 | 4.01% | 4.18% | 1.04x | ✅ | +| `hexbytes_getitem_index[3-b'\\x80'*8]` | 2.3632465595161414e-05 | 2.2708662892991892e-05 | 3.91% | 4.07% | 1.04x | ✅ | +| `hexbytes_getitem_index[3-b'\\xde\\xad\\xbe\\xef']` | 2.3563574749203147e-05 | 2.2662682119197078e-05 | 3.82% | 3.98% | 1.04x | ✅ | +| `hexbytes_getitem_index[3-b'\\xff'*64]` | 2.3696092529924618e-05 | 2.2739265207561733e-05 | 4.04% | 4.21% | 1.04x | ✅ | +| `hexbytes_getitem_index[3-b'a'*1024]` | 2.3296208823761148e-05 | 2.2652386143788636e-05 | 2.76% | 2.84% | 1.03x | ✅ | +| `hexbytes_getitem_index[3-long alternating]` | 2.3561565001368354e-05 | 2.2674889307580227e-05 | 3.76% | 3.91% | 1.04x | ✅ | +| `hexbytes_getitem_index[3-mixed pattern]` | 2.3172947933503984e-05 | 2.3099970448697076e-05 | 0.31% | 0.32% | 1.00x | ✅ | +| `hexbytes_getitem_index[3-multiples of 0x10]` | 2.3650420659175694e-05 | 2.2677952409556314e-05 | 4.11% | 4.29% | 1.04x | ✅ | +| `hexbytes_getitem_index[3-palindrome ascii]` | 2.3255683873136807e-05 | 2.26055410408182e-05 | 2.80% | 2.88% | 1.03x | ✅ | +| `hexbytes_getitem_index[3-palindrome numeric]` | 2.35395717155596e-05 | 2.2778075907875456e-05 | 3.23% | 3.34% | 1.03x | ✅ | +| `hexbytes_getitem_index[3-palindrome]` | 2.3591208479724788e-05 | 2.261001301667473e-05 | 4.16% | 4.34% | 1.04x | ✅ | +| `hexbytes_getitem_index[3-repeated 0-9]` | 2.388416667117648e-05 | 2.2984125089478068e-05 | 3.77% | 3.92% | 1.04x | ✅ | +| `hexbytes_getitem_index[3-two patterns]` | 2.3575572267200238e-05 | 2.3043466256344212e-05 | 2.26% | 2.31% | 1.02x | ✅ | +| `hexbytes_getitem_index[4-0-9]` | 2.4525176121878088e-05 | 2.262776935211018e-05 | 7.74% | 8.39% | 1.08x | ✅ | +| `hexbytes_getitem_index[4-4-byte pattern]` | 2.3961711040371482e-05 | 2.2830564497549335e-05 | 4.72% | 4.95% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-all byte values]` | 2.3836781520838963e-05 | 2.262661709153705e-05 | 5.08% | 5.35% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-alternating 0x00/0xff]` | 2.3661589646300122e-05 | 2.2725538629943812e-05 | 3.96% | 4.12% | 1.04x | ✅ | +| `hexbytes_getitem_index[4-alternating 0xaa/0x55]` | 2.3589117664615136e-05 | 2.267387154898413e-05 | 3.88% | 4.04% | 1.04x | ✅ | +| `hexbytes_getitem_index[4-ascii sentence]` | 2.3615789050262544e-05 | 2.2752894466531613e-05 | 3.65% | 3.79% | 1.04x | ✅ | +| `hexbytes_getitem_index[4-b'\\x00'*32]` | 2.4003409113837328e-05 | 2.277283561780547e-05 | 5.13% | 5.40% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-b'\\x01'*100]` | 2.3750211963807595e-05 | 2.2549004762433642e-05 | 5.06% | 5.33% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-b'\\x01'*2048]` | 2.3552691811526164e-05 | 2.264343899004806e-05 | 3.86% | 4.02% | 1.04x | ✅ | +| `hexbytes_getitem_index[4-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3582286682078357e-05 | 2.2649426760779614e-05 | 3.96% | 4.12% | 1.04x | ✅ | +| `hexbytes_getitem_index[4-b'\\x7f'*8]` | 2.404657577595068e-05 | 2.263921945158742e-05 | 5.85% | 6.22% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-b'\\x80'*8]` | 2.3598634252889802e-05 | 2.2548374667400764e-05 | 4.45% | 4.66% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-b'\\xff'*64]` | 2.390939727575443e-05 | 2.290618567958284e-05 | 4.20% | 4.38% | 1.04x | ✅ | +| `hexbytes_getitem_index[4-b'a'*1024]` | 2.4196300895821903e-05 | 2.292420762344336e-05 | 5.26% | 5.55% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-long alternating]` | 2.3583930174205246e-05 | 2.2709808222912416e-05 | 3.71% | 3.85% | 1.04x | ✅ | +| `hexbytes_getitem_index[4-mixed pattern]` | 2.3473257249084387e-05 | 2.2862810801200704e-05 | 2.60% | 2.67% | 1.03x | ✅ | +| `hexbytes_getitem_index[4-multiples of 0x10]` | 2.5700675426862197e-05 | 2.2608641714691918e-05 | 12.03% | 13.68% | 1.14x | ✅ | +| `hexbytes_getitem_index[4-palindrome ascii]` | 2.3819243061133266e-05 | 2.262227306005961e-05 | 5.03% | 5.29% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-palindrome numeric]` | 2.400595745917811e-05 | 2.2693251534891668e-05 | 5.47% | 5.78% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-palindrome]` | 2.3850998087098813e-05 | 2.2687174970925252e-05 | 4.88% | 5.13% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-repeated 0-9]` | 2.3641713373327925e-05 | 2.2624656566259083e-05 | 4.30% | 4.50% | 1.04x | ✅ | +| `hexbytes_getitem_index[4-two patterns]` | 2.4070159762165555e-05 | 2.2801634528547795e-05 | 5.27% | 5.56% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-0-9]` | 2.3494772837147023e-05 | 2.2694280613174702e-05 | 3.41% | 3.53% | 1.04x | ✅ | +| `hexbytes_getitem_index[5-4-byte pattern]` | 2.3539414480592368e-05 | 2.2541399345093492e-05 | 4.24% | 4.43% | 1.04x | ✅ | +| `hexbytes_getitem_index[5-all byte values]` | 2.378670351749675e-05 | 2.2720870991412816e-05 | 4.48% | 4.69% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-alternating 0x00/0xff]` | 2.3702340537911896e-05 | 2.276007528074775e-05 | 3.98% | 4.14% | 1.04x | ✅ | +| `hexbytes_getitem_index[5-alternating 0xaa/0x55]` | 2.381644081747811e-05 | 2.2702645826174637e-05 | 4.68% | 4.91% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-ascii sentence]` | 2.371190746725799e-05 | 2.2871870292634872e-05 | 3.54% | 3.67% | 1.04x | ✅ | +| `hexbytes_getitem_index[5-b'\\x00'*32]` | 2.3718511583509918e-05 | 2.2744703308804984e-05 | 4.11% | 4.28% | 1.04x | ✅ | +| `hexbytes_getitem_index[5-b'\\x01'*100]` | 2.3983787632075288e-05 | 2.2541244996386022e-05 | 6.01% | 6.40% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-b'\\x01'*2048]` | 2.3556159738594564e-05 | 2.2700278746338565e-05 | 3.63% | 3.77% | 1.04x | ✅ | +| `hexbytes_getitem_index[5-b'\\x7f'*8]` | 2.3572105646880208e-05 | 2.257896869417136e-05 | 4.21% | 4.40% | 1.04x | ✅ | +| `hexbytes_getitem_index[5-b'\\x80'*8]` | 2.3542898216567608e-05 | 2.266801256491663e-05 | 3.72% | 3.86% | 1.04x | ✅ | +| `hexbytes_getitem_index[5-b'\\xff'*64]` | 2.3780395081746797e-05 | 2.25313282501527e-05 | 5.25% | 5.54% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-b'a'*1024]` | 2.355476349346277e-05 | 2.254798415098508e-05 | 4.27% | 4.47% | 1.04x | ✅ | +| `hexbytes_getitem_index[5-long alternating]` | 2.374057783340221e-05 | 2.277964168459662e-05 | 4.05% | 4.22% | 1.04x | ✅ | +| `hexbytes_getitem_index[5-mixed pattern]` | 2.351085174205443e-05 | 2.2890762876065602e-05 | 2.64% | 2.71% | 1.03x | ✅ | +| `hexbytes_getitem_index[5-multiples of 0x10]` | 2.3661982297913674e-05 | 2.277617709018382e-05 | 3.74% | 3.89% | 1.04x | ✅ | +| `hexbytes_getitem_index[5-palindrome ascii]` | 2.3598774546248065e-05 | 2.262537666056316e-05 | 4.12% | 4.30% | 1.04x | ✅ | +| `hexbytes_getitem_index[5-palindrome]` | 2.3706213826537514e-05 | 2.2602373839631426e-05 | 4.66% | 4.88% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-repeated 0-9]` | 2.388230786492813e-05 | 2.316317916154929e-05 | 3.01% | 3.10% | 1.03x | ✅ | +| `hexbytes_getitem_index[5-two patterns]` | 2.3905057368030064e-05 | 2.2806155293750798e-05 | 4.60% | 4.82% | 1.05x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-0-9]` | 8.1807222862445e-05 | 5.9997229144795717e-05 | 26.66% | 36.35% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-4-byte pattern]` | 8.24249904829631e-05 | 5.920157512010935e-05 | 28.18% | 39.23% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-all byte values]` | 8.28328714937808e-05 | 5.945431886213159e-05 | 28.22% | 39.32% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-alternating 0x00/0xff]` | 8.171498970646728e-05 | 5.955559021882913e-05 | 27.12% | 37.21% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-alternating 0xaa/0x55]` | 8.198374526523301e-05 | 5.970291985826326e-05 | 27.18% | 37.32% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-ascii sentence]` | 8.240834713923165e-05 | 5.963283501876818e-05 | 27.64% | 38.19% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'']` | 7.969795758647011e-05 | 5.615711002807323e-05 | 29.54% | 41.92% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00'*32]` | 8.198877241525693e-05 | 5.9707745320091644e-05 | 27.18% | 37.32% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00\\xff\\x00\\xff']` | 8.17918064407093e-05 | 5.904714668581873e-05 | 27.81% | 38.52% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*100]` | 8.209424241953978e-05 | 5.915423204228146e-05 | 27.94% | 38.78% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*2048]` | 8.172605460607332e-05 | 6.084237191947639e-05 | 25.55% | 34.32% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01\\x02\\x03']` | 8.228801489595033e-05 | 6.0288748536475645e-05 | 26.73% | 36.49% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.29471064853363e-05 | 5.8802073098994486e-05 | 29.11% | 41.06% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x7f'*8]` | 8.230577548053454e-05 | 5.844981281647389e-05 | 28.98% | 40.81% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x80'*8]` | 8.253931084951528e-05 | 5.861747710174186e-05 | 28.98% | 40.81% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\xde\\xad\\xbe\\xef']` | 8.184164990140425e-05 | 5.957237184411576e-05 | 27.21% | 37.38% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\xff'*64]` | 8.198956765488088e-05 | 5.97879290080012e-05 | 27.08% | 37.13% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'a'*1024]` | 8.226046065150269e-05 | 5.9544669848216484e-05 | 27.61% | 38.15% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'abc']` | 8.213643088566404e-05 | 5.93551538421285e-05 | 27.74% | 38.38% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-long alternating]` | 8.192818568827776e-05 | 5.8958645905785875e-05 | 28.04% | 38.96% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-mixed pattern]` | 8.229289210822741e-05 | 5.96561444752423e-05 | 27.51% | 37.95% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-multiples of 0x10]` | 8.248348989492053e-05 | 5.918728431986466e-05 | 28.24% | 39.36% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-palindrome ascii]` | 8.175582323536863e-05 | 6.00967978423715e-05 | 26.49% | 36.04% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-palindrome numeric]` | 8.307541912677158e-05 | 5.940485330270433e-05 | 28.49% | 39.85% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-palindrome]` | 8.181666001052151e-05 | 5.9506292464221775e-05 | 27.27% | 37.49% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-repeated 0-9]` | 8.201873724236362e-05 | 5.989782829369721e-05 | 26.97% | 36.93% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-single 0xff]` | 8.014176984330732e-05 | 5.676721928237733e-05 | 29.17% | 41.18% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-single null byte]` | 8.023517024714095e-05 | 5.64978863033118e-05 | 29.58% | 42.01% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-two patterns]` | 8.258809353715058e-05 | 5.967140330154876e-05 | 27.75% | 38.40% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-0-9]` | 8.320504102969378e-05 | 6.122787136430511e-05 | 26.41% | 35.89% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-4-byte pattern]` | 8.386511329115284e-05 | 6.123064384370873e-05 | 26.99% | 36.97% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-all byte values]` | 8.302496731844309e-05 | 5.985069594733357e-05 | 27.91% | 38.72% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-alternating 0x00/0xff]` | 8.298318365560194e-05 | 6.121100322060631e-05 | 26.24% | 35.57% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-alternating 0xaa/0x55]` | 8.203895759292778e-05 | 6.141442517776746e-05 | 25.14% | 33.58% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-ascii sentence]` | 8.272887726066396e-05 | 6.050399462428287e-05 | 26.86% | 36.73% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'']` | 8.16214827041035e-05 | 5.6771679112410643e-05 | 30.45% | 43.77% | 1.44x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x00'*32]` | 8.252451973077308e-05 | 5.9740151142291635e-05 | 27.61% | 38.14% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x00\\xff\\x00\\xff']` | 8.283976336311851e-05 | 6.04650075915595e-05 | 27.01% | 37.00% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*100]` | 8.294582069825671e-05 | 6.10532678095884e-05 | 26.39% | 35.86% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*2048]` | 8.270162740920786e-05 | 6.184498455353447e-05 | 25.22% | 33.72% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x01\\x02\\x03']` | 8.272839361042966e-05 | 6.0829623135060095e-05 | 26.47% | 36.00% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.292871643170944e-05 | 6.096480926018756e-05 | 26.49% | 36.03% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x7f'*8]` | 8.286527538676402e-05 | 6.169189214865541e-05 | 25.55% | 34.32% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x80'*8]` | 8.31859128628393e-05 | 6.166477882490589e-05 | 25.87% | 34.90% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\xde\\xad\\xbe\\xef']` | 8.287551448522554e-05 | 5.9906497303248574e-05 | 27.72% | 38.34% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\xff'*64]` | 8.255697961443967e-05 | 6.0019474513974e-05 | 27.30% | 37.55% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'a'*1024]` | 8.245024547542677e-05 | 6.027867157614011e-05 | 26.89% | 36.78% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'abc']` | 8.368583503819143e-05 | 5.961465755596654e-05 | 28.76% | 40.38% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-long alternating]` | 8.295548379642589e-05 | 6.013928916629497e-05 | 27.50% | 37.94% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-mixed pattern]` | 8.367935308764602e-05 | 6.117696927903594e-05 | 26.89% | 36.78% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-multiples of 0x10]` | 8.29518578789461e-05 | 6.114044845752947e-05 | 26.29% | 35.67% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-palindrome ascii]` | 8.31271907762547e-05 | 6.001667424137732e-05 | 27.80% | 38.51% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-palindrome numeric]` | 8.321324121600121e-05 | 6.152099074211855e-05 | 26.07% | 35.26% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-palindrome]` | 8.311192821615457e-05 | 6.100328136925232e-05 | 26.60% | 36.24% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-repeated 0-9]` | 8.329632569915867e-05 | 6.092306652066112e-05 | 26.86% | 36.72% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-single 0xff]` | 8.196026160257089e-05 | 5.915536566246934e-05 | 27.82% | 38.55% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-single null byte]` | 8.22201035343253e-05 | 5.8548341746049254e-05 | 28.79% | 40.43% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-two patterns]` | 8.232190814814828e-05 | 6.145932910340696e-05 | 25.34% | 33.95% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-0-9]` | 8.258868010255385e-05 | 6.088088283508371e-05 | 26.28% | 35.66% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-4-byte pattern]` | 8.277245663970874e-05 | 6.0985625647752965e-05 | 26.32% | 35.72% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-all byte values]` | 8.267570971055513e-05 | 6.02826868754816e-05 | 27.09% | 37.15% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-alternating 0x00/0xff]` | 8.201236396290578e-05 | 6.0641328409378736e-05 | 26.06% | 35.24% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-alternating 0xaa/0x55]` | 8.242143073396986e-05 | 6.096030701591221e-05 | 26.04% | 35.21% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-ascii sentence]` | 8.29842379128199e-05 | 6.088649241862836e-05 | 26.63% | 36.29% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'']` | 8.142580388521194e-05 | 5.8121624367200514e-05 | 28.62% | 40.10% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x00'*32]` | 8.289277337523963e-05 | 6.050633533544789e-05 | 27.01% | 37.00% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x00\\xff\\x00\\xff']` | 8.28780819384874e-05 | 6.123786576120766e-05 | 26.11% | 35.34% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*100]` | 8.342995634794507e-05 | 6.132454888673123e-05 | 26.50% | 36.05% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*2048]` | 8.22942738663925e-05 | 6.074724812180931e-05 | 26.18% | 35.47% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x01\\x02\\x03']` | 8.785850971017545e-05 | 6.0851420685632994e-05 | 30.74% | 44.38% | 1.44x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.237011906797889e-05 | 6.080076536318189e-05 | 26.19% | 35.48% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x7f'*8]` | 8.304288403907543e-05 | 6.087296798736079e-05 | 26.70% | 36.42% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x80'*8]` | 8.201738659781717e-05 | 5.9597350452819365e-05 | 27.34% | 37.62% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\xde\\xad\\xbe\\xef']` | 8.277638928329341e-05 | 6.122039053467858e-05 | 26.04% | 35.21% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\xff'*64]` | 8.316040604999328e-05 | 6.075082356484656e-05 | 26.95% | 36.89% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'a'*1024]` | 8.293158447622718e-05 | 6.104704910009789e-05 | 26.39% | 35.85% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'abc']` | 8.28772422355235e-05 | 6.126042223497819e-05 | 26.08% | 35.29% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-long alternating]` | 8.236114128629583e-05 | 6.070609849246297e-05 | 26.29% | 35.67% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-mixed pattern]` | 8.293711693275335e-05 | 6.063671806789155e-05 | 26.89% | 36.78% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-multiples of 0x10]` | 8.246577336615295e-05 | 6.12691881168452e-05 | 25.70% | 34.60% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-palindrome ascii]` | 8.224864790387141e-05 | 5.996223593900379e-05 | 27.10% | 37.17% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-palindrome numeric]` | 8.224016008737558e-05 | 6.09850875434254e-05 | 25.85% | 34.85% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-palindrome]` | 8.342185923854244e-05 | 6.111968456535099e-05 | 26.73% | 36.49% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-repeated 0-9]` | 8.302850608223495e-05 | 6.059758148631242e-05 | 27.02% | 37.02% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-single 0xff]` | 8.043169036425513e-05 | 5.7865530594262465e-05 | 28.06% | 39.00% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-single null byte]` | 8.015650566616349e-05 | 5.710166765296032e-05 | 28.76% | 40.38% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-two patterns]` | 8.457282133596841e-05 | 5.97616438055746e-05 | 29.34% | 41.52% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-0-9]` | 8.203658328402279e-05 | 5.94270381270672e-05 | 27.56% | 38.05% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-4-byte pattern]` | 8.29050258306599e-05 | 6.144798546843747e-05 | 25.88% | 34.92% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-all byte values]` | 8.400912749853867e-05 | 6.043062421078436e-05 | 28.07% | 39.02% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-alternating 0x00/0xff]` | 8.175442450887898e-05 | 6.064415729453917e-05 | 25.82% | 34.81% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-alternating 0xaa/0x55]` | 8.155910143591384e-05 | 6.021827437330682e-05 | 26.17% | 35.44% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-ascii sentence]` | 8.21928546759113e-05 | 6.023535284823682e-05 | 26.71% | 36.45% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'']` | 7.902845335250642e-05 | 5.6433174885907784e-05 | 28.59% | 40.04% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x00'*32]` | 8.220081831219888e-05 | 5.9618531988966806e-05 | 27.47% | 37.88% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x00\\xff\\x00\\xff']` | 8.204873600488273e-05 | 5.928874043575832e-05 | 27.74% | 38.39% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*100]` | 8.301904613657263e-05 | 6.0707700604737385e-05 | 26.87% | 36.75% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*2048]` | 0.0001028450807974983 | 7.734653058149073e-05 | 24.79% | 32.97% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x01\\x02\\x03']` | 7.913357391067161e-05 | 5.803811356674177e-05 | 26.66% | 36.35% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.113912022820907e-05 | 6.01611375876894e-05 | 25.85% | 34.87% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x7f'*8]` | 8.189697957093498e-05 | 6.016563712301712e-05 | 26.53% | 36.12% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x80'*8]` | 8.223554533126398e-05 | 6.0642442844547924e-05 | 26.26% | 35.61% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\xde\\xad\\xbe\\xef']` | 8.100110586110586e-05 | 6.040496717309101e-05 | 25.43% | 34.10% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\xff'*64]` | 8.276619288987653e-05 | 5.990412975134792e-05 | 27.62% | 38.16% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'a'*1024]` | 9.9628407530254e-05 | 7.427082725696609e-05 | 25.45% | 34.14% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'abc']` | 7.958902295568831e-05 | 5.762582377234449e-05 | 27.60% | 38.11% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-long alternating]` | 9.817604565083925e-05 | 7.205372688084796e-05 | 26.61% | 36.25% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-mixed pattern]` | 8.268140690101945e-05 | 6.048683274366489e-05 | 26.84% | 36.69% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-multiples of 0x10]` | 8.180102919406123e-05 | 6.016158652904973e-05 | 26.45% | 35.97% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-palindrome ascii]` | 8.116429355680348e-05 | 6.020779686382415e-05 | 25.82% | 34.81% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-palindrome numeric]` | 8.240387468311022e-05 | 6.021643443798017e-05 | 26.93% | 36.85% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-palindrome]` | 8.146512842255711e-05 | 6.0604230841119465e-05 | 25.61% | 34.42% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-repeated 0-9]` | 8.196749554932285e-05 | 6.027619760848659e-05 | 26.46% | 35.99% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-single 0xff]` | 7.909181873562078e-05 | 5.732704480460111e-05 | 27.52% | 37.97% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-single null byte]` | 7.888801554615764e-05 | 5.7596226580172724e-05 | 26.99% | 36.97% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-two patterns]` | 8.189265495283023e-05 | 5.9413997318123534e-05 | 27.45% | 37.83% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-0-9]` | 7.9152973530276e-05 | 5.969624430248428e-05 | 24.58% | 32.59% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-4-byte pattern]` | 8.18593062971767e-05 | 5.913166823805286e-05 | 27.76% | 38.44% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-all byte values]` | 8.208000934187286e-05 | 6.035494441709009e-05 | 26.47% | 36.00% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-alternating 0x00/0xff]` | 8.123016792000633e-05 | 5.8129192176410106e-05 | 28.44% | 39.74% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-alternating 0xaa/0x55]` | 8.021587733150122e-05 | 5.905375380211634e-05 | 26.38% | 35.84% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-ascii sentence]` | 8.11784417472778e-05 | 5.8444388936553094e-05 | 28.01% | 38.90% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'']` | 7.728551451728731e-05 | 5.531194321309669e-05 | 28.43% | 39.73% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x00'*32]` | 8.088997614324134e-05 | 5.956166112943284e-05 | 26.37% | 35.81% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x00\\xff\\x00\\xff']` | 8.118982444830399e-05 | 5.85445823673635e-05 | 27.89% | 38.68% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*100]` | 8.134790412224398e-05 | 5.889806324885278e-05 | 27.60% | 38.12% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*2048]` | 0.00010385878998054752 | 7.925633258559273e-05 | 23.69% | 31.04% | 1.31x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x01\\x02\\x03']` | 8.144931092152343e-05 | 5.896924712696603e-05 | 27.60% | 38.12% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.128890928782362e-05 | 5.894104014551262e-05 | 27.49% | 37.92% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x7f'*8]` | 8.124802631170336e-05 | 5.848885807476847e-05 | 28.01% | 38.91% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x80'*8]` | 8.094466198643525e-05 | 5.8836590801745915e-05 | 27.31% | 37.58% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\xde\\xad\\xbe\\xef']` | 8.153681271141924e-05 | 5.9113138530114735e-05 | 27.50% | 37.93% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\xff'*64]` | 8.409464076440318e-05 | 5.858039621103465e-05 | 30.34% | 43.55% | 1.44x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'a'*1024]` | 9.760208603052784e-05 | 6.966693940122302e-05 | 28.62% | 40.10% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'abc']` | 8.067368753605621e-05 | 5.85494093620054e-05 | 27.42% | 37.79% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-long alternating]` | 9.775082075122012e-05 | 7.343030965253507e-05 | 24.88% | 33.12% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-mixed pattern]` | 8.31031816136865e-05 | 5.990878133386008e-05 | 27.91% | 38.72% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-multiples of 0x10]` | 8.059508797707632e-05 | 5.888164899676408e-05 | 26.94% | 36.88% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-palindrome ascii]` | 8.007276574210268e-05 | 5.8767365721377277e-05 | 26.61% | 36.25% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-palindrome numeric]` | 7.996746130188414e-05 | 5.9475462797985856e-05 | 25.63% | 34.45% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-palindrome]` | 8.118084941671731e-05 | 5.829913009371328e-05 | 28.19% | 39.25% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-repeated 0-9]` | 8.177320476749755e-05 | 6.0115834146295225e-05 | 26.48% | 36.03% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-single 0xff]` | 7.84264983426921e-05 | 5.55718018044726e-05 | 29.14% | 41.13% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-single null byte]` | 7.871906521638573e-05 | 5.5951169572966895e-05 | 28.92% | 40.69% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-two patterns]` | 8.149280297410073e-05 | 5.946231747297086e-05 | 27.03% | 37.05% | 1.37x | ✅ | +| `hexbytes_new['']` | 7.148950182357841e-05 | 3.650197789704897e-05 | 48.94% | 95.85% | 1.96x | ✅ | +| `hexbytes_new['0x'+'00'*64]` | 9.358483769926962e-05 | 4.9843395498548066e-05 | 46.74% | 87.76% | 1.88x | ✅ | +| `hexbytes_new['0x'+'a'*128]` | 9.189749487968337e-05 | 4.982670872027036e-05 | 45.78% | 84.43% | 1.84x | ✅ | +| `hexbytes_new['0x'+'ff'*32]` | 8.832906475928902e-05 | 4.69525406732175e-05 | 46.84% | 88.12% | 1.88x | ✅ | +| `hexbytes_new['0x']` | 7.676769172137512e-05 | 3.816998188823712e-05 | 50.28% | 101.12% | 2.01x | ✅ | +| `hexbytes_new['0x1234']` | 8.471796234250887e-05 | 4.6204161032186073e-05 | 45.46% | 83.36% | 1.83x | ✅ | +| `hexbytes_new['0xCAFEBABE']` | 8.533961416626809e-05 | 4.477525304033944e-05 | 47.53% | 90.60% | 1.91x | ✅ | +| `hexbytes_new['0xabcdef']` | 8.503679950467101e-05 | 4.4752842991948403e-05 | 47.37% | 90.01% | 1.90x | ✅ | +| `hexbytes_new['0xdeadbeef']` | 8.534749706339073e-05 | 4.576765110275924e-05 | 46.37% | 86.48% | 1.86x | ✅ | +| `hexbytes_new['abc']` | 8.129709627774969e-05 | 4.7994103541239996e-05 | 40.96% | 69.39% | 1.69x | ✅ | +| `hexbytes_new['deadbeef']` | 7.638385932762877e-05 | 4.158883177031625e-05 | 45.55% | 83.66% | 1.84x | ✅ | +| `hexbytes_new[0-9]` | 4.289016112920993e-05 | 2.5647795783027006e-05 | 40.20% | 67.23% | 1.67x | ✅ | +| `hexbytes_new[0]` | 0.00012093895886853503 | 6.021180310364426e-05 | 50.21% | 100.86% | 2.01x | ✅ | +| `hexbytes_new[123456]` | 0.0001260200250815464 | 6.451711012853436e-05 | 48.80% | 95.33% | 1.95x | ✅ | +| `hexbytes_new[2**16]` | 0.00012559709199321813 | 6.500539311057827e-05 | 48.24% | 93.21% | 1.93x | ✅ | +| `hexbytes_new[2**256-1]` | 0.00013068302840459599 | 7.284482793926838e-05 | 44.26% | 79.40% | 1.79x | ✅ | +| `hexbytes_new[2**32]` | 0.0001281273320013475 | 6.943948900720488e-05 | 45.80% | 84.52% | 1.85x | ✅ | +| `hexbytes_new[2**64]` | 0.00013194520188788576 | 7.067452403086369e-05 | 46.44% | 86.69% | 1.87x | ✅ | +| `hexbytes_new[2**8]` | 0.00012561912582057463 | 6.274947537486014e-05 | 50.05% | 100.19% | 2.00x | ✅ | +| `hexbytes_new[4-byte pattern]` | 4.462450768751657e-05 | 2.6735683562009473e-05 | 40.09% | 66.91% | 1.67x | ✅ | +| `hexbytes_new[False]` | 6.0366210805303116e-05 | 2.7043188394343984e-05 | 55.20% | 123.22% | 2.23x | ✅ | +| `hexbytes_new[True]` | 6.017522541325868e-05 | 2.703932500996497e-05 | 55.07% | 122.55% | 2.23x | ✅ | +| `hexbytes_new[all byte values]` | 4.47246921253948e-05 | 2.6815909234065835e-05 | 40.04% | 66.78% | 1.67x | ✅ | +| `hexbytes_new[alternating 0x00/0xff]` | 4.355576031028297e-05 | 2.6621259983211745e-05 | 38.88% | 63.61% | 1.64x | ✅ | +| `hexbytes_new[alternating 0xaa/0x55]` | 4.3841356212329594e-05 | 2.6572458576985276e-05 | 39.39% | 64.99% | 1.65x | ✅ | +| `hexbytes_new[ascii sentence]` | 4.391945895007535e-05 | 2.594023706585904e-05 | 40.94% | 69.31% | 1.69x | ✅ | +| `hexbytes_new[b'']` | 4.327434264631157e-05 | 2.5416582317799044e-05 | 41.27% | 70.26% | 1.70x | ✅ | +| `hexbytes_new[b'\\x00'*32]` | 4.423827706476327e-05 | 2.576889708019414e-05 | 41.75% | 71.67% | 1.72x | ✅ | +| `hexbytes_new[b'\\x00\\xff\\x00\\xff']` | 4.320832087223283e-05 | 2.5880276633467055e-05 | 40.10% | 66.95% | 1.67x | ✅ | +| `hexbytes_new[b'\\x01'*100]` | 4.397156910626475e-05 | 2.642647733478491e-05 | 39.90% | 66.39% | 1.66x | ✅ | +| `hexbytes_new[b'\\x01'*2048]` | 5.607355055341031e-05 | 3.764157976420107e-05 | 32.87% | 48.97% | 1.49x | ✅ | +| `hexbytes_new[b'\\x01\\x02\\x03']` | 4.3018929819123396e-05 | 2.5934238600257064e-05 | 39.71% | 65.88% | 1.66x | ✅ | +| `hexbytes_new[b'\\x10\\x20\\x30\\x40\\x50']` | 4.3334456259308725e-05 | 2.5746975035217327e-05 | 40.59% | 68.31% | 1.68x | ✅ | +| `hexbytes_new[b'\\x7f'*8]` | 4.2641561860162495e-05 | 2.589991806898433e-05 | 39.26% | 64.64% | 1.65x | ✅ | +| `hexbytes_new[b'\\x80'*8]` | 4.269074874028573e-05 | 2.577659927523718e-05 | 39.62% | 65.62% | 1.66x | ✅ | +| `hexbytes_new[b'\\xde\\xad\\xbe\\xef']` | 4.318912308061793e-05 | 2.582846617434561e-05 | 40.20% | 67.22% | 1.67x | ✅ | +| `hexbytes_new[b'\\xff'*64]` | 4.417367688035411e-05 | 2.6447417936434043e-05 | 40.13% | 67.02% | 1.67x | ✅ | +| `hexbytes_new[b'a'*1024]` | 5.0931310580290575e-05 | 3.307112372235356e-05 | 35.07% | 54.01% | 1.54x | ✅ | +| `hexbytes_new[b'abc']` | 4.236298152764865e-05 | 2.5832415460961843e-05 | 39.02% | 63.99% | 1.64x | ✅ | +| `hexbytes_new[bytearray(0-9)]` | 7.045871208886052e-05 | 3.683549899608564e-05 | 47.72% | 91.28% | 1.91x | ✅ | +| `hexbytes_new[bytearray(4-byte pattern)]` | 7.166523729739957e-05 | 3.844677763998921e-05 | 46.35% | 86.40% | 1.86x | ✅ | +| `hexbytes_new[bytearray(all byte values)]` | 7.098564592167361e-05 | 3.8472049136010257e-05 | 45.80% | 84.51% | 1.85x | ✅ | +| `hexbytes_new[bytearray(alternating 0x00/0xff)]` | 6.940366444420513e-05 | 3.800467300395006e-05 | 45.24% | 82.62% | 1.83x | ✅ | +| `hexbytes_new[bytearray(alternating 0xaa/0x55)]` | 6.966829897446534e-05 | 3.763963624726345e-05 | 45.97% | 85.09% | 1.85x | ✅ | +| `hexbytes_new[bytearray(ascii sentence)]` | 6.97869359827139e-05 | 3.71550873489367e-05 | 46.76% | 87.83% | 1.88x | ✅ | +| `hexbytes_new[bytearray(b'')]` | 6.780604549383803e-05 | 3.6499190990747486e-05 | 46.17% | 85.77% | 1.86x | ✅ | +| `hexbytes_new[bytearray(b'\\x00'*32)]` | 6.992749850064798e-05 | 3.757131369904655e-05 | 46.27% | 86.12% | 1.86x | ✅ | +| `hexbytes_new[bytearray(b'\\x00\\xff\\x00\\xff')]` | 6.887641771388022e-05 | 3.7090221988645774e-05 | 46.15% | 85.70% | 1.86x | ✅ | +| `hexbytes_new[bytearray(b'\\x01'*100)]` | 6.927264757993604e-05 | 3.795827736361415e-05 | 45.20% | 82.50% | 1.82x | ✅ | +| `hexbytes_new[bytearray(b'\\x01'*2048)]` | 9.114776847639032e-05 | 5.60072029435165e-05 | 38.55% | 62.74% | 1.63x | ✅ | +| `hexbytes_new[bytearray(b'\\x01\\x02\\x03')]` | 6.922256197638075e-05 | 3.80530813998411e-05 | 45.03% | 81.91% | 1.82x | ✅ | +| `hexbytes_new[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 6.994507118533474e-05 | 3.756646216840679e-05 | 46.29% | 86.19% | 1.86x | ✅ | +| `hexbytes_new[bytearray(b'\\x7f'*8)]` | 6.94542553162907e-05 | 3.688475619873286e-05 | 46.89% | 88.30% | 1.88x | ✅ | +| `hexbytes_new[bytearray(b'\\x80'*8)]` | 6.797863074947109e-05 | 3.879106146026928e-05 | 42.94% | 75.24% | 1.75x | ✅ | +| `hexbytes_new[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 6.961445822131029e-05 | 3.769910501750878e-05 | 45.85% | 84.66% | 1.85x | ✅ | +| `hexbytes_new[bytearray(b'\\xff'*64)]` | 7.029988383586764e-05 | 3.775147892337086e-05 | 46.30% | 86.22% | 1.86x | ✅ | +| `hexbytes_new[bytearray(b'a'*1024)]` | 8.387260367202745e-05 | 5.0149086135850755e-05 | 40.21% | 67.25% | 1.67x | ✅ | +| `hexbytes_new[bytearray(b'abc')]` | 6.850292111778162e-05 | 3.798622341342398e-05 | 44.55% | 80.34% | 1.80x | ✅ | +| `hexbytes_new[bytearray(long alternating)]` | 8.488076324864742e-05 | 4.8865551231413156e-05 | 42.43% | 73.70% | 1.74x | ✅ | +| `hexbytes_new[bytearray(mixed pattern)]` | 6.978112002237504e-05 | 3.840300524136304e-05 | 44.97% | 81.71% | 1.82x | ✅ | +| `hexbytes_new[bytearray(multiples of 0x10)]` | 6.896242173837826e-05 | 3.707783368484466e-05 | 46.23% | 85.99% | 1.86x | ✅ | +| `hexbytes_new[bytearray(palindrome ascii)]` | 6.986721939549855e-05 | 3.770852082548275e-05 | 46.03% | 85.28% | 1.85x | ✅ | +| `hexbytes_new[bytearray(palindrome numeric)]` | 6.997370716813158e-05 | 3.7849418040369834e-05 | 45.91% | 84.87% | 1.85x | ✅ | +| `hexbytes_new[bytearray(palindrome)]` | 6.914011142535209e-05 | 3.773540019011639e-05 | 45.42% | 83.22% | 1.83x | ✅ | +| `hexbytes_new[bytearray(repeated 0-9)]` | 7.00657073383709e-05 | 3.831093936271626e-05 | 45.32% | 82.89% | 1.83x | ✅ | +| `hexbytes_new[bytearray(single 0xff)]` | 6.98841381596689e-05 | 3.7566400220737145e-05 | 46.24% | 86.03% | 1.86x | ✅ | +| `hexbytes_new[bytearray(single null byte)]` | 6.924880578799991e-05 | 3.767532550309247e-05 | 45.59% | 83.80% | 1.84x | ✅ | +| `hexbytes_new[bytearray(two patterns)]` | 6.947620547303888e-05 | 3.748011770995262e-05 | 46.05% | 85.37% | 1.85x | ✅ | +| `hexbytes_new[long alternating]` | 5.1097519242649246e-05 | 3.345319756360052e-05 | 34.53% | 52.74% | 1.53x | ✅ | +| `hexbytes_new[memoryview(0-9)]` | 8.343221614032439e-05 | 4.36590986728306e-05 | 47.67% | 91.10% | 1.91x | ✅ | +| `hexbytes_new[memoryview(4-byte pattern)]` | 8.285066041253311e-05 | 4.40799115675712e-05 | 46.80% | 87.96% | 1.88x | ✅ | +| `hexbytes_new[memoryview(all byte values)]` | 8.494278891791339e-05 | 4.459505322662305e-05 | 47.50% | 90.48% | 1.90x | ✅ | +| `hexbytes_new[memoryview(alternating 0x00/0xff)]` | 8.388395003962605e-05 | 4.308938878629255e-05 | 48.63% | 94.67% | 1.95x | ✅ | +| `hexbytes_new[memoryview(alternating 0xaa/0x55)]` | 8.391858533827448e-05 | 4.3179926800531924e-05 | 48.55% | 94.35% | 1.94x | ✅ | +| `hexbytes_new[memoryview(ascii sentence)]` | 8.408382146868732e-05 | 4.3468303488406014e-05 | 48.30% | 93.44% | 1.93x | ✅ | +| `hexbytes_new[memoryview(b'')]` | 8.180991201097388e-05 | 3.9934110126305814e-05 | 51.19% | 104.86% | 2.05x | ✅ | +| `hexbytes_new[memoryview(b'\\x00'*32)]` | 8.375462141026185e-05 | 4.312408647695375e-05 | 48.51% | 94.22% | 1.94x | ✅ | +| `hexbytes_new[memoryview(b'\\x00\\xff\\x00\\xff')]` | 8.339169067440344e-05 | 4.309045834321292e-05 | 48.33% | 93.53% | 1.94x | ✅ | +| `hexbytes_new[memoryview(b'\\x01'*100)]` | 8.548323533155023e-05 | 4.375384037030436e-05 | 48.82% | 95.37% | 1.95x | ✅ | +| `hexbytes_new[memoryview(b'\\x01'*2048)]` | 0.00010344784394316022 | 6.33326107820724e-05 | 38.78% | 63.34% | 1.63x | ✅ | +| `hexbytes_new[memoryview(b'\\x01\\x02\\x03')]` | 8.392134048613179e-05 | 4.320388950882725e-05 | 48.52% | 94.24% | 1.94x | ✅ | +| `hexbytes_new[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 8.309189839714384e-05 | 4.302419475116532e-05 | 48.22% | 93.13% | 1.93x | ✅ | +| `hexbytes_new[memoryview(b'\\x7f'*8)]` | 8.377004131940622e-05 | 4.352522102160985e-05 | 48.04% | 92.46% | 1.92x | ✅ | +| `hexbytes_new[memoryview(b'\\x80'*8)]` | 8.29842111926247e-05 | 4.3681221504718204e-05 | 47.36% | 89.98% | 1.90x | ✅ | +| `hexbytes_new[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 8.333172503946815e-05 | 4.330861835366188e-05 | 48.03% | 92.41% | 1.92x | ✅ | +| `hexbytes_new[memoryview(b'\\xff'*64)]` | 8.378417060732439e-05 | 4.320168562001813e-05 | 48.44% | 93.94% | 1.94x | ✅ | +| `hexbytes_new[memoryview(b'a'*1024)]` | 9.857278428497213e-05 | 5.705425636983039e-05 | 42.12% | 72.77% | 1.73x | ✅ | +| `hexbytes_new[memoryview(b'abc')]` | 8.4425066104159e-05 | 4.304196606015389e-05 | 49.02% | 96.15% | 1.96x | ✅ | +| `hexbytes_new[memoryview(long alternating)]` | 9.924816176267955e-05 | 5.740402688889272e-05 | 42.16% | 72.89% | 1.73x | ✅ | +| `hexbytes_new[memoryview(mixed pattern)]` | 8.435678032132668e-05 | 4.363051067851422e-05 | 48.28% | 93.34% | 1.93x | ✅ | +| `hexbytes_new[memoryview(multiples of 0x10)]` | 8.354137184065266e-05 | 4.3768414041803676e-05 | 47.61% | 90.87% | 1.91x | ✅ | +| `hexbytes_new[memoryview(palindrome ascii)]` | 8.331868203055655e-05 | 4.3396009563477474e-05 | 47.92% | 92.00% | 1.92x | ✅ | +| `hexbytes_new[memoryview(palindrome numeric)]` | 8.397547948203961e-05 | 4.3399830026839546e-05 | 48.32% | 93.49% | 1.93x | ✅ | +| `hexbytes_new[memoryview(palindrome)]` | 8.338533538497878e-05 | 4.349954036952347e-05 | 47.83% | 91.69% | 1.92x | ✅ | +| `hexbytes_new[memoryview(repeated 0-9)]` | 8.582737730877845e-05 | 4.413480106695719e-05 | 48.58% | 94.47% | 1.94x | ✅ | +| `hexbytes_new[memoryview(single 0xff)]` | 8.46231529023384e-05 | 4.30952027793332e-05 | 49.07% | 96.36% | 1.96x | ✅ | +| `hexbytes_new[memoryview(single null byte)]` | 8.405009030576114e-05 | 4.271293534766858e-05 | 49.18% | 96.78% | 1.97x | ✅ | +| `hexbytes_new[memoryview(two patterns)]` | 8.50920724648015e-05 | 4.33449178554612e-05 | 49.06% | 96.31% | 1.96x | ✅ | +| `hexbytes_new[mixed pattern]` | 4.427149513057917e-05 | 2.6609164969296743e-05 | 39.90% | 66.38% | 1.66x | ✅ | +| `hexbytes_new[multiples of 0x10]` | 4.258011632578378e-05 | 2.575039001995724e-05 | 39.52% | 65.36% | 1.65x | ✅ | +| `hexbytes_new[palindrome ascii]` | 4.3544252595990946e-05 | 2.5833839605496694e-05 | 40.67% | 68.56% | 1.69x | ✅ | +| `hexbytes_new[palindrome numeric]` | 4.337033624368194e-05 | 2.5953687172624074e-05 | 40.16% | 67.11% | 1.67x | ✅ | +| `hexbytes_new[palindrome]` | 4.274955952415865e-05 | 2.597662513603741e-05 | 39.24% | 64.57% | 1.65x | ✅ | +| `hexbytes_new[repeated 0-9]` | 4.4081580309151495e-05 | 2.655182822062712e-05 | 39.77% | 66.02% | 1.66x | ✅ | +| `hexbytes_new[single 0xff]` | 4.292112810721459e-05 | 2.5521212015400887e-05 | 40.54% | 68.18% | 1.68x | ✅ | +| `hexbytes_new[single null byte]` | 4.304494697523589e-05 | 2.5548954915146624e-05 | 40.65% | 68.48% | 1.68x | ✅ | +| `hexbytes_new[two patterns]` | 4.404407819320639e-05 | 2.669610311409445e-05 | 39.39% | 64.98% | 1.65x | ✅ | +| `hexbytes_repr[0-9]` | 2.9588213073828735e-05 | 1.4621829176395931e-05 | 50.58% | 102.36% | 2.02x | ✅ | +| `hexbytes_repr[4-byte pattern]` | 0.00012441522074825744 | 4.224375210193357e-05 | 66.05% | 194.52% | 2.95x | ✅ | +| `hexbytes_repr[all byte values]` | 0.0001243877588668308 | 4.2269285901795665e-05 | 66.02% | 194.27% | 2.94x | ✅ | +| `hexbytes_repr[alternating 0x00/0xff]` | 5.046478020246737e-05 | 2.0218238392069667e-05 | 59.94% | 149.60% | 2.50x | ✅ | +| `hexbytes_repr[alternating 0xaa/0x55]` | 4.982250514120161e-05 | 2.0528921799957834e-05 | 58.80% | 142.69% | 2.43x | ✅ | +| `hexbytes_repr[ascii sentence]` | 4.237967126024896e-05 | 1.8434924593134785e-05 | 56.50% | 129.89% | 2.30x | ✅ | +| `hexbytes_repr[b'']` | 2.1208347571021193e-05 | 1.2373379567997006e-05 | 41.66% | 71.40% | 1.71x | ✅ | +| `hexbytes_repr[b'\\x00'*32]` | 3.788374564663557e-05 | 1.713585504482458e-05 | 54.77% | 121.08% | 2.21x | ✅ | +| `hexbytes_repr[b'\\x00\\xff\\x00\\xff']` | 2.674949471141985e-05 | 1.4370969620486268e-05 | 46.28% | 86.14% | 1.86x | ✅ | +| `hexbytes_repr[b'\\x01'*100]` | 6.315730528153836e-05 | 2.42373472897257e-05 | 61.62% | 160.58% | 2.61x | ✅ | +| `hexbytes_repr[b'\\x01'*2048]` | 0.0008080169775453316 | 0.00023417376367213734 | 71.02% | 245.05% | 3.45x | ✅ | +| `hexbytes_repr[b'\\x01\\x02\\x03']` | 2.6317448427096368e-05 | 1.4291215619239822e-05 | 45.70% | 84.15% | 1.84x | ✅ | +| `hexbytes_repr[b'\\x10\\x20\\x30\\x40\\x50']` | 2.693674298351449e-05 | 1.4406292120774373e-05 | 46.52% | 86.98% | 1.87x | ✅ | +| `hexbytes_repr[b'\\x7f'*8]` | 2.8624203074748704e-05 | 1.4631226932397154e-05 | 48.89% | 95.64% | 1.96x | ✅ | +| `hexbytes_repr[b'\\x80'*8]` | 2.8676307806495364e-05 | 1.48070931068369e-05 | 48.36% | 93.67% | 1.94x | ✅ | +| `hexbytes_repr[b'\\xde\\xad\\xbe\\xef']` | 2.6334001851291295e-05 | 1.4088291076531398e-05 | 46.50% | 86.92% | 1.87x | ✅ | +| `hexbytes_repr[b'\\xff'*64]` | 4.9770784726355503e-05 | 2.0375554762540072e-05 | 59.06% | 144.27% | 2.44x | ✅ | +| `hexbytes_repr[b'a'*1024]` | 0.0004136946862825496 | 0.00012416564439337707 | 69.99% | 233.18% | 3.33x | ✅ | +| `hexbytes_repr[b'abc']` | 2.6364721121036088e-05 | 1.425297676011533e-05 | 45.94% | 84.98% | 1.85x | ✅ | +| `hexbytes_repr[long alternating]` | 0.0004166126955786844 | 0.00012752279417729153 | 69.39% | 226.70% | 3.27x | ✅ | +| `hexbytes_repr[mixed pattern]` | 0.00010138845912183875 | 3.524970446800069e-05 | 65.23% | 187.63% | 2.88x | ✅ | +| `hexbytes_repr[multiples of 0x10]` | 2.9494506836380725e-05 | 1.4631887184669185e-05 | 50.39% | 101.58% | 2.02x | ✅ | +| `hexbytes_repr[palindrome ascii]` | 2.8103322063570174e-05 | 1.4966526976495922e-05 | 46.74% | 87.77% | 1.88x | ✅ | +| `hexbytes_repr[palindrome numeric]` | 2.7575787507902326e-05 | 1.4317995433361243e-05 | 48.08% | 92.60% | 1.93x | ✅ | +| `hexbytes_repr[palindrome]` | 3.272060438767215e-05 | 1.6129531525962358e-05 | 50.71% | 102.86% | 2.03x | ✅ | +| `hexbytes_repr[repeated 0-9]` | 6.317388374999597e-05 | 2.4181129004704727e-05 | 61.72% | 161.25% | 2.61x | ✅ | +| `hexbytes_repr[single 0xff]` | 2.5584168555655887e-05 | 1.3934733512339212e-05 | 45.53% | 83.60% | 1.84x | ✅ | +| `hexbytes_repr[single null byte]` | 2.5684957868679025e-05 | 1.3949773932988784e-05 | 45.69% | 84.12% | 1.84x | ✅ | +| `hexbytes_repr[two patterns]` | 5.005306074935921e-05 | 2.0451997935656888e-05 | 59.14% | 144.73% | 2.45x | ✅ | +| `hexbytes_to_0x_hex[0-9]` | 1.5705236758283588e-05 | 1.3835869946633897e-05 | 11.90% | 13.51% | 1.14x | ✅ | +| `hexbytes_to_0x_hex[4-byte pattern]` | 4.35579543105141e-05 | 4.132141538453929e-05 | 5.13% | 5.41% | 1.05x | ✅ | +| `hexbytes_to_0x_hex[all byte values]` | 4.404208225939965e-05 | 4.1796901778162476e-05 | 5.10% | 5.37% | 1.05x | ✅ | +| `hexbytes_to_0x_hex[alternating 0x00/0xff]` | 2.1502443715701346e-05 | 1.9477211856640206e-05 | 9.42% | 10.40% | 1.10x | ✅ | +| `hexbytes_to_0x_hex[alternating 0xaa/0x55]` | 2.1530605585571888e-05 | 1.9547649361770845e-05 | 9.21% | 10.14% | 1.10x | ✅ | +| `hexbytes_to_0x_hex[ascii sentence]` | 1.9264486584258556e-05 | 1.7263578253831497e-05 | 10.39% | 11.59% | 1.12x | ✅ | +| `hexbytes_to_0x_hex[b'']` | 1.0230918058479275e-05 | 1.1346902966026289e-05 | -10.91% | -9.84% | 0.90x | ❌ | +| `hexbytes_to_0x_hex[b'\\x00'*32]` | 1.7801088634380032e-05 | 1.5988275521520448e-05 | 10.18% | 11.34% | 1.11x | ✅ | +| `hexbytes_to_0x_hex[b'\\x00\\xff\\x00\\xff']` | 1.518226723461978e-05 | 1.3166136811019283e-05 | 13.28% | 15.31% | 1.15x | ✅ | +| `hexbytes_to_0x_hex[b'\\x01'*100]` | 2.563121232039722e-05 | 2.3079302424109427e-05 | 9.96% | 11.06% | 1.11x | ✅ | +| `hexbytes_to_0x_hex[b'\\x01'*2048]` | 0.00023484271357191062 | 0.00023245887506656796 | 1.02% | 1.03% | 1.01x | ✅ | +| `hexbytes_to_0x_hex[b'\\x01\\x02\\x03']` | 1.5107766213292168e-05 | 1.315784681041234e-05 | 12.91% | 14.82% | 1.15x | ✅ | +| `hexbytes_to_0x_hex[b'\\x10\\x20\\x30\\x40\\x50']` | 1.5147212104347612e-05 | 1.3464869884485243e-05 | 11.11% | 12.49% | 1.12x | ✅ | +| `hexbytes_to_0x_hex[b'\\x7f'*8]` | 1.558481904298038e-05 | 1.3565944789756698e-05 | 12.95% | 14.88% | 1.15x | ✅ | +| `hexbytes_to_0x_hex[b'\\x80'*8]` | 1.5391846057002166e-05 | 1.3501301501411687e-05 | 12.28% | 14.00% | 1.14x | ✅ | +| `hexbytes_to_0x_hex[b'\\xde\\xad\\xbe\\xef']` | 1.5287012054854068e-05 | 1.3163008839618544e-05 | 13.89% | 16.14% | 1.16x | ✅ | +| `hexbytes_to_0x_hex[b'\\xff'*64]` | 2.1141548365353688e-05 | 1.94566014247515e-05 | 7.97% | 8.66% | 1.09x | ✅ | +| `hexbytes_to_0x_hex[b'a'*1024]` | 0.00012903325307777995 | 0.00012736624515628572 | 1.29% | 1.31% | 1.01x | ✅ | +| `hexbytes_to_0x_hex[b'abc']` | 1.5176872489380172e-05 | 1.3271781285505391e-05 | 12.55% | 14.35% | 1.14x | ✅ | +| `hexbytes_to_0x_hex[long alternating]` | 0.0001284360897470229 | 0.00012820298429832853 | 0.18% | 0.18% | 1.00x | ✅ | +| `hexbytes_to_0x_hex[mixed pattern]` | 3.642851616623274e-05 | 3.436185192765364e-05 | 5.67% | 6.01% | 1.06x | ✅ | +| `hexbytes_to_0x_hex[multiples of 0x10]` | 1.5638629244101037e-05 | 1.387158431141875e-05 | 11.30% | 12.74% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[palindrome ascii]` | 1.541045241681804e-05 | 1.3116639476423924e-05 | 14.88% | 17.49% | 1.17x | ✅ | +| `hexbytes_to_0x_hex[palindrome numeric]` | 1.533920013117867e-05 | 1.3230525886412996e-05 | 13.75% | 15.94% | 1.16x | ✅ | +| `hexbytes_to_0x_hex[palindrome]` | 1.6705621772344522e-05 | 1.5011957268613367e-05 | 10.14% | 11.28% | 1.11x | ✅ | +| `hexbytes_to_0x_hex[repeated 0-9]` | 2.5662089874202047e-05 | 2.297810263507965e-05 | 10.46% | 11.68% | 1.12x | ✅ | +| `hexbytes_to_0x_hex[single 0xff]` | 1.4982400863608847e-05 | 1.3055497209485186e-05 | 12.86% | 14.76% | 1.15x | ✅ | +| `hexbytes_to_0x_hex[single null byte]` | 1.4995807527761192e-05 | 1.292973782655825e-05 | 13.78% | 15.98% | 1.16x | ✅ | +| `hexbytes_to_0x_hex[two patterns]` | 2.1151482246689096e-05 | 1.9339856526958228e-05 | 8.57% | 9.37% | 1.09x | ✅ | From 33e64b47a5ac47d92be0f1bec8849be16e698d4e Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Wed, 8 Oct 2025 01:55:10 -0400 Subject: [PATCH 71/98] feat(test): add workflow_dispatch trigger to tox workflow (#14) --- .github/workflows/tox.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/tox.yaml b/.github/workflows/tox.yaml index 45ca152..f240d4f 100644 --- a/.github/workflows/tox.yaml +++ b/.github/workflows/tox.yaml @@ -17,6 +17,7 @@ on: - 'setup.py' schedule: - cron: '0 12 * * 1-5' # Weekdays 12:00 UTC + workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} From 3cae667d4c3a5692f3b55b31d2a07dd17ae390d2 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Wed, 8 Oct 2025 03:32:04 -0400 Subject: [PATCH 72/98] feat(cicd): use caching in github actions workflows (#15) --- .github/workflows/benchmark.yaml | 4 + .github/workflows/codspeed.yaml | 4 + .github/workflows/compile.yaml | 4 + .github/workflows/release.yaml | 8 + .github/workflows/tox.yaml | 8 +- .gitignore | 1 + build/ops.txt | 1862 ------------------------------ 7 files changed, 25 insertions(+), 1866 deletions(-) delete mode 100644 build/ops.txt diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml index 761ebb8..d0f88a1 100644 --- a/.github/workflows/benchmark.yaml +++ b/.github/workflows/benchmark.yaml @@ -31,6 +31,10 @@ jobs: uses: actions/setup-python@v5 with: python-version: "3.13" + cache: pip + cache-dependency-path: | + setup.py + pyproject.toml - name: Install dependencies run: | python -m pip install --upgrade pip diff --git a/.github/workflows/codspeed.yaml b/.github/workflows/codspeed.yaml index 621dc47..2343bfd 100644 --- a/.github/workflows/codspeed.yaml +++ b/.github/workflows/codspeed.yaml @@ -31,6 +31,10 @@ jobs: uses: actions/setup-python@v5 with: python-version: "3.13" + cache: pip + cache-dependency-path: | + setup.py + pyproject.toml - name: Install dependencies run: | python -m pip install --upgrade pip diff --git a/.github/workflows/compile.yaml b/.github/workflows/compile.yaml index 7f0ffcd..45dde6a 100644 --- a/.github/workflows/compile.yaml +++ b/.github/workflows/compile.yaml @@ -32,6 +32,10 @@ jobs: uses: actions/setup-python@v5 with: python-version: "3.13" + cache: pip + cache-dependency-path: | + setup.py + pyproject.toml - name: Install Faster Hexbytes env: diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 4cb1a77..4a264d0 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -87,6 +87,10 @@ jobs: uses: actions/setup-python@v4 with: python-version: "3.11" + cache: pip + cache-dependency-path: | + setup.py + pyproject.toml - name: Install cibuildwheel run: | @@ -125,6 +129,10 @@ jobs: uses: actions/setup-python@v4 with: python-version: "3.11" + cache: pip + cache-dependency-path: | + setup.py + pyproject.toml - name: Install dependencies run: | diff --git a/.github/workflows/tox.yaml b/.github/workflows/tox.yaml index f240d4f..1b1275c 100644 --- a/.github/workflows/tox.yaml +++ b/.github/workflows/tox.yaml @@ -35,6 +35,7 @@ jobs: jobtype: [core, lint, wheel] env: TOXENV: py${{ matrix.python-version }}-${{ matrix.jobtype }} + TOX_RECREATE_FLAG: ${{ github.event_name == 'schedule' && '-r' || '' }} steps: - uses: actions/checkout@v4 @@ -48,15 +49,14 @@ jobs: python -m pip install --upgrade pip python -m pip install tox - - name: Cache tox, pip, and hypothesis + - name: Cache tox environment and hypothesis examples uses: actions/cache@v4 with: path: | .tox .hypothesis - ~/.cache/pip - ~/.local - key: ${{ runner.os }}-tox-${{ matrix.python-version }}-${{ matrix.jobtype }}-${{ hashFiles('setup.py', 'tox.ini') }} + key: ${{ runner.os }}-tox-${{ hashFiles('pyproject.toml', 'setup.py', 'tox.ini') }}-${{ matrix.python-version }}-${{ matrix.jobtype }} + save-always: ${{ env.TOX_RECREATE_FLAG == '-r' }} - name: Run tox run: python -m tox run -r diff --git a/.gitignore b/.gitignore index 85311be..bf3ec5a 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ dist build/**/*.py build/**/*.typed build/**/*.o +build/ops.txt .build eggs .eggs diff --git a/build/ops.txt b/build/ops.txt deleted file mode 100644 index 8dfadfc..0000000 --- a/build/ops.txt +++ /dev/null @@ -1,1862 +0,0 @@ -def __new___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __new___HexBytes_obj.__call__(__mypyc_self__, cls, val): - __mypyc_self__ :: faster_hexbytes.main.__new___HexBytes_obj - cls :: object - val :: union[bytes, str, bool, object, int] - r0 :: bytes - r1 :: object - r2 :: bool - r3 :: object[2] - r4 :: object_ptr - r5 :: object - r6, r7 :: faster_hexbytes.main.HexBytes -L0: - r0 = to_bytes(val) - if is_error(r0) goto L7 (error at __new__:50) else goto L1 -L1: - r1 = faster_hexbytes.main._bytes_new :: static - if is_error(r1) goto L8 else goto L4 -L2: - r2 = raise NameError('value for final name "_bytes_new" was not set') - if not r2 goto L7 (error at __new__:51) else goto L3 :: bool -L3: - unreachable -L4: - r3 = [cls, r0] - r4 = load_address r3 - r5 = PyObject_Vectorcall(r1, r4, 2, 0) - if is_error(r5) goto L9 (error at __new__:51) else goto L5 -L5: - dec_ref r0 - r6 = cast(faster_hexbytes.main.HexBytes, r5) - if is_error(r6) goto L7 (error at __new__:51) else goto L6 -L6: - return r6 -L7: - r7 = :: faster_hexbytes.main.HexBytes - return r7 -L8: - dec_ref r0 - goto L2 -L9: - dec_ref r0 - goto L7 - -def __getitem___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __getitem___HexBytes_obj.__call__(__mypyc_self__, self, key): - __mypyc_self__ :: faster_hexbytes.main.__getitem___HexBytes_obj - self :: faster_hexbytes.main.HexBytes - key, r0 :: object - r1 :: str - r2 :: object[3] - r3 :: object_ptr - r4 :: object - r5 :: union[int, bytes] - r6 :: bit - r7 :: int - r8, r9, r10 :: object - r11 :: bit - r12 :: bytes - r13 :: object - r14 :: object[1] - r15 :: object_ptr - r16 :: object - r17 :: faster_hexbytes.main.HexBytes - r18 :: bytes - r19 :: object[1] - r20 :: object_ptr - r21 :: object - r22 :: faster_hexbytes.main.HexBytes - r23 :: union[int, faster_hexbytes.main.HexBytes] -L0: - r0 = load_address PyBytes_Type - r1 = '__getitem__' - r2 = [r0, self, key] - r3 = load_address r2 - r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775811, 0) - if is_error(r4) goto L14 (error at __getitem__:64) else goto L1 -L1: - r5 = cast(union[int, bytes], r4) - if is_error(r5) goto L14 (error at __getitem__:64) else goto L2 -L2: - r6 = PyLong_Check(r5) - if r6 goto L3 else goto L5 :: bool -L3: - r7 = unbox(int, r5) - dec_ref r5 - if is_error(r7) goto L14 (error at __getitem__:66) else goto L4 -L4: - r8 = box(int, r7) - return r8 -L5: - r9 = CPy_TYPE(self) - r10 = faster_hexbytes.main.HexBytes :: type - r11 = r9 == r10 - if r11 goto L15 else goto L10 :: bool -L6: - r12 = cast(bytes, r5) - if is_error(r12) goto L14 (error at __getitem__:70) else goto L7 -L7: - r13 = faster_hexbytes.main.HexBytes :: type - r14 = [r12] - r15 = load_address r14 - r16 = PyObject_Vectorcall(r13, r15, 1, 0) - if is_error(r16) goto L16 (error at __getitem__:70) else goto L8 -L8: - dec_ref r12 - r17 = cast(faster_hexbytes.main.HexBytes, r16) - if is_error(r17) goto L14 (error at __getitem__:70) else goto L9 -L9: - return r17 -L10: - r18 = cast(bytes, r5) - if is_error(r18) goto L17 (error at __getitem__:71) else goto L11 -L11: - r19 = [r18] - r20 = load_address r19 - r21 = PyObject_Vectorcall(r9, r20, 1, 0) - dec_ref r9 - if is_error(r21) goto L18 (error at __getitem__:71) else goto L12 -L12: - dec_ref r18 - r22 = cast(faster_hexbytes.main.HexBytes, r21) - if is_error(r22) goto L14 (error at __getitem__:71) else goto L13 -L13: - return r22 -L14: - r23 = :: union[int, faster_hexbytes.main.HexBytes] - return r23 -L15: - dec_ref r9 - goto L6 -L16: - dec_ref r12 - goto L14 -L17: - dec_ref r9 - goto L14 -L18: - dec_ref r18 - goto L14 - -def __repr___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __repr___HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.__repr___HexBytes_obj - self :: faster_hexbytes.main.HexBytes - r0, r1 :: str - r2 :: object[1] - r3 :: object_ptr - r4 :: object - r5, r6, r7, r8 :: str -L0: - r0 = "HexBytes('0x" - r1 = 'hex' - r2 = [self] - r3 = load_address r2 - r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775809, 0) - if is_error(r4) goto L4 (error at __repr__:74) else goto L1 -L1: - r5 = cast(str, r4) - if is_error(r5) goto L4 (error at __repr__:74) else goto L2 -L2: - r6 = "')" - r7 = CPyStr_Build(3, r0, r5, r6) - dec_ref r5 - if is_error(r7) goto L4 (error at __repr__:74) else goto L3 -L3: - return r7 -L4: - r8 = :: str - return r8 - -def to_0x_hex_HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def to_0x_hex_HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.to_0x_hex_HexBytes_obj - self :: faster_hexbytes.main.HexBytes - r0, r1 :: str - r2 :: object[1] - r3 :: object_ptr - r4 :: object - r5, r6, r7 :: str -L0: - r0 = '0x' - r1 = 'hex' - r2 = [self] - r3 = load_address r2 - r4 = PyObject_VectorcallMethod(r1, r3, 9223372036854775809, 0) - if is_error(r4) goto L4 (error at to_0x_hex:80) else goto L1 -L1: - r5 = cast(str, r4) - if is_error(r5) goto L4 (error at to_0x_hex:80) else goto L2 -L2: - r6 = CPyStr_Build(2, r0, r5) - dec_ref r5 - if is_error(r6) goto L4 (error at to_0x_hex:80) else goto L3 -L3: - return r6 -L4: - r7 = :: str - return r7 - -def __reduce___HexBytes_obj.__get__(__mypyc_self__, instance, owner): - __mypyc_self__, instance, owner, r0 :: object - r1 :: bit - r2, r3 :: object -L0: - r0 = load_address _Py_NoneStruct - r1 = instance == r0 - if r1 goto L1 else goto L2 :: bool -L1: - inc_ref __mypyc_self__ - return __mypyc_self__ -L2: - r2 = PyMethod_New(__mypyc_self__, instance) - if is_error(r2) goto L4 else goto L3 -L3: - return r2 -L4: - r3 = :: object - return r3 - -def __reduce___HexBytes_obj.__call__(__mypyc_self__, self): - __mypyc_self__ :: faster_hexbytes.main.__reduce___HexBytes_obj - self :: faster_hexbytes.main.HexBytes - r0 :: object - r1 :: bool - r2, r3 :: object - r4 :: object[1] - r5 :: object_ptr - r6 :: object - r7 :: bytes - r8 :: tuple[object, bytes] - r9, r10 :: tuple[object, tuple[object, bytes]] -L0: - r0 = faster_hexbytes.main._bytes_new :: static - if is_error(r0) goto L1 else goto L3 -L1: - r1 = raise NameError('value for final name "_bytes_new" was not set') - if not r1 goto L6 (error at __reduce__:90) else goto L2 :: bool -L2: - unreachable -L3: - r2 = CPy_TYPE(self) - r3 = load_address PyBytes_Type - r4 = [self] - r5 = load_address r4 - r6 = PyObject_Vectorcall(r3, r5, 1, 0) - if is_error(r6) goto L7 (error at __reduce__:90) else goto L4 -L4: - r7 = cast(bytes, r6) - if is_error(r7) goto L7 (error at __reduce__:90) else goto L5 -L5: - r8 = (r2, r7) - inc_ref r0 - r9 = (r0, r8) - return r9 -L6: - r10 = :: tuple[object, tuple[object, bytes]] - return r10 -L7: - dec_ref r2 - goto L6 - -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4, r5 :: object - r6 :: str - r7 :: dict - r8 :: object - r9 :: object_ptr - r10 :: object_ptr[1] - r11 :: c_ptr - r12 :: native_int[1] - r13 :: c_ptr - r14 :: object - r15 :: dict - r16, r17 :: str - r18 :: bit - r19 :: object - r20 :: str - r21 :: dict - r22, r23 :: object - r24 :: str - r25 :: dict - r26, r27 :: object - r28 :: str - r29 :: dict - r30 :: object - r31 :: dict - r32 :: str - r33, r34, r35, r36, r37 :: object - r38 :: str - r39, r40, r41 :: object - r42 :: str - r43 :: object - r44 :: tuple[object, object, object, object, object, object] - r45, r46 :: object - r47 :: dict - r48 :: str - r49 :: i32 - r50 :: bit - r51 :: object - r52 :: str - r53 :: object - r54 :: dict - r55 :: str - r56 :: i32 - r57 :: bit - r58 :: object - r59 :: str - r60 :: object - r61 :: tuple - r62, r63 :: object - r64 :: str - r65 :: bool - r66, r67 :: str - r68 :: object - r69 :: object[2] - r70 :: object_ptr - r71 :: object - r72, r73, r74, r75 :: dict - r76 :: faster_hexbytes.main.__new___HexBytes_obj - r77 :: object - r78 :: str - r79 :: object - r80 :: object[1] - r81 :: object_ptr - r82 :: object - r83 :: str - r84 :: i32 - r85 :: bit - r86 :: faster_hexbytes.main.__getitem___HexBytes_obj - r87 :: str - r88 :: i32 - r89 :: bit - r90 :: faster_hexbytes.main.__repr___HexBytes_obj - r91 :: str - r92 :: i32 - r93 :: bit - r94 :: faster_hexbytes.main.to_0x_hex_HexBytes_obj - r95 :: str - r96 :: i32 - r97 :: bit - r98 :: faster_hexbytes.main.__reduce___HexBytes_obj - r99 :: str - r100 :: i32 - r101 :: bit - r102, r103 :: str - r104 :: i32 - r105 :: bit - r106, r107 :: str - r108 :: i32 - r109 :: bit - r110, r111 :: str - r112 :: i32 - r113 :: bit - r114 :: object[3] - r115 :: object_ptr - r116 :: object - r117 :: dict - r118 :: str - r119, r120, r121 :: object - r122 :: object[2] - r123 :: object_ptr - r124, r125 :: object - r126 :: object[1] - r127 :: object_ptr - r128 :: object - r129 :: dict - r130 :: str - r131 :: i32 - r132 :: bit - r133 :: object - r134 :: dict - r135 :: str - r136 :: object - r137 :: tuple - r138, r139 :: object - r140 :: str - r141 :: bool - r142, r143 :: str - r144 :: object - r145 :: object[2] - r146 :: object_ptr - r147 :: object - r148, r149, r150, r151 :: dict - r152, r153 :: str - r154 :: i32 - r155 :: bit - r156, r157 :: str - r158 :: i32 - r159 :: bit - r160, r161 :: str - r162 :: i32 - r163 :: bit - r164 :: object[3] - r165 :: object_ptr - r166 :: object - r167 :: dict - r168 :: str - r169, r170 :: object - r171 :: object[1] - r172 :: object_ptr - r173, r174 :: object - r175 :: object[1] - r176 :: object_ptr - r177 :: object - r178 :: dict - r179 :: str - r180 :: i32 - r181 :: bit - r182 :: object - r183 :: dict - r184 :: str - r185 :: object - r186 :: tuple - r187, r188 :: object - r189 :: str - r190 :: bool - r191, r192 :: str - r193 :: object - r194 :: object[2] - r195 :: object_ptr - r196 :: object - r197, r198, r199, r200 :: dict - r201, r202 :: str - r203 :: i32 - r204 :: bit - r205, r206 :: str - r207 :: i32 - r208 :: bit - r209, r210 :: str - r211 :: i32 - r212 :: bit - r213 :: object[3] - r214 :: object_ptr - r215 :: object - r216 :: dict - r217 :: str - r218, r219 :: object - r220 :: object[1] - r221 :: object_ptr - r222, r223 :: object - r224 :: object[1] - r225 :: object_ptr - r226 :: object - r227 :: dict - r228 :: str - r229 :: i32 - r230 :: bit - r231 :: object - r232 :: dict - r233 :: str - r234 :: object - r235 :: tuple - r236, r237 :: object - r238 :: str - r239 :: bool - r240, r241 :: str - r242 :: object - r243 :: object[2] - r244 :: object_ptr - r245 :: object - r246, r247, r248, r249 :: dict - r250, r251 :: str - r252 :: i32 - r253 :: bit - r254, r255 :: str - r256 :: i32 - r257 :: bit - r258, r259 :: str - r260 :: i32 - r261 :: bit - r262 :: object[3] - r263 :: object_ptr - r264 :: object - r265 :: dict - r266 :: str - r267, r268 :: object - r269 :: object[1] - r270 :: object_ptr - r271, r272 :: object - r273 :: object[1] - r274 :: object_ptr - r275 :: object - r276 :: dict - r277 :: str - r278 :: i32 - r279 :: bit - r280 :: object - r281 :: None -L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool -L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L105 (error at :-1) else goto L2 -L2: - builtins = r4 :: module - dec_ref r4 -L3: - r5 = ('TYPE_CHECKING', 'Callable', 'Final', 'Tuple', 'Type', 'Union', 'overload') - r6 = 'typing' - r7 = faster_hexbytes.main.globals :: static - r8 = CPyImport_ImportFromMany(r6, r5, r5, r7) - if is_error(r8) goto L105 (error at :1) else goto L4 -L4: - typing = r8 :: module - dec_ref r8 - r9 = load_address hexbytes.main :: module - r10 = [r9] - r11 = load_address r10 - r12 = [14] - r13 = load_address r12 - r14 = (('hexbytes.main', 'hexbytes.main', 'hexbytes'),) - r15 = faster_hexbytes.main.globals :: static - r16 = 'faster_hexbytes/main.py' - r17 = '' - r18 = CPyImport_ImportMany(r14, r11, r15, r16, r17, r13) - if not r18 goto L105 else goto L5 :: bool -L5: - r19 = ('mypyc_attr',) - r20 = 'mypy_extensions' - r21 = faster_hexbytes.main.globals :: static - r22 = CPyImport_ImportFromMany(r20, r19, r19, r21) - if is_error(r22) goto L105 (error at :15) else goto L6 -L6: - mypy_extensions = r22 :: module - dec_ref r22 - r23 = ('Self',) - r24 = 'typing_extensions' - r25 = faster_hexbytes.main.globals :: static - r26 = CPyImport_ImportFromMany(r24, r23, r23, r25) - if is_error(r26) goto L105 (error at :18) else goto L7 -L7: - typing_extensions = r26 :: module - dec_ref r26 - r27 = ('to_bytes',) - r28 = 'faster_hexbytes._utils' - r29 = faster_hexbytes.main.globals :: static - r30 = CPyImport_ImportFromMany(r28, r27, r27, r29) - if is_error(r30) goto L105 (error at :22) else goto L8 -L8: - faster_hexbytes._utils = r30 :: module - dec_ref r30 - if 0 goto L9 else goto L9 :: bool -L9: - r31 = faster_hexbytes.main.globals :: static - r32 = 'Union' - r33 = CPyDict_GetItem(r31, r32) - if is_error(r33) goto L105 (error at :32) else goto L10 -L10: - r34 = load_address PyBytes_Type - r35 = load_address PyUnicode_Type - r36 = load_address PyBool_Type - r37 = builtins :: module - r38 = 'bytearray' - r39 = CPyObject_GetAttr(r37, r38) - if is_error(r39) goto L106 (error at :32) else goto L11 -L11: - r40 = load_address PyLong_Type - r41 = builtins :: module - r42 = 'memoryview' - r43 = CPyObject_GetAttr(r41, r42) - if is_error(r43) goto L107 (error at :32) else goto L12 -L12: - inc_ref r34 - inc_ref r35 - inc_ref r36 - inc_ref r40 - r44 = (r34, r35, r36, r39, r40, r43) - r45 = box(tuple[object, object, object, object, object, object], r44) - r46 = PyObject_GetItem(r33, r45) - dec_ref r33 - dec_ref r45 - if is_error(r46) goto L105 (error at :32) else goto L13 -L13: - r47 = faster_hexbytes.main.globals :: static - r48 = 'BytesLike' - r49 = CPyDict_SetItem(r47, r48, r46) - dec_ref r46 - r50 = r49 >= 0 :: signed - if not r50 goto L105 (error at :32) else goto L14 :: bool -L14: - r51 = load_address PyBytes_Type - r52 = '__new__' - r53 = CPyObject_GetAttr(r51, r52) - if is_error(r53) goto L105 (error at :34) else goto L15 -L15: - faster_hexbytes.main._bytes_new = r53 :: static - r54 = faster_hexbytes.main.globals :: static - r55 = '_bytes_new' - r56 = CPyDict_SetItem(r54, r55, r53) - dec_ref r53 - r57 = r56 >= 0 :: signed - if not r57 goto L105 (error at :34) else goto L16 :: bool -L16: - r58 = hexbytes.main :: module - r59 = 'HexBytes' - r60 = CPyObject_GetAttr(r58, r59) - if is_error(r60) goto L105 (error at :38) else goto L17 -L17: - r61 = PyTuple_Pack(1, r60) - dec_ref r60 - if is_error(r61) goto L105 (error at :38) else goto L18 -L18: - r62 = load_address PyType_Type - r63 = CPy_CalculateMetaclass(r62, r61) - if is_error(r63) goto L108 (error at :38) else goto L19 -L19: - r64 = '__prepare__' - r65 = PyObject_HasAttr(r63, r64) - if r65 goto L20 else goto L24 :: bool -L20: - r66 = 'HexBytes' - r67 = '__prepare__' - r68 = CPyObject_GetAttr(r63, r67) - if is_error(r68) goto L108 (error at :38) else goto L21 -L21: - r69 = [r66, r61] - r70 = load_address r69 - r71 = PyObject_Vectorcall(r68, r70, 2, 0) - dec_ref r68 - if is_error(r71) goto L108 (error at :38) else goto L22 -L22: - r72 = cast(dict, r71) - if is_error(r72) goto L108 (error at :38) else goto L23 -L23: - r73 = r72 - goto L26 -L24: - r74 = PyDict_New() - if is_error(r74) goto L108 (error at :38) else goto L25 -L25: - r73 = r74 -L26: - r75 = PyDict_New() - if is_error(r75) goto L109 (error at :38) else goto L27 -L27: - r76 = __new___HexBytes_obj() - if is_error(r76) goto L110 (error at :49) else goto L28 -L28: - r77 = builtins :: module - r78 = 'staticmethod' - r79 = CPyObject_GetAttr(r77, r78) - if is_error(r79) goto L111 (error at :49) else goto L29 -L29: - r80 = [r76] - r81 = load_address r80 - r82 = PyObject_Vectorcall(r79, r81, 1, 0) - dec_ref r79 - if is_error(r82) goto L111 (error at :49) else goto L30 -L30: - dec_ref r76 - r83 = '__new__' - r84 = CPyDict_SetItem(r73, r83, r82) - dec_ref r82 - r85 = r84 >= 0 :: signed - if not r85 goto L110 (error at :49) else goto L31 :: bool -L31: - r86 = __getitem___HexBytes_obj() - if is_error(r86) goto L110 (error at :61) else goto L32 -L32: - r87 = '__getitem__' - r88 = CPyDict_SetItem(r73, r87, r86) - dec_ref r86 - r89 = r88 >= 0 :: signed - if not r89 goto L110 (error at :61) else goto L33 :: bool -L33: - r90 = __repr___HexBytes_obj() - if is_error(r90) goto L110 (error at :73) else goto L34 -L34: - r91 = '__repr__' - r92 = CPyDict_SetItem(r73, r91, r90) - dec_ref r90 - r93 = r92 >= 0 :: signed - if not r93 goto L110 (error at :73) else goto L35 :: bool -L35: - r94 = to_0x_hex_HexBytes_obj() - if is_error(r94) goto L110 (error at :76) else goto L36 -L36: - r95 = 'to_0x_hex' - r96 = CPyDict_SetItem(r73, r95, r94) - dec_ref r94 - r97 = r96 >= 0 :: signed - if not r97 goto L110 (error at :76) else goto L37 :: bool -L37: - r98 = __reduce___HexBytes_obj() - if is_error(r98) goto L110 (error at :82) else goto L38 -L38: - r99 = '__reduce__' - r100 = CPyDict_SetItem(r73, r99, r98) - dec_ref r98 - r101 = r100 >= 0 :: signed - if not r101 goto L110 (error at :82) else goto L39 :: bool -L39: - r102 = 'HexBytes' - r103 = '__annotations__' - r104 = CPyDict_SetItem(r73, r103, r75) - dec_ref r75 - r105 = r104 >= 0 :: signed - if not r105 goto L109 (error at :38) else goto L40 :: bool -L40: - r106 = 'mypyc filler docstring' - r107 = '__doc__' - r108 = CPyDict_SetItem(r73, r107, r106) - r109 = r108 >= 0 :: signed - if not r109 goto L109 (error at :38) else goto L41 :: bool -L41: - r110 = 'faster_hexbytes.main' - r111 = '__module__' - r112 = CPyDict_SetItem(r73, r111, r110) - r113 = r112 >= 0 :: signed - if not r113 goto L109 (error at :38) else goto L42 :: bool -L42: - r114 = [r102, r61, r73] - r115 = load_address r114 - r116 = PyObject_Vectorcall(r63, r115, 3, 0) - if is_error(r116) goto L109 (error at :38) else goto L43 -L43: - dec_ref r73 - dec_ref r61 - r117 = faster_hexbytes.main.globals :: static - r118 = 'mypyc_attr' - r119 = CPyDict_GetItem(r117, r118) - if is_error(r119) goto L112 (error at :37) else goto L44 -L44: - r120 = box(bool, 0) - r121 = box(bool, 1) - r122 = [r120, r121] - r123 = load_address r122 - r124 = ('native_class', 'allow_interpreted_subclasses') - r125 = PyObject_Vectorcall(r119, r123, 0, r124) - dec_ref r119 - if is_error(r125) goto L112 (error at :37) else goto L45 -L45: - r126 = [r116] - r127 = load_address r126 - r128 = PyObject_Vectorcall(r125, r127, 1, 0) - dec_ref r125 - if is_error(r128) goto L112 (error at :38) else goto L46 -L46: - dec_ref r116 - faster_hexbytes.main.HexBytes = r128 :: type - r129 = faster_hexbytes.main.globals :: static - r130 = 'HexBytes' - r131 = PyDict_SetItem(r129, r130, r128) - dec_ref r128 - r132 = r131 >= 0 :: signed - if not r132 goto L105 (error at :38) else goto L47 :: bool -L47: - r133 = faster_hexbytes.main.HexBytes :: type - r134 = faster_hexbytes.main.globals :: static - r135 = 'HexBytes' - r136 = CPyDict_GetItem(r134, r135) - if is_error(r136) goto L105 (error at :97) else goto L48 -L48: - r137 = PyTuple_Pack(1, r136) - dec_ref r136 - if is_error(r137) goto L105 (error at :97) else goto L49 -L49: - r138 = load_address PyType_Type - r139 = CPy_CalculateMetaclass(r138, r137) - if is_error(r139) goto L113 (error at :97) else goto L50 -L50: - r140 = '__prepare__' - r141 = PyObject_HasAttr(r139, r140) - if r141 goto L51 else goto L55 :: bool -L51: - r142 = '_HexBytesSubclass1' - r143 = '__prepare__' - r144 = CPyObject_GetAttr(r139, r143) - if is_error(r144) goto L113 (error at :97) else goto L52 -L52: - r145 = [r142, r137] - r146 = load_address r145 - r147 = PyObject_Vectorcall(r144, r146, 2, 0) - dec_ref r144 - if is_error(r147) goto L113 (error at :97) else goto L53 -L53: - r148 = cast(dict, r147) - if is_error(r148) goto L113 (error at :97) else goto L54 -L54: - r149 = r148 - goto L57 -L55: - r150 = PyDict_New() - if is_error(r150) goto L113 (error at :97) else goto L56 -L56: - r149 = r150 -L57: - r151 = PyDict_New() - if is_error(r151) goto L114 (error at :97) else goto L58 -L58: - r152 = '_HexBytesSubclass1' - r153 = '__annotations__' - r154 = CPyDict_SetItem(r149, r153, r151) - dec_ref r151 - r155 = r154 >= 0 :: signed - if not r155 goto L114 (error at :97) else goto L59 :: bool -L59: - r156 = 'mypyc filler docstring' - r157 = '__doc__' - r158 = CPyDict_SetItem(r149, r157, r156) - r159 = r158 >= 0 :: signed - if not r159 goto L114 (error at :97) else goto L60 :: bool -L60: - r160 = 'faster_hexbytes.main' - r161 = '__module__' - r162 = CPyDict_SetItem(r149, r161, r160) - r163 = r162 >= 0 :: signed - if not r163 goto L114 (error at :97) else goto L61 :: bool -L61: - r164 = [r152, r137, r149] - r165 = load_address r164 - r166 = PyObject_Vectorcall(r139, r165, 3, 0) - if is_error(r166) goto L114 (error at :97) else goto L62 -L62: - dec_ref r149 - dec_ref r137 - r167 = faster_hexbytes.main.globals :: static - r168 = 'mypyc_attr' - r169 = CPyDict_GetItem(r167, r168) - if is_error(r169) goto L115 (error at :96) else goto L63 -L63: - r170 = box(bool, 0) - r171 = [r170] - r172 = load_address r171 - r173 = ('native_class',) - r174 = PyObject_Vectorcall(r169, r172, 0, r173) - dec_ref r169 - if is_error(r174) goto L115 (error at :96) else goto L64 -L64: - r175 = [r166] - r176 = load_address r175 - r177 = PyObject_Vectorcall(r174, r176, 1, 0) - dec_ref r174 - if is_error(r177) goto L115 (error at :97) else goto L65 -L65: - dec_ref r166 - faster_hexbytes.main._HexBytesSubclass1 = r177 :: type - r178 = faster_hexbytes.main.globals :: static - r179 = '_HexBytesSubclass1' - r180 = PyDict_SetItem(r178, r179, r177) - dec_ref r177 - r181 = r180 >= 0 :: signed - if not r181 goto L105 (error at :97) else goto L66 :: bool -L66: - r182 = faster_hexbytes.main._HexBytesSubclass1 :: type - r183 = faster_hexbytes.main.globals :: static - r184 = 'HexBytes' - r185 = CPyDict_GetItem(r183, r184) - if is_error(r185) goto L105 (error at :99) else goto L67 -L67: - r186 = PyTuple_Pack(1, r185) - dec_ref r185 - if is_error(r186) goto L105 (error at :99) else goto L68 -L68: - r187 = load_address PyType_Type - r188 = CPy_CalculateMetaclass(r187, r186) - if is_error(r188) goto L116 (error at :99) else goto L69 -L69: - r189 = '__prepare__' - r190 = PyObject_HasAttr(r188, r189) - if r190 goto L70 else goto L74 :: bool -L70: - r191 = '_HexBytesSubclass2' - r192 = '__prepare__' - r193 = CPyObject_GetAttr(r188, r192) - if is_error(r193) goto L116 (error at :99) else goto L71 -L71: - r194 = [r191, r186] - r195 = load_address r194 - r196 = PyObject_Vectorcall(r193, r195, 2, 0) - dec_ref r193 - if is_error(r196) goto L116 (error at :99) else goto L72 -L72: - r197 = cast(dict, r196) - if is_error(r197) goto L116 (error at :99) else goto L73 -L73: - r198 = r197 - goto L76 -L74: - r199 = PyDict_New() - if is_error(r199) goto L116 (error at :99) else goto L75 -L75: - r198 = r199 -L76: - r200 = PyDict_New() - if is_error(r200) goto L117 (error at :99) else goto L77 -L77: - r201 = '_HexBytesSubclass2' - r202 = '__annotations__' - r203 = CPyDict_SetItem(r198, r202, r200) - dec_ref r200 - r204 = r203 >= 0 :: signed - if not r204 goto L117 (error at :99) else goto L78 :: bool -L78: - r205 = 'mypyc filler docstring' - r206 = '__doc__' - r207 = CPyDict_SetItem(r198, r206, r205) - r208 = r207 >= 0 :: signed - if not r208 goto L117 (error at :99) else goto L79 :: bool -L79: - r209 = 'faster_hexbytes.main' - r210 = '__module__' - r211 = CPyDict_SetItem(r198, r210, r209) - r212 = r211 >= 0 :: signed - if not r212 goto L117 (error at :99) else goto L80 :: bool -L80: - r213 = [r201, r186, r198] - r214 = load_address r213 - r215 = PyObject_Vectorcall(r188, r214, 3, 0) - if is_error(r215) goto L117 (error at :99) else goto L81 -L81: - dec_ref r198 - dec_ref r186 - r216 = faster_hexbytes.main.globals :: static - r217 = 'mypyc_attr' - r218 = CPyDict_GetItem(r216, r217) - if is_error(r218) goto L118 (error at :98) else goto L82 -L82: - r219 = box(bool, 0) - r220 = [r219] - r221 = load_address r220 - r222 = ('native_class',) - r223 = PyObject_Vectorcall(r218, r221, 0, r222) - dec_ref r218 - if is_error(r223) goto L118 (error at :98) else goto L83 -L83: - r224 = [r215] - r225 = load_address r224 - r226 = PyObject_Vectorcall(r223, r225, 1, 0) - dec_ref r223 - if is_error(r226) goto L118 (error at :99) else goto L84 -L84: - dec_ref r215 - faster_hexbytes.main._HexBytesSubclass2 = r226 :: type - r227 = faster_hexbytes.main.globals :: static - r228 = '_HexBytesSubclass2' - r229 = PyDict_SetItem(r227, r228, r226) - dec_ref r226 - r230 = r229 >= 0 :: signed - if not r230 goto L105 (error at :99) else goto L85 :: bool -L85: - r231 = faster_hexbytes.main._HexBytesSubclass2 :: type - r232 = faster_hexbytes.main.globals :: static - r233 = 'HexBytes' - r234 = CPyDict_GetItem(r232, r233) - if is_error(r234) goto L105 (error at :101) else goto L86 -L86: - r235 = PyTuple_Pack(1, r234) - dec_ref r234 - if is_error(r235) goto L105 (error at :101) else goto L87 -L87: - r236 = load_address PyType_Type - r237 = CPy_CalculateMetaclass(r236, r235) - if is_error(r237) goto L119 (error at :101) else goto L88 -L88: - r238 = '__prepare__' - r239 = PyObject_HasAttr(r237, r238) - if r239 goto L89 else goto L93 :: bool -L89: - r240 = '_HexBytesSubclass3' - r241 = '__prepare__' - r242 = CPyObject_GetAttr(r237, r241) - if is_error(r242) goto L119 (error at :101) else goto L90 -L90: - r243 = [r240, r235] - r244 = load_address r243 - r245 = PyObject_Vectorcall(r242, r244, 2, 0) - dec_ref r242 - if is_error(r245) goto L119 (error at :101) else goto L91 -L91: - r246 = cast(dict, r245) - if is_error(r246) goto L119 (error at :101) else goto L92 -L92: - r247 = r246 - goto L95 -L93: - r248 = PyDict_New() - if is_error(r248) goto L119 (error at :101) else goto L94 -L94: - r247 = r248 -L95: - r249 = PyDict_New() - if is_error(r249) goto L120 (error at :101) else goto L96 -L96: - r250 = '_HexBytesSubclass3' - r251 = '__annotations__' - r252 = CPyDict_SetItem(r247, r251, r249) - dec_ref r249 - r253 = r252 >= 0 :: signed - if not r253 goto L120 (error at :101) else goto L97 :: bool -L97: - r254 = 'mypyc filler docstring' - r255 = '__doc__' - r256 = CPyDict_SetItem(r247, r255, r254) - r257 = r256 >= 0 :: signed - if not r257 goto L120 (error at :101) else goto L98 :: bool -L98: - r258 = 'faster_hexbytes.main' - r259 = '__module__' - r260 = CPyDict_SetItem(r247, r259, r258) - r261 = r260 >= 0 :: signed - if not r261 goto L120 (error at :101) else goto L99 :: bool -L99: - r262 = [r250, r235, r247] - r263 = load_address r262 - r264 = PyObject_Vectorcall(r237, r263, 3, 0) - if is_error(r264) goto L120 (error at :101) else goto L100 -L100: - dec_ref r247 - dec_ref r235 - r265 = faster_hexbytes.main.globals :: static - r266 = 'mypyc_attr' - r267 = CPyDict_GetItem(r265, r266) - if is_error(r267) goto L121 (error at :100) else goto L101 -L101: - r268 = box(bool, 0) - r269 = [r268] - r270 = load_address r269 - r271 = ('native_class',) - r272 = PyObject_Vectorcall(r267, r270, 0, r271) - dec_ref r267 - if is_error(r272) goto L121 (error at :100) else goto L102 -L102: - r273 = [r264] - r274 = load_address r273 - r275 = PyObject_Vectorcall(r272, r274, 1, 0) - dec_ref r272 - if is_error(r275) goto L121 (error at :101) else goto L103 -L103: - dec_ref r264 - faster_hexbytes.main._HexBytesSubclass3 = r275 :: type - r276 = faster_hexbytes.main.globals :: static - r277 = '_HexBytesSubclass3' - r278 = PyDict_SetItem(r276, r277, r275) - dec_ref r275 - r279 = r278 >= 0 :: signed - if not r279 goto L105 (error at :101) else goto L104 :: bool -L104: - r280 = faster_hexbytes.main._HexBytesSubclass3 :: type - return 1 -L105: - r281 = :: None - return r281 -L106: - dec_ref r33 - goto L105 -L107: - dec_ref r33 - dec_ref r39 - goto L105 -L108: - dec_ref r61 - goto L105 -L109: - dec_ref r61 - dec_ref r73 - goto L105 -L110: - dec_ref r61 - dec_ref r73 - dec_ref r75 - goto L105 -L111: - dec_ref r61 - dec_ref r73 - dec_ref r75 - dec_ref r76 - goto L105 -L112: - dec_ref r116 - goto L105 -L113: - dec_ref r137 - goto L105 -L114: - dec_ref r137 - dec_ref r149 - goto L105 -L115: - dec_ref r166 - goto L105 -L116: - dec_ref r186 - goto L105 -L117: - dec_ref r186 - dec_ref r198 - goto L105 -L118: - dec_ref r215 - goto L105 -L119: - dec_ref r235 - goto L105 -L120: - dec_ref r235 - dec_ref r247 - goto L105 -L121: - dec_ref r264 - goto L105 - -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4, r5, r6 :: object - r7 :: str - r8 :: dict - r9, r10 :: object - r11 :: str - r12 :: dict - r13 :: object - r14 :: str - r15 :: list - r16, r17 :: ptr - r18 :: dict - r19 :: str - r20 :: i32 - r21 :: bit - r22 :: str - r23 :: dict - r24 :: str - r25 :: object - r26 :: object[1] - r27 :: object_ptr - r28 :: object - r29 :: str - r30 :: dict - r31 :: str - r32 :: i32 - r33 :: bit - r34 :: None -L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool -L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L12 (error at :-1) else goto L2 -L2: - builtins = r4 :: module - dec_ref r4 -L3: - r5 = ('version',) - r6 = ('__version',) - r7 = 'importlib.metadata' - r8 = faster_hexbytes.globals :: static - r9 = CPyImport_ImportFromMany(r7, r5, r6, r8) - if is_error(r9) goto L12 (error at :1) else goto L4 -L4: - importlib.metadata = r9 :: module - dec_ref r9 - r10 = ('HexBytes',) - r11 = 'faster_hexbytes.main' - r12 = faster_hexbytes.globals :: static - r13 = CPyImport_ImportFromMany(r11, r10, r10, r12) - if is_error(r13) goto L12 (error at :5) else goto L5 -L5: - faster_hexbytes.main = r13 :: module - dec_ref r13 - r14 = 'HexBytes' - r15 = PyList_New(1) - if is_error(r15) goto L12 (error at :9) else goto L6 -L6: - r16 = get_element_ptr r15 ob_item :: PyListObject - r17 = load_mem r16 :: ptr* - inc_ref r14 - set_mem r17, r14 :: builtins.object* - r18 = faster_hexbytes.globals :: static - r19 = '__all__' - r20 = CPyDict_SetItem(r18, r19, r15) - dec_ref r15 - r21 = r20 >= 0 :: signed - if not r21 goto L12 (error at :9) else goto L7 :: bool -L7: - r22 = 'hexbytes' - r23 = faster_hexbytes.globals :: static - r24 = '__version' - r25 = CPyDict_GetItem(r23, r24) - if is_error(r25) goto L12 (error at :11) else goto L8 -L8: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L12 (error at :11) else goto L9 -L9: - r29 = cast(str, r28) - if is_error(r29) goto L12 (error at :11) else goto L10 -L10: - r30 = faster_hexbytes.globals :: static - r31 = '__version__' - r32 = CPyDict_SetItem(r30, r31, r29) - dec_ref r29 - r33 = r32 >= 0 :: signed - if not r33 goto L12 (error at :11) else goto L11 :: bool -L11: - return 1 -L12: - r34 = :: None - return r34 - -def to_bytes(val): - val :: union[bytes, str, object, bool, int] - r0 :: bit - r1 :: bytes - r2 :: bit - r3 :: str - r4 :: bytes - r5 :: bit - r6 :: object - r7 :: object[1] - r8 :: object_ptr - r9 :: object - r10 :: bytes - r11 :: bit - r12 :: bool - r13, r14, r15 :: bytes - r16 :: bit - r17 :: int - r18 :: native_int - r19 :: bit - r20 :: native_int - r21, r22 :: bit - r23 :: bool - r24 :: bit - r25 :: str - r26 :: int - r27, r28, r29 :: str - r30 :: object - r31 :: str - r32 :: object - r33 :: object[1] - r34 :: object_ptr - r35 :: object - r36 :: int - r37 :: object - r38 :: str - r39, r40 :: object - r41 :: object[1] - r42 :: object_ptr - r43 :: object - r44 :: str - r45 :: bytes - r46 :: object - r47 :: str - r48 :: object - r49 :: i32 - r50 :: bit - r51 :: bool - r52 :: object - r53 :: object[1] - r54 :: object_ptr - r55 :: object - r56 :: bytes - r57, r58, r59, r60, r61 :: str - r62 :: object[3] - r63 :: object_ptr - r64 :: object - r65, r66 :: str - r67 :: object - r68, r69 :: str - r70 :: object[3] - r71 :: object_ptr - r72 :: object - r73 :: str - r74 :: list - r75, r76, r77, r78, r79, r80 :: ptr - r81 :: str - r82 :: object - r83 :: str - r84 :: object - r85 :: object[1] - r86 :: object_ptr - r87 :: object - r88 :: bytes -L0: - r0 = PyBytes_Check(val) - if r0 goto L1 else goto L3 :: bool -L1: - inc_ref val - r1 = cast(bytes, val) - if is_error(r1) goto L51 (error at to_bytes:19) else goto L2 -L2: - return r1 -L3: - r2 = PyUnicode_Check(val) - if r2 goto L4 else goto L7 :: bool -L4: - inc_ref val - r3 = cast(str, val) - if is_error(r3) goto L51 (error at to_bytes:21) else goto L5 -L5: - r4 = hexstr_to_bytes(r3) - dec_ref r3 - if is_error(r4) goto L51 (error at to_bytes:21) else goto L6 -L6: - return r4 -L7: - r5 = PyByteArray_Check(val) - if r5 goto L8 else goto L11 :: bool -L8: - r6 = load_address PyBytes_Type - r7 = [val] - r8 = load_address r7 - r9 = PyObject_Vectorcall(r6, r8, 1, 0) - if is_error(r9) goto L51 (error at to_bytes:23) else goto L9 -L9: - r10 = cast(bytes, r9) - if is_error(r10) goto L51 (error at to_bytes:23) else goto L10 -L10: - return r10 -L11: - r11 = PyBool_Check(val) - if r11 goto L12 else goto L17 :: bool -L12: - r12 = unbox(bool, val) - if is_error(r12) goto L51 (error at to_bytes:25) else goto L13 -L13: - if r12 goto L14 else goto L15 :: bool -L14: - r13 = b'\x01' - inc_ref r13 - r14 = r13 - goto L16 -L15: - r15 = b'\x00' - inc_ref r15 - r14 = r15 -L16: - return r14 -L17: - r16 = PyLong_Check(val) - if r16 goto L18 else goto L37 :: bool -L18: - r17 = unbox(int, val) - if is_error(r17) goto L51 (error at to_bytes:29) else goto L19 -L19: - r18 = r17 & 1 - r19 = r18 != 0 - if r19 goto L21 else goto L20 :: bool -L20: - r20 = 0 & 1 - r21 = r20 != 0 - if r21 goto L21 else goto L22 :: bool -L21: - r22 = CPyTagged_IsLt_(r17, 0) - r23 = r22 - goto L23 -L22: - r24 = r17 < 0 :: signed - r23 = r24 -L23: - dec_ref r17 :: int - if r23 goto L24 else goto L31 :: bool -L24: - r25 = 'Cannot convert negative integer ' - r26 = unbox(int, val) - if is_error(r26) goto L51 (error at to_bytes:30) else goto L25 -L25: - r27 = CPyTagged_Str(r26) - dec_ref r26 :: int - if is_error(r27) goto L51 (error at to_bytes:30) else goto L26 -L26: - r28 = ' to bytes' - r29 = CPyStr_Build(3, r25, r27, r28) - dec_ref r27 - if is_error(r29) goto L51 (error at to_bytes:30) else goto L27 -L27: - r30 = builtins :: module - r31 = 'ValueError' - r32 = CPyObject_GetAttr(r30, r31) - if is_error(r32) goto L52 (error at to_bytes:30) else goto L28 -L28: - r33 = [r29] - r34 = load_address r33 - r35 = PyObject_Vectorcall(r32, r34, 1, 0) - dec_ref r32 - if is_error(r35) goto L52 (error at to_bytes:30) else goto L29 -L29: - dec_ref r29 - CPy_Raise(r35) - dec_ref r35 - if not 0 goto L51 (error at to_bytes:30) else goto L30 :: bool -L30: - unreachable -L31: - r36 = unbox(int, val) - if is_error(r36) goto L51 (error at to_bytes:32) else goto L32 -L32: - r37 = builtins :: module - r38 = 'hex' - r39 = CPyObject_GetAttr(r37, r38) - if is_error(r39) goto L53 (error at to_bytes:32) else goto L33 -L33: - r40 = box(int, r36) - r41 = [r40] - r42 = load_address r41 - r43 = PyObject_Vectorcall(r39, r42, 1, 0) - dec_ref r39 - if is_error(r43) goto L54 (error at to_bytes:32) else goto L34 -L34: - dec_ref r40 - r44 = cast(str, r43) - if is_error(r44) goto L51 (error at to_bytes:32) else goto L35 -L35: - r45 = to_bytes(r44) - dec_ref r44 - if is_error(r45) goto L51 (error at to_bytes:32) else goto L36 -L36: - return r45 -L37: - r46 = builtins :: module - r47 = 'memoryview' - r48 = CPyObject_GetAttr(r46, r47) - if is_error(r48) goto L51 (error at to_bytes:33) else goto L38 -L38: - r49 = PyObject_IsInstance(val, r48) - dec_ref r48 - r50 = r49 >= 0 :: signed - if not r50 goto L51 (error at to_bytes:33) else goto L39 :: bool -L39: - r51 = truncate r49: i32 to builtins.bool - if r51 goto L40 else goto L43 :: bool -L40: - r52 = load_address PyBytes_Type - r53 = [val] - r54 = load_address r53 - r55 = PyObject_Vectorcall(r52, r54, 1, 0) - if is_error(r55) goto L51 (error at to_bytes:34) else goto L41 -L41: - r56 = cast(bytes, r55) - if is_error(r56) goto L51 (error at to_bytes:34) else goto L42 -L42: - return r56 -L43: - r57 = '' - r58 = 'Cannot convert ' - r59 = '{!r:{}}' - r60 = '' - r61 = 'format' - r62 = [r59, val, r60] - r63 = load_address r62 - r64 = PyObject_VectorcallMethod(r61, r63, 9223372036854775811, 0) - if is_error(r64) goto L51 (error at to_bytes:36) else goto L44 -L44: - r65 = ' of type ' - r66 = '{:{}}' - r67 = CPy_TYPE(val) - r68 = '' - r69 = 'format' - r70 = [r66, r67, r68] - r71 = load_address r70 - r72 = PyObject_VectorcallMethod(r69, r71, 9223372036854775811, 0) - if is_error(r72) goto L55 (error at to_bytes:36) else goto L45 -L45: - dec_ref r67 - r73 = ' to bytes' - r74 = PyList_New(5) - if is_error(r74) goto L56 (error at to_bytes:36) else goto L46 -L46: - r75 = get_element_ptr r74 ob_item :: PyListObject - r76 = load_mem r75 :: ptr* - inc_ref r58 - set_mem r76, r58 :: builtins.object* - r77 = r76 + 8 - set_mem r77, r64 :: builtins.object* - inc_ref r65 - r78 = r76 + 16 - set_mem r78, r65 :: builtins.object* - r79 = r76 + 24 - set_mem r79, r72 :: builtins.object* - inc_ref r73 - r80 = r76 + 32 - set_mem r80, r73 :: builtins.object* - r81 = PyUnicode_Join(r57, r74) - dec_ref r74 - if is_error(r81) goto L51 (error at to_bytes:36) else goto L47 -L47: - r82 = builtins :: module - r83 = 'TypeError' - r84 = CPyObject_GetAttr(r82, r83) - if is_error(r84) goto L57 (error at to_bytes:36) else goto L48 -L48: - r85 = [r81] - r86 = load_address r85 - r87 = PyObject_Vectorcall(r84, r86, 1, 0) - dec_ref r84 - if is_error(r87) goto L57 (error at to_bytes:36) else goto L49 -L49: - dec_ref r81 - CPy_Raise(r87) - dec_ref r87 - if not 0 goto L51 (error at to_bytes:36) else goto L50 :: bool -L50: - unreachable -L51: - r88 = :: bytes - return r88 -L52: - dec_ref r29 - goto L51 -L53: - dec_ref r36 :: int - goto L51 -L54: - dec_ref r40 - goto L51 -L55: - dec_ref r64 - dec_ref r67 - goto L51 -L56: - dec_ref r64 - dec_ref r72 - goto L51 -L57: - dec_ref r81 - goto L51 - -def hexstr_to_bytes(hexstr): - hexstr, r0, r1 :: str - r2 :: tuple[str, str] - r3 :: object - r4 :: bool - r5 :: object - r6, non_prefixed_hex :: str - r7 :: native_int - r8 :: bit - r9 :: short_int - r10 :: int - r11 :: bit - r12, r13, padded_hex :: str - r14 :: bytes - r15 :: tuple[object, object, object] - r16 :: object - r17 :: str - r18 :: object - r19 :: bit - r20, r21, r22 :: str - r23 :: object - r24 :: str - r25 :: object - r26 :: object[1] - r27 :: object_ptr - r28 :: object - r29 :: bit - r30 :: object - r31 :: bool - r32 :: object[1] - r33 :: object_ptr - r34 :: object - r35, r36 :: bytes -L0: - r0 = '0x' - r1 = '0X' - inc_ref r0 - inc_ref r1 - r2 = (r0, r1) - r3 = box(tuple[str, str], r2) - r4 = CPyStr_Startswith(hexstr, r3) - dec_ref r3 - if is_error(r4) goto L31 (error at hexstr_to_bytes:40) else goto L1 -L1: - if r4 goto L2 else goto L5 :: bool -L2: - r5 = CPyStr_GetSlice(hexstr, 4, 9223372036854775806) - if is_error(r5) goto L31 (error at hexstr_to_bytes:41) else goto L3 -L3: - r6 = cast(str, r5) - if is_error(r6) goto L31 (error at hexstr_to_bytes:41) else goto L4 -L4: - non_prefixed_hex = r6 - goto L6 -L5: - inc_ref hexstr - non_prefixed_hex = hexstr -L6: - r7 = CPyStr_Size_size_t(hexstr) - r8 = r7 >= 0 :: signed - if not r8 goto L32 (error at hexstr_to_bytes:46) else goto L7 :: bool -L7: - r9 = r7 << 1 - r10 = CPyTagged_Remainder(r9, 4) - if is_error(r10) goto L32 (error at hexstr_to_bytes:46) else goto L8 -L8: - r11 = r10 != 0 - dec_ref r10 :: int - if r11 goto L9 else goto L11 :: bool -L9: - r12 = '0' - r13 = PyUnicode_Concat(r12, non_prefixed_hex) - dec_ref non_prefixed_hex - if is_error(r13) goto L31 (error at hexstr_to_bytes:47) else goto L10 -L10: - padded_hex = r13 - goto L12 -L11: - padded_hex = non_prefixed_hex -L12: - r14 = PyUnicode_AsASCIIString(padded_hex) - if is_error(r14) goto L14 (error at hexstr_to_bytes:52) else goto L33 -L13: - goto L25 -L14: - r15 = CPy_CatchError() - r16 = builtins :: module - r17 = 'UnicodeDecodeError' - r18 = CPyObject_GetAttr(r16, r17) - if is_error(r18) goto L34 (error at hexstr_to_bytes:53) else goto L15 -L15: - r19 = CPy_ExceptionMatches(r18) - dec_ref r18 - if r19 goto L16 else goto L35 :: bool -L16: - r20 = 'hex string ' - r21 = ' may only contain [0-9a-fA-F] characters' - r22 = CPyStr_Build(3, r20, padded_hex, r21) - dec_ref padded_hex - if is_error(r22) goto L23 (error at hexstr_to_bytes:55) else goto L17 -L17: - r23 = builtins :: module - r24 = 'ValueError' - r25 = CPyObject_GetAttr(r23, r24) - if is_error(r25) goto L36 (error at hexstr_to_bytes:54) else goto L18 -L18: - r26 = [r22] - r27 = load_address r26 - r28 = PyObject_Vectorcall(r25, r27, 1, 0) - dec_ref r25 - if is_error(r28) goto L36 (error at hexstr_to_bytes:54) else goto L19 -L19: - dec_ref r22 - CPy_Raise(r28) - dec_ref r28 - if not 0 goto L23 (error at hexstr_to_bytes:54) else goto L37 :: bool -L20: - unreachable -L21: - CPy_Reraise() - if not 0 goto L23 else goto L38 :: bool -L22: - unreachable -L23: - CPy_RestoreExcInfo(r15) - dec_ref r15 - r29 = CPy_KeepPropagating() - if not r29 goto L31 else goto L24 :: bool -L24: - unreachable -L25: - r30 = faster_hexbytes._utils.unhexlify :: static - if is_error(r30) goto L39 else goto L28 -L26: - r31 = raise NameError('value for final name "unhexlify" was not set') - if not r31 goto L31 (error at hexstr_to_bytes:58) else goto L27 :: bool -L27: - unreachable -L28: - r32 = [r14] - r33 = load_address r32 - r34 = PyObject_Vectorcall(r30, r33, 1, 0) - if is_error(r34) goto L40 (error at hexstr_to_bytes:58) else goto L29 -L29: - dec_ref r14 - r35 = cast(bytes, r34) - if is_error(r35) goto L31 (error at hexstr_to_bytes:58) else goto L30 -L30: - return r35 -L31: - r36 = :: bytes - return r36 -L32: - dec_ref non_prefixed_hex - goto L31 -L33: - dec_ref padded_hex - goto L13 -L34: - dec_ref padded_hex - goto L23 -L35: - dec_ref padded_hex - goto L21 -L36: - dec_ref r22 - goto L23 -L37: - dec_ref r15 - goto L20 -L38: - dec_ref r15 - goto L22 -L39: - dec_ref r14 - goto L26 -L40: - dec_ref r14 - goto L31 - -def __top_level__(): - r0, r1 :: object - r2 :: bit - r3 :: str - r4 :: object - r5 :: object_ptr - r6 :: object_ptr[1] - r7 :: c_ptr - r8 :: native_int[1] - r9 :: c_ptr - r10 :: object - r11 :: dict - r12, r13 :: str - r14 :: bit - r15 :: object - r16 :: str - r17 :: dict - r18, r19 :: object - r20 :: str - r21 :: object - r22 :: dict - r23 :: str - r24 :: i32 - r25 :: bit - r26 :: None -L0: - r0 = builtins :: module - r1 = load_address _Py_NoneStruct - r2 = r0 != r1 - if r2 goto L3 else goto L1 :: bool -L1: - r3 = 'builtins' - r4 = PyImport_Import(r3) - if is_error(r4) goto L8 (error at :-1) else goto L2 -L2: - builtins = r4 :: module - dec_ref r4 -L3: - r5 = load_address binascii :: module - r6 = [r5] - r7 = load_address r6 - r8 = [1] - r9 = load_address r8 - r10 = (('binascii', 'binascii', 'binascii'),) - r11 = faster_hexbytes._utils.globals :: static - r12 = 'faster_hexbytes/_utils.py' - r13 = '' - r14 = CPyImport_ImportMany(r10, r7, r11, r12, r13, r9) - if not r14 goto L8 else goto L4 :: bool -L4: - r15 = ('Final', 'Union') - r16 = 'typing' - r17 = faster_hexbytes._utils.globals :: static - r18 = CPyImport_ImportFromMany(r16, r15, r15, r17) - if is_error(r18) goto L8 (error at :2) else goto L5 -L5: - typing = r18 :: module - dec_ref r18 - r19 = binascii :: module - r20 = 'unhexlify' - r21 = CPyObject_GetAttr(r19, r20) - if is_error(r21) goto L8 (error at :8) else goto L6 -L6: - faster_hexbytes._utils.unhexlify = r21 :: static - r22 = faster_hexbytes._utils.globals :: static - r23 = 'unhexlify' - r24 = CPyDict_SetItem(r22, r23, r21) - dec_ref r21 - r25 = r24 >= 0 :: signed - if not r25 goto L8 (error at :8) else goto L7 :: bool -L7: - return 1 -L8: - r26 = :: None - return r26 From 46be7b97b01c5e0639d2dee2109ff90846ce0cff Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 8 Oct 2025 07:55:59 +0000 Subject: [PATCH 73/98] Update benchmark results [skip ci] --- benchmarks/results/_utils.md | 274 +++++----- benchmarks/results/main.md | 964 +++++++++++++++++------------------ 2 files changed, 619 insertions(+), 619 deletions(-) diff --git a/benchmarks/results/_utils.md b/benchmarks/results/_utils.md index 558a7fa..5e0909f 100644 --- a/benchmarks/results/_utils.md +++ b/benchmarks/results/_utils.md @@ -2,140 +2,140 @@ | Function | Reference Mean | Faster Mean | % Change | Speedup (%) | x Faster | Faster | |----------|---------------|-------------|----------|-------------|----------|--------| -| `hexstr_to_bytes['']` | 1.8448173054630068e-05 | 1.1081327282258675e-05 | 39.93% | 66.48% | 1.66x | ✅ | -| `hexstr_to_bytes['0x'+'0'*128]` | 3.5010302596263576e-05 | 2.1963078559743485e-05 | 37.27% | 59.41% | 1.59x | ✅ | -| `hexstr_to_bytes['0x'+'00'*64]` | 3.5872280479722826e-05 | 2.1835577381899273e-05 | 39.13% | 64.28% | 1.64x | ✅ | -| `hexstr_to_bytes['0x'+'00ff'*16]` | 3.207654558679734e-05 | 1.869541155559719e-05 | 41.72% | 71.57% | 1.72x | ✅ | -| `hexstr_to_bytes['0x'+'0123456789abcdef'*8]` | 3.4987447867315116e-05 | 2.178945236948726e-05 | 37.72% | 60.57% | 1.61x | ✅ | -| `hexstr_to_bytes['0x'+'1'*64]` | 3.2389060060779915e-05 | 1.8501119211229607e-05 | 42.88% | 75.07% | 1.75x | ✅ | -| `hexstr_to_bytes['0x'+'1234567890abcdef'*8]` | 3.444874510553207e-05 | 2.1502671017062903e-05 | 37.58% | 60.21% | 1.60x | ✅ | -| `hexstr_to_bytes['0x'+'a'*128]` | 3.5264738009439144e-05 | 2.158244799088343e-05 | 38.80% | 63.40% | 1.63x | ✅ | -| `hexstr_to_bytes['0x'+'a1b2c3d4'*8]` | 3.2396264056787564e-05 | 1.8735612379785145e-05 | 42.17% | 72.91% | 1.73x | ✅ | -| `hexstr_to_bytes['0x'+'b'*2048]` | 0.0001398787403252671 | 0.0001236088855531614 | 11.63% | 13.16% | 1.13x | ✅ | -| `hexstr_to_bytes['0x'+'badc0ffee0ddf00d'*4]` | 3.2141636095463136e-05 | 1.8578952246858088e-05 | 42.20% | 73.00% | 1.73x | ✅ | -| `hexstr_to_bytes['0x'+'beef'*16]` | 3.125322299956043e-05 | 1.847773134031433e-05 | 40.88% | 69.14% | 1.69x | ✅ | -| `hexstr_to_bytes['0x'+'c'*1024]` | 9.174784195341271e-05 | 7.372294570322513e-05 | 19.65% | 24.45% | 1.24x | ✅ | -| `hexstr_to_bytes['0x'+'cafebabe'*8]` | 3.206340673007434e-05 | 1.860500047978184e-05 | 41.97% | 72.34% | 1.72x | ✅ | -| `hexstr_to_bytes['0x'+'d'*512]` | 5.873433669224578e-05 | 4.221991293357004e-05 | 28.12% | 39.12% | 1.39x | ✅ | -| `hexstr_to_bytes['0x'+'dead'*16]` | 3.180377264061887e-05 | 1.8717742330490115e-05 | 41.15% | 69.91% | 1.70x | ✅ | -| `hexstr_to_bytes['0x'+'e'*256]` | 4.4382508443150276e-05 | 2.855283578799186e-05 | 35.67% | 55.44% | 1.55x | ✅ | -| `hexstr_to_bytes['0x'+'f'*128]` | 3.495303635696786e-05 | 2.1718649302139505e-05 | 37.86% | 60.94% | 1.61x | ✅ | -| `hexstr_to_bytes['0x'+'f'*64]` | 3.2189130050460675e-05 | 1.8570359597155347e-05 | 42.31% | 73.34% | 1.73x | ✅ | -| `hexstr_to_bytes['0x'+'facefeed'*8]` | 3.1915963751809865e-05 | 1.8586999385518e-05 | 41.76% | 71.71% | 1.72x | ✅ | -| `hexstr_to_bytes['0x'+'ff'*32]` | 3.1905875591085456e-05 | 1.872841641170212e-05 | 41.30% | 70.36% | 1.70x | ✅ | -| `hexstr_to_bytes['0x'+'ff00'*16]` | 3.2106684891321425e-05 | 1.869685182626014e-05 | 41.77% | 71.72% | 1.72x | ✅ | -| `hexstr_to_bytes['0x']` | 2.2841874514238e-05 | 1.070881031847781e-05 | 53.12% | 113.30% | 2.13x | ✅ | -| `hexstr_to_bytes['0x0']` | 3.219212926666915e-05 | 1.9252426841545055e-05 | 40.20% | 67.21% | 1.67x | ✅ | -| `hexstr_to_bytes['0x1']` | 3.1901743141036275e-05 | 1.8980112380918578e-05 | 40.50% | 68.08% | 1.68x | ✅ | -| `hexstr_to_bytes['0x1234']` | 2.9499241468315646e-05 | 1.6726659333468447e-05 | 43.30% | 76.36% | 1.76x | ✅ | -| `hexstr_to_bytes['0xCAFEBABE']` | 2.9741717442893304e-05 | 1.6433473688372215e-05 | 44.75% | 80.98% | 1.81x | ✅ | -| `hexstr_to_bytes['0xabcdef']` | 2.9782669488161317e-05 | 1.62653914218193e-05 | 45.39% | 83.10% | 1.83x | ✅ | -| `hexstr_to_bytes['0xdeadbeef']` | 2.9666457610410784e-05 | 1.640743453376295e-05 | 44.69% | 80.81% | 1.81x | ✅ | -| `hexstr_to_bytes['deadbeef']` | 2.2690808462857158e-05 | 1.4418166275825207e-05 | 36.46% | 57.38% | 1.57x | ✅ | -| `to_bytes['']` | 2.865643236061303e-05 | 1.2222655397417577e-05 | 57.35% | 134.45% | 2.34x | ✅ | -| `to_bytes['0x'+'00'*64]` | 4.8784657924300516e-05 | 2.341495978085352e-05 | 52.00% | 108.35% | 2.08x | ✅ | -| `to_bytes['0x'+'a'*128]` | 4.8496313290994355e-05 | 2.2836847571904974e-05 | 52.91% | 112.36% | 2.12x | ✅ | -| `to_bytes['0x'+'ff'*32]` | 4.386399464230912e-05 | 1.9831429689361942e-05 | 54.79% | 121.18% | 2.21x | ✅ | -| `to_bytes['0x']` | 3.411775089291513e-05 | 1.2469393681146973e-05 | 63.45% | 173.61% | 2.74x | ✅ | -| `to_bytes['0x1234']` | 4.0758243663260276e-05 | 1.7902721023036014e-05 | 56.08% | 127.67% | 2.28x | ✅ | -| `to_bytes['0xCAFEBABE']` | 4.150746846565401e-05 | 1.7776359062763724e-05 | 57.17% | 133.50% | 2.33x | ✅ | -| `to_bytes['0xabcdef']` | 4.137074395266492e-05 | 1.7867306827215806e-05 | 56.81% | 131.54% | 2.32x | ✅ | -| `to_bytes['0xdeadbeef']` | 4.052291114368097e-05 | 1.7808346038185112e-05 | 56.05% | 127.55% | 2.28x | ✅ | -| `to_bytes['abc']` | 3.725041229930926e-05 | 1.9893637376178685e-05 | 46.59% | 87.25% | 1.87x | ✅ | -| `to_bytes['deadbeef']` | 3.28707727173849e-05 | 1.5747286292947015e-05 | 52.09% | 108.74% | 2.09x | ✅ | -| `to_bytes[0-9]` | 6.392680429027989e-06 | 3.6665572175734814e-06 | 42.64% | 74.35% | 1.74x | ✅ | -| `to_bytes[0]` | 7.474990538374166e-05 | 3.1264307007406345e-05 | 58.17% | 139.09% | 2.39x | ✅ | -| `to_bytes[123456]` | 8.031723937717636e-05 | 3.583260732121917e-05 | 55.39% | 124.15% | 2.24x | ✅ | -| `to_bytes[2**16]` | 7.867131007941883e-05 | 3.543881033746167e-05 | 54.95% | 121.99% | 2.22x | ✅ | -| `to_bytes[2**256-1]` | 8.307037388319841e-05 | 3.999529664536154e-05 | 51.85% | 107.70% | 2.08x | ✅ | -| `to_bytes[2**32]` | 8.138002992487582e-05 | 3.768455911305675e-05 | 53.69% | 115.95% | 2.16x | ✅ | -| `to_bytes[2**64]` | 8.428159123745304e-05 | 3.936584078727712e-05 | 53.29% | 114.10% | 2.14x | ✅ | -| `to_bytes[2**8]` | 7.809924869950352e-05 | 3.4441774366024405e-05 | 55.90% | 126.76% | 2.27x | ✅ | -| `to_bytes[4-byte pattern]` | 6.431185549605626e-06 | 3.5980801152854216e-06 | 44.05% | 78.74% | 1.79x | ✅ | -| `to_bytes[False]` | 2.2332413291133547e-05 | 4.182064017718794e-06 | 81.27% | 434.00% | 5.34x | ✅ | -| `to_bytes[True]` | 2.1212508048572107e-05 | 4.396064199077823e-06 | 79.28% | 382.53% | 4.83x | ✅ | -| `to_bytes[all byte values]` | 6.4051107715197005e-06 | 3.659983388573715e-06 | 42.86% | 75.00% | 1.75x | ✅ | -| `to_bytes[alternating 0x00/0xff]` | 6.291576331053291e-06 | 3.588196285281199e-06 | 42.97% | 75.34% | 1.75x | ✅ | -| `to_bytes[alternating 0xaa/0x55]` | 6.194616538288459e-06 | 3.6003222282648873e-06 | 41.88% | 72.06% | 1.72x | ✅ | -| `to_bytes[ascii sentence]` | 6.235820939835287e-06 | 3.6054959932631564e-06 | 42.18% | 72.95% | 1.73x | ✅ | -| `to_bytes[b'']` | 6.247750855499567e-06 | 3.5606263584800245e-06 | 43.01% | 75.47% | 1.75x | ✅ | -| `to_bytes[b'\\x00'*32]` | 6.248676519153925e-06 | 3.3745443494729644e-06 | 46.00% | 85.17% | 1.85x | ✅ | -| `to_bytes[b'\\x00\\xff\\x00\\xff']` | 6.26840453637847e-06 | 3.5393130577618807e-06 | 43.54% | 77.11% | 1.77x | ✅ | -| `to_bytes[b'\\x01'*100]` | 6.336584323221155e-06 | 3.5939162551217587e-06 | 43.28% | 76.31% | 1.76x | ✅ | -| `to_bytes[b'\\x01'*2048]` | 6.390587741813924e-06 | 3.603225833318425e-06 | 43.62% | 77.36% | 1.77x | ✅ | -| `to_bytes[b'\\x01\\x02\\x03']` | 6.277859385984753e-06 | 3.6065595523320303e-06 | 42.55% | 74.07% | 1.74x | ✅ | -| `to_bytes[b'\\x10\\x20\\x30\\x40\\x50']` | 6.301466782496292e-06 | 3.4131452737215008e-06 | 45.84% | 84.62% | 1.85x | ✅ | -| `to_bytes[b'\\x7f'*8]` | 6.103761197689352e-06 | 3.5084465223527928e-06 | 42.52% | 73.97% | 1.74x | ✅ | -| `to_bytes[b'\\x80'*8]` | 6.345391992893792e-06 | 3.6846543980723536e-06 | 41.93% | 72.21% | 1.72x | ✅ | -| `to_bytes[b'\\xde\\xad\\xbe\\xef']` | 6.486572866741052e-06 | 3.667832499695979e-06 | 43.46% | 76.85% | 1.77x | ✅ | -| `to_bytes[b'\\xff'*64]` | 6.220489174384481e-06 | 3.589998349570086e-06 | 42.29% | 73.27% | 1.73x | ✅ | -| `to_bytes[b'a'*1024]` | 6.322454795164475e-06 | 3.6109064872519575e-06 | 42.89% | 75.09% | 1.75x | ✅ | -| `to_bytes[b'abc']` | 5.983371371601951e-06 | 3.596904579432301e-06 | 39.88% | 66.35% | 1.66x | ✅ | -| `to_bytes[bytearray(0-9)]` | 2.851752689179582e-05 | 1.4100032948586441e-05 | 50.56% | 102.25% | 2.02x | ✅ | -| `to_bytes[bytearray(4-byte pattern)]` | 2.845067834059761e-05 | 1.4245819424813336e-05 | 49.93% | 99.71% | 2.00x | ✅ | -| `to_bytes[bytearray(all byte values)]` | 2.847146062039673e-05 | 1.4114352870484827e-05 | 50.43% | 101.72% | 2.02x | ✅ | -| `to_bytes[bytearray(alternating 0x00/0xff)]` | 2.8244084219536807e-05 | 1.4108083916372851e-05 | 50.05% | 100.20% | 2.00x | ✅ | -| `to_bytes[bytearray(alternating 0xaa/0x55)]` | 2.6805007249030893e-05 | 1.406473615913314e-05 | 47.53% | 90.58% | 1.91x | ✅ | -| `to_bytes[bytearray(ascii sentence)]` | 2.823413988970806e-05 | 1.4000302125732125e-05 | 50.41% | 101.67% | 2.02x | ✅ | -| `to_bytes[bytearray(b'')]` | 2.6639069173684403e-05 | 1.2602941826560676e-05 | 52.69% | 111.37% | 2.11x | ✅ | -| `to_bytes[bytearray(b'\\x00'*32)]` | 2.8156118972531e-05 | 1.3877909544068545e-05 | 50.71% | 102.88% | 2.03x | ✅ | -| `to_bytes[bytearray(b'\\x00\\xff\\x00\\xff')]` | 2.7322220413948243e-05 | 1.3869531555771666e-05 | 49.24% | 96.99% | 1.97x | ✅ | -| `to_bytes[bytearray(b'\\x01'*100)]` | 2.838248918908459e-05 | 1.4130987762821069e-05 | 50.21% | 100.85% | 2.01x | ✅ | -| `to_bytes[bytearray(b'\\x01'*2048)]` | 3.566426924335632e-05 | 1.9741059102779643e-05 | 44.65% | 80.66% | 1.81x | ✅ | -| `to_bytes[bytearray(b'\\x01\\x02\\x03')]` | 2.7769669573774038e-05 | 1.4209190864397038e-05 | 48.83% | 95.43% | 1.95x | ✅ | -| `to_bytes[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 2.821436049417827e-05 | 1.4028346484937784e-05 | 50.28% | 101.12% | 2.01x | ✅ | -| `to_bytes[bytearray(b'\\x7f'*8)]` | 2.8001111534548763e-05 | 1.4112222872031011e-05 | 49.60% | 98.42% | 1.98x | ✅ | -| `to_bytes[bytearray(b'\\x80'*8)]` | 2.8263957611526317e-05 | 1.4051768918369121e-05 | 50.28% | 101.14% | 2.01x | ✅ | -| `to_bytes[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 2.801184594699646e-05 | 1.4217942130193738e-05 | 49.24% | 97.02% | 1.97x | ✅ | -| `to_bytes[bytearray(b'\\xff'*64)]` | 2.814113498014268e-05 | 1.3949142391907784e-05 | 50.43% | 101.74% | 2.02x | ✅ | -| `to_bytes[bytearray(b'a'*1024)]` | 3.450654671454752e-05 | 1.8647268096646113e-05 | 45.96% | 85.05% | 1.85x | ✅ | -| `to_bytes[bytearray(b'abc')]` | 2.826278078576417e-05 | 1.4076240484360553e-05 | 50.20% | 100.78% | 2.01x | ✅ | -| `to_bytes[bytearray(long alternating)]` | 3.428897142317143e-05 | 1.885244665211656e-05 | 45.02% | 81.88% | 1.82x | ✅ | -| `to_bytes[bytearray(mixed pattern)]` | 2.8550843894829426e-05 | 1.4057538033805411e-05 | 50.76% | 103.10% | 2.03x | ✅ | -| `to_bytes[bytearray(multiples of 0x10)]` | 2.841128872876021e-05 | 1.4151446016212423e-05 | 50.19% | 100.77% | 2.01x | ✅ | -| `to_bytes[bytearray(palindrome ascii)]` | 2.8068802539871594e-05 | 1.4087048358979992e-05 | 49.81% | 99.25% | 1.99x | ✅ | -| `to_bytes[bytearray(palindrome numeric)]` | 2.80545669490435e-05 | 1.4007068585212743e-05 | 50.07% | 100.29% | 2.00x | ✅ | -| `to_bytes[bytearray(palindrome)]` | 2.8374768328758902e-05 | 1.4108846841136526e-05 | 50.28% | 101.11% | 2.01x | ✅ | -| `to_bytes[bytearray(repeated 0-9)]` | 2.8606785788866837e-05 | 1.4130353166296833e-05 | 50.60% | 102.45% | 2.02x | ✅ | -| `to_bytes[bytearray(single 0xff)]` | 2.7300373642402008e-05 | 1.3885423983501136e-05 | 49.14% | 96.61% | 1.97x | ✅ | -| `to_bytes[bytearray(single null byte)]` | 2.814976992575725e-05 | 1.386862396273808e-05 | 50.73% | 102.97% | 2.03x | ✅ | -| `to_bytes[bytearray(two patterns)]` | 2.819769312027098e-05 | 1.3986306562031273e-05 | 50.40% | 101.61% | 2.02x | ✅ | -| `to_bytes[long alternating]` | 6.396609815380122e-06 | 3.439330397220323e-06 | 46.23% | 85.98% | 1.86x | ✅ | -| `to_bytes[memoryview(0-9)]` | 4.255114393825894e-05 | 1.686850578079563e-05 | 60.36% | 152.25% | 2.52x | ✅ | -| `to_bytes[memoryview(4-byte pattern)]` | 4.335974687951539e-05 | 1.771775709983696e-05 | 59.14% | 144.72% | 2.45x | ✅ | -| `to_bytes[memoryview(all byte values)]` | 4.2927701557385316e-05 | 1.7745172128233992e-05 | 58.66% | 141.91% | 2.42x | ✅ | -| `to_bytes[memoryview(alternating 0x00/0xff)]` | 4.178031067742147e-05 | 1.6858626134633555e-05 | 59.65% | 147.83% | 2.48x | ✅ | -| `to_bytes[memoryview(alternating 0xaa/0x55)]` | 4.139789092845351e-05 | 1.6836062220090475e-05 | 59.33% | 145.89% | 2.46x | ✅ | -| `to_bytes[memoryview(ascii sentence)]` | 4.129124266139894e-05 | 1.680817534214905e-05 | 59.29% | 145.66% | 2.46x | ✅ | -| `to_bytes[memoryview(b'')]` | 4.1053105093802525e-05 | 1.5148793779229502e-05 | 63.10% | 171.00% | 2.71x | ✅ | -| `to_bytes[memoryview(b'\\x00'*32)]` | 4.110585039715829e-05 | 1.6502010166339198e-05 | 59.85% | 149.10% | 2.49x | ✅ | -| `to_bytes[memoryview(b'\\x00\\xff\\x00\\xff')]` | 4.2435316612999743e-05 | 1.6861035691154262e-05 | 60.27% | 151.68% | 2.52x | ✅ | -| `to_bytes[memoryview(b'\\x01'*100)]` | 4.324380330197488e-05 | 1.745931870406607e-05 | 59.63% | 147.68% | 2.48x | ✅ | -| `to_bytes[memoryview(b'\\x01'*2048)]` | 5.0206085110919153e-05 | 2.471243934399673e-05 | 50.78% | 103.16% | 2.03x | ✅ | -| `to_bytes[memoryview(b'\\x01\\x02\\x03')]` | 4.2447757119633205e-05 | 1.6994701376815252e-05 | 59.96% | 149.77% | 2.50x | ✅ | -| `to_bytes[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 4.1248679638937775e-05 | 1.734914864868936e-05 | 57.94% | 137.76% | 2.38x | ✅ | -| `to_bytes[memoryview(b'\\x7f'*8)]` | 4.174658051909768e-05 | 1.679007976846315e-05 | 59.78% | 148.64% | 2.49x | ✅ | -| `to_bytes[memoryview(b'\\x80'*8)]` | 4.277517067909022e-05 | 1.6897968547959087e-05 | 60.50% | 153.14% | 2.53x | ✅ | -| `to_bytes[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 4.267069336174905e-05 | 1.6777520890177795e-05 | 60.68% | 154.33% | 2.54x | ✅ | -| `to_bytes[memoryview(b'\\xff'*64)]` | 4.111431950229854e-05 | 1.6594332999044477e-05 | 59.64% | 147.76% | 2.48x | ✅ | -| `to_bytes[memoryview(b'a'*1024)]` | 4.970186674479165e-05 | 2.3308744133791374e-05 | 53.10% | 113.23% | 2.13x | ✅ | -| `to_bytes[memoryview(b'abc')]` | 4.2161779398659305e-05 | 1.7233377498499344e-05 | 59.13% | 144.65% | 2.45x | ✅ | -| `to_bytes[memoryview(long alternating)]` | 4.933880648763538e-05 | 2.379929684892584e-05 | 51.76% | 107.31% | 2.07x | ✅ | -| `to_bytes[memoryview(mixed pattern)]` | 4.336767836732776e-05 | 1.7817717463838505e-05 | 58.91% | 143.40% | 2.43x | ✅ | -| `to_bytes[memoryview(multiples of 0x10)]` | 4.2076891338922106e-05 | 1.7082655766101556e-05 | 59.40% | 146.31% | 2.46x | ✅ | -| `to_bytes[memoryview(palindrome ascii)]` | 4.275228517291261e-05 | 1.7060631694258164e-05 | 60.09% | 150.59% | 2.51x | ✅ | -| `to_bytes[memoryview(palindrome numeric)]` | 4.2494318630680566e-05 | 1.74411845198838e-05 | 58.96% | 143.64% | 2.44x | ✅ | -| `to_bytes[memoryview(palindrome)]` | 4.172269363653348e-05 | 1.6836153134686148e-05 | 59.65% | 147.82% | 2.48x | ✅ | -| `to_bytes[memoryview(repeated 0-9)]` | 4.175146999997561e-05 | 1.7582876416691497e-05 | 57.89% | 137.46% | 2.37x | ✅ | -| `to_bytes[memoryview(single 0xff)]` | 4.227267428545802e-05 | 1.733625862334249e-05 | 58.99% | 143.84% | 2.44x | ✅ | -| `to_bytes[memoryview(single null byte)]` | 4.246033378468887e-05 | 1.7390510060750006e-05 | 59.04% | 144.16% | 2.44x | ✅ | -| `to_bytes[memoryview(two patterns)]` | 4.285952619240663e-05 | 1.676726650405356e-05 | 60.88% | 155.61% | 2.56x | ✅ | -| `to_bytes[mixed pattern]` | 6.3728835067023204e-06 | 3.5144979379580874e-06 | 44.85% | 81.33% | 1.81x | ✅ | -| `to_bytes[multiples of 0x10]` | 6.353682758343685e-06 | 3.6064188856255064e-06 | 43.24% | 76.18% | 1.76x | ✅ | -| `to_bytes[palindrome ascii]` | 6.354533869329388e-06 | 3.698503023927502e-06 | 41.80% | 71.81% | 1.72x | ✅ | -| `to_bytes[palindrome numeric]` | 6.398644547904841e-06 | 3.601760442862087e-06 | 43.71% | 77.65% | 1.78x | ✅ | -| `to_bytes[palindrome]` | 6.173316469727805e-06 | 3.6074676640655877e-06 | 41.56% | 71.13% | 1.71x | ✅ | -| `to_bytes[repeated 0-9]` | 6.35993533756668e-06 | 3.5162183911763178e-06 | 44.71% | 80.87% | 1.81x | ✅ | -| `to_bytes[single 0xff]` | 6.343852087509244e-06 | 3.521705533276903e-06 | 44.49% | 80.14% | 1.80x | ✅ | -| `to_bytes[single null byte]` | 6.22791155842468e-06 | 3.5482001633570303e-06 | 43.03% | 75.52% | 1.76x | ✅ | -| `to_bytes[two patterns]` | 6.3927062921028e-06 | 3.592129844784131e-06 | 43.81% | 77.96% | 1.78x | ✅ | +| `hexstr_to_bytes['']` | 1.77237661607285e-05 | 1.0852136751025557e-05 | 38.77% | 63.32% | 1.63x | ✅ | +| `hexstr_to_bytes['0x'+'0'*128]` | 3.4249250423326997e-05 | 2.2661935033432217e-05 | 33.83% | 51.13% | 1.51x | ✅ | +| `hexstr_to_bytes['0x'+'00'*64]` | 3.4005978229019134e-05 | 2.273530171938239e-05 | 33.14% | 49.57% | 1.50x | ✅ | +| `hexstr_to_bytes['0x'+'00ff'*16]` | 3.098933392218192e-05 | 1.974450105367924e-05 | 36.29% | 56.95% | 1.57x | ✅ | +| `hexstr_to_bytes['0x'+'0123456789abcdef'*8]` | 3.411646364870308e-05 | 2.2679837057399896e-05 | 33.52% | 50.43% | 1.50x | ✅ | +| `hexstr_to_bytes['0x'+'1'*64]` | 3.095287012633853e-05 | 1.9879670117501244e-05 | 35.77% | 55.70% | 1.56x | ✅ | +| `hexstr_to_bytes['0x'+'1234567890abcdef'*8]` | 3.4369322338064215e-05 | 2.260329781602282e-05 | 34.23% | 52.05% | 1.52x | ✅ | +| `hexstr_to_bytes['0x'+'a'*128]` | 3.4045320611141995e-05 | 2.2601365765967467e-05 | 33.61% | 50.63% | 1.51x | ✅ | +| `hexstr_to_bytes['0x'+'a1b2c3d4'*8]` | 3.10951012067255e-05 | 1.971364468360512e-05 | 36.60% | 57.73% | 1.58x | ✅ | +| `hexstr_to_bytes['0x'+'b'*2048]` | 0.00013563677777443528 | 0.00012143463440062397 | 10.47% | 11.70% | 1.12x | ✅ | +| `hexstr_to_bytes['0x'+'badc0ffee0ddf00d'*4]` | 3.138700727593345e-05 | 1.997641056294928e-05 | 36.35% | 57.12% | 1.57x | ✅ | +| `hexstr_to_bytes['0x'+'beef'*16]` | 3.107871443457163e-05 | 1.9642913429833737e-05 | 36.80% | 58.22% | 1.58x | ✅ | +| `hexstr_to_bytes['0x'+'c'*1024]` | 8.878954802613057e-05 | 7.256567801335433e-05 | 18.27% | 22.36% | 1.22x | ✅ | +| `hexstr_to_bytes['0x'+'cafebabe'*8]` | 3.1059725261225576e-05 | 1.9804716114500143e-05 | 36.24% | 56.83% | 1.57x | ✅ | +| `hexstr_to_bytes['0x'+'d'*512]` | 5.659439538229879e-05 | 4.242287776630478e-05 | 25.04% | 33.41% | 1.33x | ✅ | +| `hexstr_to_bytes['0x'+'dead'*16]` | 3.110094439308227e-05 | 1.971534950974133e-05 | 36.61% | 57.75% | 1.58x | ✅ | +| `hexstr_to_bytes['0x'+'e'*256]` | 4.290366060087679e-05 | 2.9047865182033338e-05 | 32.30% | 47.70% | 1.48x | ✅ | +| `hexstr_to_bytes['0x'+'f'*128]` | 3.4123507539353215e-05 | 2.2504912243435766e-05 | 34.05% | 51.63% | 1.52x | ✅ | +| `hexstr_to_bytes['0x'+'f'*64]` | 3.113486042250601e-05 | 1.976283071238423e-05 | 36.53% | 57.54% | 1.58x | ✅ | +| `hexstr_to_bytes['0x'+'facefeed'*8]` | 3.135192070767243e-05 | 1.9751410299301737e-05 | 37.00% | 58.73% | 1.59x | ✅ | +| `hexstr_to_bytes['0x'+'ff'*32]` | 3.0626234279505946e-05 | 2.0036268438610552e-05 | 34.58% | 52.85% | 1.53x | ✅ | +| `hexstr_to_bytes['0x'+'ff00'*16]` | 3.106729095195325e-05 | 1.962045279883089e-05 | 36.85% | 58.34% | 1.58x | ✅ | +| `hexstr_to_bytes['0x']` | 2.186240800727596e-05 | 1.0679751487973172e-05 | 51.15% | 104.71% | 2.05x | ✅ | +| `hexstr_to_bytes['0x0']` | 3.135500755300559e-05 | 1.9884102309504518e-05 | 36.58% | 57.69% | 1.58x | ✅ | +| `hexstr_to_bytes['0x1']` | 3.1273586851654494e-05 | 2.0126301245302324e-05 | 35.64% | 55.39% | 1.55x | ✅ | +| `hexstr_to_bytes['0x1234']` | 2.8241062891662933e-05 | 1.7739286136446057e-05 | 37.19% | 59.20% | 1.59x | ✅ | +| `hexstr_to_bytes['0xCAFEBABE']` | 2.9068630201058412e-05 | 1.776681967361229e-05 | 38.88% | 63.61% | 1.64x | ✅ | +| `hexstr_to_bytes['0xabcdef']` | 2.7925445732217786e-05 | 1.8076129637113254e-05 | 35.27% | 54.49% | 1.54x | ✅ | +| `hexstr_to_bytes['0xdeadbeef']` | 2.8434545490828152e-05 | 1.7485818053431523e-05 | 38.51% | 62.61% | 1.63x | ✅ | +| `hexstr_to_bytes['deadbeef']` | 2.187765327853597e-05 | 1.4051042976522113e-05 | 35.77% | 55.70% | 1.56x | ✅ | +| `to_bytes['']` | 2.8105658345043773e-05 | 1.2068942466146147e-05 | 57.06% | 132.88% | 2.33x | ✅ | +| `to_bytes['0x'+'00'*64]` | 4.6343935174336766e-05 | 2.467932718803689e-05 | 46.75% | 87.78% | 1.88x | ✅ | +| `to_bytes['0x'+'a'*128]` | 4.6506447132087234e-05 | 2.4401697837942446e-05 | 47.53% | 90.59% | 1.91x | ✅ | +| `to_bytes['0x'+'ff'*32]` | 4.4040155359341255e-05 | 2.1655857100855244e-05 | 50.83% | 103.36% | 2.03x | ✅ | +| `to_bytes['0x']` | 3.376783451264098e-05 | 1.2469471436001018e-05 | 63.07% | 170.80% | 2.71x | ✅ | +| `to_bytes['0x1234']` | 4.045748436621008e-05 | 1.9399449879433523e-05 | 52.05% | 108.55% | 2.09x | ✅ | +| `to_bytes['0xCAFEBABE']` | 4.0747723580174776e-05 | 1.9248693228240812e-05 | 52.76% | 111.69% | 2.12x | ✅ | +| `to_bytes['0xabcdef']` | 4.045162168780601e-05 | 1.9299390168853985e-05 | 52.29% | 109.60% | 2.10x | ✅ | +| `to_bytes['0xdeadbeef']` | 4.0721620984913676e-05 | 1.936791649780574e-05 | 52.44% | 110.25% | 2.10x | ✅ | +| `to_bytes['abc']` | 3.6409918286084695e-05 | 1.987414820204683e-05 | 45.42% | 83.20% | 1.83x | ✅ | +| `to_bytes['deadbeef']` | 3.1875264720979325e-05 | 1.5705215136998788e-05 | 50.73% | 102.96% | 2.03x | ✅ | +| `to_bytes[0-9]` | 6.267389781075556e-06 | 3.409486393086022e-06 | 45.60% | 83.82% | 1.84x | ✅ | +| `to_bytes[0]` | 7.425035260055863e-05 | 3.3330956267910446e-05 | 55.11% | 122.77% | 2.23x | ✅ | +| `to_bytes[123456]` | 7.881845722370163e-05 | 3.843915809325949e-05 | 51.23% | 105.05% | 2.05x | ✅ | +| `to_bytes[2**16]` | 8.099282443231269e-05 | 3.662625978081626e-05 | 54.78% | 121.13% | 2.21x | ✅ | +| `to_bytes[2**256-1]` | 8.415127578205072e-05 | 4.265087564494082e-05 | 49.32% | 97.30% | 1.97x | ✅ | +| `to_bytes[2**32]` | 8.250753026883148e-05 | 3.8287555146633336e-05 | 53.60% | 115.49% | 2.15x | ✅ | +| `to_bytes[2**64]` | 8.363211059805936e-05 | 4.1013310816989464e-05 | 50.96% | 103.91% | 2.04x | ✅ | +| `to_bytes[2**8]` | 7.874077924703053e-05 | 3.5794775711434604e-05 | 54.54% | 119.98% | 2.20x | ✅ | +| `to_bytes[4-byte pattern]` | 6.2694981083902715e-06 | 3.5911966469575457e-06 | 42.72% | 74.58% | 1.75x | ✅ | +| `to_bytes[False]` | 2.218916592060718e-05 | 3.943979362440606e-06 | 82.23% | 462.61% | 5.63x | ✅ | +| `to_bytes[True]` | 2.240339179317279e-05 | 3.931329779722236e-06 | 82.45% | 469.87% | 5.70x | ✅ | +| `to_bytes[all byte values]` | 6.374186943757589e-06 | 3.4043199320995713e-06 | 46.59% | 87.24% | 1.87x | ✅ | +| `to_bytes[alternating 0x00/0xff]` | 6.415446012054518e-06 | 3.5283113991208645e-06 | 45.00% | 81.83% | 1.82x | ✅ | +| `to_bytes[alternating 0xaa/0x55]` | 6.082513634636216e-06 | 3.351602509081594e-06 | 44.90% | 81.48% | 1.81x | ✅ | +| `to_bytes[ascii sentence]` | 6.42206659336153e-06 | 3.5487229287901316e-06 | 44.74% | 80.97% | 1.81x | ✅ | +| `to_bytes[b'']` | 6.076445438012491e-06 | 3.3817197834889096e-06 | 44.35% | 79.69% | 1.80x | ✅ | +| `to_bytes[b'\\x00'*32]` | 6.202003694849302e-06 | 3.3984232691690326e-06 | 45.20% | 82.50% | 1.82x | ✅ | +| `to_bytes[b'\\x00\\xff\\x00\\xff']` | 6.094847491376177e-06 | 3.377011265520447e-06 | 44.59% | 80.48% | 1.80x | ✅ | +| `to_bytes[b'\\x01'*100]` | 6.339309181386997e-06 | 3.493525032455862e-06 | 44.89% | 81.46% | 1.81x | ✅ | +| `to_bytes[b'\\x01'*2048]` | 6.2003570615909e-06 | 3.3668706777515018e-06 | 45.70% | 84.16% | 1.84x | ✅ | +| `to_bytes[b'\\x01\\x02\\x03']` | 6.178313495023761e-06 | 3.7662555999008113e-06 | 39.04% | 64.04% | 1.64x | ✅ | +| `to_bytes[b'\\x10\\x20\\x30\\x40\\x50']` | 6.395978180439182e-06 | 3.322913504549804e-06 | 48.05% | 92.48% | 1.92x | ✅ | +| `to_bytes[b'\\x7f'*8]` | 5.863515593995514e-06 | 3.441994738315133e-06 | 41.30% | 70.35% | 1.70x | ✅ | +| `to_bytes[b'\\x80'*8]` | 6.4107033491628205e-06 | 3.3607944490570046e-06 | 47.58% | 90.75% | 1.91x | ✅ | +| `to_bytes[b'\\xde\\xad\\xbe\\xef']` | 6.131870832872024e-06 | 3.5502804308658156e-06 | 42.10% | 72.72% | 1.73x | ✅ | +| `to_bytes[b'\\xff'*64]` | 6.201282917973082e-06 | 3.280209457517301e-06 | 47.10% | 89.05% | 1.89x | ✅ | +| `to_bytes[b'a'*1024]` | 5.866267939376335e-06 | 3.275135480525691e-06 | 44.17% | 79.12% | 1.79x | ✅ | +| `to_bytes[b'abc']` | 5.738133020280195e-06 | 3.5739416139835995e-06 | 37.72% | 60.55% | 1.61x | ✅ | +| `to_bytes[bytearray(0-9)]` | 2.8578386507418373e-05 | 1.4001424282520703e-05 | 51.01% | 104.11% | 2.04x | ✅ | +| `to_bytes[bytearray(4-byte pattern)]` | 2.8702708963577302e-05 | 1.3819529348455197e-05 | 51.85% | 107.70% | 2.08x | ✅ | +| `to_bytes[bytearray(all byte values)]` | 2.9351842838587287e-05 | 1.408273912164685e-05 | 52.02% | 108.42% | 2.08x | ✅ | +| `to_bytes[bytearray(alternating 0x00/0xff)]` | 2.8111672622511436e-05 | 1.3822032744720708e-05 | 50.83% | 103.38% | 2.03x | ✅ | +| `to_bytes[bytearray(alternating 0xaa/0x55)]` | 2.827750690001025e-05 | 1.392736702080307e-05 | 50.75% | 103.04% | 2.03x | ✅ | +| `to_bytes[bytearray(ascii sentence)]` | 2.8094188500841305e-05 | 1.4052720099199044e-05 | 49.98% | 99.92% | 2.00x | ✅ | +| `to_bytes[bytearray(b'')]` | 2.625230542229368e-05 | 1.248667769193478e-05 | 52.44% | 110.24% | 2.10x | ✅ | +| `to_bytes[bytearray(b'\\x00'*32)]` | 2.774303437946171e-05 | 1.4001525342272554e-05 | 49.53% | 98.14% | 1.98x | ✅ | +| `to_bytes[bytearray(b'\\x00\\xff\\x00\\xff')]` | 2.7742665865747156e-05 | 1.4100680803331155e-05 | 49.17% | 96.75% | 1.97x | ✅ | +| `to_bytes[bytearray(b'\\x01'*100)]` | 2.8213858610625e-05 | 1.3767281826792093e-05 | 51.20% | 104.93% | 2.05x | ✅ | +| `to_bytes[bytearray(b'\\x01'*2048)]` | 3.6544412331066454e-05 | 1.9591877258283695e-05 | 46.39% | 86.53% | 1.87x | ✅ | +| `to_bytes[bytearray(b'\\x01\\x02\\x03')]` | 2.8440815740635246e-05 | 1.4063479988082985e-05 | 50.55% | 102.23% | 2.02x | ✅ | +| `to_bytes[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 2.7605729272858428e-05 | 1.3960256115485621e-05 | 49.43% | 97.75% | 1.98x | ✅ | +| `to_bytes[bytearray(b'\\x7f'*8)]` | 2.786168095496579e-05 | 1.3817784802535086e-05 | 50.41% | 101.64% | 2.02x | ✅ | +| `to_bytes[bytearray(b'\\x80'*8)]` | 2.8167304536214266e-05 | 1.3893528472532327e-05 | 50.67% | 102.74% | 2.03x | ✅ | +| `to_bytes[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 2.7828949843220507e-05 | 1.4013531083990381e-05 | 49.64% | 98.59% | 1.99x | ✅ | +| `to_bytes[bytearray(b'\\xff'*64)]` | 2.807539095081209e-05 | 1.4241074554227485e-05 | 49.28% | 97.14% | 1.97x | ✅ | +| `to_bytes[bytearray(b'a'*1024)]` | 3.489245847749765e-05 | 1.881295573584872e-05 | 46.08% | 85.47% | 1.85x | ✅ | +| `to_bytes[bytearray(b'abc')]` | 2.8332762107042827e-05 | 1.3858591822563912e-05 | 51.09% | 104.44% | 2.04x | ✅ | +| `to_bytes[bytearray(long alternating)]` | 3.4933488841662915e-05 | 1.8804903716274508e-05 | 46.17% | 85.77% | 1.86x | ✅ | +| `to_bytes[bytearray(mixed pattern)]` | 2.8792714955704674e-05 | 1.4154149808559004e-05 | 50.84% | 103.42% | 2.03x | ✅ | +| `to_bytes[bytearray(multiples of 0x10)]` | 2.8279899469614908e-05 | 1.4072510507052374e-05 | 50.24% | 100.96% | 2.01x | ✅ | +| `to_bytes[bytearray(palindrome ascii)]` | 2.8259954353513163e-05 | 1.3710262884394237e-05 | 51.49% | 106.12% | 2.06x | ✅ | +| `to_bytes[bytearray(palindrome numeric)]` | 2.823425408051225e-05 | 1.4132658899447017e-05 | 49.94% | 99.78% | 2.00x | ✅ | +| `to_bytes[bytearray(palindrome)]` | 2.816266444393642e-05 | 1.3907063487053585e-05 | 50.62% | 102.51% | 2.03x | ✅ | +| `to_bytes[bytearray(repeated 0-9)]` | 2.8565992960492765e-05 | 1.4034557156275468e-05 | 50.87% | 103.54% | 2.04x | ✅ | +| `to_bytes[bytearray(single 0xff)]` | 2.8137409148906343e-05 | 1.3908961778975017e-05 | 50.57% | 102.30% | 2.02x | ✅ | +| `to_bytes[bytearray(single null byte)]` | 2.8450467760169987e-05 | 1.3820794015533195e-05 | 51.42% | 105.85% | 2.06x | ✅ | +| `to_bytes[bytearray(two patterns)]` | 2.8220101642674872e-05 | 1.4057350988049447e-05 | 50.19% | 100.75% | 2.01x | ✅ | +| `to_bytes[long alternating]` | 6.397425634489767e-06 | 3.3717791362320173e-06 | 47.29% | 89.73% | 1.90x | ✅ | +| `to_bytes[memoryview(0-9)]` | 4.215239823610896e-05 | 1.657514426920018e-05 | 60.68% | 154.31% | 2.54x | ✅ | +| `to_bytes[memoryview(4-byte pattern)]` | 4.179961462380404e-05 | 1.7479546274630352e-05 | 58.18% | 139.13% | 2.39x | ✅ | +| `to_bytes[memoryview(all byte values)]` | 4.163550996778538e-05 | 1.7527618673535118e-05 | 57.90% | 137.54% | 2.38x | ✅ | +| `to_bytes[memoryview(alternating 0x00/0xff)]` | 4.241268536067038e-05 | 1.6444986244376372e-05 | 61.23% | 157.91% | 2.58x | ✅ | +| `to_bytes[memoryview(alternating 0xaa/0x55)]` | 4.128182200905431e-05 | 1.658709703139586e-05 | 59.82% | 148.88% | 2.49x | ✅ | +| `to_bytes[memoryview(ascii sentence)]` | 4.188391623692429e-05 | 1.682719276749448e-05 | 59.82% | 148.91% | 2.49x | ✅ | +| `to_bytes[memoryview(b'')]` | 3.965026582211508e-05 | 1.4973202557272703e-05 | 62.24% | 164.81% | 2.65x | ✅ | +| `to_bytes[memoryview(b'\\x00'*32)]` | 4.136678334747624e-05 | 1.6595713847308944e-05 | 59.88% | 149.26% | 2.49x | ✅ | +| `to_bytes[memoryview(b'\\x00\\xff\\x00\\xff')]` | 4.1979288622591687e-05 | 1.6697063427014078e-05 | 60.23% | 151.42% | 2.51x | ✅ | +| `to_bytes[memoryview(b'\\x01'*100)]` | 4.2212312927326285e-05 | 1.7441610477351963e-05 | 58.68% | 142.02% | 2.42x | ✅ | +| `to_bytes[memoryview(b'\\x01'*2048)]` | 4.899091678048274e-05 | 2.4744298607874354e-05 | 49.49% | 97.99% | 1.98x | ✅ | +| `to_bytes[memoryview(b'\\x01\\x02\\x03')]` | 4.2054208574238604e-05 | 1.6946255728862636e-05 | 59.70% | 148.16% | 2.48x | ✅ | +| `to_bytes[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 4.1023569643964116e-05 | 1.6774564792828627e-05 | 59.11% | 144.56% | 2.45x | ✅ | +| `to_bytes[memoryview(b'\\x7f'*8)]` | 4.1769384662458556e-05 | 1.6695564314690787e-05 | 60.03% | 150.18% | 2.50x | ✅ | +| `to_bytes[memoryview(b'\\x80'*8)]` | 4.165537890529569e-05 | 1.6692365466710594e-05 | 59.93% | 149.55% | 2.50x | ✅ | +| `to_bytes[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 4.168921002816518e-05 | 1.684725071313257e-05 | 59.59% | 147.45% | 2.47x | ✅ | +| `to_bytes[memoryview(b'\\xff'*64)]` | 4.167909076984162e-05 | 1.6585158292387462e-05 | 60.21% | 151.30% | 2.51x | ✅ | +| `to_bytes[memoryview(b'a'*1024)]` | 4.854265728953083e-05 | 2.3376738170522955e-05 | 51.84% | 107.65% | 2.08x | ✅ | +| `to_bytes[memoryview(b'abc')]` | 4.181055831728448e-05 | 1.738375435488289e-05 | 58.42% | 140.52% | 2.41x | ✅ | +| `to_bytes[memoryview(long alternating)]` | 4.899747226079579e-05 | 2.3132552072084938e-05 | 52.79% | 111.81% | 2.12x | ✅ | +| `to_bytes[memoryview(mixed pattern)]` | 4.229476192131309e-05 | 1.7453492162245898e-05 | 58.73% | 142.33% | 2.42x | ✅ | +| `to_bytes[memoryview(multiples of 0x10)]` | 4.184072325193825e-05 | 1.684447292299291e-05 | 59.74% | 148.39% | 2.48x | ✅ | +| `to_bytes[memoryview(palindrome ascii)]` | 4.2905374855450686e-05 | 1.6754499421598297e-05 | 60.95% | 156.08% | 2.56x | ✅ | +| `to_bytes[memoryview(palindrome numeric)]` | 4.2069894256456727e-05 | 1.700615941712513e-05 | 59.58% | 147.38% | 2.47x | ✅ | +| `to_bytes[memoryview(palindrome)]` | 4.10891821576071e-05 | 1.6595010232104988e-05 | 59.61% | 147.60% | 2.48x | ✅ | +| `to_bytes[memoryview(repeated 0-9)]` | 4.305596278237652e-05 | 1.7306060776600617e-05 | 59.81% | 148.79% | 2.49x | ✅ | +| `to_bytes[memoryview(single 0xff)]` | 4.188289051664441e-05 | 1.7003880687589265e-05 | 59.40% | 146.31% | 2.46x | ✅ | +| `to_bytes[memoryview(single null byte)]` | 4.2645366019929605e-05 | 1.700991858065131e-05 | 60.11% | 150.71% | 2.51x | ✅ | +| `to_bytes[memoryview(two patterns)]` | 4.162084224230337e-05 | 1.6721402547697092e-05 | 59.82% | 148.91% | 2.49x | ✅ | +| `to_bytes[mixed pattern]` | 6.423097421904188e-06 | 3.3827995425219623e-06 | 47.33% | 89.88% | 1.90x | ✅ | +| `to_bytes[multiples of 0x10]` | 6.402787376189776e-06 | 3.459649214865608e-06 | 45.97% | 85.07% | 1.85x | ✅ | +| `to_bytes[palindrome ascii]` | 6.3137837486608775e-06 | 3.470946808943371e-06 | 45.03% | 81.90% | 1.82x | ✅ | +| `to_bytes[palindrome numeric]` | 6.269299619105344e-06 | 3.566056777127545e-06 | 43.12% | 75.80% | 1.76x | ✅ | +| `to_bytes[palindrome]` | 6.129772218101627e-06 | 3.3864898053960572e-06 | 44.75% | 81.01% | 1.81x | ✅ | +| `to_bytes[repeated 0-9]` | 6.422852639419606e-06 | 3.4717571407826135e-06 | 45.95% | 85.00% | 1.85x | ✅ | +| `to_bytes[single 0xff]` | 6.1944903399871165e-06 | 3.07326596133024e-06 | 50.39% | 101.56% | 2.02x | ✅ | +| `to_bytes[single null byte]` | 6.176471726333307e-06 | 3.463437238097278e-06 | 43.93% | 78.33% | 1.78x | ✅ | +| `to_bytes[two patterns]` | 6.418303294119742e-06 | 3.4195050402016236e-06 | 46.72% | 87.70% | 1.88x | ✅ | diff --git a/benchmarks/results/main.md b/benchmarks/results/main.md index 67f7743..c8ab10a 100644 --- a/benchmarks/results/main.md +++ b/benchmarks/results/main.md @@ -2,485 +2,485 @@ | Function | Reference Mean | Faster Mean | % Change | Speedup (%) | x Faster | Faster | |----------|---------------|-------------|----------|-------------|----------|--------| -| `hexbytes_getitem_index[-1-0-9]` | 2.4974771827181897e-05 | 2.3489039626820835e-05 | 5.95% | 6.33% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-4-byte pattern]` | 2.5042264261058584e-05 | 2.364848536772021e-05 | 5.57% | 5.89% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-all byte values]` | 2.5137855625638378e-05 | 2.3720033546297786e-05 | 5.64% | 5.98% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-alternating 0x00/0xff]` | 2.5030684153374865e-05 | 2.3552104820489803e-05 | 5.91% | 6.28% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-alternating 0xaa/0x55]` | 2.505620069627172e-05 | 2.3483708569485328e-05 | 6.28% | 6.70% | 1.07x | ✅ | -| `hexbytes_getitem_index[-1-ascii sentence]` | 2.5064513305574524e-05 | 2.3718124057050798e-05 | 5.37% | 5.68% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x00'*32]` | 2.4985265340223425e-05 | 2.3454761228561156e-05 | 6.13% | 6.53% | 1.07x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x00\\xff\\x00\\xff']` | 2.505699557364792e-05 | 2.3524084615638373e-05 | 6.12% | 6.52% | 1.07x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x01'*100]` | 2.506672216969694e-05 | 2.3596224371056686e-05 | 5.87% | 6.23% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x01'*2048]` | 2.497479688223083e-05 | 2.3483547967537782e-05 | 5.97% | 6.35% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x01\\x02\\x03']` | 2.4442670332048083e-05 | 2.3401986597870747e-05 | 4.26% | 4.45% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.5074086215810466e-05 | 2.3598864463180418e-05 | 5.88% | 6.25% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x7f'*8]` | 2.5065014151333793e-05 | 2.3543938923351243e-05 | 6.07% | 6.46% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x80'*8]` | 2.5220519874327197e-05 | 2.37157888911254e-05 | 5.97% | 6.34% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-b'\\xde\\xad\\xbe\\xef']` | 2.504567603742626e-05 | 2.3494605446047307e-05 | 6.19% | 6.60% | 1.07x | ✅ | -| `hexbytes_getitem_index[-1-b'\\xff'*64]` | 2.4932125768517834e-05 | 2.3438983457583956e-05 | 5.99% | 6.37% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-b'a'*1024]` | 2.4882742317005563e-05 | 2.339541785963384e-05 | 5.98% | 6.36% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-b'abc']` | 2.5031112124800094e-05 | 2.3545826504433072e-05 | 5.93% | 6.31% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-long alternating]` | 2.4832978894317234e-05 | 2.3595585601205813e-05 | 4.98% | 5.24% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-mixed pattern]` | 2.4779676951389124e-05 | 2.3612256333453484e-05 | 4.71% | 4.94% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-multiples of 0x10]` | 2.4824238834000748e-05 | 2.3566153141899418e-05 | 5.07% | 5.34% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-palindrome ascii]` | 2.5154203720767808e-05 | 2.3903923703467056e-05 | 4.97% | 5.23% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-palindrome numeric]` | 2.5181425994367855e-05 | 2.39232222505473e-05 | 5.00% | 5.26% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-palindrome]` | 2.4993928272304583e-05 | 2.3538769680617625e-05 | 5.82% | 6.18% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-repeated 0-9]` | 2.5077524352934472e-05 | 2.35907031759849e-05 | 5.93% | 6.30% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-two patterns]` | 2.4949906681915885e-05 | 2.373517911646081e-05 | 4.87% | 5.12% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-0-9]` | 2.3531756124396414e-05 | 2.2741287052293544e-05 | 3.36% | 3.48% | 1.03x | ✅ | -| `hexbytes_getitem_index[0-4-byte pattern]` | 2.3576078835835645e-05 | 2.2679761240140386e-05 | 3.80% | 3.95% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-all byte values]` | 2.3629023700159172e-05 | 2.2722122217288658e-05 | 3.84% | 3.99% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-alternating 0x00/0xff]` | 2.3975276876259966e-05 | 2.2800886374743004e-05 | 4.90% | 5.15% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-alternating 0xaa/0x55]` | 2.3189177823695155e-05 | 2.2679946931536876e-05 | 2.20% | 2.25% | 1.02x | ✅ | -| `hexbytes_getitem_index[0-ascii sentence]` | 2.3624156649738275e-05 | 2.2553473080793245e-05 | 4.53% | 4.75% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-b'\\x00'*32]` | 2.353438258120873e-05 | 2.2734915814411394e-05 | 3.40% | 3.52% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-b'\\x00\\xff\\x00\\xff']` | 2.374878959330058e-05 | 2.2614185246510433e-05 | 4.78% | 5.02% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-b'\\x01'*100]` | 2.41279313863889e-05 | 2.2596522353938602e-05 | 6.35% | 6.78% | 1.07x | ✅ | -| `hexbytes_getitem_index[0-b'\\x01'*2048]` | 2.3554666650036696e-05 | 2.2645970119406046e-05 | 3.86% | 4.01% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-b'\\x01\\x02\\x03']` | 2.3512114840641765e-05 | 2.271148158157297e-05 | 3.41% | 3.53% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-b'\\x10\\x20\\x30\\x40\\x50']` | 2.377904033408723e-05 | 2.2618658803571557e-05 | 4.88% | 5.13% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-b'\\x7f'*8]` | 2.3571377122273238e-05 | 2.2711353447942822e-05 | 3.65% | 3.79% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-b'\\x80'*8]` | 2.3752596990966765e-05 | 2.2615238351887905e-05 | 4.79% | 5.03% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-b'\\xde\\xad\\xbe\\xef']` | 2.3661120894013888e-05 | 2.2695572302769318e-05 | 4.08% | 4.25% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-b'\\xff'*64]` | 2.3429939678251354e-05 | 2.2578077607577794e-05 | 3.64% | 3.77% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-b'a'*1024]` | 2.3586346502094735e-05 | 2.2583989892457297e-05 | 4.25% | 4.44% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-b'abc']` | 2.3596641890355795e-05 | 2.284988144270888e-05 | 3.16% | 3.27% | 1.03x | ✅ | -| `hexbytes_getitem_index[0-long alternating]` | 2.3579629902354034e-05 | 2.272256452013501e-05 | 3.63% | 3.77% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-mixed pattern]` | 2.348886390218501e-05 | 2.26663205816842e-05 | 3.50% | 3.63% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-multiples of 0x10]` | 2.3755756155565336e-05 | 2.2684444549592303e-05 | 4.51% | 4.72% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-palindrome ascii]` | 2.349535370776188e-05 | 2.2770975763136598e-05 | 3.08% | 3.18% | 1.03x | ✅ | -| `hexbytes_getitem_index[0-palindrome numeric]` | 2.337190945216496e-05 | 2.2694451451694404e-05 | 2.90% | 2.99% | 1.03x | ✅ | -| `hexbytes_getitem_index[0-palindrome]` | 2.3599027229104353e-05 | 2.281287201377941e-05 | 3.33% | 3.45% | 1.03x | ✅ | -| `hexbytes_getitem_index[0-repeated 0-9]` | 2.3479737898393928e-05 | 2.2474100883792333e-05 | 4.28% | 4.47% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-single 0xff]` | 2.3556955424328008e-05 | 2.2498143798931113e-05 | 4.49% | 4.71% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-single null byte]` | 2.3544149302085754e-05 | 2.266364270510691e-05 | 3.74% | 3.89% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-two patterns]` | 2.349938523680419e-05 | 2.267407240939456e-05 | 3.51% | 3.64% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-0-9]` | 2.3941628878856478e-05 | 2.238562197061027e-05 | 6.50% | 6.95% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-4-byte pattern]` | 2.3459215480275835e-05 | 2.25035480580949e-05 | 4.07% | 4.25% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-all byte values]` | 2.3692088205424884e-05 | 2.2429812264125767e-05 | 5.33% | 5.63% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-alternating 0x00/0xff]` | 2.3446280066150825e-05 | 2.24697307576066e-05 | 4.17% | 4.35% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-alternating 0xaa/0x55]` | 2.3563639894989885e-05 | 2.242449026545892e-05 | 4.83% | 5.08% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-ascii sentence]` | 2.356930783917189e-05 | 2.255828929172418e-05 | 4.29% | 4.48% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-b'\\x00'*32]` | 2.346190082259289e-05 | 2.2626844176141594e-05 | 3.56% | 3.69% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-b'\\x00\\xff\\x00\\xff']` | 2.362062629767284e-05 | 2.252990877489162e-05 | 4.62% | 4.84% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-b'\\x01'*100]` | 2.3937010492767375e-05 | 2.258784613295552e-05 | 5.64% | 5.97% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-b'\\x01'*2048]` | 2.3646103622346774e-05 | 2.2537096775883214e-05 | 4.69% | 4.92% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-b'\\x01\\x02\\x03']` | 2.348208895580977e-05 | 2.2687027363485923e-05 | 3.39% | 3.50% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3991542947151564e-05 | 2.3337377714610525e-05 | 2.73% | 2.80% | 1.03x | ✅ | -| `hexbytes_getitem_index[1-b'\\x7f'*8]` | 2.3156590400523595e-05 | 2.2520134405915174e-05 | 2.75% | 2.83% | 1.03x | ✅ | -| `hexbytes_getitem_index[1-b'\\x80'*8]` | 2.4008837328638457e-05 | 2.2551398804038836e-05 | 6.07% | 6.46% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-b'\\xde\\xad\\xbe\\xef']` | 2.357539583778391e-05 | 2.2584879369159534e-05 | 4.20% | 4.39% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-b'\\xff'*64]` | 2.3533563567868987e-05 | 2.2618566487134104e-05 | 3.89% | 4.05% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-b'a'*1024]` | 2.3554919018231658e-05 | 2.255088105796229e-05 | 4.26% | 4.45% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-b'abc']` | 2.3492314519807196e-05 | 2.2429311127976137e-05 | 4.52% | 4.74% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-long alternating]` | 2.3914905642871082e-05 | 2.2409783783821288e-05 | 6.29% | 6.72% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-mixed pattern]` | 2.3402988815528228e-05 | 2.2310055566441695e-05 | 4.67% | 4.90% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-multiples of 0x10]` | 2.3488472063617166e-05 | 2.2483522306279873e-05 | 4.28% | 4.47% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-palindrome ascii]` | 2.3571362515272675e-05 | 2.2638198058688688e-05 | 3.96% | 4.12% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-palindrome numeric]` | 2.3684285678268387e-05 | 2.2492235377861063e-05 | 5.03% | 5.30% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-palindrome]` | 2.366675757241078e-05 | 2.2525830985712013e-05 | 4.82% | 5.06% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-repeated 0-9]` | 2.3805169802398606e-05 | 2.245219139330297e-05 | 5.68% | 6.03% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-two patterns]` | 2.351877033672121e-05 | 2.250451786009603e-05 | 4.31% | 4.51% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-0-9]` | 2.38056461531784e-05 | 2.2675536027782405e-05 | 4.75% | 4.98% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-4-byte pattern]` | 2.402414487694682e-05 | 2.255395929782672e-05 | 6.12% | 6.52% | 1.07x | ✅ | -| `hexbytes_getitem_index[2-all byte values]` | 2.379310589411092e-05 | 2.270728452906697e-05 | 4.56% | 4.78% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-alternating 0x00/0xff]` | 2.3678709834624557e-05 | 2.2926074692318642e-05 | 3.18% | 3.28% | 1.03x | ✅ | -| `hexbytes_getitem_index[2-alternating 0xaa/0x55]` | 2.3850792470361628e-05 | 2.271798365996102e-05 | 4.75% | 4.99% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-ascii sentence]` | 2.343255693489763e-05 | 2.26193151602647e-05 | 3.47% | 3.60% | 1.04x | ✅ | -| `hexbytes_getitem_index[2-b'\\x00'*32]` | 2.352765719876344e-05 | 2.2866431282427788e-05 | 2.81% | 2.89% | 1.03x | ✅ | -| `hexbytes_getitem_index[2-b'\\x00\\xff\\x00\\xff']` | 2.376434511538767e-05 | 2.266823973774627e-05 | 4.61% | 4.84% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-b'\\x01'*100]` | 2.374554875181984e-05 | 2.2639413814062238e-05 | 4.66% | 4.89% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-b'\\x01'*2048]` | 2.3587271081151273e-05 | 2.2660862347001356e-05 | 3.93% | 4.09% | 1.04x | ✅ | -| `hexbytes_getitem_index[2-b'\\x01\\x02\\x03']` | 2.3618608694549723e-05 | 2.252422297816767e-05 | 4.63% | 4.86% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3878174196126332e-05 | 2.254063021125863e-05 | 5.60% | 5.93% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-b'\\x7f'*8]` | 2.3745435800092113e-05 | 2.2745217667866628e-05 | 4.21% | 4.40% | 1.04x | ✅ | -| `hexbytes_getitem_index[2-b'\\x80'*8]` | 2.3788169696168914e-05 | 2.3546484888022876e-05 | 1.02% | 1.03% | 1.01x | ✅ | -| `hexbytes_getitem_index[2-b'\\xde\\xad\\xbe\\xef']` | 2.3646154715422308e-05 | 2.2606969852977713e-05 | 4.39% | 4.60% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-b'\\xff'*64]` | 2.3511709488648884e-05 | 2.257585984883315e-05 | 3.98% | 4.15% | 1.04x | ✅ | -| `hexbytes_getitem_index[2-b'a'*1024]` | 2.3340685865710936e-05 | 2.5423726518153615e-05 | -8.92% | -8.19% | 0.92x | ❌ | -| `hexbytes_getitem_index[2-b'abc']` | 2.3175433063217012e-05 | 2.2550647798866564e-05 | 2.70% | 2.77% | 1.03x | ✅ | -| `hexbytes_getitem_index[2-long alternating]` | 2.406417065333271e-05 | 2.2769548104464662e-05 | 5.38% | 5.69% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-mixed pattern]` | 2.381747839094766e-05 | 2.264675801248471e-05 | 4.92% | 5.17% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-multiples of 0x10]` | 2.3924167514143954e-05 | 2.2585441713199425e-05 | 5.60% | 5.93% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-palindrome ascii]` | 2.4276779224433546e-05 | 2.2666776362671148e-05 | 6.63% | 7.10% | 1.07x | ✅ | -| `hexbytes_getitem_index[2-palindrome numeric]` | 2.373319545585192e-05 | 2.2575056855609498e-05 | 4.88% | 5.13% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-palindrome]` | 2.3723200387610405e-05 | 2.2576568080127513e-05 | 4.83% | 5.08% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-repeated 0-9]` | 2.376872653679594e-05 | 2.2603089299927364e-05 | 4.90% | 5.16% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-two patterns]` | 2.401548532433942e-05 | 2.2681371105368242e-05 | 5.56% | 5.88% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-0-9]` | 2.352170183896843e-05 | 2.264768518871492e-05 | 3.72% | 3.86% | 1.04x | ✅ | -| `hexbytes_getitem_index[3-4-byte pattern]` | 2.3868960758809386e-05 | 2.2630745109388206e-05 | 5.19% | 5.47% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-all byte values]` | 2.3787084368097443e-05 | 2.2591931712582734e-05 | 5.02% | 5.29% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-alternating 0x00/0xff]` | 2.3443288876369168e-05 | 2.2621026493206824e-05 | 3.51% | 3.63% | 1.04x | ✅ | -| `hexbytes_getitem_index[3-alternating 0xaa/0x55]` | 2.3633027335032908e-05 | 2.264748181208867e-05 | 4.17% | 4.35% | 1.04x | ✅ | -| `hexbytes_getitem_index[3-ascii sentence]` | 2.359470180751561e-05 | 2.3024799231359857e-05 | 2.42% | 2.48% | 1.02x | ✅ | -| `hexbytes_getitem_index[3-b'\\x00'*32]` | 2.364100012539441e-05 | 2.269375385658395e-05 | 4.01% | 4.17% | 1.04x | ✅ | -| `hexbytes_getitem_index[3-b'\\x00\\xff\\x00\\xff']` | 2.3738466070879168e-05 | 2.2705073010270786e-05 | 4.35% | 4.55% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-b'\\x01'*100]` | 2.3083935534710256e-05 | 2.2562207394486284e-05 | 2.26% | 2.31% | 1.02x | ✅ | -| `hexbytes_getitem_index[3-b'\\x01'*2048]` | 2.3595955767761793e-05 | 2.265158743013335e-05 | 4.00% | 4.17% | 1.04x | ✅ | -| `hexbytes_getitem_index[3-b'\\x10\\x20\\x30\\x40\\x50']` | 2.356127624915128e-05 | 2.255450410187886e-05 | 4.27% | 4.46% | 1.04x | ✅ | -| `hexbytes_getitem_index[3-b'\\x7f'*8]` | 2.3504053908103263e-05 | 2.256094432605327e-05 | 4.01% | 4.18% | 1.04x | ✅ | -| `hexbytes_getitem_index[3-b'\\x80'*8]` | 2.3632465595161414e-05 | 2.2708662892991892e-05 | 3.91% | 4.07% | 1.04x | ✅ | -| `hexbytes_getitem_index[3-b'\\xde\\xad\\xbe\\xef']` | 2.3563574749203147e-05 | 2.2662682119197078e-05 | 3.82% | 3.98% | 1.04x | ✅ | -| `hexbytes_getitem_index[3-b'\\xff'*64]` | 2.3696092529924618e-05 | 2.2739265207561733e-05 | 4.04% | 4.21% | 1.04x | ✅ | -| `hexbytes_getitem_index[3-b'a'*1024]` | 2.3296208823761148e-05 | 2.2652386143788636e-05 | 2.76% | 2.84% | 1.03x | ✅ | -| `hexbytes_getitem_index[3-long alternating]` | 2.3561565001368354e-05 | 2.2674889307580227e-05 | 3.76% | 3.91% | 1.04x | ✅ | -| `hexbytes_getitem_index[3-mixed pattern]` | 2.3172947933503984e-05 | 2.3099970448697076e-05 | 0.31% | 0.32% | 1.00x | ✅ | -| `hexbytes_getitem_index[3-multiples of 0x10]` | 2.3650420659175694e-05 | 2.2677952409556314e-05 | 4.11% | 4.29% | 1.04x | ✅ | -| `hexbytes_getitem_index[3-palindrome ascii]` | 2.3255683873136807e-05 | 2.26055410408182e-05 | 2.80% | 2.88% | 1.03x | ✅ | -| `hexbytes_getitem_index[3-palindrome numeric]` | 2.35395717155596e-05 | 2.2778075907875456e-05 | 3.23% | 3.34% | 1.03x | ✅ | -| `hexbytes_getitem_index[3-palindrome]` | 2.3591208479724788e-05 | 2.261001301667473e-05 | 4.16% | 4.34% | 1.04x | ✅ | -| `hexbytes_getitem_index[3-repeated 0-9]` | 2.388416667117648e-05 | 2.2984125089478068e-05 | 3.77% | 3.92% | 1.04x | ✅ | -| `hexbytes_getitem_index[3-two patterns]` | 2.3575572267200238e-05 | 2.3043466256344212e-05 | 2.26% | 2.31% | 1.02x | ✅ | -| `hexbytes_getitem_index[4-0-9]` | 2.4525176121878088e-05 | 2.262776935211018e-05 | 7.74% | 8.39% | 1.08x | ✅ | -| `hexbytes_getitem_index[4-4-byte pattern]` | 2.3961711040371482e-05 | 2.2830564497549335e-05 | 4.72% | 4.95% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-all byte values]` | 2.3836781520838963e-05 | 2.262661709153705e-05 | 5.08% | 5.35% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-alternating 0x00/0xff]` | 2.3661589646300122e-05 | 2.2725538629943812e-05 | 3.96% | 4.12% | 1.04x | ✅ | -| `hexbytes_getitem_index[4-alternating 0xaa/0x55]` | 2.3589117664615136e-05 | 2.267387154898413e-05 | 3.88% | 4.04% | 1.04x | ✅ | -| `hexbytes_getitem_index[4-ascii sentence]` | 2.3615789050262544e-05 | 2.2752894466531613e-05 | 3.65% | 3.79% | 1.04x | ✅ | -| `hexbytes_getitem_index[4-b'\\x00'*32]` | 2.4003409113837328e-05 | 2.277283561780547e-05 | 5.13% | 5.40% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-b'\\x01'*100]` | 2.3750211963807595e-05 | 2.2549004762433642e-05 | 5.06% | 5.33% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-b'\\x01'*2048]` | 2.3552691811526164e-05 | 2.264343899004806e-05 | 3.86% | 4.02% | 1.04x | ✅ | -| `hexbytes_getitem_index[4-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3582286682078357e-05 | 2.2649426760779614e-05 | 3.96% | 4.12% | 1.04x | ✅ | -| `hexbytes_getitem_index[4-b'\\x7f'*8]` | 2.404657577595068e-05 | 2.263921945158742e-05 | 5.85% | 6.22% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-b'\\x80'*8]` | 2.3598634252889802e-05 | 2.2548374667400764e-05 | 4.45% | 4.66% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-b'\\xff'*64]` | 2.390939727575443e-05 | 2.290618567958284e-05 | 4.20% | 4.38% | 1.04x | ✅ | -| `hexbytes_getitem_index[4-b'a'*1024]` | 2.4196300895821903e-05 | 2.292420762344336e-05 | 5.26% | 5.55% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-long alternating]` | 2.3583930174205246e-05 | 2.2709808222912416e-05 | 3.71% | 3.85% | 1.04x | ✅ | -| `hexbytes_getitem_index[4-mixed pattern]` | 2.3473257249084387e-05 | 2.2862810801200704e-05 | 2.60% | 2.67% | 1.03x | ✅ | -| `hexbytes_getitem_index[4-multiples of 0x10]` | 2.5700675426862197e-05 | 2.2608641714691918e-05 | 12.03% | 13.68% | 1.14x | ✅ | -| `hexbytes_getitem_index[4-palindrome ascii]` | 2.3819243061133266e-05 | 2.262227306005961e-05 | 5.03% | 5.29% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-palindrome numeric]` | 2.400595745917811e-05 | 2.2693251534891668e-05 | 5.47% | 5.78% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-palindrome]` | 2.3850998087098813e-05 | 2.2687174970925252e-05 | 4.88% | 5.13% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-repeated 0-9]` | 2.3641713373327925e-05 | 2.2624656566259083e-05 | 4.30% | 4.50% | 1.04x | ✅ | -| `hexbytes_getitem_index[4-two patterns]` | 2.4070159762165555e-05 | 2.2801634528547795e-05 | 5.27% | 5.56% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-0-9]` | 2.3494772837147023e-05 | 2.2694280613174702e-05 | 3.41% | 3.53% | 1.04x | ✅ | -| `hexbytes_getitem_index[5-4-byte pattern]` | 2.3539414480592368e-05 | 2.2541399345093492e-05 | 4.24% | 4.43% | 1.04x | ✅ | -| `hexbytes_getitem_index[5-all byte values]` | 2.378670351749675e-05 | 2.2720870991412816e-05 | 4.48% | 4.69% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-alternating 0x00/0xff]` | 2.3702340537911896e-05 | 2.276007528074775e-05 | 3.98% | 4.14% | 1.04x | ✅ | -| `hexbytes_getitem_index[5-alternating 0xaa/0x55]` | 2.381644081747811e-05 | 2.2702645826174637e-05 | 4.68% | 4.91% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-ascii sentence]` | 2.371190746725799e-05 | 2.2871870292634872e-05 | 3.54% | 3.67% | 1.04x | ✅ | -| `hexbytes_getitem_index[5-b'\\x00'*32]` | 2.3718511583509918e-05 | 2.2744703308804984e-05 | 4.11% | 4.28% | 1.04x | ✅ | -| `hexbytes_getitem_index[5-b'\\x01'*100]` | 2.3983787632075288e-05 | 2.2541244996386022e-05 | 6.01% | 6.40% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-b'\\x01'*2048]` | 2.3556159738594564e-05 | 2.2700278746338565e-05 | 3.63% | 3.77% | 1.04x | ✅ | -| `hexbytes_getitem_index[5-b'\\x7f'*8]` | 2.3572105646880208e-05 | 2.257896869417136e-05 | 4.21% | 4.40% | 1.04x | ✅ | -| `hexbytes_getitem_index[5-b'\\x80'*8]` | 2.3542898216567608e-05 | 2.266801256491663e-05 | 3.72% | 3.86% | 1.04x | ✅ | -| `hexbytes_getitem_index[5-b'\\xff'*64]` | 2.3780395081746797e-05 | 2.25313282501527e-05 | 5.25% | 5.54% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-b'a'*1024]` | 2.355476349346277e-05 | 2.254798415098508e-05 | 4.27% | 4.47% | 1.04x | ✅ | -| `hexbytes_getitem_index[5-long alternating]` | 2.374057783340221e-05 | 2.277964168459662e-05 | 4.05% | 4.22% | 1.04x | ✅ | -| `hexbytes_getitem_index[5-mixed pattern]` | 2.351085174205443e-05 | 2.2890762876065602e-05 | 2.64% | 2.71% | 1.03x | ✅ | -| `hexbytes_getitem_index[5-multiples of 0x10]` | 2.3661982297913674e-05 | 2.277617709018382e-05 | 3.74% | 3.89% | 1.04x | ✅ | -| `hexbytes_getitem_index[5-palindrome ascii]` | 2.3598774546248065e-05 | 2.262537666056316e-05 | 4.12% | 4.30% | 1.04x | ✅ | -| `hexbytes_getitem_index[5-palindrome]` | 2.3706213826537514e-05 | 2.2602373839631426e-05 | 4.66% | 4.88% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-repeated 0-9]` | 2.388230786492813e-05 | 2.316317916154929e-05 | 3.01% | 3.10% | 1.03x | ✅ | -| `hexbytes_getitem_index[5-two patterns]` | 2.3905057368030064e-05 | 2.2806155293750798e-05 | 4.60% | 4.82% | 1.05x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-0-9]` | 8.1807222862445e-05 | 5.9997229144795717e-05 | 26.66% | 36.35% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-4-byte pattern]` | 8.24249904829631e-05 | 5.920157512010935e-05 | 28.18% | 39.23% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-all byte values]` | 8.28328714937808e-05 | 5.945431886213159e-05 | 28.22% | 39.32% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-alternating 0x00/0xff]` | 8.171498970646728e-05 | 5.955559021882913e-05 | 27.12% | 37.21% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-alternating 0xaa/0x55]` | 8.198374526523301e-05 | 5.970291985826326e-05 | 27.18% | 37.32% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-ascii sentence]` | 8.240834713923165e-05 | 5.963283501876818e-05 | 27.64% | 38.19% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'']` | 7.969795758647011e-05 | 5.615711002807323e-05 | 29.54% | 41.92% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00'*32]` | 8.198877241525693e-05 | 5.9707745320091644e-05 | 27.18% | 37.32% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00\\xff\\x00\\xff']` | 8.17918064407093e-05 | 5.904714668581873e-05 | 27.81% | 38.52% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*100]` | 8.209424241953978e-05 | 5.915423204228146e-05 | 27.94% | 38.78% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*2048]` | 8.172605460607332e-05 | 6.084237191947639e-05 | 25.55% | 34.32% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01\\x02\\x03']` | 8.228801489595033e-05 | 6.0288748536475645e-05 | 26.73% | 36.49% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.29471064853363e-05 | 5.8802073098994486e-05 | 29.11% | 41.06% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x7f'*8]` | 8.230577548053454e-05 | 5.844981281647389e-05 | 28.98% | 40.81% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x80'*8]` | 8.253931084951528e-05 | 5.861747710174186e-05 | 28.98% | 40.81% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\xde\\xad\\xbe\\xef']` | 8.184164990140425e-05 | 5.957237184411576e-05 | 27.21% | 37.38% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\xff'*64]` | 8.198956765488088e-05 | 5.97879290080012e-05 | 27.08% | 37.13% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'a'*1024]` | 8.226046065150269e-05 | 5.9544669848216484e-05 | 27.61% | 38.15% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'abc']` | 8.213643088566404e-05 | 5.93551538421285e-05 | 27.74% | 38.38% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-long alternating]` | 8.192818568827776e-05 | 5.8958645905785875e-05 | 28.04% | 38.96% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-mixed pattern]` | 8.229289210822741e-05 | 5.96561444752423e-05 | 27.51% | 37.95% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-multiples of 0x10]` | 8.248348989492053e-05 | 5.918728431986466e-05 | 28.24% | 39.36% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-palindrome ascii]` | 8.175582323536863e-05 | 6.00967978423715e-05 | 26.49% | 36.04% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-palindrome numeric]` | 8.307541912677158e-05 | 5.940485330270433e-05 | 28.49% | 39.85% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-palindrome]` | 8.181666001052151e-05 | 5.9506292464221775e-05 | 27.27% | 37.49% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-repeated 0-9]` | 8.201873724236362e-05 | 5.989782829369721e-05 | 26.97% | 36.93% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-single 0xff]` | 8.014176984330732e-05 | 5.676721928237733e-05 | 29.17% | 41.18% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-single null byte]` | 8.023517024714095e-05 | 5.64978863033118e-05 | 29.58% | 42.01% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-two patterns]` | 8.258809353715058e-05 | 5.967140330154876e-05 | 27.75% | 38.40% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-0-9]` | 8.320504102969378e-05 | 6.122787136430511e-05 | 26.41% | 35.89% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-4-byte pattern]` | 8.386511329115284e-05 | 6.123064384370873e-05 | 26.99% | 36.97% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-all byte values]` | 8.302496731844309e-05 | 5.985069594733357e-05 | 27.91% | 38.72% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-alternating 0x00/0xff]` | 8.298318365560194e-05 | 6.121100322060631e-05 | 26.24% | 35.57% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-alternating 0xaa/0x55]` | 8.203895759292778e-05 | 6.141442517776746e-05 | 25.14% | 33.58% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-ascii sentence]` | 8.272887726066396e-05 | 6.050399462428287e-05 | 26.86% | 36.73% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'']` | 8.16214827041035e-05 | 5.6771679112410643e-05 | 30.45% | 43.77% | 1.44x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x00'*32]` | 8.252451973077308e-05 | 5.9740151142291635e-05 | 27.61% | 38.14% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x00\\xff\\x00\\xff']` | 8.283976336311851e-05 | 6.04650075915595e-05 | 27.01% | 37.00% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*100]` | 8.294582069825671e-05 | 6.10532678095884e-05 | 26.39% | 35.86% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*2048]` | 8.270162740920786e-05 | 6.184498455353447e-05 | 25.22% | 33.72% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x01\\x02\\x03']` | 8.272839361042966e-05 | 6.0829623135060095e-05 | 26.47% | 36.00% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.292871643170944e-05 | 6.096480926018756e-05 | 26.49% | 36.03% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x7f'*8]` | 8.286527538676402e-05 | 6.169189214865541e-05 | 25.55% | 34.32% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x80'*8]` | 8.31859128628393e-05 | 6.166477882490589e-05 | 25.87% | 34.90% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\xde\\xad\\xbe\\xef']` | 8.287551448522554e-05 | 5.9906497303248574e-05 | 27.72% | 38.34% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\xff'*64]` | 8.255697961443967e-05 | 6.0019474513974e-05 | 27.30% | 37.55% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'a'*1024]` | 8.245024547542677e-05 | 6.027867157614011e-05 | 26.89% | 36.78% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'abc']` | 8.368583503819143e-05 | 5.961465755596654e-05 | 28.76% | 40.38% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-long alternating]` | 8.295548379642589e-05 | 6.013928916629497e-05 | 27.50% | 37.94% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-mixed pattern]` | 8.367935308764602e-05 | 6.117696927903594e-05 | 26.89% | 36.78% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-multiples of 0x10]` | 8.29518578789461e-05 | 6.114044845752947e-05 | 26.29% | 35.67% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-palindrome ascii]` | 8.31271907762547e-05 | 6.001667424137732e-05 | 27.80% | 38.51% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-palindrome numeric]` | 8.321324121600121e-05 | 6.152099074211855e-05 | 26.07% | 35.26% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-palindrome]` | 8.311192821615457e-05 | 6.100328136925232e-05 | 26.60% | 36.24% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-repeated 0-9]` | 8.329632569915867e-05 | 6.092306652066112e-05 | 26.86% | 36.72% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-single 0xff]` | 8.196026160257089e-05 | 5.915536566246934e-05 | 27.82% | 38.55% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-single null byte]` | 8.22201035343253e-05 | 5.8548341746049254e-05 | 28.79% | 40.43% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-two patterns]` | 8.232190814814828e-05 | 6.145932910340696e-05 | 25.34% | 33.95% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-0-9]` | 8.258868010255385e-05 | 6.088088283508371e-05 | 26.28% | 35.66% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-4-byte pattern]` | 8.277245663970874e-05 | 6.0985625647752965e-05 | 26.32% | 35.72% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-all byte values]` | 8.267570971055513e-05 | 6.02826868754816e-05 | 27.09% | 37.15% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-alternating 0x00/0xff]` | 8.201236396290578e-05 | 6.0641328409378736e-05 | 26.06% | 35.24% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-alternating 0xaa/0x55]` | 8.242143073396986e-05 | 6.096030701591221e-05 | 26.04% | 35.21% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-ascii sentence]` | 8.29842379128199e-05 | 6.088649241862836e-05 | 26.63% | 36.29% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'']` | 8.142580388521194e-05 | 5.8121624367200514e-05 | 28.62% | 40.10% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x00'*32]` | 8.289277337523963e-05 | 6.050633533544789e-05 | 27.01% | 37.00% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x00\\xff\\x00\\xff']` | 8.28780819384874e-05 | 6.123786576120766e-05 | 26.11% | 35.34% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*100]` | 8.342995634794507e-05 | 6.132454888673123e-05 | 26.50% | 36.05% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*2048]` | 8.22942738663925e-05 | 6.074724812180931e-05 | 26.18% | 35.47% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x01\\x02\\x03']` | 8.785850971017545e-05 | 6.0851420685632994e-05 | 30.74% | 44.38% | 1.44x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.237011906797889e-05 | 6.080076536318189e-05 | 26.19% | 35.48% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x7f'*8]` | 8.304288403907543e-05 | 6.087296798736079e-05 | 26.70% | 36.42% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x80'*8]` | 8.201738659781717e-05 | 5.9597350452819365e-05 | 27.34% | 37.62% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\xde\\xad\\xbe\\xef']` | 8.277638928329341e-05 | 6.122039053467858e-05 | 26.04% | 35.21% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\xff'*64]` | 8.316040604999328e-05 | 6.075082356484656e-05 | 26.95% | 36.89% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'a'*1024]` | 8.293158447622718e-05 | 6.104704910009789e-05 | 26.39% | 35.85% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'abc']` | 8.28772422355235e-05 | 6.126042223497819e-05 | 26.08% | 35.29% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-long alternating]` | 8.236114128629583e-05 | 6.070609849246297e-05 | 26.29% | 35.67% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-mixed pattern]` | 8.293711693275335e-05 | 6.063671806789155e-05 | 26.89% | 36.78% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-multiples of 0x10]` | 8.246577336615295e-05 | 6.12691881168452e-05 | 25.70% | 34.60% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-palindrome ascii]` | 8.224864790387141e-05 | 5.996223593900379e-05 | 27.10% | 37.17% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-palindrome numeric]` | 8.224016008737558e-05 | 6.09850875434254e-05 | 25.85% | 34.85% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-palindrome]` | 8.342185923854244e-05 | 6.111968456535099e-05 | 26.73% | 36.49% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-repeated 0-9]` | 8.302850608223495e-05 | 6.059758148631242e-05 | 27.02% | 37.02% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-single 0xff]` | 8.043169036425513e-05 | 5.7865530594262465e-05 | 28.06% | 39.00% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-single null byte]` | 8.015650566616349e-05 | 5.710166765296032e-05 | 28.76% | 40.38% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-two patterns]` | 8.457282133596841e-05 | 5.97616438055746e-05 | 29.34% | 41.52% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-0-9]` | 8.203658328402279e-05 | 5.94270381270672e-05 | 27.56% | 38.05% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-4-byte pattern]` | 8.29050258306599e-05 | 6.144798546843747e-05 | 25.88% | 34.92% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-all byte values]` | 8.400912749853867e-05 | 6.043062421078436e-05 | 28.07% | 39.02% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-alternating 0x00/0xff]` | 8.175442450887898e-05 | 6.064415729453917e-05 | 25.82% | 34.81% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-alternating 0xaa/0x55]` | 8.155910143591384e-05 | 6.021827437330682e-05 | 26.17% | 35.44% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-ascii sentence]` | 8.21928546759113e-05 | 6.023535284823682e-05 | 26.71% | 36.45% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'']` | 7.902845335250642e-05 | 5.6433174885907784e-05 | 28.59% | 40.04% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x00'*32]` | 8.220081831219888e-05 | 5.9618531988966806e-05 | 27.47% | 37.88% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x00\\xff\\x00\\xff']` | 8.204873600488273e-05 | 5.928874043575832e-05 | 27.74% | 38.39% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*100]` | 8.301904613657263e-05 | 6.0707700604737385e-05 | 26.87% | 36.75% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*2048]` | 0.0001028450807974983 | 7.734653058149073e-05 | 24.79% | 32.97% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x01\\x02\\x03']` | 7.913357391067161e-05 | 5.803811356674177e-05 | 26.66% | 36.35% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.113912022820907e-05 | 6.01611375876894e-05 | 25.85% | 34.87% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x7f'*8]` | 8.189697957093498e-05 | 6.016563712301712e-05 | 26.53% | 36.12% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x80'*8]` | 8.223554533126398e-05 | 6.0642442844547924e-05 | 26.26% | 35.61% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\xde\\xad\\xbe\\xef']` | 8.100110586110586e-05 | 6.040496717309101e-05 | 25.43% | 34.10% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\xff'*64]` | 8.276619288987653e-05 | 5.990412975134792e-05 | 27.62% | 38.16% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'a'*1024]` | 9.9628407530254e-05 | 7.427082725696609e-05 | 25.45% | 34.14% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'abc']` | 7.958902295568831e-05 | 5.762582377234449e-05 | 27.60% | 38.11% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-long alternating]` | 9.817604565083925e-05 | 7.205372688084796e-05 | 26.61% | 36.25% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-mixed pattern]` | 8.268140690101945e-05 | 6.048683274366489e-05 | 26.84% | 36.69% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-multiples of 0x10]` | 8.180102919406123e-05 | 6.016158652904973e-05 | 26.45% | 35.97% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-palindrome ascii]` | 8.116429355680348e-05 | 6.020779686382415e-05 | 25.82% | 34.81% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-palindrome numeric]` | 8.240387468311022e-05 | 6.021643443798017e-05 | 26.93% | 36.85% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-palindrome]` | 8.146512842255711e-05 | 6.0604230841119465e-05 | 25.61% | 34.42% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-repeated 0-9]` | 8.196749554932285e-05 | 6.027619760848659e-05 | 26.46% | 35.99% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-single 0xff]` | 7.909181873562078e-05 | 5.732704480460111e-05 | 27.52% | 37.97% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-single null byte]` | 7.888801554615764e-05 | 5.7596226580172724e-05 | 26.99% | 36.97% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-two patterns]` | 8.189265495283023e-05 | 5.9413997318123534e-05 | 27.45% | 37.83% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-0-9]` | 7.9152973530276e-05 | 5.969624430248428e-05 | 24.58% | 32.59% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-4-byte pattern]` | 8.18593062971767e-05 | 5.913166823805286e-05 | 27.76% | 38.44% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-all byte values]` | 8.208000934187286e-05 | 6.035494441709009e-05 | 26.47% | 36.00% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-alternating 0x00/0xff]` | 8.123016792000633e-05 | 5.8129192176410106e-05 | 28.44% | 39.74% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-alternating 0xaa/0x55]` | 8.021587733150122e-05 | 5.905375380211634e-05 | 26.38% | 35.84% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-ascii sentence]` | 8.11784417472778e-05 | 5.8444388936553094e-05 | 28.01% | 38.90% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'']` | 7.728551451728731e-05 | 5.531194321309669e-05 | 28.43% | 39.73% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x00'*32]` | 8.088997614324134e-05 | 5.956166112943284e-05 | 26.37% | 35.81% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x00\\xff\\x00\\xff']` | 8.118982444830399e-05 | 5.85445823673635e-05 | 27.89% | 38.68% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*100]` | 8.134790412224398e-05 | 5.889806324885278e-05 | 27.60% | 38.12% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*2048]` | 0.00010385878998054752 | 7.925633258559273e-05 | 23.69% | 31.04% | 1.31x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x01\\x02\\x03']` | 8.144931092152343e-05 | 5.896924712696603e-05 | 27.60% | 38.12% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.128890928782362e-05 | 5.894104014551262e-05 | 27.49% | 37.92% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x7f'*8]` | 8.124802631170336e-05 | 5.848885807476847e-05 | 28.01% | 38.91% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x80'*8]` | 8.094466198643525e-05 | 5.8836590801745915e-05 | 27.31% | 37.58% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\xde\\xad\\xbe\\xef']` | 8.153681271141924e-05 | 5.9113138530114735e-05 | 27.50% | 37.93% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\xff'*64]` | 8.409464076440318e-05 | 5.858039621103465e-05 | 30.34% | 43.55% | 1.44x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'a'*1024]` | 9.760208603052784e-05 | 6.966693940122302e-05 | 28.62% | 40.10% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'abc']` | 8.067368753605621e-05 | 5.85494093620054e-05 | 27.42% | 37.79% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-long alternating]` | 9.775082075122012e-05 | 7.343030965253507e-05 | 24.88% | 33.12% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-mixed pattern]` | 8.31031816136865e-05 | 5.990878133386008e-05 | 27.91% | 38.72% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-multiples of 0x10]` | 8.059508797707632e-05 | 5.888164899676408e-05 | 26.94% | 36.88% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-palindrome ascii]` | 8.007276574210268e-05 | 5.8767365721377277e-05 | 26.61% | 36.25% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-palindrome numeric]` | 7.996746130188414e-05 | 5.9475462797985856e-05 | 25.63% | 34.45% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-palindrome]` | 8.118084941671731e-05 | 5.829913009371328e-05 | 28.19% | 39.25% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-repeated 0-9]` | 8.177320476749755e-05 | 6.0115834146295225e-05 | 26.48% | 36.03% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-single 0xff]` | 7.84264983426921e-05 | 5.55718018044726e-05 | 29.14% | 41.13% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-single null byte]` | 7.871906521638573e-05 | 5.5951169572966895e-05 | 28.92% | 40.69% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-two patterns]` | 8.149280297410073e-05 | 5.946231747297086e-05 | 27.03% | 37.05% | 1.37x | ✅ | -| `hexbytes_new['']` | 7.148950182357841e-05 | 3.650197789704897e-05 | 48.94% | 95.85% | 1.96x | ✅ | -| `hexbytes_new['0x'+'00'*64]` | 9.358483769926962e-05 | 4.9843395498548066e-05 | 46.74% | 87.76% | 1.88x | ✅ | -| `hexbytes_new['0x'+'a'*128]` | 9.189749487968337e-05 | 4.982670872027036e-05 | 45.78% | 84.43% | 1.84x | ✅ | -| `hexbytes_new['0x'+'ff'*32]` | 8.832906475928902e-05 | 4.69525406732175e-05 | 46.84% | 88.12% | 1.88x | ✅ | -| `hexbytes_new['0x']` | 7.676769172137512e-05 | 3.816998188823712e-05 | 50.28% | 101.12% | 2.01x | ✅ | -| `hexbytes_new['0x1234']` | 8.471796234250887e-05 | 4.6204161032186073e-05 | 45.46% | 83.36% | 1.83x | ✅ | -| `hexbytes_new['0xCAFEBABE']` | 8.533961416626809e-05 | 4.477525304033944e-05 | 47.53% | 90.60% | 1.91x | ✅ | -| `hexbytes_new['0xabcdef']` | 8.503679950467101e-05 | 4.4752842991948403e-05 | 47.37% | 90.01% | 1.90x | ✅ | -| `hexbytes_new['0xdeadbeef']` | 8.534749706339073e-05 | 4.576765110275924e-05 | 46.37% | 86.48% | 1.86x | ✅ | -| `hexbytes_new['abc']` | 8.129709627774969e-05 | 4.7994103541239996e-05 | 40.96% | 69.39% | 1.69x | ✅ | -| `hexbytes_new['deadbeef']` | 7.638385932762877e-05 | 4.158883177031625e-05 | 45.55% | 83.66% | 1.84x | ✅ | -| `hexbytes_new[0-9]` | 4.289016112920993e-05 | 2.5647795783027006e-05 | 40.20% | 67.23% | 1.67x | ✅ | -| `hexbytes_new[0]` | 0.00012093895886853503 | 6.021180310364426e-05 | 50.21% | 100.86% | 2.01x | ✅ | -| `hexbytes_new[123456]` | 0.0001260200250815464 | 6.451711012853436e-05 | 48.80% | 95.33% | 1.95x | ✅ | -| `hexbytes_new[2**16]` | 0.00012559709199321813 | 6.500539311057827e-05 | 48.24% | 93.21% | 1.93x | ✅ | -| `hexbytes_new[2**256-1]` | 0.00013068302840459599 | 7.284482793926838e-05 | 44.26% | 79.40% | 1.79x | ✅ | -| `hexbytes_new[2**32]` | 0.0001281273320013475 | 6.943948900720488e-05 | 45.80% | 84.52% | 1.85x | ✅ | -| `hexbytes_new[2**64]` | 0.00013194520188788576 | 7.067452403086369e-05 | 46.44% | 86.69% | 1.87x | ✅ | -| `hexbytes_new[2**8]` | 0.00012561912582057463 | 6.274947537486014e-05 | 50.05% | 100.19% | 2.00x | ✅ | -| `hexbytes_new[4-byte pattern]` | 4.462450768751657e-05 | 2.6735683562009473e-05 | 40.09% | 66.91% | 1.67x | ✅ | -| `hexbytes_new[False]` | 6.0366210805303116e-05 | 2.7043188394343984e-05 | 55.20% | 123.22% | 2.23x | ✅ | -| `hexbytes_new[True]` | 6.017522541325868e-05 | 2.703932500996497e-05 | 55.07% | 122.55% | 2.23x | ✅ | -| `hexbytes_new[all byte values]` | 4.47246921253948e-05 | 2.6815909234065835e-05 | 40.04% | 66.78% | 1.67x | ✅ | -| `hexbytes_new[alternating 0x00/0xff]` | 4.355576031028297e-05 | 2.6621259983211745e-05 | 38.88% | 63.61% | 1.64x | ✅ | -| `hexbytes_new[alternating 0xaa/0x55]` | 4.3841356212329594e-05 | 2.6572458576985276e-05 | 39.39% | 64.99% | 1.65x | ✅ | -| `hexbytes_new[ascii sentence]` | 4.391945895007535e-05 | 2.594023706585904e-05 | 40.94% | 69.31% | 1.69x | ✅ | -| `hexbytes_new[b'']` | 4.327434264631157e-05 | 2.5416582317799044e-05 | 41.27% | 70.26% | 1.70x | ✅ | -| `hexbytes_new[b'\\x00'*32]` | 4.423827706476327e-05 | 2.576889708019414e-05 | 41.75% | 71.67% | 1.72x | ✅ | -| `hexbytes_new[b'\\x00\\xff\\x00\\xff']` | 4.320832087223283e-05 | 2.5880276633467055e-05 | 40.10% | 66.95% | 1.67x | ✅ | -| `hexbytes_new[b'\\x01'*100]` | 4.397156910626475e-05 | 2.642647733478491e-05 | 39.90% | 66.39% | 1.66x | ✅ | -| `hexbytes_new[b'\\x01'*2048]` | 5.607355055341031e-05 | 3.764157976420107e-05 | 32.87% | 48.97% | 1.49x | ✅ | -| `hexbytes_new[b'\\x01\\x02\\x03']` | 4.3018929819123396e-05 | 2.5934238600257064e-05 | 39.71% | 65.88% | 1.66x | ✅ | -| `hexbytes_new[b'\\x10\\x20\\x30\\x40\\x50']` | 4.3334456259308725e-05 | 2.5746975035217327e-05 | 40.59% | 68.31% | 1.68x | ✅ | -| `hexbytes_new[b'\\x7f'*8]` | 4.2641561860162495e-05 | 2.589991806898433e-05 | 39.26% | 64.64% | 1.65x | ✅ | -| `hexbytes_new[b'\\x80'*8]` | 4.269074874028573e-05 | 2.577659927523718e-05 | 39.62% | 65.62% | 1.66x | ✅ | -| `hexbytes_new[b'\\xde\\xad\\xbe\\xef']` | 4.318912308061793e-05 | 2.582846617434561e-05 | 40.20% | 67.22% | 1.67x | ✅ | -| `hexbytes_new[b'\\xff'*64]` | 4.417367688035411e-05 | 2.6447417936434043e-05 | 40.13% | 67.02% | 1.67x | ✅ | -| `hexbytes_new[b'a'*1024]` | 5.0931310580290575e-05 | 3.307112372235356e-05 | 35.07% | 54.01% | 1.54x | ✅ | -| `hexbytes_new[b'abc']` | 4.236298152764865e-05 | 2.5832415460961843e-05 | 39.02% | 63.99% | 1.64x | ✅ | -| `hexbytes_new[bytearray(0-9)]` | 7.045871208886052e-05 | 3.683549899608564e-05 | 47.72% | 91.28% | 1.91x | ✅ | -| `hexbytes_new[bytearray(4-byte pattern)]` | 7.166523729739957e-05 | 3.844677763998921e-05 | 46.35% | 86.40% | 1.86x | ✅ | -| `hexbytes_new[bytearray(all byte values)]` | 7.098564592167361e-05 | 3.8472049136010257e-05 | 45.80% | 84.51% | 1.85x | ✅ | -| `hexbytes_new[bytearray(alternating 0x00/0xff)]` | 6.940366444420513e-05 | 3.800467300395006e-05 | 45.24% | 82.62% | 1.83x | ✅ | -| `hexbytes_new[bytearray(alternating 0xaa/0x55)]` | 6.966829897446534e-05 | 3.763963624726345e-05 | 45.97% | 85.09% | 1.85x | ✅ | -| `hexbytes_new[bytearray(ascii sentence)]` | 6.97869359827139e-05 | 3.71550873489367e-05 | 46.76% | 87.83% | 1.88x | ✅ | -| `hexbytes_new[bytearray(b'')]` | 6.780604549383803e-05 | 3.6499190990747486e-05 | 46.17% | 85.77% | 1.86x | ✅ | -| `hexbytes_new[bytearray(b'\\x00'*32)]` | 6.992749850064798e-05 | 3.757131369904655e-05 | 46.27% | 86.12% | 1.86x | ✅ | -| `hexbytes_new[bytearray(b'\\x00\\xff\\x00\\xff')]` | 6.887641771388022e-05 | 3.7090221988645774e-05 | 46.15% | 85.70% | 1.86x | ✅ | -| `hexbytes_new[bytearray(b'\\x01'*100)]` | 6.927264757993604e-05 | 3.795827736361415e-05 | 45.20% | 82.50% | 1.82x | ✅ | -| `hexbytes_new[bytearray(b'\\x01'*2048)]` | 9.114776847639032e-05 | 5.60072029435165e-05 | 38.55% | 62.74% | 1.63x | ✅ | -| `hexbytes_new[bytearray(b'\\x01\\x02\\x03')]` | 6.922256197638075e-05 | 3.80530813998411e-05 | 45.03% | 81.91% | 1.82x | ✅ | -| `hexbytes_new[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 6.994507118533474e-05 | 3.756646216840679e-05 | 46.29% | 86.19% | 1.86x | ✅ | -| `hexbytes_new[bytearray(b'\\x7f'*8)]` | 6.94542553162907e-05 | 3.688475619873286e-05 | 46.89% | 88.30% | 1.88x | ✅ | -| `hexbytes_new[bytearray(b'\\x80'*8)]` | 6.797863074947109e-05 | 3.879106146026928e-05 | 42.94% | 75.24% | 1.75x | ✅ | -| `hexbytes_new[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 6.961445822131029e-05 | 3.769910501750878e-05 | 45.85% | 84.66% | 1.85x | ✅ | -| `hexbytes_new[bytearray(b'\\xff'*64)]` | 7.029988383586764e-05 | 3.775147892337086e-05 | 46.30% | 86.22% | 1.86x | ✅ | -| `hexbytes_new[bytearray(b'a'*1024)]` | 8.387260367202745e-05 | 5.0149086135850755e-05 | 40.21% | 67.25% | 1.67x | ✅ | -| `hexbytes_new[bytearray(b'abc')]` | 6.850292111778162e-05 | 3.798622341342398e-05 | 44.55% | 80.34% | 1.80x | ✅ | -| `hexbytes_new[bytearray(long alternating)]` | 8.488076324864742e-05 | 4.8865551231413156e-05 | 42.43% | 73.70% | 1.74x | ✅ | -| `hexbytes_new[bytearray(mixed pattern)]` | 6.978112002237504e-05 | 3.840300524136304e-05 | 44.97% | 81.71% | 1.82x | ✅ | -| `hexbytes_new[bytearray(multiples of 0x10)]` | 6.896242173837826e-05 | 3.707783368484466e-05 | 46.23% | 85.99% | 1.86x | ✅ | -| `hexbytes_new[bytearray(palindrome ascii)]` | 6.986721939549855e-05 | 3.770852082548275e-05 | 46.03% | 85.28% | 1.85x | ✅ | -| `hexbytes_new[bytearray(palindrome numeric)]` | 6.997370716813158e-05 | 3.7849418040369834e-05 | 45.91% | 84.87% | 1.85x | ✅ | -| `hexbytes_new[bytearray(palindrome)]` | 6.914011142535209e-05 | 3.773540019011639e-05 | 45.42% | 83.22% | 1.83x | ✅ | -| `hexbytes_new[bytearray(repeated 0-9)]` | 7.00657073383709e-05 | 3.831093936271626e-05 | 45.32% | 82.89% | 1.83x | ✅ | -| `hexbytes_new[bytearray(single 0xff)]` | 6.98841381596689e-05 | 3.7566400220737145e-05 | 46.24% | 86.03% | 1.86x | ✅ | -| `hexbytes_new[bytearray(single null byte)]` | 6.924880578799991e-05 | 3.767532550309247e-05 | 45.59% | 83.80% | 1.84x | ✅ | -| `hexbytes_new[bytearray(two patterns)]` | 6.947620547303888e-05 | 3.748011770995262e-05 | 46.05% | 85.37% | 1.85x | ✅ | -| `hexbytes_new[long alternating]` | 5.1097519242649246e-05 | 3.345319756360052e-05 | 34.53% | 52.74% | 1.53x | ✅ | -| `hexbytes_new[memoryview(0-9)]` | 8.343221614032439e-05 | 4.36590986728306e-05 | 47.67% | 91.10% | 1.91x | ✅ | -| `hexbytes_new[memoryview(4-byte pattern)]` | 8.285066041253311e-05 | 4.40799115675712e-05 | 46.80% | 87.96% | 1.88x | ✅ | -| `hexbytes_new[memoryview(all byte values)]` | 8.494278891791339e-05 | 4.459505322662305e-05 | 47.50% | 90.48% | 1.90x | ✅ | -| `hexbytes_new[memoryview(alternating 0x00/0xff)]` | 8.388395003962605e-05 | 4.308938878629255e-05 | 48.63% | 94.67% | 1.95x | ✅ | -| `hexbytes_new[memoryview(alternating 0xaa/0x55)]` | 8.391858533827448e-05 | 4.3179926800531924e-05 | 48.55% | 94.35% | 1.94x | ✅ | -| `hexbytes_new[memoryview(ascii sentence)]` | 8.408382146868732e-05 | 4.3468303488406014e-05 | 48.30% | 93.44% | 1.93x | ✅ | -| `hexbytes_new[memoryview(b'')]` | 8.180991201097388e-05 | 3.9934110126305814e-05 | 51.19% | 104.86% | 2.05x | ✅ | -| `hexbytes_new[memoryview(b'\\x00'*32)]` | 8.375462141026185e-05 | 4.312408647695375e-05 | 48.51% | 94.22% | 1.94x | ✅ | -| `hexbytes_new[memoryview(b'\\x00\\xff\\x00\\xff')]` | 8.339169067440344e-05 | 4.309045834321292e-05 | 48.33% | 93.53% | 1.94x | ✅ | -| `hexbytes_new[memoryview(b'\\x01'*100)]` | 8.548323533155023e-05 | 4.375384037030436e-05 | 48.82% | 95.37% | 1.95x | ✅ | -| `hexbytes_new[memoryview(b'\\x01'*2048)]` | 0.00010344784394316022 | 6.33326107820724e-05 | 38.78% | 63.34% | 1.63x | ✅ | -| `hexbytes_new[memoryview(b'\\x01\\x02\\x03')]` | 8.392134048613179e-05 | 4.320388950882725e-05 | 48.52% | 94.24% | 1.94x | ✅ | -| `hexbytes_new[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 8.309189839714384e-05 | 4.302419475116532e-05 | 48.22% | 93.13% | 1.93x | ✅ | -| `hexbytes_new[memoryview(b'\\x7f'*8)]` | 8.377004131940622e-05 | 4.352522102160985e-05 | 48.04% | 92.46% | 1.92x | ✅ | -| `hexbytes_new[memoryview(b'\\x80'*8)]` | 8.29842111926247e-05 | 4.3681221504718204e-05 | 47.36% | 89.98% | 1.90x | ✅ | -| `hexbytes_new[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 8.333172503946815e-05 | 4.330861835366188e-05 | 48.03% | 92.41% | 1.92x | ✅ | -| `hexbytes_new[memoryview(b'\\xff'*64)]` | 8.378417060732439e-05 | 4.320168562001813e-05 | 48.44% | 93.94% | 1.94x | ✅ | -| `hexbytes_new[memoryview(b'a'*1024)]` | 9.857278428497213e-05 | 5.705425636983039e-05 | 42.12% | 72.77% | 1.73x | ✅ | -| `hexbytes_new[memoryview(b'abc')]` | 8.4425066104159e-05 | 4.304196606015389e-05 | 49.02% | 96.15% | 1.96x | ✅ | -| `hexbytes_new[memoryview(long alternating)]` | 9.924816176267955e-05 | 5.740402688889272e-05 | 42.16% | 72.89% | 1.73x | ✅ | -| `hexbytes_new[memoryview(mixed pattern)]` | 8.435678032132668e-05 | 4.363051067851422e-05 | 48.28% | 93.34% | 1.93x | ✅ | -| `hexbytes_new[memoryview(multiples of 0x10)]` | 8.354137184065266e-05 | 4.3768414041803676e-05 | 47.61% | 90.87% | 1.91x | ✅ | -| `hexbytes_new[memoryview(palindrome ascii)]` | 8.331868203055655e-05 | 4.3396009563477474e-05 | 47.92% | 92.00% | 1.92x | ✅ | -| `hexbytes_new[memoryview(palindrome numeric)]` | 8.397547948203961e-05 | 4.3399830026839546e-05 | 48.32% | 93.49% | 1.93x | ✅ | -| `hexbytes_new[memoryview(palindrome)]` | 8.338533538497878e-05 | 4.349954036952347e-05 | 47.83% | 91.69% | 1.92x | ✅ | -| `hexbytes_new[memoryview(repeated 0-9)]` | 8.582737730877845e-05 | 4.413480106695719e-05 | 48.58% | 94.47% | 1.94x | ✅ | -| `hexbytes_new[memoryview(single 0xff)]` | 8.46231529023384e-05 | 4.30952027793332e-05 | 49.07% | 96.36% | 1.96x | ✅ | -| `hexbytes_new[memoryview(single null byte)]` | 8.405009030576114e-05 | 4.271293534766858e-05 | 49.18% | 96.78% | 1.97x | ✅ | -| `hexbytes_new[memoryview(two patterns)]` | 8.50920724648015e-05 | 4.33449178554612e-05 | 49.06% | 96.31% | 1.96x | ✅ | -| `hexbytes_new[mixed pattern]` | 4.427149513057917e-05 | 2.6609164969296743e-05 | 39.90% | 66.38% | 1.66x | ✅ | -| `hexbytes_new[multiples of 0x10]` | 4.258011632578378e-05 | 2.575039001995724e-05 | 39.52% | 65.36% | 1.65x | ✅ | -| `hexbytes_new[palindrome ascii]` | 4.3544252595990946e-05 | 2.5833839605496694e-05 | 40.67% | 68.56% | 1.69x | ✅ | -| `hexbytes_new[palindrome numeric]` | 4.337033624368194e-05 | 2.5953687172624074e-05 | 40.16% | 67.11% | 1.67x | ✅ | -| `hexbytes_new[palindrome]` | 4.274955952415865e-05 | 2.597662513603741e-05 | 39.24% | 64.57% | 1.65x | ✅ | -| `hexbytes_new[repeated 0-9]` | 4.4081580309151495e-05 | 2.655182822062712e-05 | 39.77% | 66.02% | 1.66x | ✅ | -| `hexbytes_new[single 0xff]` | 4.292112810721459e-05 | 2.5521212015400887e-05 | 40.54% | 68.18% | 1.68x | ✅ | -| `hexbytes_new[single null byte]` | 4.304494697523589e-05 | 2.5548954915146624e-05 | 40.65% | 68.48% | 1.68x | ✅ | -| `hexbytes_new[two patterns]` | 4.404407819320639e-05 | 2.669610311409445e-05 | 39.39% | 64.98% | 1.65x | ✅ | -| `hexbytes_repr[0-9]` | 2.9588213073828735e-05 | 1.4621829176395931e-05 | 50.58% | 102.36% | 2.02x | ✅ | -| `hexbytes_repr[4-byte pattern]` | 0.00012441522074825744 | 4.224375210193357e-05 | 66.05% | 194.52% | 2.95x | ✅ | -| `hexbytes_repr[all byte values]` | 0.0001243877588668308 | 4.2269285901795665e-05 | 66.02% | 194.27% | 2.94x | ✅ | -| `hexbytes_repr[alternating 0x00/0xff]` | 5.046478020246737e-05 | 2.0218238392069667e-05 | 59.94% | 149.60% | 2.50x | ✅ | -| `hexbytes_repr[alternating 0xaa/0x55]` | 4.982250514120161e-05 | 2.0528921799957834e-05 | 58.80% | 142.69% | 2.43x | ✅ | -| `hexbytes_repr[ascii sentence]` | 4.237967126024896e-05 | 1.8434924593134785e-05 | 56.50% | 129.89% | 2.30x | ✅ | -| `hexbytes_repr[b'']` | 2.1208347571021193e-05 | 1.2373379567997006e-05 | 41.66% | 71.40% | 1.71x | ✅ | -| `hexbytes_repr[b'\\x00'*32]` | 3.788374564663557e-05 | 1.713585504482458e-05 | 54.77% | 121.08% | 2.21x | ✅ | -| `hexbytes_repr[b'\\x00\\xff\\x00\\xff']` | 2.674949471141985e-05 | 1.4370969620486268e-05 | 46.28% | 86.14% | 1.86x | ✅ | -| `hexbytes_repr[b'\\x01'*100]` | 6.315730528153836e-05 | 2.42373472897257e-05 | 61.62% | 160.58% | 2.61x | ✅ | -| `hexbytes_repr[b'\\x01'*2048]` | 0.0008080169775453316 | 0.00023417376367213734 | 71.02% | 245.05% | 3.45x | ✅ | -| `hexbytes_repr[b'\\x01\\x02\\x03']` | 2.6317448427096368e-05 | 1.4291215619239822e-05 | 45.70% | 84.15% | 1.84x | ✅ | -| `hexbytes_repr[b'\\x10\\x20\\x30\\x40\\x50']` | 2.693674298351449e-05 | 1.4406292120774373e-05 | 46.52% | 86.98% | 1.87x | ✅ | -| `hexbytes_repr[b'\\x7f'*8]` | 2.8624203074748704e-05 | 1.4631226932397154e-05 | 48.89% | 95.64% | 1.96x | ✅ | -| `hexbytes_repr[b'\\x80'*8]` | 2.8676307806495364e-05 | 1.48070931068369e-05 | 48.36% | 93.67% | 1.94x | ✅ | -| `hexbytes_repr[b'\\xde\\xad\\xbe\\xef']` | 2.6334001851291295e-05 | 1.4088291076531398e-05 | 46.50% | 86.92% | 1.87x | ✅ | -| `hexbytes_repr[b'\\xff'*64]` | 4.9770784726355503e-05 | 2.0375554762540072e-05 | 59.06% | 144.27% | 2.44x | ✅ | -| `hexbytes_repr[b'a'*1024]` | 0.0004136946862825496 | 0.00012416564439337707 | 69.99% | 233.18% | 3.33x | ✅ | -| `hexbytes_repr[b'abc']` | 2.6364721121036088e-05 | 1.425297676011533e-05 | 45.94% | 84.98% | 1.85x | ✅ | -| `hexbytes_repr[long alternating]` | 0.0004166126955786844 | 0.00012752279417729153 | 69.39% | 226.70% | 3.27x | ✅ | -| `hexbytes_repr[mixed pattern]` | 0.00010138845912183875 | 3.524970446800069e-05 | 65.23% | 187.63% | 2.88x | ✅ | -| `hexbytes_repr[multiples of 0x10]` | 2.9494506836380725e-05 | 1.4631887184669185e-05 | 50.39% | 101.58% | 2.02x | ✅ | -| `hexbytes_repr[palindrome ascii]` | 2.8103322063570174e-05 | 1.4966526976495922e-05 | 46.74% | 87.77% | 1.88x | ✅ | -| `hexbytes_repr[palindrome numeric]` | 2.7575787507902326e-05 | 1.4317995433361243e-05 | 48.08% | 92.60% | 1.93x | ✅ | -| `hexbytes_repr[palindrome]` | 3.272060438767215e-05 | 1.6129531525962358e-05 | 50.71% | 102.86% | 2.03x | ✅ | -| `hexbytes_repr[repeated 0-9]` | 6.317388374999597e-05 | 2.4181129004704727e-05 | 61.72% | 161.25% | 2.61x | ✅ | -| `hexbytes_repr[single 0xff]` | 2.5584168555655887e-05 | 1.3934733512339212e-05 | 45.53% | 83.60% | 1.84x | ✅ | -| `hexbytes_repr[single null byte]` | 2.5684957868679025e-05 | 1.3949773932988784e-05 | 45.69% | 84.12% | 1.84x | ✅ | -| `hexbytes_repr[two patterns]` | 5.005306074935921e-05 | 2.0451997935656888e-05 | 59.14% | 144.73% | 2.45x | ✅ | -| `hexbytes_to_0x_hex[0-9]` | 1.5705236758283588e-05 | 1.3835869946633897e-05 | 11.90% | 13.51% | 1.14x | ✅ | -| `hexbytes_to_0x_hex[4-byte pattern]` | 4.35579543105141e-05 | 4.132141538453929e-05 | 5.13% | 5.41% | 1.05x | ✅ | -| `hexbytes_to_0x_hex[all byte values]` | 4.404208225939965e-05 | 4.1796901778162476e-05 | 5.10% | 5.37% | 1.05x | ✅ | -| `hexbytes_to_0x_hex[alternating 0x00/0xff]` | 2.1502443715701346e-05 | 1.9477211856640206e-05 | 9.42% | 10.40% | 1.10x | ✅ | -| `hexbytes_to_0x_hex[alternating 0xaa/0x55]` | 2.1530605585571888e-05 | 1.9547649361770845e-05 | 9.21% | 10.14% | 1.10x | ✅ | -| `hexbytes_to_0x_hex[ascii sentence]` | 1.9264486584258556e-05 | 1.7263578253831497e-05 | 10.39% | 11.59% | 1.12x | ✅ | -| `hexbytes_to_0x_hex[b'']` | 1.0230918058479275e-05 | 1.1346902966026289e-05 | -10.91% | -9.84% | 0.90x | ❌ | -| `hexbytes_to_0x_hex[b'\\x00'*32]` | 1.7801088634380032e-05 | 1.5988275521520448e-05 | 10.18% | 11.34% | 1.11x | ✅ | -| `hexbytes_to_0x_hex[b'\\x00\\xff\\x00\\xff']` | 1.518226723461978e-05 | 1.3166136811019283e-05 | 13.28% | 15.31% | 1.15x | ✅ | -| `hexbytes_to_0x_hex[b'\\x01'*100]` | 2.563121232039722e-05 | 2.3079302424109427e-05 | 9.96% | 11.06% | 1.11x | ✅ | -| `hexbytes_to_0x_hex[b'\\x01'*2048]` | 0.00023484271357191062 | 0.00023245887506656796 | 1.02% | 1.03% | 1.01x | ✅ | -| `hexbytes_to_0x_hex[b'\\x01\\x02\\x03']` | 1.5107766213292168e-05 | 1.315784681041234e-05 | 12.91% | 14.82% | 1.15x | ✅ | -| `hexbytes_to_0x_hex[b'\\x10\\x20\\x30\\x40\\x50']` | 1.5147212104347612e-05 | 1.3464869884485243e-05 | 11.11% | 12.49% | 1.12x | ✅ | -| `hexbytes_to_0x_hex[b'\\x7f'*8]` | 1.558481904298038e-05 | 1.3565944789756698e-05 | 12.95% | 14.88% | 1.15x | ✅ | -| `hexbytes_to_0x_hex[b'\\x80'*8]` | 1.5391846057002166e-05 | 1.3501301501411687e-05 | 12.28% | 14.00% | 1.14x | ✅ | -| `hexbytes_to_0x_hex[b'\\xde\\xad\\xbe\\xef']` | 1.5287012054854068e-05 | 1.3163008839618544e-05 | 13.89% | 16.14% | 1.16x | ✅ | -| `hexbytes_to_0x_hex[b'\\xff'*64]` | 2.1141548365353688e-05 | 1.94566014247515e-05 | 7.97% | 8.66% | 1.09x | ✅ | -| `hexbytes_to_0x_hex[b'a'*1024]` | 0.00012903325307777995 | 0.00012736624515628572 | 1.29% | 1.31% | 1.01x | ✅ | -| `hexbytes_to_0x_hex[b'abc']` | 1.5176872489380172e-05 | 1.3271781285505391e-05 | 12.55% | 14.35% | 1.14x | ✅ | -| `hexbytes_to_0x_hex[long alternating]` | 0.0001284360897470229 | 0.00012820298429832853 | 0.18% | 0.18% | 1.00x | ✅ | -| `hexbytes_to_0x_hex[mixed pattern]` | 3.642851616623274e-05 | 3.436185192765364e-05 | 5.67% | 6.01% | 1.06x | ✅ | -| `hexbytes_to_0x_hex[multiples of 0x10]` | 1.5638629244101037e-05 | 1.387158431141875e-05 | 11.30% | 12.74% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[palindrome ascii]` | 1.541045241681804e-05 | 1.3116639476423924e-05 | 14.88% | 17.49% | 1.17x | ✅ | -| `hexbytes_to_0x_hex[palindrome numeric]` | 1.533920013117867e-05 | 1.3230525886412996e-05 | 13.75% | 15.94% | 1.16x | ✅ | -| `hexbytes_to_0x_hex[palindrome]` | 1.6705621772344522e-05 | 1.5011957268613367e-05 | 10.14% | 11.28% | 1.11x | ✅ | -| `hexbytes_to_0x_hex[repeated 0-9]` | 2.5662089874202047e-05 | 2.297810263507965e-05 | 10.46% | 11.68% | 1.12x | ✅ | -| `hexbytes_to_0x_hex[single 0xff]` | 1.4982400863608847e-05 | 1.3055497209485186e-05 | 12.86% | 14.76% | 1.15x | ✅ | -| `hexbytes_to_0x_hex[single null byte]` | 1.4995807527761192e-05 | 1.292973782655825e-05 | 13.78% | 15.98% | 1.16x | ✅ | -| `hexbytes_to_0x_hex[two patterns]` | 2.1151482246689096e-05 | 1.9339856526958228e-05 | 8.57% | 9.37% | 1.09x | ✅ | +| `hexbytes_getitem_index[-1-0-9]` | 2.4815957518189122e-05 | 2.323741742667928e-05 | 6.36% | 6.79% | 1.07x | ✅ | +| `hexbytes_getitem_index[-1-4-byte pattern]` | 2.499168674292274e-05 | 2.3180674846065482e-05 | 7.25% | 7.81% | 1.08x | ✅ | +| `hexbytes_getitem_index[-1-all byte values]` | 2.467843222597364e-05 | 2.322996863455447e-05 | 5.87% | 6.24% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-alternating 0x00/0xff]` | 2.4563885137150446e-05 | 2.3367597955470324e-05 | 4.87% | 5.12% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-alternating 0xaa/0x55]` | 2.4622680050986677e-05 | 2.32315401304226e-05 | 5.65% | 5.99% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-ascii sentence]` | 2.5221611679225928e-05 | 2.4916341160243495e-05 | 1.21% | 1.23% | 1.01x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x00'*32]` | 2.468504212536377e-05 | 2.381153263285404e-05 | 3.54% | 3.67% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x00\\xff\\x00\\xff']` | 2.4418645038622666e-05 | 2.3903951631702077e-05 | 2.11% | 2.15% | 1.02x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x01'*100]` | 2.450570824790637e-05 | 2.33194877020744e-05 | 4.84% | 5.09% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x01'*2048]` | 2.4905187877061046e-05 | 2.326564402334891e-05 | 6.58% | 7.05% | 1.07x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x01\\x02\\x03']` | 2.4758089583246185e-05 | 2.337027688097156e-05 | 5.61% | 5.94% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.461540284903009e-05 | 2.3351123000086303e-05 | 5.14% | 5.41% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x7f'*8]` | 2.4756348817068916e-05 | 2.3327594899234118e-05 | 5.77% | 6.12% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x80'*8]` | 2.4539410319696033e-05 | 2.332510940380535e-05 | 4.95% | 5.21% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'\\xde\\xad\\xbe\\xef']` | 2.4721023342107855e-05 | 2.3379131509772284e-05 | 5.43% | 5.74% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-b'\\xff'*64]` | 2.4670121193178248e-05 | 2.336085882906412e-05 | 5.31% | 5.60% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-b'a'*1024]` | 2.4689148937445117e-05 | 2.3360644324290475e-05 | 5.38% | 5.69% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-b'abc']` | 2.4571768253040925e-05 | 2.3332426195835232e-05 | 5.04% | 5.31% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-long alternating]` | 2.4498254696978512e-05 | 2.3304553944940054e-05 | 4.87% | 5.12% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-mixed pattern]` | 2.504283690735923e-05 | 2.3996243329113425e-05 | 4.18% | 4.36% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-multiples of 0x10]` | 2.4678039491242653e-05 | 2.3297350707673698e-05 | 5.59% | 5.93% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-palindrome ascii]` | 2.522434936175017e-05 | 2.3443664316309386e-05 | 7.06% | 7.60% | 1.08x | ✅ | +| `hexbytes_getitem_index[-1-palindrome numeric]` | 2.483846721032967e-05 | 2.3303380624791458e-05 | 6.18% | 6.59% | 1.07x | ✅ | +| `hexbytes_getitem_index[-1-palindrome]` | 2.4547981631352146e-05 | 2.4085506255498827e-05 | 1.88% | 1.92% | 1.02x | ✅ | +| `hexbytes_getitem_index[-1-repeated 0-9]` | 2.4692814087851262e-05 | 2.3779546091809038e-05 | 3.70% | 3.84% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-two patterns]` | 2.5268240258343147e-05 | 2.377157229688989e-05 | 5.92% | 6.30% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-0-9]` | 2.3419257350521953e-05 | 2.252121540973952e-05 | 3.83% | 3.99% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-4-byte pattern]` | 2.3746086025778056e-05 | 2.2497061006953156e-05 | 5.26% | 5.55% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-all byte values]` | 2.4227569321378656e-05 | 2.251669363136502e-05 | 7.06% | 7.60% | 1.08x | ✅ | +| `hexbytes_getitem_index[0-alternating 0x00/0xff]` | 2.3775570934974694e-05 | 2.2533903966101405e-05 | 5.22% | 5.51% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-alternating 0xaa/0x55]` | 2.38905605443513e-05 | 2.219393030909336e-05 | 7.10% | 7.64% | 1.08x | ✅ | +| `hexbytes_getitem_index[0-ascii sentence]` | 2.371039877485685e-05 | 2.22901593000098e-05 | 5.99% | 6.37% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-b'\\x00'*32]` | 2.3894111753825244e-05 | 2.2756093208685128e-05 | 4.76% | 5.00% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-b'\\x00\\xff\\x00\\xff']` | 2.356484060877055e-05 | 2.2604287626721332e-05 | 4.08% | 4.25% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-b'\\x01'*100]` | 2.3861781056523187e-05 | 2.2366976103677075e-05 | 6.26% | 6.68% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-b'\\x01'*2048]` | 2.3589451258026494e-05 | 2.2591006868265747e-05 | 4.23% | 4.42% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-b'\\x01\\x02\\x03']` | 2.3612537576230767e-05 | 2.2390102179604453e-05 | 5.18% | 5.46% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-b'\\x10\\x20\\x30\\x40\\x50']` | 2.378960797291328e-05 | 2.230977119187177e-05 | 6.22% | 6.63% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-b'\\x7f'*8]` | 2.371819525901674e-05 | 2.2242548238653864e-05 | 6.22% | 6.63% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-b'\\x80'*8]` | 2.4016466531506466e-05 | 2.229008588644591e-05 | 7.19% | 7.75% | 1.08x | ✅ | +| `hexbytes_getitem_index[0-b'\\xde\\xad\\xbe\\xef']` | 2.3571415088169574e-05 | 2.2229857220207937e-05 | 5.69% | 6.03% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-b'\\xff'*64]` | 2.3375850911875174e-05 | 2.2436622195768564e-05 | 4.02% | 4.19% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-b'a'*1024]` | 2.3452565279232885e-05 | 2.234400541319998e-05 | 4.73% | 4.96% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-b'abc']` | 2.3815424117404074e-05 | 2.2442627111939143e-05 | 5.76% | 6.12% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-long alternating]` | 2.3759944735070682e-05 | 2.2733651398807548e-05 | 4.32% | 4.51% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-mixed pattern]` | 2.3795980055932363e-05 | 2.2280158975776737e-05 | 6.37% | 6.80% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-multiples of 0x10]` | 2.404071784124195e-05 | 2.2747668204787818e-05 | 5.38% | 5.68% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-palindrome ascii]` | 2.363289251772724e-05 | 2.2266443201170374e-05 | 5.78% | 6.14% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-palindrome numeric]` | 2.413257387043133e-05 | 2.2349060329345376e-05 | 7.39% | 7.98% | 1.08x | ✅ | +| `hexbytes_getitem_index[0-palindrome]` | 2.3944786700165484e-05 | 2.2339889912020418e-05 | 6.70% | 7.18% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-repeated 0-9]` | 2.4232472402237243e-05 | 2.252734778569536e-05 | 7.04% | 7.57% | 1.08x | ✅ | +| `hexbytes_getitem_index[0-single 0xff]` | 2.3713332862873595e-05 | 2.244435859501425e-05 | 5.35% | 5.65% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-single null byte]` | 2.3716013391644792e-05 | 2.2585757739447734e-05 | 4.77% | 5.00% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-two patterns]` | 2.395763028044325e-05 | 2.2521910102704387e-05 | 5.99% | 6.37% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-0-9]` | 2.3786629657488054e-05 | 2.229284403571319e-05 | 6.28% | 6.70% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-4-byte pattern]` | 2.3706242201539047e-05 | 2.2298893156507252e-05 | 5.94% | 6.31% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-all byte values]` | 2.3819352731516755e-05 | 2.271366708691106e-05 | 4.64% | 4.87% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-alternating 0x00/0xff]` | 2.4519173638240034e-05 | 2.2121899853243074e-05 | 9.78% | 10.84% | 1.11x | ✅ | +| `hexbytes_getitem_index[1-alternating 0xaa/0x55]` | 2.3482532367243845e-05 | 2.2140595276158422e-05 | 5.71% | 6.06% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-ascii sentence]` | 2.350096707289276e-05 | 2.2188991973558493e-05 | 5.58% | 5.91% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-b'\\x00'*32]` | 2.3682467694410823e-05 | 2.2612591859306363e-05 | 4.52% | 4.73% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-b'\\x00\\xff\\x00\\xff']` | 2.3974169097819536e-05 | 2.2181458203837523e-05 | 7.48% | 8.08% | 1.08x | ✅ | +| `hexbytes_getitem_index[1-b'\\x01'*100]` | 2.406863414301758e-05 | 2.2076052734304906e-05 | 8.28% | 9.03% | 1.09x | ✅ | +| `hexbytes_getitem_index[1-b'\\x01'*2048]` | 2.3742766807173897e-05 | 2.222988143465632e-05 | 6.37% | 6.81% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-b'\\x01\\x02\\x03']` | 2.404934595781359e-05 | 2.2242976101325816e-05 | 7.51% | 8.12% | 1.08x | ✅ | +| `hexbytes_getitem_index[1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3516616237300287e-05 | 2.2200977082432582e-05 | 5.59% | 5.93% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-b'\\x7f'*8]` | 2.3655446052324674e-05 | 2.2346949575352176e-05 | 5.53% | 5.86% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-b'\\x80'*8]` | 2.360683474266779e-05 | 2.2174162760113924e-05 | 6.07% | 6.46% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-b'\\xde\\xad\\xbe\\xef']` | 2.372566182683921e-05 | 2.2363897273422764e-05 | 5.74% | 6.09% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-b'\\xff'*64]` | 2.3894480993755427e-05 | 2.2262239894206023e-05 | 6.83% | 7.33% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-b'a'*1024]` | 2.379040699661588e-05 | 2.2283797293543673e-05 | 6.33% | 6.76% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-b'abc']` | 2.3706163591874798e-05 | 2.2173479913496705e-05 | 6.47% | 6.91% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-long alternating]` | 2.3569089581301216e-05 | 2.2235622885512747e-05 | 5.66% | 6.00% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-mixed pattern]` | 2.3952598444375832e-05 | 2.246599143400761e-05 | 6.21% | 6.62% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-multiples of 0x10]` | 2.3806255439056956e-05 | 2.2264347103021153e-05 | 6.48% | 6.93% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-palindrome ascii]` | 2.3684170152052223e-05 | 2.218614131445214e-05 | 6.33% | 6.75% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-palindrome numeric]` | 2.384028277937883e-05 | 2.2317164932185754e-05 | 6.39% | 6.82% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-palindrome]` | 2.3652801732528514e-05 | 2.2267997486247177e-05 | 5.85% | 6.22% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-repeated 0-9]` | 2.3681030723103605e-05 | 2.2222670852701073e-05 | 6.16% | 6.56% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-two patterns]` | 2.379175104977085e-05 | 2.2202442421441474e-05 | 6.68% | 7.16% | 1.07x | ✅ | +| `hexbytes_getitem_index[2-0-9]` | 2.349529838211381e-05 | 2.2359232042271073e-05 | 4.84% | 5.08% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-4-byte pattern]` | 2.3611795294635074e-05 | 2.2225408497749822e-05 | 5.87% | 6.24% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-all byte values]` | 2.3693471362843924e-05 | 2.2263642415888376e-05 | 6.03% | 6.42% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-alternating 0x00/0xff]` | 2.3621049549037067e-05 | 2.266977167687751e-05 | 4.03% | 4.20% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-alternating 0xaa/0x55]` | 2.328360863523326e-05 | 2.2385138735022707e-05 | 3.86% | 4.01% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-ascii sentence]` | 2.344518625342879e-05 | 2.2329680264914812e-05 | 4.76% | 5.00% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-b'\\x00'*32]` | 2.3301266335857048e-05 | 2.2742363619162324e-05 | 2.40% | 2.46% | 1.02x | ✅ | +| `hexbytes_getitem_index[2-b'\\x00\\xff\\x00\\xff']` | 2.3579193488007452e-05 | 2.2576003214089187e-05 | 4.25% | 4.44% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-b'\\x01'*100]` | 2.359714772043807e-05 | 2.229008847305993e-05 | 5.54% | 5.86% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-b'\\x01'*2048]` | 2.338702982712889e-05 | 2.233443351976533e-05 | 4.50% | 4.71% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-b'\\x01\\x02\\x03']` | 2.327869456206976e-05 | 2.216550474160494e-05 | 4.78% | 5.02% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3520395345964735e-05 | 2.257867989093151e-05 | 4.00% | 4.17% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-b'\\x7f'*8]` | 2.35060946265158e-05 | 2.2370307717298312e-05 | 4.83% | 5.08% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-b'\\x80'*8]` | 2.356109391661716e-05 | 2.224295258713608e-05 | 5.59% | 5.93% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-b'\\xde\\xad\\xbe\\xef']` | 2.377966202318841e-05 | 2.2281359469779937e-05 | 6.30% | 6.72% | 1.07x | ✅ | +| `hexbytes_getitem_index[2-b'\\xff'*64]` | 2.346761969021569e-05 | 2.222595967428535e-05 | 5.29% | 5.59% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-b'a'*1024]` | 2.3449263501645632e-05 | 2.5070764167200928e-05 | -6.91% | -6.47% | 0.94x | ❌ | +| `hexbytes_getitem_index[2-b'abc']` | 2.323174050342295e-05 | 2.241471045194996e-05 | 3.52% | 3.65% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-long alternating]` | 2.3514766678555988e-05 | 2.2593965870807778e-05 | 3.92% | 4.08% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-mixed pattern]` | 2.3596469760608948e-05 | 2.2572212765407408e-05 | 4.34% | 4.54% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-multiples of 0x10]` | 2.3546173504511273e-05 | 2.2479299538404666e-05 | 4.53% | 4.75% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-palindrome ascii]` | 2.3515193941323854e-05 | 2.225755489781573e-05 | 5.35% | 5.65% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-palindrome numeric]` | 2.35071902115465e-05 | 2.230234926670244e-05 | 5.13% | 5.40% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-palindrome]` | 2.3738083190379348e-05 | 2.229019766981677e-05 | 6.10% | 6.50% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-repeated 0-9]` | 2.3741449683416218e-05 | 2.2251519363702206e-05 | 6.28% | 6.70% | 1.07x | ✅ | +| `hexbytes_getitem_index[2-two patterns]` | 2.366551538718643e-05 | 2.253315482054391e-05 | 4.78% | 5.03% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-0-9]` | 2.37748373094076e-05 | 2.2710735415706232e-05 | 4.48% | 4.69% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-4-byte pattern]` | 2.36294084834588e-05 | 2.2596779771103345e-05 | 4.37% | 4.57% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-all byte values]` | 2.403975793325696e-05 | 2.2383415517151603e-05 | 6.89% | 7.40% | 1.07x | ✅ | +| `hexbytes_getitem_index[3-alternating 0x00/0xff]` | 2.34469388816728e-05 | 2.237700421202496e-05 | 4.56% | 4.78% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-alternating 0xaa/0x55]` | 2.3716586141842265e-05 | 2.2472474640444777e-05 | 5.25% | 5.54% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-ascii sentence]` | 2.3895592685942477e-05 | 2.2035529992744683e-05 | 7.78% | 8.44% | 1.08x | ✅ | +| `hexbytes_getitem_index[3-b'\\x00'*32]` | 2.3736251226581613e-05 | 2.273362079320998e-05 | 4.22% | 4.41% | 1.04x | ✅ | +| `hexbytes_getitem_index[3-b'\\x00\\xff\\x00\\xff']` | 2.3673953489382178e-05 | 2.2457893682888497e-05 | 5.14% | 5.41% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-b'\\x01'*100]` | 2.370281393271934e-05 | 2.2431282613206826e-05 | 5.36% | 5.67% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'\\x01'*2048]` | 2.3656186050230982e-05 | 2.2551723863017532e-05 | 4.67% | 4.90% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-b'\\x10\\x20\\x30\\x40\\x50']` | 2.372424587162346e-05 | 2.24511155400636e-05 | 5.37% | 5.67% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'\\x7f'*8]` | 2.3583854664165805e-05 | 2.2497757229814305e-05 | 4.61% | 4.83% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-b'\\x80'*8]` | 2.3761355240706404e-05 | 2.2405114862227697e-05 | 5.71% | 6.05% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'\\xde\\xad\\xbe\\xef']` | 2.3538140516565893e-05 | 2.2371128973128875e-05 | 4.96% | 5.22% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-b'\\xff'*64]` | 2.359110928086081e-05 | 2.221115505657025e-05 | 5.85% | 6.21% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'a'*1024]` | 2.3260028195261576e-05 | 2.2306284489098033e-05 | 4.10% | 4.28% | 1.04x | ✅ | +| `hexbytes_getitem_index[3-long alternating]` | 2.360417537895871e-05 | 2.251082086369651e-05 | 4.63% | 4.86% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-mixed pattern]` | 2.3830807359923623e-05 | 2.2346309951664428e-05 | 6.23% | 6.64% | 1.07x | ✅ | +| `hexbytes_getitem_index[3-multiples of 0x10]` | 2.3711285717523375e-05 | 2.2474448726899732e-05 | 5.22% | 5.50% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-palindrome ascii]` | 2.3436924630608695e-05 | 2.2396051541534126e-05 | 4.44% | 4.65% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-palindrome numeric]` | 2.3668595465124716e-05 | 2.2289648418351357e-05 | 5.83% | 6.19% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-palindrome]` | 2.351964846581729e-05 | 2.240421923325913e-05 | 4.74% | 4.98% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-repeated 0-9]` | 2.391336828324265e-05 | 2.215786275921801e-05 | 7.34% | 7.92% | 1.08x | ✅ | +| `hexbytes_getitem_index[3-two patterns]` | 2.3807109983844827e-05 | 2.1867935726208993e-05 | 8.15% | 8.87% | 1.09x | ✅ | +| `hexbytes_getitem_index[4-0-9]` | 2.416362944450912e-05 | 2.2770753695730664e-05 | 5.76% | 6.12% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-4-byte pattern]` | 2.400256946374398e-05 | 2.2375126293723663e-05 | 6.78% | 7.27% | 1.07x | ✅ | +| `hexbytes_getitem_index[4-all byte values]` | 2.3764199777252133e-05 | 2.2056224006506947e-05 | 7.19% | 7.74% | 1.08x | ✅ | +| `hexbytes_getitem_index[4-alternating 0x00/0xff]` | 2.4211387327765502e-05 | 2.240019348410611e-05 | 7.48% | 8.09% | 1.08x | ✅ | +| `hexbytes_getitem_index[4-alternating 0xaa/0x55]` | 2.3716814531764633e-05 | 2.2154962637397344e-05 | 6.59% | 7.05% | 1.07x | ✅ | +| `hexbytes_getitem_index[4-ascii sentence]` | 2.413791835163061e-05 | 2.2118821134110306e-05 | 8.36% | 9.13% | 1.09x | ✅ | +| `hexbytes_getitem_index[4-b'\\x00'*32]` | 2.421225586291319e-05 | 2.234755680071268e-05 | 7.70% | 8.34% | 1.08x | ✅ | +| `hexbytes_getitem_index[4-b'\\x01'*100]` | 2.3696325525677253e-05 | 2.2247526231339393e-05 | 6.11% | 6.51% | 1.07x | ✅ | +| `hexbytes_getitem_index[4-b'\\x01'*2048]` | 2.4100628754279967e-05 | 2.2094883139885273e-05 | 8.32% | 9.08% | 1.09x | ✅ | +| `hexbytes_getitem_index[4-b'\\x10\\x20\\x30\\x40\\x50']` | 2.38584944270151e-05 | 2.2138698091771588e-05 | 7.21% | 7.77% | 1.08x | ✅ | +| `hexbytes_getitem_index[4-b'\\x7f'*8]` | 2.3785902978132703e-05 | 2.2072371780104015e-05 | 7.20% | 7.76% | 1.08x | ✅ | +| `hexbytes_getitem_index[4-b'\\x80'*8]` | 2.3784977059148304e-05 | 2.211962570290052e-05 | 7.00% | 7.53% | 1.08x | ✅ | +| `hexbytes_getitem_index[4-b'\\xff'*64]` | 2.3700734849261895e-05 | 2.2120681887023932e-05 | 6.67% | 7.14% | 1.07x | ✅ | +| `hexbytes_getitem_index[4-b'a'*1024]` | 2.406419382296312e-05 | 2.19807687566719e-05 | 8.66% | 9.48% | 1.09x | ✅ | +| `hexbytes_getitem_index[4-long alternating]` | 2.383976693534454e-05 | 2.2630658724131406e-05 | 5.07% | 5.34% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-mixed pattern]` | 2.3979624771140322e-05 | 2.2328395385969107e-05 | 6.89% | 7.40% | 1.07x | ✅ | +| `hexbytes_getitem_index[4-multiples of 0x10]` | 2.34163593756519e-05 | 2.205221593031053e-05 | 5.83% | 6.19% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-palindrome ascii]` | 2.4046070983277165e-05 | 2.2187776257769353e-05 | 7.73% | 8.38% | 1.08x | ✅ | +| `hexbytes_getitem_index[4-palindrome numeric]` | 2.3782487511810056e-05 | 2.214941519199688e-05 | 6.87% | 7.37% | 1.07x | ✅ | +| `hexbytes_getitem_index[4-palindrome]` | 2.4120120674278746e-05 | 2.209224427672984e-05 | 8.41% | 9.18% | 1.09x | ✅ | +| `hexbytes_getitem_index[4-repeated 0-9]` | 2.34921311046118e-05 | 2.2210016708761127e-05 | 5.46% | 5.77% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-two patterns]` | 2.4005108850538193e-05 | 2.2411959114604496e-05 | 6.64% | 7.11% | 1.07x | ✅ | +| `hexbytes_getitem_index[5-0-9]` | 2.370564903012719e-05 | 2.2023769556806577e-05 | 7.09% | 7.64% | 1.08x | ✅ | +| `hexbytes_getitem_index[5-4-byte pattern]` | 2.377626977175104e-05 | 2.217118851303218e-05 | 6.75% | 7.24% | 1.07x | ✅ | +| `hexbytes_getitem_index[5-all byte values]` | 2.378304954784653e-05 | 2.2175959556196413e-05 | 6.76% | 7.25% | 1.07x | ✅ | +| `hexbytes_getitem_index[5-alternating 0x00/0xff]` | 2.3739050077825476e-05 | 2.2254735184722817e-05 | 6.25% | 6.67% | 1.07x | ✅ | +| `hexbytes_getitem_index[5-alternating 0xaa/0x55]` | 2.3698570706840428e-05 | 2.2692218428807572e-05 | 4.25% | 4.43% | 1.04x | ✅ | +| `hexbytes_getitem_index[5-ascii sentence]` | 2.3509939394101845e-05 | 2.23098363120744e-05 | 5.10% | 5.38% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-b'\\x00'*32]` | 2.3927059570531508e-05 | 2.2745049487687928e-05 | 4.94% | 5.20% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-b'\\x01'*100]` | 2.370280355715946e-05 | 2.2091400955219417e-05 | 6.80% | 7.29% | 1.07x | ✅ | +| `hexbytes_getitem_index[5-b'\\x01'*2048]` | 2.40653447397226e-05 | 2.2167632863017708e-05 | 7.89% | 8.56% | 1.09x | ✅ | +| `hexbytes_getitem_index[5-b'\\x7f'*8]` | 2.4240890760840145e-05 | 2.2084934697308292e-05 | 8.89% | 9.76% | 1.10x | ✅ | +| `hexbytes_getitem_index[5-b'\\x80'*8]` | 2.3768934661810337e-05 | 2.2137494475984394e-05 | 6.86% | 7.37% | 1.07x | ✅ | +| `hexbytes_getitem_index[5-b'\\xff'*64]` | 2.3905962441499865e-05 | 2.210209080236595e-05 | 7.55% | 8.16% | 1.08x | ✅ | +| `hexbytes_getitem_index[5-b'a'*1024]` | 2.385863573637786e-05 | 2.2223752559845875e-05 | 6.85% | 7.36% | 1.07x | ✅ | +| `hexbytes_getitem_index[5-long alternating]` | 2.4071719845091504e-05 | 2.2095039961257052e-05 | 8.21% | 8.95% | 1.09x | ✅ | +| `hexbytes_getitem_index[5-mixed pattern]` | 2.412793762584248e-05 | 2.222669915544779e-05 | 7.88% | 8.55% | 1.09x | ✅ | +| `hexbytes_getitem_index[5-multiples of 0x10]` | 2.3555268044337486e-05 | 2.2118702633091277e-05 | 6.10% | 6.49% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-palindrome ascii]` | 2.384874748506212e-05 | 2.209138726042397e-05 | 7.37% | 7.95% | 1.08x | ✅ | +| `hexbytes_getitem_index[5-palindrome]` | 2.3861182686905003e-05 | 2.2354440944528662e-05 | 6.31% | 6.74% | 1.07x | ✅ | +| `hexbytes_getitem_index[5-repeated 0-9]` | 2.357345551601425e-05 | 2.2119311629089632e-05 | 6.17% | 6.57% | 1.07x | ✅ | +| `hexbytes_getitem_index[5-two patterns]` | 2.3525074076147965e-05 | 2.2240515465877773e-05 | 5.46% | 5.78% | 1.06x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-0-9]` | 8.158874137926803e-05 | 5.936184942228242e-05 | 27.24% | 37.44% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-4-byte pattern]` | 8.187163359167034e-05 | 6.094789728133496e-05 | 25.56% | 34.33% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-all byte values]` | 8.197547196103761e-05 | 5.974229761281502e-05 | 27.12% | 37.22% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-alternating 0x00/0xff]` | 8.148004456100136e-05 | 6.036804331081553e-05 | 25.91% | 34.97% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-alternating 0xaa/0x55]` | 8.191963339448875e-05 | 5.990501382920067e-05 | 26.87% | 36.75% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-ascii sentence]` | 8.100036466402196e-05 | 6.0504193058126826e-05 | 25.30% | 33.88% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'']` | 7.83086901011603e-05 | 5.762094198504632e-05 | 26.42% | 35.90% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00'*32]` | 8.226831002321282e-05 | 6.053682075547745e-05 | 26.42% | 35.90% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00\\xff\\x00\\xff']` | 8.170820193269161e-05 | 6.03337935171177e-05 | 26.16% | 35.43% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*100]` | 8.247179799257704e-05 | 5.987690592931465e-05 | 27.40% | 37.74% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*2048]` | 8.225563556432903e-05 | 6.182193299453653e-05 | 24.84% | 33.05% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01\\x02\\x03']` | 8.166756718729766e-05 | 5.998351039469376e-05 | 26.55% | 36.15% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.252859704939733e-05 | 6.047662379491292e-05 | 26.72% | 36.46% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x7f'*8]` | 8.279984536095575e-05 | 5.931946185079214e-05 | 28.36% | 39.58% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x80'*8]` | 8.29157003182825e-05 | 5.9675717671382575e-05 | 28.03% | 38.94% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\xde\\xad\\xbe\\xef']` | 8.258194178472292e-05 | 6.0141765342525025e-05 | 27.17% | 37.31% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\xff'*64]` | 8.16726123516879e-05 | 5.984410334738925e-05 | 26.73% | 36.48% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'a'*1024]` | 8.179924304155853e-05 | 6.036468029089999e-05 | 26.20% | 35.51% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'abc']` | 8.213259568805892e-05 | 6.0520562654051094e-05 | 26.31% | 35.71% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-long alternating]` | 8.248627210823434e-05 | 6.037304216276541e-05 | 26.81% | 36.63% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-mixed pattern]` | 8.2073655452793e-05 | 5.95338101755882e-05 | 27.46% | 37.86% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-multiples of 0x10]` | 8.132697739508627e-05 | 5.986594467165199e-05 | 26.39% | 35.85% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-palindrome ascii]` | 8.14974399589202e-05 | 5.9662759784013346e-05 | 26.79% | 36.60% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-palindrome numeric]` | 8.3884937704009e-05 | 6.038667903857963e-05 | 28.01% | 38.91% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-palindrome]` | 8.150599039873225e-05 | 6.0030389975486114e-05 | 26.35% | 35.77% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-repeated 0-9]` | 8.171274370640066e-05 | 6.007060530814203e-05 | 26.49% | 36.03% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-single 0xff]` | 8.021920390349683e-05 | 5.785587173062897e-05 | 27.88% | 38.65% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-single null byte]` | 7.970557011415754e-05 | 5.79346405853674e-05 | 27.31% | 37.58% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-two patterns]` | 8.181751684149665e-05 | 5.9647810354315246e-05 | 27.10% | 37.17% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-0-9]` | 8.220857703601872e-05 | 6.071904831626277e-05 | 26.14% | 35.39% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-4-byte pattern]` | 8.205169533887507e-05 | 6.054308226564608e-05 | 26.21% | 35.53% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-all byte values]` | 8.29860118923538e-05 | 6.124684564726618e-05 | 26.20% | 35.49% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-alternating 0x00/0xff]` | 8.225749552387071e-05 | 6.145092501660742e-05 | 25.29% | 33.86% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-alternating 0xaa/0x55]` | 8.249056320502428e-05 | 6.149205212048085e-05 | 25.46% | 34.15% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-ascii sentence]` | 8.216156877378178e-05 | 6.126953055548171e-05 | 25.43% | 34.10% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'']` | 8.046552141187386e-05 | 5.981185221567854e-05 | 25.67% | 34.53% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x00'*32]` | 8.259098547049542e-05 | 6.277682656198159e-05 | 23.99% | 31.56% | 1.32x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x00\\xff\\x00\\xff']` | 8.259325418821997e-05 | 6.0897465586848775e-05 | 26.27% | 35.63% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*100]` | 8.309054443772027e-05 | 6.0874534841153455e-05 | 26.74% | 36.49% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*2048]` | 8.261419880959167e-05 | 6.117157521061489e-05 | 25.96% | 35.05% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x01\\x02\\x03']` | 8.273965905829822e-05 | 6.114246503049624e-05 | 26.10% | 35.32% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.248296532188748e-05 | 6.096854583740308e-05 | 26.08% | 35.29% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x7f'*8]` | 8.262238637383459e-05 | 6.150344668614003e-05 | 25.56% | 34.34% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x80'*8]` | 8.32065743516288e-05 | 6.0177893693850575e-05 | 27.68% | 38.27% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\xde\\xad\\xbe\\xef']` | 8.262223551792056e-05 | 6.07632707914368e-05 | 26.46% | 35.97% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\xff'*64]` | 8.290927437182107e-05 | 6.14762015265771e-05 | 25.85% | 34.86% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'a'*1024]` | 8.267925744574209e-05 | 6.095251303707212e-05 | 26.28% | 35.65% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'abc']` | 8.273806885029946e-05 | 6.139318405579434e-05 | 25.80% | 34.77% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-long alternating]` | 8.244964636847278e-05 | 6.079018606442721e-05 | 26.27% | 35.63% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-mixed pattern]` | 8.286626942165477e-05 | 6.0976502167718216e-05 | 26.42% | 35.90% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-multiples of 0x10]` | 8.286253308795826e-05 | 6.0965996716452804e-05 | 26.43% | 35.92% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-palindrome ascii]` | 8.717426718628582e-05 | 6.123075393890418e-05 | 29.76% | 42.37% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-palindrome numeric]` | 8.222778835748292e-05 | 6.119538094410558e-05 | 25.58% | 34.37% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-palindrome]` | 8.366005796784939e-05 | 6.0593550823028595e-05 | 27.57% | 38.07% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-repeated 0-9]` | 8.239221148487113e-05 | 6.12936277187164e-05 | 25.61% | 34.42% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-single 0xff]` | 8.145696427845327e-05 | 5.9312521134286986e-05 | 27.19% | 37.34% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-single null byte]` | 8.13188027484653e-05 | 5.9238568874957114e-05 | 27.15% | 37.27% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-two patterns]` | 8.207820878415106e-05 | 6.104399613614599e-05 | 25.63% | 34.46% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-0-9]` | 8.224576352547248e-05 | 6.0748622870350616e-05 | 26.14% | 35.39% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-4-byte pattern]` | 8.342386563845494e-05 | 6.052489571814201e-05 | 27.45% | 37.83% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-all byte values]` | 8.253437638275219e-05 | 6.063280766218985e-05 | 26.54% | 36.12% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-alternating 0x00/0xff]` | 8.227380588753175e-05 | 6.086187414713933e-05 | 26.03% | 35.18% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-alternating 0xaa/0x55]` | 8.405010994231752e-05 | 6.053268912570709e-05 | 27.98% | 38.85% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-ascii sentence]` | 8.288259873139608e-05 | 6.0130312534574794e-05 | 27.45% | 37.84% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'']` | 7.961366831668843e-05 | 5.856914304812782e-05 | 26.43% | 35.93% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x00'*32]` | 8.23491397824994e-05 | 6.061301209572691e-05 | 26.40% | 35.86% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x00\\xff\\x00\\xff']` | 8.316168468360637e-05 | 6.0453585288549775e-05 | 27.31% | 37.56% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*100]` | 8.373536007169938e-05 | 6.0477686421693896e-05 | 27.78% | 38.46% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*2048]` | 8.28698716193288e-05 | 6.028505753133119e-05 | 27.25% | 37.46% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x01\\x02\\x03']` | 8.249754093841705e-05 | 5.9883021875683755e-05 | 27.41% | 37.76% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.26965189238725e-05 | 6.033729752069336e-05 | 27.04% | 37.06% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x7f'*8]` | 8.295269365795219e-05 | 6.0372863109479515e-05 | 27.22% | 37.40% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x80'*8]` | 8.261472713855325e-05 | 6.0319052486455784e-05 | 26.99% | 36.96% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\xde\\xad\\xbe\\xef']` | 8.237614734605528e-05 | 6.0597812806048734e-05 | 26.44% | 35.94% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\xff'*64]` | 8.256799948711941e-05 | 6.0097809185700085e-05 | 27.21% | 37.39% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'a'*1024]` | 8.184145300681373e-05 | 6.0028932259803536e-05 | 26.65% | 36.34% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'abc']` | 8.195245064894868e-05 | 6.106598226402518e-05 | 25.49% | 34.20% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-long alternating]` | 8.290274559223522e-05 | 6.110050727944284e-05 | 26.30% | 35.68% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-mixed pattern]` | 8.203979438277453e-05 | 6.056349096968688e-05 | 26.18% | 35.46% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-multiples of 0x10]` | 8.24472947625233e-05 | 6.047325638791342e-05 | 26.65% | 36.34% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-palindrome ascii]` | 8.232283665766438e-05 | 6.0657300490338584e-05 | 26.32% | 35.72% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-palindrome numeric]` | 8.295337207521434e-05 | 6.0695139616075795e-05 | 26.83% | 36.67% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-palindrome]` | 8.253304815329285e-05 | 6.030179699124444e-05 | 26.94% | 36.87% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-repeated 0-9]` | 8.231127082256974e-05 | 6.046572959847554e-05 | 26.54% | 36.13% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-single 0xff]` | 8.044821880076987e-05 | 5.828613786275397e-05 | 27.55% | 38.02% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-single null byte]` | 8.079170464545125e-05 | 5.795687318477875e-05 | 28.26% | 39.40% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-two patterns]` | 8.528351152241482e-05 | 6.048264210698231e-05 | 29.08% | 41.00% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-0-9]` | 8.359476484251543e-05 | 5.9782496181542e-05 | 28.49% | 39.83% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-4-byte pattern]` | 8.324132707977177e-05 | 6.063264656524695e-05 | 27.16% | 37.29% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-all byte values]` | 8.382620580304619e-05 | 6.069410806539692e-05 | 27.60% | 38.11% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-alternating 0x00/0xff]` | 8.281881970535614e-05 | 6.0380359185186e-05 | 27.09% | 37.16% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-alternating 0xaa/0x55]` | 8.27554953266174e-05 | 6.017872092244139e-05 | 27.28% | 37.52% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-ascii sentence]` | 8.233259340165023e-05 | 6.134328592170561e-05 | 25.49% | 34.22% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'']` | 7.903759852050067e-05 | 5.748332919404697e-05 | 27.27% | 37.50% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x00'*32]` | 8.138845548478261e-05 | 6.0371274328003824e-05 | 25.82% | 34.81% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x00\\xff\\x00\\xff']` | 8.08541996330341e-05 | 6.025110180266896e-05 | 25.48% | 34.20% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*100]` | 8.266685939333836e-05 | 6.504872885869008e-05 | 21.31% | 27.08% | 1.27x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*2048]` | 0.0001038567319538242 | 7.75875210979368e-05 | 25.29% | 33.86% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x01\\x02\\x03']` | 7.924040343098189e-05 | 5.753343404923259e-05 | 27.39% | 37.73% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.221590841203097e-05 | 5.979455535521967e-05 | 27.27% | 37.50% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x7f'*8]` | 8.179136612298987e-05 | 6.024054096239685e-05 | 26.35% | 35.77% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x80'*8]` | 8.196734080899322e-05 | 6.000295094741753e-05 | 26.80% | 36.61% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\xde\\xad\\xbe\\xef']` | 8.146722785234977e-05 | 5.983985891358813e-05 | 26.55% | 36.14% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\xff'*64]` | 8.102691877051847e-05 | 6.028466144013463e-05 | 25.60% | 34.41% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'a'*1024]` | 9.826053653430473e-05 | 7.402907956275328e-05 | 24.66% | 32.73% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'abc']` | 7.926348747743365e-05 | 5.76891336773402e-05 | 27.22% | 37.40% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-long alternating]` | 9.745901614560696e-05 | 7.487275733337719e-05 | 23.18% | 30.17% | 1.30x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-mixed pattern]` | 8.2455155167239e-05 | 6.134324582110495e-05 | 25.60% | 34.42% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-multiples of 0x10]` | 8.143051914874115e-05 | 6.0123101862834465e-05 | 26.17% | 35.44% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-palindrome ascii]` | 8.235746479296143e-05 | 5.983351522645033e-05 | 27.35% | 37.64% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-palindrome numeric]` | 8.202478300997558e-05 | 5.9843682333469656e-05 | 27.04% | 37.07% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-palindrome]` | 8.161343756620752e-05 | 5.9948791983467613e-05 | 26.55% | 36.14% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-repeated 0-9]` | 8.286268217496747e-05 | 6.0886564925824734e-05 | 26.52% | 36.09% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-single 0xff]` | 7.9908757387398e-05 | 5.7812472625970486e-05 | 27.65% | 38.22% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-single null byte]` | 7.954695175386731e-05 | 5.7761720395054575e-05 | 27.39% | 37.72% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-two patterns]` | 8.411962851361742e-05 | 6.0664161147338455e-05 | 27.88% | 38.66% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-0-9]` | 8.053221542729754e-05 | 5.782553597648148e-05 | 28.20% | 39.27% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-4-byte pattern]` | 8.307397644388753e-05 | 5.961170750731091e-05 | 28.24% | 39.36% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-all byte values]` | 8.138949451936312e-05 | 5.962169098023686e-05 | 26.75% | 36.51% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-alternating 0x00/0xff]` | 8.108132702030693e-05 | 5.874566012620608e-05 | 27.55% | 38.02% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-alternating 0xaa/0x55]` | 8.023315351381477e-05 | 5.914521744036165e-05 | 26.28% | 35.65% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-ascii sentence]` | 7.98881285201064e-05 | 5.999422370879396e-05 | 24.90% | 33.16% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'']` | 7.793555073240806e-05 | 5.6133376033545156e-05 | 27.97% | 38.84% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x00'*32]` | 8.038275495302093e-05 | 5.877046652263523e-05 | 26.89% | 36.77% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x00\\xff\\x00\\xff']` | 8.133626380984293e-05 | 5.804295528333492e-05 | 28.64% | 40.13% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*100]` | 8.001355291195184e-05 | 5.8754381645492404e-05 | 26.57% | 36.18% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*2048]` | 0.00010287338275291927 | 7.926527674859973e-05 | 22.95% | 29.78% | 1.30x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x01\\x02\\x03']` | 8.120998086098522e-05 | 5.84328608658629e-05 | 28.05% | 38.98% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 7.991411622552212e-05 | 5.835156334069739e-05 | 26.98% | 36.95% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x7f'*8]` | 8.087841526675763e-05 | 5.841702939673503e-05 | 27.77% | 38.45% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x80'*8]` | 7.9649810971539e-05 | 5.799341633414953e-05 | 27.19% | 37.34% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\xde\\xad\\xbe\\xef']` | 8.165253409793914e-05 | 5.767650241127296e-05 | 29.36% | 41.57% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\xff'*64]` | 8.087346596400575e-05 | 5.884993330835726e-05 | 27.23% | 37.42% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'a'*1024]` | 9.811291979211797e-05 | 6.972003570066531e-05 | 28.94% | 40.72% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'abc']` | 8.130107976074272e-05 | 5.8865954684560504e-05 | 27.60% | 38.11% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-long alternating]` | 9.833338912320727e-05 | 7.356529247887829e-05 | 25.19% | 33.67% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-mixed pattern]` | 8.072253947059491e-05 | 5.984889250258876e-05 | 25.86% | 34.88% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-multiples of 0x10]` | 8.043934460406476e-05 | 5.785370778100685e-05 | 28.08% | 39.04% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-palindrome ascii]` | 8.08520600962201e-05 | 5.7849544519877736e-05 | 28.45% | 39.76% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-palindrome numeric]` | 8.05167099114802e-05 | 5.839001555727415e-05 | 27.48% | 37.89% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-palindrome]` | 8.054776200259266e-05 | 5.714226441551919e-05 | 29.06% | 40.96% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-repeated 0-9]` | 8.005530320360214e-05 | 6.244435536800857e-05 | 22.00% | 28.20% | 1.28x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-single 0xff]` | 7.718595132920844e-05 | 5.69083400057879e-05 | 26.27% | 35.63% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-single null byte]` | 7.749282548070295e-05 | 5.62674035227747e-05 | 27.39% | 37.72% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-two patterns]` | 7.89355735512056e-05 | 5.84559172445027e-05 | 25.94% | 35.03% | 1.35x | ✅ | +| `hexbytes_new['']` | 7.061352770260829e-05 | 3.746022866018403e-05 | 46.95% | 88.50% | 1.89x | ✅ | +| `hexbytes_new['0x'+'00'*64]` | 9.344738083652532e-05 | 5.26862323267876e-05 | 43.62% | 77.37% | 1.77x | ✅ | +| `hexbytes_new['0x'+'a'*128]` | 9.1762926825742e-05 | 5.2898230058898134e-05 | 42.35% | 73.47% | 1.73x | ✅ | +| `hexbytes_new['0x'+'ff'*32]` | 8.832468727787016e-05 | 4.9653522747350534e-05 | 43.78% | 77.88% | 1.78x | ✅ | +| `hexbytes_new['0x']` | 7.79058500222623e-05 | 3.8221344789745324e-05 | 50.94% | 103.83% | 2.04x | ✅ | +| `hexbytes_new['0x1234']` | 8.574702596326499e-05 | 4.8261650801384535e-05 | 43.72% | 77.67% | 1.78x | ✅ | +| `hexbytes_new['0xCAFEBABE']` | 8.547164954924834e-05 | 4.744677926816294e-05 | 44.49% | 80.14% | 1.80x | ✅ | +| `hexbytes_new['0xabcdef']` | 8.619699838376181e-05 | 4.7943784657755185e-05 | 44.38% | 79.79% | 1.80x | ✅ | +| `hexbytes_new['0xdeadbeef']` | 8.592580132786286e-05 | 4.797381098494579e-05 | 44.17% | 79.11% | 1.79x | ✅ | +| `hexbytes_new['abc']` | 8.346634408192414e-05 | 5.037685735415736e-05 | 39.64% | 65.68% | 1.66x | ✅ | +| `hexbytes_new['deadbeef']` | 7.76428284891337e-05 | 4.2543600314022825e-05 | 45.21% | 82.50% | 1.83x | ✅ | +| `hexbytes_new[0-9]` | 4.23303112403511e-05 | 2.5972705984402972e-05 | 38.64% | 62.98% | 1.63x | ✅ | +| `hexbytes_new[0]` | 0.00012110636092883232 | 6.249746284061343e-05 | 48.39% | 93.78% | 1.94x | ✅ | +| `hexbytes_new[123456]` | 0.0001265004697468215 | 6.851784248818788e-05 | 45.84% | 84.62% | 1.85x | ✅ | +| `hexbytes_new[2**16]` | 0.0001294683870973124 | 6.8518267586255e-05 | 47.08% | 88.95% | 1.89x | ✅ | +| `hexbytes_new[2**256-1]` | 0.00013303364474505014 | 7.643422364828404e-05 | 42.55% | 74.05% | 1.74x | ✅ | +| `hexbytes_new[2**32]` | 0.00013125682134281177 | 7.059011248127672e-05 | 46.22% | 85.94% | 1.86x | ✅ | +| `hexbytes_new[2**64]` | 0.0001337626407812125 | 7.407080608019694e-05 | 44.63% | 80.59% | 1.81x | ✅ | +| `hexbytes_new[2**8]` | 0.0001262593780154078 | 6.604478290186242e-05 | 47.69% | 91.17% | 1.91x | ✅ | +| `hexbytes_new[4-byte pattern]` | 4.360159705571842e-05 | 2.6647476466573845e-05 | 38.88% | 63.62% | 1.64x | ✅ | +| `hexbytes_new[False]` | 6.014848031316459e-05 | 2.7224935741460685e-05 | 54.74% | 120.93% | 2.21x | ✅ | +| `hexbytes_new[True]` | 6.0794303475654845e-05 | 2.7354790837061063e-05 | 55.00% | 122.24% | 2.22x | ✅ | +| `hexbytes_new[all byte values]` | 4.296967811574181e-05 | 2.684531724803922e-05 | 37.52% | 60.06% | 1.60x | ✅ | +| `hexbytes_new[alternating 0x00/0xff]` | 4.3062775261680606e-05 | 2.6537134253935653e-05 | 38.38% | 62.27% | 1.62x | ✅ | +| `hexbytes_new[alternating 0xaa/0x55]` | 4.298977970757695e-05 | 2.6403619519492216e-05 | 38.58% | 62.82% | 1.63x | ✅ | +| `hexbytes_new[ascii sentence]` | 4.246638875655563e-05 | 2.5887061976063426e-05 | 39.04% | 64.04% | 1.64x | ✅ | +| `hexbytes_new[b'']` | 4.2383826946904776e-05 | 2.5628228111769443e-05 | 39.53% | 65.38% | 1.65x | ✅ | +| `hexbytes_new[b'\\x00'*32]` | 4.307752169814541e-05 | 2.589398757501326e-05 | 39.89% | 66.36% | 1.66x | ✅ | +| `hexbytes_new[b'\\x00\\xff\\x00\\xff']` | 4.223641207973662e-05 | 2.5798595274149905e-05 | 38.92% | 63.72% | 1.64x | ✅ | +| `hexbytes_new[b'\\x01'*100]` | 4.352943718555897e-05 | 2.659826734278178e-05 | 38.90% | 63.66% | 1.64x | ✅ | +| `hexbytes_new[b'\\x01'*2048]` | 5.5800981326568164e-05 | 3.839877630118332e-05 | 31.19% | 45.32% | 1.45x | ✅ | +| `hexbytes_new[b'\\x01\\x02\\x03']` | 4.304376786325528e-05 | 2.560384927324432e-05 | 40.52% | 68.11% | 1.68x | ✅ | +| `hexbytes_new[b'\\x10\\x20\\x30\\x40\\x50']` | 4.308696258014535e-05 | 2.6016951481610805e-05 | 39.62% | 65.61% | 1.66x | ✅ | +| `hexbytes_new[b'\\x7f'*8]` | 4.3012564268905466e-05 | 2.57301809716526e-05 | 40.18% | 67.17% | 1.67x | ✅ | +| `hexbytes_new[b'\\x80'*8]` | 4.3403516177090726e-05 | 2.57476893945114e-05 | 40.68% | 68.57% | 1.69x | ✅ | +| `hexbytes_new[b'\\xde\\xad\\xbe\\xef']` | 4.310837230910579e-05 | 2.5644658757821025e-05 | 40.51% | 68.10% | 1.68x | ✅ | +| `hexbytes_new[b'\\xff'*64]` | 4.308343037439319e-05 | 2.6258824729240215e-05 | 39.05% | 64.07% | 1.64x | ✅ | +| `hexbytes_new[b'a'*1024]` | 5.057241981908928e-05 | 3.296570205910291e-05 | 34.81% | 53.41% | 1.53x | ✅ | +| `hexbytes_new[b'abc']` | 4.3720569268309305e-05 | 2.5630198218377632e-05 | 41.38% | 70.58% | 1.71x | ✅ | +| `hexbytes_new[bytearray(0-9)]` | 7.054917442162382e-05 | 3.759584054735278e-05 | 46.71% | 87.65% | 1.88x | ✅ | +| `hexbytes_new[bytearray(4-byte pattern)]` | 6.964788147158704e-05 | 3.850574151245135e-05 | 44.71% | 80.88% | 1.81x | ✅ | +| `hexbytes_new[bytearray(all byte values)]` | 7.021626186199028e-05 | 3.8079672858952955e-05 | 45.77% | 84.39% | 1.84x | ✅ | +| `hexbytes_new[bytearray(alternating 0x00/0xff)]` | 6.95000834141796e-05 | 3.798011462624858e-05 | 45.35% | 82.99% | 1.83x | ✅ | +| `hexbytes_new[bytearray(alternating 0xaa/0x55)]` | 6.926582970870214e-05 | 3.7886847258748446e-05 | 45.30% | 82.82% | 1.83x | ✅ | +| `hexbytes_new[bytearray(ascii sentence)]` | 7.053746370335263e-05 | 3.7970579391047574e-05 | 46.17% | 85.77% | 1.86x | ✅ | +| `hexbytes_new[bytearray(b'')]` | 6.83973090178081e-05 | 3.64542405245791e-05 | 46.70% | 87.63% | 1.88x | ✅ | +| `hexbytes_new[bytearray(b'\\x00'*32)]` | 7.058704910573099e-05 | 3.808613987226178e-05 | 46.04% | 85.34% | 1.85x | ✅ | +| `hexbytes_new[bytearray(b'\\x00\\xff\\x00\\xff')]` | 6.986565681768215e-05 | 3.8078540838925095e-05 | 45.50% | 83.48% | 1.83x | ✅ | +| `hexbytes_new[bytearray(b'\\x01'*100)]` | 6.989298778362405e-05 | 3.8237999835667106e-05 | 45.29% | 82.78% | 1.83x | ✅ | +| `hexbytes_new[bytearray(b'\\x01'*2048)]` | 9.082635590848168e-05 | 5.684915016930975e-05 | 37.41% | 59.77% | 1.60x | ✅ | +| `hexbytes_new[bytearray(b'\\x01\\x02\\x03')]` | 7.025180063561893e-05 | 3.844814423546138e-05 | 45.27% | 82.72% | 1.83x | ✅ | +| `hexbytes_new[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 6.984890331797619e-05 | 3.821421594774138e-05 | 45.29% | 82.78% | 1.83x | ✅ | +| `hexbytes_new[bytearray(b'\\x7f'*8)]` | 6.861618776161423e-05 | 3.790396922592592e-05 | 44.76% | 81.03% | 1.81x | ✅ | +| `hexbytes_new[bytearray(b'\\x80'*8)]` | 6.933724109949618e-05 | 3.925945421407942e-05 | 43.38% | 76.61% | 1.77x | ✅ | +| `hexbytes_new[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 6.926611377239828e-05 | 3.7963650700333346e-05 | 45.19% | 82.45% | 1.82x | ✅ | +| `hexbytes_new[bytearray(b'\\xff'*64)]` | 6.938405393728563e-05 | 3.807382322462547e-05 | 45.13% | 82.24% | 1.82x | ✅ | +| `hexbytes_new[bytearray(b'a'*1024)]` | 8.54044093558724e-05 | 5.0434738781333715e-05 | 40.95% | 69.34% | 1.69x | ✅ | +| `hexbytes_new[bytearray(b'abc')]` | 6.948809781909333e-05 | 3.825137693977182e-05 | 44.95% | 81.66% | 1.82x | ✅ | +| `hexbytes_new[bytearray(long alternating)]` | 8.50418725544602e-05 | 4.9771591213775414e-05 | 41.47% | 70.86% | 1.71x | ✅ | +| `hexbytes_new[bytearray(mixed pattern)]` | 6.998507490543224e-05 | 3.828017083357448e-05 | 45.30% | 82.82% | 1.83x | ✅ | +| `hexbytes_new[bytearray(multiples of 0x10)]` | 6.9420832710735e-05 | 3.748356229622278e-05 | 46.01% | 85.20% | 1.85x | ✅ | +| `hexbytes_new[bytearray(palindrome ascii)]` | 6.783446546365812e-05 | 3.7961088369537536e-05 | 44.04% | 78.69% | 1.79x | ✅ | +| `hexbytes_new[bytearray(palindrome numeric)]` | 6.951997922406556e-05 | 3.821227398429949e-05 | 45.03% | 81.93% | 1.82x | ✅ | +| `hexbytes_new[bytearray(palindrome)]` | 7.020352187582269e-05 | 3.8159446871872336e-05 | 45.64% | 83.97% | 1.84x | ✅ | +| `hexbytes_new[bytearray(repeated 0-9)]` | 7.064288548602511e-05 | 3.813820714797809e-05 | 46.01% | 85.23% | 1.85x | ✅ | +| `hexbytes_new[bytearray(single 0xff)]` | 7.012396960917494e-05 | 3.828443268896556e-05 | 45.40% | 83.17% | 1.83x | ✅ | +| `hexbytes_new[bytearray(single null byte)]` | 7.086106825508286e-05 | 3.8190048871102286e-05 | 46.11% | 85.55% | 1.86x | ✅ | +| `hexbytes_new[bytearray(two patterns)]` | 6.949692258960381e-05 | 3.807050030971784e-05 | 45.22% | 82.55% | 1.83x | ✅ | +| `hexbytes_new[long alternating]` | 5.0337389414310784e-05 | 3.2938961426282684e-05 | 34.56% | 52.82% | 1.53x | ✅ | +| `hexbytes_new[memoryview(0-9)]` | 8.635661359988142e-05 | 4.277920884511084e-05 | 50.46% | 101.87% | 2.02x | ✅ | +| `hexbytes_new[memoryview(4-byte pattern)]` | 8.512702040678775e-05 | 4.420743336535825e-05 | 48.07% | 92.56% | 1.93x | ✅ | +| `hexbytes_new[memoryview(all byte values)]` | 8.598961647255803e-05 | 4.380154956594847e-05 | 49.06% | 96.32% | 1.96x | ✅ | +| `hexbytes_new[memoryview(alternating 0x00/0xff)]` | 8.620637868593005e-05 | 4.2894175408336964e-05 | 50.24% | 100.97% | 2.01x | ✅ | +| `hexbytes_new[memoryview(alternating 0xaa/0x55)]` | 8.637526078000483e-05 | 4.253122078316311e-05 | 50.76% | 103.09% | 2.03x | ✅ | +| `hexbytes_new[memoryview(ascii sentence)]` | 8.666069884280398e-05 | 4.259371446364551e-05 | 50.85% | 103.46% | 2.03x | ✅ | +| `hexbytes_new[memoryview(b'')]` | 8.519100660315408e-05 | 4.1000612647030865e-05 | 51.87% | 107.78% | 2.08x | ✅ | +| `hexbytes_new[memoryview(b'\\x00'*32)]` | 8.681720066648464e-05 | 4.298256354370187e-05 | 50.49% | 101.98% | 2.02x | ✅ | +| `hexbytes_new[memoryview(b'\\x00\\xff\\x00\\xff')]` | 8.694876270506326e-05 | 4.305081717120313e-05 | 50.49% | 101.97% | 2.02x | ✅ | +| `hexbytes_new[memoryview(b'\\x01'*100)]` | 8.63694747670107e-05 | 4.372648520905376e-05 | 49.37% | 97.52% | 1.98x | ✅ | +| `hexbytes_new[memoryview(b'\\x01'*2048)]` | 0.00010565577473760478 | 6.253574985044737e-05 | 40.81% | 68.95% | 1.69x | ✅ | +| `hexbytes_new[memoryview(b'\\x01\\x02\\x03')]` | 8.629679343879003e-05 | 4.3030101563211535e-05 | 50.14% | 100.55% | 2.01x | ✅ | +| `hexbytes_new[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 8.463485305073628e-05 | 4.317603287445291e-05 | 48.99% | 96.02% | 1.96x | ✅ | +| `hexbytes_new[memoryview(b'\\x7f'*8)]` | 8.601510258610339e-05 | 4.2944787011541204e-05 | 50.07% | 100.29% | 2.00x | ✅ | +| `hexbytes_new[memoryview(b'\\x80'*8)]` | 8.622359710617895e-05 | 4.2738287090362994e-05 | 50.43% | 101.75% | 2.02x | ✅ | +| `hexbytes_new[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 8.561640880395846e-05 | 4.3125256402169114e-05 | 49.63% | 98.53% | 1.99x | ✅ | +| `hexbytes_new[memoryview(b'\\xff'*64)]` | 8.500486978925127e-05 | 4.264687516395847e-05 | 49.83% | 99.32% | 1.99x | ✅ | +| `hexbytes_new[memoryview(b'a'*1024)]` | 9.829402444229776e-05 | 5.640549951384395e-05 | 42.62% | 74.26% | 1.74x | ✅ | +| `hexbytes_new[memoryview(b'abc')]` | 8.72506614117765e-05 | 4.311159197909468e-05 | 50.59% | 102.38% | 2.02x | ✅ | +| `hexbytes_new[memoryview(long alternating)]` | 9.797697621342298e-05 | 5.7131590662754485e-05 | 41.69% | 71.49% | 1.71x | ✅ | +| `hexbytes_new[memoryview(mixed pattern)]` | 8.533260381029738e-05 | 4.351373575012477e-05 | 49.01% | 96.10% | 1.96x | ✅ | +| `hexbytes_new[memoryview(multiples of 0x10)]` | 8.677999189450184e-05 | 4.3007245298222025e-05 | 50.44% | 101.78% | 2.02x | ✅ | +| `hexbytes_new[memoryview(palindrome ascii)]` | 8.604829730237082e-05 | 4.308315264519062e-05 | 49.93% | 99.73% | 2.00x | ✅ | +| `hexbytes_new[memoryview(palindrome numeric)]` | 8.630105251016679e-05 | 4.279419950991166e-05 | 50.41% | 101.67% | 2.02x | ✅ | +| `hexbytes_new[memoryview(palindrome)]` | 8.863736926557844e-05 | 4.281252103315611e-05 | 51.70% | 107.04% | 2.07x | ✅ | +| `hexbytes_new[memoryview(repeated 0-9)]` | 8.70703255406833e-05 | 4.348026883563041e-05 | 50.06% | 100.25% | 2.00x | ✅ | +| `hexbytes_new[memoryview(single 0xff)]` | 8.703643636977645e-05 | 4.313989414716809e-05 | 50.43% | 101.75% | 2.02x | ✅ | +| `hexbytes_new[memoryview(single null byte)]` | 8.672025020288838e-05 | 4.3359863200481304e-05 | 50.00% | 100.00% | 2.00x | ✅ | +| `hexbytes_new[memoryview(two patterns)]` | 8.566422746408213e-05 | 4.325968501455721e-05 | 49.50% | 98.02% | 1.98x | ✅ | +| `hexbytes_new[mixed pattern]` | 4.283258847746323e-05 | 2.652779169025783e-05 | 38.07% | 61.46% | 1.61x | ✅ | +| `hexbytes_new[multiples of 0x10]` | 4.211022794674997e-05 | 2.58657357800034e-05 | 38.58% | 62.80% | 1.63x | ✅ | +| `hexbytes_new[palindrome ascii]` | 4.2191394589151484e-05 | 2.5931143993224695e-05 | 38.54% | 62.71% | 1.63x | ✅ | +| `hexbytes_new[palindrome numeric]` | 4.231237493234109e-05 | 2.5868487345916664e-05 | 38.86% | 63.57% | 1.64x | ✅ | +| `hexbytes_new[palindrome]` | 4.2943284978035634e-05 | 2.5568473049951326e-05 | 40.46% | 67.95% | 1.68x | ✅ | +| `hexbytes_new[repeated 0-9]` | 4.263140463764382e-05 | 2.6528552808378908e-05 | 37.77% | 60.70% | 1.61x | ✅ | +| `hexbytes_new[single 0xff]` | 4.27799448088154e-05 | 2.59839271051909e-05 | 39.26% | 64.64% | 1.65x | ✅ | +| `hexbytes_new[single null byte]` | 4.30556884997703e-05 | 2.5444155586503732e-05 | 40.90% | 69.22% | 1.69x | ✅ | +| `hexbytes_new[two patterns]` | 4.2734504646908925e-05 | 2.6557277559248504e-05 | 37.86% | 60.91% | 1.61x | ✅ | +| `hexbytes_repr[0-9]` | 2.8858747385831453e-05 | 1.4571622141304269e-05 | 49.51% | 98.05% | 1.98x | ✅ | +| `hexbytes_repr[4-byte pattern]` | 0.0001192617413231854 | 4.052649622620383e-05 | 66.02% | 194.28% | 2.94x | ✅ | +| `hexbytes_repr[all byte values]` | 0.00011952430656231849 | 4.0697803725643195e-05 | 65.95% | 193.69% | 2.94x | ✅ | +| `hexbytes_repr[alternating 0x00/0xff]` | 5.025322540188212e-05 | 1.975445423063589e-05 | 60.69% | 154.39% | 2.54x | ✅ | +| `hexbytes_repr[alternating 0xaa/0x55]` | 4.8736154734882976e-05 | 1.9926901444329513e-05 | 59.11% | 144.57% | 2.45x | ✅ | +| `hexbytes_repr[ascii sentence]` | 4.1557086173413933e-05 | 1.7637991868486704e-05 | 57.56% | 135.61% | 2.36x | ✅ | +| `hexbytes_repr[b'']` | 2.153287237369583e-05 | 1.2234776824158554e-05 | 43.18% | 76.00% | 1.76x | ✅ | +| `hexbytes_repr[b'\\x00'*32]` | 3.653769367376519e-05 | 1.6736832450361976e-05 | 54.19% | 118.31% | 2.18x | ✅ | +| `hexbytes_repr[b'\\x00\\xff\\x00\\xff']` | 2.642648917094263e-05 | 1.392991711888344e-05 | 47.29% | 89.71% | 1.90x | ✅ | +| `hexbytes_repr[b'\\x01'*100]` | 6.124462457291185e-05 | 2.3888131553544282e-05 | 61.00% | 156.38% | 2.56x | ✅ | +| `hexbytes_repr[b'\\x01'*2048]` | 0.0007602657531711047 | 0.00022298468886099084 | 70.67% | 240.95% | 3.41x | ✅ | +| `hexbytes_repr[b'\\x01\\x02\\x03']` | 2.6371404730649557e-05 | 1.4451511046459195e-05 | 45.20% | 82.48% | 1.82x | ✅ | +| `hexbytes_repr[b'\\x10\\x20\\x30\\x40\\x50']` | 2.7003017354854108e-05 | 1.3848073093090484e-05 | 48.72% | 94.99% | 1.95x | ✅ | +| `hexbytes_repr[b'\\x7f'*8]` | 2.8215031633154822e-05 | 1.4471638339596259e-05 | 48.71% | 94.97% | 1.95x | ✅ | +| `hexbytes_repr[b'\\x80'*8]` | 2.833823678124318e-05 | 1.4376135530411036e-05 | 49.27% | 97.12% | 1.97x | ✅ | +| `hexbytes_repr[b'\\xde\\xad\\xbe\\xef']` | 2.6459838178758058e-05 | 1.3977711490329133e-05 | 47.17% | 89.30% | 1.89x | ✅ | +| `hexbytes_repr[b'\\xff'*64]` | 4.885272597374557e-05 | 1.947736809972354e-05 | 60.13% | 150.82% | 2.51x | ✅ | +| `hexbytes_repr[b'a'*1024]` | 0.0003943474792045026 | 0.00011898096524251511 | 69.83% | 231.44% | 3.31x | ✅ | +| `hexbytes_repr[b'abc']` | 2.6463660114926324e-05 | 1.395178307691483e-05 | 47.28% | 89.68% | 1.90x | ✅ | +| `hexbytes_repr[long alternating]` | 0.0003980782283221685 | 0.00012261880188514464 | 69.20% | 224.65% | 3.25x | ✅ | +| `hexbytes_repr[mixed pattern]` | 9.754363004421543e-05 | 3.394650832731348e-05 | 65.20% | 187.35% | 2.87x | ✅ | +| `hexbytes_repr[multiples of 0x10]` | 2.910688200922982e-05 | 1.4678158106613551e-05 | 49.57% | 98.30% | 1.98x | ✅ | +| `hexbytes_repr[palindrome ascii]` | 2.7899104441850166e-05 | 1.431140084866364e-05 | 48.70% | 94.94% | 1.95x | ✅ | +| `hexbytes_repr[palindrome numeric]` | 2.7083488630455384e-05 | 1.3990934261146326e-05 | 48.34% | 93.58% | 1.94x | ✅ | +| `hexbytes_repr[palindrome]` | 3.166033679679532e-05 | 1.5429816040322834e-05 | 51.26% | 105.19% | 2.05x | ✅ | +| `hexbytes_repr[repeated 0-9]` | 6.103195436808407e-05 | 2.3545839398322838e-05 | 61.42% | 159.20% | 2.59x | ✅ | +| `hexbytes_repr[single 0xff]` | 2.56737808282213e-05 | 1.360854129744522e-05 | 46.99% | 88.66% | 1.89x | ✅ | +| `hexbytes_repr[single null byte]` | 2.5635900688736845e-05 | 1.338539008366905e-05 | 47.79% | 91.52% | 1.92x | ✅ | +| `hexbytes_repr[two patterns]` | 4.9148915953498505e-05 | 1.9849889512826822e-05 | 59.61% | 147.60% | 2.48x | ✅ | +| `hexbytes_to_0x_hex[0-9]` | 1.556304754458437e-05 | 1.3709513320075459e-05 | 11.91% | 13.52% | 1.14x | ✅ | +| `hexbytes_to_0x_hex[4-byte pattern]` | 4.198319067009947e-05 | 3.958010645387982e-05 | 5.72% | 6.07% | 1.06x | ✅ | +| `hexbytes_to_0x_hex[all byte values]` | 4.201107269535511e-05 | 3.971325733624996e-05 | 5.47% | 5.79% | 1.06x | ✅ | +| `hexbytes_to_0x_hex[alternating 0x00/0xff]` | 2.0766317575833785e-05 | 1.8828981170482504e-05 | 9.33% | 10.29% | 1.10x | ✅ | +| `hexbytes_to_0x_hex[alternating 0xaa/0x55]` | 2.090651254484494e-05 | 1.8926393976318943e-05 | 9.47% | 10.46% | 1.10x | ✅ | +| `hexbytes_to_0x_hex[ascii sentence]` | 1.876279761976904e-05 | 1.693656283534768e-05 | 9.73% | 10.78% | 1.11x | ✅ | +| `hexbytes_to_0x_hex[b'']` | 1.0086430481502697e-05 | 1.1380818969404555e-05 | -12.83% | -11.37% | 0.89x | ❌ | +| `hexbytes_to_0x_hex[b'\\x00'*32]` | 1.7518117425421204e-05 | 1.5867671201037854e-05 | 9.42% | 10.40% | 1.10x | ✅ | +| `hexbytes_to_0x_hex[b'\\x00\\xff\\x00\\xff']` | 1.4940982376095728e-05 | 1.3016743473670461e-05 | 12.88% | 14.78% | 1.15x | ✅ | +| `hexbytes_to_0x_hex[b'\\x01'*100]` | 2.505234352196375e-05 | 2.281491113819892e-05 | 8.93% | 9.81% | 1.10x | ✅ | +| `hexbytes_to_0x_hex[b'\\x01'*2048]` | 0.00022631059530009648 | 0.0002224669378017651 | 1.70% | 1.73% | 1.02x | ✅ | +| `hexbytes_to_0x_hex[b'\\x01\\x02\\x03']` | 1.4786085845816331e-05 | 1.3126803894169558e-05 | 11.22% | 12.64% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[b'\\x10\\x20\\x30\\x40\\x50']` | 1.4913843934438887e-05 | 1.3274359173822132e-05 | 10.99% | 12.35% | 1.12x | ✅ | +| `hexbytes_to_0x_hex[b'\\x7f'*8]` | 1.5262065343332186e-05 | 1.353608851268777e-05 | 11.31% | 12.75% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[b'\\x80'*8]` | 1.520008250655406e-05 | 1.3569954390201206e-05 | 10.72% | 12.01% | 1.12x | ✅ | +| `hexbytes_to_0x_hex[b'\\xde\\xad\\xbe\\xef']` | 1.4997038638038299e-05 | 1.3236255990897042e-05 | 11.74% | 13.30% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[b'\\xff'*64]` | 2.066246939320439e-05 | 1.8998041323243628e-05 | 8.06% | 8.76% | 1.09x | ✅ | +| `hexbytes_to_0x_hex[b'a'*1024]` | 0.00012237528195335469 | 0.00012128273625304591 | 0.89% | 0.90% | 1.01x | ✅ | +| `hexbytes_to_0x_hex[b'abc']` | 1.4747148337076757e-05 | 1.298273879467231e-05 | 11.96% | 13.59% | 1.14x | ✅ | +| `hexbytes_to_0x_hex[long alternating]` | 0.0001221119719070192 | 0.0001222167249971143 | -0.09% | -0.09% | 1.00x | ❌ | +| `hexbytes_to_0x_hex[mixed pattern]` | 3.4987004287633314e-05 | 3.29332463847692e-05 | 5.87% | 6.24% | 1.06x | ✅ | +| `hexbytes_to_0x_hex[multiples of 0x10]` | 1.553288196947369e-05 | 1.3677506365198229e-05 | 11.94% | 13.57% | 1.14x | ✅ | +| `hexbytes_to_0x_hex[palindrome ascii]` | 1.5123135618074661e-05 | 1.3270538905469987e-05 | 12.25% | 13.96% | 1.14x | ✅ | +| `hexbytes_to_0x_hex[palindrome numeric]` | 1.4949788369861193e-05 | 1.3032741816815059e-05 | 12.82% | 14.71% | 1.15x | ✅ | +| `hexbytes_to_0x_hex[palindrome]` | 1.6399139115689817e-05 | 1.479890650660196e-05 | 9.76% | 10.81% | 1.11x | ✅ | +| `hexbytes_to_0x_hex[repeated 0-9]` | 2.5121145370014236e-05 | 2.2756887374277395e-05 | 9.41% | 10.39% | 1.10x | ✅ | +| `hexbytes_to_0x_hex[single 0xff]` | 1.4703480205614086e-05 | 1.285226228034348e-05 | 12.59% | 14.40% | 1.14x | ✅ | +| `hexbytes_to_0x_hex[single null byte]` | 1.474190925986605e-05 | 1.303333934140912e-05 | 11.59% | 13.11% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[two patterns]` | 2.114824611432251e-05 | 1.8769291415243983e-05 | 11.25% | 12.67% | 1.13x | ✅ | From eea8646d2c5ec6890f8da6818fd8b772683ee238 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Wed, 8 Oct 2025 13:17:34 -0400 Subject: [PATCH 74/98] feat(test): test on Python3.14, 3.13t, 3.14t (#16) --- .github/workflows/tox.yaml | 5 +++-- tox.ini | 16 +++++----------- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/.github/workflows/tox.yaml b/.github/workflows/tox.yaml index 1b1275c..fa366b2 100644 --- a/.github/workflows/tox.yaml +++ b/.github/workflows/tox.yaml @@ -5,9 +5,10 @@ on: branches: [main, master] paths: - '**.py' - - '.github/workflows/benchmark.yaml' + - '.github/workflows/tox.yaml' - 'pyproject.toml' - 'setup.py' + - 'tox.ini' pull_request: branches: [main, master] paths: @@ -31,7 +32,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] - python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.13t", "3.14", "3.14t"] jobtype: [core, lint, wheel] env: TOXENV: py${{ matrix.python-version }}-${{ matrix.jobtype }} diff --git a/tox.ini b/tox.ini index cfb884f..0b7521c 100644 --- a/tox.ini +++ b/tox.ini @@ -1,8 +1,8 @@ [tox] envlist= - py{39,310,311,312,313,314}-core - py{39,310,311,312,313,314}-lint - py{39,310,311,312,313,314}-wheel + py{39,310,311,312,313,313t,314,314t}-core + py{39,310,311,312,313,313t,314,314t}-lint + py{39,310,311,312,313,313t,314,314t}-wheel windows-wheel docs @@ -23,25 +23,19 @@ commands= basepython= docs: python windows-wheel: python - py39: python3.9 - py310: python3.10 - py311: python3.11 - py312: python3.12 - py313: python3.13 - py314: python3.14 extras= test docs allowlist_externals=make,pre-commit -[testenv:py{39,310,311,312,313,314}-lint] +[testenv:py{39,310,311,312,313,313t,314,314t}-lint] deps=pre-commit extras=dev commands= pre-commit install pre-commit run --all-files --show-diff-on-failure -[testenv:py{39,310,311,312,313,314}-wheel] +[testenv:py{39,310,311,312,313,313t,314,314t}-wheel] deps= wheel build[virtualenv] From e76a7bc5e0577de2cdb09213a56a43ca84afde77 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Wed, 8 Oct 2025 14:32:45 -0400 Subject: [PATCH 75/98] feat(cicd): build C files for source control on py3.14 (#18) --- .github/workflows/compile.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/compile.yaml b/.github/workflows/compile.yaml index 45dde6a..ab5d378 100644 --- a/.github/workflows/compile.yaml +++ b/.github/workflows/compile.yaml @@ -31,7 +31,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: "3.13" + python-version: "3.14" cache: pip cache-dependency-path: | setup.py From 5aecfbaea87ee3e22f431f86cd41b410f56767b5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 Oct 2025 14:45:40 -0400 Subject: [PATCH 76/98] Add renovate.json (#19) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- renovate.json | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 renovate.json diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000..5db72dd --- /dev/null +++ b/renovate.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "config:recommended" + ] +} From 1f07526b462f9cba7656f3503a7ac1f3bfce7fa3 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Wed, 8 Oct 2025 15:23:57 -0400 Subject: [PATCH 77/98] fix(test): run cronjob daily --- .github/workflows/tox.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tox.yaml b/.github/workflows/tox.yaml index fa366b2..bee84df 100644 --- a/.github/workflows/tox.yaml +++ b/.github/workflows/tox.yaml @@ -17,7 +17,7 @@ on: - 'pyproject.toml' - 'setup.py' schedule: - - cron: '0 12 * * 1-5' # Weekdays 12:00 UTC + - cron: '0 10 * * *' # Daily 10:00 UTC workflow_dispatch: concurrency: From 8bc655f99c1abaa09c489ab8a924a1f06dfb664c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 Oct 2025 15:58:04 -0400 Subject: [PATCH 78/98] chore(deps): update dependency win to v5.1.0 (#23) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 6f2106b..38296b7 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -37,7 +37,7 @@ common: &common key: cache-v1-{{ arch }}-{{ .Environment.CIRCLE_JOB }}-{{ checksum "setup.py" }}-{{ checksum "tox.ini" }} orbs: - win: circleci/windows@5.0.0 + win: circleci/windows@5.1.0 windows-wheel-steps: windows-wheel-setup: &windows-wheel-setup From 50acbfb4bb5555876d87701e18bd4817bf1931f2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 9 Oct 2025 23:51:40 -0400 Subject: [PATCH 79/98] chore(deps): update actions/download-artifact action to v5 (#25) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/release.yaml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 4a264d0..28b1227 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -147,43 +147,43 @@ jobs: # Download wheels built on each runner # ---------------------------------------------------- - name: Download manylinux 64-bit wheels - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 with: name: "wheels-ubuntu-latest-manylinux-x64" path: wheelhouse/linux-many-x64 - name: Download manylinux 32-bit wheels - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 with: name: "wheels-ubuntu-latest-manylinux-x86" path: wheelhouse/linux-many-x86 - name: Download musllinux 64-bit wheels - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 with: name: "wheels-ubuntu-latest-musllinux-x64" path: wheelhouse/linux-musl-x64 - name: Download musllinux 32-bit wheels - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 with: name: "wheels-ubuntu-latest-musllinux-x86" path: wheelhouse/linux-musl-x86 - name: Download macOS wheels - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 with: name: "wheels-macos-latest" path: wheelhouse/macos - name: Download Windows 64-bit wheels - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 with: name: "wheels-windows-latest-x64" path: wheelhouse/windows-x64 - name: Download Windows 32-bit wheels - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 with: name: "wheels-windows-latest-x86" path: wheelhouse/windows-x86 From a7a844e1419b7fcfc13d901b7215c42857311500 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 9 Oct 2025 23:52:09 -0400 Subject: [PATCH 80/98] chore(deps): update actions/github-script action to v8 (#26) * chore(deps): update actions/github-script action to v8 * Update benchmark results [skip ci] --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] --- .github/workflows/benchmark.yaml | 2 +- benchmarks/results/_utils.md | 276 ++++----- benchmarks/results/main.md | 966 +++++++++++++++---------------- 3 files changed, 622 insertions(+), 622 deletions(-) diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml index d0f88a1..b0bfb19 100644 --- a/.github/workflows/benchmark.yaml +++ b/.github/workflows/benchmark.yaml @@ -81,7 +81,7 @@ jobs: name: pytest-benchmark-diff path: pytest_benchmark_diff.json - name: Post Pytest Benchmark Diff as PR Comment - uses: actions/github-script@v7 + uses: actions/github-script@v8 with: script: | const fs = require('fs'); diff --git a/benchmarks/results/_utils.md b/benchmarks/results/_utils.md index 5e0909f..419649c 100644 --- a/benchmarks/results/_utils.md +++ b/benchmarks/results/_utils.md @@ -1,141 +1,141 @@ -#### [faster_hexbytes._utils](https://github.com/BobTheBuidler/faster-hexbytes/blob/master/faster_hexbytes/_utils.py) - [view benchmarks](https://github.com/BobTheBuidler/faster-hexbytes/blob/master/benchmarks/test__utils_benchmarks.py) +#### [faster_hexbytes._utils](https://github.com/BobTheBuidler/faster-hexbytes/blob/renovate/actions-github-script-8.x/faster_hexbytes/_utils.py) - [view benchmarks](https://github.com/BobTheBuidler/faster-hexbytes/blob/renovate/actions-github-script-8.x/benchmarks/test__utils_benchmarks.py) | Function | Reference Mean | Faster Mean | % Change | Speedup (%) | x Faster | Faster | |----------|---------------|-------------|----------|-------------|----------|--------| -| `hexstr_to_bytes['']` | 1.77237661607285e-05 | 1.0852136751025557e-05 | 38.77% | 63.32% | 1.63x | ✅ | -| `hexstr_to_bytes['0x'+'0'*128]` | 3.4249250423326997e-05 | 2.2661935033432217e-05 | 33.83% | 51.13% | 1.51x | ✅ | -| `hexstr_to_bytes['0x'+'00'*64]` | 3.4005978229019134e-05 | 2.273530171938239e-05 | 33.14% | 49.57% | 1.50x | ✅ | -| `hexstr_to_bytes['0x'+'00ff'*16]` | 3.098933392218192e-05 | 1.974450105367924e-05 | 36.29% | 56.95% | 1.57x | ✅ | -| `hexstr_to_bytes['0x'+'0123456789abcdef'*8]` | 3.411646364870308e-05 | 2.2679837057399896e-05 | 33.52% | 50.43% | 1.50x | ✅ | -| `hexstr_to_bytes['0x'+'1'*64]` | 3.095287012633853e-05 | 1.9879670117501244e-05 | 35.77% | 55.70% | 1.56x | ✅ | -| `hexstr_to_bytes['0x'+'1234567890abcdef'*8]` | 3.4369322338064215e-05 | 2.260329781602282e-05 | 34.23% | 52.05% | 1.52x | ✅ | -| `hexstr_to_bytes['0x'+'a'*128]` | 3.4045320611141995e-05 | 2.2601365765967467e-05 | 33.61% | 50.63% | 1.51x | ✅ | -| `hexstr_to_bytes['0x'+'a1b2c3d4'*8]` | 3.10951012067255e-05 | 1.971364468360512e-05 | 36.60% | 57.73% | 1.58x | ✅ | -| `hexstr_to_bytes['0x'+'b'*2048]` | 0.00013563677777443528 | 0.00012143463440062397 | 10.47% | 11.70% | 1.12x | ✅ | -| `hexstr_to_bytes['0x'+'badc0ffee0ddf00d'*4]` | 3.138700727593345e-05 | 1.997641056294928e-05 | 36.35% | 57.12% | 1.57x | ✅ | -| `hexstr_to_bytes['0x'+'beef'*16]` | 3.107871443457163e-05 | 1.9642913429833737e-05 | 36.80% | 58.22% | 1.58x | ✅ | -| `hexstr_to_bytes['0x'+'c'*1024]` | 8.878954802613057e-05 | 7.256567801335433e-05 | 18.27% | 22.36% | 1.22x | ✅ | -| `hexstr_to_bytes['0x'+'cafebabe'*8]` | 3.1059725261225576e-05 | 1.9804716114500143e-05 | 36.24% | 56.83% | 1.57x | ✅ | -| `hexstr_to_bytes['0x'+'d'*512]` | 5.659439538229879e-05 | 4.242287776630478e-05 | 25.04% | 33.41% | 1.33x | ✅ | -| `hexstr_to_bytes['0x'+'dead'*16]` | 3.110094439308227e-05 | 1.971534950974133e-05 | 36.61% | 57.75% | 1.58x | ✅ | -| `hexstr_to_bytes['0x'+'e'*256]` | 4.290366060087679e-05 | 2.9047865182033338e-05 | 32.30% | 47.70% | 1.48x | ✅ | -| `hexstr_to_bytes['0x'+'f'*128]` | 3.4123507539353215e-05 | 2.2504912243435766e-05 | 34.05% | 51.63% | 1.52x | ✅ | -| `hexstr_to_bytes['0x'+'f'*64]` | 3.113486042250601e-05 | 1.976283071238423e-05 | 36.53% | 57.54% | 1.58x | ✅ | -| `hexstr_to_bytes['0x'+'facefeed'*8]` | 3.135192070767243e-05 | 1.9751410299301737e-05 | 37.00% | 58.73% | 1.59x | ✅ | -| `hexstr_to_bytes['0x'+'ff'*32]` | 3.0626234279505946e-05 | 2.0036268438610552e-05 | 34.58% | 52.85% | 1.53x | ✅ | -| `hexstr_to_bytes['0x'+'ff00'*16]` | 3.106729095195325e-05 | 1.962045279883089e-05 | 36.85% | 58.34% | 1.58x | ✅ | -| `hexstr_to_bytes['0x']` | 2.186240800727596e-05 | 1.0679751487973172e-05 | 51.15% | 104.71% | 2.05x | ✅ | -| `hexstr_to_bytes['0x0']` | 3.135500755300559e-05 | 1.9884102309504518e-05 | 36.58% | 57.69% | 1.58x | ✅ | -| `hexstr_to_bytes['0x1']` | 3.1273586851654494e-05 | 2.0126301245302324e-05 | 35.64% | 55.39% | 1.55x | ✅ | -| `hexstr_to_bytes['0x1234']` | 2.8241062891662933e-05 | 1.7739286136446057e-05 | 37.19% | 59.20% | 1.59x | ✅ | -| `hexstr_to_bytes['0xCAFEBABE']` | 2.9068630201058412e-05 | 1.776681967361229e-05 | 38.88% | 63.61% | 1.64x | ✅ | -| `hexstr_to_bytes['0xabcdef']` | 2.7925445732217786e-05 | 1.8076129637113254e-05 | 35.27% | 54.49% | 1.54x | ✅ | -| `hexstr_to_bytes['0xdeadbeef']` | 2.8434545490828152e-05 | 1.7485818053431523e-05 | 38.51% | 62.61% | 1.63x | ✅ | -| `hexstr_to_bytes['deadbeef']` | 2.187765327853597e-05 | 1.4051042976522113e-05 | 35.77% | 55.70% | 1.56x | ✅ | -| `to_bytes['']` | 2.8105658345043773e-05 | 1.2068942466146147e-05 | 57.06% | 132.88% | 2.33x | ✅ | -| `to_bytes['0x'+'00'*64]` | 4.6343935174336766e-05 | 2.467932718803689e-05 | 46.75% | 87.78% | 1.88x | ✅ | -| `to_bytes['0x'+'a'*128]` | 4.6506447132087234e-05 | 2.4401697837942446e-05 | 47.53% | 90.59% | 1.91x | ✅ | -| `to_bytes['0x'+'ff'*32]` | 4.4040155359341255e-05 | 2.1655857100855244e-05 | 50.83% | 103.36% | 2.03x | ✅ | -| `to_bytes['0x']` | 3.376783451264098e-05 | 1.2469471436001018e-05 | 63.07% | 170.80% | 2.71x | ✅ | -| `to_bytes['0x1234']` | 4.045748436621008e-05 | 1.9399449879433523e-05 | 52.05% | 108.55% | 2.09x | ✅ | -| `to_bytes['0xCAFEBABE']` | 4.0747723580174776e-05 | 1.9248693228240812e-05 | 52.76% | 111.69% | 2.12x | ✅ | -| `to_bytes['0xabcdef']` | 4.045162168780601e-05 | 1.9299390168853985e-05 | 52.29% | 109.60% | 2.10x | ✅ | -| `to_bytes['0xdeadbeef']` | 4.0721620984913676e-05 | 1.936791649780574e-05 | 52.44% | 110.25% | 2.10x | ✅ | -| `to_bytes['abc']` | 3.6409918286084695e-05 | 1.987414820204683e-05 | 45.42% | 83.20% | 1.83x | ✅ | -| `to_bytes['deadbeef']` | 3.1875264720979325e-05 | 1.5705215136998788e-05 | 50.73% | 102.96% | 2.03x | ✅ | -| `to_bytes[0-9]` | 6.267389781075556e-06 | 3.409486393086022e-06 | 45.60% | 83.82% | 1.84x | ✅ | -| `to_bytes[0]` | 7.425035260055863e-05 | 3.3330956267910446e-05 | 55.11% | 122.77% | 2.23x | ✅ | -| `to_bytes[123456]` | 7.881845722370163e-05 | 3.843915809325949e-05 | 51.23% | 105.05% | 2.05x | ✅ | -| `to_bytes[2**16]` | 8.099282443231269e-05 | 3.662625978081626e-05 | 54.78% | 121.13% | 2.21x | ✅ | -| `to_bytes[2**256-1]` | 8.415127578205072e-05 | 4.265087564494082e-05 | 49.32% | 97.30% | 1.97x | ✅ | -| `to_bytes[2**32]` | 8.250753026883148e-05 | 3.8287555146633336e-05 | 53.60% | 115.49% | 2.15x | ✅ | -| `to_bytes[2**64]` | 8.363211059805936e-05 | 4.1013310816989464e-05 | 50.96% | 103.91% | 2.04x | ✅ | -| `to_bytes[2**8]` | 7.874077924703053e-05 | 3.5794775711434604e-05 | 54.54% | 119.98% | 2.20x | ✅ | -| `to_bytes[4-byte pattern]` | 6.2694981083902715e-06 | 3.5911966469575457e-06 | 42.72% | 74.58% | 1.75x | ✅ | -| `to_bytes[False]` | 2.218916592060718e-05 | 3.943979362440606e-06 | 82.23% | 462.61% | 5.63x | ✅ | -| `to_bytes[True]` | 2.240339179317279e-05 | 3.931329779722236e-06 | 82.45% | 469.87% | 5.70x | ✅ | -| `to_bytes[all byte values]` | 6.374186943757589e-06 | 3.4043199320995713e-06 | 46.59% | 87.24% | 1.87x | ✅ | -| `to_bytes[alternating 0x00/0xff]` | 6.415446012054518e-06 | 3.5283113991208645e-06 | 45.00% | 81.83% | 1.82x | ✅ | -| `to_bytes[alternating 0xaa/0x55]` | 6.082513634636216e-06 | 3.351602509081594e-06 | 44.90% | 81.48% | 1.81x | ✅ | -| `to_bytes[ascii sentence]` | 6.42206659336153e-06 | 3.5487229287901316e-06 | 44.74% | 80.97% | 1.81x | ✅ | -| `to_bytes[b'']` | 6.076445438012491e-06 | 3.3817197834889096e-06 | 44.35% | 79.69% | 1.80x | ✅ | -| `to_bytes[b'\\x00'*32]` | 6.202003694849302e-06 | 3.3984232691690326e-06 | 45.20% | 82.50% | 1.82x | ✅ | -| `to_bytes[b'\\x00\\xff\\x00\\xff']` | 6.094847491376177e-06 | 3.377011265520447e-06 | 44.59% | 80.48% | 1.80x | ✅ | -| `to_bytes[b'\\x01'*100]` | 6.339309181386997e-06 | 3.493525032455862e-06 | 44.89% | 81.46% | 1.81x | ✅ | -| `to_bytes[b'\\x01'*2048]` | 6.2003570615909e-06 | 3.3668706777515018e-06 | 45.70% | 84.16% | 1.84x | ✅ | -| `to_bytes[b'\\x01\\x02\\x03']` | 6.178313495023761e-06 | 3.7662555999008113e-06 | 39.04% | 64.04% | 1.64x | ✅ | -| `to_bytes[b'\\x10\\x20\\x30\\x40\\x50']` | 6.395978180439182e-06 | 3.322913504549804e-06 | 48.05% | 92.48% | 1.92x | ✅ | -| `to_bytes[b'\\x7f'*8]` | 5.863515593995514e-06 | 3.441994738315133e-06 | 41.30% | 70.35% | 1.70x | ✅ | -| `to_bytes[b'\\x80'*8]` | 6.4107033491628205e-06 | 3.3607944490570046e-06 | 47.58% | 90.75% | 1.91x | ✅ | -| `to_bytes[b'\\xde\\xad\\xbe\\xef']` | 6.131870832872024e-06 | 3.5502804308658156e-06 | 42.10% | 72.72% | 1.73x | ✅ | -| `to_bytes[b'\\xff'*64]` | 6.201282917973082e-06 | 3.280209457517301e-06 | 47.10% | 89.05% | 1.89x | ✅ | -| `to_bytes[b'a'*1024]` | 5.866267939376335e-06 | 3.275135480525691e-06 | 44.17% | 79.12% | 1.79x | ✅ | -| `to_bytes[b'abc']` | 5.738133020280195e-06 | 3.5739416139835995e-06 | 37.72% | 60.55% | 1.61x | ✅ | -| `to_bytes[bytearray(0-9)]` | 2.8578386507418373e-05 | 1.4001424282520703e-05 | 51.01% | 104.11% | 2.04x | ✅ | -| `to_bytes[bytearray(4-byte pattern)]` | 2.8702708963577302e-05 | 1.3819529348455197e-05 | 51.85% | 107.70% | 2.08x | ✅ | -| `to_bytes[bytearray(all byte values)]` | 2.9351842838587287e-05 | 1.408273912164685e-05 | 52.02% | 108.42% | 2.08x | ✅ | -| `to_bytes[bytearray(alternating 0x00/0xff)]` | 2.8111672622511436e-05 | 1.3822032744720708e-05 | 50.83% | 103.38% | 2.03x | ✅ | -| `to_bytes[bytearray(alternating 0xaa/0x55)]` | 2.827750690001025e-05 | 1.392736702080307e-05 | 50.75% | 103.04% | 2.03x | ✅ | -| `to_bytes[bytearray(ascii sentence)]` | 2.8094188500841305e-05 | 1.4052720099199044e-05 | 49.98% | 99.92% | 2.00x | ✅ | -| `to_bytes[bytearray(b'')]` | 2.625230542229368e-05 | 1.248667769193478e-05 | 52.44% | 110.24% | 2.10x | ✅ | -| `to_bytes[bytearray(b'\\x00'*32)]` | 2.774303437946171e-05 | 1.4001525342272554e-05 | 49.53% | 98.14% | 1.98x | ✅ | -| `to_bytes[bytearray(b'\\x00\\xff\\x00\\xff')]` | 2.7742665865747156e-05 | 1.4100680803331155e-05 | 49.17% | 96.75% | 1.97x | ✅ | -| `to_bytes[bytearray(b'\\x01'*100)]` | 2.8213858610625e-05 | 1.3767281826792093e-05 | 51.20% | 104.93% | 2.05x | ✅ | -| `to_bytes[bytearray(b'\\x01'*2048)]` | 3.6544412331066454e-05 | 1.9591877258283695e-05 | 46.39% | 86.53% | 1.87x | ✅ | -| `to_bytes[bytearray(b'\\x01\\x02\\x03')]` | 2.8440815740635246e-05 | 1.4063479988082985e-05 | 50.55% | 102.23% | 2.02x | ✅ | -| `to_bytes[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 2.7605729272858428e-05 | 1.3960256115485621e-05 | 49.43% | 97.75% | 1.98x | ✅ | -| `to_bytes[bytearray(b'\\x7f'*8)]` | 2.786168095496579e-05 | 1.3817784802535086e-05 | 50.41% | 101.64% | 2.02x | ✅ | -| `to_bytes[bytearray(b'\\x80'*8)]` | 2.8167304536214266e-05 | 1.3893528472532327e-05 | 50.67% | 102.74% | 2.03x | ✅ | -| `to_bytes[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 2.7828949843220507e-05 | 1.4013531083990381e-05 | 49.64% | 98.59% | 1.99x | ✅ | -| `to_bytes[bytearray(b'\\xff'*64)]` | 2.807539095081209e-05 | 1.4241074554227485e-05 | 49.28% | 97.14% | 1.97x | ✅ | -| `to_bytes[bytearray(b'a'*1024)]` | 3.489245847749765e-05 | 1.881295573584872e-05 | 46.08% | 85.47% | 1.85x | ✅ | -| `to_bytes[bytearray(b'abc')]` | 2.8332762107042827e-05 | 1.3858591822563912e-05 | 51.09% | 104.44% | 2.04x | ✅ | -| `to_bytes[bytearray(long alternating)]` | 3.4933488841662915e-05 | 1.8804903716274508e-05 | 46.17% | 85.77% | 1.86x | ✅ | -| `to_bytes[bytearray(mixed pattern)]` | 2.8792714955704674e-05 | 1.4154149808559004e-05 | 50.84% | 103.42% | 2.03x | ✅ | -| `to_bytes[bytearray(multiples of 0x10)]` | 2.8279899469614908e-05 | 1.4072510507052374e-05 | 50.24% | 100.96% | 2.01x | ✅ | -| `to_bytes[bytearray(palindrome ascii)]` | 2.8259954353513163e-05 | 1.3710262884394237e-05 | 51.49% | 106.12% | 2.06x | ✅ | -| `to_bytes[bytearray(palindrome numeric)]` | 2.823425408051225e-05 | 1.4132658899447017e-05 | 49.94% | 99.78% | 2.00x | ✅ | -| `to_bytes[bytearray(palindrome)]` | 2.816266444393642e-05 | 1.3907063487053585e-05 | 50.62% | 102.51% | 2.03x | ✅ | -| `to_bytes[bytearray(repeated 0-9)]` | 2.8565992960492765e-05 | 1.4034557156275468e-05 | 50.87% | 103.54% | 2.04x | ✅ | -| `to_bytes[bytearray(single 0xff)]` | 2.8137409148906343e-05 | 1.3908961778975017e-05 | 50.57% | 102.30% | 2.02x | ✅ | -| `to_bytes[bytearray(single null byte)]` | 2.8450467760169987e-05 | 1.3820794015533195e-05 | 51.42% | 105.85% | 2.06x | ✅ | -| `to_bytes[bytearray(two patterns)]` | 2.8220101642674872e-05 | 1.4057350988049447e-05 | 50.19% | 100.75% | 2.01x | ✅ | -| `to_bytes[long alternating]` | 6.397425634489767e-06 | 3.3717791362320173e-06 | 47.29% | 89.73% | 1.90x | ✅ | -| `to_bytes[memoryview(0-9)]` | 4.215239823610896e-05 | 1.657514426920018e-05 | 60.68% | 154.31% | 2.54x | ✅ | -| `to_bytes[memoryview(4-byte pattern)]` | 4.179961462380404e-05 | 1.7479546274630352e-05 | 58.18% | 139.13% | 2.39x | ✅ | -| `to_bytes[memoryview(all byte values)]` | 4.163550996778538e-05 | 1.7527618673535118e-05 | 57.90% | 137.54% | 2.38x | ✅ | -| `to_bytes[memoryview(alternating 0x00/0xff)]` | 4.241268536067038e-05 | 1.6444986244376372e-05 | 61.23% | 157.91% | 2.58x | ✅ | -| `to_bytes[memoryview(alternating 0xaa/0x55)]` | 4.128182200905431e-05 | 1.658709703139586e-05 | 59.82% | 148.88% | 2.49x | ✅ | -| `to_bytes[memoryview(ascii sentence)]` | 4.188391623692429e-05 | 1.682719276749448e-05 | 59.82% | 148.91% | 2.49x | ✅ | -| `to_bytes[memoryview(b'')]` | 3.965026582211508e-05 | 1.4973202557272703e-05 | 62.24% | 164.81% | 2.65x | ✅ | -| `to_bytes[memoryview(b'\\x00'*32)]` | 4.136678334747624e-05 | 1.6595713847308944e-05 | 59.88% | 149.26% | 2.49x | ✅ | -| `to_bytes[memoryview(b'\\x00\\xff\\x00\\xff')]` | 4.1979288622591687e-05 | 1.6697063427014078e-05 | 60.23% | 151.42% | 2.51x | ✅ | -| `to_bytes[memoryview(b'\\x01'*100)]` | 4.2212312927326285e-05 | 1.7441610477351963e-05 | 58.68% | 142.02% | 2.42x | ✅ | -| `to_bytes[memoryview(b'\\x01'*2048)]` | 4.899091678048274e-05 | 2.4744298607874354e-05 | 49.49% | 97.99% | 1.98x | ✅ | -| `to_bytes[memoryview(b'\\x01\\x02\\x03')]` | 4.2054208574238604e-05 | 1.6946255728862636e-05 | 59.70% | 148.16% | 2.48x | ✅ | -| `to_bytes[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 4.1023569643964116e-05 | 1.6774564792828627e-05 | 59.11% | 144.56% | 2.45x | ✅ | -| `to_bytes[memoryview(b'\\x7f'*8)]` | 4.1769384662458556e-05 | 1.6695564314690787e-05 | 60.03% | 150.18% | 2.50x | ✅ | -| `to_bytes[memoryview(b'\\x80'*8)]` | 4.165537890529569e-05 | 1.6692365466710594e-05 | 59.93% | 149.55% | 2.50x | ✅ | -| `to_bytes[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 4.168921002816518e-05 | 1.684725071313257e-05 | 59.59% | 147.45% | 2.47x | ✅ | -| `to_bytes[memoryview(b'\\xff'*64)]` | 4.167909076984162e-05 | 1.6585158292387462e-05 | 60.21% | 151.30% | 2.51x | ✅ | -| `to_bytes[memoryview(b'a'*1024)]` | 4.854265728953083e-05 | 2.3376738170522955e-05 | 51.84% | 107.65% | 2.08x | ✅ | -| `to_bytes[memoryview(b'abc')]` | 4.181055831728448e-05 | 1.738375435488289e-05 | 58.42% | 140.52% | 2.41x | ✅ | -| `to_bytes[memoryview(long alternating)]` | 4.899747226079579e-05 | 2.3132552072084938e-05 | 52.79% | 111.81% | 2.12x | ✅ | -| `to_bytes[memoryview(mixed pattern)]` | 4.229476192131309e-05 | 1.7453492162245898e-05 | 58.73% | 142.33% | 2.42x | ✅ | -| `to_bytes[memoryview(multiples of 0x10)]` | 4.184072325193825e-05 | 1.684447292299291e-05 | 59.74% | 148.39% | 2.48x | ✅ | -| `to_bytes[memoryview(palindrome ascii)]` | 4.2905374855450686e-05 | 1.6754499421598297e-05 | 60.95% | 156.08% | 2.56x | ✅ | -| `to_bytes[memoryview(palindrome numeric)]` | 4.2069894256456727e-05 | 1.700615941712513e-05 | 59.58% | 147.38% | 2.47x | ✅ | -| `to_bytes[memoryview(palindrome)]` | 4.10891821576071e-05 | 1.6595010232104988e-05 | 59.61% | 147.60% | 2.48x | ✅ | -| `to_bytes[memoryview(repeated 0-9)]` | 4.305596278237652e-05 | 1.7306060776600617e-05 | 59.81% | 148.79% | 2.49x | ✅ | -| `to_bytes[memoryview(single 0xff)]` | 4.188289051664441e-05 | 1.7003880687589265e-05 | 59.40% | 146.31% | 2.46x | ✅ | -| `to_bytes[memoryview(single null byte)]` | 4.2645366019929605e-05 | 1.700991858065131e-05 | 60.11% | 150.71% | 2.51x | ✅ | -| `to_bytes[memoryview(two patterns)]` | 4.162084224230337e-05 | 1.6721402547697092e-05 | 59.82% | 148.91% | 2.49x | ✅ | -| `to_bytes[mixed pattern]` | 6.423097421904188e-06 | 3.3827995425219623e-06 | 47.33% | 89.88% | 1.90x | ✅ | -| `to_bytes[multiples of 0x10]` | 6.402787376189776e-06 | 3.459649214865608e-06 | 45.97% | 85.07% | 1.85x | ✅ | -| `to_bytes[palindrome ascii]` | 6.3137837486608775e-06 | 3.470946808943371e-06 | 45.03% | 81.90% | 1.82x | ✅ | -| `to_bytes[palindrome numeric]` | 6.269299619105344e-06 | 3.566056777127545e-06 | 43.12% | 75.80% | 1.76x | ✅ | -| `to_bytes[palindrome]` | 6.129772218101627e-06 | 3.3864898053960572e-06 | 44.75% | 81.01% | 1.81x | ✅ | -| `to_bytes[repeated 0-9]` | 6.422852639419606e-06 | 3.4717571407826135e-06 | 45.95% | 85.00% | 1.85x | ✅ | -| `to_bytes[single 0xff]` | 6.1944903399871165e-06 | 3.07326596133024e-06 | 50.39% | 101.56% | 2.02x | ✅ | -| `to_bytes[single null byte]` | 6.176471726333307e-06 | 3.463437238097278e-06 | 43.93% | 78.33% | 1.78x | ✅ | -| `to_bytes[two patterns]` | 6.418303294119742e-06 | 3.4195050402016236e-06 | 46.72% | 87.70% | 1.88x | ✅ | +| `hexstr_to_bytes['']` | 1.8124415594193002e-05 | 1.0904661620156523e-05 | 39.83% | 66.21% | 1.66x | ✅ | +| `hexstr_to_bytes['0x'+'0'*128]` | 3.461037476726175e-05 | 2.1129320847518574e-05 | 38.95% | 63.80% | 1.64x | ✅ | +| `hexstr_to_bytes['0x'+'00'*64]` | 3.424944613972551e-05 | 2.125609251177328e-05 | 37.94% | 61.13% | 1.61x | ✅ | +| `hexstr_to_bytes['0x'+'00ff'*16]` | 3.14637119816589e-05 | 1.826812321078144e-05 | 41.94% | 72.23% | 1.72x | ✅ | +| `hexstr_to_bytes['0x'+'0123456789abcdef'*8]` | 3.4301829369626195e-05 | 2.1026700466173e-05 | 38.70% | 63.13% | 1.63x | ✅ | +| `hexstr_to_bytes['0x'+'1'*64]` | 3.107149861609451e-05 | 1.829940940686309e-05 | 41.11% | 69.80% | 1.70x | ✅ | +| `hexstr_to_bytes['0x'+'1234567890abcdef'*8]` | 3.443159690446326e-05 | 2.106279711560341e-05 | 38.83% | 63.47% | 1.63x | ✅ | +| `hexstr_to_bytes['0x'+'a'*128]` | 3.407585782810596e-05 | 2.1049593615825567e-05 | 38.23% | 61.88% | 1.62x | ✅ | +| `hexstr_to_bytes['0x'+'a1b2c3d4'*8]` | 3.095164395793694e-05 | 1.852886688723396e-05 | 40.14% | 67.05% | 1.67x | ✅ | +| `hexstr_to_bytes['0x'+'b'*2048]` | 0.0001378817580029827 | 0.00011793191122501251 | 14.47% | 16.92% | 1.17x | ✅ | +| `hexstr_to_bytes['0x'+'badc0ffee0ddf00d'*4]` | 3.113129223236492e-05 | 1.798108955524942e-05 | 42.24% | 73.13% | 1.73x | ✅ | +| `hexstr_to_bytes['0x'+'beef'*16]` | 3.1214180727300234e-05 | 1.819038291592611e-05 | 41.72% | 71.60% | 1.72x | ✅ | +| `hexstr_to_bytes['0x'+'c'*1024]` | 8.959297601552868e-05 | 7.046603376093888e-05 | 21.35% | 27.14% | 1.27x | ✅ | +| `hexstr_to_bytes['0x'+'cafebabe'*8]` | 3.1174512773634605e-05 | 1.8121221793439915e-05 | 41.87% | 72.03% | 1.72x | ✅ | +| `hexstr_to_bytes['0x'+'d'*512]` | 5.713674559500932e-05 | 4.141002684173219e-05 | 27.52% | 37.98% | 1.38x | ✅ | +| `hexstr_to_bytes['0x'+'dead'*16]` | 3.125661102152253e-05 | 1.8283453307140608e-05 | 41.51% | 70.96% | 1.71x | ✅ | +| `hexstr_to_bytes['0x'+'e'*256]` | 4.3665370351745734e-05 | 2.772146247640221e-05 | 36.51% | 57.51% | 1.58x | ✅ | +| `hexstr_to_bytes['0x'+'f'*128]` | 3.439671539737619e-05 | 2.1184173884033463e-05 | 38.41% | 62.37% | 1.62x | ✅ | +| `hexstr_to_bytes['0x'+'f'*64]` | 3.106570710008687e-05 | 1.837128102705244e-05 | 40.86% | 69.10% | 1.69x | ✅ | +| `hexstr_to_bytes['0x'+'facefeed'*8]` | 3.1335377984544845e-05 | 1.852401247252099e-05 | 40.88% | 69.16% | 1.69x | ✅ | +| `hexstr_to_bytes['0x'+'ff'*32]` | 3.265135578810513e-05 | 1.870726038254785e-05 | 42.71% | 74.54% | 1.75x | ✅ | +| `hexstr_to_bytes['0x'+'ff00'*16]` | 3.115195607386426e-05 | 1.8272083605954724e-05 | 41.35% | 70.49% | 1.70x | ✅ | +| `hexstr_to_bytes['0x']` | 2.2640014719060325e-05 | 1.0509015936586586e-05 | 53.58% | 115.43% | 2.15x | ✅ | +| `hexstr_to_bytes['0x0']` | 3.129114082719202e-05 | 1.8431837867177356e-05 | 41.10% | 69.77% | 1.70x | ✅ | +| `hexstr_to_bytes['0x1']` | 3.1297085450860426e-05 | 1.8118652890937777e-05 | 42.11% | 72.73% | 1.73x | ✅ | +| `hexstr_to_bytes['0x1234']` | 2.8952029365971745e-05 | 1.641004746054927e-05 | 43.32% | 76.43% | 1.76x | ✅ | +| `hexstr_to_bytes['0xCAFEBABE']` | 2.8720263627828463e-05 | 1.6296200143728208e-05 | 43.26% | 76.24% | 1.76x | ✅ | +| `hexstr_to_bytes['0xabcdef']` | 2.8903063679976844e-05 | 1.619361625578212e-05 | 43.97% | 78.48% | 1.78x | ✅ | +| `hexstr_to_bytes['0xdeadbeef']` | 2.8634332387601415e-05 | 1.6098559433880457e-05 | 43.78% | 77.87% | 1.78x | ✅ | +| `hexstr_to_bytes['deadbeef']` | 2.185004019360481e-05 | 1.4251437711004025e-05 | 34.78% | 53.32% | 1.53x | ✅ | +| `to_bytes['']` | 2.812549529180342e-05 | 1.1898045600860583e-05 | 57.70% | 136.39% | 2.36x | ✅ | +| `to_bytes['0x'+'00'*64]` | 4.74468514670161e-05 | 2.2909669916156342e-05 | 51.72% | 107.10% | 2.07x | ✅ | +| `to_bytes['0x'+'a'*128]` | 4.660869199340389e-05 | 2.2474811233651162e-05 | 51.78% | 107.38% | 2.07x | ✅ | +| `to_bytes['0x'+'ff'*32]` | 4.3248801134162674e-05 | 1.9868462380729035e-05 | 54.06% | 117.68% | 2.18x | ✅ | +| `to_bytes['0x']` | 3.4213521177193246e-05 | 1.227312186150391e-05 | 64.13% | 178.77% | 2.79x | ✅ | +| `to_bytes['0x1234']` | 4.032078188047607e-05 | 1.7503827844521593e-05 | 56.59% | 130.35% | 2.30x | ✅ | +| `to_bytes['0xCAFEBABE']` | 4.107951231877946e-05 | 1.7601052307865833e-05 | 57.15% | 133.39% | 2.33x | ✅ | +| `to_bytes['0xabcdef']` | 4.056854723070718e-05 | 1.753589014087856e-05 | 56.77% | 131.35% | 2.31x | ✅ | +| `to_bytes['0xdeadbeef']` | 4.088538557559404e-05 | 1.753740202172572e-05 | 57.11% | 133.13% | 2.33x | ✅ | +| `to_bytes['abc']` | 3.6492598257235935e-05 | 1.9280183672498047e-05 | 47.17% | 89.28% | 1.89x | ✅ | +| `to_bytes['deadbeef']` | 3.229455496044274e-05 | 1.5332809239127208e-05 | 52.52% | 110.62% | 2.11x | ✅ | +| `to_bytes[0-9]` | 6.3820271325570705e-06 | 3.56419442308223e-06 | 44.15% | 79.06% | 1.79x | ✅ | +| `to_bytes[0]` | 7.378896543306954e-05 | 3.086665599617425e-05 | 58.17% | 139.06% | 2.39x | ✅ | +| `to_bytes[123456]` | 8.117972018166943e-05 | 3.40141455986444e-05 | 58.10% | 138.66% | 2.39x | ✅ | +| `to_bytes[2**16]` | 7.86488941189555e-05 | 3.5532566839829765e-05 | 54.82% | 121.34% | 2.21x | ✅ | +| `to_bytes[2**256-1]` | 7.763369307425991e-05 | 3.9155600505948956e-05 | 49.56% | 98.27% | 1.98x | ✅ | +| `to_bytes[2**32]` | 8.15170273122882e-05 | 3.825155140331261e-05 | 53.08% | 113.11% | 2.13x | ✅ | +| `to_bytes[2**64]` | 8.080397976089835e-05 | 3.948997180701674e-05 | 51.13% | 104.62% | 2.05x | ✅ | +| `to_bytes[2**8]` | 7.860562230390437e-05 | 3.4200113778783234e-05 | 56.49% | 129.84% | 2.30x | ✅ | +| `to_bytes[4-byte pattern]` | 6.3070560132673335e-06 | 3.5635348865018365e-06 | 43.50% | 76.99% | 1.77x | ✅ | +| `to_bytes[False]` | 2.18803952190653e-05 | 4.080724728451022e-06 | 81.35% | 436.19% | 5.36x | ✅ | +| `to_bytes[True]` | 2.2072987613346425e-05 | 3.970612544086548e-06 | 82.01% | 455.91% | 5.56x | ✅ | +| `to_bytes[all byte values]` | 6.425556577839551e-06 | 3.56284966024529e-06 | 44.55% | 80.35% | 1.80x | ✅ | +| `to_bytes[alternating 0x00/0xff]` | 6.438497873167921e-06 | 3.5629107937285926e-06 | 44.66% | 80.71% | 1.81x | ✅ | +| `to_bytes[alternating 0xaa/0x55]` | 6.248744247375196e-06 | 3.61756732840449e-06 | 42.11% | 72.73% | 1.73x | ✅ | +| `to_bytes[ascii sentence]` | 6.331586900042409e-06 | 3.4799640373003266e-06 | 45.04% | 81.94% | 1.82x | ✅ | +| `to_bytes[b'']` | 6.18469245775894e-06 | 3.5935951792805485e-06 | 41.90% | 72.10% | 1.72x | ✅ | +| `to_bytes[b'\\x00'*32]` | 6.3653491591711405e-06 | 3.7132473702700544e-06 | 41.66% | 71.42% | 1.71x | ✅ | +| `to_bytes[b'\\x00\\xff\\x00\\xff']` | 6.3883871457758305e-06 | 3.619171122243347e-06 | 43.35% | 76.52% | 1.77x | ✅ | +| `to_bytes[b'\\x01'*100]` | 6.406475978190915e-06 | 3.5898990138473106e-06 | 43.96% | 78.46% | 1.78x | ✅ | +| `to_bytes[b'\\x01'*2048]` | 6.40718845057779e-06 | 3.561329205682666e-06 | 44.42% | 79.91% | 1.80x | ✅ | +| `to_bytes[b'\\x01\\x02\\x03']` | 6.330765882607984e-06 | 3.446972706677896e-06 | 45.55% | 83.66% | 1.84x | ✅ | +| `to_bytes[b'\\x10\\x20\\x30\\x40\\x50']` | 6.3848693199763984e-06 | 3.4769837155122104e-06 | 45.54% | 83.63% | 1.84x | ✅ | +| `to_bytes[b'\\x7f'*8]` | 6.39512826589809e-06 | 3.5774595760181493e-06 | 44.06% | 78.76% | 1.79x | ✅ | +| `to_bytes[b'\\x80'*8]` | 6.312106105896735e-06 | 3.4718555530763712e-06 | 45.00% | 81.81% | 1.82x | ✅ | +| `to_bytes[b'\\xde\\xad\\xbe\\xef']` | 6.410361539221882e-06 | 3.470603377519963e-06 | 45.86% | 84.70% | 1.85x | ✅ | +| `to_bytes[b'\\xff'*64]` | 6.397411002507603e-06 | 3.6559748843013563e-06 | 42.85% | 74.99% | 1.75x | ✅ | +| `to_bytes[b'a'*1024]` | 6.4376251880218936e-06 | 3.72006700859032e-06 | 42.21% | 73.05% | 1.73x | ✅ | +| `to_bytes[b'abc']` | 5.614521456449626e-06 | 3.7125952694548096e-06 | 33.88% | 51.23% | 1.51x | ✅ | +| `to_bytes[bytearray(0-9)]` | 2.8575776017566446e-05 | 1.409984061822055e-05 | 50.66% | 102.67% | 2.03x | ✅ | +| `to_bytes[bytearray(4-byte pattern)]` | 2.8548682432970636e-05 | 1.4050900533961933e-05 | 50.78% | 103.18% | 2.03x | ✅ | +| `to_bytes[bytearray(all byte values)]` | 2.8719889054672954e-05 | 1.3891057420308483e-05 | 51.63% | 106.75% | 2.07x | ✅ | +| `to_bytes[bytearray(alternating 0x00/0xff)]` | 2.7912493588502274e-05 | 1.4167355601596976e-05 | 49.24% | 97.02% | 1.97x | ✅ | +| `to_bytes[bytearray(alternating 0xaa/0x55)]` | 2.8326307925650042e-05 | 1.4093991056752728e-05 | 50.24% | 100.98% | 2.01x | ✅ | +| `to_bytes[bytearray(ascii sentence)]` | 2.8232019744849978e-05 | 1.41366538407838e-05 | 49.93% | 99.71% | 2.00x | ✅ | +| `to_bytes[bytearray(b'')]` | 2.5995137317288184e-05 | 1.2485857310126048e-05 | 51.97% | 108.20% | 2.08x | ✅ | +| `to_bytes[bytearray(b'\\x00'*32)]` | 2.8882929098626047e-05 | 1.3942109776531222e-05 | 51.73% | 107.16% | 2.07x | ✅ | +| `to_bytes[bytearray(b'\\x00\\xff\\x00\\xff')]` | 2.8036222756239304e-05 | 1.40170580549725e-05 | 50.00% | 100.02% | 2.00x | ✅ | +| `to_bytes[bytearray(b'\\x01'*100)]` | 2.8458436041914592e-05 | 1.4077833631263536e-05 | 50.53% | 102.15% | 2.02x | ✅ | +| `to_bytes[bytearray(b'\\x01'*2048)]` | 3.5420650975416174e-05 | 1.9744660948948925e-05 | 44.26% | 79.39% | 1.79x | ✅ | +| `to_bytes[bytearray(b'\\x01\\x02\\x03')]` | 2.8256859125405198e-05 | 1.404588996721642e-05 | 50.29% | 101.18% | 2.01x | ✅ | +| `to_bytes[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 2.8553528083568166e-05 | 1.410513804436721e-05 | 50.60% | 102.43% | 2.02x | ✅ | +| `to_bytes[bytearray(b'\\x7f'*8)]` | 2.8540953034627132e-05 | 1.3896716026700565e-05 | 51.31% | 105.38% | 2.05x | ✅ | +| `to_bytes[bytearray(b'\\x80'*8)]` | 2.8527853827624888e-05 | 1.4029064681490501e-05 | 50.82% | 103.35% | 2.03x | ✅ | +| `to_bytes[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 2.7304080561846536e-05 | 1.4003891750797037e-05 | 48.71% | 94.97% | 1.95x | ✅ | +| `to_bytes[bytearray(b'\\xff'*64)]` | 2.8312703601105837e-05 | 1.3905395075939782e-05 | 50.89% | 103.61% | 2.04x | ✅ | +| `to_bytes[bytearray(b'a'*1024)]` | 3.534344601738554e-05 | 1.8841641447141186e-05 | 46.69% | 87.58% | 1.88x | ✅ | +| `to_bytes[bytearray(b'abc')]` | 2.8497185047004915e-05 | 1.3961511360169577e-05 | 51.01% | 104.11% | 2.04x | ✅ | +| `to_bytes[bytearray(long alternating)]` | 3.469598647717626e-05 | 1.8784981312333284e-05 | 45.86% | 84.70% | 1.85x | ✅ | +| `to_bytes[bytearray(mixed pattern)]` | 2.8730524264148825e-05 | 1.4147697415851568e-05 | 50.76% | 103.08% | 2.03x | ✅ | +| `to_bytes[bytearray(multiples of 0x10)]` | 2.857056297329499e-05 | 1.3946992396987329e-05 | 51.18% | 104.85% | 2.05x | ✅ | +| `to_bytes[bytearray(palindrome ascii)]` | 2.8270031604625145e-05 | 1.3951360047813264e-05 | 50.65% | 102.63% | 2.03x | ✅ | +| `to_bytes[bytearray(palindrome numeric)]` | 2.8506406374051615e-05 | 1.390990522559339e-05 | 51.20% | 104.94% | 2.05x | ✅ | +| `to_bytes[bytearray(palindrome)]` | 2.83093539457428e-05 | 1.4043033851846867e-05 | 50.39% | 101.59% | 2.02x | ✅ | +| `to_bytes[bytearray(repeated 0-9)]` | 2.8584350961590765e-05 | 1.4217020697774255e-05 | 50.26% | 101.06% | 2.01x | ✅ | +| `to_bytes[bytearray(single 0xff)]` | 2.8300590317130925e-05 | 1.399619446380215e-05 | 50.54% | 102.20% | 2.02x | ✅ | +| `to_bytes[bytearray(single null byte)]` | 2.8485679642830373e-05 | 1.384904329959508e-05 | 51.38% | 105.69% | 2.06x | ✅ | +| `to_bytes[bytearray(two patterns)]` | 2.8426875389731025e-05 | 1.390360642070303e-05 | 51.09% | 104.46% | 2.04x | ✅ | +| `to_bytes[long alternating]` | 6.446457502980097e-06 | 3.3984676919894954e-06 | 47.28% | 89.69% | 1.90x | ✅ | +| `to_bytes[memoryview(0-9)]` | 4.059462627281006e-05 | 1.687658756585133e-05 | 58.43% | 140.54% | 2.41x | ✅ | +| `to_bytes[memoryview(4-byte pattern)]` | 4.206205341453685e-05 | 1.7808344897549437e-05 | 57.66% | 136.19% | 2.36x | ✅ | +| `to_bytes[memoryview(all byte values)]` | 4.168191685335384e-05 | 1.7729107067572946e-05 | 57.47% | 135.10% | 2.35x | ✅ | +| `to_bytes[memoryview(alternating 0x00/0xff)]` | 3.8218544972340955e-05 | 1.671229346292034e-05 | 56.27% | 128.69% | 2.29x | ✅ | +| `to_bytes[memoryview(alternating 0xaa/0x55)]` | 4.0883733941815785e-05 | 1.6881265026403933e-05 | 58.71% | 142.18% | 2.42x | ✅ | +| `to_bytes[memoryview(ascii sentence)]` | 4.2138142089029604e-05 | 1.7185405663824762e-05 | 59.22% | 145.20% | 2.45x | ✅ | +| `to_bytes[memoryview(b'')]` | 3.9543269547050625e-05 | 1.5001783576501143e-05 | 62.06% | 163.59% | 2.64x | ✅ | +| `to_bytes[memoryview(b'\\x00'*32)]` | 4.1178667870955085e-05 | 1.684628598070011e-05 | 59.09% | 144.44% | 2.44x | ✅ | +| `to_bytes[memoryview(b'\\x00\\xff\\x00\\xff')]` | 4.150658978546566e-05 | 1.6678139271097556e-05 | 59.82% | 148.87% | 2.49x | ✅ | +| `to_bytes[memoryview(b'\\x01'*100)]` | 4.163615550647024e-05 | 1.730053822436118e-05 | 58.45% | 140.66% | 2.41x | ✅ | +| `to_bytes[memoryview(b'\\x01'*2048)]` | 5.062091970900997e-05 | 2.4392149892588226e-05 | 51.81% | 107.53% | 2.08x | ✅ | +| `to_bytes[memoryview(b'\\x01\\x02\\x03')]` | 4.151632182018406e-05 | 1.7088930860701058e-05 | 58.84% | 142.94% | 2.43x | ✅ | +| `to_bytes[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 4.1199939973853625e-05 | 1.6944740397082872e-05 | 58.87% | 143.14% | 2.43x | ✅ | +| `to_bytes[memoryview(b'\\x7f'*8)]` | 4.142976968069965e-05 | 1.6746485452109062e-05 | 59.58% | 147.39% | 2.47x | ✅ | +| `to_bytes[memoryview(b'\\x80'*8)]` | 4.1258425464389574e-05 | 1.676503682700804e-05 | 59.37% | 146.10% | 2.46x | ✅ | +| `to_bytes[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 3.8962744059281924e-05 | 1.6656744112946588e-05 | 57.25% | 133.92% | 2.34x | ✅ | +| `to_bytes[memoryview(b'\\xff'*64)]` | 4.1652404934190813e-05 | 1.6705392499152253e-05 | 59.89% | 149.34% | 2.49x | ✅ | +| `to_bytes[memoryview(b'a'*1024)]` | 4.92238376299252e-05 | 2.305905905419109e-05 | 53.15% | 113.47% | 2.13x | ✅ | +| `to_bytes[memoryview(b'abc')]` | 4.209026259339344e-05 | 1.6651748127437028e-05 | 60.44% | 152.77% | 2.53x | ✅ | +| `to_bytes[memoryview(long alternating)]` | 4.8268404060739565e-05 | 2.3154046527902918e-05 | 52.03% | 108.47% | 2.08x | ✅ | +| `to_bytes[memoryview(mixed pattern)]` | 4.187415957659425e-05 | 1.747633071233915e-05 | 58.26% | 139.60% | 2.40x | ✅ | +| `to_bytes[memoryview(multiples of 0x10)]` | 4.1985225454722795e-05 | 1.6909078196891254e-05 | 59.73% | 148.30% | 2.48x | ✅ | +| `to_bytes[memoryview(palindrome ascii)]` | 4.170201910968849e-05 | 1.6924946534785476e-05 | 59.41% | 146.39% | 2.46x | ✅ | +| `to_bytes[memoryview(palindrome numeric)]` | 4.073033949121863e-05 | 1.6864947665201825e-05 | 58.59% | 141.51% | 2.42x | ✅ | +| `to_bytes[memoryview(palindrome)]` | 4.067754741127174e-05 | 1.673399448564326e-05 | 58.86% | 143.08% | 2.43x | ✅ | +| `to_bytes[memoryview(repeated 0-9)]` | 4.2295391712536276e-05 | 1.7049191649229895e-05 | 59.69% | 148.08% | 2.48x | ✅ | +| `to_bytes[memoryview(single 0xff)]` | 4.1045922093649365e-05 | 1.7206823667262566e-05 | 58.08% | 138.54% | 2.39x | ✅ | +| `to_bytes[memoryview(single null byte)]` | 4.1383600145539276e-05 | 1.712638985503105e-05 | 58.62% | 141.64% | 2.42x | ✅ | +| `to_bytes[memoryview(two patterns)]` | 4.125014577199621e-05 | 1.686994915712005e-05 | 59.10% | 144.52% | 2.45x | ✅ | +| `to_bytes[mixed pattern]` | 5.941413165033101e-06 | 3.582841680371897e-06 | 39.70% | 65.83% | 1.66x | ✅ | +| `to_bytes[multiples of 0x10]` | 6.3921225189780434e-06 | 3.6127741123958846e-06 | 43.48% | 76.93% | 1.77x | ✅ | +| `to_bytes[palindrome ascii]` | 6.397362555480084e-06 | 3.472492174657358e-06 | 45.72% | 84.23% | 1.84x | ✅ | +| `to_bytes[palindrome numeric]` | 6.40607401265332e-06 | 3.46920995337416e-06 | 45.84% | 84.66% | 1.85x | ✅ | +| `to_bytes[palindrome]` | 6.351793877976768e-06 | 3.5638267047970715e-06 | 43.89% | 78.23% | 1.78x | ✅ | +| `to_bytes[repeated 0-9]` | 6.193945383712307e-06 | 3.56238576389612e-06 | 42.49% | 73.87% | 1.74x | ✅ | +| `to_bytes[single 0xff]` | 5.895726824704549e-06 | 3.4045349392015167e-06 | 42.25% | 73.17% | 1.73x | ✅ | +| `to_bytes[single null byte]` | 6.345495843241143e-06 | 3.5001201550007904e-06 | 44.84% | 81.29% | 1.81x | ✅ | +| `to_bytes[two patterns]` | 6.339771352165492e-06 | 3.56377046045974e-06 | 43.79% | 77.90% | 1.78x | ✅ | diff --git a/benchmarks/results/main.md b/benchmarks/results/main.md index c8ab10a..3d56a9a 100644 --- a/benchmarks/results/main.md +++ b/benchmarks/results/main.md @@ -1,486 +1,486 @@ -#### [faster_hexbytes.main](https://github.com/BobTheBuidler/faster-hexbytes/blob/master/faster_hexbytes/main.py) - [view benchmarks](https://github.com/BobTheBuidler/faster-hexbytes/blob/master/benchmarks/test_main_benchmarks.py) +#### [faster_hexbytes.main](https://github.com/BobTheBuidler/faster-hexbytes/blob/renovate/actions-github-script-8.x/faster_hexbytes/main.py) - [view benchmarks](https://github.com/BobTheBuidler/faster-hexbytes/blob/renovate/actions-github-script-8.x/benchmarks/test_main_benchmarks.py) | Function | Reference Mean | Faster Mean | % Change | Speedup (%) | x Faster | Faster | |----------|---------------|-------------|----------|-------------|----------|--------| -| `hexbytes_getitem_index[-1-0-9]` | 2.4815957518189122e-05 | 2.323741742667928e-05 | 6.36% | 6.79% | 1.07x | ✅ | -| `hexbytes_getitem_index[-1-4-byte pattern]` | 2.499168674292274e-05 | 2.3180674846065482e-05 | 7.25% | 7.81% | 1.08x | ✅ | -| `hexbytes_getitem_index[-1-all byte values]` | 2.467843222597364e-05 | 2.322996863455447e-05 | 5.87% | 6.24% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-alternating 0x00/0xff]` | 2.4563885137150446e-05 | 2.3367597955470324e-05 | 4.87% | 5.12% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-alternating 0xaa/0x55]` | 2.4622680050986677e-05 | 2.32315401304226e-05 | 5.65% | 5.99% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-ascii sentence]` | 2.5221611679225928e-05 | 2.4916341160243495e-05 | 1.21% | 1.23% | 1.01x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x00'*32]` | 2.468504212536377e-05 | 2.381153263285404e-05 | 3.54% | 3.67% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x00\\xff\\x00\\xff']` | 2.4418645038622666e-05 | 2.3903951631702077e-05 | 2.11% | 2.15% | 1.02x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x01'*100]` | 2.450570824790637e-05 | 2.33194877020744e-05 | 4.84% | 5.09% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x01'*2048]` | 2.4905187877061046e-05 | 2.326564402334891e-05 | 6.58% | 7.05% | 1.07x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x01\\x02\\x03']` | 2.4758089583246185e-05 | 2.337027688097156e-05 | 5.61% | 5.94% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.461540284903009e-05 | 2.3351123000086303e-05 | 5.14% | 5.41% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x7f'*8]` | 2.4756348817068916e-05 | 2.3327594899234118e-05 | 5.77% | 6.12% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x80'*8]` | 2.4539410319696033e-05 | 2.332510940380535e-05 | 4.95% | 5.21% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-b'\\xde\\xad\\xbe\\xef']` | 2.4721023342107855e-05 | 2.3379131509772284e-05 | 5.43% | 5.74% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-b'\\xff'*64]` | 2.4670121193178248e-05 | 2.336085882906412e-05 | 5.31% | 5.60% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-b'a'*1024]` | 2.4689148937445117e-05 | 2.3360644324290475e-05 | 5.38% | 5.69% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-b'abc']` | 2.4571768253040925e-05 | 2.3332426195835232e-05 | 5.04% | 5.31% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-long alternating]` | 2.4498254696978512e-05 | 2.3304553944940054e-05 | 4.87% | 5.12% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-mixed pattern]` | 2.504283690735923e-05 | 2.3996243329113425e-05 | 4.18% | 4.36% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-multiples of 0x10]` | 2.4678039491242653e-05 | 2.3297350707673698e-05 | 5.59% | 5.93% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-palindrome ascii]` | 2.522434936175017e-05 | 2.3443664316309386e-05 | 7.06% | 7.60% | 1.08x | ✅ | -| `hexbytes_getitem_index[-1-palindrome numeric]` | 2.483846721032967e-05 | 2.3303380624791458e-05 | 6.18% | 6.59% | 1.07x | ✅ | -| `hexbytes_getitem_index[-1-palindrome]` | 2.4547981631352146e-05 | 2.4085506255498827e-05 | 1.88% | 1.92% | 1.02x | ✅ | -| `hexbytes_getitem_index[-1-repeated 0-9]` | 2.4692814087851262e-05 | 2.3779546091809038e-05 | 3.70% | 3.84% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-two patterns]` | 2.5268240258343147e-05 | 2.377157229688989e-05 | 5.92% | 6.30% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-0-9]` | 2.3419257350521953e-05 | 2.252121540973952e-05 | 3.83% | 3.99% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-4-byte pattern]` | 2.3746086025778056e-05 | 2.2497061006953156e-05 | 5.26% | 5.55% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-all byte values]` | 2.4227569321378656e-05 | 2.251669363136502e-05 | 7.06% | 7.60% | 1.08x | ✅ | -| `hexbytes_getitem_index[0-alternating 0x00/0xff]` | 2.3775570934974694e-05 | 2.2533903966101405e-05 | 5.22% | 5.51% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-alternating 0xaa/0x55]` | 2.38905605443513e-05 | 2.219393030909336e-05 | 7.10% | 7.64% | 1.08x | ✅ | -| `hexbytes_getitem_index[0-ascii sentence]` | 2.371039877485685e-05 | 2.22901593000098e-05 | 5.99% | 6.37% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-b'\\x00'*32]` | 2.3894111753825244e-05 | 2.2756093208685128e-05 | 4.76% | 5.00% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-b'\\x00\\xff\\x00\\xff']` | 2.356484060877055e-05 | 2.2604287626721332e-05 | 4.08% | 4.25% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-b'\\x01'*100]` | 2.3861781056523187e-05 | 2.2366976103677075e-05 | 6.26% | 6.68% | 1.07x | ✅ | -| `hexbytes_getitem_index[0-b'\\x01'*2048]` | 2.3589451258026494e-05 | 2.2591006868265747e-05 | 4.23% | 4.42% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-b'\\x01\\x02\\x03']` | 2.3612537576230767e-05 | 2.2390102179604453e-05 | 5.18% | 5.46% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-b'\\x10\\x20\\x30\\x40\\x50']` | 2.378960797291328e-05 | 2.230977119187177e-05 | 6.22% | 6.63% | 1.07x | ✅ | -| `hexbytes_getitem_index[0-b'\\x7f'*8]` | 2.371819525901674e-05 | 2.2242548238653864e-05 | 6.22% | 6.63% | 1.07x | ✅ | -| `hexbytes_getitem_index[0-b'\\x80'*8]` | 2.4016466531506466e-05 | 2.229008588644591e-05 | 7.19% | 7.75% | 1.08x | ✅ | -| `hexbytes_getitem_index[0-b'\\xde\\xad\\xbe\\xef']` | 2.3571415088169574e-05 | 2.2229857220207937e-05 | 5.69% | 6.03% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-b'\\xff'*64]` | 2.3375850911875174e-05 | 2.2436622195768564e-05 | 4.02% | 4.19% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-b'a'*1024]` | 2.3452565279232885e-05 | 2.234400541319998e-05 | 4.73% | 4.96% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-b'abc']` | 2.3815424117404074e-05 | 2.2442627111939143e-05 | 5.76% | 6.12% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-long alternating]` | 2.3759944735070682e-05 | 2.2733651398807548e-05 | 4.32% | 4.51% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-mixed pattern]` | 2.3795980055932363e-05 | 2.2280158975776737e-05 | 6.37% | 6.80% | 1.07x | ✅ | -| `hexbytes_getitem_index[0-multiples of 0x10]` | 2.404071784124195e-05 | 2.2747668204787818e-05 | 5.38% | 5.68% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-palindrome ascii]` | 2.363289251772724e-05 | 2.2266443201170374e-05 | 5.78% | 6.14% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-palindrome numeric]` | 2.413257387043133e-05 | 2.2349060329345376e-05 | 7.39% | 7.98% | 1.08x | ✅ | -| `hexbytes_getitem_index[0-palindrome]` | 2.3944786700165484e-05 | 2.2339889912020418e-05 | 6.70% | 7.18% | 1.07x | ✅ | -| `hexbytes_getitem_index[0-repeated 0-9]` | 2.4232472402237243e-05 | 2.252734778569536e-05 | 7.04% | 7.57% | 1.08x | ✅ | -| `hexbytes_getitem_index[0-single 0xff]` | 2.3713332862873595e-05 | 2.244435859501425e-05 | 5.35% | 5.65% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-single null byte]` | 2.3716013391644792e-05 | 2.2585757739447734e-05 | 4.77% | 5.00% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-two patterns]` | 2.395763028044325e-05 | 2.2521910102704387e-05 | 5.99% | 6.37% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-0-9]` | 2.3786629657488054e-05 | 2.229284403571319e-05 | 6.28% | 6.70% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-4-byte pattern]` | 2.3706242201539047e-05 | 2.2298893156507252e-05 | 5.94% | 6.31% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-all byte values]` | 2.3819352731516755e-05 | 2.271366708691106e-05 | 4.64% | 4.87% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-alternating 0x00/0xff]` | 2.4519173638240034e-05 | 2.2121899853243074e-05 | 9.78% | 10.84% | 1.11x | ✅ | -| `hexbytes_getitem_index[1-alternating 0xaa/0x55]` | 2.3482532367243845e-05 | 2.2140595276158422e-05 | 5.71% | 6.06% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-ascii sentence]` | 2.350096707289276e-05 | 2.2188991973558493e-05 | 5.58% | 5.91% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-b'\\x00'*32]` | 2.3682467694410823e-05 | 2.2612591859306363e-05 | 4.52% | 4.73% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-b'\\x00\\xff\\x00\\xff']` | 2.3974169097819536e-05 | 2.2181458203837523e-05 | 7.48% | 8.08% | 1.08x | ✅ | -| `hexbytes_getitem_index[1-b'\\x01'*100]` | 2.406863414301758e-05 | 2.2076052734304906e-05 | 8.28% | 9.03% | 1.09x | ✅ | -| `hexbytes_getitem_index[1-b'\\x01'*2048]` | 2.3742766807173897e-05 | 2.222988143465632e-05 | 6.37% | 6.81% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-b'\\x01\\x02\\x03']` | 2.404934595781359e-05 | 2.2242976101325816e-05 | 7.51% | 8.12% | 1.08x | ✅ | -| `hexbytes_getitem_index[1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3516616237300287e-05 | 2.2200977082432582e-05 | 5.59% | 5.93% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-b'\\x7f'*8]` | 2.3655446052324674e-05 | 2.2346949575352176e-05 | 5.53% | 5.86% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-b'\\x80'*8]` | 2.360683474266779e-05 | 2.2174162760113924e-05 | 6.07% | 6.46% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-b'\\xde\\xad\\xbe\\xef']` | 2.372566182683921e-05 | 2.2363897273422764e-05 | 5.74% | 6.09% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-b'\\xff'*64]` | 2.3894480993755427e-05 | 2.2262239894206023e-05 | 6.83% | 7.33% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-b'a'*1024]` | 2.379040699661588e-05 | 2.2283797293543673e-05 | 6.33% | 6.76% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-b'abc']` | 2.3706163591874798e-05 | 2.2173479913496705e-05 | 6.47% | 6.91% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-long alternating]` | 2.3569089581301216e-05 | 2.2235622885512747e-05 | 5.66% | 6.00% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-mixed pattern]` | 2.3952598444375832e-05 | 2.246599143400761e-05 | 6.21% | 6.62% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-multiples of 0x10]` | 2.3806255439056956e-05 | 2.2264347103021153e-05 | 6.48% | 6.93% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-palindrome ascii]` | 2.3684170152052223e-05 | 2.218614131445214e-05 | 6.33% | 6.75% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-palindrome numeric]` | 2.384028277937883e-05 | 2.2317164932185754e-05 | 6.39% | 6.82% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-palindrome]` | 2.3652801732528514e-05 | 2.2267997486247177e-05 | 5.85% | 6.22% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-repeated 0-9]` | 2.3681030723103605e-05 | 2.2222670852701073e-05 | 6.16% | 6.56% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-two patterns]` | 2.379175104977085e-05 | 2.2202442421441474e-05 | 6.68% | 7.16% | 1.07x | ✅ | -| `hexbytes_getitem_index[2-0-9]` | 2.349529838211381e-05 | 2.2359232042271073e-05 | 4.84% | 5.08% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-4-byte pattern]` | 2.3611795294635074e-05 | 2.2225408497749822e-05 | 5.87% | 6.24% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-all byte values]` | 2.3693471362843924e-05 | 2.2263642415888376e-05 | 6.03% | 6.42% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-alternating 0x00/0xff]` | 2.3621049549037067e-05 | 2.266977167687751e-05 | 4.03% | 4.20% | 1.04x | ✅ | -| `hexbytes_getitem_index[2-alternating 0xaa/0x55]` | 2.328360863523326e-05 | 2.2385138735022707e-05 | 3.86% | 4.01% | 1.04x | ✅ | -| `hexbytes_getitem_index[2-ascii sentence]` | 2.344518625342879e-05 | 2.2329680264914812e-05 | 4.76% | 5.00% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-b'\\x00'*32]` | 2.3301266335857048e-05 | 2.2742363619162324e-05 | 2.40% | 2.46% | 1.02x | ✅ | -| `hexbytes_getitem_index[2-b'\\x00\\xff\\x00\\xff']` | 2.3579193488007452e-05 | 2.2576003214089187e-05 | 4.25% | 4.44% | 1.04x | ✅ | -| `hexbytes_getitem_index[2-b'\\x01'*100]` | 2.359714772043807e-05 | 2.229008847305993e-05 | 5.54% | 5.86% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-b'\\x01'*2048]` | 2.338702982712889e-05 | 2.233443351976533e-05 | 4.50% | 4.71% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-b'\\x01\\x02\\x03']` | 2.327869456206976e-05 | 2.216550474160494e-05 | 4.78% | 5.02% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3520395345964735e-05 | 2.257867989093151e-05 | 4.00% | 4.17% | 1.04x | ✅ | -| `hexbytes_getitem_index[2-b'\\x7f'*8]` | 2.35060946265158e-05 | 2.2370307717298312e-05 | 4.83% | 5.08% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-b'\\x80'*8]` | 2.356109391661716e-05 | 2.224295258713608e-05 | 5.59% | 5.93% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-b'\\xde\\xad\\xbe\\xef']` | 2.377966202318841e-05 | 2.2281359469779937e-05 | 6.30% | 6.72% | 1.07x | ✅ | -| `hexbytes_getitem_index[2-b'\\xff'*64]` | 2.346761969021569e-05 | 2.222595967428535e-05 | 5.29% | 5.59% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-b'a'*1024]` | 2.3449263501645632e-05 | 2.5070764167200928e-05 | -6.91% | -6.47% | 0.94x | ❌ | -| `hexbytes_getitem_index[2-b'abc']` | 2.323174050342295e-05 | 2.241471045194996e-05 | 3.52% | 3.65% | 1.04x | ✅ | -| `hexbytes_getitem_index[2-long alternating]` | 2.3514766678555988e-05 | 2.2593965870807778e-05 | 3.92% | 4.08% | 1.04x | ✅ | -| `hexbytes_getitem_index[2-mixed pattern]` | 2.3596469760608948e-05 | 2.2572212765407408e-05 | 4.34% | 4.54% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-multiples of 0x10]` | 2.3546173504511273e-05 | 2.2479299538404666e-05 | 4.53% | 4.75% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-palindrome ascii]` | 2.3515193941323854e-05 | 2.225755489781573e-05 | 5.35% | 5.65% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-palindrome numeric]` | 2.35071902115465e-05 | 2.230234926670244e-05 | 5.13% | 5.40% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-palindrome]` | 2.3738083190379348e-05 | 2.229019766981677e-05 | 6.10% | 6.50% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-repeated 0-9]` | 2.3741449683416218e-05 | 2.2251519363702206e-05 | 6.28% | 6.70% | 1.07x | ✅ | -| `hexbytes_getitem_index[2-two patterns]` | 2.366551538718643e-05 | 2.253315482054391e-05 | 4.78% | 5.03% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-0-9]` | 2.37748373094076e-05 | 2.2710735415706232e-05 | 4.48% | 4.69% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-4-byte pattern]` | 2.36294084834588e-05 | 2.2596779771103345e-05 | 4.37% | 4.57% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-all byte values]` | 2.403975793325696e-05 | 2.2383415517151603e-05 | 6.89% | 7.40% | 1.07x | ✅ | -| `hexbytes_getitem_index[3-alternating 0x00/0xff]` | 2.34469388816728e-05 | 2.237700421202496e-05 | 4.56% | 4.78% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-alternating 0xaa/0x55]` | 2.3716586141842265e-05 | 2.2472474640444777e-05 | 5.25% | 5.54% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-ascii sentence]` | 2.3895592685942477e-05 | 2.2035529992744683e-05 | 7.78% | 8.44% | 1.08x | ✅ | -| `hexbytes_getitem_index[3-b'\\x00'*32]` | 2.3736251226581613e-05 | 2.273362079320998e-05 | 4.22% | 4.41% | 1.04x | ✅ | -| `hexbytes_getitem_index[3-b'\\x00\\xff\\x00\\xff']` | 2.3673953489382178e-05 | 2.2457893682888497e-05 | 5.14% | 5.41% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-b'\\x01'*100]` | 2.370281393271934e-05 | 2.2431282613206826e-05 | 5.36% | 5.67% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'\\x01'*2048]` | 2.3656186050230982e-05 | 2.2551723863017532e-05 | 4.67% | 4.90% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-b'\\x10\\x20\\x30\\x40\\x50']` | 2.372424587162346e-05 | 2.24511155400636e-05 | 5.37% | 5.67% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'\\x7f'*8]` | 2.3583854664165805e-05 | 2.2497757229814305e-05 | 4.61% | 4.83% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-b'\\x80'*8]` | 2.3761355240706404e-05 | 2.2405114862227697e-05 | 5.71% | 6.05% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'\\xde\\xad\\xbe\\xef']` | 2.3538140516565893e-05 | 2.2371128973128875e-05 | 4.96% | 5.22% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-b'\\xff'*64]` | 2.359110928086081e-05 | 2.221115505657025e-05 | 5.85% | 6.21% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'a'*1024]` | 2.3260028195261576e-05 | 2.2306284489098033e-05 | 4.10% | 4.28% | 1.04x | ✅ | -| `hexbytes_getitem_index[3-long alternating]` | 2.360417537895871e-05 | 2.251082086369651e-05 | 4.63% | 4.86% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-mixed pattern]` | 2.3830807359923623e-05 | 2.2346309951664428e-05 | 6.23% | 6.64% | 1.07x | ✅ | -| `hexbytes_getitem_index[3-multiples of 0x10]` | 2.3711285717523375e-05 | 2.2474448726899732e-05 | 5.22% | 5.50% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-palindrome ascii]` | 2.3436924630608695e-05 | 2.2396051541534126e-05 | 4.44% | 4.65% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-palindrome numeric]` | 2.3668595465124716e-05 | 2.2289648418351357e-05 | 5.83% | 6.19% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-palindrome]` | 2.351964846581729e-05 | 2.240421923325913e-05 | 4.74% | 4.98% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-repeated 0-9]` | 2.391336828324265e-05 | 2.215786275921801e-05 | 7.34% | 7.92% | 1.08x | ✅ | -| `hexbytes_getitem_index[3-two patterns]` | 2.3807109983844827e-05 | 2.1867935726208993e-05 | 8.15% | 8.87% | 1.09x | ✅ | -| `hexbytes_getitem_index[4-0-9]` | 2.416362944450912e-05 | 2.2770753695730664e-05 | 5.76% | 6.12% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-4-byte pattern]` | 2.400256946374398e-05 | 2.2375126293723663e-05 | 6.78% | 7.27% | 1.07x | ✅ | -| `hexbytes_getitem_index[4-all byte values]` | 2.3764199777252133e-05 | 2.2056224006506947e-05 | 7.19% | 7.74% | 1.08x | ✅ | -| `hexbytes_getitem_index[4-alternating 0x00/0xff]` | 2.4211387327765502e-05 | 2.240019348410611e-05 | 7.48% | 8.09% | 1.08x | ✅ | -| `hexbytes_getitem_index[4-alternating 0xaa/0x55]` | 2.3716814531764633e-05 | 2.2154962637397344e-05 | 6.59% | 7.05% | 1.07x | ✅ | -| `hexbytes_getitem_index[4-ascii sentence]` | 2.413791835163061e-05 | 2.2118821134110306e-05 | 8.36% | 9.13% | 1.09x | ✅ | -| `hexbytes_getitem_index[4-b'\\x00'*32]` | 2.421225586291319e-05 | 2.234755680071268e-05 | 7.70% | 8.34% | 1.08x | ✅ | -| `hexbytes_getitem_index[4-b'\\x01'*100]` | 2.3696325525677253e-05 | 2.2247526231339393e-05 | 6.11% | 6.51% | 1.07x | ✅ | -| `hexbytes_getitem_index[4-b'\\x01'*2048]` | 2.4100628754279967e-05 | 2.2094883139885273e-05 | 8.32% | 9.08% | 1.09x | ✅ | -| `hexbytes_getitem_index[4-b'\\x10\\x20\\x30\\x40\\x50']` | 2.38584944270151e-05 | 2.2138698091771588e-05 | 7.21% | 7.77% | 1.08x | ✅ | -| `hexbytes_getitem_index[4-b'\\x7f'*8]` | 2.3785902978132703e-05 | 2.2072371780104015e-05 | 7.20% | 7.76% | 1.08x | ✅ | -| `hexbytes_getitem_index[4-b'\\x80'*8]` | 2.3784977059148304e-05 | 2.211962570290052e-05 | 7.00% | 7.53% | 1.08x | ✅ | -| `hexbytes_getitem_index[4-b'\\xff'*64]` | 2.3700734849261895e-05 | 2.2120681887023932e-05 | 6.67% | 7.14% | 1.07x | ✅ | -| `hexbytes_getitem_index[4-b'a'*1024]` | 2.406419382296312e-05 | 2.19807687566719e-05 | 8.66% | 9.48% | 1.09x | ✅ | -| `hexbytes_getitem_index[4-long alternating]` | 2.383976693534454e-05 | 2.2630658724131406e-05 | 5.07% | 5.34% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-mixed pattern]` | 2.3979624771140322e-05 | 2.2328395385969107e-05 | 6.89% | 7.40% | 1.07x | ✅ | -| `hexbytes_getitem_index[4-multiples of 0x10]` | 2.34163593756519e-05 | 2.205221593031053e-05 | 5.83% | 6.19% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-palindrome ascii]` | 2.4046070983277165e-05 | 2.2187776257769353e-05 | 7.73% | 8.38% | 1.08x | ✅ | -| `hexbytes_getitem_index[4-palindrome numeric]` | 2.3782487511810056e-05 | 2.214941519199688e-05 | 6.87% | 7.37% | 1.07x | ✅ | -| `hexbytes_getitem_index[4-palindrome]` | 2.4120120674278746e-05 | 2.209224427672984e-05 | 8.41% | 9.18% | 1.09x | ✅ | -| `hexbytes_getitem_index[4-repeated 0-9]` | 2.34921311046118e-05 | 2.2210016708761127e-05 | 5.46% | 5.77% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-two patterns]` | 2.4005108850538193e-05 | 2.2411959114604496e-05 | 6.64% | 7.11% | 1.07x | ✅ | -| `hexbytes_getitem_index[5-0-9]` | 2.370564903012719e-05 | 2.2023769556806577e-05 | 7.09% | 7.64% | 1.08x | ✅ | -| `hexbytes_getitem_index[5-4-byte pattern]` | 2.377626977175104e-05 | 2.217118851303218e-05 | 6.75% | 7.24% | 1.07x | ✅ | -| `hexbytes_getitem_index[5-all byte values]` | 2.378304954784653e-05 | 2.2175959556196413e-05 | 6.76% | 7.25% | 1.07x | ✅ | -| `hexbytes_getitem_index[5-alternating 0x00/0xff]` | 2.3739050077825476e-05 | 2.2254735184722817e-05 | 6.25% | 6.67% | 1.07x | ✅ | -| `hexbytes_getitem_index[5-alternating 0xaa/0x55]` | 2.3698570706840428e-05 | 2.2692218428807572e-05 | 4.25% | 4.43% | 1.04x | ✅ | -| `hexbytes_getitem_index[5-ascii sentence]` | 2.3509939394101845e-05 | 2.23098363120744e-05 | 5.10% | 5.38% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-b'\\x00'*32]` | 2.3927059570531508e-05 | 2.2745049487687928e-05 | 4.94% | 5.20% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-b'\\x01'*100]` | 2.370280355715946e-05 | 2.2091400955219417e-05 | 6.80% | 7.29% | 1.07x | ✅ | -| `hexbytes_getitem_index[5-b'\\x01'*2048]` | 2.40653447397226e-05 | 2.2167632863017708e-05 | 7.89% | 8.56% | 1.09x | ✅ | -| `hexbytes_getitem_index[5-b'\\x7f'*8]` | 2.4240890760840145e-05 | 2.2084934697308292e-05 | 8.89% | 9.76% | 1.10x | ✅ | -| `hexbytes_getitem_index[5-b'\\x80'*8]` | 2.3768934661810337e-05 | 2.2137494475984394e-05 | 6.86% | 7.37% | 1.07x | ✅ | -| `hexbytes_getitem_index[5-b'\\xff'*64]` | 2.3905962441499865e-05 | 2.210209080236595e-05 | 7.55% | 8.16% | 1.08x | ✅ | -| `hexbytes_getitem_index[5-b'a'*1024]` | 2.385863573637786e-05 | 2.2223752559845875e-05 | 6.85% | 7.36% | 1.07x | ✅ | -| `hexbytes_getitem_index[5-long alternating]` | 2.4071719845091504e-05 | 2.2095039961257052e-05 | 8.21% | 8.95% | 1.09x | ✅ | -| `hexbytes_getitem_index[5-mixed pattern]` | 2.412793762584248e-05 | 2.222669915544779e-05 | 7.88% | 8.55% | 1.09x | ✅ | -| `hexbytes_getitem_index[5-multiples of 0x10]` | 2.3555268044337486e-05 | 2.2118702633091277e-05 | 6.10% | 6.49% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-palindrome ascii]` | 2.384874748506212e-05 | 2.209138726042397e-05 | 7.37% | 7.95% | 1.08x | ✅ | -| `hexbytes_getitem_index[5-palindrome]` | 2.3861182686905003e-05 | 2.2354440944528662e-05 | 6.31% | 6.74% | 1.07x | ✅ | -| `hexbytes_getitem_index[5-repeated 0-9]` | 2.357345551601425e-05 | 2.2119311629089632e-05 | 6.17% | 6.57% | 1.07x | ✅ | -| `hexbytes_getitem_index[5-two patterns]` | 2.3525074076147965e-05 | 2.2240515465877773e-05 | 5.46% | 5.78% | 1.06x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-0-9]` | 8.158874137926803e-05 | 5.936184942228242e-05 | 27.24% | 37.44% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-4-byte pattern]` | 8.187163359167034e-05 | 6.094789728133496e-05 | 25.56% | 34.33% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-all byte values]` | 8.197547196103761e-05 | 5.974229761281502e-05 | 27.12% | 37.22% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-alternating 0x00/0xff]` | 8.148004456100136e-05 | 6.036804331081553e-05 | 25.91% | 34.97% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-alternating 0xaa/0x55]` | 8.191963339448875e-05 | 5.990501382920067e-05 | 26.87% | 36.75% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-ascii sentence]` | 8.100036466402196e-05 | 6.0504193058126826e-05 | 25.30% | 33.88% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'']` | 7.83086901011603e-05 | 5.762094198504632e-05 | 26.42% | 35.90% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00'*32]` | 8.226831002321282e-05 | 6.053682075547745e-05 | 26.42% | 35.90% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00\\xff\\x00\\xff']` | 8.170820193269161e-05 | 6.03337935171177e-05 | 26.16% | 35.43% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*100]` | 8.247179799257704e-05 | 5.987690592931465e-05 | 27.40% | 37.74% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*2048]` | 8.225563556432903e-05 | 6.182193299453653e-05 | 24.84% | 33.05% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01\\x02\\x03']` | 8.166756718729766e-05 | 5.998351039469376e-05 | 26.55% | 36.15% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.252859704939733e-05 | 6.047662379491292e-05 | 26.72% | 36.46% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x7f'*8]` | 8.279984536095575e-05 | 5.931946185079214e-05 | 28.36% | 39.58% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x80'*8]` | 8.29157003182825e-05 | 5.9675717671382575e-05 | 28.03% | 38.94% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\xde\\xad\\xbe\\xef']` | 8.258194178472292e-05 | 6.0141765342525025e-05 | 27.17% | 37.31% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\xff'*64]` | 8.16726123516879e-05 | 5.984410334738925e-05 | 26.73% | 36.48% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'a'*1024]` | 8.179924304155853e-05 | 6.036468029089999e-05 | 26.20% | 35.51% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'abc']` | 8.213259568805892e-05 | 6.0520562654051094e-05 | 26.31% | 35.71% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-long alternating]` | 8.248627210823434e-05 | 6.037304216276541e-05 | 26.81% | 36.63% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-mixed pattern]` | 8.2073655452793e-05 | 5.95338101755882e-05 | 27.46% | 37.86% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-multiples of 0x10]` | 8.132697739508627e-05 | 5.986594467165199e-05 | 26.39% | 35.85% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-palindrome ascii]` | 8.14974399589202e-05 | 5.9662759784013346e-05 | 26.79% | 36.60% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-palindrome numeric]` | 8.3884937704009e-05 | 6.038667903857963e-05 | 28.01% | 38.91% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-palindrome]` | 8.150599039873225e-05 | 6.0030389975486114e-05 | 26.35% | 35.77% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-repeated 0-9]` | 8.171274370640066e-05 | 6.007060530814203e-05 | 26.49% | 36.03% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-single 0xff]` | 8.021920390349683e-05 | 5.785587173062897e-05 | 27.88% | 38.65% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-single null byte]` | 7.970557011415754e-05 | 5.79346405853674e-05 | 27.31% | 37.58% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-two patterns]` | 8.181751684149665e-05 | 5.9647810354315246e-05 | 27.10% | 37.17% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-0-9]` | 8.220857703601872e-05 | 6.071904831626277e-05 | 26.14% | 35.39% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-4-byte pattern]` | 8.205169533887507e-05 | 6.054308226564608e-05 | 26.21% | 35.53% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-all byte values]` | 8.29860118923538e-05 | 6.124684564726618e-05 | 26.20% | 35.49% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-alternating 0x00/0xff]` | 8.225749552387071e-05 | 6.145092501660742e-05 | 25.29% | 33.86% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-alternating 0xaa/0x55]` | 8.249056320502428e-05 | 6.149205212048085e-05 | 25.46% | 34.15% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-ascii sentence]` | 8.216156877378178e-05 | 6.126953055548171e-05 | 25.43% | 34.10% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'']` | 8.046552141187386e-05 | 5.981185221567854e-05 | 25.67% | 34.53% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x00'*32]` | 8.259098547049542e-05 | 6.277682656198159e-05 | 23.99% | 31.56% | 1.32x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x00\\xff\\x00\\xff']` | 8.259325418821997e-05 | 6.0897465586848775e-05 | 26.27% | 35.63% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*100]` | 8.309054443772027e-05 | 6.0874534841153455e-05 | 26.74% | 36.49% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*2048]` | 8.261419880959167e-05 | 6.117157521061489e-05 | 25.96% | 35.05% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x01\\x02\\x03']` | 8.273965905829822e-05 | 6.114246503049624e-05 | 26.10% | 35.32% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.248296532188748e-05 | 6.096854583740308e-05 | 26.08% | 35.29% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x7f'*8]` | 8.262238637383459e-05 | 6.150344668614003e-05 | 25.56% | 34.34% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x80'*8]` | 8.32065743516288e-05 | 6.0177893693850575e-05 | 27.68% | 38.27% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\xde\\xad\\xbe\\xef']` | 8.262223551792056e-05 | 6.07632707914368e-05 | 26.46% | 35.97% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\xff'*64]` | 8.290927437182107e-05 | 6.14762015265771e-05 | 25.85% | 34.86% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'a'*1024]` | 8.267925744574209e-05 | 6.095251303707212e-05 | 26.28% | 35.65% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'abc']` | 8.273806885029946e-05 | 6.139318405579434e-05 | 25.80% | 34.77% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-long alternating]` | 8.244964636847278e-05 | 6.079018606442721e-05 | 26.27% | 35.63% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-mixed pattern]` | 8.286626942165477e-05 | 6.0976502167718216e-05 | 26.42% | 35.90% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-multiples of 0x10]` | 8.286253308795826e-05 | 6.0965996716452804e-05 | 26.43% | 35.92% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-palindrome ascii]` | 8.717426718628582e-05 | 6.123075393890418e-05 | 29.76% | 42.37% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-palindrome numeric]` | 8.222778835748292e-05 | 6.119538094410558e-05 | 25.58% | 34.37% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-palindrome]` | 8.366005796784939e-05 | 6.0593550823028595e-05 | 27.57% | 38.07% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-repeated 0-9]` | 8.239221148487113e-05 | 6.12936277187164e-05 | 25.61% | 34.42% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-single 0xff]` | 8.145696427845327e-05 | 5.9312521134286986e-05 | 27.19% | 37.34% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-single null byte]` | 8.13188027484653e-05 | 5.9238568874957114e-05 | 27.15% | 37.27% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-two patterns]` | 8.207820878415106e-05 | 6.104399613614599e-05 | 25.63% | 34.46% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-0-9]` | 8.224576352547248e-05 | 6.0748622870350616e-05 | 26.14% | 35.39% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-4-byte pattern]` | 8.342386563845494e-05 | 6.052489571814201e-05 | 27.45% | 37.83% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-all byte values]` | 8.253437638275219e-05 | 6.063280766218985e-05 | 26.54% | 36.12% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-alternating 0x00/0xff]` | 8.227380588753175e-05 | 6.086187414713933e-05 | 26.03% | 35.18% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-alternating 0xaa/0x55]` | 8.405010994231752e-05 | 6.053268912570709e-05 | 27.98% | 38.85% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-ascii sentence]` | 8.288259873139608e-05 | 6.0130312534574794e-05 | 27.45% | 37.84% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'']` | 7.961366831668843e-05 | 5.856914304812782e-05 | 26.43% | 35.93% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x00'*32]` | 8.23491397824994e-05 | 6.061301209572691e-05 | 26.40% | 35.86% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x00\\xff\\x00\\xff']` | 8.316168468360637e-05 | 6.0453585288549775e-05 | 27.31% | 37.56% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*100]` | 8.373536007169938e-05 | 6.0477686421693896e-05 | 27.78% | 38.46% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*2048]` | 8.28698716193288e-05 | 6.028505753133119e-05 | 27.25% | 37.46% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x01\\x02\\x03']` | 8.249754093841705e-05 | 5.9883021875683755e-05 | 27.41% | 37.76% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.26965189238725e-05 | 6.033729752069336e-05 | 27.04% | 37.06% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x7f'*8]` | 8.295269365795219e-05 | 6.0372863109479515e-05 | 27.22% | 37.40% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x80'*8]` | 8.261472713855325e-05 | 6.0319052486455784e-05 | 26.99% | 36.96% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\xde\\xad\\xbe\\xef']` | 8.237614734605528e-05 | 6.0597812806048734e-05 | 26.44% | 35.94% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\xff'*64]` | 8.256799948711941e-05 | 6.0097809185700085e-05 | 27.21% | 37.39% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'a'*1024]` | 8.184145300681373e-05 | 6.0028932259803536e-05 | 26.65% | 36.34% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'abc']` | 8.195245064894868e-05 | 6.106598226402518e-05 | 25.49% | 34.20% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-long alternating]` | 8.290274559223522e-05 | 6.110050727944284e-05 | 26.30% | 35.68% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-mixed pattern]` | 8.203979438277453e-05 | 6.056349096968688e-05 | 26.18% | 35.46% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-multiples of 0x10]` | 8.24472947625233e-05 | 6.047325638791342e-05 | 26.65% | 36.34% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-palindrome ascii]` | 8.232283665766438e-05 | 6.0657300490338584e-05 | 26.32% | 35.72% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-palindrome numeric]` | 8.295337207521434e-05 | 6.0695139616075795e-05 | 26.83% | 36.67% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-palindrome]` | 8.253304815329285e-05 | 6.030179699124444e-05 | 26.94% | 36.87% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-repeated 0-9]` | 8.231127082256974e-05 | 6.046572959847554e-05 | 26.54% | 36.13% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-single 0xff]` | 8.044821880076987e-05 | 5.828613786275397e-05 | 27.55% | 38.02% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-single null byte]` | 8.079170464545125e-05 | 5.795687318477875e-05 | 28.26% | 39.40% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-two patterns]` | 8.528351152241482e-05 | 6.048264210698231e-05 | 29.08% | 41.00% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-0-9]` | 8.359476484251543e-05 | 5.9782496181542e-05 | 28.49% | 39.83% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-4-byte pattern]` | 8.324132707977177e-05 | 6.063264656524695e-05 | 27.16% | 37.29% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-all byte values]` | 8.382620580304619e-05 | 6.069410806539692e-05 | 27.60% | 38.11% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-alternating 0x00/0xff]` | 8.281881970535614e-05 | 6.0380359185186e-05 | 27.09% | 37.16% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-alternating 0xaa/0x55]` | 8.27554953266174e-05 | 6.017872092244139e-05 | 27.28% | 37.52% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-ascii sentence]` | 8.233259340165023e-05 | 6.134328592170561e-05 | 25.49% | 34.22% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'']` | 7.903759852050067e-05 | 5.748332919404697e-05 | 27.27% | 37.50% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x00'*32]` | 8.138845548478261e-05 | 6.0371274328003824e-05 | 25.82% | 34.81% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x00\\xff\\x00\\xff']` | 8.08541996330341e-05 | 6.025110180266896e-05 | 25.48% | 34.20% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*100]` | 8.266685939333836e-05 | 6.504872885869008e-05 | 21.31% | 27.08% | 1.27x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*2048]` | 0.0001038567319538242 | 7.75875210979368e-05 | 25.29% | 33.86% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x01\\x02\\x03']` | 7.924040343098189e-05 | 5.753343404923259e-05 | 27.39% | 37.73% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.221590841203097e-05 | 5.979455535521967e-05 | 27.27% | 37.50% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x7f'*8]` | 8.179136612298987e-05 | 6.024054096239685e-05 | 26.35% | 35.77% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x80'*8]` | 8.196734080899322e-05 | 6.000295094741753e-05 | 26.80% | 36.61% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\xde\\xad\\xbe\\xef']` | 8.146722785234977e-05 | 5.983985891358813e-05 | 26.55% | 36.14% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\xff'*64]` | 8.102691877051847e-05 | 6.028466144013463e-05 | 25.60% | 34.41% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'a'*1024]` | 9.826053653430473e-05 | 7.402907956275328e-05 | 24.66% | 32.73% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'abc']` | 7.926348747743365e-05 | 5.76891336773402e-05 | 27.22% | 37.40% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-long alternating]` | 9.745901614560696e-05 | 7.487275733337719e-05 | 23.18% | 30.17% | 1.30x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-mixed pattern]` | 8.2455155167239e-05 | 6.134324582110495e-05 | 25.60% | 34.42% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-multiples of 0x10]` | 8.143051914874115e-05 | 6.0123101862834465e-05 | 26.17% | 35.44% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-palindrome ascii]` | 8.235746479296143e-05 | 5.983351522645033e-05 | 27.35% | 37.64% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-palindrome numeric]` | 8.202478300997558e-05 | 5.9843682333469656e-05 | 27.04% | 37.07% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-palindrome]` | 8.161343756620752e-05 | 5.9948791983467613e-05 | 26.55% | 36.14% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-repeated 0-9]` | 8.286268217496747e-05 | 6.0886564925824734e-05 | 26.52% | 36.09% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-single 0xff]` | 7.9908757387398e-05 | 5.7812472625970486e-05 | 27.65% | 38.22% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-single null byte]` | 7.954695175386731e-05 | 5.7761720395054575e-05 | 27.39% | 37.72% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-two patterns]` | 8.411962851361742e-05 | 6.0664161147338455e-05 | 27.88% | 38.66% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-0-9]` | 8.053221542729754e-05 | 5.782553597648148e-05 | 28.20% | 39.27% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-4-byte pattern]` | 8.307397644388753e-05 | 5.961170750731091e-05 | 28.24% | 39.36% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-all byte values]` | 8.138949451936312e-05 | 5.962169098023686e-05 | 26.75% | 36.51% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-alternating 0x00/0xff]` | 8.108132702030693e-05 | 5.874566012620608e-05 | 27.55% | 38.02% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-alternating 0xaa/0x55]` | 8.023315351381477e-05 | 5.914521744036165e-05 | 26.28% | 35.65% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-ascii sentence]` | 7.98881285201064e-05 | 5.999422370879396e-05 | 24.90% | 33.16% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'']` | 7.793555073240806e-05 | 5.6133376033545156e-05 | 27.97% | 38.84% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x00'*32]` | 8.038275495302093e-05 | 5.877046652263523e-05 | 26.89% | 36.77% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x00\\xff\\x00\\xff']` | 8.133626380984293e-05 | 5.804295528333492e-05 | 28.64% | 40.13% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*100]` | 8.001355291195184e-05 | 5.8754381645492404e-05 | 26.57% | 36.18% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*2048]` | 0.00010287338275291927 | 7.926527674859973e-05 | 22.95% | 29.78% | 1.30x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x01\\x02\\x03']` | 8.120998086098522e-05 | 5.84328608658629e-05 | 28.05% | 38.98% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 7.991411622552212e-05 | 5.835156334069739e-05 | 26.98% | 36.95% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x7f'*8]` | 8.087841526675763e-05 | 5.841702939673503e-05 | 27.77% | 38.45% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x80'*8]` | 7.9649810971539e-05 | 5.799341633414953e-05 | 27.19% | 37.34% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\xde\\xad\\xbe\\xef']` | 8.165253409793914e-05 | 5.767650241127296e-05 | 29.36% | 41.57% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\xff'*64]` | 8.087346596400575e-05 | 5.884993330835726e-05 | 27.23% | 37.42% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'a'*1024]` | 9.811291979211797e-05 | 6.972003570066531e-05 | 28.94% | 40.72% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'abc']` | 8.130107976074272e-05 | 5.8865954684560504e-05 | 27.60% | 38.11% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-long alternating]` | 9.833338912320727e-05 | 7.356529247887829e-05 | 25.19% | 33.67% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-mixed pattern]` | 8.072253947059491e-05 | 5.984889250258876e-05 | 25.86% | 34.88% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-multiples of 0x10]` | 8.043934460406476e-05 | 5.785370778100685e-05 | 28.08% | 39.04% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-palindrome ascii]` | 8.08520600962201e-05 | 5.7849544519877736e-05 | 28.45% | 39.76% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-palindrome numeric]` | 8.05167099114802e-05 | 5.839001555727415e-05 | 27.48% | 37.89% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-palindrome]` | 8.054776200259266e-05 | 5.714226441551919e-05 | 29.06% | 40.96% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-repeated 0-9]` | 8.005530320360214e-05 | 6.244435536800857e-05 | 22.00% | 28.20% | 1.28x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-single 0xff]` | 7.718595132920844e-05 | 5.69083400057879e-05 | 26.27% | 35.63% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-single null byte]` | 7.749282548070295e-05 | 5.62674035227747e-05 | 27.39% | 37.72% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-two patterns]` | 7.89355735512056e-05 | 5.84559172445027e-05 | 25.94% | 35.03% | 1.35x | ✅ | -| `hexbytes_new['']` | 7.061352770260829e-05 | 3.746022866018403e-05 | 46.95% | 88.50% | 1.89x | ✅ | -| `hexbytes_new['0x'+'00'*64]` | 9.344738083652532e-05 | 5.26862323267876e-05 | 43.62% | 77.37% | 1.77x | ✅ | -| `hexbytes_new['0x'+'a'*128]` | 9.1762926825742e-05 | 5.2898230058898134e-05 | 42.35% | 73.47% | 1.73x | ✅ | -| `hexbytes_new['0x'+'ff'*32]` | 8.832468727787016e-05 | 4.9653522747350534e-05 | 43.78% | 77.88% | 1.78x | ✅ | -| `hexbytes_new['0x']` | 7.79058500222623e-05 | 3.8221344789745324e-05 | 50.94% | 103.83% | 2.04x | ✅ | -| `hexbytes_new['0x1234']` | 8.574702596326499e-05 | 4.8261650801384535e-05 | 43.72% | 77.67% | 1.78x | ✅ | -| `hexbytes_new['0xCAFEBABE']` | 8.547164954924834e-05 | 4.744677926816294e-05 | 44.49% | 80.14% | 1.80x | ✅ | -| `hexbytes_new['0xabcdef']` | 8.619699838376181e-05 | 4.7943784657755185e-05 | 44.38% | 79.79% | 1.80x | ✅ | -| `hexbytes_new['0xdeadbeef']` | 8.592580132786286e-05 | 4.797381098494579e-05 | 44.17% | 79.11% | 1.79x | ✅ | -| `hexbytes_new['abc']` | 8.346634408192414e-05 | 5.037685735415736e-05 | 39.64% | 65.68% | 1.66x | ✅ | -| `hexbytes_new['deadbeef']` | 7.76428284891337e-05 | 4.2543600314022825e-05 | 45.21% | 82.50% | 1.83x | ✅ | -| `hexbytes_new[0-9]` | 4.23303112403511e-05 | 2.5972705984402972e-05 | 38.64% | 62.98% | 1.63x | ✅ | -| `hexbytes_new[0]` | 0.00012110636092883232 | 6.249746284061343e-05 | 48.39% | 93.78% | 1.94x | ✅ | -| `hexbytes_new[123456]` | 0.0001265004697468215 | 6.851784248818788e-05 | 45.84% | 84.62% | 1.85x | ✅ | -| `hexbytes_new[2**16]` | 0.0001294683870973124 | 6.8518267586255e-05 | 47.08% | 88.95% | 1.89x | ✅ | -| `hexbytes_new[2**256-1]` | 0.00013303364474505014 | 7.643422364828404e-05 | 42.55% | 74.05% | 1.74x | ✅ | -| `hexbytes_new[2**32]` | 0.00013125682134281177 | 7.059011248127672e-05 | 46.22% | 85.94% | 1.86x | ✅ | -| `hexbytes_new[2**64]` | 0.0001337626407812125 | 7.407080608019694e-05 | 44.63% | 80.59% | 1.81x | ✅ | -| `hexbytes_new[2**8]` | 0.0001262593780154078 | 6.604478290186242e-05 | 47.69% | 91.17% | 1.91x | ✅ | -| `hexbytes_new[4-byte pattern]` | 4.360159705571842e-05 | 2.6647476466573845e-05 | 38.88% | 63.62% | 1.64x | ✅ | -| `hexbytes_new[False]` | 6.014848031316459e-05 | 2.7224935741460685e-05 | 54.74% | 120.93% | 2.21x | ✅ | -| `hexbytes_new[True]` | 6.0794303475654845e-05 | 2.7354790837061063e-05 | 55.00% | 122.24% | 2.22x | ✅ | -| `hexbytes_new[all byte values]` | 4.296967811574181e-05 | 2.684531724803922e-05 | 37.52% | 60.06% | 1.60x | ✅ | -| `hexbytes_new[alternating 0x00/0xff]` | 4.3062775261680606e-05 | 2.6537134253935653e-05 | 38.38% | 62.27% | 1.62x | ✅ | -| `hexbytes_new[alternating 0xaa/0x55]` | 4.298977970757695e-05 | 2.6403619519492216e-05 | 38.58% | 62.82% | 1.63x | ✅ | -| `hexbytes_new[ascii sentence]` | 4.246638875655563e-05 | 2.5887061976063426e-05 | 39.04% | 64.04% | 1.64x | ✅ | -| `hexbytes_new[b'']` | 4.2383826946904776e-05 | 2.5628228111769443e-05 | 39.53% | 65.38% | 1.65x | ✅ | -| `hexbytes_new[b'\\x00'*32]` | 4.307752169814541e-05 | 2.589398757501326e-05 | 39.89% | 66.36% | 1.66x | ✅ | -| `hexbytes_new[b'\\x00\\xff\\x00\\xff']` | 4.223641207973662e-05 | 2.5798595274149905e-05 | 38.92% | 63.72% | 1.64x | ✅ | -| `hexbytes_new[b'\\x01'*100]` | 4.352943718555897e-05 | 2.659826734278178e-05 | 38.90% | 63.66% | 1.64x | ✅ | -| `hexbytes_new[b'\\x01'*2048]` | 5.5800981326568164e-05 | 3.839877630118332e-05 | 31.19% | 45.32% | 1.45x | ✅ | -| `hexbytes_new[b'\\x01\\x02\\x03']` | 4.304376786325528e-05 | 2.560384927324432e-05 | 40.52% | 68.11% | 1.68x | ✅ | -| `hexbytes_new[b'\\x10\\x20\\x30\\x40\\x50']` | 4.308696258014535e-05 | 2.6016951481610805e-05 | 39.62% | 65.61% | 1.66x | ✅ | -| `hexbytes_new[b'\\x7f'*8]` | 4.3012564268905466e-05 | 2.57301809716526e-05 | 40.18% | 67.17% | 1.67x | ✅ | -| `hexbytes_new[b'\\x80'*8]` | 4.3403516177090726e-05 | 2.57476893945114e-05 | 40.68% | 68.57% | 1.69x | ✅ | -| `hexbytes_new[b'\\xde\\xad\\xbe\\xef']` | 4.310837230910579e-05 | 2.5644658757821025e-05 | 40.51% | 68.10% | 1.68x | ✅ | -| `hexbytes_new[b'\\xff'*64]` | 4.308343037439319e-05 | 2.6258824729240215e-05 | 39.05% | 64.07% | 1.64x | ✅ | -| `hexbytes_new[b'a'*1024]` | 5.057241981908928e-05 | 3.296570205910291e-05 | 34.81% | 53.41% | 1.53x | ✅ | -| `hexbytes_new[b'abc']` | 4.3720569268309305e-05 | 2.5630198218377632e-05 | 41.38% | 70.58% | 1.71x | ✅ | -| `hexbytes_new[bytearray(0-9)]` | 7.054917442162382e-05 | 3.759584054735278e-05 | 46.71% | 87.65% | 1.88x | ✅ | -| `hexbytes_new[bytearray(4-byte pattern)]` | 6.964788147158704e-05 | 3.850574151245135e-05 | 44.71% | 80.88% | 1.81x | ✅ | -| `hexbytes_new[bytearray(all byte values)]` | 7.021626186199028e-05 | 3.8079672858952955e-05 | 45.77% | 84.39% | 1.84x | ✅ | -| `hexbytes_new[bytearray(alternating 0x00/0xff)]` | 6.95000834141796e-05 | 3.798011462624858e-05 | 45.35% | 82.99% | 1.83x | ✅ | -| `hexbytes_new[bytearray(alternating 0xaa/0x55)]` | 6.926582970870214e-05 | 3.7886847258748446e-05 | 45.30% | 82.82% | 1.83x | ✅ | -| `hexbytes_new[bytearray(ascii sentence)]` | 7.053746370335263e-05 | 3.7970579391047574e-05 | 46.17% | 85.77% | 1.86x | ✅ | -| `hexbytes_new[bytearray(b'')]` | 6.83973090178081e-05 | 3.64542405245791e-05 | 46.70% | 87.63% | 1.88x | ✅ | -| `hexbytes_new[bytearray(b'\\x00'*32)]` | 7.058704910573099e-05 | 3.808613987226178e-05 | 46.04% | 85.34% | 1.85x | ✅ | -| `hexbytes_new[bytearray(b'\\x00\\xff\\x00\\xff')]` | 6.986565681768215e-05 | 3.8078540838925095e-05 | 45.50% | 83.48% | 1.83x | ✅ | -| `hexbytes_new[bytearray(b'\\x01'*100)]` | 6.989298778362405e-05 | 3.8237999835667106e-05 | 45.29% | 82.78% | 1.83x | ✅ | -| `hexbytes_new[bytearray(b'\\x01'*2048)]` | 9.082635590848168e-05 | 5.684915016930975e-05 | 37.41% | 59.77% | 1.60x | ✅ | -| `hexbytes_new[bytearray(b'\\x01\\x02\\x03')]` | 7.025180063561893e-05 | 3.844814423546138e-05 | 45.27% | 82.72% | 1.83x | ✅ | -| `hexbytes_new[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 6.984890331797619e-05 | 3.821421594774138e-05 | 45.29% | 82.78% | 1.83x | ✅ | -| `hexbytes_new[bytearray(b'\\x7f'*8)]` | 6.861618776161423e-05 | 3.790396922592592e-05 | 44.76% | 81.03% | 1.81x | ✅ | -| `hexbytes_new[bytearray(b'\\x80'*8)]` | 6.933724109949618e-05 | 3.925945421407942e-05 | 43.38% | 76.61% | 1.77x | ✅ | -| `hexbytes_new[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 6.926611377239828e-05 | 3.7963650700333346e-05 | 45.19% | 82.45% | 1.82x | ✅ | -| `hexbytes_new[bytearray(b'\\xff'*64)]` | 6.938405393728563e-05 | 3.807382322462547e-05 | 45.13% | 82.24% | 1.82x | ✅ | -| `hexbytes_new[bytearray(b'a'*1024)]` | 8.54044093558724e-05 | 5.0434738781333715e-05 | 40.95% | 69.34% | 1.69x | ✅ | -| `hexbytes_new[bytearray(b'abc')]` | 6.948809781909333e-05 | 3.825137693977182e-05 | 44.95% | 81.66% | 1.82x | ✅ | -| `hexbytes_new[bytearray(long alternating)]` | 8.50418725544602e-05 | 4.9771591213775414e-05 | 41.47% | 70.86% | 1.71x | ✅ | -| `hexbytes_new[bytearray(mixed pattern)]` | 6.998507490543224e-05 | 3.828017083357448e-05 | 45.30% | 82.82% | 1.83x | ✅ | -| `hexbytes_new[bytearray(multiples of 0x10)]` | 6.9420832710735e-05 | 3.748356229622278e-05 | 46.01% | 85.20% | 1.85x | ✅ | -| `hexbytes_new[bytearray(palindrome ascii)]` | 6.783446546365812e-05 | 3.7961088369537536e-05 | 44.04% | 78.69% | 1.79x | ✅ | -| `hexbytes_new[bytearray(palindrome numeric)]` | 6.951997922406556e-05 | 3.821227398429949e-05 | 45.03% | 81.93% | 1.82x | ✅ | -| `hexbytes_new[bytearray(palindrome)]` | 7.020352187582269e-05 | 3.8159446871872336e-05 | 45.64% | 83.97% | 1.84x | ✅ | -| `hexbytes_new[bytearray(repeated 0-9)]` | 7.064288548602511e-05 | 3.813820714797809e-05 | 46.01% | 85.23% | 1.85x | ✅ | -| `hexbytes_new[bytearray(single 0xff)]` | 7.012396960917494e-05 | 3.828443268896556e-05 | 45.40% | 83.17% | 1.83x | ✅ | -| `hexbytes_new[bytearray(single null byte)]` | 7.086106825508286e-05 | 3.8190048871102286e-05 | 46.11% | 85.55% | 1.86x | ✅ | -| `hexbytes_new[bytearray(two patterns)]` | 6.949692258960381e-05 | 3.807050030971784e-05 | 45.22% | 82.55% | 1.83x | ✅ | -| `hexbytes_new[long alternating]` | 5.0337389414310784e-05 | 3.2938961426282684e-05 | 34.56% | 52.82% | 1.53x | ✅ | -| `hexbytes_new[memoryview(0-9)]` | 8.635661359988142e-05 | 4.277920884511084e-05 | 50.46% | 101.87% | 2.02x | ✅ | -| `hexbytes_new[memoryview(4-byte pattern)]` | 8.512702040678775e-05 | 4.420743336535825e-05 | 48.07% | 92.56% | 1.93x | ✅ | -| `hexbytes_new[memoryview(all byte values)]` | 8.598961647255803e-05 | 4.380154956594847e-05 | 49.06% | 96.32% | 1.96x | ✅ | -| `hexbytes_new[memoryview(alternating 0x00/0xff)]` | 8.620637868593005e-05 | 4.2894175408336964e-05 | 50.24% | 100.97% | 2.01x | ✅ | -| `hexbytes_new[memoryview(alternating 0xaa/0x55)]` | 8.637526078000483e-05 | 4.253122078316311e-05 | 50.76% | 103.09% | 2.03x | ✅ | -| `hexbytes_new[memoryview(ascii sentence)]` | 8.666069884280398e-05 | 4.259371446364551e-05 | 50.85% | 103.46% | 2.03x | ✅ | -| `hexbytes_new[memoryview(b'')]` | 8.519100660315408e-05 | 4.1000612647030865e-05 | 51.87% | 107.78% | 2.08x | ✅ | -| `hexbytes_new[memoryview(b'\\x00'*32)]` | 8.681720066648464e-05 | 4.298256354370187e-05 | 50.49% | 101.98% | 2.02x | ✅ | -| `hexbytes_new[memoryview(b'\\x00\\xff\\x00\\xff')]` | 8.694876270506326e-05 | 4.305081717120313e-05 | 50.49% | 101.97% | 2.02x | ✅ | -| `hexbytes_new[memoryview(b'\\x01'*100)]` | 8.63694747670107e-05 | 4.372648520905376e-05 | 49.37% | 97.52% | 1.98x | ✅ | -| `hexbytes_new[memoryview(b'\\x01'*2048)]` | 0.00010565577473760478 | 6.253574985044737e-05 | 40.81% | 68.95% | 1.69x | ✅ | -| `hexbytes_new[memoryview(b'\\x01\\x02\\x03')]` | 8.629679343879003e-05 | 4.3030101563211535e-05 | 50.14% | 100.55% | 2.01x | ✅ | -| `hexbytes_new[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 8.463485305073628e-05 | 4.317603287445291e-05 | 48.99% | 96.02% | 1.96x | ✅ | -| `hexbytes_new[memoryview(b'\\x7f'*8)]` | 8.601510258610339e-05 | 4.2944787011541204e-05 | 50.07% | 100.29% | 2.00x | ✅ | -| `hexbytes_new[memoryview(b'\\x80'*8)]` | 8.622359710617895e-05 | 4.2738287090362994e-05 | 50.43% | 101.75% | 2.02x | ✅ | -| `hexbytes_new[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 8.561640880395846e-05 | 4.3125256402169114e-05 | 49.63% | 98.53% | 1.99x | ✅ | -| `hexbytes_new[memoryview(b'\\xff'*64)]` | 8.500486978925127e-05 | 4.264687516395847e-05 | 49.83% | 99.32% | 1.99x | ✅ | -| `hexbytes_new[memoryview(b'a'*1024)]` | 9.829402444229776e-05 | 5.640549951384395e-05 | 42.62% | 74.26% | 1.74x | ✅ | -| `hexbytes_new[memoryview(b'abc')]` | 8.72506614117765e-05 | 4.311159197909468e-05 | 50.59% | 102.38% | 2.02x | ✅ | -| `hexbytes_new[memoryview(long alternating)]` | 9.797697621342298e-05 | 5.7131590662754485e-05 | 41.69% | 71.49% | 1.71x | ✅ | -| `hexbytes_new[memoryview(mixed pattern)]` | 8.533260381029738e-05 | 4.351373575012477e-05 | 49.01% | 96.10% | 1.96x | ✅ | -| `hexbytes_new[memoryview(multiples of 0x10)]` | 8.677999189450184e-05 | 4.3007245298222025e-05 | 50.44% | 101.78% | 2.02x | ✅ | -| `hexbytes_new[memoryview(palindrome ascii)]` | 8.604829730237082e-05 | 4.308315264519062e-05 | 49.93% | 99.73% | 2.00x | ✅ | -| `hexbytes_new[memoryview(palindrome numeric)]` | 8.630105251016679e-05 | 4.279419950991166e-05 | 50.41% | 101.67% | 2.02x | ✅ | -| `hexbytes_new[memoryview(palindrome)]` | 8.863736926557844e-05 | 4.281252103315611e-05 | 51.70% | 107.04% | 2.07x | ✅ | -| `hexbytes_new[memoryview(repeated 0-9)]` | 8.70703255406833e-05 | 4.348026883563041e-05 | 50.06% | 100.25% | 2.00x | ✅ | -| `hexbytes_new[memoryview(single 0xff)]` | 8.703643636977645e-05 | 4.313989414716809e-05 | 50.43% | 101.75% | 2.02x | ✅ | -| `hexbytes_new[memoryview(single null byte)]` | 8.672025020288838e-05 | 4.3359863200481304e-05 | 50.00% | 100.00% | 2.00x | ✅ | -| `hexbytes_new[memoryview(two patterns)]` | 8.566422746408213e-05 | 4.325968501455721e-05 | 49.50% | 98.02% | 1.98x | ✅ | -| `hexbytes_new[mixed pattern]` | 4.283258847746323e-05 | 2.652779169025783e-05 | 38.07% | 61.46% | 1.61x | ✅ | -| `hexbytes_new[multiples of 0x10]` | 4.211022794674997e-05 | 2.58657357800034e-05 | 38.58% | 62.80% | 1.63x | ✅ | -| `hexbytes_new[palindrome ascii]` | 4.2191394589151484e-05 | 2.5931143993224695e-05 | 38.54% | 62.71% | 1.63x | ✅ | -| `hexbytes_new[palindrome numeric]` | 4.231237493234109e-05 | 2.5868487345916664e-05 | 38.86% | 63.57% | 1.64x | ✅ | -| `hexbytes_new[palindrome]` | 4.2943284978035634e-05 | 2.5568473049951326e-05 | 40.46% | 67.95% | 1.68x | ✅ | -| `hexbytes_new[repeated 0-9]` | 4.263140463764382e-05 | 2.6528552808378908e-05 | 37.77% | 60.70% | 1.61x | ✅ | -| `hexbytes_new[single 0xff]` | 4.27799448088154e-05 | 2.59839271051909e-05 | 39.26% | 64.64% | 1.65x | ✅ | -| `hexbytes_new[single null byte]` | 4.30556884997703e-05 | 2.5444155586503732e-05 | 40.90% | 69.22% | 1.69x | ✅ | -| `hexbytes_new[two patterns]` | 4.2734504646908925e-05 | 2.6557277559248504e-05 | 37.86% | 60.91% | 1.61x | ✅ | -| `hexbytes_repr[0-9]` | 2.8858747385831453e-05 | 1.4571622141304269e-05 | 49.51% | 98.05% | 1.98x | ✅ | -| `hexbytes_repr[4-byte pattern]` | 0.0001192617413231854 | 4.052649622620383e-05 | 66.02% | 194.28% | 2.94x | ✅ | -| `hexbytes_repr[all byte values]` | 0.00011952430656231849 | 4.0697803725643195e-05 | 65.95% | 193.69% | 2.94x | ✅ | -| `hexbytes_repr[alternating 0x00/0xff]` | 5.025322540188212e-05 | 1.975445423063589e-05 | 60.69% | 154.39% | 2.54x | ✅ | -| `hexbytes_repr[alternating 0xaa/0x55]` | 4.8736154734882976e-05 | 1.9926901444329513e-05 | 59.11% | 144.57% | 2.45x | ✅ | -| `hexbytes_repr[ascii sentence]` | 4.1557086173413933e-05 | 1.7637991868486704e-05 | 57.56% | 135.61% | 2.36x | ✅ | -| `hexbytes_repr[b'']` | 2.153287237369583e-05 | 1.2234776824158554e-05 | 43.18% | 76.00% | 1.76x | ✅ | -| `hexbytes_repr[b'\\x00'*32]` | 3.653769367376519e-05 | 1.6736832450361976e-05 | 54.19% | 118.31% | 2.18x | ✅ | -| `hexbytes_repr[b'\\x00\\xff\\x00\\xff']` | 2.642648917094263e-05 | 1.392991711888344e-05 | 47.29% | 89.71% | 1.90x | ✅ | -| `hexbytes_repr[b'\\x01'*100]` | 6.124462457291185e-05 | 2.3888131553544282e-05 | 61.00% | 156.38% | 2.56x | ✅ | -| `hexbytes_repr[b'\\x01'*2048]` | 0.0007602657531711047 | 0.00022298468886099084 | 70.67% | 240.95% | 3.41x | ✅ | -| `hexbytes_repr[b'\\x01\\x02\\x03']` | 2.6371404730649557e-05 | 1.4451511046459195e-05 | 45.20% | 82.48% | 1.82x | ✅ | -| `hexbytes_repr[b'\\x10\\x20\\x30\\x40\\x50']` | 2.7003017354854108e-05 | 1.3848073093090484e-05 | 48.72% | 94.99% | 1.95x | ✅ | -| `hexbytes_repr[b'\\x7f'*8]` | 2.8215031633154822e-05 | 1.4471638339596259e-05 | 48.71% | 94.97% | 1.95x | ✅ | -| `hexbytes_repr[b'\\x80'*8]` | 2.833823678124318e-05 | 1.4376135530411036e-05 | 49.27% | 97.12% | 1.97x | ✅ | -| `hexbytes_repr[b'\\xde\\xad\\xbe\\xef']` | 2.6459838178758058e-05 | 1.3977711490329133e-05 | 47.17% | 89.30% | 1.89x | ✅ | -| `hexbytes_repr[b'\\xff'*64]` | 4.885272597374557e-05 | 1.947736809972354e-05 | 60.13% | 150.82% | 2.51x | ✅ | -| `hexbytes_repr[b'a'*1024]` | 0.0003943474792045026 | 0.00011898096524251511 | 69.83% | 231.44% | 3.31x | ✅ | -| `hexbytes_repr[b'abc']` | 2.6463660114926324e-05 | 1.395178307691483e-05 | 47.28% | 89.68% | 1.90x | ✅ | -| `hexbytes_repr[long alternating]` | 0.0003980782283221685 | 0.00012261880188514464 | 69.20% | 224.65% | 3.25x | ✅ | -| `hexbytes_repr[mixed pattern]` | 9.754363004421543e-05 | 3.394650832731348e-05 | 65.20% | 187.35% | 2.87x | ✅ | -| `hexbytes_repr[multiples of 0x10]` | 2.910688200922982e-05 | 1.4678158106613551e-05 | 49.57% | 98.30% | 1.98x | ✅ | -| `hexbytes_repr[palindrome ascii]` | 2.7899104441850166e-05 | 1.431140084866364e-05 | 48.70% | 94.94% | 1.95x | ✅ | -| `hexbytes_repr[palindrome numeric]` | 2.7083488630455384e-05 | 1.3990934261146326e-05 | 48.34% | 93.58% | 1.94x | ✅ | -| `hexbytes_repr[palindrome]` | 3.166033679679532e-05 | 1.5429816040322834e-05 | 51.26% | 105.19% | 2.05x | ✅ | -| `hexbytes_repr[repeated 0-9]` | 6.103195436808407e-05 | 2.3545839398322838e-05 | 61.42% | 159.20% | 2.59x | ✅ | -| `hexbytes_repr[single 0xff]` | 2.56737808282213e-05 | 1.360854129744522e-05 | 46.99% | 88.66% | 1.89x | ✅ | -| `hexbytes_repr[single null byte]` | 2.5635900688736845e-05 | 1.338539008366905e-05 | 47.79% | 91.52% | 1.92x | ✅ | -| `hexbytes_repr[two patterns]` | 4.9148915953498505e-05 | 1.9849889512826822e-05 | 59.61% | 147.60% | 2.48x | ✅ | -| `hexbytes_to_0x_hex[0-9]` | 1.556304754458437e-05 | 1.3709513320075459e-05 | 11.91% | 13.52% | 1.14x | ✅ | -| `hexbytes_to_0x_hex[4-byte pattern]` | 4.198319067009947e-05 | 3.958010645387982e-05 | 5.72% | 6.07% | 1.06x | ✅ | -| `hexbytes_to_0x_hex[all byte values]` | 4.201107269535511e-05 | 3.971325733624996e-05 | 5.47% | 5.79% | 1.06x | ✅ | -| `hexbytes_to_0x_hex[alternating 0x00/0xff]` | 2.0766317575833785e-05 | 1.8828981170482504e-05 | 9.33% | 10.29% | 1.10x | ✅ | -| `hexbytes_to_0x_hex[alternating 0xaa/0x55]` | 2.090651254484494e-05 | 1.8926393976318943e-05 | 9.47% | 10.46% | 1.10x | ✅ | -| `hexbytes_to_0x_hex[ascii sentence]` | 1.876279761976904e-05 | 1.693656283534768e-05 | 9.73% | 10.78% | 1.11x | ✅ | -| `hexbytes_to_0x_hex[b'']` | 1.0086430481502697e-05 | 1.1380818969404555e-05 | -12.83% | -11.37% | 0.89x | ❌ | -| `hexbytes_to_0x_hex[b'\\x00'*32]` | 1.7518117425421204e-05 | 1.5867671201037854e-05 | 9.42% | 10.40% | 1.10x | ✅ | -| `hexbytes_to_0x_hex[b'\\x00\\xff\\x00\\xff']` | 1.4940982376095728e-05 | 1.3016743473670461e-05 | 12.88% | 14.78% | 1.15x | ✅ | -| `hexbytes_to_0x_hex[b'\\x01'*100]` | 2.505234352196375e-05 | 2.281491113819892e-05 | 8.93% | 9.81% | 1.10x | ✅ | -| `hexbytes_to_0x_hex[b'\\x01'*2048]` | 0.00022631059530009648 | 0.0002224669378017651 | 1.70% | 1.73% | 1.02x | ✅ | -| `hexbytes_to_0x_hex[b'\\x01\\x02\\x03']` | 1.4786085845816331e-05 | 1.3126803894169558e-05 | 11.22% | 12.64% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[b'\\x10\\x20\\x30\\x40\\x50']` | 1.4913843934438887e-05 | 1.3274359173822132e-05 | 10.99% | 12.35% | 1.12x | ✅ | -| `hexbytes_to_0x_hex[b'\\x7f'*8]` | 1.5262065343332186e-05 | 1.353608851268777e-05 | 11.31% | 12.75% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[b'\\x80'*8]` | 1.520008250655406e-05 | 1.3569954390201206e-05 | 10.72% | 12.01% | 1.12x | ✅ | -| `hexbytes_to_0x_hex[b'\\xde\\xad\\xbe\\xef']` | 1.4997038638038299e-05 | 1.3236255990897042e-05 | 11.74% | 13.30% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[b'\\xff'*64]` | 2.066246939320439e-05 | 1.8998041323243628e-05 | 8.06% | 8.76% | 1.09x | ✅ | -| `hexbytes_to_0x_hex[b'a'*1024]` | 0.00012237528195335469 | 0.00012128273625304591 | 0.89% | 0.90% | 1.01x | ✅ | -| `hexbytes_to_0x_hex[b'abc']` | 1.4747148337076757e-05 | 1.298273879467231e-05 | 11.96% | 13.59% | 1.14x | ✅ | -| `hexbytes_to_0x_hex[long alternating]` | 0.0001221119719070192 | 0.0001222167249971143 | -0.09% | -0.09% | 1.00x | ❌ | -| `hexbytes_to_0x_hex[mixed pattern]` | 3.4987004287633314e-05 | 3.29332463847692e-05 | 5.87% | 6.24% | 1.06x | ✅ | -| `hexbytes_to_0x_hex[multiples of 0x10]` | 1.553288196947369e-05 | 1.3677506365198229e-05 | 11.94% | 13.57% | 1.14x | ✅ | -| `hexbytes_to_0x_hex[palindrome ascii]` | 1.5123135618074661e-05 | 1.3270538905469987e-05 | 12.25% | 13.96% | 1.14x | ✅ | -| `hexbytes_to_0x_hex[palindrome numeric]` | 1.4949788369861193e-05 | 1.3032741816815059e-05 | 12.82% | 14.71% | 1.15x | ✅ | -| `hexbytes_to_0x_hex[palindrome]` | 1.6399139115689817e-05 | 1.479890650660196e-05 | 9.76% | 10.81% | 1.11x | ✅ | -| `hexbytes_to_0x_hex[repeated 0-9]` | 2.5121145370014236e-05 | 2.2756887374277395e-05 | 9.41% | 10.39% | 1.10x | ✅ | -| `hexbytes_to_0x_hex[single 0xff]` | 1.4703480205614086e-05 | 1.285226228034348e-05 | 12.59% | 14.40% | 1.14x | ✅ | -| `hexbytes_to_0x_hex[single null byte]` | 1.474190925986605e-05 | 1.303333934140912e-05 | 11.59% | 13.11% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[two patterns]` | 2.114824611432251e-05 | 1.8769291415243983e-05 | 11.25% | 12.67% | 1.13x | ✅ | +| `hexbytes_getitem_index[-1-0-9]` | 2.53668441961707e-05 | 2.3413264874501565e-05 | 7.70% | 8.34% | 1.08x | ✅ | +| `hexbytes_getitem_index[-1-4-byte pattern]` | 2.535835343048155e-05 | 2.3435540755259298e-05 | 7.58% | 8.20% | 1.08x | ✅ | +| `hexbytes_getitem_index[-1-all byte values]` | 2.4958221880409567e-05 | 2.3677863369197956e-05 | 5.13% | 5.41% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-alternating 0x00/0xff]` | 2.5163843845729108e-05 | 2.353566140678483e-05 | 6.47% | 6.92% | 1.07x | ✅ | +| `hexbytes_getitem_index[-1-alternating 0xaa/0x55]` | 2.519895937420702e-05 | 2.337307511904421e-05 | 7.25% | 7.81% | 1.08x | ✅ | +| `hexbytes_getitem_index[-1-ascii sentence]` | 2.5139963742164812e-05 | 2.3755085289653583e-05 | 5.51% | 5.83% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x00'*32]` | 2.497491362862554e-05 | 2.35168749870477e-05 | 5.84% | 6.20% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x00\\xff\\x00\\xff']` | 2.4869859690358813e-05 | 2.346506659541226e-05 | 5.65% | 5.99% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x01'*100]` | 2.4964545274870565e-05 | 2.3563169256000957e-05 | 5.61% | 5.95% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x01'*2048]` | 2.5094981164728102e-05 | 2.3439062506274022e-05 | 6.60% | 7.06% | 1.07x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x01\\x02\\x03']` | 2.4836086957696625e-05 | 2.3506082188224788e-05 | 5.36% | 5.66% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.5175338649197923e-05 | 2.3468791715395408e-05 | 6.78% | 7.27% | 1.07x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x7f'*8]` | 2.5274735993702316e-05 | 2.3371489472293352e-05 | 7.53% | 8.14% | 1.08x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x80'*8]` | 2.4863772292065482e-05 | 2.358318074101012e-05 | 5.15% | 5.43% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'\\xde\\xad\\xbe\\xef']` | 2.4905947287175086e-05 | 2.350468987903225e-05 | 5.63% | 5.96% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-b'\\xff'*64]` | 2.48787054860981e-05 | 2.3447220223501416e-05 | 5.75% | 6.11% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-b'a'*1024]` | 2.488839303629594e-05 | 2.351828371347345e-05 | 5.51% | 5.83% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-b'abc']` | 2.4761393895366423e-05 | 2.345053470695019e-05 | 5.29% | 5.59% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-long alternating]` | 2.5225060229056707e-05 | 2.3518121164515742e-05 | 6.77% | 7.26% | 1.07x | ✅ | +| `hexbytes_getitem_index[-1-mixed pattern]` | 2.505665404345325e-05 | 2.3809426036493395e-05 | 4.98% | 5.24% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-multiples of 0x10]` | 2.507129268895164e-05 | 2.348729304614607e-05 | 6.32% | 6.74% | 1.07x | ✅ | +| `hexbytes_getitem_index[-1-palindrome ascii]` | 2.5016810147063034e-05 | 2.3714810607608998e-05 | 5.20% | 5.49% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-palindrome numeric]` | 2.5130096027823786e-05 | 2.36004006839955e-05 | 6.09% | 6.48% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-palindrome]` | 2.4882202812194837e-05 | 2.3454388286837558e-05 | 5.74% | 6.09% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-repeated 0-9]` | 2.4975481556897965e-05 | 2.3655581550371606e-05 | 5.28% | 5.58% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-two patterns]` | 2.494390757173162e-05 | 2.3739764633671874e-05 | 4.83% | 5.07% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-0-9]` | 2.3623205313857716e-05 | 2.278495145315533e-05 | 3.55% | 3.68% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-4-byte pattern]` | 2.3592226923938415e-05 | 2.2913188202596257e-05 | 2.88% | 2.96% | 1.03x | ✅ | +| `hexbytes_getitem_index[0-all byte values]` | 2.353546146993868e-05 | 2.3027643241948626e-05 | 2.16% | 2.21% | 1.02x | ✅ | +| `hexbytes_getitem_index[0-alternating 0x00/0xff]` | 2.3803651274509934e-05 | 2.2959521380607028e-05 | 3.55% | 3.68% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-alternating 0xaa/0x55]` | 2.3662002023504002e-05 | 2.287470271878636e-05 | 3.33% | 3.44% | 1.03x | ✅ | +| `hexbytes_getitem_index[0-ascii sentence]` | 2.404342992683894e-05 | 2.2918523555307587e-05 | 4.68% | 4.91% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-b'\\x00'*32]` | 2.3620474800843862e-05 | 2.3255366828781506e-05 | 1.55% | 1.57% | 1.02x | ✅ | +| `hexbytes_getitem_index[0-b'\\x00\\xff\\x00\\xff']` | 2.380044116267868e-05 | 2.2869957261726755e-05 | 3.91% | 4.07% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-b'\\x01'*100]` | 2.3802765781994403e-05 | 2.289171617527974e-05 | 3.83% | 3.98% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-b'\\x01'*2048]` | 2.3663042351062443e-05 | 2.2894168909310263e-05 | 3.25% | 3.36% | 1.03x | ✅ | +| `hexbytes_getitem_index[0-b'\\x01\\x02\\x03']` | 2.379856958728949e-05 | 2.3294773286290518e-05 | 2.12% | 2.16% | 1.02x | ✅ | +| `hexbytes_getitem_index[0-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3759822392784532e-05 | 2.299867629024606e-05 | 3.20% | 3.31% | 1.03x | ✅ | +| `hexbytes_getitem_index[0-b'\\x7f'*8]` | 2.378087902084635e-05 | 2.280057223543121e-05 | 4.12% | 4.30% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-b'\\x80'*8]` | 2.388418986514796e-05 | 2.296560626895673e-05 | 3.85% | 4.00% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-b'\\xde\\xad\\xbe\\xef']` | 2.3758930580768526e-05 | 2.273265518684773e-05 | 4.32% | 4.51% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-b'\\xff'*64]` | 2.3935800482942908e-05 | 2.3226224137519547e-05 | 2.96% | 3.06% | 1.03x | ✅ | +| `hexbytes_getitem_index[0-b'a'*1024]` | 2.3581879630163417e-05 | 2.3122420316036963e-05 | 1.95% | 1.99% | 1.02x | ✅ | +| `hexbytes_getitem_index[0-b'abc']` | 2.3648752674859415e-05 | 2.3129492756923876e-05 | 2.20% | 2.25% | 1.02x | ✅ | +| `hexbytes_getitem_index[0-long alternating]` | 2.35587776726874e-05 | 2.303869365794312e-05 | 2.21% | 2.26% | 1.02x | ✅ | +| `hexbytes_getitem_index[0-mixed pattern]` | 2.3744324666640247e-05 | 2.2765292041378557e-05 | 4.12% | 4.30% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-multiples of 0x10]` | 2.3616995152371287e-05 | 2.296720115405289e-05 | 2.75% | 2.83% | 1.03x | ✅ | +| `hexbytes_getitem_index[0-palindrome ascii]` | 2.3818153394882057e-05 | 2.2978367416656703e-05 | 3.53% | 3.65% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-palindrome numeric]` | 2.4150971098124356e-05 | 2.2989559430905114e-05 | 4.81% | 5.05% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-palindrome]` | 2.3899857899656665e-05 | 2.2954695384213256e-05 | 3.95% | 4.12% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-repeated 0-9]` | 2.391110775855449e-05 | 2.2924078834067346e-05 | 4.13% | 4.31% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-single 0xff]` | 2.3887542004513157e-05 | 2.2914153846016135e-05 | 4.07% | 4.25% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-single null byte]` | 2.3724544184474418e-05 | 2.2999193001892647e-05 | 3.06% | 3.15% | 1.03x | ✅ | +| `hexbytes_getitem_index[0-two patterns]` | 2.405482049242797e-05 | 2.2963841204917406e-05 | 4.54% | 4.75% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-0-9]` | 2.371156993893801e-05 | 2.2888825072187992e-05 | 3.47% | 3.59% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-4-byte pattern]` | 2.372896791003886e-05 | 2.269922830738383e-05 | 4.34% | 4.54% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-all byte values]` | 2.380317445569293e-05 | 2.2593638991616627e-05 | 5.08% | 5.35% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-alternating 0x00/0xff]` | 2.3699771774537176e-05 | 2.276535814154895e-05 | 3.94% | 4.10% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-alternating 0xaa/0x55]` | 2.377200881454919e-05 | 2.2754159891962368e-05 | 4.28% | 4.47% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-ascii sentence]` | 2.3756691697094774e-05 | 2.2663964665438177e-05 | 4.60% | 4.82% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-b'\\x00'*32]` | 2.3767305987420814e-05 | 2.3367393519318766e-05 | 1.68% | 1.71% | 1.02x | ✅ | +| `hexbytes_getitem_index[1-b'\\x00\\xff\\x00\\xff']` | 2.399809459218964e-05 | 2.3247274959597835e-05 | 3.13% | 3.23% | 1.03x | ✅ | +| `hexbytes_getitem_index[1-b'\\x01'*100]` | 2.3949388110192527e-05 | 2.275685947791296e-05 | 4.98% | 5.24% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-b'\\x01'*2048]` | 2.383678068567881e-05 | 2.2767386446981837e-05 | 4.49% | 4.70% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-b'\\x01\\x02\\x03']` | 2.4151543190830392e-05 | 2.3158983566504542e-05 | 4.11% | 4.29% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.4054796124526218e-05 | 2.2790557389935175e-05 | 5.26% | 5.55% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-b'\\x7f'*8]` | 2.4071587001955212e-05 | 2.2816616885874204e-05 | 5.21% | 5.50% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-b'\\x80'*8]` | 2.3944039128735428e-05 | 2.2609005310486514e-05 | 5.58% | 5.90% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-b'\\xde\\xad\\xbe\\xef']` | 2.4032881006856603e-05 | 2.3292751418470645e-05 | 3.08% | 3.18% | 1.03x | ✅ | +| `hexbytes_getitem_index[1-b'\\xff'*64]` | 2.404124401434776e-05 | 2.3398603101390204e-05 | 2.67% | 2.75% | 1.03x | ✅ | +| `hexbytes_getitem_index[1-b'a'*1024]` | 2.4008458806567057e-05 | 2.3175824511740988e-05 | 3.47% | 3.59% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-b'abc']` | 2.401755625128544e-05 | 2.279957423716565e-05 | 5.07% | 5.34% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-long alternating]` | 2.390790682817183e-05 | 2.27166546800126e-05 | 4.98% | 5.24% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-mixed pattern]` | 2.403059410918169e-05 | 2.2575590546631365e-05 | 6.05% | 6.45% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-multiples of 0x10]` | 2.382972400637899e-05 | 2.2745992149954278e-05 | 4.55% | 4.76% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-palindrome ascii]` | 2.3880851865731264e-05 | 2.2836056500781297e-05 | 4.38% | 4.58% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-palindrome numeric]` | 2.3856371347415718e-05 | 2.2845357952078757e-05 | 4.24% | 4.43% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-palindrome]` | 2.400405000773179e-05 | 2.323827245067462e-05 | 3.19% | 3.30% | 1.03x | ✅ | +| `hexbytes_getitem_index[1-repeated 0-9]` | 2.3790814298149022e-05 | 2.2569582550622386e-05 | 5.13% | 5.41% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-two patterns]` | 2.3824659296862453e-05 | 2.258859549653083e-05 | 5.19% | 5.47% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-0-9]` | 2.36092339109195e-05 | 2.2570396588956234e-05 | 4.40% | 4.60% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-4-byte pattern]` | 2.357672278301972e-05 | 2.2635781606367467e-05 | 3.99% | 4.16% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-all byte values]` | 2.3584692413796272e-05 | 2.2566128899089113e-05 | 4.32% | 4.51% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-alternating 0x00/0xff]` | 2.368017951183617e-05 | 2.249870697838234e-05 | 4.99% | 5.25% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-alternating 0xaa/0x55]` | 2.372379267755866e-05 | 2.2433916337710812e-05 | 5.44% | 5.75% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-ascii sentence]` | 2.3978481840717973e-05 | 2.244955862431443e-05 | 6.38% | 6.81% | 1.07x | ✅ | +| `hexbytes_getitem_index[2-b'\\x00'*32]` | 2.3532261105084142e-05 | 2.243633292164117e-05 | 4.66% | 4.88% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-b'\\x00\\xff\\x00\\xff']` | 2.3554293105139784e-05 | 2.2634609970217897e-05 | 3.90% | 4.06% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-b'\\x01'*100]` | 2.369131921251666e-05 | 2.2480415096570504e-05 | 5.11% | 5.39% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-b'\\x01'*2048]` | 2.3595932908404814e-05 | 2.2471037654105893e-05 | 4.77% | 5.01% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-b'\\x01\\x02\\x03']` | 2.3649134354149903e-05 | 2.2429308665822077e-05 | 5.16% | 5.44% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-b'\\x10\\x20\\x30\\x40\\x50']` | 2.378839341436541e-05 | 2.237026957968727e-05 | 5.96% | 6.34% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-b'\\x7f'*8]` | 2.3739667878615078e-05 | 2.2566223589040366e-05 | 4.94% | 5.20% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-b'\\x80'*8]` | 2.3669419777256432e-05 | 2.2140452039908372e-05 | 6.46% | 6.91% | 1.07x | ✅ | +| `hexbytes_getitem_index[2-b'\\xde\\xad\\xbe\\xef']` | 2.371907944013633e-05 | 2.249199152564079e-05 | 5.17% | 5.46% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-b'\\xff'*64]` | 2.3549165714029224e-05 | 2.2544291882540323e-05 | 4.27% | 4.46% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-b'a'*1024]` | 2.355785184616235e-05 | 2.5287046753424913e-05 | -7.34% | -6.84% | 0.93x | ❌ | +| `hexbytes_getitem_index[2-b'abc']` | 2.366162314470262e-05 | 2.2537453215408807e-05 | 4.75% | 4.99% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-long alternating]` | 2.3623186065576826e-05 | 2.236197064305323e-05 | 5.34% | 5.64% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-mixed pattern]` | 2.3644000555255504e-05 | 2.2518408857112463e-05 | 4.76% | 5.00% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-multiples of 0x10]` | 2.361604729333547e-05 | 2.238324815518049e-05 | 5.22% | 5.51% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-palindrome ascii]` | 2.35780447313011e-05 | 2.24834448495838e-05 | 4.64% | 4.87% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-palindrome numeric]` | 2.3669255904920467e-05 | 2.245882381639944e-05 | 5.11% | 5.39% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-palindrome]` | 2.358325843683949e-05 | 2.2542085972087914e-05 | 4.41% | 4.62% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-repeated 0-9]` | 2.372390646514084e-05 | 2.2348053569568903e-05 | 5.80% | 6.16% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-two patterns]` | 2.3826290877865748e-05 | 2.250825453079483e-05 | 5.53% | 5.86% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-0-9]` | 2.3828436793963676e-05 | 2.245046642878092e-05 | 5.78% | 6.14% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-4-byte pattern]` | 2.383707357871923e-05 | 2.238193558744374e-05 | 6.10% | 6.50% | 1.07x | ✅ | +| `hexbytes_getitem_index[3-all byte values]` | 2.4039200678842475e-05 | 2.2383740392175624e-05 | 6.89% | 7.40% | 1.07x | ✅ | +| `hexbytes_getitem_index[3-alternating 0x00/0xff]` | 2.408119728309102e-05 | 2.244337852294664e-05 | 6.80% | 7.30% | 1.07x | ✅ | +| `hexbytes_getitem_index[3-alternating 0xaa/0x55]` | 2.377580135795096e-05 | 2.2378248316989097e-05 | 5.88% | 6.25% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-ascii sentence]` | 2.3777009804800353e-05 | 2.249231187115984e-05 | 5.40% | 5.71% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'\\x00'*32]` | 2.3771741816576736e-05 | 2.2487086745067828e-05 | 5.40% | 5.71% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'\\x00\\xff\\x00\\xff']` | 2.4028378177412885e-05 | 2.2497653202927855e-05 | 6.37% | 6.80% | 1.07x | ✅ | +| `hexbytes_getitem_index[3-b'\\x01'*100]` | 2.4012534743073494e-05 | 2.2512114029033673e-05 | 6.25% | 6.66% | 1.07x | ✅ | +| `hexbytes_getitem_index[3-b'\\x01'*2048]` | 2.3823265405745716e-05 | 2.2397709815691707e-05 | 5.98% | 6.36% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'\\x10\\x20\\x30\\x40\\x50']` | 2.4122424451164747e-05 | 2.2357759145210398e-05 | 7.32% | 7.89% | 1.08x | ✅ | +| `hexbytes_getitem_index[3-b'\\x7f'*8]` | 2.4004183209680407e-05 | 2.256813102319778e-05 | 5.98% | 6.36% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'\\x80'*8]` | 2.403556503037755e-05 | 2.2407854120956383e-05 | 6.77% | 7.26% | 1.07x | ✅ | +| `hexbytes_getitem_index[3-b'\\xde\\xad\\xbe\\xef']` | 2.396372596112053e-05 | 2.241237758689271e-05 | 6.47% | 6.92% | 1.07x | ✅ | +| `hexbytes_getitem_index[3-b'\\xff'*64]` | 2.375108990738313e-05 | 2.2467664845483026e-05 | 5.40% | 5.71% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'a'*1024]` | 2.3712376080590073e-05 | 2.237604421211015e-05 | 5.64% | 5.97% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-long alternating]` | 2.3882535272038305e-05 | 2.2341917181914634e-05 | 6.45% | 6.90% | 1.07x | ✅ | +| `hexbytes_getitem_index[3-mixed pattern]` | 2.3807035451042842e-05 | 2.2720458408153257e-05 | 4.56% | 4.78% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-multiples of 0x10]` | 2.3850585115060407e-05 | 2.2308194495428264e-05 | 6.47% | 6.91% | 1.07x | ✅ | +| `hexbytes_getitem_index[3-palindrome ascii]` | 2.3976538207292815e-05 | 2.247994384341074e-05 | 6.24% | 6.66% | 1.07x | ✅ | +| `hexbytes_getitem_index[3-palindrome numeric]` | 2.386431892485114e-05 | 2.2388046078988552e-05 | 6.19% | 6.59% | 1.07x | ✅ | +| `hexbytes_getitem_index[3-palindrome]` | 2.3998119681394765e-05 | 2.2535705942361015e-05 | 6.09% | 6.49% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-repeated 0-9]` | 2.3391208440659576e-05 | 2.258605350409192e-05 | 3.44% | 3.56% | 1.04x | ✅ | +| `hexbytes_getitem_index[3-two patterns]` | 2.3643262767441073e-05 | 2.257997850333367e-05 | 4.50% | 4.71% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-0-9]` | 2.3756245437472095e-05 | 2.2485195569860916e-05 | 5.35% | 5.65% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-4-byte pattern]` | 2.386633909939304e-05 | 2.2535182490374337e-05 | 5.58% | 5.91% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-all byte values]` | 2.3781009070968543e-05 | 2.2563871719464805e-05 | 5.12% | 5.39% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-alternating 0x00/0xff]` | 2.3811430476572753e-05 | 2.2605342916820077e-05 | 5.07% | 5.34% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-alternating 0xaa/0x55]` | 2.3770265442833896e-05 | 2.253533894356181e-05 | 5.20% | 5.48% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-ascii sentence]` | 2.3669945165055705e-05 | 2.240485812856034e-05 | 5.34% | 5.65% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-b'\\x00'*32]` | 2.3587497994532377e-05 | 2.258220765017642e-05 | 4.26% | 4.45% | 1.04x | ✅ | +| `hexbytes_getitem_index[4-b'\\x01'*100]` | 2.380249738779756e-05 | 2.2567504761308617e-05 | 5.19% | 5.47% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-b'\\x01'*2048]` | 2.365415547517736e-05 | 2.235929858511821e-05 | 5.47% | 5.79% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-b'\\x10\\x20\\x30\\x40\\x50']` | 2.384046141423947e-05 | 2.2598431219666145e-05 | 5.21% | 5.50% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-b'\\x7f'*8]` | 2.362779096809785e-05 | 2.2351192832918548e-05 | 5.40% | 5.71% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-b'\\x80'*8]` | 2.3751705012549378e-05 | 2.248246869065687e-05 | 5.34% | 5.65% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-b'\\xff'*64]` | 2.348643920320551e-05 | 2.2586503318959275e-05 | 3.83% | 3.98% | 1.04x | ✅ | +| `hexbytes_getitem_index[4-b'a'*1024]` | 2.3804392589893877e-05 | 2.2383749124667584e-05 | 5.97% | 6.35% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-long alternating]` | 2.377498481236263e-05 | 2.2610584673160668e-05 | 4.90% | 5.15% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-mixed pattern]` | 2.364091288900887e-05 | 2.2511082345918043e-05 | 4.78% | 5.02% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-multiples of 0x10]` | 2.4387607646955965e-05 | 2.245998858468971e-05 | 7.90% | 8.58% | 1.09x | ✅ | +| `hexbytes_getitem_index[4-palindrome ascii]` | 2.357190918713692e-05 | 2.244823525416672e-05 | 4.77% | 5.01% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-palindrome numeric]` | 2.362264116513507e-05 | 2.2505083292646864e-05 | 4.73% | 4.97% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-palindrome]` | 2.3682015401749925e-05 | 2.252887480220006e-05 | 4.87% | 5.12% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-repeated 0-9]` | 2.3643763159370785e-05 | 2.2432700605115797e-05 | 5.12% | 5.40% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-two patterns]` | 2.365356288664023e-05 | 2.2422660161102335e-05 | 5.20% | 5.49% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-0-9]` | 2.375181559498149e-05 | 2.2496725323083268e-05 | 5.28% | 5.58% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-4-byte pattern]` | 2.3619463831396372e-05 | 2.2169952315289615e-05 | 6.14% | 6.54% | 1.07x | ✅ | +| `hexbytes_getitem_index[5-all byte values]` | 2.3482523131575337e-05 | 2.248026876382764e-05 | 4.27% | 4.46% | 1.04x | ✅ | +| `hexbytes_getitem_index[5-alternating 0x00/0xff]` | 2.3608352031633873e-05 | 2.2500713381869102e-05 | 4.69% | 4.92% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-alternating 0xaa/0x55]` | 2.3716020870394847e-05 | 2.243097248462823e-05 | 5.42% | 5.73% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-ascii sentence]` | 2.3545629894661186e-05 | 2.2329749916216746e-05 | 5.16% | 5.45% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-b'\\x00'*32]` | 2.3639480367010277e-05 | 2.2523698534708007e-05 | 4.72% | 4.95% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-b'\\x01'*100]` | 2.3746129928628982e-05 | 2.2436127952719607e-05 | 5.52% | 5.84% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-b'\\x01'*2048]` | 2.3654693905457973e-05 | 2.2432503125030924e-05 | 5.17% | 5.45% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-b'\\x7f'*8]` | 2.3798469782612525e-05 | 2.2460054949217077e-05 | 5.62% | 5.96% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-b'\\x80'*8]` | 2.371747597132707e-05 | 2.2490925560634133e-05 | 5.17% | 5.45% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-b'\\xff'*64]` | 2.371522237988283e-05 | 2.2449880101051846e-05 | 5.34% | 5.64% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-b'a'*1024]` | 2.366644006149346e-05 | 2.2269583752326842e-05 | 5.90% | 6.27% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-long alternating]` | 2.363342940670444e-05 | 2.2438871844331197e-05 | 5.05% | 5.32% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-mixed pattern]` | 2.368525560635718e-05 | 2.239454876736823e-05 | 5.45% | 5.76% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-multiples of 0x10]` | 2.3749044911890636e-05 | 2.2547582596510158e-05 | 5.06% | 5.33% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-palindrome ascii]` | 2.3522728714952302e-05 | 2.2354826109503575e-05 | 4.96% | 5.22% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-palindrome]` | 2.3721992976339844e-05 | 2.2399775045628947e-05 | 5.57% | 5.90% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-repeated 0-9]` | 2.352780515435566e-05 | 2.2271560132776767e-05 | 5.34% | 5.64% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-two patterns]` | 2.368942615045379e-05 | 2.2295442868052675e-05 | 5.88% | 6.25% | 1.06x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-0-9]` | 8.650172957526956e-05 | 6.098375413780732e-05 | 29.50% | 41.84% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-4-byte pattern]` | 8.654815186607393e-05 | 6.0697515790363374e-05 | 29.87% | 42.59% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-all byte values]` | 8.655806708583257e-05 | 6.088540537266686e-05 | 29.66% | 42.17% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-alternating 0x00/0xff]` | 8.722603723361744e-05 | 6.042848945803879e-05 | 30.72% | 44.35% | 1.44x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-alternating 0xaa/0x55]` | 8.695015349342915e-05 | 6.0999785165116677e-05 | 29.85% | 42.54% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-ascii sentence]` | 8.680302440795095e-05 | 6.111686388199567e-05 | 29.59% | 42.03% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'']` | 8.408548248236194e-05 | 5.7930825576887875e-05 | 31.10% | 45.15% | 1.45x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00'*32]` | 8.66974437249276e-05 | 6.137522656223519e-05 | 29.21% | 41.26% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00\\xff\\x00\\xff']` | 8.633107246174567e-05 | 6.006161007277399e-05 | 30.43% | 43.74% | 1.44x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*100]` | 8.576203560792851e-05 | 5.984399344558123e-05 | 30.22% | 43.31% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*2048]` | 8.677893501193669e-05 | 6.081469663559373e-05 | 29.92% | 42.69% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01\\x02\\x03']` | 8.687454394433717e-05 | 6.039779447584007e-05 | 30.48% | 43.84% | 1.44x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.679621940860932e-05 | 6.0958538292427005e-05 | 29.77% | 42.39% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x7f'*8]` | 9.181735137421331e-05 | 6.048643267764398e-05 | 34.12% | 51.80% | 1.52x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x80'*8]` | 8.713707239090026e-05 | 6.0264380344689674e-05 | 30.84% | 44.59% | 1.45x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\xde\\xad\\xbe\\xef']` | 8.624643122709693e-05 | 5.982634756700357e-05 | 30.63% | 44.16% | 1.44x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\xff'*64]` | 8.695304362358399e-05 | 6.074777602709766e-05 | 30.14% | 43.14% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'a'*1024]` | 8.675387953338203e-05 | 6.071932396803161e-05 | 30.01% | 42.88% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'abc']` | 8.748911967689668e-05 | 6.059107217773463e-05 | 30.74% | 44.39% | 1.44x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-long alternating]` | 8.636940474133197e-05 | 6.0723359804754805e-05 | 29.69% | 42.23% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-mixed pattern]` | 8.57677193303011e-05 | 6.0675963459967505e-05 | 29.26% | 41.35% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-multiples of 0x10]` | 8.628357814241968e-05 | 6.113147036672355e-05 | 29.15% | 41.14% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-palindrome ascii]` | 8.624592913755605e-05 | 6.0886753924109136e-05 | 29.40% | 41.65% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-palindrome numeric]` | 8.636620208880436e-05 | 6.057234352705215e-05 | 29.87% | 42.58% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-palindrome]` | 8.693523447684256e-05 | 6.0055930745449056e-05 | 30.92% | 44.76% | 1.45x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-repeated 0-9]` | 8.673578588887855e-05 | 6.082342654538515e-05 | 29.88% | 42.60% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-single 0xff]` | 8.531924908162597e-05 | 5.851533088291579e-05 | 31.42% | 45.81% | 1.46x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-single null byte]` | 8.464742564471074e-05 | 5.819731024681039e-05 | 31.25% | 45.45% | 1.45x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-two patterns]` | 8.653219679132671e-05 | 6.032846211734217e-05 | 30.28% | 43.44% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-0-9]` | 8.347743001811588e-05 | 6.263777931496986e-05 | 24.96% | 33.27% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-4-byte pattern]` | 8.346210534893569e-05 | 6.244654166994495e-05 | 25.18% | 33.65% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-all byte values]` | 8.367308282398218e-05 | 6.232831764365692e-05 | 25.51% | 34.25% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-alternating 0x00/0xff]` | 8.384125133980742e-05 | 6.226752786855615e-05 | 25.73% | 34.65% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-alternating 0xaa/0x55]` | 8.334512413009009e-05 | 6.222679951664572e-05 | 25.34% | 33.94% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-ascii sentence]` | 8.373242692776574e-05 | 6.22375460613441e-05 | 25.67% | 34.54% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'']` | 8.070018650644294e-05 | 5.874180827406877e-05 | 27.21% | 37.38% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x00'*32]` | 8.390465609349209e-05 | 6.162967905072766e-05 | 26.55% | 36.14% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x00\\xff\\x00\\xff']` | 8.351945734697131e-05 | 6.132746851893104e-05 | 26.57% | 36.19% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*100]` | 8.369569170855588e-05 | 6.173065071853307e-05 | 26.24% | 35.58% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*2048]` | 8.341322716089449e-05 | 6.25074442805649e-05 | 25.06% | 33.45% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x01\\x02\\x03']` | 8.377946675406143e-05 | 6.195123734924679e-05 | 26.05% | 35.23% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.321359434561078e-05 | 6.190091165067227e-05 | 25.61% | 34.43% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x7f'*8]` | 8.375787629304684e-05 | 6.153879546737606e-05 | 26.53% | 36.11% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x80'*8]` | 8.344926987134793e-05 | 6.1642614307153e-05 | 26.13% | 35.38% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\xde\\xad\\xbe\\xef']` | 8.353670002563623e-05 | 6.368312971554312e-05 | 23.77% | 31.18% | 1.31x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\xff'*64]` | 8.360700301555149e-05 | 6.17153039865693e-05 | 26.18% | 35.47% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'a'*1024]` | 8.405143734931213e-05 | 6.112323752789971e-05 | 27.28% | 37.51% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'abc']` | 8.4911593794863e-05 | 6.127828582921122e-05 | 27.83% | 38.57% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-long alternating]` | 8.407198601884133e-05 | 6.235596937075041e-05 | 25.83% | 34.83% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-mixed pattern]` | 8.363714556117435e-05 | 6.184957581807966e-05 | 26.05% | 35.23% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-multiples of 0x10]` | 8.374440480842824e-05 | 6.234690629555381e-05 | 25.55% | 34.32% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-palindrome ascii]` | 8.328323571730266e-05 | 6.189305205910975e-05 | 25.68% | 34.56% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-palindrome numeric]` | 8.355863467251337e-05 | 6.210091067207564e-05 | 25.68% | 34.55% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-palindrome]` | 8.38220569775427e-05 | 6.16011580777265e-05 | 26.51% | 36.07% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-repeated 0-9]` | 8.351505665894445e-05 | 6.192464612781977e-05 | 25.85% | 34.87% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-single 0xff]` | 8.189859491729671e-05 | 6.0364975812996094e-05 | 26.29% | 35.67% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-single null byte]` | 8.250422532977175e-05 | 6.055838242409959e-05 | 26.60% | 36.24% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-two patterns]` | 8.332521098694872e-05 | 6.1587678005899e-05 | 26.09% | 35.30% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-0-9]` | 8.281846959233638e-05 | 6.216785611605697e-05 | 24.93% | 33.22% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-4-byte pattern]` | 8.370647598551834e-05 | 6.270310982571674e-05 | 25.09% | 33.50% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-all byte values]` | 8.369744528396635e-05 | 6.221755629092244e-05 | 25.66% | 34.52% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-alternating 0x00/0xff]` | 8.367527636376351e-05 | 6.224474809726317e-05 | 25.61% | 34.43% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-alternating 0xaa/0x55]` | 8.315625258247382e-05 | 6.254615473285287e-05 | 24.78% | 32.95% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-ascii sentence]` | 8.344022092823084e-05 | 6.16268626369846e-05 | 26.14% | 35.40% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'']` | 8.06390057648166e-05 | 5.9348932300641786e-05 | 26.40% | 35.87% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x00'*32]` | 8.339223696943339e-05 | 6.143669704491595e-05 | 26.33% | 35.74% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x00\\xff\\x00\\xff']` | 8.386885385641777e-05 | 6.15049294071608e-05 | 26.67% | 36.36% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*100]` | 8.422635206423999e-05 | 6.188549317441164e-05 | 26.52% | 36.10% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*2048]` | 8.274081604483525e-05 | 6.228846565995126e-05 | 24.72% | 32.83% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x01\\x02\\x03']` | 8.297571943690846e-05 | 6.174009099033164e-05 | 25.59% | 34.40% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.31416126322104e-05 | 6.2315826108282e-05 | 25.05% | 33.42% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x7f'*8]` | 8.327559061347901e-05 | 6.265867738623011e-05 | 24.76% | 32.90% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x80'*8]` | 8.290784852972536e-05 | 6.215435579387524e-05 | 25.03% | 33.39% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\xde\\xad\\xbe\\xef']` | 8.427277763338647e-05 | 6.116550099024312e-05 | 27.42% | 37.78% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\xff'*64]` | 8.504464426330012e-05 | 6.164713295902746e-05 | 27.51% | 37.95% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'a'*1024]` | 8.356796357580826e-05 | 6.215825053896414e-05 | 25.62% | 34.44% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'abc']` | 8.338266576855385e-05 | 6.124230628699482e-05 | 26.55% | 36.15% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-long alternating]` | 8.339710557245608e-05 | 6.23145864836247e-05 | 25.28% | 33.83% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-mixed pattern]` | 8.301861977958666e-05 | 6.118064485283486e-05 | 26.30% | 35.69% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-multiples of 0x10]` | 8.294400297999244e-05 | 6.233892464875498e-05 | 24.84% | 33.05% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-palindrome ascii]` | 8.382989589643676e-05 | 6.247541568128054e-05 | 25.47% | 34.18% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-palindrome numeric]` | 8.376694766931585e-05 | 6.221021568357997e-05 | 25.73% | 34.65% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-palindrome]` | 8.357040109242445e-05 | 6.22277373739108e-05 | 25.54% | 34.30% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-repeated 0-9]` | 8.332963632340842e-05 | 6.165620689619066e-05 | 26.01% | 35.15% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-single 0xff]` | 8.013901333905286e-05 | 5.9489806498919005e-05 | 25.77% | 34.71% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-single null byte]` | 8.073017376156698e-05 | 5.992156694406824e-05 | 25.78% | 34.73% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-two patterns]` | 8.330717975715887e-05 | 6.1766522787849e-05 | 25.86% | 34.87% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-0-9]` | 8.495037724187647e-05 | 5.92803369682673e-05 | 30.22% | 43.30% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-4-byte pattern]` | 8.479440733633198e-05 | 6.217859101665102e-05 | 26.67% | 36.37% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-all byte values]` | 8.478827886179592e-05 | 6.194309746904687e-05 | 26.94% | 36.88% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-alternating 0x00/0xff]` | 8.303093360305436e-05 | 5.967514439140643e-05 | 28.13% | 39.14% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-alternating 0xaa/0x55]` | 8.323342385724614e-05 | 6.129594097797893e-05 | 26.36% | 35.79% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-ascii sentence]` | 8.23069845786339e-05 | 6.054087262196027e-05 | 26.45% | 35.95% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'']` | 7.954360946668255e-05 | 5.858778291251932e-05 | 26.35% | 35.77% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x00'*32]` | 8.357414752064403e-05 | 6.077208159697232e-05 | 27.28% | 37.52% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x00\\xff\\x00\\xff']` | 8.243541390908452e-05 | 6.0185564346194634e-05 | 26.99% | 36.97% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*100]` | 8.347207197112576e-05 | 6.081821888755038e-05 | 27.14% | 37.25% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*2048]` | 0.00010671023591249223 | 8.496250846319225e-05 | 20.38% | 25.60% | 1.26x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x01\\x02\\x03']` | 8.011366366173192e-05 | 5.8571394987221525e-05 | 26.89% | 36.78% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.167321945647962e-05 | 6.0099477158379935e-05 | 26.41% | 35.90% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x7f'*8]` | 8.249057593999691e-05 | 6.031262832709946e-05 | 26.89% | 36.77% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x80'*8]` | 8.236727332903603e-05 | 6.044663212469396e-05 | 26.61% | 36.26% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\xde\\xad\\xbe\\xef']` | 8.212531046215409e-05 | 6.292233490569667e-05 | 23.38% | 30.52% | 1.31x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\xff'*64]` | 8.343178070749147e-05 | 6.111144094279654e-05 | 26.75% | 36.52% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'a'*1024]` | 0.00010216713800364962 | 7.73090736284103e-05 | 24.33% | 32.15% | 1.32x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'abc']` | 8.012998955769856e-05 | 5.902858407211222e-05 | 26.33% | 35.75% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-long alternating]` | 0.00010132382240795733 | 7.829413126737977e-05 | 22.73% | 29.41% | 1.29x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-mixed pattern]` | 8.433880177153223e-05 | 6.199164797632242e-05 | 26.50% | 36.05% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-multiples of 0x10]` | 8.277429740080695e-05 | 5.9822030876207574e-05 | 27.73% | 38.37% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-palindrome ascii]` | 8.224426090673177e-05 | 6.0581855929546533e-05 | 26.34% | 35.76% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-palindrome numeric]` | 8.19361081889131e-05 | 6.056887853217517e-05 | 26.08% | 35.28% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-palindrome]` | 8.325052301223801e-05 | 6.0434268193049404e-05 | 27.41% | 37.75% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-repeated 0-9]` | 8.343757393323069e-05 | 6.167043470652948e-05 | 26.09% | 35.30% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-single 0xff]` | 7.967348344968058e-05 | 5.826896781177851e-05 | 26.87% | 36.73% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-single null byte]` | 7.894594186184669e-05 | 5.843741873608922e-05 | 25.98% | 35.09% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-two patterns]` | 8.323599017509566e-05 | 6.0857434145128495e-05 | 26.89% | 36.77% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-0-9]` | 8.155944391748565e-05 | 5.841610993450571e-05 | 28.38% | 39.62% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-4-byte pattern]` | 8.325088098791546e-05 | 6.0922193637762126e-05 | 26.82% | 36.65% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-all byte values]` | 8.406596145529075e-05 | 6.056686498948495e-05 | 27.95% | 38.80% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-alternating 0x00/0xff]` | 8.135988155939501e-05 | 5.9837766760429356e-05 | 26.45% | 35.97% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-alternating 0xaa/0x55]` | 8.154568505659007e-05 | 5.9462396282962866e-05 | 27.08% | 37.14% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-ascii sentence]` | 8.50714137786448e-05 | 5.950596871047226e-05 | 30.05% | 42.96% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'']` | 7.798281931560021e-05 | 5.655100017550528e-05 | 27.48% | 37.90% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x00'*32]` | 8.112376547452729e-05 | 5.950998375479925e-05 | 26.64% | 36.32% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x00\\xff\\x00\\xff']` | 8.09977367163334e-05 | 5.905084247873777e-05 | 27.10% | 37.17% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*100]` | 8.199109125474554e-05 | 6.0105909560529665e-05 | 26.69% | 36.41% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*2048]` | 0.0001077737582948519 | 8.330046157825986e-05 | 22.71% | 29.38% | 1.29x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x01\\x02\\x03']` | 8.132855820246344e-05 | 5.943881600013775e-05 | 26.92% | 36.83% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.118418806625616e-05 | 5.8723553594249096e-05 | 27.67% | 38.25% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x7f'*8]` | 8.184241032633548e-05 | 5.855686328276118e-05 | 28.45% | 39.77% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x80'*8]` | 8.066409683949013e-05 | 5.8622512146106755e-05 | 27.33% | 37.60% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\xde\\xad\\xbe\\xef']` | 8.092313100690317e-05 | 5.9576069137822156e-05 | 26.38% | 35.83% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\xff'*64]` | 8.140455967361234e-05 | 5.969788807184846e-05 | 26.67% | 36.36% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'a'*1024]` | 9.801818790108813e-05 | 7.634320618276988e-05 | 22.11% | 28.39% | 1.28x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'abc']` | 8.132678305498368e-05 | 5.8916078250798293e-05 | 27.56% | 38.04% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-long alternating]` | 0.00010028520977146443 | 7.687148002281858e-05 | 23.35% | 30.46% | 1.30x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-mixed pattern]` | 8.625321418224586e-05 | 6.0158489318827836e-05 | 30.25% | 43.38% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-multiples of 0x10]` | 8.148166472831242e-05 | 5.8459829250578385e-05 | 28.25% | 39.38% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-palindrome ascii]` | 8.09398165631258e-05 | 5.7947875038295735e-05 | 28.41% | 39.68% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-palindrome numeric]` | 8.171645700814158e-05 | 5.919894109426395e-05 | 27.56% | 38.04% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-palindrome]` | 8.200891921679035e-05 | 5.854704353029032e-05 | 28.61% | 40.07% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-repeated 0-9]` | 8.640292048809523e-05 | 6.002093847136316e-05 | 30.53% | 43.95% | 1.44x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-single 0xff]` | 7.814525946225656e-05 | 5.7172172978665314e-05 | 26.84% | 36.68% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-single null byte]` | 7.839417804731216e-05 | 5.7179271314254106e-05 | 27.06% | 37.10% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-two patterns]` | 8.65082128967642e-05 | 5.9101849921317355e-05 | 31.68% | 46.37% | 1.46x | ✅ | +| `hexbytes_new['']` | 7.187600653615649e-05 | 3.711547486813823e-05 | 48.36% | 93.66% | 1.94x | ✅ | +| `hexbytes_new['0x'+'00'*64]` | 9.206240200704286e-05 | 5.2103245493038935e-05 | 43.40% | 76.69% | 1.77x | ✅ | +| `hexbytes_new['0x'+'a'*128]` | 9.288672524004619e-05 | 5.0473638746859295e-05 | 45.66% | 84.03% | 1.84x | ✅ | +| `hexbytes_new['0x'+'ff'*32]` | 9.007900296835155e-05 | 4.716217676208771e-05 | 47.64% | 91.00% | 1.91x | ✅ | +| `hexbytes_new['0x']` | 8.045518460289151e-05 | 3.861820185475324e-05 | 52.00% | 108.33% | 2.08x | ✅ | +| `hexbytes_new['0x1234']` | 8.750064676925577e-05 | 4.530785432084637e-05 | 48.22% | 93.12% | 1.93x | ✅ | +| `hexbytes_new['0xCAFEBABE']` | 8.72686114034651e-05 | 4.520030779029282e-05 | 48.21% | 93.07% | 1.93x | ✅ | +| `hexbytes_new['0xabcdef']` | 8.829037389268557e-05 | 4.5439760549192184e-05 | 48.53% | 94.30% | 1.94x | ✅ | +| `hexbytes_new['0xdeadbeef']` | 8.83417690574794e-05 | 4.71968700122485e-05 | 46.57% | 87.18% | 1.87x | ✅ | +| `hexbytes_new['abc']` | 8.3434339468516e-05 | 4.7921453890622364e-05 | 42.56% | 74.11% | 1.74x | ✅ | +| `hexbytes_new['deadbeef']` | 7.78518392258758e-05 | 4.176653216963581e-05 | 46.35% | 86.40% | 1.86x | ✅ | +| `hexbytes_new[0-9]` | 4.247946230703372e-05 | 2.5707444494787636e-05 | 39.48% | 65.24% | 1.65x | ✅ | +| `hexbytes_new[0]` | 0.00012525747156400677 | 6.140135831176088e-05 | 50.98% | 104.00% | 2.04x | ✅ | +| `hexbytes_new[123456]` | 0.00013157387795480674 | 6.725765882009888e-05 | 48.88% | 95.63% | 1.96x | ✅ | +| `hexbytes_new[2**16]` | 0.00013014946772006348 | 6.628157546086792e-05 | 49.07% | 96.36% | 1.96x | ✅ | +| `hexbytes_new[2**256-1]` | 0.000130804479081109 | 7.326525896179238e-05 | 43.99% | 78.54% | 1.79x | ✅ | +| `hexbytes_new[2**32]` | 0.0001322340980528789 | 7.10278064584895e-05 | 46.29% | 86.17% | 1.86x | ✅ | +| `hexbytes_new[2**64]` | 0.00013066663475398585 | 7.378235262227734e-05 | 43.53% | 77.10% | 1.77x | ✅ | +| `hexbytes_new[2**8]` | 0.00012772239171880044 | 6.334276449565793e-05 | 50.41% | 101.64% | 2.02x | ✅ | +| `hexbytes_new[4-byte pattern]` | 4.278307265941352e-05 | 2.664515797530688e-05 | 37.72% | 60.57% | 1.61x | ✅ | +| `hexbytes_new[False]` | 5.847194414842383e-05 | 2.6911896901620587e-05 | 53.97% | 117.27% | 2.17x | ✅ | +| `hexbytes_new[True]` | 6.052389796573496e-05 | 2.70871850162114e-05 | 55.25% | 123.44% | 2.23x | ✅ | +| `hexbytes_new[all byte values]` | 4.2820605326811456e-05 | 2.663537239656793e-05 | 37.80% | 60.77% | 1.61x | ✅ | +| `hexbytes_new[alternating 0x00/0xff]` | 4.266438961870035e-05 | 2.6717302102540028e-05 | 37.38% | 59.69% | 1.60x | ✅ | +| `hexbytes_new[alternating 0xaa/0x55]` | 4.255269179195082e-05 | 2.6590495662978765e-05 | 37.51% | 60.03% | 1.60x | ✅ | +| `hexbytes_new[ascii sentence]` | 4.3063771164318944e-05 | 2.576563848161034e-05 | 40.17% | 67.14% | 1.67x | ✅ | +| `hexbytes_new[b'']` | 4.24356245267544e-05 | 2.5323248357974074e-05 | 40.33% | 67.58% | 1.68x | ✅ | +| `hexbytes_new[b'\\x00'*32]` | 4.221803066531191e-05 | 2.6143641472193286e-05 | 38.07% | 61.48% | 1.61x | ✅ | +| `hexbytes_new[b'\\x00\\xff\\x00\\xff']` | 4.283357416602382e-05 | 2.5747728147875673e-05 | 39.89% | 66.36% | 1.66x | ✅ | +| `hexbytes_new[b'\\x01'*100]` | 4.2853508345090514e-05 | 2.6331886606565568e-05 | 38.55% | 62.74% | 1.63x | ✅ | +| `hexbytes_new[b'\\x01'*2048]` | 5.5454500119809736e-05 | 3.8122476259708996e-05 | 31.25% | 45.46% | 1.45x | ✅ | +| `hexbytes_new[b'\\x01\\x02\\x03']` | 4.235633539674121e-05 | 2.567211245119113e-05 | 39.39% | 64.99% | 1.65x | ✅ | +| `hexbytes_new[b'\\x10\\x20\\x30\\x40\\x50']` | 4.266183021775265e-05 | 2.5766875610684125e-05 | 39.60% | 65.57% | 1.66x | ✅ | +| `hexbytes_new[b'\\x7f'*8]` | 4.2356976807499604e-05 | 2.5641798424890412e-05 | 39.46% | 65.19% | 1.65x | ✅ | +| `hexbytes_new[b'\\x80'*8]` | 4.2317650578542036e-05 | 2.569354480117202e-05 | 39.28% | 64.70% | 1.65x | ✅ | +| `hexbytes_new[b'\\xde\\xad\\xbe\\xef']` | 4.2855726291966505e-05 | 2.55794383141787e-05 | 40.31% | 67.54% | 1.68x | ✅ | +| `hexbytes_new[b'\\xff'*64]` | 4.323803890889476e-05 | 2.689161002363233e-05 | 37.81% | 60.79% | 1.61x | ✅ | +| `hexbytes_new[b'a'*1024]` | 5.0680143616162246e-05 | 3.294380154282919e-05 | 35.00% | 53.84% | 1.54x | ✅ | +| `hexbytes_new[b'abc']` | 4.249936921167797e-05 | 2.567838949433384e-05 | 39.58% | 65.51% | 1.66x | ✅ | +| `hexbytes_new[bytearray(0-9)]` | 6.95340656148973e-05 | 3.690396758999365e-05 | 46.93% | 88.42% | 1.88x | ✅ | +| `hexbytes_new[bytearray(4-byte pattern)]` | 6.893620238345855e-05 | 3.864214749635716e-05 | 43.95% | 78.40% | 1.78x | ✅ | +| `hexbytes_new[bytearray(all byte values)]` | 6.978425475018694e-05 | 3.8076533827136296e-05 | 45.44% | 83.27% | 1.83x | ✅ | +| `hexbytes_new[bytearray(alternating 0x00/0xff)]` | 7.05342091161263e-05 | 3.731451347916396e-05 | 47.10% | 89.03% | 1.89x | ✅ | +| `hexbytes_new[bytearray(alternating 0xaa/0x55)]` | 6.972757109291266e-05 | 3.7753417963987255e-05 | 45.86% | 84.69% | 1.85x | ✅ | +| `hexbytes_new[bytearray(ascii sentence)]` | 7.004178157605682e-05 | 3.7309781562102375e-05 | 46.73% | 87.73% | 1.88x | ✅ | +| `hexbytes_new[bytearray(b'')]` | 6.774213118041401e-05 | 3.565252826450098e-05 | 47.37% | 90.01% | 1.90x | ✅ | +| `hexbytes_new[bytearray(b'\\x00'*32)]` | 6.982226028093515e-05 | 3.739251585267e-05 | 46.45% | 86.73% | 1.87x | ✅ | +| `hexbytes_new[bytearray(b'\\x00\\xff\\x00\\xff')]` | 7.00530319886894e-05 | 3.704759989272136e-05 | 47.11% | 89.09% | 1.89x | ✅ | +| `hexbytes_new[bytearray(b'\\x01'*100)]` | 7.014248970754344e-05 | 3.7833264861284294e-05 | 46.06% | 85.40% | 1.85x | ✅ | +| `hexbytes_new[bytearray(b'\\x01'*2048)]` | 9.306611869754197e-05 | 5.7365737196283094e-05 | 38.36% | 62.23% | 1.62x | ✅ | +| `hexbytes_new[bytearray(b'\\x01\\x02\\x03')]` | 6.957723599392608e-05 | 3.716828414803076e-05 | 46.58% | 87.20% | 1.87x | ✅ | +| `hexbytes_new[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 6.985857173842472e-05 | 3.697112429371292e-05 | 47.08% | 88.95% | 1.89x | ✅ | +| `hexbytes_new[bytearray(b'\\x7f'*8)]` | 6.886472075759649e-05 | 3.67080863631717e-05 | 46.70% | 87.60% | 1.88x | ✅ | +| `hexbytes_new[bytearray(b'\\x80'*8)]` | 6.836995925780335e-05 | 3.673418363646719e-05 | 46.27% | 86.12% | 1.86x | ✅ | +| `hexbytes_new[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 6.977316258596596e-05 | 3.736879256038579e-05 | 46.44% | 86.72% | 1.87x | ✅ | +| `hexbytes_new[bytearray(b'\\xff'*64)]` | 6.905436959781151e-05 | 3.751937116435395e-05 | 45.67% | 84.05% | 1.84x | ✅ | +| `hexbytes_new[bytearray(b'a'*1024)]` | 8.49170586286655e-05 | 4.992648900847446e-05 | 41.21% | 70.08% | 1.70x | ✅ | +| `hexbytes_new[bytearray(b'abc')]` | 6.939131340608572e-05 | 3.746702444946466e-05 | 46.01% | 85.21% | 1.85x | ✅ | +| `hexbytes_new[bytearray(long alternating)]` | 8.540101875651676e-05 | 5.1030301839094406e-05 | 40.25% | 67.35% | 1.67x | ✅ | +| `hexbytes_new[bytearray(mixed pattern)]` | 6.934604263510807e-05 | 3.8522424972305306e-05 | 44.45% | 80.01% | 1.80x | ✅ | +| `hexbytes_new[bytearray(multiples of 0x10)]` | 6.968915095273908e-05 | 3.675937655322673e-05 | 47.25% | 89.58% | 1.90x | ✅ | +| `hexbytes_new[bytearray(palindrome ascii)]` | 6.91408236486941e-05 | 3.7248212033737376e-05 | 46.13% | 85.62% | 1.86x | ✅ | +| `hexbytes_new[bytearray(palindrome numeric)]` | 6.842819166789907e-05 | 3.7242241374008936e-05 | 45.57% | 83.74% | 1.84x | ✅ | +| `hexbytes_new[bytearray(palindrome)]` | 7.023977486929806e-05 | 3.7806998326036466e-05 | 46.17% | 85.79% | 1.86x | ✅ | +| `hexbytes_new[bytearray(repeated 0-9)]` | 6.931371402297584e-05 | 3.790549212782003e-05 | 45.31% | 82.86% | 1.83x | ✅ | +| `hexbytes_new[bytearray(single 0xff)]` | 6.960975131467602e-05 | 3.7378918695139616e-05 | 46.30% | 86.23% | 1.86x | ✅ | +| `hexbytes_new[bytearray(single null byte)]` | 6.984820125945704e-05 | 3.72764009342491e-05 | 46.63% | 87.38% | 1.87x | ✅ | +| `hexbytes_new[bytearray(two patterns)]` | 7.005848521657388e-05 | 3.7648937556502977e-05 | 46.26% | 86.08% | 1.86x | ✅ | +| `hexbytes_new[long alternating]` | 5.041383905470062e-05 | 3.316323955881613e-05 | 34.22% | 52.02% | 1.52x | ✅ | +| `hexbytes_new[memoryview(0-9)]` | 7.993717802173928e-05 | 4.351984597910141e-05 | 45.56% | 83.68% | 1.84x | ✅ | +| `hexbytes_new[memoryview(4-byte pattern)]` | 8.352614774876686e-05 | 4.422316659583628e-05 | 47.05% | 88.87% | 1.89x | ✅ | +| `hexbytes_new[memoryview(all byte values)]` | 8.345564610381085e-05 | 4.388410947792567e-05 | 47.42% | 90.17% | 1.90x | ✅ | +| `hexbytes_new[memoryview(alternating 0x00/0xff)]` | 8.440867945999549e-05 | 4.33951537777885e-05 | 48.59% | 94.51% | 1.95x | ✅ | +| `hexbytes_new[memoryview(alternating 0xaa/0x55)]` | 8.368116994070649e-05 | 4.3563243391193054e-05 | 47.94% | 92.09% | 1.92x | ✅ | +| `hexbytes_new[memoryview(ascii sentence)]` | 8.289401503155546e-05 | 4.401885198259139e-05 | 46.90% | 88.31% | 1.88x | ✅ | +| `hexbytes_new[memoryview(b'')]` | 8.029413703482374e-05 | 4.011780951087135e-05 | 50.04% | 100.15% | 2.00x | ✅ | +| `hexbytes_new[memoryview(b'\\x00'*32)]` | 8.350964295041347e-05 | 4.4240350142295186e-05 | 47.02% | 88.76% | 1.89x | ✅ | +| `hexbytes_new[memoryview(b'\\x00\\xff\\x00\\xff')]` | 8.406044602789914e-05 | 4.3761780192862345e-05 | 47.94% | 92.09% | 1.92x | ✅ | +| `hexbytes_new[memoryview(b'\\x01'*100)]` | 8.264734500859322e-05 | 4.3991571227754476e-05 | 46.77% | 87.87% | 1.88x | ✅ | +| `hexbytes_new[memoryview(b'\\x01'*2048)]` | 0.00010613367015182173 | 6.431892533048162e-05 | 39.40% | 65.01% | 1.65x | ✅ | +| `hexbytes_new[memoryview(b'\\x01\\x02\\x03')]` | 8.294821830597736e-05 | 4.3489006009257866e-05 | 47.57% | 90.73% | 1.91x | ✅ | +| `hexbytes_new[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 8.312858591154287e-05 | 4.3736373901983196e-05 | 47.39% | 90.07% | 1.90x | ✅ | +| `hexbytes_new[memoryview(b'\\x7f'*8)]` | 8.168060108472474e-05 | 4.378246870985592e-05 | 46.40% | 86.56% | 1.87x | ✅ | +| `hexbytes_new[memoryview(b'\\x80'*8)]` | 8.221612568256672e-05 | 4.3319689627420114e-05 | 47.31% | 89.79% | 1.90x | ✅ | +| `hexbytes_new[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 8.339326137282136e-05 | 4.350991168556694e-05 | 47.83% | 91.66% | 1.92x | ✅ | +| `hexbytes_new[memoryview(b'\\xff'*64)]` | 8.3448866238303e-05 | 4.377323179787343e-05 | 47.54% | 90.64% | 1.91x | ✅ | +| `hexbytes_new[memoryview(b'a'*1024)]` | 9.93522255642983e-05 | 5.763793244382201e-05 | 41.99% | 72.37% | 1.72x | ✅ | +| `hexbytes_new[memoryview(b'abc')]` | 8.279582990315901e-05 | 4.3699292957952794e-05 | 47.22% | 89.47% | 1.89x | ✅ | +| `hexbytes_new[memoryview(long alternating)]` | 9.797042880855122e-05 | 5.727185276186311e-05 | 41.54% | 71.06% | 1.71x | ✅ | +| `hexbytes_new[memoryview(mixed pattern)]` | 8.294948916234722e-05 | 4.3634997814454674e-05 | 47.40% | 90.10% | 1.90x | ✅ | +| `hexbytes_new[memoryview(multiples of 0x10)]` | 8.113670386445784e-05 | 4.368276405172693e-05 | 46.16% | 85.74% | 1.86x | ✅ | +| `hexbytes_new[memoryview(palindrome ascii)]` | 8.318195163770402e-05 | 4.372693834099705e-05 | 47.43% | 90.23% | 1.90x | ✅ | +| `hexbytes_new[memoryview(palindrome numeric)]` | 8.346909385540398e-05 | 4.30177468171375e-05 | 48.46% | 94.03% | 1.94x | ✅ | +| `hexbytes_new[memoryview(palindrome)]` | 8.259786381310108e-05 | 4.391911388514271e-05 | 46.83% | 88.07% | 1.88x | ✅ | +| `hexbytes_new[memoryview(repeated 0-9)]` | 8.363024013507729e-05 | 4.38891036496465e-05 | 47.52% | 90.55% | 1.91x | ✅ | +| `hexbytes_new[memoryview(single 0xff)]` | 8.297601004585901e-05 | 4.343621792841316e-05 | 47.65% | 91.03% | 1.91x | ✅ | +| `hexbytes_new[memoryview(single null byte)]` | 8.440343358252629e-05 | 4.348144784366797e-05 | 48.48% | 94.11% | 1.94x | ✅ | +| `hexbytes_new[memoryview(two patterns)]` | 8.328144363068986e-05 | 4.347906328271583e-05 | 47.79% | 91.54% | 1.92x | ✅ | +| `hexbytes_new[mixed pattern]` | 4.290169444402308e-05 | 2.6526878314507255e-05 | 38.17% | 61.73% | 1.62x | ✅ | +| `hexbytes_new[multiples of 0x10]` | 4.216837532021829e-05 | 2.571299488069995e-05 | 39.02% | 64.00% | 1.64x | ✅ | +| `hexbytes_new[palindrome ascii]` | 4.242144287999865e-05 | 2.558629913891683e-05 | 39.69% | 65.80% | 1.66x | ✅ | +| `hexbytes_new[palindrome numeric]` | 4.274285942543968e-05 | 2.5627114675728542e-05 | 40.04% | 66.79% | 1.67x | ✅ | +| `hexbytes_new[palindrome]` | 4.2815230589208924e-05 | 2.5476636915406403e-05 | 40.50% | 68.06% | 1.68x | ✅ | +| `hexbytes_new[repeated 0-9]` | 4.2892621845209835e-05 | 2.6765973572780606e-05 | 37.60% | 60.25% | 1.60x | ✅ | +| `hexbytes_new[single 0xff]` | 4.278613468882647e-05 | 2.537814231766721e-05 | 40.69% | 68.59% | 1.69x | ✅ | +| `hexbytes_new[single null byte]` | 4.225382451745097e-05 | 2.5383828314942248e-05 | 39.93% | 66.46% | 1.66x | ✅ | +| `hexbytes_new[two patterns]` | 4.261855565122866e-05 | 2.6281564098630062e-05 | 38.33% | 62.16% | 1.62x | ✅ | +| `hexbytes_repr[0-9]` | 2.9235195099396078e-05 | 1.5192418831954908e-05 | 48.03% | 92.43% | 1.92x | ✅ | +| `hexbytes_repr[4-byte pattern]` | 0.00012166829057769285 | 4.177817934053407e-05 | 65.66% | 191.22% | 2.91x | ✅ | +| `hexbytes_repr[all byte values]` | 0.00012185891279496494 | 4.158201804237389e-05 | 65.88% | 193.06% | 2.93x | ✅ | +| `hexbytes_repr[alternating 0x00/0xff]` | 4.896757154050744e-05 | 2.090918988359975e-05 | 57.30% | 134.19% | 2.34x | ✅ | +| `hexbytes_repr[alternating 0xaa/0x55]` | 4.885238825849154e-05 | 2.084735239593969e-05 | 57.33% | 134.33% | 2.34x | ✅ | +| `hexbytes_repr[ascii sentence]` | 4.046045765093335e-05 | 1.8324152105888238e-05 | 54.71% | 120.80% | 2.21x | ✅ | +| `hexbytes_repr[b'']` | 2.1336348748599003e-05 | 1.2710992406068083e-05 | 40.43% | 67.86% | 1.68x | ✅ | +| `hexbytes_repr[b'\\x00'*32]` | 3.626581562929964e-05 | 1.7346331632359716e-05 | 52.17% | 109.07% | 2.09x | ✅ | +| `hexbytes_repr[b'\\x00\\xff\\x00\\xff']` | 2.6329545310885394e-05 | 1.4631990799940066e-05 | 44.43% | 79.95% | 1.80x | ✅ | +| `hexbytes_repr[b'\\x01'*100]` | 6.110192516339711e-05 | 2.3903194237482907e-05 | 60.88% | 155.62% | 2.56x | ✅ | +| `hexbytes_repr[b'\\x01'*2048]` | 0.0007705367622723461 | 0.0002229412559143363 | 71.07% | 245.62% | 3.46x | ✅ | +| `hexbytes_repr[b'\\x01\\x02\\x03']` | 2.6246381327036725e-05 | 1.4624216051321857e-05 | 44.28% | 79.47% | 1.79x | ✅ | +| `hexbytes_repr[b'\\x10\\x20\\x30\\x40\\x50']` | 2.7180684022235857e-05 | 1.4654945777657106e-05 | 46.08% | 85.47% | 1.85x | ✅ | +| `hexbytes_repr[b'\\x7f'*8]` | 2.83725688870761e-05 | 1.4838732835059721e-05 | 47.70% | 91.21% | 1.91x | ✅ | +| `hexbytes_repr[b'\\x80'*8]` | 2.8371168889990704e-05 | 1.4968495903767416e-05 | 47.24% | 89.54% | 1.90x | ✅ | +| `hexbytes_repr[b'\\xde\\xad\\xbe\\xef']` | 2.6372344980089936e-05 | 1.4118381068646362e-05 | 46.47% | 86.79% | 1.87x | ✅ | +| `hexbytes_repr[b'\\xff'*64]` | 4.8871217549970734e-05 | 2.0931898431562216e-05 | 57.17% | 133.48% | 2.33x | ✅ | +| `hexbytes_repr[b'a'*1024]` | 0.00040188494961825803 | 0.00012222423753413447 | 69.59% | 228.81% | 3.29x | ✅ | +| `hexbytes_repr[b'abc']` | 2.618081919622833e-05 | 1.4455382837678395e-05 | 44.79% | 81.11% | 1.81x | ✅ | +| `hexbytes_repr[long alternating]` | 0.00039846481988195656 | 0.00012259284607957712 | 69.23% | 225.03% | 3.25x | ✅ | +| `hexbytes_repr[mixed pattern]` | 9.773845534306344e-05 | 3.44727481698714e-05 | 64.73% | 183.52% | 2.84x | ✅ | +| `hexbytes_repr[multiples of 0x10]` | 2.910638703253044e-05 | 1.5185007564003744e-05 | 47.83% | 91.68% | 1.92x | ✅ | +| `hexbytes_repr[palindrome ascii]` | 2.763814403639247e-05 | 1.4814648338874089e-05 | 46.40% | 86.56% | 1.87x | ✅ | +| `hexbytes_repr[palindrome numeric]` | 2.710101169346885e-05 | 1.4595762460786128e-05 | 46.14% | 85.68% | 1.86x | ✅ | +| `hexbytes_repr[palindrome]` | 3.180561352267103e-05 | 1.6305599635558327e-05 | 48.73% | 95.06% | 1.95x | ✅ | +| `hexbytes_repr[repeated 0-9]` | 6.099143514266719e-05 | 2.379154788816956e-05 | 60.99% | 156.36% | 2.56x | ✅ | +| `hexbytes_repr[single 0xff]` | 2.5713310750110952e-05 | 1.385824108065418e-05 | 46.10% | 85.55% | 1.86x | ✅ | +| `hexbytes_repr[single null byte]` | 2.5691125795742833e-05 | 1.4090990072244553e-05 | 45.15% | 82.32% | 1.82x | ✅ | +| `hexbytes_repr[two patterns]` | 4.8883160890551966e-05 | 2.0655052849650852e-05 | 57.75% | 136.66% | 2.37x | ✅ | +| `hexbytes_to_0x_hex[0-9]` | 1.572234359240731e-05 | 1.4107699023500995e-05 | 10.27% | 11.45% | 1.11x | ✅ | +| `hexbytes_to_0x_hex[4-byte pattern]` | 4.254590930665352e-05 | 4.024901817799001e-05 | 5.40% | 5.71% | 1.06x | ✅ | +| `hexbytes_to_0x_hex[all byte values]` | 4.2673582088771386e-05 | 4.0224402736325815e-05 | 5.74% | 6.09% | 1.06x | ✅ | +| `hexbytes_to_0x_hex[alternating 0x00/0xff]` | 2.069014657130875e-05 | 1.8770449533431738e-05 | 9.28% | 10.23% | 1.10x | ✅ | +| `hexbytes_to_0x_hex[alternating 0xaa/0x55]` | 2.099026827769922e-05 | 1.9087322691500777e-05 | 9.07% | 9.97% | 1.10x | ✅ | +| `hexbytes_to_0x_hex[ascii sentence]` | 1.8862271472816303e-05 | 1.6993767237708192e-05 | 9.91% | 11.00% | 1.11x | ✅ | +| `hexbytes_to_0x_hex[b'']` | 1.0093981001840318e-05 | 1.1241378596169978e-05 | -11.37% | -10.21% | 0.90x | ❌ | +| `hexbytes_to_0x_hex[b'\\x00'*32]` | 1.7499615810712146e-05 | 1.5613534737679413e-05 | 10.78% | 12.08% | 1.12x | ✅ | +| `hexbytes_to_0x_hex[b'\\x00\\xff\\x00\\xff']` | 1.5096251300732518e-05 | 1.3398327529298406e-05 | 11.25% | 12.67% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[b'\\x01'*100]` | 2.4994013817017275e-05 | 2.2420431870923486e-05 | 10.30% | 11.48% | 1.11x | ✅ | +| `hexbytes_to_0x_hex[b'\\x01'*2048]` | 0.00022327877667327242 | 0.00022155423743013973 | 0.77% | 0.78% | 1.01x | ✅ | +| `hexbytes_to_0x_hex[b'\\x01\\x02\\x03']` | 1.4949097440647257e-05 | 1.3136081912910963e-05 | 12.13% | 13.80% | 1.14x | ✅ | +| `hexbytes_to_0x_hex[b'\\x10\\x20\\x30\\x40\\x50']` | 1.5085284184727312e-05 | 1.3500232033819185e-05 | 10.51% | 11.74% | 1.12x | ✅ | +| `hexbytes_to_0x_hex[b'\\x7f'*8]` | 1.5477794584565958e-05 | 1.3837466020806903e-05 | 10.60% | 11.85% | 1.12x | ✅ | +| `hexbytes_to_0x_hex[b'\\x80'*8]` | 1.5341486495262567e-05 | 1.3867366264958598e-05 | 9.61% | 10.63% | 1.11x | ✅ | +| `hexbytes_to_0x_hex[b'\\xde\\xad\\xbe\\xef']` | 1.5073188332194708e-05 | 1.3349973535611335e-05 | 11.43% | 12.91% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[b'\\xff'*64]` | 2.0709806906741908e-05 | 1.8970930765454188e-05 | 8.40% | 9.17% | 1.09x | ✅ | +| `hexbytes_to_0x_hex[b'a'*1024]` | 0.00012273627537299432 | 0.000121509033672454 | 1.00% | 1.01% | 1.01x | ✅ | +| `hexbytes_to_0x_hex[b'abc']` | 1.4994784239154681e-05 | 1.3194834816697029e-05 | 12.00% | 13.64% | 1.14x | ✅ | +| `hexbytes_to_0x_hex[long alternating]` | 0.0001228400938215593 | 0.00012183138415757379 | 0.82% | 0.83% | 1.01x | ✅ | +| `hexbytes_to_0x_hex[mixed pattern]` | 3.4952237402039935e-05 | 3.298176539972781e-05 | 5.64% | 5.97% | 1.06x | ✅ | +| `hexbytes_to_0x_hex[multiples of 0x10]` | 1.5729951057286166e-05 | 1.400216052409979e-05 | 10.98% | 12.34% | 1.12x | ✅ | +| `hexbytes_to_0x_hex[palindrome ascii]` | 1.5332414275091718e-05 | 1.358913579331186e-05 | 11.37% | 12.83% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[palindrome numeric]` | 1.5168139790291177e-05 | 1.3474622081405412e-05 | 11.16% | 12.57% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[palindrome]` | 1.654937734377445e-05 | 1.4682665411405627e-05 | 11.28% | 12.71% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[repeated 0-9]` | 2.5044551873583642e-05 | 2.237342131255036e-05 | 10.67% | 11.94% | 1.12x | ✅ | +| `hexbytes_to_0x_hex[single 0xff]` | 1.4756711750680648e-05 | 1.2839414257926546e-05 | 12.99% | 14.93% | 1.15x | ✅ | +| `hexbytes_to_0x_hex[single null byte]` | 1.4763823544209967e-05 | 1.28110887486335e-05 | 13.23% | 15.24% | 1.15x | ✅ | +| `hexbytes_to_0x_hex[two patterns]` | 2.084530987872292e-05 | 1.8892028390652176e-05 | 9.37% | 10.34% | 1.10x | ✅ | From 431949f878e48972fdc6531a1d49e0fa76c7e38e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 9 Oct 2025 23:53:27 -0400 Subject: [PATCH 81/98] chore(deps): update dependency towncrier to v25 (#29) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 11dc299..35ddf31 100644 --- a/setup.py +++ b/setup.py @@ -25,7 +25,7 @@ "sphinx>=6.0.0", "sphinx-autobuild>=2021.3.14", "sphinx_rtd_theme>=1.0.0", - "towncrier>=24,<25", + "towncrier>=25,<26", ], "test": [ "eth_utils>=2.0.0", From a65db6a8aa83266e7a970fdf58937195f6403da5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 9 Oct 2025 23:55:17 -0400 Subject: [PATCH 82/98] chore(deps): update actions/setup-python action to v6 (#27) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/benchmark.yaml | 2 +- .github/workflows/codspeed.yaml | 2 +- .github/workflows/compile.yaml | 2 +- .github/workflows/release.yaml | 4 ++-- .github/workflows/tox.yaml | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml index b0bfb19..41861e9 100644 --- a/.github/workflows/benchmark.yaml +++ b/.github/workflows/benchmark.yaml @@ -28,7 +28,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: "3.13" cache: pip diff --git a/.github/workflows/codspeed.yaml b/.github/workflows/codspeed.yaml index 2343bfd..5442ec6 100644 --- a/.github/workflows/codspeed.yaml +++ b/.github/workflows/codspeed.yaml @@ -28,7 +28,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: "3.13" cache: pip diff --git a/.github/workflows/compile.yaml b/.github/workflows/compile.yaml index ab5d378..2509cfb 100644 --- a/.github/workflows/compile.yaml +++ b/.github/workflows/compile.yaml @@ -29,7 +29,7 @@ jobs: ref: ${{ github.head_ref }} - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: "3.14" cache: pip diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 28b1227..ab1804a 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -84,7 +84,7 @@ jobs: fetch-depth: 0 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v6 with: python-version: "3.11" cache: pip @@ -126,7 +126,7 @@ jobs: fetch-depth: 0 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v6 with: python-version: "3.11" cache: pip diff --git a/.github/workflows/tox.yaml b/.github/workflows/tox.yaml index bee84df..11ba434 100644 --- a/.github/workflows/tox.yaml +++ b/.github/workflows/tox.yaml @@ -41,7 +41,7 @@ jobs: - uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: ${{ matrix.python-version }} From 6682f795d7afe67fe56db653a14aee2af923bd1d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 9 Oct 2025 23:55:40 -0400 Subject: [PATCH 83/98] chore(deps): update actions/checkout action to v5 (#24) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/benchmark.yaml | 2 +- .github/workflows/codspeed.yaml | 2 +- .github/workflows/compile.yaml | 2 +- .github/workflows/release.yaml | 4 ++-- .github/workflows/tox.yaml | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml index 41861e9..95a97d4 100644 --- a/.github/workflows/benchmark.yaml +++ b/.github/workflows/benchmark.yaml @@ -26,7 +26,7 @@ jobs: name: Run Benchmarks runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up Python uses: actions/setup-python@v6 with: diff --git a/.github/workflows/codspeed.yaml b/.github/workflows/codspeed.yaml index 5442ec6..b813a82 100644 --- a/.github/workflows/codspeed.yaml +++ b/.github/workflows/codspeed.yaml @@ -26,7 +26,7 @@ jobs: name: Run CodSpeed Benchmarks runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up Python uses: actions/setup-python@v6 with: diff --git a/.github/workflows/compile.yaml b/.github/workflows/compile.yaml index 2509cfb..a39c0b2 100644 --- a/.github/workflows/compile.yaml +++ b/.github/workflows/compile.yaml @@ -23,7 +23,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v5 with: # Check out the PR branch ref: ${{ github.head_ref }} diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index ab1804a..2c99d41 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -79,7 +79,7 @@ jobs: steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v5 with: fetch-depth: 0 @@ -121,7 +121,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v5 with: fetch-depth: 0 diff --git a/.github/workflows/tox.yaml b/.github/workflows/tox.yaml index 11ba434..510fa4c 100644 --- a/.github/workflows/tox.yaml +++ b/.github/workflows/tox.yaml @@ -38,7 +38,7 @@ jobs: TOXENV: py${{ matrix.python-version }}-${{ matrix.jobtype }} TOX_RECREATE_FLAG: ${{ github.event_name == 'schedule' && '-r' || '' }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up Python uses: actions/setup-python@v6 From df492f18291b4359c52631a5fbb6b96bae4c208c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 10 Oct 2025 04:42:52 +0000 Subject: [PATCH 84/98] Update benchmark results [skip ci] --- benchmarks/results/_utils.md | 276 +++++----- benchmarks/results/main.md | 966 +++++++++++++++++------------------ 2 files changed, 621 insertions(+), 621 deletions(-) diff --git a/benchmarks/results/_utils.md b/benchmarks/results/_utils.md index 419649c..8934c61 100644 --- a/benchmarks/results/_utils.md +++ b/benchmarks/results/_utils.md @@ -1,141 +1,141 @@ -#### [faster_hexbytes._utils](https://github.com/BobTheBuidler/faster-hexbytes/blob/renovate/actions-github-script-8.x/faster_hexbytes/_utils.py) - [view benchmarks](https://github.com/BobTheBuidler/faster-hexbytes/blob/renovate/actions-github-script-8.x/benchmarks/test__utils_benchmarks.py) +#### [faster_hexbytes._utils](https://github.com/BobTheBuidler/faster-hexbytes/blob/master/faster_hexbytes/_utils.py) - [view benchmarks](https://github.com/BobTheBuidler/faster-hexbytes/blob/master/benchmarks/test__utils_benchmarks.py) | Function | Reference Mean | Faster Mean | % Change | Speedup (%) | x Faster | Faster | |----------|---------------|-------------|----------|-------------|----------|--------| -| `hexstr_to_bytes['']` | 1.8124415594193002e-05 | 1.0904661620156523e-05 | 39.83% | 66.21% | 1.66x | ✅ | -| `hexstr_to_bytes['0x'+'0'*128]` | 3.461037476726175e-05 | 2.1129320847518574e-05 | 38.95% | 63.80% | 1.64x | ✅ | -| `hexstr_to_bytes['0x'+'00'*64]` | 3.424944613972551e-05 | 2.125609251177328e-05 | 37.94% | 61.13% | 1.61x | ✅ | -| `hexstr_to_bytes['0x'+'00ff'*16]` | 3.14637119816589e-05 | 1.826812321078144e-05 | 41.94% | 72.23% | 1.72x | ✅ | -| `hexstr_to_bytes['0x'+'0123456789abcdef'*8]` | 3.4301829369626195e-05 | 2.1026700466173e-05 | 38.70% | 63.13% | 1.63x | ✅ | -| `hexstr_to_bytes['0x'+'1'*64]` | 3.107149861609451e-05 | 1.829940940686309e-05 | 41.11% | 69.80% | 1.70x | ✅ | -| `hexstr_to_bytes['0x'+'1234567890abcdef'*8]` | 3.443159690446326e-05 | 2.106279711560341e-05 | 38.83% | 63.47% | 1.63x | ✅ | -| `hexstr_to_bytes['0x'+'a'*128]` | 3.407585782810596e-05 | 2.1049593615825567e-05 | 38.23% | 61.88% | 1.62x | ✅ | -| `hexstr_to_bytes['0x'+'a1b2c3d4'*8]` | 3.095164395793694e-05 | 1.852886688723396e-05 | 40.14% | 67.05% | 1.67x | ✅ | -| `hexstr_to_bytes['0x'+'b'*2048]` | 0.0001378817580029827 | 0.00011793191122501251 | 14.47% | 16.92% | 1.17x | ✅ | -| `hexstr_to_bytes['0x'+'badc0ffee0ddf00d'*4]` | 3.113129223236492e-05 | 1.798108955524942e-05 | 42.24% | 73.13% | 1.73x | ✅ | -| `hexstr_to_bytes['0x'+'beef'*16]` | 3.1214180727300234e-05 | 1.819038291592611e-05 | 41.72% | 71.60% | 1.72x | ✅ | -| `hexstr_to_bytes['0x'+'c'*1024]` | 8.959297601552868e-05 | 7.046603376093888e-05 | 21.35% | 27.14% | 1.27x | ✅ | -| `hexstr_to_bytes['0x'+'cafebabe'*8]` | 3.1174512773634605e-05 | 1.8121221793439915e-05 | 41.87% | 72.03% | 1.72x | ✅ | -| `hexstr_to_bytes['0x'+'d'*512]` | 5.713674559500932e-05 | 4.141002684173219e-05 | 27.52% | 37.98% | 1.38x | ✅ | -| `hexstr_to_bytes['0x'+'dead'*16]` | 3.125661102152253e-05 | 1.8283453307140608e-05 | 41.51% | 70.96% | 1.71x | ✅ | -| `hexstr_to_bytes['0x'+'e'*256]` | 4.3665370351745734e-05 | 2.772146247640221e-05 | 36.51% | 57.51% | 1.58x | ✅ | -| `hexstr_to_bytes['0x'+'f'*128]` | 3.439671539737619e-05 | 2.1184173884033463e-05 | 38.41% | 62.37% | 1.62x | ✅ | -| `hexstr_to_bytes['0x'+'f'*64]` | 3.106570710008687e-05 | 1.837128102705244e-05 | 40.86% | 69.10% | 1.69x | ✅ | -| `hexstr_to_bytes['0x'+'facefeed'*8]` | 3.1335377984544845e-05 | 1.852401247252099e-05 | 40.88% | 69.16% | 1.69x | ✅ | -| `hexstr_to_bytes['0x'+'ff'*32]` | 3.265135578810513e-05 | 1.870726038254785e-05 | 42.71% | 74.54% | 1.75x | ✅ | -| `hexstr_to_bytes['0x'+'ff00'*16]` | 3.115195607386426e-05 | 1.8272083605954724e-05 | 41.35% | 70.49% | 1.70x | ✅ | -| `hexstr_to_bytes['0x']` | 2.2640014719060325e-05 | 1.0509015936586586e-05 | 53.58% | 115.43% | 2.15x | ✅ | -| `hexstr_to_bytes['0x0']` | 3.129114082719202e-05 | 1.8431837867177356e-05 | 41.10% | 69.77% | 1.70x | ✅ | -| `hexstr_to_bytes['0x1']` | 3.1297085450860426e-05 | 1.8118652890937777e-05 | 42.11% | 72.73% | 1.73x | ✅ | -| `hexstr_to_bytes['0x1234']` | 2.8952029365971745e-05 | 1.641004746054927e-05 | 43.32% | 76.43% | 1.76x | ✅ | -| `hexstr_to_bytes['0xCAFEBABE']` | 2.8720263627828463e-05 | 1.6296200143728208e-05 | 43.26% | 76.24% | 1.76x | ✅ | -| `hexstr_to_bytes['0xabcdef']` | 2.8903063679976844e-05 | 1.619361625578212e-05 | 43.97% | 78.48% | 1.78x | ✅ | -| `hexstr_to_bytes['0xdeadbeef']` | 2.8634332387601415e-05 | 1.6098559433880457e-05 | 43.78% | 77.87% | 1.78x | ✅ | -| `hexstr_to_bytes['deadbeef']` | 2.185004019360481e-05 | 1.4251437711004025e-05 | 34.78% | 53.32% | 1.53x | ✅ | -| `to_bytes['']` | 2.812549529180342e-05 | 1.1898045600860583e-05 | 57.70% | 136.39% | 2.36x | ✅ | -| `to_bytes['0x'+'00'*64]` | 4.74468514670161e-05 | 2.2909669916156342e-05 | 51.72% | 107.10% | 2.07x | ✅ | -| `to_bytes['0x'+'a'*128]` | 4.660869199340389e-05 | 2.2474811233651162e-05 | 51.78% | 107.38% | 2.07x | ✅ | -| `to_bytes['0x'+'ff'*32]` | 4.3248801134162674e-05 | 1.9868462380729035e-05 | 54.06% | 117.68% | 2.18x | ✅ | -| `to_bytes['0x']` | 3.4213521177193246e-05 | 1.227312186150391e-05 | 64.13% | 178.77% | 2.79x | ✅ | -| `to_bytes['0x1234']` | 4.032078188047607e-05 | 1.7503827844521593e-05 | 56.59% | 130.35% | 2.30x | ✅ | -| `to_bytes['0xCAFEBABE']` | 4.107951231877946e-05 | 1.7601052307865833e-05 | 57.15% | 133.39% | 2.33x | ✅ | -| `to_bytes['0xabcdef']` | 4.056854723070718e-05 | 1.753589014087856e-05 | 56.77% | 131.35% | 2.31x | ✅ | -| `to_bytes['0xdeadbeef']` | 4.088538557559404e-05 | 1.753740202172572e-05 | 57.11% | 133.13% | 2.33x | ✅ | -| `to_bytes['abc']` | 3.6492598257235935e-05 | 1.9280183672498047e-05 | 47.17% | 89.28% | 1.89x | ✅ | -| `to_bytes['deadbeef']` | 3.229455496044274e-05 | 1.5332809239127208e-05 | 52.52% | 110.62% | 2.11x | ✅ | -| `to_bytes[0-9]` | 6.3820271325570705e-06 | 3.56419442308223e-06 | 44.15% | 79.06% | 1.79x | ✅ | -| `to_bytes[0]` | 7.378896543306954e-05 | 3.086665599617425e-05 | 58.17% | 139.06% | 2.39x | ✅ | -| `to_bytes[123456]` | 8.117972018166943e-05 | 3.40141455986444e-05 | 58.10% | 138.66% | 2.39x | ✅ | -| `to_bytes[2**16]` | 7.86488941189555e-05 | 3.5532566839829765e-05 | 54.82% | 121.34% | 2.21x | ✅ | -| `to_bytes[2**256-1]` | 7.763369307425991e-05 | 3.9155600505948956e-05 | 49.56% | 98.27% | 1.98x | ✅ | -| `to_bytes[2**32]` | 8.15170273122882e-05 | 3.825155140331261e-05 | 53.08% | 113.11% | 2.13x | ✅ | -| `to_bytes[2**64]` | 8.080397976089835e-05 | 3.948997180701674e-05 | 51.13% | 104.62% | 2.05x | ✅ | -| `to_bytes[2**8]` | 7.860562230390437e-05 | 3.4200113778783234e-05 | 56.49% | 129.84% | 2.30x | ✅ | -| `to_bytes[4-byte pattern]` | 6.3070560132673335e-06 | 3.5635348865018365e-06 | 43.50% | 76.99% | 1.77x | ✅ | -| `to_bytes[False]` | 2.18803952190653e-05 | 4.080724728451022e-06 | 81.35% | 436.19% | 5.36x | ✅ | -| `to_bytes[True]` | 2.2072987613346425e-05 | 3.970612544086548e-06 | 82.01% | 455.91% | 5.56x | ✅ | -| `to_bytes[all byte values]` | 6.425556577839551e-06 | 3.56284966024529e-06 | 44.55% | 80.35% | 1.80x | ✅ | -| `to_bytes[alternating 0x00/0xff]` | 6.438497873167921e-06 | 3.5629107937285926e-06 | 44.66% | 80.71% | 1.81x | ✅ | -| `to_bytes[alternating 0xaa/0x55]` | 6.248744247375196e-06 | 3.61756732840449e-06 | 42.11% | 72.73% | 1.73x | ✅ | -| `to_bytes[ascii sentence]` | 6.331586900042409e-06 | 3.4799640373003266e-06 | 45.04% | 81.94% | 1.82x | ✅ | -| `to_bytes[b'']` | 6.18469245775894e-06 | 3.5935951792805485e-06 | 41.90% | 72.10% | 1.72x | ✅ | -| `to_bytes[b'\\x00'*32]` | 6.3653491591711405e-06 | 3.7132473702700544e-06 | 41.66% | 71.42% | 1.71x | ✅ | -| `to_bytes[b'\\x00\\xff\\x00\\xff']` | 6.3883871457758305e-06 | 3.619171122243347e-06 | 43.35% | 76.52% | 1.77x | ✅ | -| `to_bytes[b'\\x01'*100]` | 6.406475978190915e-06 | 3.5898990138473106e-06 | 43.96% | 78.46% | 1.78x | ✅ | -| `to_bytes[b'\\x01'*2048]` | 6.40718845057779e-06 | 3.561329205682666e-06 | 44.42% | 79.91% | 1.80x | ✅ | -| `to_bytes[b'\\x01\\x02\\x03']` | 6.330765882607984e-06 | 3.446972706677896e-06 | 45.55% | 83.66% | 1.84x | ✅ | -| `to_bytes[b'\\x10\\x20\\x30\\x40\\x50']` | 6.3848693199763984e-06 | 3.4769837155122104e-06 | 45.54% | 83.63% | 1.84x | ✅ | -| `to_bytes[b'\\x7f'*8]` | 6.39512826589809e-06 | 3.5774595760181493e-06 | 44.06% | 78.76% | 1.79x | ✅ | -| `to_bytes[b'\\x80'*8]` | 6.312106105896735e-06 | 3.4718555530763712e-06 | 45.00% | 81.81% | 1.82x | ✅ | -| `to_bytes[b'\\xde\\xad\\xbe\\xef']` | 6.410361539221882e-06 | 3.470603377519963e-06 | 45.86% | 84.70% | 1.85x | ✅ | -| `to_bytes[b'\\xff'*64]` | 6.397411002507603e-06 | 3.6559748843013563e-06 | 42.85% | 74.99% | 1.75x | ✅ | -| `to_bytes[b'a'*1024]` | 6.4376251880218936e-06 | 3.72006700859032e-06 | 42.21% | 73.05% | 1.73x | ✅ | -| `to_bytes[b'abc']` | 5.614521456449626e-06 | 3.7125952694548096e-06 | 33.88% | 51.23% | 1.51x | ✅ | -| `to_bytes[bytearray(0-9)]` | 2.8575776017566446e-05 | 1.409984061822055e-05 | 50.66% | 102.67% | 2.03x | ✅ | -| `to_bytes[bytearray(4-byte pattern)]` | 2.8548682432970636e-05 | 1.4050900533961933e-05 | 50.78% | 103.18% | 2.03x | ✅ | -| `to_bytes[bytearray(all byte values)]` | 2.8719889054672954e-05 | 1.3891057420308483e-05 | 51.63% | 106.75% | 2.07x | ✅ | -| `to_bytes[bytearray(alternating 0x00/0xff)]` | 2.7912493588502274e-05 | 1.4167355601596976e-05 | 49.24% | 97.02% | 1.97x | ✅ | -| `to_bytes[bytearray(alternating 0xaa/0x55)]` | 2.8326307925650042e-05 | 1.4093991056752728e-05 | 50.24% | 100.98% | 2.01x | ✅ | -| `to_bytes[bytearray(ascii sentence)]` | 2.8232019744849978e-05 | 1.41366538407838e-05 | 49.93% | 99.71% | 2.00x | ✅ | -| `to_bytes[bytearray(b'')]` | 2.5995137317288184e-05 | 1.2485857310126048e-05 | 51.97% | 108.20% | 2.08x | ✅ | -| `to_bytes[bytearray(b'\\x00'*32)]` | 2.8882929098626047e-05 | 1.3942109776531222e-05 | 51.73% | 107.16% | 2.07x | ✅ | -| `to_bytes[bytearray(b'\\x00\\xff\\x00\\xff')]` | 2.8036222756239304e-05 | 1.40170580549725e-05 | 50.00% | 100.02% | 2.00x | ✅ | -| `to_bytes[bytearray(b'\\x01'*100)]` | 2.8458436041914592e-05 | 1.4077833631263536e-05 | 50.53% | 102.15% | 2.02x | ✅ | -| `to_bytes[bytearray(b'\\x01'*2048)]` | 3.5420650975416174e-05 | 1.9744660948948925e-05 | 44.26% | 79.39% | 1.79x | ✅ | -| `to_bytes[bytearray(b'\\x01\\x02\\x03')]` | 2.8256859125405198e-05 | 1.404588996721642e-05 | 50.29% | 101.18% | 2.01x | ✅ | -| `to_bytes[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 2.8553528083568166e-05 | 1.410513804436721e-05 | 50.60% | 102.43% | 2.02x | ✅ | -| `to_bytes[bytearray(b'\\x7f'*8)]` | 2.8540953034627132e-05 | 1.3896716026700565e-05 | 51.31% | 105.38% | 2.05x | ✅ | -| `to_bytes[bytearray(b'\\x80'*8)]` | 2.8527853827624888e-05 | 1.4029064681490501e-05 | 50.82% | 103.35% | 2.03x | ✅ | -| `to_bytes[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 2.7304080561846536e-05 | 1.4003891750797037e-05 | 48.71% | 94.97% | 1.95x | ✅ | -| `to_bytes[bytearray(b'\\xff'*64)]` | 2.8312703601105837e-05 | 1.3905395075939782e-05 | 50.89% | 103.61% | 2.04x | ✅ | -| `to_bytes[bytearray(b'a'*1024)]` | 3.534344601738554e-05 | 1.8841641447141186e-05 | 46.69% | 87.58% | 1.88x | ✅ | -| `to_bytes[bytearray(b'abc')]` | 2.8497185047004915e-05 | 1.3961511360169577e-05 | 51.01% | 104.11% | 2.04x | ✅ | -| `to_bytes[bytearray(long alternating)]` | 3.469598647717626e-05 | 1.8784981312333284e-05 | 45.86% | 84.70% | 1.85x | ✅ | -| `to_bytes[bytearray(mixed pattern)]` | 2.8730524264148825e-05 | 1.4147697415851568e-05 | 50.76% | 103.08% | 2.03x | ✅ | -| `to_bytes[bytearray(multiples of 0x10)]` | 2.857056297329499e-05 | 1.3946992396987329e-05 | 51.18% | 104.85% | 2.05x | ✅ | -| `to_bytes[bytearray(palindrome ascii)]` | 2.8270031604625145e-05 | 1.3951360047813264e-05 | 50.65% | 102.63% | 2.03x | ✅ | -| `to_bytes[bytearray(palindrome numeric)]` | 2.8506406374051615e-05 | 1.390990522559339e-05 | 51.20% | 104.94% | 2.05x | ✅ | -| `to_bytes[bytearray(palindrome)]` | 2.83093539457428e-05 | 1.4043033851846867e-05 | 50.39% | 101.59% | 2.02x | ✅ | -| `to_bytes[bytearray(repeated 0-9)]` | 2.8584350961590765e-05 | 1.4217020697774255e-05 | 50.26% | 101.06% | 2.01x | ✅ | -| `to_bytes[bytearray(single 0xff)]` | 2.8300590317130925e-05 | 1.399619446380215e-05 | 50.54% | 102.20% | 2.02x | ✅ | -| `to_bytes[bytearray(single null byte)]` | 2.8485679642830373e-05 | 1.384904329959508e-05 | 51.38% | 105.69% | 2.06x | ✅ | -| `to_bytes[bytearray(two patterns)]` | 2.8426875389731025e-05 | 1.390360642070303e-05 | 51.09% | 104.46% | 2.04x | ✅ | -| `to_bytes[long alternating]` | 6.446457502980097e-06 | 3.3984676919894954e-06 | 47.28% | 89.69% | 1.90x | ✅ | -| `to_bytes[memoryview(0-9)]` | 4.059462627281006e-05 | 1.687658756585133e-05 | 58.43% | 140.54% | 2.41x | ✅ | -| `to_bytes[memoryview(4-byte pattern)]` | 4.206205341453685e-05 | 1.7808344897549437e-05 | 57.66% | 136.19% | 2.36x | ✅ | -| `to_bytes[memoryview(all byte values)]` | 4.168191685335384e-05 | 1.7729107067572946e-05 | 57.47% | 135.10% | 2.35x | ✅ | -| `to_bytes[memoryview(alternating 0x00/0xff)]` | 3.8218544972340955e-05 | 1.671229346292034e-05 | 56.27% | 128.69% | 2.29x | ✅ | -| `to_bytes[memoryview(alternating 0xaa/0x55)]` | 4.0883733941815785e-05 | 1.6881265026403933e-05 | 58.71% | 142.18% | 2.42x | ✅ | -| `to_bytes[memoryview(ascii sentence)]` | 4.2138142089029604e-05 | 1.7185405663824762e-05 | 59.22% | 145.20% | 2.45x | ✅ | -| `to_bytes[memoryview(b'')]` | 3.9543269547050625e-05 | 1.5001783576501143e-05 | 62.06% | 163.59% | 2.64x | ✅ | -| `to_bytes[memoryview(b'\\x00'*32)]` | 4.1178667870955085e-05 | 1.684628598070011e-05 | 59.09% | 144.44% | 2.44x | ✅ | -| `to_bytes[memoryview(b'\\x00\\xff\\x00\\xff')]` | 4.150658978546566e-05 | 1.6678139271097556e-05 | 59.82% | 148.87% | 2.49x | ✅ | -| `to_bytes[memoryview(b'\\x01'*100)]` | 4.163615550647024e-05 | 1.730053822436118e-05 | 58.45% | 140.66% | 2.41x | ✅ | -| `to_bytes[memoryview(b'\\x01'*2048)]` | 5.062091970900997e-05 | 2.4392149892588226e-05 | 51.81% | 107.53% | 2.08x | ✅ | -| `to_bytes[memoryview(b'\\x01\\x02\\x03')]` | 4.151632182018406e-05 | 1.7088930860701058e-05 | 58.84% | 142.94% | 2.43x | ✅ | -| `to_bytes[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 4.1199939973853625e-05 | 1.6944740397082872e-05 | 58.87% | 143.14% | 2.43x | ✅ | -| `to_bytes[memoryview(b'\\x7f'*8)]` | 4.142976968069965e-05 | 1.6746485452109062e-05 | 59.58% | 147.39% | 2.47x | ✅ | -| `to_bytes[memoryview(b'\\x80'*8)]` | 4.1258425464389574e-05 | 1.676503682700804e-05 | 59.37% | 146.10% | 2.46x | ✅ | -| `to_bytes[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 3.8962744059281924e-05 | 1.6656744112946588e-05 | 57.25% | 133.92% | 2.34x | ✅ | -| `to_bytes[memoryview(b'\\xff'*64)]` | 4.1652404934190813e-05 | 1.6705392499152253e-05 | 59.89% | 149.34% | 2.49x | ✅ | -| `to_bytes[memoryview(b'a'*1024)]` | 4.92238376299252e-05 | 2.305905905419109e-05 | 53.15% | 113.47% | 2.13x | ✅ | -| `to_bytes[memoryview(b'abc')]` | 4.209026259339344e-05 | 1.6651748127437028e-05 | 60.44% | 152.77% | 2.53x | ✅ | -| `to_bytes[memoryview(long alternating)]` | 4.8268404060739565e-05 | 2.3154046527902918e-05 | 52.03% | 108.47% | 2.08x | ✅ | -| `to_bytes[memoryview(mixed pattern)]` | 4.187415957659425e-05 | 1.747633071233915e-05 | 58.26% | 139.60% | 2.40x | ✅ | -| `to_bytes[memoryview(multiples of 0x10)]` | 4.1985225454722795e-05 | 1.6909078196891254e-05 | 59.73% | 148.30% | 2.48x | ✅ | -| `to_bytes[memoryview(palindrome ascii)]` | 4.170201910968849e-05 | 1.6924946534785476e-05 | 59.41% | 146.39% | 2.46x | ✅ | -| `to_bytes[memoryview(palindrome numeric)]` | 4.073033949121863e-05 | 1.6864947665201825e-05 | 58.59% | 141.51% | 2.42x | ✅ | -| `to_bytes[memoryview(palindrome)]` | 4.067754741127174e-05 | 1.673399448564326e-05 | 58.86% | 143.08% | 2.43x | ✅ | -| `to_bytes[memoryview(repeated 0-9)]` | 4.2295391712536276e-05 | 1.7049191649229895e-05 | 59.69% | 148.08% | 2.48x | ✅ | -| `to_bytes[memoryview(single 0xff)]` | 4.1045922093649365e-05 | 1.7206823667262566e-05 | 58.08% | 138.54% | 2.39x | ✅ | -| `to_bytes[memoryview(single null byte)]` | 4.1383600145539276e-05 | 1.712638985503105e-05 | 58.62% | 141.64% | 2.42x | ✅ | -| `to_bytes[memoryview(two patterns)]` | 4.125014577199621e-05 | 1.686994915712005e-05 | 59.10% | 144.52% | 2.45x | ✅ | -| `to_bytes[mixed pattern]` | 5.941413165033101e-06 | 3.582841680371897e-06 | 39.70% | 65.83% | 1.66x | ✅ | -| `to_bytes[multiples of 0x10]` | 6.3921225189780434e-06 | 3.6127741123958846e-06 | 43.48% | 76.93% | 1.77x | ✅ | -| `to_bytes[palindrome ascii]` | 6.397362555480084e-06 | 3.472492174657358e-06 | 45.72% | 84.23% | 1.84x | ✅ | -| `to_bytes[palindrome numeric]` | 6.40607401265332e-06 | 3.46920995337416e-06 | 45.84% | 84.66% | 1.85x | ✅ | -| `to_bytes[palindrome]` | 6.351793877976768e-06 | 3.5638267047970715e-06 | 43.89% | 78.23% | 1.78x | ✅ | -| `to_bytes[repeated 0-9]` | 6.193945383712307e-06 | 3.56238576389612e-06 | 42.49% | 73.87% | 1.74x | ✅ | -| `to_bytes[single 0xff]` | 5.895726824704549e-06 | 3.4045349392015167e-06 | 42.25% | 73.17% | 1.73x | ✅ | -| `to_bytes[single null byte]` | 6.345495843241143e-06 | 3.5001201550007904e-06 | 44.84% | 81.29% | 1.81x | ✅ | -| `to_bytes[two patterns]` | 6.339771352165492e-06 | 3.56377046045974e-06 | 43.79% | 77.90% | 1.78x | ✅ | +| `hexstr_to_bytes['']` | 1.8108716109507284e-05 | 1.072953506463328e-05 | 40.75% | 68.77% | 1.69x | ✅ | +| `hexstr_to_bytes['0x'+'0'*128]` | 3.477853093027143e-05 | 2.134695480977104e-05 | 38.62% | 62.92% | 1.63x | ✅ | +| `hexstr_to_bytes['0x'+'00'*64]` | 3.4732543679357386e-05 | 2.1221180074638576e-05 | 38.90% | 63.67% | 1.64x | ✅ | +| `hexstr_to_bytes['0x'+'00ff'*16]` | 3.157873784693238e-05 | 1.8192123289786923e-05 | 42.39% | 73.58% | 1.74x | ✅ | +| `hexstr_to_bytes['0x'+'0123456789abcdef'*8]` | 3.525845229823845e-05 | 2.082314740675848e-05 | 40.94% | 69.32% | 1.69x | ✅ | +| `hexstr_to_bytes['0x'+'1'*64]` | 3.1579329084849564e-05 | 1.8312339417318836e-05 | 42.01% | 72.45% | 1.72x | ✅ | +| `hexstr_to_bytes['0x'+'1234567890abcdef'*8]` | 3.5056540486883796e-05 | 2.1165520123982964e-05 | 39.62% | 65.63% | 1.66x | ✅ | +| `hexstr_to_bytes['0x'+'a'*128]` | 3.49287494195988e-05 | 2.1287539169906995e-05 | 39.05% | 64.08% | 1.64x | ✅ | +| `hexstr_to_bytes['0x'+'a1b2c3d4'*8]` | 3.185698664990902e-05 | 1.8281794042996916e-05 | 42.61% | 74.26% | 1.74x | ✅ | +| `hexstr_to_bytes['0x'+'b'*2048]` | 0.00013744273892649875 | 0.00011884439365400451 | 13.53% | 15.65% | 1.16x | ✅ | +| `hexstr_to_bytes['0x'+'badc0ffee0ddf00d'*4]` | 3.199155056953397e-05 | 1.841690685471494e-05 | 42.43% | 73.71% | 1.74x | ✅ | +| `hexstr_to_bytes['0x'+'beef'*16]` | 3.1871150713902886e-05 | 1.825076950359168e-05 | 42.74% | 74.63% | 1.75x | ✅ | +| `hexstr_to_bytes['0x'+'c'*1024]` | 9.024289594262732e-05 | 7.190635060936371e-05 | 20.32% | 25.50% | 1.26x | ✅ | +| `hexstr_to_bytes['0x'+'cafebabe'*8]` | 3.19310137024219e-05 | 1.8237492039379318e-05 | 42.88% | 75.08% | 1.75x | ✅ | +| `hexstr_to_bytes['0x'+'d'*512]` | 5.800723082588783e-05 | 4.082969024960506e-05 | 29.61% | 42.07% | 1.42x | ✅ | +| `hexstr_to_bytes['0x'+'dead'*16]` | 3.1683305095766123e-05 | 1.8495778271077177e-05 | 41.62% | 71.30% | 1.71x | ✅ | +| `hexstr_to_bytes['0x'+'e'*256]` | 4.4261201864336894e-05 | 2.783576306930417e-05 | 37.11% | 59.01% | 1.59x | ✅ | +| `hexstr_to_bytes['0x'+'f'*128]` | 3.4884470128319426e-05 | 2.1125807424977293e-05 | 39.44% | 65.13% | 1.65x | ✅ | +| `hexstr_to_bytes['0x'+'f'*64]` | 3.159624528509172e-05 | 1.8250096630324273e-05 | 42.24% | 73.13% | 1.73x | ✅ | +| `hexstr_to_bytes['0x'+'facefeed'*8]` | 3.1748030176567864e-05 | 1.8350213477570096e-05 | 42.20% | 73.01% | 1.73x | ✅ | +| `hexstr_to_bytes['0x'+'ff'*32]` | 3.158815574740083e-05 | 1.819649584898684e-05 | 42.39% | 73.59% | 1.74x | ✅ | +| `hexstr_to_bytes['0x'+'ff00'*16]` | 3.179748785762551e-05 | 1.8167401189431703e-05 | 42.87% | 75.02% | 1.75x | ✅ | +| `hexstr_to_bytes['0x']` | 2.298298246447314e-05 | 1.0683129269606998e-05 | 53.52% | 115.13% | 2.15x | ✅ | +| `hexstr_to_bytes['0x0']` | 3.153780989321959e-05 | 1.868174251724141e-05 | 40.76% | 68.82% | 1.69x | ✅ | +| `hexstr_to_bytes['0x1']` | 3.2007765643142155e-05 | 1.8974342768234374e-05 | 40.72% | 68.69% | 1.69x | ✅ | +| `hexstr_to_bytes['0x1234']` | 2.9016069626678522e-05 | 1.6431613751268333e-05 | 43.37% | 76.59% | 1.77x | ✅ | +| `hexstr_to_bytes['0xCAFEBABE']` | 2.921627644405063e-05 | 1.6256215638285292e-05 | 44.36% | 79.72% | 1.80x | ✅ | +| `hexstr_to_bytes['0xabcdef']` | 2.937422894326973e-05 | 1.631260719885842e-05 | 44.47% | 80.07% | 1.80x | ✅ | +| `hexstr_to_bytes['0xdeadbeef']` | 2.9662014702520155e-05 | 1.6313537795389213e-05 | 45.00% | 81.82% | 1.82x | ✅ | +| `hexstr_to_bytes['deadbeef']` | 2.1683696702414743e-05 | 1.4442618121960187e-05 | 33.39% | 50.14% | 1.50x | ✅ | +| `to_bytes['']` | 2.8406081504686926e-05 | 1.212071815779389e-05 | 57.33% | 134.36% | 2.34x | ✅ | +| `to_bytes['0x'+'00'*64]` | 4.6716391777960806e-05 | 2.319346964340516e-05 | 50.35% | 101.42% | 2.01x | ✅ | +| `to_bytes['0x'+'a'*128]` | 4.7273962279218805e-05 | 2.2773025159909116e-05 | 51.83% | 107.59% | 2.08x | ✅ | +| `to_bytes['0x'+'ff'*32]` | 4.2863771256961514e-05 | 2.0218519120147183e-05 | 52.83% | 112.00% | 2.12x | ✅ | +| `to_bytes['0x']` | 3.408878069748809e-05 | 1.2334688490893812e-05 | 63.82% | 176.37% | 2.76x | ✅ | +| `to_bytes['0x1234']` | 4.0324834741976484e-05 | 1.7572703709852513e-05 | 56.42% | 129.47% | 2.29x | ✅ | +| `to_bytes['0xCAFEBABE']` | 4.10986371145335e-05 | 1.7918040683352798e-05 | 56.40% | 129.37% | 2.29x | ✅ | +| `to_bytes['0xabcdef']` | 4.0585657657671104e-05 | 1.7885805718051142e-05 | 55.93% | 126.92% | 2.27x | ✅ | +| `to_bytes['0xdeadbeef']` | 4.102919062199696e-05 | 1.7976496729520054e-05 | 56.19% | 128.24% | 2.28x | ✅ | +| `to_bytes['abc']` | 3.539337044074583e-05 | 1.9672726154367137e-05 | 44.42% | 79.91% | 1.80x | ✅ | +| `to_bytes['deadbeef']` | 3.223507688764388e-05 | 1.5670468820973864e-05 | 51.39% | 105.71% | 2.06x | ✅ | +| `to_bytes[0-9]` | 6.313244733892376e-06 | 3.383372814606704e-06 | 46.41% | 86.60% | 1.87x | ✅ | +| `to_bytes[0]` | 7.409775995660785e-05 | 3.067360631720152e-05 | 58.60% | 141.57% | 2.42x | ✅ | +| `to_bytes[123456]` | 8.010812341907212e-05 | 3.486891585363576e-05 | 56.47% | 129.74% | 2.30x | ✅ | +| `to_bytes[2**16]` | 8.046266538687848e-05 | 3.4373396956017574e-05 | 57.28% | 134.08% | 2.34x | ✅ | +| `to_bytes[2**256-1]` | 8.556428307886735e-05 | 4.037964824218906e-05 | 52.81% | 111.90% | 2.12x | ✅ | +| `to_bytes[2**32]` | 8.186456138853784e-05 | 3.670436395753801e-05 | 55.16% | 123.04% | 2.23x | ✅ | +| `to_bytes[2**64]` | 8.27339440074337e-05 | 3.833373528682107e-05 | 53.67% | 115.83% | 2.16x | ✅ | +| `to_bytes[2**8]` | 7.739650178943448e-05 | 3.367216378785691e-05 | 56.49% | 129.85% | 2.30x | ✅ | +| `to_bytes[4-byte pattern]` | 5.87318545109898e-06 | 3.532373211153483e-06 | 39.86% | 66.27% | 1.66x | ✅ | +| `to_bytes[False]` | 2.1852371492268608e-05 | 4.213642715326131e-06 | 80.72% | 418.61% | 5.19x | ✅ | +| `to_bytes[True]` | 2.19648616523232e-05 | 4.366722412375634e-06 | 80.12% | 403.01% | 5.03x | ✅ | +| `to_bytes[all byte values]` | 5.750168122981936e-06 | 3.474973735864405e-06 | 39.57% | 65.47% | 1.65x | ✅ | +| `to_bytes[alternating 0x00/0xff]` | 6.333255896356944e-06 | 3.384083309576267e-06 | 46.57% | 87.15% | 1.87x | ✅ | +| `to_bytes[alternating 0xaa/0x55]` | 6.3665756345667486e-06 | 3.381626329505373e-06 | 46.88% | 88.27% | 1.88x | ✅ | +| `to_bytes[ascii sentence]` | 6.2823266978538725e-06 | 3.6714145931930532e-06 | 41.56% | 71.11% | 1.71x | ✅ | +| `to_bytes[b'']` | 5.970186354967672e-06 | 3.5961475162989274e-06 | 39.76% | 66.02% | 1.66x | ✅ | +| `to_bytes[b'\\x00'*32]` | 6.165592547049623e-06 | 3.7231993259240725e-06 | 39.61% | 65.60% | 1.66x | ✅ | +| `to_bytes[b'\\x00\\xff\\x00\\xff']` | 6.0754166416466165e-06 | 3.6257780966561048e-06 | 40.32% | 67.56% | 1.68x | ✅ | +| `to_bytes[b'\\x01'*100]` | 6.220290347293189e-06 | 3.4234982832629264e-06 | 44.96% | 81.69% | 1.82x | ✅ | +| `to_bytes[b'\\x01'*2048]` | 6.330636000138178e-06 | 3.5289006021602926e-06 | 44.26% | 79.39% | 1.79x | ✅ | +| `to_bytes[b'\\x01\\x02\\x03']` | 6.185025316451305e-06 | 3.623057815000184e-06 | 41.42% | 70.71% | 1.71x | ✅ | +| `to_bytes[b'\\x10\\x20\\x30\\x40\\x50']` | 6.345146929425563e-06 | 3.384053023119839e-06 | 46.67% | 87.50% | 1.88x | ✅ | +| `to_bytes[b'\\x7f'*8]` | 6.307922119478078e-06 | 3.2902904791661006e-06 | 47.84% | 91.71% | 1.92x | ✅ | +| `to_bytes[b'\\x80'*8]` | 6.283858599481755e-06 | 3.385716400166712e-06 | 46.12% | 85.60% | 1.86x | ✅ | +| `to_bytes[b'\\xde\\xad\\xbe\\xef']` | 6.1359750750656236e-06 | 3.476498530048304e-06 | 43.34% | 76.50% | 1.76x | ✅ | +| `to_bytes[b'\\xff'*64]` | 6.126065218502575e-06 | 3.51859567736766e-06 | 42.56% | 74.11% | 1.74x | ✅ | +| `to_bytes[b'a'*1024]` | 6.08377644413553e-06 | 3.470039212531075e-06 | 42.96% | 75.32% | 1.75x | ✅ | +| `to_bytes[b'abc']` | 5.76852269797698e-06 | 3.720980215930264e-06 | 35.50% | 55.03% | 1.55x | ✅ | +| `to_bytes[bytearray(0-9)]` | 2.8561318893861434e-05 | 1.3792796688536417e-05 | 51.71% | 107.07% | 2.07x | ✅ | +| `to_bytes[bytearray(4-byte pattern)]` | 2.8991437853431247e-05 | 1.3978918096930204e-05 | 51.78% | 107.39% | 2.07x | ✅ | +| `to_bytes[bytearray(all byte values)]` | 2.8902652661265275e-05 | 1.3819960098487067e-05 | 52.18% | 109.14% | 2.09x | ✅ | +| `to_bytes[bytearray(alternating 0x00/0xff)]` | 2.8489362183707827e-05 | 1.3758298560882817e-05 | 51.71% | 107.07% | 2.07x | ✅ | +| `to_bytes[bytearray(alternating 0xaa/0x55)]` | 2.83772519964677e-05 | 1.3805372085383965e-05 | 51.35% | 105.55% | 2.06x | ✅ | +| `to_bytes[bytearray(ascii sentence)]` | 2.834693533539934e-05 | 1.3875575398365717e-05 | 51.05% | 104.29% | 2.04x | ✅ | +| `to_bytes[bytearray(b'')]` | 2.485850054079193e-05 | 1.2420811536799517e-05 | 50.03% | 100.14% | 2.00x | ✅ | +| `to_bytes[bytearray(b'\\x00'*32)]` | 2.8144954603180046e-05 | 1.386911952345976e-05 | 50.72% | 102.93% | 2.03x | ✅ | +| `to_bytes[bytearray(b'\\x00\\xff\\x00\\xff')]` | 2.8147714773469372e-05 | 1.3911624392784609e-05 | 50.58% | 102.33% | 2.02x | ✅ | +| `to_bytes[bytearray(b'\\x01'*100)]` | 2.8996036789705873e-05 | 1.4101294277125372e-05 | 51.37% | 105.63% | 2.06x | ✅ | +| `to_bytes[bytearray(b'\\x01'*2048)]` | 3.611237452090361e-05 | 1.9636911707679116e-05 | 45.62% | 83.90% | 1.84x | ✅ | +| `to_bytes[bytearray(b'\\x01\\x02\\x03')]` | 2.8250212868733876e-05 | 1.4044834519068884e-05 | 50.28% | 101.14% | 2.01x | ✅ | +| `to_bytes[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 2.8308717510961365e-05 | 1.402994553374833e-05 | 50.44% | 101.77% | 2.02x | ✅ | +| `to_bytes[bytearray(b'\\x7f'*8)]` | 2.879822728573937e-05 | 1.362057750138126e-05 | 52.70% | 111.43% | 2.11x | ✅ | +| `to_bytes[bytearray(b'\\x80'*8)]` | 2.8598779280414334e-05 | 1.3973387319479566e-05 | 51.14% | 104.67% | 2.05x | ✅ | +| `to_bytes[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 2.8177032904409735e-05 | 1.3879138481326223e-05 | 50.74% | 103.02% | 2.03x | ✅ | +| `to_bytes[bytearray(b'\\xff'*64)]` | 2.8290679793749143e-05 | 1.4105866394510276e-05 | 50.14% | 100.56% | 2.01x | ✅ | +| `to_bytes[bytearray(b'a'*1024)]` | 3.4682146538512625e-05 | 1.8943544543982268e-05 | 45.38% | 83.08% | 1.83x | ✅ | +| `to_bytes[bytearray(b'abc')]` | 2.8352038386506405e-05 | 1.4153787434714731e-05 | 50.08% | 100.31% | 2.00x | ✅ | +| `to_bytes[bytearray(long alternating)]` | 3.518521414978128e-05 | 1.8799311711945177e-05 | 46.57% | 87.16% | 1.87x | ✅ | +| `to_bytes[bytearray(mixed pattern)]` | 2.838322518030291e-05 | 1.407872655537458e-05 | 50.40% | 101.60% | 2.02x | ✅ | +| `to_bytes[bytearray(multiples of 0x10)]` | 2.8653612058621225e-05 | 1.3957903398204689e-05 | 51.29% | 105.29% | 2.05x | ✅ | +| `to_bytes[bytearray(palindrome ascii)]` | 2.8034044553015058e-05 | 1.390489300763532e-05 | 50.40% | 101.61% | 2.02x | ✅ | +| `to_bytes[bytearray(palindrome numeric)]` | 2.8479671468884014e-05 | 1.4042896177350062e-05 | 50.69% | 102.80% | 2.03x | ✅ | +| `to_bytes[bytearray(palindrome)]` | 2.821066448750178e-05 | 1.3758763689599568e-05 | 51.23% | 105.04% | 2.05x | ✅ | +| `to_bytes[bytearray(repeated 0-9)]` | 2.8664469979540998e-05 | 1.4230124035279283e-05 | 50.36% | 101.44% | 2.01x | ✅ | +| `to_bytes[bytearray(single 0xff)]` | 2.8401256567866244e-05 | 1.4127525183492144e-05 | 50.26% | 101.03% | 2.01x | ✅ | +| `to_bytes[bytearray(single null byte)]` | 2.854378304017952e-05 | 1.3715347607249224e-05 | 51.95% | 108.12% | 2.08x | ✅ | +| `to_bytes[bytearray(two patterns)]` | 2.84194651974342e-05 | 1.3882449365777375e-05 | 51.15% | 104.72% | 2.05x | ✅ | +| `to_bytes[long alternating]` | 6.333914520372551e-06 | 3.531768998088399e-06 | 44.24% | 79.34% | 1.79x | ✅ | +| `to_bytes[memoryview(0-9)]` | 4.216070589255035e-05 | 1.6789183869491977e-05 | 60.18% | 151.12% | 2.51x | ✅ | +| `to_bytes[memoryview(4-byte pattern)]` | 4.261823207581377e-05 | 1.7526210875170774e-05 | 58.88% | 143.17% | 2.43x | ✅ | +| `to_bytes[memoryview(all byte values)]` | 4.177678816628457e-05 | 1.763786769308451e-05 | 57.78% | 136.86% | 2.37x | ✅ | +| `to_bytes[memoryview(alternating 0x00/0xff)]` | 4.192378485711202e-05 | 1.6610228150189433e-05 | 60.38% | 152.40% | 2.52x | ✅ | +| `to_bytes[memoryview(alternating 0xaa/0x55)]` | 4.193301159378282e-05 | 1.6718718370914558e-05 | 60.13% | 150.81% | 2.51x | ✅ | +| `to_bytes[memoryview(ascii sentence)]` | 4.218731950817407e-05 | 1.6835557107338123e-05 | 60.09% | 150.58% | 2.51x | ✅ | +| `to_bytes[memoryview(b'')]` | 4.0849748530397396e-05 | 1.4729471253375882e-05 | 63.94% | 177.33% | 2.77x | ✅ | +| `to_bytes[memoryview(b'\\x00'*32)]` | 4.178796631546478e-05 | 1.6671135165739163e-05 | 60.11% | 150.66% | 2.51x | ✅ | +| `to_bytes[memoryview(b'\\x00\\xff\\x00\\xff')]` | 4.187624798291816e-05 | 1.681192726821208e-05 | 59.85% | 149.09% | 2.49x | ✅ | +| `to_bytes[memoryview(b'\\x01'*100)]` | 4.283082610610419e-05 | 1.7311299175694957e-05 | 59.58% | 147.42% | 2.47x | ✅ | +| `to_bytes[memoryview(b'\\x01'*2048)]` | 5.0406241627620315e-05 | 2.3805468711523387e-05 | 52.77% | 111.74% | 2.12x | ✅ | +| `to_bytes[memoryview(b'\\x01\\x02\\x03')]` | 4.2574253113576826e-05 | 1.7068190163113205e-05 | 59.91% | 149.44% | 2.49x | ✅ | +| `to_bytes[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 4.218816240208931e-05 | 1.6825183092837047e-05 | 60.12% | 150.74% | 2.51x | ✅ | +| `to_bytes[memoryview(b'\\x7f'*8)]` | 4.095897268787583e-05 | 1.6858674225700176e-05 | 58.84% | 142.95% | 2.43x | ✅ | +| `to_bytes[memoryview(b'\\x80'*8)]` | 4.17237507982478e-05 | 1.673978853122123e-05 | 59.88% | 149.25% | 2.49x | ✅ | +| `to_bytes[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 4.147012073754908e-05 | 1.6800966368166974e-05 | 59.49% | 146.83% | 2.47x | ✅ | +| `to_bytes[memoryview(b'\\xff'*64)]` | 4.2056837095537003e-05 | 1.6917647180973096e-05 | 59.77% | 148.60% | 2.49x | ✅ | +| `to_bytes[memoryview(b'a'*1024)]` | 4.962969022899208e-05 | 2.2632837409482258e-05 | 54.40% | 119.28% | 2.19x | ✅ | +| `to_bytes[memoryview(b'abc')]` | 4.210861382343769e-05 | 1.7250375590328674e-05 | 59.03% | 144.10% | 2.44x | ✅ | +| `to_bytes[memoryview(long alternating)]` | 4.948870200274808e-05 | 2.2821022538730543e-05 | 53.89% | 116.86% | 2.17x | ✅ | +| `to_bytes[memoryview(mixed pattern)]` | 4.200721196656227e-05 | 1.7680451679586393e-05 | 57.91% | 137.59% | 2.38x | ✅ | +| `to_bytes[memoryview(multiples of 0x10)]` | 4.211903381850065e-05 | 1.6920204643854485e-05 | 59.83% | 148.93% | 2.49x | ✅ | +| `to_bytes[memoryview(palindrome ascii)]` | 4.185642119950413e-05 | 1.687371589872684e-05 | 59.69% | 148.06% | 2.48x | ✅ | +| `to_bytes[memoryview(palindrome numeric)]` | 4.2668238474919904e-05 | 1.686421437853214e-05 | 60.48% | 153.01% | 2.53x | ✅ | +| `to_bytes[memoryview(palindrome)]` | 4.2439820542103994e-05 | 1.6770502655806186e-05 | 60.48% | 153.06% | 2.53x | ✅ | +| `to_bytes[memoryview(repeated 0-9)]` | 4.207030309610119e-05 | 1.755542666534358e-05 | 58.27% | 139.64% | 2.40x | ✅ | +| `to_bytes[memoryview(single 0xff)]` | 4.172718653103497e-05 | 1.712737133686334e-05 | 58.95% | 143.63% | 2.44x | ✅ | +| `to_bytes[memoryview(single null byte)]` | 4.197387600707414e-05 | 1.726933526431106e-05 | 58.86% | 143.05% | 2.43x | ✅ | +| `to_bytes[memoryview(two patterns)]` | 4.2064523566006314e-05 | 1.6879767667756747e-05 | 59.87% | 149.20% | 2.49x | ✅ | +| `to_bytes[mixed pattern]` | 6.369498591436948e-06 | 3.82241587910462e-06 | 39.99% | 66.64% | 1.67x | ✅ | +| `to_bytes[multiples of 0x10]` | 6.3134242390508075e-06 | 3.537523789030211e-06 | 43.97% | 78.47% | 1.78x | ✅ | +| `to_bytes[palindrome ascii]` | 6.31994765676623e-06 | 3.4117271311370175e-06 | 46.02% | 85.24% | 1.85x | ✅ | +| `to_bytes[palindrome numeric]` | 6.330060725996011e-06 | 3.5671873199186265e-06 | 43.65% | 77.45% | 1.77x | ✅ | +| `to_bytes[palindrome]` | 6.1463385094174565e-06 | 3.6263390178473107e-06 | 41.00% | 69.49% | 1.69x | ✅ | +| `to_bytes[repeated 0-9]` | 6.459886450517052e-06 | 3.570522771163701e-06 | 44.73% | 80.92% | 1.81x | ✅ | +| `to_bytes[single 0xff]` | 6.34225064835968e-06 | 3.597512703859527e-06 | 43.28% | 76.30% | 1.76x | ✅ | +| `to_bytes[single null byte]` | 6.272059081271775e-06 | 3.659259066119072e-06 | 41.66% | 71.40% | 1.71x | ✅ | +| `to_bytes[two patterns]` | 6.329665299134493e-06 | 3.568472140075206e-06 | 43.62% | 77.38% | 1.77x | ✅ | diff --git a/benchmarks/results/main.md b/benchmarks/results/main.md index 3d56a9a..769cb1e 100644 --- a/benchmarks/results/main.md +++ b/benchmarks/results/main.md @@ -1,486 +1,486 @@ -#### [faster_hexbytes.main](https://github.com/BobTheBuidler/faster-hexbytes/blob/renovate/actions-github-script-8.x/faster_hexbytes/main.py) - [view benchmarks](https://github.com/BobTheBuidler/faster-hexbytes/blob/renovate/actions-github-script-8.x/benchmarks/test_main_benchmarks.py) +#### [faster_hexbytes.main](https://github.com/BobTheBuidler/faster-hexbytes/blob/master/faster_hexbytes/main.py) - [view benchmarks](https://github.com/BobTheBuidler/faster-hexbytes/blob/master/benchmarks/test_main_benchmarks.py) | Function | Reference Mean | Faster Mean | % Change | Speedup (%) | x Faster | Faster | |----------|---------------|-------------|----------|-------------|----------|--------| -| `hexbytes_getitem_index[-1-0-9]` | 2.53668441961707e-05 | 2.3413264874501565e-05 | 7.70% | 8.34% | 1.08x | ✅ | -| `hexbytes_getitem_index[-1-4-byte pattern]` | 2.535835343048155e-05 | 2.3435540755259298e-05 | 7.58% | 8.20% | 1.08x | ✅ | -| `hexbytes_getitem_index[-1-all byte values]` | 2.4958221880409567e-05 | 2.3677863369197956e-05 | 5.13% | 5.41% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-alternating 0x00/0xff]` | 2.5163843845729108e-05 | 2.353566140678483e-05 | 6.47% | 6.92% | 1.07x | ✅ | -| `hexbytes_getitem_index[-1-alternating 0xaa/0x55]` | 2.519895937420702e-05 | 2.337307511904421e-05 | 7.25% | 7.81% | 1.08x | ✅ | -| `hexbytes_getitem_index[-1-ascii sentence]` | 2.5139963742164812e-05 | 2.3755085289653583e-05 | 5.51% | 5.83% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x00'*32]` | 2.497491362862554e-05 | 2.35168749870477e-05 | 5.84% | 6.20% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x00\\xff\\x00\\xff']` | 2.4869859690358813e-05 | 2.346506659541226e-05 | 5.65% | 5.99% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x01'*100]` | 2.4964545274870565e-05 | 2.3563169256000957e-05 | 5.61% | 5.95% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x01'*2048]` | 2.5094981164728102e-05 | 2.3439062506274022e-05 | 6.60% | 7.06% | 1.07x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x01\\x02\\x03']` | 2.4836086957696625e-05 | 2.3506082188224788e-05 | 5.36% | 5.66% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.5175338649197923e-05 | 2.3468791715395408e-05 | 6.78% | 7.27% | 1.07x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x7f'*8]` | 2.5274735993702316e-05 | 2.3371489472293352e-05 | 7.53% | 8.14% | 1.08x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x80'*8]` | 2.4863772292065482e-05 | 2.358318074101012e-05 | 5.15% | 5.43% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-b'\\xde\\xad\\xbe\\xef']` | 2.4905947287175086e-05 | 2.350468987903225e-05 | 5.63% | 5.96% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-b'\\xff'*64]` | 2.48787054860981e-05 | 2.3447220223501416e-05 | 5.75% | 6.11% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-b'a'*1024]` | 2.488839303629594e-05 | 2.351828371347345e-05 | 5.51% | 5.83% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-b'abc']` | 2.4761393895366423e-05 | 2.345053470695019e-05 | 5.29% | 5.59% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-long alternating]` | 2.5225060229056707e-05 | 2.3518121164515742e-05 | 6.77% | 7.26% | 1.07x | ✅ | -| `hexbytes_getitem_index[-1-mixed pattern]` | 2.505665404345325e-05 | 2.3809426036493395e-05 | 4.98% | 5.24% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-multiples of 0x10]` | 2.507129268895164e-05 | 2.348729304614607e-05 | 6.32% | 6.74% | 1.07x | ✅ | -| `hexbytes_getitem_index[-1-palindrome ascii]` | 2.5016810147063034e-05 | 2.3714810607608998e-05 | 5.20% | 5.49% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-palindrome numeric]` | 2.5130096027823786e-05 | 2.36004006839955e-05 | 6.09% | 6.48% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-palindrome]` | 2.4882202812194837e-05 | 2.3454388286837558e-05 | 5.74% | 6.09% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-repeated 0-9]` | 2.4975481556897965e-05 | 2.3655581550371606e-05 | 5.28% | 5.58% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-two patterns]` | 2.494390757173162e-05 | 2.3739764633671874e-05 | 4.83% | 5.07% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-0-9]` | 2.3623205313857716e-05 | 2.278495145315533e-05 | 3.55% | 3.68% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-4-byte pattern]` | 2.3592226923938415e-05 | 2.2913188202596257e-05 | 2.88% | 2.96% | 1.03x | ✅ | -| `hexbytes_getitem_index[0-all byte values]` | 2.353546146993868e-05 | 2.3027643241948626e-05 | 2.16% | 2.21% | 1.02x | ✅ | -| `hexbytes_getitem_index[0-alternating 0x00/0xff]` | 2.3803651274509934e-05 | 2.2959521380607028e-05 | 3.55% | 3.68% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-alternating 0xaa/0x55]` | 2.3662002023504002e-05 | 2.287470271878636e-05 | 3.33% | 3.44% | 1.03x | ✅ | -| `hexbytes_getitem_index[0-ascii sentence]` | 2.404342992683894e-05 | 2.2918523555307587e-05 | 4.68% | 4.91% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-b'\\x00'*32]` | 2.3620474800843862e-05 | 2.3255366828781506e-05 | 1.55% | 1.57% | 1.02x | ✅ | -| `hexbytes_getitem_index[0-b'\\x00\\xff\\x00\\xff']` | 2.380044116267868e-05 | 2.2869957261726755e-05 | 3.91% | 4.07% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-b'\\x01'*100]` | 2.3802765781994403e-05 | 2.289171617527974e-05 | 3.83% | 3.98% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-b'\\x01'*2048]` | 2.3663042351062443e-05 | 2.2894168909310263e-05 | 3.25% | 3.36% | 1.03x | ✅ | -| `hexbytes_getitem_index[0-b'\\x01\\x02\\x03']` | 2.379856958728949e-05 | 2.3294773286290518e-05 | 2.12% | 2.16% | 1.02x | ✅ | -| `hexbytes_getitem_index[0-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3759822392784532e-05 | 2.299867629024606e-05 | 3.20% | 3.31% | 1.03x | ✅ | -| `hexbytes_getitem_index[0-b'\\x7f'*8]` | 2.378087902084635e-05 | 2.280057223543121e-05 | 4.12% | 4.30% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-b'\\x80'*8]` | 2.388418986514796e-05 | 2.296560626895673e-05 | 3.85% | 4.00% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-b'\\xde\\xad\\xbe\\xef']` | 2.3758930580768526e-05 | 2.273265518684773e-05 | 4.32% | 4.51% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-b'\\xff'*64]` | 2.3935800482942908e-05 | 2.3226224137519547e-05 | 2.96% | 3.06% | 1.03x | ✅ | -| `hexbytes_getitem_index[0-b'a'*1024]` | 2.3581879630163417e-05 | 2.3122420316036963e-05 | 1.95% | 1.99% | 1.02x | ✅ | -| `hexbytes_getitem_index[0-b'abc']` | 2.3648752674859415e-05 | 2.3129492756923876e-05 | 2.20% | 2.25% | 1.02x | ✅ | -| `hexbytes_getitem_index[0-long alternating]` | 2.35587776726874e-05 | 2.303869365794312e-05 | 2.21% | 2.26% | 1.02x | ✅ | -| `hexbytes_getitem_index[0-mixed pattern]` | 2.3744324666640247e-05 | 2.2765292041378557e-05 | 4.12% | 4.30% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-multiples of 0x10]` | 2.3616995152371287e-05 | 2.296720115405289e-05 | 2.75% | 2.83% | 1.03x | ✅ | -| `hexbytes_getitem_index[0-palindrome ascii]` | 2.3818153394882057e-05 | 2.2978367416656703e-05 | 3.53% | 3.65% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-palindrome numeric]` | 2.4150971098124356e-05 | 2.2989559430905114e-05 | 4.81% | 5.05% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-palindrome]` | 2.3899857899656665e-05 | 2.2954695384213256e-05 | 3.95% | 4.12% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-repeated 0-9]` | 2.391110775855449e-05 | 2.2924078834067346e-05 | 4.13% | 4.31% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-single 0xff]` | 2.3887542004513157e-05 | 2.2914153846016135e-05 | 4.07% | 4.25% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-single null byte]` | 2.3724544184474418e-05 | 2.2999193001892647e-05 | 3.06% | 3.15% | 1.03x | ✅ | -| `hexbytes_getitem_index[0-two patterns]` | 2.405482049242797e-05 | 2.2963841204917406e-05 | 4.54% | 4.75% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-0-9]` | 2.371156993893801e-05 | 2.2888825072187992e-05 | 3.47% | 3.59% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-4-byte pattern]` | 2.372896791003886e-05 | 2.269922830738383e-05 | 4.34% | 4.54% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-all byte values]` | 2.380317445569293e-05 | 2.2593638991616627e-05 | 5.08% | 5.35% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-alternating 0x00/0xff]` | 2.3699771774537176e-05 | 2.276535814154895e-05 | 3.94% | 4.10% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-alternating 0xaa/0x55]` | 2.377200881454919e-05 | 2.2754159891962368e-05 | 4.28% | 4.47% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-ascii sentence]` | 2.3756691697094774e-05 | 2.2663964665438177e-05 | 4.60% | 4.82% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-b'\\x00'*32]` | 2.3767305987420814e-05 | 2.3367393519318766e-05 | 1.68% | 1.71% | 1.02x | ✅ | -| `hexbytes_getitem_index[1-b'\\x00\\xff\\x00\\xff']` | 2.399809459218964e-05 | 2.3247274959597835e-05 | 3.13% | 3.23% | 1.03x | ✅ | -| `hexbytes_getitem_index[1-b'\\x01'*100]` | 2.3949388110192527e-05 | 2.275685947791296e-05 | 4.98% | 5.24% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-b'\\x01'*2048]` | 2.383678068567881e-05 | 2.2767386446981837e-05 | 4.49% | 4.70% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-b'\\x01\\x02\\x03']` | 2.4151543190830392e-05 | 2.3158983566504542e-05 | 4.11% | 4.29% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.4054796124526218e-05 | 2.2790557389935175e-05 | 5.26% | 5.55% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-b'\\x7f'*8]` | 2.4071587001955212e-05 | 2.2816616885874204e-05 | 5.21% | 5.50% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-b'\\x80'*8]` | 2.3944039128735428e-05 | 2.2609005310486514e-05 | 5.58% | 5.90% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-b'\\xde\\xad\\xbe\\xef']` | 2.4032881006856603e-05 | 2.3292751418470645e-05 | 3.08% | 3.18% | 1.03x | ✅ | -| `hexbytes_getitem_index[1-b'\\xff'*64]` | 2.404124401434776e-05 | 2.3398603101390204e-05 | 2.67% | 2.75% | 1.03x | ✅ | -| `hexbytes_getitem_index[1-b'a'*1024]` | 2.4008458806567057e-05 | 2.3175824511740988e-05 | 3.47% | 3.59% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-b'abc']` | 2.401755625128544e-05 | 2.279957423716565e-05 | 5.07% | 5.34% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-long alternating]` | 2.390790682817183e-05 | 2.27166546800126e-05 | 4.98% | 5.24% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-mixed pattern]` | 2.403059410918169e-05 | 2.2575590546631365e-05 | 6.05% | 6.45% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-multiples of 0x10]` | 2.382972400637899e-05 | 2.2745992149954278e-05 | 4.55% | 4.76% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-palindrome ascii]` | 2.3880851865731264e-05 | 2.2836056500781297e-05 | 4.38% | 4.58% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-palindrome numeric]` | 2.3856371347415718e-05 | 2.2845357952078757e-05 | 4.24% | 4.43% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-palindrome]` | 2.400405000773179e-05 | 2.323827245067462e-05 | 3.19% | 3.30% | 1.03x | ✅ | -| `hexbytes_getitem_index[1-repeated 0-9]` | 2.3790814298149022e-05 | 2.2569582550622386e-05 | 5.13% | 5.41% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-two patterns]` | 2.3824659296862453e-05 | 2.258859549653083e-05 | 5.19% | 5.47% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-0-9]` | 2.36092339109195e-05 | 2.2570396588956234e-05 | 4.40% | 4.60% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-4-byte pattern]` | 2.357672278301972e-05 | 2.2635781606367467e-05 | 3.99% | 4.16% | 1.04x | ✅ | -| `hexbytes_getitem_index[2-all byte values]` | 2.3584692413796272e-05 | 2.2566128899089113e-05 | 4.32% | 4.51% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-alternating 0x00/0xff]` | 2.368017951183617e-05 | 2.249870697838234e-05 | 4.99% | 5.25% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-alternating 0xaa/0x55]` | 2.372379267755866e-05 | 2.2433916337710812e-05 | 5.44% | 5.75% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-ascii sentence]` | 2.3978481840717973e-05 | 2.244955862431443e-05 | 6.38% | 6.81% | 1.07x | ✅ | -| `hexbytes_getitem_index[2-b'\\x00'*32]` | 2.3532261105084142e-05 | 2.243633292164117e-05 | 4.66% | 4.88% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-b'\\x00\\xff\\x00\\xff']` | 2.3554293105139784e-05 | 2.2634609970217897e-05 | 3.90% | 4.06% | 1.04x | ✅ | -| `hexbytes_getitem_index[2-b'\\x01'*100]` | 2.369131921251666e-05 | 2.2480415096570504e-05 | 5.11% | 5.39% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-b'\\x01'*2048]` | 2.3595932908404814e-05 | 2.2471037654105893e-05 | 4.77% | 5.01% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-b'\\x01\\x02\\x03']` | 2.3649134354149903e-05 | 2.2429308665822077e-05 | 5.16% | 5.44% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-b'\\x10\\x20\\x30\\x40\\x50']` | 2.378839341436541e-05 | 2.237026957968727e-05 | 5.96% | 6.34% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-b'\\x7f'*8]` | 2.3739667878615078e-05 | 2.2566223589040366e-05 | 4.94% | 5.20% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-b'\\x80'*8]` | 2.3669419777256432e-05 | 2.2140452039908372e-05 | 6.46% | 6.91% | 1.07x | ✅ | -| `hexbytes_getitem_index[2-b'\\xde\\xad\\xbe\\xef']` | 2.371907944013633e-05 | 2.249199152564079e-05 | 5.17% | 5.46% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-b'\\xff'*64]` | 2.3549165714029224e-05 | 2.2544291882540323e-05 | 4.27% | 4.46% | 1.04x | ✅ | -| `hexbytes_getitem_index[2-b'a'*1024]` | 2.355785184616235e-05 | 2.5287046753424913e-05 | -7.34% | -6.84% | 0.93x | ❌ | -| `hexbytes_getitem_index[2-b'abc']` | 2.366162314470262e-05 | 2.2537453215408807e-05 | 4.75% | 4.99% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-long alternating]` | 2.3623186065576826e-05 | 2.236197064305323e-05 | 5.34% | 5.64% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-mixed pattern]` | 2.3644000555255504e-05 | 2.2518408857112463e-05 | 4.76% | 5.00% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-multiples of 0x10]` | 2.361604729333547e-05 | 2.238324815518049e-05 | 5.22% | 5.51% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-palindrome ascii]` | 2.35780447313011e-05 | 2.24834448495838e-05 | 4.64% | 4.87% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-palindrome numeric]` | 2.3669255904920467e-05 | 2.245882381639944e-05 | 5.11% | 5.39% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-palindrome]` | 2.358325843683949e-05 | 2.2542085972087914e-05 | 4.41% | 4.62% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-repeated 0-9]` | 2.372390646514084e-05 | 2.2348053569568903e-05 | 5.80% | 6.16% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-two patterns]` | 2.3826290877865748e-05 | 2.250825453079483e-05 | 5.53% | 5.86% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-0-9]` | 2.3828436793963676e-05 | 2.245046642878092e-05 | 5.78% | 6.14% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-4-byte pattern]` | 2.383707357871923e-05 | 2.238193558744374e-05 | 6.10% | 6.50% | 1.07x | ✅ | -| `hexbytes_getitem_index[3-all byte values]` | 2.4039200678842475e-05 | 2.2383740392175624e-05 | 6.89% | 7.40% | 1.07x | ✅ | -| `hexbytes_getitem_index[3-alternating 0x00/0xff]` | 2.408119728309102e-05 | 2.244337852294664e-05 | 6.80% | 7.30% | 1.07x | ✅ | -| `hexbytes_getitem_index[3-alternating 0xaa/0x55]` | 2.377580135795096e-05 | 2.2378248316989097e-05 | 5.88% | 6.25% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-ascii sentence]` | 2.3777009804800353e-05 | 2.249231187115984e-05 | 5.40% | 5.71% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'\\x00'*32]` | 2.3771741816576736e-05 | 2.2487086745067828e-05 | 5.40% | 5.71% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'\\x00\\xff\\x00\\xff']` | 2.4028378177412885e-05 | 2.2497653202927855e-05 | 6.37% | 6.80% | 1.07x | ✅ | -| `hexbytes_getitem_index[3-b'\\x01'*100]` | 2.4012534743073494e-05 | 2.2512114029033673e-05 | 6.25% | 6.66% | 1.07x | ✅ | -| `hexbytes_getitem_index[3-b'\\x01'*2048]` | 2.3823265405745716e-05 | 2.2397709815691707e-05 | 5.98% | 6.36% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'\\x10\\x20\\x30\\x40\\x50']` | 2.4122424451164747e-05 | 2.2357759145210398e-05 | 7.32% | 7.89% | 1.08x | ✅ | -| `hexbytes_getitem_index[3-b'\\x7f'*8]` | 2.4004183209680407e-05 | 2.256813102319778e-05 | 5.98% | 6.36% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'\\x80'*8]` | 2.403556503037755e-05 | 2.2407854120956383e-05 | 6.77% | 7.26% | 1.07x | ✅ | -| `hexbytes_getitem_index[3-b'\\xde\\xad\\xbe\\xef']` | 2.396372596112053e-05 | 2.241237758689271e-05 | 6.47% | 6.92% | 1.07x | ✅ | -| `hexbytes_getitem_index[3-b'\\xff'*64]` | 2.375108990738313e-05 | 2.2467664845483026e-05 | 5.40% | 5.71% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'a'*1024]` | 2.3712376080590073e-05 | 2.237604421211015e-05 | 5.64% | 5.97% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-long alternating]` | 2.3882535272038305e-05 | 2.2341917181914634e-05 | 6.45% | 6.90% | 1.07x | ✅ | -| `hexbytes_getitem_index[3-mixed pattern]` | 2.3807035451042842e-05 | 2.2720458408153257e-05 | 4.56% | 4.78% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-multiples of 0x10]` | 2.3850585115060407e-05 | 2.2308194495428264e-05 | 6.47% | 6.91% | 1.07x | ✅ | -| `hexbytes_getitem_index[3-palindrome ascii]` | 2.3976538207292815e-05 | 2.247994384341074e-05 | 6.24% | 6.66% | 1.07x | ✅ | -| `hexbytes_getitem_index[3-palindrome numeric]` | 2.386431892485114e-05 | 2.2388046078988552e-05 | 6.19% | 6.59% | 1.07x | ✅ | -| `hexbytes_getitem_index[3-palindrome]` | 2.3998119681394765e-05 | 2.2535705942361015e-05 | 6.09% | 6.49% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-repeated 0-9]` | 2.3391208440659576e-05 | 2.258605350409192e-05 | 3.44% | 3.56% | 1.04x | ✅ | -| `hexbytes_getitem_index[3-two patterns]` | 2.3643262767441073e-05 | 2.257997850333367e-05 | 4.50% | 4.71% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-0-9]` | 2.3756245437472095e-05 | 2.2485195569860916e-05 | 5.35% | 5.65% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-4-byte pattern]` | 2.386633909939304e-05 | 2.2535182490374337e-05 | 5.58% | 5.91% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-all byte values]` | 2.3781009070968543e-05 | 2.2563871719464805e-05 | 5.12% | 5.39% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-alternating 0x00/0xff]` | 2.3811430476572753e-05 | 2.2605342916820077e-05 | 5.07% | 5.34% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-alternating 0xaa/0x55]` | 2.3770265442833896e-05 | 2.253533894356181e-05 | 5.20% | 5.48% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-ascii sentence]` | 2.3669945165055705e-05 | 2.240485812856034e-05 | 5.34% | 5.65% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-b'\\x00'*32]` | 2.3587497994532377e-05 | 2.258220765017642e-05 | 4.26% | 4.45% | 1.04x | ✅ | -| `hexbytes_getitem_index[4-b'\\x01'*100]` | 2.380249738779756e-05 | 2.2567504761308617e-05 | 5.19% | 5.47% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-b'\\x01'*2048]` | 2.365415547517736e-05 | 2.235929858511821e-05 | 5.47% | 5.79% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-b'\\x10\\x20\\x30\\x40\\x50']` | 2.384046141423947e-05 | 2.2598431219666145e-05 | 5.21% | 5.50% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-b'\\x7f'*8]` | 2.362779096809785e-05 | 2.2351192832918548e-05 | 5.40% | 5.71% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-b'\\x80'*8]` | 2.3751705012549378e-05 | 2.248246869065687e-05 | 5.34% | 5.65% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-b'\\xff'*64]` | 2.348643920320551e-05 | 2.2586503318959275e-05 | 3.83% | 3.98% | 1.04x | ✅ | -| `hexbytes_getitem_index[4-b'a'*1024]` | 2.3804392589893877e-05 | 2.2383749124667584e-05 | 5.97% | 6.35% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-long alternating]` | 2.377498481236263e-05 | 2.2610584673160668e-05 | 4.90% | 5.15% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-mixed pattern]` | 2.364091288900887e-05 | 2.2511082345918043e-05 | 4.78% | 5.02% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-multiples of 0x10]` | 2.4387607646955965e-05 | 2.245998858468971e-05 | 7.90% | 8.58% | 1.09x | ✅ | -| `hexbytes_getitem_index[4-palindrome ascii]` | 2.357190918713692e-05 | 2.244823525416672e-05 | 4.77% | 5.01% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-palindrome numeric]` | 2.362264116513507e-05 | 2.2505083292646864e-05 | 4.73% | 4.97% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-palindrome]` | 2.3682015401749925e-05 | 2.252887480220006e-05 | 4.87% | 5.12% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-repeated 0-9]` | 2.3643763159370785e-05 | 2.2432700605115797e-05 | 5.12% | 5.40% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-two patterns]` | 2.365356288664023e-05 | 2.2422660161102335e-05 | 5.20% | 5.49% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-0-9]` | 2.375181559498149e-05 | 2.2496725323083268e-05 | 5.28% | 5.58% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-4-byte pattern]` | 2.3619463831396372e-05 | 2.2169952315289615e-05 | 6.14% | 6.54% | 1.07x | ✅ | -| `hexbytes_getitem_index[5-all byte values]` | 2.3482523131575337e-05 | 2.248026876382764e-05 | 4.27% | 4.46% | 1.04x | ✅ | -| `hexbytes_getitem_index[5-alternating 0x00/0xff]` | 2.3608352031633873e-05 | 2.2500713381869102e-05 | 4.69% | 4.92% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-alternating 0xaa/0x55]` | 2.3716020870394847e-05 | 2.243097248462823e-05 | 5.42% | 5.73% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-ascii sentence]` | 2.3545629894661186e-05 | 2.2329749916216746e-05 | 5.16% | 5.45% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-b'\\x00'*32]` | 2.3639480367010277e-05 | 2.2523698534708007e-05 | 4.72% | 4.95% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-b'\\x01'*100]` | 2.3746129928628982e-05 | 2.2436127952719607e-05 | 5.52% | 5.84% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-b'\\x01'*2048]` | 2.3654693905457973e-05 | 2.2432503125030924e-05 | 5.17% | 5.45% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-b'\\x7f'*8]` | 2.3798469782612525e-05 | 2.2460054949217077e-05 | 5.62% | 5.96% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-b'\\x80'*8]` | 2.371747597132707e-05 | 2.2490925560634133e-05 | 5.17% | 5.45% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-b'\\xff'*64]` | 2.371522237988283e-05 | 2.2449880101051846e-05 | 5.34% | 5.64% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-b'a'*1024]` | 2.366644006149346e-05 | 2.2269583752326842e-05 | 5.90% | 6.27% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-long alternating]` | 2.363342940670444e-05 | 2.2438871844331197e-05 | 5.05% | 5.32% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-mixed pattern]` | 2.368525560635718e-05 | 2.239454876736823e-05 | 5.45% | 5.76% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-multiples of 0x10]` | 2.3749044911890636e-05 | 2.2547582596510158e-05 | 5.06% | 5.33% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-palindrome ascii]` | 2.3522728714952302e-05 | 2.2354826109503575e-05 | 4.96% | 5.22% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-palindrome]` | 2.3721992976339844e-05 | 2.2399775045628947e-05 | 5.57% | 5.90% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-repeated 0-9]` | 2.352780515435566e-05 | 2.2271560132776767e-05 | 5.34% | 5.64% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-two patterns]` | 2.368942615045379e-05 | 2.2295442868052675e-05 | 5.88% | 6.25% | 1.06x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-0-9]` | 8.650172957526956e-05 | 6.098375413780732e-05 | 29.50% | 41.84% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-4-byte pattern]` | 8.654815186607393e-05 | 6.0697515790363374e-05 | 29.87% | 42.59% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-all byte values]` | 8.655806708583257e-05 | 6.088540537266686e-05 | 29.66% | 42.17% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-alternating 0x00/0xff]` | 8.722603723361744e-05 | 6.042848945803879e-05 | 30.72% | 44.35% | 1.44x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-alternating 0xaa/0x55]` | 8.695015349342915e-05 | 6.0999785165116677e-05 | 29.85% | 42.54% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-ascii sentence]` | 8.680302440795095e-05 | 6.111686388199567e-05 | 29.59% | 42.03% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'']` | 8.408548248236194e-05 | 5.7930825576887875e-05 | 31.10% | 45.15% | 1.45x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00'*32]` | 8.66974437249276e-05 | 6.137522656223519e-05 | 29.21% | 41.26% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00\\xff\\x00\\xff']` | 8.633107246174567e-05 | 6.006161007277399e-05 | 30.43% | 43.74% | 1.44x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*100]` | 8.576203560792851e-05 | 5.984399344558123e-05 | 30.22% | 43.31% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*2048]` | 8.677893501193669e-05 | 6.081469663559373e-05 | 29.92% | 42.69% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01\\x02\\x03']` | 8.687454394433717e-05 | 6.039779447584007e-05 | 30.48% | 43.84% | 1.44x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.679621940860932e-05 | 6.0958538292427005e-05 | 29.77% | 42.39% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x7f'*8]` | 9.181735137421331e-05 | 6.048643267764398e-05 | 34.12% | 51.80% | 1.52x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x80'*8]` | 8.713707239090026e-05 | 6.0264380344689674e-05 | 30.84% | 44.59% | 1.45x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\xde\\xad\\xbe\\xef']` | 8.624643122709693e-05 | 5.982634756700357e-05 | 30.63% | 44.16% | 1.44x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\xff'*64]` | 8.695304362358399e-05 | 6.074777602709766e-05 | 30.14% | 43.14% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'a'*1024]` | 8.675387953338203e-05 | 6.071932396803161e-05 | 30.01% | 42.88% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'abc']` | 8.748911967689668e-05 | 6.059107217773463e-05 | 30.74% | 44.39% | 1.44x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-long alternating]` | 8.636940474133197e-05 | 6.0723359804754805e-05 | 29.69% | 42.23% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-mixed pattern]` | 8.57677193303011e-05 | 6.0675963459967505e-05 | 29.26% | 41.35% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-multiples of 0x10]` | 8.628357814241968e-05 | 6.113147036672355e-05 | 29.15% | 41.14% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-palindrome ascii]` | 8.624592913755605e-05 | 6.0886753924109136e-05 | 29.40% | 41.65% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-palindrome numeric]` | 8.636620208880436e-05 | 6.057234352705215e-05 | 29.87% | 42.58% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-palindrome]` | 8.693523447684256e-05 | 6.0055930745449056e-05 | 30.92% | 44.76% | 1.45x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-repeated 0-9]` | 8.673578588887855e-05 | 6.082342654538515e-05 | 29.88% | 42.60% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-single 0xff]` | 8.531924908162597e-05 | 5.851533088291579e-05 | 31.42% | 45.81% | 1.46x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-single null byte]` | 8.464742564471074e-05 | 5.819731024681039e-05 | 31.25% | 45.45% | 1.45x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-two patterns]` | 8.653219679132671e-05 | 6.032846211734217e-05 | 30.28% | 43.44% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-0-9]` | 8.347743001811588e-05 | 6.263777931496986e-05 | 24.96% | 33.27% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-4-byte pattern]` | 8.346210534893569e-05 | 6.244654166994495e-05 | 25.18% | 33.65% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-all byte values]` | 8.367308282398218e-05 | 6.232831764365692e-05 | 25.51% | 34.25% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-alternating 0x00/0xff]` | 8.384125133980742e-05 | 6.226752786855615e-05 | 25.73% | 34.65% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-alternating 0xaa/0x55]` | 8.334512413009009e-05 | 6.222679951664572e-05 | 25.34% | 33.94% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-ascii sentence]` | 8.373242692776574e-05 | 6.22375460613441e-05 | 25.67% | 34.54% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'']` | 8.070018650644294e-05 | 5.874180827406877e-05 | 27.21% | 37.38% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x00'*32]` | 8.390465609349209e-05 | 6.162967905072766e-05 | 26.55% | 36.14% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x00\\xff\\x00\\xff']` | 8.351945734697131e-05 | 6.132746851893104e-05 | 26.57% | 36.19% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*100]` | 8.369569170855588e-05 | 6.173065071853307e-05 | 26.24% | 35.58% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*2048]` | 8.341322716089449e-05 | 6.25074442805649e-05 | 25.06% | 33.45% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x01\\x02\\x03']` | 8.377946675406143e-05 | 6.195123734924679e-05 | 26.05% | 35.23% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.321359434561078e-05 | 6.190091165067227e-05 | 25.61% | 34.43% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x7f'*8]` | 8.375787629304684e-05 | 6.153879546737606e-05 | 26.53% | 36.11% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x80'*8]` | 8.344926987134793e-05 | 6.1642614307153e-05 | 26.13% | 35.38% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\xde\\xad\\xbe\\xef']` | 8.353670002563623e-05 | 6.368312971554312e-05 | 23.77% | 31.18% | 1.31x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\xff'*64]` | 8.360700301555149e-05 | 6.17153039865693e-05 | 26.18% | 35.47% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'a'*1024]` | 8.405143734931213e-05 | 6.112323752789971e-05 | 27.28% | 37.51% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'abc']` | 8.4911593794863e-05 | 6.127828582921122e-05 | 27.83% | 38.57% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-long alternating]` | 8.407198601884133e-05 | 6.235596937075041e-05 | 25.83% | 34.83% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-mixed pattern]` | 8.363714556117435e-05 | 6.184957581807966e-05 | 26.05% | 35.23% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-multiples of 0x10]` | 8.374440480842824e-05 | 6.234690629555381e-05 | 25.55% | 34.32% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-palindrome ascii]` | 8.328323571730266e-05 | 6.189305205910975e-05 | 25.68% | 34.56% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-palindrome numeric]` | 8.355863467251337e-05 | 6.210091067207564e-05 | 25.68% | 34.55% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-palindrome]` | 8.38220569775427e-05 | 6.16011580777265e-05 | 26.51% | 36.07% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-repeated 0-9]` | 8.351505665894445e-05 | 6.192464612781977e-05 | 25.85% | 34.87% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-single 0xff]` | 8.189859491729671e-05 | 6.0364975812996094e-05 | 26.29% | 35.67% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-single null byte]` | 8.250422532977175e-05 | 6.055838242409959e-05 | 26.60% | 36.24% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-two patterns]` | 8.332521098694872e-05 | 6.1587678005899e-05 | 26.09% | 35.30% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-0-9]` | 8.281846959233638e-05 | 6.216785611605697e-05 | 24.93% | 33.22% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-4-byte pattern]` | 8.370647598551834e-05 | 6.270310982571674e-05 | 25.09% | 33.50% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-all byte values]` | 8.369744528396635e-05 | 6.221755629092244e-05 | 25.66% | 34.52% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-alternating 0x00/0xff]` | 8.367527636376351e-05 | 6.224474809726317e-05 | 25.61% | 34.43% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-alternating 0xaa/0x55]` | 8.315625258247382e-05 | 6.254615473285287e-05 | 24.78% | 32.95% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-ascii sentence]` | 8.344022092823084e-05 | 6.16268626369846e-05 | 26.14% | 35.40% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'']` | 8.06390057648166e-05 | 5.9348932300641786e-05 | 26.40% | 35.87% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x00'*32]` | 8.339223696943339e-05 | 6.143669704491595e-05 | 26.33% | 35.74% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x00\\xff\\x00\\xff']` | 8.386885385641777e-05 | 6.15049294071608e-05 | 26.67% | 36.36% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*100]` | 8.422635206423999e-05 | 6.188549317441164e-05 | 26.52% | 36.10% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*2048]` | 8.274081604483525e-05 | 6.228846565995126e-05 | 24.72% | 32.83% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x01\\x02\\x03']` | 8.297571943690846e-05 | 6.174009099033164e-05 | 25.59% | 34.40% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.31416126322104e-05 | 6.2315826108282e-05 | 25.05% | 33.42% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x7f'*8]` | 8.327559061347901e-05 | 6.265867738623011e-05 | 24.76% | 32.90% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x80'*8]` | 8.290784852972536e-05 | 6.215435579387524e-05 | 25.03% | 33.39% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\xde\\xad\\xbe\\xef']` | 8.427277763338647e-05 | 6.116550099024312e-05 | 27.42% | 37.78% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\xff'*64]` | 8.504464426330012e-05 | 6.164713295902746e-05 | 27.51% | 37.95% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'a'*1024]` | 8.356796357580826e-05 | 6.215825053896414e-05 | 25.62% | 34.44% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'abc']` | 8.338266576855385e-05 | 6.124230628699482e-05 | 26.55% | 36.15% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-long alternating]` | 8.339710557245608e-05 | 6.23145864836247e-05 | 25.28% | 33.83% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-mixed pattern]` | 8.301861977958666e-05 | 6.118064485283486e-05 | 26.30% | 35.69% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-multiples of 0x10]` | 8.294400297999244e-05 | 6.233892464875498e-05 | 24.84% | 33.05% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-palindrome ascii]` | 8.382989589643676e-05 | 6.247541568128054e-05 | 25.47% | 34.18% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-palindrome numeric]` | 8.376694766931585e-05 | 6.221021568357997e-05 | 25.73% | 34.65% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-palindrome]` | 8.357040109242445e-05 | 6.22277373739108e-05 | 25.54% | 34.30% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-repeated 0-9]` | 8.332963632340842e-05 | 6.165620689619066e-05 | 26.01% | 35.15% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-single 0xff]` | 8.013901333905286e-05 | 5.9489806498919005e-05 | 25.77% | 34.71% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-single null byte]` | 8.073017376156698e-05 | 5.992156694406824e-05 | 25.78% | 34.73% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-two patterns]` | 8.330717975715887e-05 | 6.1766522787849e-05 | 25.86% | 34.87% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-0-9]` | 8.495037724187647e-05 | 5.92803369682673e-05 | 30.22% | 43.30% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-4-byte pattern]` | 8.479440733633198e-05 | 6.217859101665102e-05 | 26.67% | 36.37% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-all byte values]` | 8.478827886179592e-05 | 6.194309746904687e-05 | 26.94% | 36.88% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-alternating 0x00/0xff]` | 8.303093360305436e-05 | 5.967514439140643e-05 | 28.13% | 39.14% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-alternating 0xaa/0x55]` | 8.323342385724614e-05 | 6.129594097797893e-05 | 26.36% | 35.79% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-ascii sentence]` | 8.23069845786339e-05 | 6.054087262196027e-05 | 26.45% | 35.95% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'']` | 7.954360946668255e-05 | 5.858778291251932e-05 | 26.35% | 35.77% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x00'*32]` | 8.357414752064403e-05 | 6.077208159697232e-05 | 27.28% | 37.52% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x00\\xff\\x00\\xff']` | 8.243541390908452e-05 | 6.0185564346194634e-05 | 26.99% | 36.97% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*100]` | 8.347207197112576e-05 | 6.081821888755038e-05 | 27.14% | 37.25% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*2048]` | 0.00010671023591249223 | 8.496250846319225e-05 | 20.38% | 25.60% | 1.26x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x01\\x02\\x03']` | 8.011366366173192e-05 | 5.8571394987221525e-05 | 26.89% | 36.78% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.167321945647962e-05 | 6.0099477158379935e-05 | 26.41% | 35.90% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x7f'*8]` | 8.249057593999691e-05 | 6.031262832709946e-05 | 26.89% | 36.77% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x80'*8]` | 8.236727332903603e-05 | 6.044663212469396e-05 | 26.61% | 36.26% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\xde\\xad\\xbe\\xef']` | 8.212531046215409e-05 | 6.292233490569667e-05 | 23.38% | 30.52% | 1.31x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\xff'*64]` | 8.343178070749147e-05 | 6.111144094279654e-05 | 26.75% | 36.52% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'a'*1024]` | 0.00010216713800364962 | 7.73090736284103e-05 | 24.33% | 32.15% | 1.32x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'abc']` | 8.012998955769856e-05 | 5.902858407211222e-05 | 26.33% | 35.75% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-long alternating]` | 0.00010132382240795733 | 7.829413126737977e-05 | 22.73% | 29.41% | 1.29x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-mixed pattern]` | 8.433880177153223e-05 | 6.199164797632242e-05 | 26.50% | 36.05% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-multiples of 0x10]` | 8.277429740080695e-05 | 5.9822030876207574e-05 | 27.73% | 38.37% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-palindrome ascii]` | 8.224426090673177e-05 | 6.0581855929546533e-05 | 26.34% | 35.76% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-palindrome numeric]` | 8.19361081889131e-05 | 6.056887853217517e-05 | 26.08% | 35.28% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-palindrome]` | 8.325052301223801e-05 | 6.0434268193049404e-05 | 27.41% | 37.75% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-repeated 0-9]` | 8.343757393323069e-05 | 6.167043470652948e-05 | 26.09% | 35.30% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-single 0xff]` | 7.967348344968058e-05 | 5.826896781177851e-05 | 26.87% | 36.73% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-single null byte]` | 7.894594186184669e-05 | 5.843741873608922e-05 | 25.98% | 35.09% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-two patterns]` | 8.323599017509566e-05 | 6.0857434145128495e-05 | 26.89% | 36.77% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-0-9]` | 8.155944391748565e-05 | 5.841610993450571e-05 | 28.38% | 39.62% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-4-byte pattern]` | 8.325088098791546e-05 | 6.0922193637762126e-05 | 26.82% | 36.65% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-all byte values]` | 8.406596145529075e-05 | 6.056686498948495e-05 | 27.95% | 38.80% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-alternating 0x00/0xff]` | 8.135988155939501e-05 | 5.9837766760429356e-05 | 26.45% | 35.97% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-alternating 0xaa/0x55]` | 8.154568505659007e-05 | 5.9462396282962866e-05 | 27.08% | 37.14% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-ascii sentence]` | 8.50714137786448e-05 | 5.950596871047226e-05 | 30.05% | 42.96% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'']` | 7.798281931560021e-05 | 5.655100017550528e-05 | 27.48% | 37.90% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x00'*32]` | 8.112376547452729e-05 | 5.950998375479925e-05 | 26.64% | 36.32% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x00\\xff\\x00\\xff']` | 8.09977367163334e-05 | 5.905084247873777e-05 | 27.10% | 37.17% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*100]` | 8.199109125474554e-05 | 6.0105909560529665e-05 | 26.69% | 36.41% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*2048]` | 0.0001077737582948519 | 8.330046157825986e-05 | 22.71% | 29.38% | 1.29x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x01\\x02\\x03']` | 8.132855820246344e-05 | 5.943881600013775e-05 | 26.92% | 36.83% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.118418806625616e-05 | 5.8723553594249096e-05 | 27.67% | 38.25% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x7f'*8]` | 8.184241032633548e-05 | 5.855686328276118e-05 | 28.45% | 39.77% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x80'*8]` | 8.066409683949013e-05 | 5.8622512146106755e-05 | 27.33% | 37.60% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\xde\\xad\\xbe\\xef']` | 8.092313100690317e-05 | 5.9576069137822156e-05 | 26.38% | 35.83% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\xff'*64]` | 8.140455967361234e-05 | 5.969788807184846e-05 | 26.67% | 36.36% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'a'*1024]` | 9.801818790108813e-05 | 7.634320618276988e-05 | 22.11% | 28.39% | 1.28x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'abc']` | 8.132678305498368e-05 | 5.8916078250798293e-05 | 27.56% | 38.04% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-long alternating]` | 0.00010028520977146443 | 7.687148002281858e-05 | 23.35% | 30.46% | 1.30x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-mixed pattern]` | 8.625321418224586e-05 | 6.0158489318827836e-05 | 30.25% | 43.38% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-multiples of 0x10]` | 8.148166472831242e-05 | 5.8459829250578385e-05 | 28.25% | 39.38% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-palindrome ascii]` | 8.09398165631258e-05 | 5.7947875038295735e-05 | 28.41% | 39.68% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-palindrome numeric]` | 8.171645700814158e-05 | 5.919894109426395e-05 | 27.56% | 38.04% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-palindrome]` | 8.200891921679035e-05 | 5.854704353029032e-05 | 28.61% | 40.07% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-repeated 0-9]` | 8.640292048809523e-05 | 6.002093847136316e-05 | 30.53% | 43.95% | 1.44x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-single 0xff]` | 7.814525946225656e-05 | 5.7172172978665314e-05 | 26.84% | 36.68% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-single null byte]` | 7.839417804731216e-05 | 5.7179271314254106e-05 | 27.06% | 37.10% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-two patterns]` | 8.65082128967642e-05 | 5.9101849921317355e-05 | 31.68% | 46.37% | 1.46x | ✅ | -| `hexbytes_new['']` | 7.187600653615649e-05 | 3.711547486813823e-05 | 48.36% | 93.66% | 1.94x | ✅ | -| `hexbytes_new['0x'+'00'*64]` | 9.206240200704286e-05 | 5.2103245493038935e-05 | 43.40% | 76.69% | 1.77x | ✅ | -| `hexbytes_new['0x'+'a'*128]` | 9.288672524004619e-05 | 5.0473638746859295e-05 | 45.66% | 84.03% | 1.84x | ✅ | -| `hexbytes_new['0x'+'ff'*32]` | 9.007900296835155e-05 | 4.716217676208771e-05 | 47.64% | 91.00% | 1.91x | ✅ | -| `hexbytes_new['0x']` | 8.045518460289151e-05 | 3.861820185475324e-05 | 52.00% | 108.33% | 2.08x | ✅ | -| `hexbytes_new['0x1234']` | 8.750064676925577e-05 | 4.530785432084637e-05 | 48.22% | 93.12% | 1.93x | ✅ | -| `hexbytes_new['0xCAFEBABE']` | 8.72686114034651e-05 | 4.520030779029282e-05 | 48.21% | 93.07% | 1.93x | ✅ | -| `hexbytes_new['0xabcdef']` | 8.829037389268557e-05 | 4.5439760549192184e-05 | 48.53% | 94.30% | 1.94x | ✅ | -| `hexbytes_new['0xdeadbeef']` | 8.83417690574794e-05 | 4.71968700122485e-05 | 46.57% | 87.18% | 1.87x | ✅ | -| `hexbytes_new['abc']` | 8.3434339468516e-05 | 4.7921453890622364e-05 | 42.56% | 74.11% | 1.74x | ✅ | -| `hexbytes_new['deadbeef']` | 7.78518392258758e-05 | 4.176653216963581e-05 | 46.35% | 86.40% | 1.86x | ✅ | -| `hexbytes_new[0-9]` | 4.247946230703372e-05 | 2.5707444494787636e-05 | 39.48% | 65.24% | 1.65x | ✅ | -| `hexbytes_new[0]` | 0.00012525747156400677 | 6.140135831176088e-05 | 50.98% | 104.00% | 2.04x | ✅ | -| `hexbytes_new[123456]` | 0.00013157387795480674 | 6.725765882009888e-05 | 48.88% | 95.63% | 1.96x | ✅ | -| `hexbytes_new[2**16]` | 0.00013014946772006348 | 6.628157546086792e-05 | 49.07% | 96.36% | 1.96x | ✅ | -| `hexbytes_new[2**256-1]` | 0.000130804479081109 | 7.326525896179238e-05 | 43.99% | 78.54% | 1.79x | ✅ | -| `hexbytes_new[2**32]` | 0.0001322340980528789 | 7.10278064584895e-05 | 46.29% | 86.17% | 1.86x | ✅ | -| `hexbytes_new[2**64]` | 0.00013066663475398585 | 7.378235262227734e-05 | 43.53% | 77.10% | 1.77x | ✅ | -| `hexbytes_new[2**8]` | 0.00012772239171880044 | 6.334276449565793e-05 | 50.41% | 101.64% | 2.02x | ✅ | -| `hexbytes_new[4-byte pattern]` | 4.278307265941352e-05 | 2.664515797530688e-05 | 37.72% | 60.57% | 1.61x | ✅ | -| `hexbytes_new[False]` | 5.847194414842383e-05 | 2.6911896901620587e-05 | 53.97% | 117.27% | 2.17x | ✅ | -| `hexbytes_new[True]` | 6.052389796573496e-05 | 2.70871850162114e-05 | 55.25% | 123.44% | 2.23x | ✅ | -| `hexbytes_new[all byte values]` | 4.2820605326811456e-05 | 2.663537239656793e-05 | 37.80% | 60.77% | 1.61x | ✅ | -| `hexbytes_new[alternating 0x00/0xff]` | 4.266438961870035e-05 | 2.6717302102540028e-05 | 37.38% | 59.69% | 1.60x | ✅ | -| `hexbytes_new[alternating 0xaa/0x55]` | 4.255269179195082e-05 | 2.6590495662978765e-05 | 37.51% | 60.03% | 1.60x | ✅ | -| `hexbytes_new[ascii sentence]` | 4.3063771164318944e-05 | 2.576563848161034e-05 | 40.17% | 67.14% | 1.67x | ✅ | -| `hexbytes_new[b'']` | 4.24356245267544e-05 | 2.5323248357974074e-05 | 40.33% | 67.58% | 1.68x | ✅ | -| `hexbytes_new[b'\\x00'*32]` | 4.221803066531191e-05 | 2.6143641472193286e-05 | 38.07% | 61.48% | 1.61x | ✅ | -| `hexbytes_new[b'\\x00\\xff\\x00\\xff']` | 4.283357416602382e-05 | 2.5747728147875673e-05 | 39.89% | 66.36% | 1.66x | ✅ | -| `hexbytes_new[b'\\x01'*100]` | 4.2853508345090514e-05 | 2.6331886606565568e-05 | 38.55% | 62.74% | 1.63x | ✅ | -| `hexbytes_new[b'\\x01'*2048]` | 5.5454500119809736e-05 | 3.8122476259708996e-05 | 31.25% | 45.46% | 1.45x | ✅ | -| `hexbytes_new[b'\\x01\\x02\\x03']` | 4.235633539674121e-05 | 2.567211245119113e-05 | 39.39% | 64.99% | 1.65x | ✅ | -| `hexbytes_new[b'\\x10\\x20\\x30\\x40\\x50']` | 4.266183021775265e-05 | 2.5766875610684125e-05 | 39.60% | 65.57% | 1.66x | ✅ | -| `hexbytes_new[b'\\x7f'*8]` | 4.2356976807499604e-05 | 2.5641798424890412e-05 | 39.46% | 65.19% | 1.65x | ✅ | -| `hexbytes_new[b'\\x80'*8]` | 4.2317650578542036e-05 | 2.569354480117202e-05 | 39.28% | 64.70% | 1.65x | ✅ | -| `hexbytes_new[b'\\xde\\xad\\xbe\\xef']` | 4.2855726291966505e-05 | 2.55794383141787e-05 | 40.31% | 67.54% | 1.68x | ✅ | -| `hexbytes_new[b'\\xff'*64]` | 4.323803890889476e-05 | 2.689161002363233e-05 | 37.81% | 60.79% | 1.61x | ✅ | -| `hexbytes_new[b'a'*1024]` | 5.0680143616162246e-05 | 3.294380154282919e-05 | 35.00% | 53.84% | 1.54x | ✅ | -| `hexbytes_new[b'abc']` | 4.249936921167797e-05 | 2.567838949433384e-05 | 39.58% | 65.51% | 1.66x | ✅ | -| `hexbytes_new[bytearray(0-9)]` | 6.95340656148973e-05 | 3.690396758999365e-05 | 46.93% | 88.42% | 1.88x | ✅ | -| `hexbytes_new[bytearray(4-byte pattern)]` | 6.893620238345855e-05 | 3.864214749635716e-05 | 43.95% | 78.40% | 1.78x | ✅ | -| `hexbytes_new[bytearray(all byte values)]` | 6.978425475018694e-05 | 3.8076533827136296e-05 | 45.44% | 83.27% | 1.83x | ✅ | -| `hexbytes_new[bytearray(alternating 0x00/0xff)]` | 7.05342091161263e-05 | 3.731451347916396e-05 | 47.10% | 89.03% | 1.89x | ✅ | -| `hexbytes_new[bytearray(alternating 0xaa/0x55)]` | 6.972757109291266e-05 | 3.7753417963987255e-05 | 45.86% | 84.69% | 1.85x | ✅ | -| `hexbytes_new[bytearray(ascii sentence)]` | 7.004178157605682e-05 | 3.7309781562102375e-05 | 46.73% | 87.73% | 1.88x | ✅ | -| `hexbytes_new[bytearray(b'')]` | 6.774213118041401e-05 | 3.565252826450098e-05 | 47.37% | 90.01% | 1.90x | ✅ | -| `hexbytes_new[bytearray(b'\\x00'*32)]` | 6.982226028093515e-05 | 3.739251585267e-05 | 46.45% | 86.73% | 1.87x | ✅ | -| `hexbytes_new[bytearray(b'\\x00\\xff\\x00\\xff')]` | 7.00530319886894e-05 | 3.704759989272136e-05 | 47.11% | 89.09% | 1.89x | ✅ | -| `hexbytes_new[bytearray(b'\\x01'*100)]` | 7.014248970754344e-05 | 3.7833264861284294e-05 | 46.06% | 85.40% | 1.85x | ✅ | -| `hexbytes_new[bytearray(b'\\x01'*2048)]` | 9.306611869754197e-05 | 5.7365737196283094e-05 | 38.36% | 62.23% | 1.62x | ✅ | -| `hexbytes_new[bytearray(b'\\x01\\x02\\x03')]` | 6.957723599392608e-05 | 3.716828414803076e-05 | 46.58% | 87.20% | 1.87x | ✅ | -| `hexbytes_new[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 6.985857173842472e-05 | 3.697112429371292e-05 | 47.08% | 88.95% | 1.89x | ✅ | -| `hexbytes_new[bytearray(b'\\x7f'*8)]` | 6.886472075759649e-05 | 3.67080863631717e-05 | 46.70% | 87.60% | 1.88x | ✅ | -| `hexbytes_new[bytearray(b'\\x80'*8)]` | 6.836995925780335e-05 | 3.673418363646719e-05 | 46.27% | 86.12% | 1.86x | ✅ | -| `hexbytes_new[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 6.977316258596596e-05 | 3.736879256038579e-05 | 46.44% | 86.72% | 1.87x | ✅ | -| `hexbytes_new[bytearray(b'\\xff'*64)]` | 6.905436959781151e-05 | 3.751937116435395e-05 | 45.67% | 84.05% | 1.84x | ✅ | -| `hexbytes_new[bytearray(b'a'*1024)]` | 8.49170586286655e-05 | 4.992648900847446e-05 | 41.21% | 70.08% | 1.70x | ✅ | -| `hexbytes_new[bytearray(b'abc')]` | 6.939131340608572e-05 | 3.746702444946466e-05 | 46.01% | 85.21% | 1.85x | ✅ | -| `hexbytes_new[bytearray(long alternating)]` | 8.540101875651676e-05 | 5.1030301839094406e-05 | 40.25% | 67.35% | 1.67x | ✅ | -| `hexbytes_new[bytearray(mixed pattern)]` | 6.934604263510807e-05 | 3.8522424972305306e-05 | 44.45% | 80.01% | 1.80x | ✅ | -| `hexbytes_new[bytearray(multiples of 0x10)]` | 6.968915095273908e-05 | 3.675937655322673e-05 | 47.25% | 89.58% | 1.90x | ✅ | -| `hexbytes_new[bytearray(palindrome ascii)]` | 6.91408236486941e-05 | 3.7248212033737376e-05 | 46.13% | 85.62% | 1.86x | ✅ | -| `hexbytes_new[bytearray(palindrome numeric)]` | 6.842819166789907e-05 | 3.7242241374008936e-05 | 45.57% | 83.74% | 1.84x | ✅ | -| `hexbytes_new[bytearray(palindrome)]` | 7.023977486929806e-05 | 3.7806998326036466e-05 | 46.17% | 85.79% | 1.86x | ✅ | -| `hexbytes_new[bytearray(repeated 0-9)]` | 6.931371402297584e-05 | 3.790549212782003e-05 | 45.31% | 82.86% | 1.83x | ✅ | -| `hexbytes_new[bytearray(single 0xff)]` | 6.960975131467602e-05 | 3.7378918695139616e-05 | 46.30% | 86.23% | 1.86x | ✅ | -| `hexbytes_new[bytearray(single null byte)]` | 6.984820125945704e-05 | 3.72764009342491e-05 | 46.63% | 87.38% | 1.87x | ✅ | -| `hexbytes_new[bytearray(two patterns)]` | 7.005848521657388e-05 | 3.7648937556502977e-05 | 46.26% | 86.08% | 1.86x | ✅ | -| `hexbytes_new[long alternating]` | 5.041383905470062e-05 | 3.316323955881613e-05 | 34.22% | 52.02% | 1.52x | ✅ | -| `hexbytes_new[memoryview(0-9)]` | 7.993717802173928e-05 | 4.351984597910141e-05 | 45.56% | 83.68% | 1.84x | ✅ | -| `hexbytes_new[memoryview(4-byte pattern)]` | 8.352614774876686e-05 | 4.422316659583628e-05 | 47.05% | 88.87% | 1.89x | ✅ | -| `hexbytes_new[memoryview(all byte values)]` | 8.345564610381085e-05 | 4.388410947792567e-05 | 47.42% | 90.17% | 1.90x | ✅ | -| `hexbytes_new[memoryview(alternating 0x00/0xff)]` | 8.440867945999549e-05 | 4.33951537777885e-05 | 48.59% | 94.51% | 1.95x | ✅ | -| `hexbytes_new[memoryview(alternating 0xaa/0x55)]` | 8.368116994070649e-05 | 4.3563243391193054e-05 | 47.94% | 92.09% | 1.92x | ✅ | -| `hexbytes_new[memoryview(ascii sentence)]` | 8.289401503155546e-05 | 4.401885198259139e-05 | 46.90% | 88.31% | 1.88x | ✅ | -| `hexbytes_new[memoryview(b'')]` | 8.029413703482374e-05 | 4.011780951087135e-05 | 50.04% | 100.15% | 2.00x | ✅ | -| `hexbytes_new[memoryview(b'\\x00'*32)]` | 8.350964295041347e-05 | 4.4240350142295186e-05 | 47.02% | 88.76% | 1.89x | ✅ | -| `hexbytes_new[memoryview(b'\\x00\\xff\\x00\\xff')]` | 8.406044602789914e-05 | 4.3761780192862345e-05 | 47.94% | 92.09% | 1.92x | ✅ | -| `hexbytes_new[memoryview(b'\\x01'*100)]` | 8.264734500859322e-05 | 4.3991571227754476e-05 | 46.77% | 87.87% | 1.88x | ✅ | -| `hexbytes_new[memoryview(b'\\x01'*2048)]` | 0.00010613367015182173 | 6.431892533048162e-05 | 39.40% | 65.01% | 1.65x | ✅ | -| `hexbytes_new[memoryview(b'\\x01\\x02\\x03')]` | 8.294821830597736e-05 | 4.3489006009257866e-05 | 47.57% | 90.73% | 1.91x | ✅ | -| `hexbytes_new[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 8.312858591154287e-05 | 4.3736373901983196e-05 | 47.39% | 90.07% | 1.90x | ✅ | -| `hexbytes_new[memoryview(b'\\x7f'*8)]` | 8.168060108472474e-05 | 4.378246870985592e-05 | 46.40% | 86.56% | 1.87x | ✅ | -| `hexbytes_new[memoryview(b'\\x80'*8)]` | 8.221612568256672e-05 | 4.3319689627420114e-05 | 47.31% | 89.79% | 1.90x | ✅ | -| `hexbytes_new[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 8.339326137282136e-05 | 4.350991168556694e-05 | 47.83% | 91.66% | 1.92x | ✅ | -| `hexbytes_new[memoryview(b'\\xff'*64)]` | 8.3448866238303e-05 | 4.377323179787343e-05 | 47.54% | 90.64% | 1.91x | ✅ | -| `hexbytes_new[memoryview(b'a'*1024)]` | 9.93522255642983e-05 | 5.763793244382201e-05 | 41.99% | 72.37% | 1.72x | ✅ | -| `hexbytes_new[memoryview(b'abc')]` | 8.279582990315901e-05 | 4.3699292957952794e-05 | 47.22% | 89.47% | 1.89x | ✅ | -| `hexbytes_new[memoryview(long alternating)]` | 9.797042880855122e-05 | 5.727185276186311e-05 | 41.54% | 71.06% | 1.71x | ✅ | -| `hexbytes_new[memoryview(mixed pattern)]` | 8.294948916234722e-05 | 4.3634997814454674e-05 | 47.40% | 90.10% | 1.90x | ✅ | -| `hexbytes_new[memoryview(multiples of 0x10)]` | 8.113670386445784e-05 | 4.368276405172693e-05 | 46.16% | 85.74% | 1.86x | ✅ | -| `hexbytes_new[memoryview(palindrome ascii)]` | 8.318195163770402e-05 | 4.372693834099705e-05 | 47.43% | 90.23% | 1.90x | ✅ | -| `hexbytes_new[memoryview(palindrome numeric)]` | 8.346909385540398e-05 | 4.30177468171375e-05 | 48.46% | 94.03% | 1.94x | ✅ | -| `hexbytes_new[memoryview(palindrome)]` | 8.259786381310108e-05 | 4.391911388514271e-05 | 46.83% | 88.07% | 1.88x | ✅ | -| `hexbytes_new[memoryview(repeated 0-9)]` | 8.363024013507729e-05 | 4.38891036496465e-05 | 47.52% | 90.55% | 1.91x | ✅ | -| `hexbytes_new[memoryview(single 0xff)]` | 8.297601004585901e-05 | 4.343621792841316e-05 | 47.65% | 91.03% | 1.91x | ✅ | -| `hexbytes_new[memoryview(single null byte)]` | 8.440343358252629e-05 | 4.348144784366797e-05 | 48.48% | 94.11% | 1.94x | ✅ | -| `hexbytes_new[memoryview(two patterns)]` | 8.328144363068986e-05 | 4.347906328271583e-05 | 47.79% | 91.54% | 1.92x | ✅ | -| `hexbytes_new[mixed pattern]` | 4.290169444402308e-05 | 2.6526878314507255e-05 | 38.17% | 61.73% | 1.62x | ✅ | -| `hexbytes_new[multiples of 0x10]` | 4.216837532021829e-05 | 2.571299488069995e-05 | 39.02% | 64.00% | 1.64x | ✅ | -| `hexbytes_new[palindrome ascii]` | 4.242144287999865e-05 | 2.558629913891683e-05 | 39.69% | 65.80% | 1.66x | ✅ | -| `hexbytes_new[palindrome numeric]` | 4.274285942543968e-05 | 2.5627114675728542e-05 | 40.04% | 66.79% | 1.67x | ✅ | -| `hexbytes_new[palindrome]` | 4.2815230589208924e-05 | 2.5476636915406403e-05 | 40.50% | 68.06% | 1.68x | ✅ | -| `hexbytes_new[repeated 0-9]` | 4.2892621845209835e-05 | 2.6765973572780606e-05 | 37.60% | 60.25% | 1.60x | ✅ | -| `hexbytes_new[single 0xff]` | 4.278613468882647e-05 | 2.537814231766721e-05 | 40.69% | 68.59% | 1.69x | ✅ | -| `hexbytes_new[single null byte]` | 4.225382451745097e-05 | 2.5383828314942248e-05 | 39.93% | 66.46% | 1.66x | ✅ | -| `hexbytes_new[two patterns]` | 4.261855565122866e-05 | 2.6281564098630062e-05 | 38.33% | 62.16% | 1.62x | ✅ | -| `hexbytes_repr[0-9]` | 2.9235195099396078e-05 | 1.5192418831954908e-05 | 48.03% | 92.43% | 1.92x | ✅ | -| `hexbytes_repr[4-byte pattern]` | 0.00012166829057769285 | 4.177817934053407e-05 | 65.66% | 191.22% | 2.91x | ✅ | -| `hexbytes_repr[all byte values]` | 0.00012185891279496494 | 4.158201804237389e-05 | 65.88% | 193.06% | 2.93x | ✅ | -| `hexbytes_repr[alternating 0x00/0xff]` | 4.896757154050744e-05 | 2.090918988359975e-05 | 57.30% | 134.19% | 2.34x | ✅ | -| `hexbytes_repr[alternating 0xaa/0x55]` | 4.885238825849154e-05 | 2.084735239593969e-05 | 57.33% | 134.33% | 2.34x | ✅ | -| `hexbytes_repr[ascii sentence]` | 4.046045765093335e-05 | 1.8324152105888238e-05 | 54.71% | 120.80% | 2.21x | ✅ | -| `hexbytes_repr[b'']` | 2.1336348748599003e-05 | 1.2710992406068083e-05 | 40.43% | 67.86% | 1.68x | ✅ | -| `hexbytes_repr[b'\\x00'*32]` | 3.626581562929964e-05 | 1.7346331632359716e-05 | 52.17% | 109.07% | 2.09x | ✅ | -| `hexbytes_repr[b'\\x00\\xff\\x00\\xff']` | 2.6329545310885394e-05 | 1.4631990799940066e-05 | 44.43% | 79.95% | 1.80x | ✅ | -| `hexbytes_repr[b'\\x01'*100]` | 6.110192516339711e-05 | 2.3903194237482907e-05 | 60.88% | 155.62% | 2.56x | ✅ | -| `hexbytes_repr[b'\\x01'*2048]` | 0.0007705367622723461 | 0.0002229412559143363 | 71.07% | 245.62% | 3.46x | ✅ | -| `hexbytes_repr[b'\\x01\\x02\\x03']` | 2.6246381327036725e-05 | 1.4624216051321857e-05 | 44.28% | 79.47% | 1.79x | ✅ | -| `hexbytes_repr[b'\\x10\\x20\\x30\\x40\\x50']` | 2.7180684022235857e-05 | 1.4654945777657106e-05 | 46.08% | 85.47% | 1.85x | ✅ | -| `hexbytes_repr[b'\\x7f'*8]` | 2.83725688870761e-05 | 1.4838732835059721e-05 | 47.70% | 91.21% | 1.91x | ✅ | -| `hexbytes_repr[b'\\x80'*8]` | 2.8371168889990704e-05 | 1.4968495903767416e-05 | 47.24% | 89.54% | 1.90x | ✅ | -| `hexbytes_repr[b'\\xde\\xad\\xbe\\xef']` | 2.6372344980089936e-05 | 1.4118381068646362e-05 | 46.47% | 86.79% | 1.87x | ✅ | -| `hexbytes_repr[b'\\xff'*64]` | 4.8871217549970734e-05 | 2.0931898431562216e-05 | 57.17% | 133.48% | 2.33x | ✅ | -| `hexbytes_repr[b'a'*1024]` | 0.00040188494961825803 | 0.00012222423753413447 | 69.59% | 228.81% | 3.29x | ✅ | -| `hexbytes_repr[b'abc']` | 2.618081919622833e-05 | 1.4455382837678395e-05 | 44.79% | 81.11% | 1.81x | ✅ | -| `hexbytes_repr[long alternating]` | 0.00039846481988195656 | 0.00012259284607957712 | 69.23% | 225.03% | 3.25x | ✅ | -| `hexbytes_repr[mixed pattern]` | 9.773845534306344e-05 | 3.44727481698714e-05 | 64.73% | 183.52% | 2.84x | ✅ | -| `hexbytes_repr[multiples of 0x10]` | 2.910638703253044e-05 | 1.5185007564003744e-05 | 47.83% | 91.68% | 1.92x | ✅ | -| `hexbytes_repr[palindrome ascii]` | 2.763814403639247e-05 | 1.4814648338874089e-05 | 46.40% | 86.56% | 1.87x | ✅ | -| `hexbytes_repr[palindrome numeric]` | 2.710101169346885e-05 | 1.4595762460786128e-05 | 46.14% | 85.68% | 1.86x | ✅ | -| `hexbytes_repr[palindrome]` | 3.180561352267103e-05 | 1.6305599635558327e-05 | 48.73% | 95.06% | 1.95x | ✅ | -| `hexbytes_repr[repeated 0-9]` | 6.099143514266719e-05 | 2.379154788816956e-05 | 60.99% | 156.36% | 2.56x | ✅ | -| `hexbytes_repr[single 0xff]` | 2.5713310750110952e-05 | 1.385824108065418e-05 | 46.10% | 85.55% | 1.86x | ✅ | -| `hexbytes_repr[single null byte]` | 2.5691125795742833e-05 | 1.4090990072244553e-05 | 45.15% | 82.32% | 1.82x | ✅ | -| `hexbytes_repr[two patterns]` | 4.8883160890551966e-05 | 2.0655052849650852e-05 | 57.75% | 136.66% | 2.37x | ✅ | -| `hexbytes_to_0x_hex[0-9]` | 1.572234359240731e-05 | 1.4107699023500995e-05 | 10.27% | 11.45% | 1.11x | ✅ | -| `hexbytes_to_0x_hex[4-byte pattern]` | 4.254590930665352e-05 | 4.024901817799001e-05 | 5.40% | 5.71% | 1.06x | ✅ | -| `hexbytes_to_0x_hex[all byte values]` | 4.2673582088771386e-05 | 4.0224402736325815e-05 | 5.74% | 6.09% | 1.06x | ✅ | -| `hexbytes_to_0x_hex[alternating 0x00/0xff]` | 2.069014657130875e-05 | 1.8770449533431738e-05 | 9.28% | 10.23% | 1.10x | ✅ | -| `hexbytes_to_0x_hex[alternating 0xaa/0x55]` | 2.099026827769922e-05 | 1.9087322691500777e-05 | 9.07% | 9.97% | 1.10x | ✅ | -| `hexbytes_to_0x_hex[ascii sentence]` | 1.8862271472816303e-05 | 1.6993767237708192e-05 | 9.91% | 11.00% | 1.11x | ✅ | -| `hexbytes_to_0x_hex[b'']` | 1.0093981001840318e-05 | 1.1241378596169978e-05 | -11.37% | -10.21% | 0.90x | ❌ | -| `hexbytes_to_0x_hex[b'\\x00'*32]` | 1.7499615810712146e-05 | 1.5613534737679413e-05 | 10.78% | 12.08% | 1.12x | ✅ | -| `hexbytes_to_0x_hex[b'\\x00\\xff\\x00\\xff']` | 1.5096251300732518e-05 | 1.3398327529298406e-05 | 11.25% | 12.67% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[b'\\x01'*100]` | 2.4994013817017275e-05 | 2.2420431870923486e-05 | 10.30% | 11.48% | 1.11x | ✅ | -| `hexbytes_to_0x_hex[b'\\x01'*2048]` | 0.00022327877667327242 | 0.00022155423743013973 | 0.77% | 0.78% | 1.01x | ✅ | -| `hexbytes_to_0x_hex[b'\\x01\\x02\\x03']` | 1.4949097440647257e-05 | 1.3136081912910963e-05 | 12.13% | 13.80% | 1.14x | ✅ | -| `hexbytes_to_0x_hex[b'\\x10\\x20\\x30\\x40\\x50']` | 1.5085284184727312e-05 | 1.3500232033819185e-05 | 10.51% | 11.74% | 1.12x | ✅ | -| `hexbytes_to_0x_hex[b'\\x7f'*8]` | 1.5477794584565958e-05 | 1.3837466020806903e-05 | 10.60% | 11.85% | 1.12x | ✅ | -| `hexbytes_to_0x_hex[b'\\x80'*8]` | 1.5341486495262567e-05 | 1.3867366264958598e-05 | 9.61% | 10.63% | 1.11x | ✅ | -| `hexbytes_to_0x_hex[b'\\xde\\xad\\xbe\\xef']` | 1.5073188332194708e-05 | 1.3349973535611335e-05 | 11.43% | 12.91% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[b'\\xff'*64]` | 2.0709806906741908e-05 | 1.8970930765454188e-05 | 8.40% | 9.17% | 1.09x | ✅ | -| `hexbytes_to_0x_hex[b'a'*1024]` | 0.00012273627537299432 | 0.000121509033672454 | 1.00% | 1.01% | 1.01x | ✅ | -| `hexbytes_to_0x_hex[b'abc']` | 1.4994784239154681e-05 | 1.3194834816697029e-05 | 12.00% | 13.64% | 1.14x | ✅ | -| `hexbytes_to_0x_hex[long alternating]` | 0.0001228400938215593 | 0.00012183138415757379 | 0.82% | 0.83% | 1.01x | ✅ | -| `hexbytes_to_0x_hex[mixed pattern]` | 3.4952237402039935e-05 | 3.298176539972781e-05 | 5.64% | 5.97% | 1.06x | ✅ | -| `hexbytes_to_0x_hex[multiples of 0x10]` | 1.5729951057286166e-05 | 1.400216052409979e-05 | 10.98% | 12.34% | 1.12x | ✅ | -| `hexbytes_to_0x_hex[palindrome ascii]` | 1.5332414275091718e-05 | 1.358913579331186e-05 | 11.37% | 12.83% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[palindrome numeric]` | 1.5168139790291177e-05 | 1.3474622081405412e-05 | 11.16% | 12.57% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[palindrome]` | 1.654937734377445e-05 | 1.4682665411405627e-05 | 11.28% | 12.71% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[repeated 0-9]` | 2.5044551873583642e-05 | 2.237342131255036e-05 | 10.67% | 11.94% | 1.12x | ✅ | -| `hexbytes_to_0x_hex[single 0xff]` | 1.4756711750680648e-05 | 1.2839414257926546e-05 | 12.99% | 14.93% | 1.15x | ✅ | -| `hexbytes_to_0x_hex[single null byte]` | 1.4763823544209967e-05 | 1.28110887486335e-05 | 13.23% | 15.24% | 1.15x | ✅ | -| `hexbytes_to_0x_hex[two patterns]` | 2.084530987872292e-05 | 1.8892028390652176e-05 | 9.37% | 10.34% | 1.10x | ✅ | +| `hexbytes_getitem_index[-1-0-9]` | 2.4398669194312766e-05 | 2.3700239430198145e-05 | 2.86% | 2.95% | 1.03x | ✅ | +| `hexbytes_getitem_index[-1-4-byte pattern]` | 2.450830766017991e-05 | 2.369375918295451e-05 | 3.32% | 3.44% | 1.03x | ✅ | +| `hexbytes_getitem_index[-1-all byte values]` | 2.469434566762072e-05 | 2.3625445209234108e-05 | 4.33% | 4.52% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-alternating 0x00/0xff]` | 2.4221882583748995e-05 | 2.3879656085388328e-05 | 1.41% | 1.43% | 1.01x | ✅ | +| `hexbytes_getitem_index[-1-alternating 0xaa/0x55]` | 2.5046820689635422e-05 | 2.3829327851060934e-05 | 4.86% | 5.11% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-ascii sentence]` | 2.4919593826664666e-05 | 2.367313657271819e-05 | 5.00% | 5.27% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x00'*32]` | 2.480809689985565e-05 | 2.3793717344139304e-05 | 4.09% | 4.26% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x00\\xff\\x00\\xff']` | 2.461919271363367e-05 | 2.3431945682523965e-05 | 4.82% | 5.07% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x01'*100]` | 2.4630726452825696e-05 | 2.357774729583105e-05 | 4.28% | 4.47% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x01'*2048]` | 2.4536670433405248e-05 | 2.3647336955355246e-05 | 3.62% | 3.76% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x01\\x02\\x03']` | 2.4523423773058737e-05 | 2.3485627301671318e-05 | 4.23% | 4.42% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.4639062929167396e-05 | 2.3746049912177567e-05 | 3.62% | 3.76% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x7f'*8]` | 2.430450130499954e-05 | 2.4710169230251275e-05 | -1.67% | -1.64% | 0.98x | ❌ | +| `hexbytes_getitem_index[-1-b'\\x80'*8]` | 2.4434900729053444e-05 | 2.423331681637108e-05 | 0.82% | 0.83% | 1.01x | ✅ | +| `hexbytes_getitem_index[-1-b'\\xde\\xad\\xbe\\xef']` | 2.4629613312282295e-05 | 2.3423216545008263e-05 | 4.90% | 5.15% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'\\xff'*64]` | 2.4845800747969475e-05 | 2.3703368386438114e-05 | 4.60% | 4.82% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'a'*1024]` | 2.4678259460932807e-05 | 2.3508701807217696e-05 | 4.74% | 4.97% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'abc']` | 2.4708790319489954e-05 | 2.3749122679039042e-05 | 3.88% | 4.04% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-long alternating]` | 2.4499890376275927e-05 | 2.3536941760001132e-05 | 3.93% | 4.09% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-mixed pattern]` | 2.4833918550948886e-05 | 2.366002094185289e-05 | 4.73% | 4.96% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-multiples of 0x10]` | 2.4530932090952518e-05 | 2.3603860275321053e-05 | 3.78% | 3.93% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-palindrome ascii]` | 2.473792927775634e-05 | 2.3785628596251623e-05 | 3.85% | 4.00% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-palindrome numeric]` | 2.4674051716588214e-05 | 2.3774631189217717e-05 | 3.65% | 3.78% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-palindrome]` | 2.4322168575491326e-05 | 2.3537716791990592e-05 | 3.23% | 3.33% | 1.03x | ✅ | +| `hexbytes_getitem_index[-1-repeated 0-9]` | 2.4822137512721744e-05 | 2.3680120256715353e-05 | 4.60% | 4.82% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-two patterns]` | 2.484730465183926e-05 | 2.353033140356207e-05 | 5.30% | 5.60% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-0-9]` | 2.3541203822722762e-05 | 2.2334071376755506e-05 | 5.13% | 5.40% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-4-byte pattern]` | 2.3622836172783007e-05 | 2.261316220395509e-05 | 4.27% | 4.46% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-all byte values]` | 2.3329929826634935e-05 | 2.249788634066555e-05 | 3.57% | 3.70% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-alternating 0x00/0xff]` | 2.3476671348092725e-05 | 2.3030998040207866e-05 | 1.90% | 1.94% | 1.02x | ✅ | +| `hexbytes_getitem_index[0-alternating 0xaa/0x55]` | 2.346955965933665e-05 | 2.241591994259486e-05 | 4.49% | 4.70% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-ascii sentence]` | 2.3566707478263383e-05 | 2.2299691770425253e-05 | 5.38% | 5.68% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-b'\\x00'*32]` | 2.3601092216924777e-05 | 2.2700134835908334e-05 | 3.82% | 3.97% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-b'\\x00\\xff\\x00\\xff']` | 2.3561287944174144e-05 | 2.243874331292178e-05 | 4.76% | 5.00% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-b'\\x01'*100]` | 2.3525849511031913e-05 | 2.2286282985963923e-05 | 5.27% | 5.56% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-b'\\x01'*2048]` | 2.3582326682357088e-05 | 2.2401205888529327e-05 | 5.01% | 5.27% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-b'\\x01\\x02\\x03']` | 2.3412919520580767e-05 | 2.2241284475429845e-05 | 5.00% | 5.27% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3410224423527353e-05 | 2.2438331991382242e-05 | 4.15% | 4.33% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-b'\\x7f'*8]` | 2.347658121884457e-05 | 2.2298735565323555e-05 | 5.02% | 5.28% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-b'\\x80'*8]` | 2.3496997180154425e-05 | 2.2376444378580165e-05 | 4.77% | 5.01% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-b'\\xde\\xad\\xbe\\xef']` | 2.361280092946136e-05 | 2.2391127006112786e-05 | 5.17% | 5.46% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-b'\\xff'*64]` | 2.3616494262082657e-05 | 2.2447046372853796e-05 | 4.95% | 5.21% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-b'a'*1024]` | 2.373420717375194e-05 | 2.2398481708208354e-05 | 5.63% | 5.96% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-b'abc']` | 2.3605149699265704e-05 | 2.241611295777528e-05 | 5.04% | 5.30% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-long alternating]` | 2.3669426547505043e-05 | 2.248244277772446e-05 | 5.01% | 5.28% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-mixed pattern]` | 2.3352373805274287e-05 | 2.2321574882297265e-05 | 4.41% | 4.62% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-multiples of 0x10]` | 2.3676950599830587e-05 | 2.2436675795419113e-05 | 5.24% | 5.53% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-palindrome ascii]` | 2.3474435860965547e-05 | 2.297665862906155e-05 | 2.12% | 2.17% | 1.02x | ✅ | +| `hexbytes_getitem_index[0-palindrome numeric]` | 2.3518989924499344e-05 | 2.246358438029081e-05 | 4.49% | 4.70% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-palindrome]` | 2.3599375002859852e-05 | 2.233775321964051e-05 | 5.35% | 5.65% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-repeated 0-9]` | 2.3640353361698843e-05 | 2.2849892971217804e-05 | 3.34% | 3.46% | 1.03x | ✅ | +| `hexbytes_getitem_index[0-single 0xff]` | 2.346341920319022e-05 | 2.2292270458668258e-05 | 4.99% | 5.25% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-single null byte]` | 2.3446197840391946e-05 | 2.2330860182138552e-05 | 4.76% | 4.99% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-two patterns]` | 2.3454060027859588e-05 | 2.224453190987915e-05 | 5.16% | 5.44% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-0-9]` | 2.3691002162131447e-05 | 2.2247329677103568e-05 | 6.09% | 6.49% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-4-byte pattern]` | 2.33110074747669e-05 | 2.219165544351316e-05 | 4.80% | 5.04% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-all byte values]` | 2.321439614216639e-05 | 2.2624139602615813e-05 | 2.54% | 2.61% | 1.03x | ✅ | +| `hexbytes_getitem_index[1-alternating 0x00/0xff]` | 2.3570205902531207e-05 | 2.227391273477598e-05 | 5.50% | 5.82% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-alternating 0xaa/0x55]` | 2.3448826688190982e-05 | 2.2233950075531636e-05 | 5.18% | 5.46% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-ascii sentence]` | 2.3550750942210626e-05 | 2.2736051508925692e-05 | 3.46% | 3.58% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-b'\\x00'*32]` | 2.3604233169041847e-05 | 2.1982013238930223e-05 | 6.87% | 7.38% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-b'\\x00\\xff\\x00\\xff']` | 2.3608209286437567e-05 | 2.2355126748856482e-05 | 5.31% | 5.61% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-b'\\x01'*100]` | 2.3622266034431313e-05 | 2.2367354003926377e-05 | 5.31% | 5.61% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-b'\\x01'*2048]` | 2.353366675738795e-05 | 2.2229760972989778e-05 | 5.54% | 5.87% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-b'\\x01\\x02\\x03']` | 2.368599188421352e-05 | 2.2288533528008944e-05 | 5.90% | 6.27% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.4033949295008122e-05 | 2.222385906031731e-05 | 7.53% | 8.14% | 1.08x | ✅ | +| `hexbytes_getitem_index[1-b'\\x7f'*8]` | 2.35061541926734e-05 | 2.240575967694529e-05 | 4.68% | 4.91% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-b'\\x80'*8]` | 2.3666815765234934e-05 | 2.23942349366325e-05 | 5.38% | 5.68% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-b'\\xde\\xad\\xbe\\xef']` | 2.371331240249766e-05 | 2.2191519427788198e-05 | 6.42% | 6.86% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-b'\\xff'*64]` | 2.3555832444242367e-05 | 2.2329827167497338e-05 | 5.20% | 5.49% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-b'a'*1024]` | 2.3592150805490244e-05 | 2.235376930881143e-05 | 5.25% | 5.54% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-b'abc']` | 2.3611516424938476e-05 | 2.231843472964511e-05 | 5.48% | 5.79% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-long alternating]` | 2.337883160320926e-05 | 2.2163718890448673e-05 | 5.20% | 5.48% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-mixed pattern]` | 2.3575520238429644e-05 | 2.265363635225418e-05 | 3.91% | 4.07% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-multiples of 0x10]` | 2.364329837196481e-05 | 2.2326172595914224e-05 | 5.57% | 5.90% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-palindrome ascii]` | 2.3544388609197237e-05 | 2.2409207798827006e-05 | 4.82% | 5.07% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-palindrome numeric]` | 2.3424581187317112e-05 | 2.227132816936025e-05 | 4.92% | 5.18% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-palindrome]` | 2.3470140686648523e-05 | 2.224165796693019e-05 | 5.23% | 5.52% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-repeated 0-9]` | 2.3702048596976362e-05 | 2.2716539273379364e-05 | 4.16% | 4.34% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-two patterns]` | 2.3501602522445434e-05 | 2.2655002107860892e-05 | 3.60% | 3.74% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-0-9]` | 2.3447794509934847e-05 | 2.245291372514099e-05 | 4.24% | 4.43% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-4-byte pattern]` | 2.3414400954146488e-05 | 2.236234712216072e-05 | 4.49% | 4.70% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-all byte values]` | 2.3684990344133688e-05 | 2.251101096794346e-05 | 4.96% | 5.22% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-alternating 0x00/0xff]` | 2.3432310978497272e-05 | 2.2746032880972158e-05 | 2.93% | 3.02% | 1.03x | ✅ | +| `hexbytes_getitem_index[2-alternating 0xaa/0x55]` | 2.35244209265714e-05 | 2.2957627484000354e-05 | 2.41% | 2.47% | 1.02x | ✅ | +| `hexbytes_getitem_index[2-ascii sentence]` | 2.3471623288978318e-05 | 2.2339471145347112e-05 | 4.82% | 5.07% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-b'\\x00'*32]` | 2.3426903962094434e-05 | 2.2838012432582728e-05 | 2.51% | 2.58% | 1.03x | ✅ | +| `hexbytes_getitem_index[2-b'\\x00\\xff\\x00\\xff']` | 2.3630965912605683e-05 | 2.2796048077793713e-05 | 3.53% | 3.66% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-b'\\x01'*100]` | 2.3486774889671138e-05 | 2.2881794591782572e-05 | 2.58% | 2.64% | 1.03x | ✅ | +| `hexbytes_getitem_index[2-b'\\x01'*2048]` | 2.349018185294118e-05 | 2.231556887736033e-05 | 5.00% | 5.26% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-b'\\x01\\x02\\x03']` | 2.3546886786176074e-05 | 2.2789122391445514e-05 | 3.22% | 3.33% | 1.03x | ✅ | +| `hexbytes_getitem_index[2-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3453746555788547e-05 | 2.3081406378672532e-05 | 1.59% | 1.61% | 1.02x | ✅ | +| `hexbytes_getitem_index[2-b'\\x7f'*8]` | 2.3551237743709792e-05 | 2.2876545241825237e-05 | 2.86% | 2.95% | 1.03x | ✅ | +| `hexbytes_getitem_index[2-b'\\x80'*8]` | 2.355690728506141e-05 | 2.292595541043976e-05 | 2.68% | 2.75% | 1.03x | ✅ | +| `hexbytes_getitem_index[2-b'\\xde\\xad\\xbe\\xef']` | 2.3693109690857947e-05 | 2.2729436032433892e-05 | 4.07% | 4.24% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-b'\\xff'*64]` | 2.3581684721096462e-05 | 2.268501562623656e-05 | 3.80% | 3.95% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-b'a'*1024]` | 2.354630700997268e-05 | 2.5023076004966393e-05 | -6.27% | -5.90% | 0.94x | ❌ | +| `hexbytes_getitem_index[2-b'abc']` | 2.363259064606739e-05 | 2.2647233586951612e-05 | 4.17% | 4.35% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-long alternating]` | 2.4018256351607184e-05 | 2.2478733509993685e-05 | 6.41% | 6.85% | 1.07x | ✅ | +| `hexbytes_getitem_index[2-mixed pattern]` | 2.3367894370210983e-05 | 2.242336362987036e-05 | 4.04% | 4.21% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-multiples of 0x10]` | 2.370163353917482e-05 | 2.248870449157068e-05 | 5.12% | 5.39% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-palindrome ascii]` | 2.356338894428661e-05 | 2.2411169004831644e-05 | 4.89% | 5.14% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-palindrome numeric]` | 2.3622544899928542e-05 | 2.2507028865913996e-05 | 4.72% | 4.96% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-palindrome]` | 2.3549986274773133e-05 | 2.299134990219192e-05 | 2.37% | 2.43% | 1.02x | ✅ | +| `hexbytes_getitem_index[2-repeated 0-9]` | 2.36673258879375e-05 | 2.403737492424099e-05 | -1.56% | -1.54% | 0.98x | ❌ | +| `hexbytes_getitem_index[2-two patterns]` | 2.358372096707211e-05 | 2.2376497521475763e-05 | 5.12% | 5.40% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-0-9]` | 2.3430375870849962e-05 | 2.270036136174573e-05 | 3.12% | 3.22% | 1.03x | ✅ | +| `hexbytes_getitem_index[3-4-byte pattern]` | 2.3620840986153767e-05 | 2.2422979718020706e-05 | 5.07% | 5.34% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-all byte values]` | 2.355055765212395e-05 | 2.25145249559774e-05 | 4.40% | 4.60% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-alternating 0x00/0xff]` | 2.362852452479877e-05 | 2.2429554069679868e-05 | 5.07% | 5.35% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-alternating 0xaa/0x55]` | 2.3530991978858058e-05 | 2.238972319643262e-05 | 4.85% | 5.10% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-ascii sentence]` | 2.3917420603717367e-05 | 2.2482941233883195e-05 | 6.00% | 6.38% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'\\x00'*32]` | 2.356554442652864e-05 | 2.2457070073763163e-05 | 4.70% | 4.94% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-b'\\x00\\xff\\x00\\xff']` | 2.3631208230445264e-05 | 2.236464059504878e-05 | 5.36% | 5.66% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'\\x01'*100]` | 2.347451428710235e-05 | 2.2288569622260236e-05 | 5.05% | 5.32% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-b'\\x01'*2048]` | 2.3565868591551286e-05 | 2.2178811569900696e-05 | 5.89% | 6.25% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3565444968442306e-05 | 2.2315580383712517e-05 | 5.30% | 5.60% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'\\x7f'*8]` | 2.3734809187180593e-05 | 2.2231962874165838e-05 | 6.33% | 6.76% | 1.07x | ✅ | +| `hexbytes_getitem_index[3-b'\\x80'*8]` | 2.3565977354026065e-05 | 2.2494905322609714e-05 | 4.54% | 4.76% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-b'\\xde\\xad\\xbe\\xef']` | 2.355828355543286e-05 | 2.231851023992083e-05 | 5.26% | 5.55% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'\\xff'*64]` | 2.3594167980873218e-05 | 2.2188483642410566e-05 | 5.96% | 6.34% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'a'*1024]` | 2.364989756239821e-05 | 2.2240367402684743e-05 | 5.96% | 6.34% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-long alternating]` | 2.3680457373084312e-05 | 2.2335676332577995e-05 | 5.68% | 6.02% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-mixed pattern]` | 2.3415303198687486e-05 | 2.277437797116532e-05 | 2.74% | 2.81% | 1.03x | ✅ | +| `hexbytes_getitem_index[3-multiples of 0x10]` | 2.3718855234694836e-05 | 2.2335508587262137e-05 | 5.83% | 6.19% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-palindrome ascii]` | 2.329332823872692e-05 | 2.2483146158038168e-05 | 3.48% | 3.60% | 1.04x | ✅ | +| `hexbytes_getitem_index[3-palindrome numeric]` | 2.33700070278026e-05 | 2.252354519533211e-05 | 3.62% | 3.76% | 1.04x | ✅ | +| `hexbytes_getitem_index[3-palindrome]` | 2.3533434010267676e-05 | 2.24989332451534e-05 | 4.40% | 4.60% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-repeated 0-9]` | 2.3492518813868187e-05 | 2.222076752684814e-05 | 5.41% | 5.72% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-two patterns]` | 2.353829621424519e-05 | 2.2505458937949237e-05 | 4.39% | 4.59% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-0-9]` | 2.3554913651354285e-05 | 2.26048513922894e-05 | 4.03% | 4.20% | 1.04x | ✅ | +| `hexbytes_getitem_index[4-4-byte pattern]` | 2.335079294816758e-05 | 2.2638758698831922e-05 | 3.05% | 3.15% | 1.03x | ✅ | +| `hexbytes_getitem_index[4-all byte values]` | 2.3351627466755163e-05 | 2.259879014009907e-05 | 3.22% | 3.33% | 1.03x | ✅ | +| `hexbytes_getitem_index[4-alternating 0x00/0xff]` | 2.312076762397251e-05 | 2.26680487317488e-05 | 1.96% | 2.00% | 1.02x | ✅ | +| `hexbytes_getitem_index[4-alternating 0xaa/0x55]` | 2.3521174496115945e-05 | 2.255973265274122e-05 | 4.09% | 4.26% | 1.04x | ✅ | +| `hexbytes_getitem_index[4-ascii sentence]` | 2.3609478554188136e-05 | 2.2545762072498146e-05 | 4.51% | 4.72% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-b'\\x00'*32]` | 2.3594566134940127e-05 | 2.252329739788702e-05 | 4.54% | 4.76% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-b'\\x01'*100]` | 2.3646371334716933e-05 | 2.2589177318483427e-05 | 4.47% | 4.68% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-b'\\x01'*2048]` | 2.3451327541899686e-05 | 2.2728069735570058e-05 | 3.08% | 3.18% | 1.03x | ✅ | +| `hexbytes_getitem_index[4-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3251194910120126e-05 | 2.2511030151668294e-05 | 3.18% | 3.29% | 1.03x | ✅ | +| `hexbytes_getitem_index[4-b'\\x7f'*8]` | 2.366308734676309e-05 | 2.248238170587158e-05 | 4.99% | 5.25% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-b'\\x80'*8]` | 2.3515283048479743e-05 | 2.2548431010881657e-05 | 4.11% | 4.29% | 1.04x | ✅ | +| `hexbytes_getitem_index[4-b'\\xff'*64]` | 2.350706751789445e-05 | 2.2500897715673247e-05 | 4.28% | 4.47% | 1.04x | ✅ | +| `hexbytes_getitem_index[4-b'a'*1024]` | 2.3611694880794047e-05 | 2.2476169469517998e-05 | 4.81% | 5.05% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-long alternating]` | 2.3379939075478136e-05 | 2.283467527057928e-05 | 2.33% | 2.39% | 1.02x | ✅ | +| `hexbytes_getitem_index[4-mixed pattern]` | 2.3542909088823123e-05 | 2.2733400459804156e-05 | 3.44% | 3.56% | 1.04x | ✅ | +| `hexbytes_getitem_index[4-multiples of 0x10]` | 2.342789732047792e-05 | 2.253868107127675e-05 | 3.80% | 3.95% | 1.04x | ✅ | +| `hexbytes_getitem_index[4-palindrome ascii]` | 2.336135906743707e-05 | 2.2605280771210126e-05 | 3.24% | 3.34% | 1.03x | ✅ | +| `hexbytes_getitem_index[4-palindrome numeric]` | 2.330131704055655e-05 | 2.257940443028166e-05 | 3.10% | 3.20% | 1.03x | ✅ | +| `hexbytes_getitem_index[4-palindrome]` | 2.3465003613257747e-05 | 2.238057445687541e-05 | 4.62% | 4.85% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-repeated 0-9]` | 2.346569591080782e-05 | 2.2596475068641457e-05 | 3.70% | 3.85% | 1.04x | ✅ | +| `hexbytes_getitem_index[4-two patterns]` | 2.349641343836371e-05 | 2.2730672425060844e-05 | 3.26% | 3.37% | 1.03x | ✅ | +| `hexbytes_getitem_index[5-0-9]` | 2.3364267710856882e-05 | 2.2603407850235376e-05 | 3.26% | 3.37% | 1.03x | ✅ | +| `hexbytes_getitem_index[5-4-byte pattern]` | 2.346512118943661e-05 | 2.251140409406931e-05 | 4.06% | 4.24% | 1.04x | ✅ | +| `hexbytes_getitem_index[5-all byte values]` | 2.3603728532851323e-05 | 2.2519851788424393e-05 | 4.59% | 4.81% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-alternating 0x00/0xff]` | 2.345741753769283e-05 | 2.2795482154973822e-05 | 2.82% | 2.90% | 1.03x | ✅ | +| `hexbytes_getitem_index[5-alternating 0xaa/0x55]` | 2.3407569389008447e-05 | 2.2645062425795362e-05 | 3.26% | 3.37% | 1.03x | ✅ | +| `hexbytes_getitem_index[5-ascii sentence]` | 2.3839902582688995e-05 | 2.26472965582778e-05 | 5.00% | 5.27% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-b'\\x00'*32]` | 2.3492632804350805e-05 | 2.2724036265715902e-05 | 3.27% | 3.38% | 1.03x | ✅ | +| `hexbytes_getitem_index[5-b'\\x01'*100]` | 2.33179453318083e-05 | 2.2441267748664556e-05 | 3.76% | 3.91% | 1.04x | ✅ | +| `hexbytes_getitem_index[5-b'\\x01'*2048]` | 2.3202639886426448e-05 | 2.243839201978072e-05 | 3.29% | 3.41% | 1.03x | ✅ | +| `hexbytes_getitem_index[5-b'\\x7f'*8]` | 2.3252895219247304e-05 | 2.2602382249210317e-05 | 2.80% | 2.88% | 1.03x | ✅ | +| `hexbytes_getitem_index[5-b'\\x80'*8]` | 2.349991255846107e-05 | 2.246588673950351e-05 | 4.40% | 4.60% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-b'\\xff'*64]` | 2.343924735740345e-05 | 2.2644443546508992e-05 | 3.39% | 3.51% | 1.04x | ✅ | +| `hexbytes_getitem_index[5-b'a'*1024]` | 2.3385405659539746e-05 | 2.2660125852459174e-05 | 3.10% | 3.20% | 1.03x | ✅ | +| `hexbytes_getitem_index[5-long alternating]` | 2.3302206241430013e-05 | 2.240403538545637e-05 | 3.85% | 4.01% | 1.04x | ✅ | +| `hexbytes_getitem_index[5-mixed pattern]` | 2.371721710232653e-05 | 2.2813514673213343e-05 | 3.81% | 3.96% | 1.04x | ✅ | +| `hexbytes_getitem_index[5-multiples of 0x10]` | 2.333347548205068e-05 | 2.243353429485387e-05 | 3.86% | 4.01% | 1.04x | ✅ | +| `hexbytes_getitem_index[5-palindrome ascii]` | 2.361156515169544e-05 | 2.2656427528344982e-05 | 4.05% | 4.22% | 1.04x | ✅ | +| `hexbytes_getitem_index[5-palindrome]` | 2.3434750740978887e-05 | 2.2784388845810203e-05 | 2.78% | 2.85% | 1.03x | ✅ | +| `hexbytes_getitem_index[5-repeated 0-9]` | 2.3810674316973303e-05 | 2.2685188581123482e-05 | 4.73% | 4.96% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-two patterns]` | 2.3753898905261842e-05 | 2.2734604602605102e-05 | 4.29% | 4.48% | 1.04x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-0-9]` | 8.239547519728395e-05 | 5.90532224219288e-05 | 28.33% | 39.53% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-4-byte pattern]` | 8.31382538625647e-05 | 5.912707244901216e-05 | 28.88% | 40.61% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-all byte values]` | 8.179312836312707e-05 | 5.9638827451381435e-05 | 27.09% | 37.15% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-alternating 0x00/0xff]` | 8.17457761844264e-05 | 5.9071600820835626e-05 | 27.74% | 38.38% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-alternating 0xaa/0x55]` | 8.226122703085443e-05 | 5.937393396531789e-05 | 27.82% | 38.55% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-ascii sentence]` | 8.173244012391578e-05 | 5.898515664699402e-05 | 27.83% | 38.56% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'']` | 7.966093196970282e-05 | 5.65451108707521e-05 | 29.02% | 40.88% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00'*32]` | 8.327405550440927e-05 | 5.925427766542303e-05 | 28.84% | 40.54% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00\\xff\\x00\\xff']` | 8.307391304389725e-05 | 5.9276505689278354e-05 | 28.65% | 40.15% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*100]` | 8.183371181443498e-05 | 6.0420226135196805e-05 | 26.17% | 35.44% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*2048]` | 8.18876388938008e-05 | 5.92397193469809e-05 | 27.66% | 38.23% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01\\x02\\x03']` | 8.296002548021697e-05 | 5.8521818466662145e-05 | 29.46% | 41.76% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.237300552798887e-05 | 6.126452555617149e-05 | 25.63% | 34.45% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x7f'*8]` | 8.218977146447253e-05 | 5.906266280412066e-05 | 28.14% | 39.16% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x80'*8]` | 8.193407961735777e-05 | 6.136319251006898e-05 | 25.11% | 33.52% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\xde\\xad\\xbe\\xef']` | 8.282953149578466e-05 | 5.9535937165880325e-05 | 28.12% | 39.13% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\xff'*64]` | 8.179822531118282e-05 | 5.94767473425328e-05 | 27.29% | 37.53% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'a'*1024]` | 8.266456093814456e-05 | 5.8851164241198844e-05 | 28.81% | 40.46% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'abc']` | 8.218929397422946e-05 | 5.9203338411529e-05 | 27.97% | 38.83% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-long alternating]` | 8.182808481071303e-05 | 6.0080230447893814e-05 | 26.58% | 36.20% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-mixed pattern]` | 8.258758197965857e-05 | 5.917021542534311e-05 | 28.35% | 39.58% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-multiples of 0x10]` | 8.28458307625059e-05 | 5.906045522547849e-05 | 28.71% | 40.27% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-palindrome ascii]` | 8.220755922489121e-05 | 5.883523222445814e-05 | 28.43% | 39.73% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-palindrome numeric]` | 8.259158303672126e-05 | 5.931083956872689e-05 | 28.19% | 39.25% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-palindrome]` | 8.237644053596613e-05 | 5.9293095318421846e-05 | 28.02% | 38.93% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-repeated 0-9]` | 8.16009079237372e-05 | 5.916415208969124e-05 | 27.50% | 37.92% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-single 0xff]` | 8.067697375616507e-05 | 5.684665522318842e-05 | 29.54% | 41.92% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-single null byte]` | 8.462229574861974e-05 | 5.660815172923224e-05 | 33.10% | 49.49% | 1.49x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-two patterns]` | 8.290189414078539e-05 | 5.920341793856281e-05 | 28.59% | 40.03% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-0-9]` | 8.298242649858757e-05 | 6.000937638111914e-05 | 27.68% | 38.28% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-4-byte pattern]` | 8.247529896704689e-05 | 6.119062183914305e-05 | 25.81% | 34.78% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-all byte values]` | 8.350732420600549e-05 | 5.955284175830317e-05 | 28.69% | 40.22% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-alternating 0x00/0xff]` | 8.333850875095573e-05 | 5.912131442278957e-05 | 29.06% | 40.96% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-alternating 0xaa/0x55]` | 8.234676038682317e-05 | 5.910356595308629e-05 | 28.23% | 39.33% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-ascii sentence]` | 8.307883587291249e-05 | 5.813773746906253e-05 | 30.02% | 42.90% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'']` | 8.123055266659609e-05 | 5.7629503994582105e-05 | 29.05% | 40.95% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x00'*32]` | 8.263547610201256e-05 | 6.045800094109474e-05 | 26.84% | 36.68% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x00\\xff\\x00\\xff']` | 8.25655098130783e-05 | 6.017779425450851e-05 | 27.12% | 37.20% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*100]` | 8.26187698171802e-05 | 6.020054059328963e-05 | 27.13% | 37.24% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*2048]` | 8.278103218983851e-05 | 6.04398838042679e-05 | 26.99% | 36.96% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x01\\x02\\x03']` | 8.405134248304805e-05 | 6.02796708112385e-05 | 28.28% | 39.44% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.284280206337824e-05 | 5.979094778700229e-05 | 27.83% | 38.55% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x7f'*8]` | 8.319103670849906e-05 | 5.858195845283615e-05 | 29.58% | 42.01% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x80'*8]` | 8.17137936963362e-05 | 5.93113500733328e-05 | 27.42% | 37.77% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\xde\\xad\\xbe\\xef']` | 8.277301219219535e-05 | 6.004675805997424e-05 | 27.46% | 37.85% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\xff'*64]` | 8.320116683857284e-05 | 5.984327037056195e-05 | 28.07% | 39.03% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'a'*1024]` | 8.18878211364074e-05 | 6.217911330122297e-05 | 24.07% | 31.70% | 1.32x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'abc']` | 8.281095064443846e-05 | 6.0192402036573374e-05 | 27.31% | 37.58% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-long alternating]` | 8.381420032478278e-05 | 5.946395805187513e-05 | 29.05% | 40.95% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-mixed pattern]` | 8.248342087714592e-05 | 5.9707209396144077e-05 | 27.61% | 38.15% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-multiples of 0x10]` | 8.355841034402889e-05 | 5.893316075349019e-05 | 29.47% | 41.79% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-palindrome ascii]` | 8.276707133785648e-05 | 5.9544785021158976e-05 | 28.06% | 39.00% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-palindrome numeric]` | 8.285243053104025e-05 | 5.9668069651508084e-05 | 27.98% | 38.86% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-palindrome]` | 8.301764070826367e-05 | 5.814280154353559e-05 | 29.96% | 42.78% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-repeated 0-9]` | 8.225960632052387e-05 | 5.976560019641434e-05 | 27.35% | 37.64% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-single 0xff]` | 8.065306956436836e-05 | 5.702750749767079e-05 | 29.29% | 41.43% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-single null byte]` | 8.174174405615476e-05 | 5.721812726035227e-05 | 30.00% | 42.86% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-two patterns]` | 8.305390861481176e-05 | 5.964005651801853e-05 | 28.19% | 39.26% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-0-9]` | 8.174923075589099e-05 | 5.9448927994105324e-05 | 27.28% | 37.51% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-4-byte pattern]` | 8.280835479388329e-05 | 6.0614934505532154e-05 | 26.80% | 36.61% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-all byte values]` | 8.344398149718006e-05 | 6.032710794274664e-05 | 27.70% | 38.32% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-alternating 0x00/0xff]` | 8.25158346384662e-05 | 6.055250795487926e-05 | 26.62% | 36.27% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-alternating 0xaa/0x55]` | 8.12588521350194e-05 | 5.9758139488024083e-05 | 26.46% | 35.98% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-ascii sentence]` | 8.260784413012386e-05 | 6.008810200248438e-05 | 27.26% | 37.48% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'']` | 8.098506785597772e-05 | 5.545958736322438e-05 | 31.52% | 46.03% | 1.46x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x00'*32]` | 8.193071316117574e-05 | 5.888507256408981e-05 | 28.13% | 39.14% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x00\\xff\\x00\\xff']` | 8.311334929186846e-05 | 5.9835646931806545e-05 | 28.01% | 38.90% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*100]` | 8.205579784498634e-05 | 5.987748855324366e-05 | 27.03% | 37.04% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*2048]` | 8.203713961971798e-05 | 6.026010922474311e-05 | 26.55% | 36.14% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x01\\x02\\x03']` | 8.288837421113221e-05 | 6.003732834892931e-05 | 27.57% | 38.06% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.231798486240242e-05 | 5.984453517859794e-05 | 27.30% | 37.55% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x7f'*8]` | 8.24125983622135e-05 | 5.932318067918946e-05 | 28.02% | 38.92% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x80'*8]` | 8.365516161234174e-05 | 6.0410782963976097e-05 | 27.79% | 38.48% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\xde\\xad\\xbe\\xef']` | 8.263932907436705e-05 | 6.010920148601243e-05 | 27.26% | 37.48% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\xff'*64]` | 8.248028278229188e-05 | 5.892205026851351e-05 | 28.56% | 39.98% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'a'*1024]` | 8.357190183800957e-05 | 5.9719811492344454e-05 | 28.54% | 39.94% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'abc']` | 8.297930227963689e-05 | 5.975476589153477e-05 | 27.99% | 38.87% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-long alternating]` | 8.26397992204131e-05 | 5.9539717275665526e-05 | 27.95% | 38.80% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-mixed pattern]` | 8.29433377575843e-05 | 5.993510137452247e-05 | 27.74% | 38.39% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-multiples of 0x10]` | 8.173155231230853e-05 | 6.000559955012746e-05 | 26.58% | 36.21% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-palindrome ascii]` | 8.283153078394579e-05 | 6.007454627094755e-05 | 27.47% | 37.88% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-palindrome numeric]` | 8.295015233678777e-05 | 6.022465030588019e-05 | 27.40% | 37.73% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-palindrome]` | 8.206819891950393e-05 | 5.901645580983919e-05 | 28.09% | 39.06% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-repeated 0-9]` | 8.252315873561781e-05 | 5.959502423157254e-05 | 27.78% | 38.47% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-single 0xff]` | 8.080989615934907e-05 | 5.718744284018923e-05 | 29.23% | 41.31% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-single null byte]` | 8.118914599161036e-05 | 5.6113621906876145e-05 | 30.89% | 44.69% | 1.45x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-two patterns]` | 8.248393805518121e-05 | 5.920724874280465e-05 | 28.22% | 39.31% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-0-9]` | 8.095065748360483e-05 | 5.8523557548510644e-05 | 27.70% | 38.32% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-4-byte pattern]` | 8.349401111879623e-05 | 6.0557242492283696e-05 | 27.47% | 37.88% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-all byte values]` | 8.345053677589646e-05 | 6.037762974303666e-05 | 27.65% | 38.21% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-alternating 0x00/0xff]` | 8.215472471433139e-05 | 6.009196716551899e-05 | 26.86% | 36.71% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-alternating 0xaa/0x55]` | 8.175392017296957e-05 | 6.116748847009885e-05 | 25.18% | 33.66% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-ascii sentence]` | 8.199942366261583e-05 | 5.9238233050665474e-05 | 27.76% | 38.42% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'']` | 7.954953983031259e-05 | 5.613129821281999e-05 | 29.44% | 41.72% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x00'*32]` | 8.308253447959504e-05 | 5.92931501179078e-05 | 28.63% | 40.12% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x00\\xff\\x00\\xff']` | 8.23926025101945e-05 | 5.84268600418004e-05 | 29.09% | 41.02% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*100]` | 8.298528218158586e-05 | 6.026394666131004e-05 | 27.38% | 37.70% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*2048]` | 0.00010304009788710362 | 7.570341538490459e-05 | 26.53% | 36.11% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x01\\x02\\x03']` | 8.052766902425011e-05 | 5.662869253858933e-05 | 29.68% | 42.20% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.23525095987187e-05 | 5.9414110697291446e-05 | 27.85% | 38.61% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x7f'*8]` | 8.27793972623703e-05 | 5.927659637082556e-05 | 28.39% | 39.65% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x80'*8]` | 8.19483723063477e-05 | 5.946164297010198e-05 | 27.44% | 37.82% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\xde\\xad\\xbe\\xef']` | 8.1632556425284e-05 | 5.824580406124662e-05 | 28.65% | 40.15% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\xff'*64]` | 8.276372156742444e-05 | 6.032035426422538e-05 | 27.12% | 37.21% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'a'*1024]` | 9.834160217477096e-05 | 7.397027760985454e-05 | 24.78% | 32.95% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'abc']` | 7.982323145595234e-05 | 5.6676325756516126e-05 | 29.00% | 40.84% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-long alternating]` | 9.687716526054861e-05 | 7.099679445611465e-05 | 26.71% | 36.45% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-mixed pattern]` | 8.285762971500448e-05 | 6.0295286939502525e-05 | 27.23% | 37.42% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-multiples of 0x10]` | 8.117816004377663e-05 | 5.959264522393517e-05 | 26.59% | 36.22% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-palindrome ascii]` | 8.190667319713085e-05 | 5.908717138917533e-05 | 27.86% | 38.62% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-palindrome numeric]` | 8.138528753418362e-05 | 5.928418441238993e-05 | 27.16% | 37.28% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-palindrome]` | 8.272877074569158e-05 | 5.992511067378011e-05 | 27.56% | 38.05% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-repeated 0-9]` | 8.345111281602345e-05 | 6.243401027480398e-05 | 25.18% | 33.66% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-single 0xff]` | 7.889125949280474e-05 | 5.724288859932371e-05 | 27.44% | 37.82% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-single null byte]` | 7.970610933667062e-05 | 5.6917836128288796e-05 | 28.59% | 40.04% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-two patterns]` | 8.252426743850057e-05 | 5.942270237400395e-05 | 27.99% | 38.88% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-0-9]` | 8.116609337748508e-05 | 5.9072041303092104e-05 | 27.22% | 37.40% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-4-byte pattern]` | 8.187409056971177e-05 | 5.908142060547217e-05 | 27.84% | 38.58% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-all byte values]` | 8.179005643571542e-05 | 5.9264081163237386e-05 | 27.54% | 38.01% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-alternating 0x00/0xff]` | 8.148759715776765e-05 | 5.7706524837351347e-05 | 29.18% | 41.21% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-alternating 0xaa/0x55]` | 8.173642601973305e-05 | 5.806425421287015e-05 | 28.96% | 40.77% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-ascii sentence]` | 8.064586993388102e-05 | 5.7529019006528506e-05 | 28.66% | 40.18% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'']` | 7.793951698894283e-05 | 5.4252270439840574e-05 | 30.39% | 43.66% | 1.44x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x00'*32]` | 8.149156274294871e-05 | 5.836211789180035e-05 | 28.38% | 39.63% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x00\\xff\\x00\\xff']` | 8.144283408335203e-05 | 5.7779345575873775e-05 | 29.06% | 40.95% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*100]` | 8.160395079798388e-05 | 5.8643439990400356e-05 | 28.14% | 39.15% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*2048]` | 0.00010335031473924028 | 7.75891633463726e-05 | 24.93% | 33.20% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x01\\x02\\x03']` | 8.05348176641359e-05 | 5.8416571229484895e-05 | 27.46% | 37.86% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.181176538197907e-05 | 5.773635372456435e-05 | 29.43% | 41.70% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x7f'*8]` | 8.082338531756488e-05 | 5.8364463344557816e-05 | 27.79% | 38.48% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x80'*8]` | 8.121129159770073e-05 | 5.8773803127767965e-05 | 27.63% | 38.18% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\xde\\xad\\xbe\\xef']` | 8.21432826221098e-05 | 5.846603290937959e-05 | 28.82% | 40.50% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\xff'*64]` | 8.187571193422384e-05 | 5.854124272152134e-05 | 28.50% | 39.86% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'a'*1024]` | 9.51203698940016e-05 | 6.990818483709208e-05 | 26.51% | 36.06% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'abc']` | 8.138405677038248e-05 | 5.815244304972694e-05 | 28.55% | 39.95% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-long alternating]` | 9.688943372891182e-05 | 7.345038840045973e-05 | 24.19% | 31.91% | 1.32x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-mixed pattern]` | 8.065816282372869e-05 | 5.841218370830715e-05 | 27.58% | 38.08% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-multiples of 0x10]` | 8.349101830134883e-05 | 5.690671629595291e-05 | 31.84% | 46.72% | 1.47x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-palindrome ascii]` | 8.106081958710867e-05 | 5.686912290797657e-05 | 29.84% | 42.54% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-palindrome numeric]` | 8.135026022734481e-05 | 5.867236105786196e-05 | 27.88% | 38.65% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-palindrome]` | 8.153439110549517e-05 | 5.815226980225593e-05 | 28.68% | 40.21% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-repeated 0-9]` | 8.192464833253357e-05 | 5.776810608801202e-05 | 29.49% | 41.82% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-single 0xff]` | 7.845286956137717e-05 | 5.4403978508173726e-05 | 30.65% | 44.20% | 1.44x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-single null byte]` | 7.952978713311026e-05 | 5.471162931874426e-05 | 31.21% | 45.36% | 1.45x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-two patterns]` | 8.070442543728961e-05 | 5.763776301022499e-05 | 28.58% | 40.02% | 1.40x | ✅ | +| `hexbytes_new['']` | 7.088780430673459e-05 | 3.717920214070973e-05 | 47.55% | 90.67% | 1.91x | ✅ | +| `hexbytes_new['0x'+'00'*64]` | 9.08381729076297e-05 | 4.949742961882397e-05 | 45.51% | 83.52% | 1.84x | ✅ | +| `hexbytes_new['0x'+'a'*128]` | 9.12901110470186e-05 | 4.9569092494821324e-05 | 45.70% | 84.17% | 1.84x | ✅ | +| `hexbytes_new['0x'+'ff'*32]` | 8.786087664833968e-05 | 4.745619865953935e-05 | 45.99% | 85.14% | 1.85x | ✅ | +| `hexbytes_new['0x']` | 7.734214501135582e-05 | 3.731379415860181e-05 | 51.75% | 107.27% | 2.07x | ✅ | +| `hexbytes_new['0x1234']` | 8.549765583795547e-05 | 4.616123251737869e-05 | 46.01% | 85.22% | 1.85x | ✅ | +| `hexbytes_new['0xCAFEBABE']` | 8.48734384069494e-05 | 4.373696492167761e-05 | 48.47% | 94.05% | 1.94x | ✅ | +| `hexbytes_new['0xabcdef']` | 8.624874060832549e-05 | 4.4981086822392796e-05 | 47.85% | 91.74% | 1.92x | ✅ | +| `hexbytes_new['0xdeadbeef']` | 8.511969825899141e-05 | 4.477347057946026e-05 | 47.40% | 90.11% | 1.90x | ✅ | +| `hexbytes_new['abc']` | 8.205357686966255e-05 | 4.712751713018254e-05 | 42.56% | 74.11% | 1.74x | ✅ | +| `hexbytes_new['deadbeef']` | 7.594046936834116e-05 | 4.167178089675495e-05 | 45.13% | 82.23% | 1.82x | ✅ | +| `hexbytes_new[0-9]` | 4.32391866707604e-05 | 2.6096130303851546e-05 | 39.65% | 65.69% | 1.66x | ✅ | +| `hexbytes_new[0]` | 0.00012147360000039824 | 5.898221385802156e-05 | 51.44% | 105.95% | 2.06x | ✅ | +| `hexbytes_new[123456]` | 0.00012783664552421076 | 6.42451952541813e-05 | 49.74% | 98.98% | 1.99x | ✅ | +| `hexbytes_new[2**16]` | 0.00012899164078214196 | 6.477412555400336e-05 | 49.78% | 99.14% | 1.99x | ✅ | +| `hexbytes_new[2**256-1]` | 0.00013327829887405758 | 7.14616676658199e-05 | 46.38% | 86.50% | 1.87x | ✅ | +| `hexbytes_new[2**32]` | 0.00012888422407988012 | 6.858295083146188e-05 | 46.79% | 87.92% | 1.88x | ✅ | +| `hexbytes_new[2**64]` | 0.0001307164182086684 | 7.068757599158942e-05 | 45.92% | 84.92% | 1.85x | ✅ | +| `hexbytes_new[2**8]` | 0.00012489451176449847 | 6.427741215711869e-05 | 48.53% | 94.31% | 1.94x | ✅ | +| `hexbytes_new[4-byte pattern]` | 4.324804341271748e-05 | 2.7337381673853546e-05 | 36.79% | 58.20% | 1.58x | ✅ | +| `hexbytes_new[False]` | 5.7542648767867024e-05 | 2.7378319494961528e-05 | 52.42% | 110.18% | 2.10x | ✅ | +| `hexbytes_new[True]` | 6.0374948887364585e-05 | 2.73211104636465e-05 | 54.75% | 120.98% | 2.21x | ✅ | +| `hexbytes_new[all byte values]` | 4.3536650777960076e-05 | 2.6893745841350606e-05 | 38.23% | 61.88% | 1.62x | ✅ | +| `hexbytes_new[alternating 0x00/0xff]` | 4.29779954711265e-05 | 2.6672594696847277e-05 | 37.94% | 61.13% | 1.61x | ✅ | +| `hexbytes_new[alternating 0xaa/0x55]` | 4.2538916479430376e-05 | 2.690549654860995e-05 | 36.75% | 58.10% | 1.58x | ✅ | +| `hexbytes_new[ascii sentence]` | 4.2890489870423805e-05 | 2.6523646326315215e-05 | 38.16% | 61.71% | 1.62x | ✅ | +| `hexbytes_new[b'']` | 4.2139885089912986e-05 | 2.6485647371229392e-05 | 37.15% | 59.10% | 1.59x | ✅ | +| `hexbytes_new[b'\\x00'*32]` | 4.281992702351694e-05 | 2.6157054395036364e-05 | 38.91% | 63.70% | 1.64x | ✅ | +| `hexbytes_new[b'\\x00\\xff\\x00\\xff']` | 4.209713031739145e-05 | 2.6064592012718416e-05 | 38.08% | 61.51% | 1.62x | ✅ | +| `hexbytes_new[b'\\x01'*100]` | 4.260165115759504e-05 | 2.6371385785080617e-05 | 38.10% | 61.54% | 1.62x | ✅ | +| `hexbytes_new[b'\\x01'*2048]` | 5.589062480301016e-05 | 3.815512184711202e-05 | 31.73% | 46.48% | 1.46x | ✅ | +| `hexbytes_new[b'\\x01\\x02\\x03']` | 4.403057460825653e-05 | 2.6251221710913063e-05 | 40.38% | 67.73% | 1.68x | ✅ | +| `hexbytes_new[b'\\x10\\x20\\x30\\x40\\x50']` | 4.294391501444021e-05 | 2.625855093568112e-05 | 38.85% | 63.54% | 1.64x | ✅ | +| `hexbytes_new[b'\\x7f'*8]` | 4.237802283683679e-05 | 2.6113483699459242e-05 | 38.38% | 62.28% | 1.62x | ✅ | +| `hexbytes_new[b'\\x80'*8]` | 4.2992865260140275e-05 | 2.6178278960295655e-05 | 39.11% | 64.23% | 1.64x | ✅ | +| `hexbytes_new[b'\\xde\\xad\\xbe\\xef']` | 4.253622636523762e-05 | 2.6142689077856537e-05 | 38.54% | 62.71% | 1.63x | ✅ | +| `hexbytes_new[b'\\xff'*64]` | 4.280101714362397e-05 | 2.670987500743659e-05 | 37.60% | 60.24% | 1.60x | ✅ | +| `hexbytes_new[b'a'*1024]` | 5.039340191686589e-05 | 3.35407930403703e-05 | 33.44% | 50.25% | 1.50x | ✅ | +| `hexbytes_new[b'abc']` | 4.351984744187119e-05 | 2.6314898261348562e-05 | 39.53% | 65.38% | 1.65x | ✅ | +| `hexbytes_new[bytearray(0-9)]` | 6.924882572883054e-05 | 3.7070337109455526e-05 | 46.47% | 86.80% | 1.87x | ✅ | +| `hexbytes_new[bytearray(4-byte pattern)]` | 6.865879840472956e-05 | 3.795186682125277e-05 | 44.72% | 80.91% | 1.81x | ✅ | +| `hexbytes_new[bytearray(all byte values)]` | 6.92051621680794e-05 | 3.906494559943062e-05 | 43.55% | 77.15% | 1.77x | ✅ | +| `hexbytes_new[bytearray(alternating 0x00/0xff)]` | 6.895108774092821e-05 | 3.760643231876285e-05 | 45.46% | 83.35% | 1.83x | ✅ | +| `hexbytes_new[bytearray(alternating 0xaa/0x55)]` | 6.934933758033202e-05 | 3.8043765234650245e-05 | 45.14% | 82.29% | 1.82x | ✅ | +| `hexbytes_new[bytearray(ascii sentence)]` | 7.154259188304492e-05 | 3.7347336419638925e-05 | 47.80% | 91.56% | 1.92x | ✅ | +| `hexbytes_new[bytearray(b'')]` | 6.691779239544e-05 | 3.5881522981760556e-05 | 46.38% | 86.50% | 1.86x | ✅ | +| `hexbytes_new[bytearray(b'\\x00'*32)]` | 6.916644721487588e-05 | 3.707497534790335e-05 | 46.40% | 86.56% | 1.87x | ✅ | +| `hexbytes_new[bytearray(b'\\x00\\xff\\x00\\xff')]` | 7.023605069949667e-05 | 3.7606917412093584e-05 | 46.46% | 86.76% | 1.87x | ✅ | +| `hexbytes_new[bytearray(b'\\x01'*100)]` | 6.944845212427651e-05 | 3.7462212275079345e-05 | 46.06% | 85.38% | 1.85x | ✅ | +| `hexbytes_new[bytearray(b'\\x01'*2048)]` | 8.784037479361675e-05 | 5.4127738491531136e-05 | 38.38% | 62.28% | 1.62x | ✅ | +| `hexbytes_new[bytearray(b'\\x01\\x02\\x03')]` | 6.942490371884399e-05 | 3.786419300321061e-05 | 45.46% | 83.35% | 1.83x | ✅ | +| `hexbytes_new[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 7.144417930880813e-05 | 3.760398169637676e-05 | 47.37% | 89.99% | 1.90x | ✅ | +| `hexbytes_new[bytearray(b'\\x7f'*8)]` | 6.883889537013713e-05 | 3.690421343343348e-05 | 46.39% | 86.53% | 1.87x | ✅ | +| `hexbytes_new[bytearray(b'\\x80'*8)]` | 6.921766822811658e-05 | 3.69785762602498e-05 | 46.58% | 87.18% | 1.87x | ✅ | +| `hexbytes_new[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 6.941374860156565e-05 | 3.765025574406209e-05 | 45.76% | 84.36% | 1.84x | ✅ | +| `hexbytes_new[bytearray(b'\\xff'*64)]` | 6.987261833150233e-05 | 3.836987056775855e-05 | 45.09% | 82.10% | 1.82x | ✅ | +| `hexbytes_new[bytearray(b'a'*1024)]` | 8.436291548393331e-05 | 4.996119468824985e-05 | 40.78% | 68.86% | 1.69x | ✅ | +| `hexbytes_new[bytearray(b'abc')]` | 6.84475526276227e-05 | 3.759934389772617e-05 | 45.07% | 82.04% | 1.82x | ✅ | +| `hexbytes_new[bytearray(long alternating)]` | 8.451646979711346e-05 | 5.0827760892027275e-05 | 39.86% | 66.28% | 1.66x | ✅ | +| `hexbytes_new[bytearray(mixed pattern)]` | 7.02805573041443e-05 | 3.7690422689619085e-05 | 46.37% | 86.47% | 1.86x | ✅ | +| `hexbytes_new[bytearray(multiples of 0x10)]` | 6.964449036962057e-05 | 3.707497999939228e-05 | 46.77% | 87.85% | 1.88x | ✅ | +| `hexbytes_new[bytearray(palindrome ascii)]` | 6.974647361849695e-05 | 3.767885807057385e-05 | 45.98% | 85.11% | 1.85x | ✅ | +| `hexbytes_new[bytearray(palindrome numeric)]` | 6.97261549175874e-05 | 3.771203849116904e-05 | 45.91% | 84.89% | 1.85x | ✅ | +| `hexbytes_new[bytearray(palindrome)]` | 7.000643452950382e-05 | 3.7555088683760594e-05 | 46.35% | 86.41% | 1.86x | ✅ | +| `hexbytes_new[bytearray(repeated 0-9)]` | 6.986597381971087e-05 | 3.7480902225980816e-05 | 46.35% | 86.40% | 1.86x | ✅ | +| `hexbytes_new[bytearray(single 0xff)]` | 6.875539139841834e-05 | 3.782587262936416e-05 | 44.98% | 81.77% | 1.82x | ✅ | +| `hexbytes_new[bytearray(single null byte)]` | 6.986082850435396e-05 | 3.7667651966421094e-05 | 46.08% | 85.47% | 1.85x | ✅ | +| `hexbytes_new[bytearray(two patterns)]` | 6.930302979786374e-05 | 3.781380607530014e-05 | 45.44% | 83.27% | 1.83x | ✅ | +| `hexbytes_new[long alternating]` | 5.104927847461075e-05 | 3.3206472204869993e-05 | 34.95% | 53.73% | 1.54x | ✅ | +| `hexbytes_new[memoryview(0-9)]` | 8.33941205709884e-05 | 4.321597931252133e-05 | 48.18% | 92.97% | 1.93x | ✅ | +| `hexbytes_new[memoryview(4-byte pattern)]` | 8.343239782615673e-05 | 4.31307461574922e-05 | 48.30% | 93.44% | 1.93x | ✅ | +| `hexbytes_new[memoryview(all byte values)]` | 8.310504517979076e-05 | 4.331295322967082e-05 | 47.88% | 91.87% | 1.92x | ✅ | +| `hexbytes_new[memoryview(alternating 0x00/0xff)]` | 8.43578950971803e-05 | 4.355653393895579e-05 | 48.37% | 93.67% | 1.94x | ✅ | +| `hexbytes_new[memoryview(alternating 0xaa/0x55)]` | 8.350482009135351e-05 | 4.328347990039836e-05 | 48.17% | 92.93% | 1.93x | ✅ | +| `hexbytes_new[memoryview(ascii sentence)]` | 8.418245133308389e-05 | 4.3104843170141914e-05 | 48.80% | 95.30% | 1.95x | ✅ | +| `hexbytes_new[memoryview(b'')]` | 8.16670020370079e-05 | 3.949402578395808e-05 | 51.64% | 106.78% | 2.07x | ✅ | +| `hexbytes_new[memoryview(b'\\x00'*32)]` | 8.414462480244782e-05 | 4.2801493239288055e-05 | 49.13% | 96.59% | 1.97x | ✅ | +| `hexbytes_new[memoryview(b'\\x00\\xff\\x00\\xff')]` | 8.400868981741798e-05 | 4.321310426895086e-05 | 48.56% | 94.41% | 1.94x | ✅ | +| `hexbytes_new[memoryview(b'\\x01'*100)]` | 8.455552116281636e-05 | 4.3503569808495486e-05 | 48.55% | 94.36% | 1.94x | ✅ | +| `hexbytes_new[memoryview(b'\\x01'*2048)]` | 0.00010305093069751761 | 6.072867177761178e-05 | 41.07% | 69.69% | 1.70x | ✅ | +| `hexbytes_new[memoryview(b'\\x01\\x02\\x03')]` | 8.298567379370851e-05 | 4.27369373533555e-05 | 48.50% | 94.18% | 1.94x | ✅ | +| `hexbytes_new[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 8.42089942852863e-05 | 4.266893871163908e-05 | 49.33% | 97.35% | 1.97x | ✅ | +| `hexbytes_new[memoryview(b'\\x7f'*8)]` | 8.337231982226526e-05 | 4.338129289391536e-05 | 47.97% | 92.18% | 1.92x | ✅ | +| `hexbytes_new[memoryview(b'\\x80'*8)]` | 8.254668955252301e-05 | 4.339669686790877e-05 | 47.43% | 90.21% | 1.90x | ✅ | +| `hexbytes_new[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 8.40657775951673e-05 | 4.234327471562352e-05 | 49.63% | 98.53% | 1.99x | ✅ | +| `hexbytes_new[memoryview(b'\\xff'*64)]` | 8.356457063648914e-05 | 4.298029667119506e-05 | 48.57% | 94.43% | 1.94x | ✅ | +| `hexbytes_new[memoryview(b'a'*1024)]` | 9.845937433355294e-05 | 5.583482876694573e-05 | 43.29% | 76.34% | 1.76x | ✅ | +| `hexbytes_new[memoryview(b'abc')]` | 8.489607222820646e-05 | 4.233409720680936e-05 | 50.13% | 100.54% | 2.01x | ✅ | +| `hexbytes_new[memoryview(long alternating)]` | 9.98828766999488e-05 | 5.696237217307924e-05 | 42.97% | 75.35% | 1.75x | ✅ | +| `hexbytes_new[memoryview(mixed pattern)]` | 8.574233386021318e-05 | 4.353720003788475e-05 | 49.22% | 96.94% | 1.97x | ✅ | +| `hexbytes_new[memoryview(multiples of 0x10)]` | 8.316728905768576e-05 | 4.391765795180261e-05 | 47.19% | 89.37% | 1.89x | ✅ | +| `hexbytes_new[memoryview(palindrome ascii)]` | 8.33069546903585e-05 | 4.322721919697296e-05 | 48.11% | 92.72% | 1.93x | ✅ | +| `hexbytes_new[memoryview(palindrome numeric)]` | 8.323798546719053e-05 | 4.2778722479093196e-05 | 48.61% | 94.58% | 1.95x | ✅ | +| `hexbytes_new[memoryview(palindrome)]` | 8.4058672212827e-05 | 4.330158541235663e-05 | 48.49% | 94.12% | 1.94x | ✅ | +| `hexbytes_new[memoryview(repeated 0-9)]` | 8.334889789452623e-05 | 4.341889715371332e-05 | 47.91% | 91.96% | 1.92x | ✅ | +| `hexbytes_new[memoryview(single 0xff)]` | 8.410545725262877e-05 | 4.328793812060419e-05 | 48.53% | 94.29% | 1.94x | ✅ | +| `hexbytes_new[memoryview(single null byte)]` | 8.393237762226811e-05 | 4.333610276475428e-05 | 48.37% | 93.68% | 1.94x | ✅ | +| `hexbytes_new[memoryview(two patterns)]` | 8.375040244224084e-05 | 4.316580460201397e-05 | 48.46% | 94.02% | 1.94x | ✅ | +| `hexbytes_new[mixed pattern]` | 4.246868627429666e-05 | 2.6744996656935956e-05 | 37.02% | 58.79% | 1.59x | ✅ | +| `hexbytes_new[multiples of 0x10]` | 4.263028767945216e-05 | 2.6057066824448672e-05 | 38.88% | 63.60% | 1.64x | ✅ | +| `hexbytes_new[palindrome ascii]` | 4.322988907955655e-05 | 2.615558227624918e-05 | 39.50% | 65.28% | 1.65x | ✅ | +| `hexbytes_new[palindrome numeric]` | 4.318747024304831e-05 | 2.635158396246492e-05 | 38.98% | 63.89% | 1.64x | ✅ | +| `hexbytes_new[palindrome]` | 4.252804330517492e-05 | 2.636744998543955e-05 | 38.00% | 61.29% | 1.61x | ✅ | +| `hexbytes_new[repeated 0-9]` | 4.325075794734043e-05 | 2.743377294276552e-05 | 36.57% | 57.66% | 1.58x | ✅ | +| `hexbytes_new[single 0xff]` | 4.2650558087442775e-05 | 2.6142427678991554e-05 | 38.71% | 63.15% | 1.63x | ✅ | +| `hexbytes_new[single null byte]` | 4.2438786493578065e-05 | 2.62305329783184e-05 | 38.19% | 61.79% | 1.62x | ✅ | +| `hexbytes_new[two patterns]` | 4.300542495352237e-05 | 2.6760515339838644e-05 | 37.77% | 60.70% | 1.61x | ✅ | +| `hexbytes_repr[0-9]` | 2.872566614971813e-05 | 1.4659679789470288e-05 | 48.97% | 95.95% | 1.96x | ✅ | +| `hexbytes_repr[4-byte pattern]` | 0.00012097528343540317 | 4.082255469656911e-05 | 66.26% | 196.34% | 2.96x | ✅ | +| `hexbytes_repr[all byte values]` | 0.00012101296949902636 | 4.0889047937087264e-05 | 66.21% | 195.95% | 2.96x | ✅ | +| `hexbytes_repr[alternating 0x00/0xff]` | 4.846516875197556e-05 | 1.9757204925663502e-05 | 59.23% | 145.30% | 2.45x | ✅ | +| `hexbytes_repr[alternating 0xaa/0x55]` | 4.9198864239180924e-05 | 1.9822463312483787e-05 | 59.71% | 148.20% | 2.48x | ✅ | +| `hexbytes_repr[ascii sentence]` | 4.1706455553671124e-05 | 1.7753739168724917e-05 | 57.43% | 134.92% | 2.35x | ✅ | +| `hexbytes_repr[b'']` | 2.1281227843736355e-05 | 1.213839677469357e-05 | 42.96% | 75.32% | 1.75x | ✅ | +| `hexbytes_repr[b'\\x00'*32]` | 3.6651239026327626e-05 | 1.7438500028313234e-05 | 52.42% | 110.17% | 2.10x | ✅ | +| `hexbytes_repr[b'\\x00\\xff\\x00\\xff']` | 2.5927559436728758e-05 | 1.3896156063278452e-05 | 46.40% | 86.58% | 1.87x | ✅ | +| `hexbytes_repr[b'\\x01'*100]` | 6.166356011023328e-05 | 2.357859525097921e-05 | 61.76% | 161.52% | 2.62x | ✅ | +| `hexbytes_repr[b'\\x01'*2048]` | 0.0007587736933019505 | 0.00022222049450458444 | 70.71% | 241.45% | 3.41x | ✅ | +| `hexbytes_repr[b'\\x01\\x02\\x03']` | 2.5846472886860315e-05 | 1.4515828231319974e-05 | 43.84% | 78.06% | 1.78x | ✅ | +| `hexbytes_repr[b'\\x10\\x20\\x30\\x40\\x50']` | 2.6720775118343867e-05 | 1.3999502854561541e-05 | 47.61% | 90.87% | 1.91x | ✅ | +| `hexbytes_repr[b'\\x7f'*8]` | 2.831661231077688e-05 | 1.4514621769713463e-05 | 48.74% | 95.09% | 1.95x | ✅ | +| `hexbytes_repr[b'\\x80'*8]` | 2.7975403289546915e-05 | 1.4348914150039018e-05 | 48.71% | 94.97% | 1.95x | ✅ | +| `hexbytes_repr[b'\\xde\\xad\\xbe\\xef']` | 2.6114682665134736e-05 | 1.3892002697369287e-05 | 46.80% | 87.98% | 1.88x | ✅ | +| `hexbytes_repr[b'\\xff'*64]` | 4.862962974479862e-05 | 1.9963515407331704e-05 | 58.95% | 143.59% | 2.44x | ✅ | +| `hexbytes_repr[b'a'*1024]` | 0.00039427348447300685 | 0.00011876243514485907 | 69.88% | 231.99% | 3.32x | ✅ | +| `hexbytes_repr[b'abc']` | 2.6418753813827575e-05 | 1.4174768592177355e-05 | 46.35% | 86.38% | 1.86x | ✅ | +| `hexbytes_repr[long alternating]` | 0.0003978778695282324 | 0.00012251765528731624 | 69.21% | 224.75% | 3.25x | ✅ | +| `hexbytes_repr[mixed pattern]` | 9.768270914428448e-05 | 3.374569708172995e-05 | 65.45% | 189.47% | 2.89x | ✅ | +| `hexbytes_repr[multiples of 0x10]` | 2.8627092914797454e-05 | 1.4387501168695416e-05 | 49.74% | 98.97% | 1.99x | ✅ | +| `hexbytes_repr[palindrome ascii]` | 2.7361824310599784e-05 | 1.396790171981723e-05 | 48.95% | 95.89% | 1.96x | ✅ | +| `hexbytes_repr[palindrome numeric]` | 2.7323370495303222e-05 | 1.382805633311044e-05 | 49.39% | 97.59% | 1.98x | ✅ | +| `hexbytes_repr[palindrome]` | 3.176526098555952e-05 | 1.5648278370411235e-05 | 50.74% | 103.00% | 2.03x | ✅ | +| `hexbytes_repr[repeated 0-9]` | 6.202595140925878e-05 | 2.3644797130939777e-05 | 61.88% | 162.32% | 2.62x | ✅ | +| `hexbytes_repr[single 0xff]` | 2.535232299440646e-05 | 1.3744784468252905e-05 | 45.78% | 84.45% | 1.84x | ✅ | +| `hexbytes_repr[single null byte]` | 2.5296525236002765e-05 | 1.3483402455111459e-05 | 46.70% | 87.61% | 1.88x | ✅ | +| `hexbytes_repr[two patterns]` | 4.862438137261551e-05 | 1.9606656606642472e-05 | 59.68% | 148.00% | 2.48x | ✅ | +| `hexbytes_to_0x_hex[0-9]` | 1.544235148859773e-05 | 1.370188903873984e-05 | 11.27% | 12.70% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[4-byte pattern]` | 4.227200566071145e-05 | 4.021364210912594e-05 | 4.87% | 5.12% | 1.05x | ✅ | +| `hexbytes_to_0x_hex[all byte values]` | 4.5166155549740956e-05 | 4.040208903397559e-05 | 10.55% | 11.79% | 1.12x | ✅ | +| `hexbytes_to_0x_hex[alternating 0x00/0xff]` | 2.0509157433635433e-05 | 1.8923473901335137e-05 | 7.73% | 8.38% | 1.08x | ✅ | +| `hexbytes_to_0x_hex[alternating 0xaa/0x55]` | 2.102063999835031e-05 | 2.0622411130859385e-05 | 1.89% | 1.93% | 1.02x | ✅ | +| `hexbytes_to_0x_hex[ascii sentence]` | 1.8845274486480745e-05 | 1.7181749328408585e-05 | 8.83% | 9.68% | 1.10x | ✅ | +| `hexbytes_to_0x_hex[b'']` | 1.0080841905437211e-05 | 1.1658829265170503e-05 | -15.65% | -13.53% | 0.86x | ❌ | +| `hexbytes_to_0x_hex[b'\\x00'*32]` | 1.7496683259838742e-05 | 1.5927736174849307e-05 | 8.97% | 9.85% | 1.10x | ✅ | +| `hexbytes_to_0x_hex[b'\\x00\\xff\\x00\\xff']` | 1.4860350955516212e-05 | 1.2858530678920156e-05 | 13.47% | 15.57% | 1.16x | ✅ | +| `hexbytes_to_0x_hex[b'\\x01'*100]` | 2.520908307069086e-05 | 2.2864916435974894e-05 | 9.30% | 10.25% | 1.10x | ✅ | +| `hexbytes_to_0x_hex[b'\\x01'*2048]` | 0.0002228400227782363 | 0.00022152006307133462 | 0.59% | 0.60% | 1.01x | ✅ | +| `hexbytes_to_0x_hex[b'\\x01\\x02\\x03']` | 1.4688160305671577e-05 | 1.288246039598296e-05 | 12.29% | 14.02% | 1.14x | ✅ | +| `hexbytes_to_0x_hex[b'\\x10\\x20\\x30\\x40\\x50']` | 1.4890606877385047e-05 | 1.3086290605888474e-05 | 12.12% | 13.79% | 1.14x | ✅ | +| `hexbytes_to_0x_hex[b'\\x7f'*8]` | 1.5113177441256469e-05 | 1.3347142990239388e-05 | 11.69% | 13.23% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[b'\\x80'*8]` | 1.5131895012593648e-05 | 1.3492781570164521e-05 | 10.83% | 12.15% | 1.12x | ✅ | +| `hexbytes_to_0x_hex[b'\\xde\\xad\\xbe\\xef']` | 1.4741810922637845e-05 | 1.2888813418039586e-05 | 12.57% | 14.38% | 1.14x | ✅ | +| `hexbytes_to_0x_hex[b'\\xff'*64]` | 2.0538054271904383e-05 | 1.8887889941155288e-05 | 8.03% | 8.74% | 1.09x | ✅ | +| `hexbytes_to_0x_hex[b'a'*1024]` | 0.0001220273422405629 | 0.00012161504481905901 | 0.34% | 0.34% | 1.00x | ✅ | +| `hexbytes_to_0x_hex[b'abc']` | 1.4639706233970429e-05 | 1.3062715840253686e-05 | 10.77% | 12.07% | 1.12x | ✅ | +| `hexbytes_to_0x_hex[long alternating]` | 0.00012319042279556865 | 0.0001219906679716342 | 0.97% | 0.98% | 1.01x | ✅ | +| `hexbytes_to_0x_hex[mixed pattern]` | 3.4888799019459485e-05 | 3.2991316415402576e-05 | 5.44% | 5.75% | 1.06x | ✅ | +| `hexbytes_to_0x_hex[multiples of 0x10]` | 1.546567489556199e-05 | 1.3562740353368524e-05 | 12.30% | 14.03% | 1.14x | ✅ | +| `hexbytes_to_0x_hex[palindrome ascii]` | 1.5107767294871079e-05 | 1.3147390484659501e-05 | 12.98% | 14.91% | 1.15x | ✅ | +| `hexbytes_to_0x_hex[palindrome numeric]` | 1.4965851897216486e-05 | 1.2984114821758704e-05 | 13.24% | 15.26% | 1.15x | ✅ | +| `hexbytes_to_0x_hex[palindrome]` | 1.6300964550414532e-05 | 1.4800251494944235e-05 | 9.21% | 10.14% | 1.10x | ✅ | +| `hexbytes_to_0x_hex[repeated 0-9]` | 2.525250061269466e-05 | 2.268122398134421e-05 | 10.18% | 11.34% | 1.11x | ✅ | +| `hexbytes_to_0x_hex[single 0xff]` | 1.4594484070274873e-05 | 1.2883561770703406e-05 | 11.72% | 13.28% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[single null byte]` | 1.4602243716654297e-05 | 1.2583425810091396e-05 | 13.83% | 16.04% | 1.16x | ✅ | +| `hexbytes_to_0x_hex[two patterns]` | 2.0620916711129938e-05 | 1.8774365193650575e-05 | 8.95% | 9.84% | 1.10x | ✅ | From c88832e74c8148a129d70d23e0849423f70d3bff Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 10 Oct 2025 02:12:57 -0400 Subject: [PATCH 85/98] chore(deps): update codspeedhq/action action to v4 (#28) * chore(deps): update codspeedhq/action action to v4 * Update codspeed.yaml --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> --- .github/workflows/codspeed.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/codspeed.yaml b/.github/workflows/codspeed.yaml index b813a82..7f0c2ff 100644 --- a/.github/workflows/codspeed.yaml +++ b/.github/workflows/codspeed.yaml @@ -42,6 +42,7 @@ jobs: - name: Remove Python files from test env run: rm -r faster_hexbytes - name: Run CodSpeed - uses: CodSpeedHQ/action@v3 + uses: CodSpeedHQ/action@v4 with: + mode: instrumentation run: pytest --codspeed -k "test_faster_" benchmarks/ From e2e89f704de4e9e31d596ea737c64b5795f808b8 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Fri, 10 Oct 2025 02:41:48 -0400 Subject: [PATCH 86/98] feat(test): test on 32-bit systems (#30) --- .github/workflows/tox.yaml | 54 +++++++++++++++++++++++++++++++++++--- 1 file changed, 50 insertions(+), 4 deletions(-) diff --git a/.github/workflows/tox.yaml b/.github/workflows/tox.yaml index 510fa4c..2665b2b 100644 --- a/.github/workflows/tox.yaml +++ b/.github/workflows/tox.yaml @@ -13,9 +13,10 @@ on: branches: [main, master] paths: - '**.py' - - '.github/workflows/benchmark.yaml' + - '.github/workflows/tox.yaml' - 'pyproject.toml' - 'setup.py' + - 'tox.ini' schedule: - cron: '0 10 * * *' # Daily 10:00 UTC workflow_dispatch: @@ -26,7 +27,7 @@ concurrency: jobs: test: - name: Test (${{ matrix.jobtype }}, ${{ matrix.python-version}}, ${{ matrix.os }}) + name: Test (${{ matrix.jobtype }}, ${{ matrix.python-version}}, ${{ matrix.os }}, ${{ matrix.architecture }}) runs-on: ${{ matrix.os }} strategy: fail-fast: false @@ -34,30 +35,75 @@ jobs: os: [ubuntu-latest, macos-latest, windows-latest] python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.13t", "3.14", "3.14t"] jobtype: [core, lint, wheel] + architecture: [x64, x86] + exclude: + # Exclude x86 (32-bit) builds for macos, which doesn't support 32-bit at all + - os: macos-latest + architecture: x86 env: TOXENV: py${{ matrix.python-version }}-${{ matrix.jobtype }} TOX_RECREATE_FLAG: ${{ github.event_name == 'schedule' && '-r' || '' }} + IS_UBUNTU_32BIT: ${{ matrix.os == 'ubuntu-latest' && matrix.architecture == 'x86' }} steps: - uses: actions/checkout@v5 + # Use i386/python Docker for all 32-bit Ubuntu jobs (TODO cache some of this) + - name: Run job in 32-bit Ubuntu Docker container + if: ${{ env.IS_UBUNTU_32BIT == 'true' }} + uses: addnab/docker-run-action@v3 + with: + image: i386/python:${{ matrix.python-version }} + shell: bash + options: -v ${{ github.workspace }}:/workspace -w /workspace + run: | + python -m pip install --upgrade pip + python -m pip install tox + python -m tox -e ${{ env.TOXENV }} ${{ env.TOX_RECREATE_FLAG }} + # There are no prebuilt 32-bit freethreaded Python containers at the time of this commit, but + # we will keep these runners so they will activate on their own whenever such containers exist + continue-on-error: ${{ matrix.python-version == '3.13t' || matrix.python-version == '3.14t' }} + + # No architecture specified for MacOS + - name: Set up Python (macos) + if: ${{ matrix.os == 'macos-latest' }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + cache: pip + cache-dependency-path: | + setup.py + pyproject.toml + tox.ini + + # All other builds (64-bit Linux, 32-bit and 64-bit Windows) - name: Set up Python + if: ${{ matrix.os != 'macos-latest' && env.IS_UBUNTU_32BIT != 'true' }} uses: actions/setup-python@v6 with: python-version: ${{ matrix.python-version }} + architecture: ${{ matrix.architecture }} + cache: pip + cache-dependency-path: | + setup.py + pyproject.toml + tox.ini - name: Upgrade pip and install tox + if: ${{ env.IS_UBUNTU_32BIT != 'true' }} run: | python -m pip install --upgrade pip python -m pip install tox - name: Cache tox environment and hypothesis examples + if: ${{ env.IS_UBUNTU_32BIT != 'true' }} uses: actions/cache@v4 with: path: | .tox .hypothesis - key: ${{ runner.os }}-tox-${{ hashFiles('pyproject.toml', 'setup.py', 'tox.ini') }}-${{ matrix.python-version }}-${{ matrix.jobtype }} + key: ${{ runner.os }}-tox-${{ hashFiles('pyproject.toml', 'setup.py', 'tox.ini') }}-${{ matrix.python-version }}-${{ matrix.architecture }}-${{ matrix.jobtype }} save-always: ${{ env.TOX_RECREATE_FLAG == '-r' }} - name: Run tox - run: python -m tox run -r + if: ${{ env.IS_UBUNTU_32BIT != 'true' }} + run: python -m tox run ${{ env.TOX_RECREATE_FLAG }} From 4faf995832b77f1989d5fd4f61da82ac2449f2bd Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Sat, 11 Oct 2025 16:48:17 -0400 Subject: [PATCH 87/98] chore: skip mypycify cmd in setup.py if not installing (#32) --- setup.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/setup.py b/setup.py index 35ddf31..44ba46c 100644 --- a/setup.py +++ b/setup.py @@ -44,11 +44,16 @@ long_description = readme.read() -if sys.version_info >= (3, 9): - ext_modules = mypycify(["faster_hexbytes/", "--strict", "--pretty"]) -else: - # we can't compile on python3.8 but we can still let the user install +# we can't compile on python3.8 but we can still let the user install +skip_mypyc = sys.version_info < (3, 9) or any( + cmd in sys.argv + for cmd in ("sdist", "egg_info", "--name", "--version", "--help", "--help-commands") +) + +if skip_mypyc: ext_modules = [] +else: + ext_modules = mypycify(["faster_hexbytes/", "--strict", "--pretty"]) setup( From a59f3f740774c3ce6cc782742555ee94cfa63c58 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 11 Oct 2025 21:13:26 +0000 Subject: [PATCH 88/98] Update benchmark results [skip ci] --- benchmarks/results/_utils.md | 274 +++++----- benchmarks/results/main.md | 964 +++++++++++++++++------------------ 2 files changed, 619 insertions(+), 619 deletions(-) diff --git a/benchmarks/results/_utils.md b/benchmarks/results/_utils.md index 8934c61..0ca8922 100644 --- a/benchmarks/results/_utils.md +++ b/benchmarks/results/_utils.md @@ -2,140 +2,140 @@ | Function | Reference Mean | Faster Mean | % Change | Speedup (%) | x Faster | Faster | |----------|---------------|-------------|----------|-------------|----------|--------| -| `hexstr_to_bytes['']` | 1.8108716109507284e-05 | 1.072953506463328e-05 | 40.75% | 68.77% | 1.69x | ✅ | -| `hexstr_to_bytes['0x'+'0'*128]` | 3.477853093027143e-05 | 2.134695480977104e-05 | 38.62% | 62.92% | 1.63x | ✅ | -| `hexstr_to_bytes['0x'+'00'*64]` | 3.4732543679357386e-05 | 2.1221180074638576e-05 | 38.90% | 63.67% | 1.64x | ✅ | -| `hexstr_to_bytes['0x'+'00ff'*16]` | 3.157873784693238e-05 | 1.8192123289786923e-05 | 42.39% | 73.58% | 1.74x | ✅ | -| `hexstr_to_bytes['0x'+'0123456789abcdef'*8]` | 3.525845229823845e-05 | 2.082314740675848e-05 | 40.94% | 69.32% | 1.69x | ✅ | -| `hexstr_to_bytes['0x'+'1'*64]` | 3.1579329084849564e-05 | 1.8312339417318836e-05 | 42.01% | 72.45% | 1.72x | ✅ | -| `hexstr_to_bytes['0x'+'1234567890abcdef'*8]` | 3.5056540486883796e-05 | 2.1165520123982964e-05 | 39.62% | 65.63% | 1.66x | ✅ | -| `hexstr_to_bytes['0x'+'a'*128]` | 3.49287494195988e-05 | 2.1287539169906995e-05 | 39.05% | 64.08% | 1.64x | ✅ | -| `hexstr_to_bytes['0x'+'a1b2c3d4'*8]` | 3.185698664990902e-05 | 1.8281794042996916e-05 | 42.61% | 74.26% | 1.74x | ✅ | -| `hexstr_to_bytes['0x'+'b'*2048]` | 0.00013744273892649875 | 0.00011884439365400451 | 13.53% | 15.65% | 1.16x | ✅ | -| `hexstr_to_bytes['0x'+'badc0ffee0ddf00d'*4]` | 3.199155056953397e-05 | 1.841690685471494e-05 | 42.43% | 73.71% | 1.74x | ✅ | -| `hexstr_to_bytes['0x'+'beef'*16]` | 3.1871150713902886e-05 | 1.825076950359168e-05 | 42.74% | 74.63% | 1.75x | ✅ | -| `hexstr_to_bytes['0x'+'c'*1024]` | 9.024289594262732e-05 | 7.190635060936371e-05 | 20.32% | 25.50% | 1.26x | ✅ | -| `hexstr_to_bytes['0x'+'cafebabe'*8]` | 3.19310137024219e-05 | 1.8237492039379318e-05 | 42.88% | 75.08% | 1.75x | ✅ | -| `hexstr_to_bytes['0x'+'d'*512]` | 5.800723082588783e-05 | 4.082969024960506e-05 | 29.61% | 42.07% | 1.42x | ✅ | -| `hexstr_to_bytes['0x'+'dead'*16]` | 3.1683305095766123e-05 | 1.8495778271077177e-05 | 41.62% | 71.30% | 1.71x | ✅ | -| `hexstr_to_bytes['0x'+'e'*256]` | 4.4261201864336894e-05 | 2.783576306930417e-05 | 37.11% | 59.01% | 1.59x | ✅ | -| `hexstr_to_bytes['0x'+'f'*128]` | 3.4884470128319426e-05 | 2.1125807424977293e-05 | 39.44% | 65.13% | 1.65x | ✅ | -| `hexstr_to_bytes['0x'+'f'*64]` | 3.159624528509172e-05 | 1.8250096630324273e-05 | 42.24% | 73.13% | 1.73x | ✅ | -| `hexstr_to_bytes['0x'+'facefeed'*8]` | 3.1748030176567864e-05 | 1.8350213477570096e-05 | 42.20% | 73.01% | 1.73x | ✅ | -| `hexstr_to_bytes['0x'+'ff'*32]` | 3.158815574740083e-05 | 1.819649584898684e-05 | 42.39% | 73.59% | 1.74x | ✅ | -| `hexstr_to_bytes['0x'+'ff00'*16]` | 3.179748785762551e-05 | 1.8167401189431703e-05 | 42.87% | 75.02% | 1.75x | ✅ | -| `hexstr_to_bytes['0x']` | 2.298298246447314e-05 | 1.0683129269606998e-05 | 53.52% | 115.13% | 2.15x | ✅ | -| `hexstr_to_bytes['0x0']` | 3.153780989321959e-05 | 1.868174251724141e-05 | 40.76% | 68.82% | 1.69x | ✅ | -| `hexstr_to_bytes['0x1']` | 3.2007765643142155e-05 | 1.8974342768234374e-05 | 40.72% | 68.69% | 1.69x | ✅ | -| `hexstr_to_bytes['0x1234']` | 2.9016069626678522e-05 | 1.6431613751268333e-05 | 43.37% | 76.59% | 1.77x | ✅ | -| `hexstr_to_bytes['0xCAFEBABE']` | 2.921627644405063e-05 | 1.6256215638285292e-05 | 44.36% | 79.72% | 1.80x | ✅ | -| `hexstr_to_bytes['0xabcdef']` | 2.937422894326973e-05 | 1.631260719885842e-05 | 44.47% | 80.07% | 1.80x | ✅ | -| `hexstr_to_bytes['0xdeadbeef']` | 2.9662014702520155e-05 | 1.6313537795389213e-05 | 45.00% | 81.82% | 1.82x | ✅ | -| `hexstr_to_bytes['deadbeef']` | 2.1683696702414743e-05 | 1.4442618121960187e-05 | 33.39% | 50.14% | 1.50x | ✅ | -| `to_bytes['']` | 2.8406081504686926e-05 | 1.212071815779389e-05 | 57.33% | 134.36% | 2.34x | ✅ | -| `to_bytes['0x'+'00'*64]` | 4.6716391777960806e-05 | 2.319346964340516e-05 | 50.35% | 101.42% | 2.01x | ✅ | -| `to_bytes['0x'+'a'*128]` | 4.7273962279218805e-05 | 2.2773025159909116e-05 | 51.83% | 107.59% | 2.08x | ✅ | -| `to_bytes['0x'+'ff'*32]` | 4.2863771256961514e-05 | 2.0218519120147183e-05 | 52.83% | 112.00% | 2.12x | ✅ | -| `to_bytes['0x']` | 3.408878069748809e-05 | 1.2334688490893812e-05 | 63.82% | 176.37% | 2.76x | ✅ | -| `to_bytes['0x1234']` | 4.0324834741976484e-05 | 1.7572703709852513e-05 | 56.42% | 129.47% | 2.29x | ✅ | -| `to_bytes['0xCAFEBABE']` | 4.10986371145335e-05 | 1.7918040683352798e-05 | 56.40% | 129.37% | 2.29x | ✅ | -| `to_bytes['0xabcdef']` | 4.0585657657671104e-05 | 1.7885805718051142e-05 | 55.93% | 126.92% | 2.27x | ✅ | -| `to_bytes['0xdeadbeef']` | 4.102919062199696e-05 | 1.7976496729520054e-05 | 56.19% | 128.24% | 2.28x | ✅ | -| `to_bytes['abc']` | 3.539337044074583e-05 | 1.9672726154367137e-05 | 44.42% | 79.91% | 1.80x | ✅ | -| `to_bytes['deadbeef']` | 3.223507688764388e-05 | 1.5670468820973864e-05 | 51.39% | 105.71% | 2.06x | ✅ | -| `to_bytes[0-9]` | 6.313244733892376e-06 | 3.383372814606704e-06 | 46.41% | 86.60% | 1.87x | ✅ | -| `to_bytes[0]` | 7.409775995660785e-05 | 3.067360631720152e-05 | 58.60% | 141.57% | 2.42x | ✅ | -| `to_bytes[123456]` | 8.010812341907212e-05 | 3.486891585363576e-05 | 56.47% | 129.74% | 2.30x | ✅ | -| `to_bytes[2**16]` | 8.046266538687848e-05 | 3.4373396956017574e-05 | 57.28% | 134.08% | 2.34x | ✅ | -| `to_bytes[2**256-1]` | 8.556428307886735e-05 | 4.037964824218906e-05 | 52.81% | 111.90% | 2.12x | ✅ | -| `to_bytes[2**32]` | 8.186456138853784e-05 | 3.670436395753801e-05 | 55.16% | 123.04% | 2.23x | ✅ | -| `to_bytes[2**64]` | 8.27339440074337e-05 | 3.833373528682107e-05 | 53.67% | 115.83% | 2.16x | ✅ | -| `to_bytes[2**8]` | 7.739650178943448e-05 | 3.367216378785691e-05 | 56.49% | 129.85% | 2.30x | ✅ | -| `to_bytes[4-byte pattern]` | 5.87318545109898e-06 | 3.532373211153483e-06 | 39.86% | 66.27% | 1.66x | ✅ | -| `to_bytes[False]` | 2.1852371492268608e-05 | 4.213642715326131e-06 | 80.72% | 418.61% | 5.19x | ✅ | -| `to_bytes[True]` | 2.19648616523232e-05 | 4.366722412375634e-06 | 80.12% | 403.01% | 5.03x | ✅ | -| `to_bytes[all byte values]` | 5.750168122981936e-06 | 3.474973735864405e-06 | 39.57% | 65.47% | 1.65x | ✅ | -| `to_bytes[alternating 0x00/0xff]` | 6.333255896356944e-06 | 3.384083309576267e-06 | 46.57% | 87.15% | 1.87x | ✅ | -| `to_bytes[alternating 0xaa/0x55]` | 6.3665756345667486e-06 | 3.381626329505373e-06 | 46.88% | 88.27% | 1.88x | ✅ | -| `to_bytes[ascii sentence]` | 6.2823266978538725e-06 | 3.6714145931930532e-06 | 41.56% | 71.11% | 1.71x | ✅ | -| `to_bytes[b'']` | 5.970186354967672e-06 | 3.5961475162989274e-06 | 39.76% | 66.02% | 1.66x | ✅ | -| `to_bytes[b'\\x00'*32]` | 6.165592547049623e-06 | 3.7231993259240725e-06 | 39.61% | 65.60% | 1.66x | ✅ | -| `to_bytes[b'\\x00\\xff\\x00\\xff']` | 6.0754166416466165e-06 | 3.6257780966561048e-06 | 40.32% | 67.56% | 1.68x | ✅ | -| `to_bytes[b'\\x01'*100]` | 6.220290347293189e-06 | 3.4234982832629264e-06 | 44.96% | 81.69% | 1.82x | ✅ | -| `to_bytes[b'\\x01'*2048]` | 6.330636000138178e-06 | 3.5289006021602926e-06 | 44.26% | 79.39% | 1.79x | ✅ | -| `to_bytes[b'\\x01\\x02\\x03']` | 6.185025316451305e-06 | 3.623057815000184e-06 | 41.42% | 70.71% | 1.71x | ✅ | -| `to_bytes[b'\\x10\\x20\\x30\\x40\\x50']` | 6.345146929425563e-06 | 3.384053023119839e-06 | 46.67% | 87.50% | 1.88x | ✅ | -| `to_bytes[b'\\x7f'*8]` | 6.307922119478078e-06 | 3.2902904791661006e-06 | 47.84% | 91.71% | 1.92x | ✅ | -| `to_bytes[b'\\x80'*8]` | 6.283858599481755e-06 | 3.385716400166712e-06 | 46.12% | 85.60% | 1.86x | ✅ | -| `to_bytes[b'\\xde\\xad\\xbe\\xef']` | 6.1359750750656236e-06 | 3.476498530048304e-06 | 43.34% | 76.50% | 1.76x | ✅ | -| `to_bytes[b'\\xff'*64]` | 6.126065218502575e-06 | 3.51859567736766e-06 | 42.56% | 74.11% | 1.74x | ✅ | -| `to_bytes[b'a'*1024]` | 6.08377644413553e-06 | 3.470039212531075e-06 | 42.96% | 75.32% | 1.75x | ✅ | -| `to_bytes[b'abc']` | 5.76852269797698e-06 | 3.720980215930264e-06 | 35.50% | 55.03% | 1.55x | ✅ | -| `to_bytes[bytearray(0-9)]` | 2.8561318893861434e-05 | 1.3792796688536417e-05 | 51.71% | 107.07% | 2.07x | ✅ | -| `to_bytes[bytearray(4-byte pattern)]` | 2.8991437853431247e-05 | 1.3978918096930204e-05 | 51.78% | 107.39% | 2.07x | ✅ | -| `to_bytes[bytearray(all byte values)]` | 2.8902652661265275e-05 | 1.3819960098487067e-05 | 52.18% | 109.14% | 2.09x | ✅ | -| `to_bytes[bytearray(alternating 0x00/0xff)]` | 2.8489362183707827e-05 | 1.3758298560882817e-05 | 51.71% | 107.07% | 2.07x | ✅ | -| `to_bytes[bytearray(alternating 0xaa/0x55)]` | 2.83772519964677e-05 | 1.3805372085383965e-05 | 51.35% | 105.55% | 2.06x | ✅ | -| `to_bytes[bytearray(ascii sentence)]` | 2.834693533539934e-05 | 1.3875575398365717e-05 | 51.05% | 104.29% | 2.04x | ✅ | -| `to_bytes[bytearray(b'')]` | 2.485850054079193e-05 | 1.2420811536799517e-05 | 50.03% | 100.14% | 2.00x | ✅ | -| `to_bytes[bytearray(b'\\x00'*32)]` | 2.8144954603180046e-05 | 1.386911952345976e-05 | 50.72% | 102.93% | 2.03x | ✅ | -| `to_bytes[bytearray(b'\\x00\\xff\\x00\\xff')]` | 2.8147714773469372e-05 | 1.3911624392784609e-05 | 50.58% | 102.33% | 2.02x | ✅ | -| `to_bytes[bytearray(b'\\x01'*100)]` | 2.8996036789705873e-05 | 1.4101294277125372e-05 | 51.37% | 105.63% | 2.06x | ✅ | -| `to_bytes[bytearray(b'\\x01'*2048)]` | 3.611237452090361e-05 | 1.9636911707679116e-05 | 45.62% | 83.90% | 1.84x | ✅ | -| `to_bytes[bytearray(b'\\x01\\x02\\x03')]` | 2.8250212868733876e-05 | 1.4044834519068884e-05 | 50.28% | 101.14% | 2.01x | ✅ | -| `to_bytes[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 2.8308717510961365e-05 | 1.402994553374833e-05 | 50.44% | 101.77% | 2.02x | ✅ | -| `to_bytes[bytearray(b'\\x7f'*8)]` | 2.879822728573937e-05 | 1.362057750138126e-05 | 52.70% | 111.43% | 2.11x | ✅ | -| `to_bytes[bytearray(b'\\x80'*8)]` | 2.8598779280414334e-05 | 1.3973387319479566e-05 | 51.14% | 104.67% | 2.05x | ✅ | -| `to_bytes[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 2.8177032904409735e-05 | 1.3879138481326223e-05 | 50.74% | 103.02% | 2.03x | ✅ | -| `to_bytes[bytearray(b'\\xff'*64)]` | 2.8290679793749143e-05 | 1.4105866394510276e-05 | 50.14% | 100.56% | 2.01x | ✅ | -| `to_bytes[bytearray(b'a'*1024)]` | 3.4682146538512625e-05 | 1.8943544543982268e-05 | 45.38% | 83.08% | 1.83x | ✅ | -| `to_bytes[bytearray(b'abc')]` | 2.8352038386506405e-05 | 1.4153787434714731e-05 | 50.08% | 100.31% | 2.00x | ✅ | -| `to_bytes[bytearray(long alternating)]` | 3.518521414978128e-05 | 1.8799311711945177e-05 | 46.57% | 87.16% | 1.87x | ✅ | -| `to_bytes[bytearray(mixed pattern)]` | 2.838322518030291e-05 | 1.407872655537458e-05 | 50.40% | 101.60% | 2.02x | ✅ | -| `to_bytes[bytearray(multiples of 0x10)]` | 2.8653612058621225e-05 | 1.3957903398204689e-05 | 51.29% | 105.29% | 2.05x | ✅ | -| `to_bytes[bytearray(palindrome ascii)]` | 2.8034044553015058e-05 | 1.390489300763532e-05 | 50.40% | 101.61% | 2.02x | ✅ | -| `to_bytes[bytearray(palindrome numeric)]` | 2.8479671468884014e-05 | 1.4042896177350062e-05 | 50.69% | 102.80% | 2.03x | ✅ | -| `to_bytes[bytearray(palindrome)]` | 2.821066448750178e-05 | 1.3758763689599568e-05 | 51.23% | 105.04% | 2.05x | ✅ | -| `to_bytes[bytearray(repeated 0-9)]` | 2.8664469979540998e-05 | 1.4230124035279283e-05 | 50.36% | 101.44% | 2.01x | ✅ | -| `to_bytes[bytearray(single 0xff)]` | 2.8401256567866244e-05 | 1.4127525183492144e-05 | 50.26% | 101.03% | 2.01x | ✅ | -| `to_bytes[bytearray(single null byte)]` | 2.854378304017952e-05 | 1.3715347607249224e-05 | 51.95% | 108.12% | 2.08x | ✅ | -| `to_bytes[bytearray(two patterns)]` | 2.84194651974342e-05 | 1.3882449365777375e-05 | 51.15% | 104.72% | 2.05x | ✅ | -| `to_bytes[long alternating]` | 6.333914520372551e-06 | 3.531768998088399e-06 | 44.24% | 79.34% | 1.79x | ✅ | -| `to_bytes[memoryview(0-9)]` | 4.216070589255035e-05 | 1.6789183869491977e-05 | 60.18% | 151.12% | 2.51x | ✅ | -| `to_bytes[memoryview(4-byte pattern)]` | 4.261823207581377e-05 | 1.7526210875170774e-05 | 58.88% | 143.17% | 2.43x | ✅ | -| `to_bytes[memoryview(all byte values)]` | 4.177678816628457e-05 | 1.763786769308451e-05 | 57.78% | 136.86% | 2.37x | ✅ | -| `to_bytes[memoryview(alternating 0x00/0xff)]` | 4.192378485711202e-05 | 1.6610228150189433e-05 | 60.38% | 152.40% | 2.52x | ✅ | -| `to_bytes[memoryview(alternating 0xaa/0x55)]` | 4.193301159378282e-05 | 1.6718718370914558e-05 | 60.13% | 150.81% | 2.51x | ✅ | -| `to_bytes[memoryview(ascii sentence)]` | 4.218731950817407e-05 | 1.6835557107338123e-05 | 60.09% | 150.58% | 2.51x | ✅ | -| `to_bytes[memoryview(b'')]` | 4.0849748530397396e-05 | 1.4729471253375882e-05 | 63.94% | 177.33% | 2.77x | ✅ | -| `to_bytes[memoryview(b'\\x00'*32)]` | 4.178796631546478e-05 | 1.6671135165739163e-05 | 60.11% | 150.66% | 2.51x | ✅ | -| `to_bytes[memoryview(b'\\x00\\xff\\x00\\xff')]` | 4.187624798291816e-05 | 1.681192726821208e-05 | 59.85% | 149.09% | 2.49x | ✅ | -| `to_bytes[memoryview(b'\\x01'*100)]` | 4.283082610610419e-05 | 1.7311299175694957e-05 | 59.58% | 147.42% | 2.47x | ✅ | -| `to_bytes[memoryview(b'\\x01'*2048)]` | 5.0406241627620315e-05 | 2.3805468711523387e-05 | 52.77% | 111.74% | 2.12x | ✅ | -| `to_bytes[memoryview(b'\\x01\\x02\\x03')]` | 4.2574253113576826e-05 | 1.7068190163113205e-05 | 59.91% | 149.44% | 2.49x | ✅ | -| `to_bytes[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 4.218816240208931e-05 | 1.6825183092837047e-05 | 60.12% | 150.74% | 2.51x | ✅ | -| `to_bytes[memoryview(b'\\x7f'*8)]` | 4.095897268787583e-05 | 1.6858674225700176e-05 | 58.84% | 142.95% | 2.43x | ✅ | -| `to_bytes[memoryview(b'\\x80'*8)]` | 4.17237507982478e-05 | 1.673978853122123e-05 | 59.88% | 149.25% | 2.49x | ✅ | -| `to_bytes[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 4.147012073754908e-05 | 1.6800966368166974e-05 | 59.49% | 146.83% | 2.47x | ✅ | -| `to_bytes[memoryview(b'\\xff'*64)]` | 4.2056837095537003e-05 | 1.6917647180973096e-05 | 59.77% | 148.60% | 2.49x | ✅ | -| `to_bytes[memoryview(b'a'*1024)]` | 4.962969022899208e-05 | 2.2632837409482258e-05 | 54.40% | 119.28% | 2.19x | ✅ | -| `to_bytes[memoryview(b'abc')]` | 4.210861382343769e-05 | 1.7250375590328674e-05 | 59.03% | 144.10% | 2.44x | ✅ | -| `to_bytes[memoryview(long alternating)]` | 4.948870200274808e-05 | 2.2821022538730543e-05 | 53.89% | 116.86% | 2.17x | ✅ | -| `to_bytes[memoryview(mixed pattern)]` | 4.200721196656227e-05 | 1.7680451679586393e-05 | 57.91% | 137.59% | 2.38x | ✅ | -| `to_bytes[memoryview(multiples of 0x10)]` | 4.211903381850065e-05 | 1.6920204643854485e-05 | 59.83% | 148.93% | 2.49x | ✅ | -| `to_bytes[memoryview(palindrome ascii)]` | 4.185642119950413e-05 | 1.687371589872684e-05 | 59.69% | 148.06% | 2.48x | ✅ | -| `to_bytes[memoryview(palindrome numeric)]` | 4.2668238474919904e-05 | 1.686421437853214e-05 | 60.48% | 153.01% | 2.53x | ✅ | -| `to_bytes[memoryview(palindrome)]` | 4.2439820542103994e-05 | 1.6770502655806186e-05 | 60.48% | 153.06% | 2.53x | ✅ | -| `to_bytes[memoryview(repeated 0-9)]` | 4.207030309610119e-05 | 1.755542666534358e-05 | 58.27% | 139.64% | 2.40x | ✅ | -| `to_bytes[memoryview(single 0xff)]` | 4.172718653103497e-05 | 1.712737133686334e-05 | 58.95% | 143.63% | 2.44x | ✅ | -| `to_bytes[memoryview(single null byte)]` | 4.197387600707414e-05 | 1.726933526431106e-05 | 58.86% | 143.05% | 2.43x | ✅ | -| `to_bytes[memoryview(two patterns)]` | 4.2064523566006314e-05 | 1.6879767667756747e-05 | 59.87% | 149.20% | 2.49x | ✅ | -| `to_bytes[mixed pattern]` | 6.369498591436948e-06 | 3.82241587910462e-06 | 39.99% | 66.64% | 1.67x | ✅ | -| `to_bytes[multiples of 0x10]` | 6.3134242390508075e-06 | 3.537523789030211e-06 | 43.97% | 78.47% | 1.78x | ✅ | -| `to_bytes[palindrome ascii]` | 6.31994765676623e-06 | 3.4117271311370175e-06 | 46.02% | 85.24% | 1.85x | ✅ | -| `to_bytes[palindrome numeric]` | 6.330060725996011e-06 | 3.5671873199186265e-06 | 43.65% | 77.45% | 1.77x | ✅ | -| `to_bytes[palindrome]` | 6.1463385094174565e-06 | 3.6263390178473107e-06 | 41.00% | 69.49% | 1.69x | ✅ | -| `to_bytes[repeated 0-9]` | 6.459886450517052e-06 | 3.570522771163701e-06 | 44.73% | 80.92% | 1.81x | ✅ | -| `to_bytes[single 0xff]` | 6.34225064835968e-06 | 3.597512703859527e-06 | 43.28% | 76.30% | 1.76x | ✅ | -| `to_bytes[single null byte]` | 6.272059081271775e-06 | 3.659259066119072e-06 | 41.66% | 71.40% | 1.71x | ✅ | -| `to_bytes[two patterns]` | 6.329665299134493e-06 | 3.568472140075206e-06 | 43.62% | 77.38% | 1.77x | ✅ | +| `hexstr_to_bytes['']` | 1.7631697254868227e-05 | 1.091621468053003e-05 | 38.09% | 61.52% | 1.62x | ✅ | +| `hexstr_to_bytes['0x'+'0'*128]` | 3.460504502568348e-05 | 2.1046592576001717e-05 | 39.18% | 64.42% | 1.64x | ✅ | +| `hexstr_to_bytes['0x'+'00'*64]` | 3.43840179351816e-05 | 2.0977258416815523e-05 | 38.99% | 63.91% | 1.64x | ✅ | +| `hexstr_to_bytes['0x'+'00ff'*16]` | 3.087271591788051e-05 | 1.836878200251362e-05 | 40.50% | 68.07% | 1.68x | ✅ | +| `hexstr_to_bytes['0x'+'0123456789abcdef'*8]` | 3.441267325691157e-05 | 2.1213740156999538e-05 | 38.35% | 62.22% | 1.62x | ✅ | +| `hexstr_to_bytes['0x'+'1'*64]` | 3.069728260757906e-05 | 1.843416914702672e-05 | 39.95% | 66.52% | 1.67x | ✅ | +| `hexstr_to_bytes['0x'+'1234567890abcdef'*8]` | 3.4705658948592266e-05 | 2.1239795627238952e-05 | 38.80% | 63.40% | 1.63x | ✅ | +| `hexstr_to_bytes['0x'+'a'*128]` | 3.507577275966717e-05 | 2.1068135344714727e-05 | 39.94% | 66.49% | 1.66x | ✅ | +| `hexstr_to_bytes['0x'+'a1b2c3d4'*8]` | 3.1473810848775834e-05 | 1.8351794569315014e-05 | 41.69% | 71.50% | 1.72x | ✅ | +| `hexstr_to_bytes['0x'+'b'*2048]` | 0.000137475192764233 | 0.00011832177729459453 | 13.93% | 16.19% | 1.16x | ✅ | +| `hexstr_to_bytes['0x'+'badc0ffee0ddf00d'*4]` | 3.081088360884931e-05 | 1.8322207368514194e-05 | 40.53% | 68.16% | 1.68x | ✅ | +| `hexstr_to_bytes['0x'+'beef'*16]` | 3.07422058647435e-05 | 1.8287685662583144e-05 | 40.51% | 68.10% | 1.68x | ✅ | +| `hexstr_to_bytes['0x'+'c'*1024]` | 8.963047737950764e-05 | 7.093637113695229e-05 | 20.86% | 26.35% | 1.26x | ✅ | +| `hexstr_to_bytes['0x'+'cafebabe'*8]` | 3.0891432577301886e-05 | 1.817461003574543e-05 | 41.17% | 69.97% | 1.70x | ✅ | +| `hexstr_to_bytes['0x'+'d'*512]` | 5.734958399242955e-05 | 4.0968799912746086e-05 | 28.56% | 39.98% | 1.40x | ✅ | +| `hexstr_to_bytes['0x'+'dead'*16]` | 3.073137102309844e-05 | 1.8311346368225762e-05 | 40.41% | 67.83% | 1.68x | ✅ | +| `hexstr_to_bytes['0x'+'e'*256]` | 4.354151261419979e-05 | 2.7730003809733677e-05 | 36.31% | 57.02% | 1.57x | ✅ | +| `hexstr_to_bytes['0x'+'f'*128]` | 3.411709158706449e-05 | 2.102833320708899e-05 | 38.36% | 62.24% | 1.62x | ✅ | +| `hexstr_to_bytes['0x'+'f'*64]` | 3.0467742610229984e-05 | 1.8344953673908825e-05 | 39.79% | 66.08% | 1.66x | ✅ | +| `hexstr_to_bytes['0x'+'facefeed'*8]` | 3.072038468758227e-05 | 1.8219111278417548e-05 | 40.69% | 68.62% | 1.69x | ✅ | +| `hexstr_to_bytes['0x'+'ff'*32]` | 3.108559217921719e-05 | 1.8452550538204342e-05 | 40.64% | 68.46% | 1.68x | ✅ | +| `hexstr_to_bytes['0x'+'ff00'*16]` | 3.0510658597786304e-05 | 1.8248159132963428e-05 | 40.19% | 67.20% | 1.67x | ✅ | +| `hexstr_to_bytes['0x']` | 2.2412686940179207e-05 | 1.0717849114659657e-05 | 52.18% | 109.12% | 2.09x | ✅ | +| `hexstr_to_bytes['0x0']` | 3.1251518929035074e-05 | 1.8823000842386368e-05 | 39.77% | 66.03% | 1.66x | ✅ | +| `hexstr_to_bytes['0x1']` | 3.11919000369293e-05 | 1.866611350630668e-05 | 40.16% | 67.10% | 1.67x | ✅ | +| `hexstr_to_bytes['0x1234']` | 2.8052765027645127e-05 | 1.6092020099448603e-05 | 42.64% | 74.33% | 1.74x | ✅ | +| `hexstr_to_bytes['0xCAFEBABE']` | 2.8548800769874e-05 | 1.603839898990126e-05 | 43.82% | 78.00% | 1.78x | ✅ | +| `hexstr_to_bytes['0xabcdef']` | 2.8717529683732944e-05 | 1.6165310695849303e-05 | 43.71% | 77.65% | 1.78x | ✅ | +| `hexstr_to_bytes['0xdeadbeef']` | 2.8457086025863898e-05 | 1.5995698544778376e-05 | 43.79% | 77.90% | 1.78x | ✅ | +| `hexstr_to_bytes['deadbeef']` | 2.2257481830379652e-05 | 1.4133437429091435e-05 | 36.50% | 57.48% | 1.57x | ✅ | +| `to_bytes['']` | 2.765740249333062e-05 | 1.1901871422470663e-05 | 56.97% | 132.38% | 2.32x | ✅ | +| `to_bytes['0x'+'00'*64]` | 4.646955104933755e-05 | 2.2324951042546773e-05 | 51.96% | 108.15% | 2.08x | ✅ | +| `to_bytes['0x'+'a'*128]` | 4.684962570096932e-05 | 2.2442981027032375e-05 | 52.10% | 108.75% | 2.09x | ✅ | +| `to_bytes['0x'+'ff'*32]` | 4.3583710346506605e-05 | 2.033952243872824e-05 | 53.33% | 114.28% | 2.14x | ✅ | +| `to_bytes['0x']` | 3.389490379243516e-05 | 1.2231788218340199e-05 | 63.91% | 177.11% | 2.77x | ✅ | +| `to_bytes['0x1234']` | 3.880579835708911e-05 | 1.7266811332742777e-05 | 55.50% | 124.74% | 2.25x | ✅ | +| `to_bytes['0xCAFEBABE']` | 4.0490154981887174e-05 | 1.7434025824165244e-05 | 56.94% | 132.25% | 2.32x | ✅ | +| `to_bytes['0xabcdef']` | 3.936844735204256e-05 | 1.7644349646383338e-05 | 55.18% | 123.12% | 2.23x | ✅ | +| `to_bytes['0xdeadbeef']` | 4.130083979251476e-05 | 1.746172318281109e-05 | 57.72% | 136.52% | 2.37x | ✅ | +| `to_bytes['abc']` | 3.6676121666827416e-05 | 1.924219021245015e-05 | 47.53% | 90.60% | 1.91x | ✅ | +| `to_bytes['deadbeef']` | 3.2123901789208605e-05 | 1.5130731992136517e-05 | 52.90% | 112.31% | 2.12x | ✅ | +| `to_bytes[0-9]` | 6.128806719107819e-06 | 3.4018753134086397e-06 | 44.49% | 80.16% | 1.80x | ✅ | +| `to_bytes[0]` | 7.263268368566597e-05 | 3.176434234273735e-05 | 56.27% | 128.66% | 2.29x | ✅ | +| `to_bytes[123456]` | 7.773043102282778e-05 | 3.6012911325402444e-05 | 53.67% | 115.84% | 2.16x | ✅ | +| `to_bytes[2**16]` | 7.775821154506235e-05 | 3.4643455384361994e-05 | 55.45% | 124.45% | 2.24x | ✅ | +| `to_bytes[2**256-1]` | 8.085161468450896e-05 | 3.8982111120450285e-05 | 51.79% | 107.41% | 2.07x | ✅ | +| `to_bytes[2**32]` | 7.976633493131837e-05 | 3.854280141026799e-05 | 51.68% | 106.96% | 2.07x | ✅ | +| `to_bytes[2**64]` | 7.965934143157059e-05 | 3.847738391589028e-05 | 51.70% | 107.03% | 2.07x | ✅ | +| `to_bytes[2**8]` | 7.759343341665132e-05 | 3.438625972140119e-05 | 55.68% | 125.65% | 2.26x | ✅ | +| `to_bytes[4-byte pattern]` | 6.184672956729293e-06 | 3.450719936324659e-06 | 44.21% | 79.23% | 1.79x | ✅ | +| `to_bytes[False]` | 2.0272890522406702e-05 | 4.17187869182503e-06 | 79.42% | 385.94% | 4.86x | ✅ | +| `to_bytes[True]` | 2.0337098319351452e-05 | 4.21817181904989e-06 | 79.26% | 382.13% | 4.82x | ✅ | +| `to_bytes[all byte values]` | 6.033850504195824e-06 | 3.452502531655811e-06 | 42.78% | 74.77% | 1.75x | ✅ | +| `to_bytes[alternating 0x00/0xff]` | 6.074190617381264e-06 | 3.3774857075854817e-06 | 44.40% | 79.84% | 1.80x | ✅ | +| `to_bytes[alternating 0xaa/0x55]` | 6.031660475919454e-06 | 3.4662354469314576e-06 | 42.53% | 74.01% | 1.74x | ✅ | +| `to_bytes[ascii sentence]` | 6.364708530748353e-06 | 3.596781719176758e-06 | 43.49% | 76.96% | 1.77x | ✅ | +| `to_bytes[b'']` | 5.814507665325926e-06 | 3.330422732627435e-06 | 42.72% | 74.59% | 1.75x | ✅ | +| `to_bytes[b'\\x00'*32]` | 5.952927265182257e-06 | 3.390708329220507e-06 | 43.04% | 75.57% | 1.76x | ✅ | +| `to_bytes[b'\\x00\\xff\\x00\\xff']` | 5.90897190018515e-06 | 3.4587349077796393e-06 | 41.47% | 70.84% | 1.71x | ✅ | +| `to_bytes[b'\\x01'*100]` | 6.20360648765304e-06 | 3.458023021612626e-06 | 44.26% | 79.40% | 1.79x | ✅ | +| `to_bytes[b'\\x01'*2048]` | 6.206646008047194e-06 | 3.4730449885178588e-06 | 44.04% | 78.71% | 1.79x | ✅ | +| `to_bytes[b'\\x01\\x02\\x03']` | 6.041078309225661e-06 | 3.497229283856193e-06 | 42.11% | 72.74% | 1.73x | ✅ | +| `to_bytes[b'\\x10\\x20\\x30\\x40\\x50']` | 6.1431279629040155e-06 | 3.5072234181205435e-06 | 42.91% | 75.16% | 1.75x | ✅ | +| `to_bytes[b'\\x7f'*8]` | 5.9445239552533105e-06 | 3.455990914844932e-06 | 41.86% | 72.01% | 1.72x | ✅ | +| `to_bytes[b'\\x80'*8]` | 6.0580837536454005e-06 | 3.4578818421453275e-06 | 42.92% | 75.20% | 1.75x | ✅ | +| `to_bytes[b'\\xde\\xad\\xbe\\xef']` | 5.948930336483419e-06 | 3.452870208184687e-06 | 41.96% | 72.29% | 1.72x | ✅ | +| `to_bytes[b'\\xff'*64]` | 5.910361596348655e-06 | 3.513758912809839e-06 | 40.55% | 68.21% | 1.68x | ✅ | +| `to_bytes[b'a'*1024]` | 5.940166977302666e-06 | 3.4543899667855758e-06 | 41.85% | 71.96% | 1.72x | ✅ | +| `to_bytes[b'abc']` | 5.665418129943538e-06 | 3.4920495727371732e-06 | 38.36% | 62.24% | 1.62x | ✅ | +| `to_bytes[bytearray(0-9)]` | 2.8720126266221423e-05 | 1.3848755721113967e-05 | 51.78% | 107.38% | 2.07x | ✅ | +| `to_bytes[bytearray(4-byte pattern)]` | 2.798375297400853e-05 | 1.3947081146633731e-05 | 50.16% | 100.64% | 2.01x | ✅ | +| `to_bytes[bytearray(all byte values)]` | 2.794317373426329e-05 | 1.373572727288353e-05 | 50.84% | 103.43% | 2.03x | ✅ | +| `to_bytes[bytearray(alternating 0x00/0xff)]` | 2.754027361310253e-05 | 1.3859532654303315e-05 | 49.68% | 98.71% | 1.99x | ✅ | +| `to_bytes[bytearray(alternating 0xaa/0x55)]` | 2.752330570679931e-05 | 1.3747071739416303e-05 | 50.05% | 100.21% | 2.00x | ✅ | +| `to_bytes[bytearray(ascii sentence)]` | 2.8016025511923314e-05 | 1.3966986142979778e-05 | 50.15% | 100.59% | 2.01x | ✅ | +| `to_bytes[bytearray(b'')]` | 2.6182079338905127e-05 | 1.2415538309528003e-05 | 52.58% | 110.88% | 2.11x | ✅ | +| `to_bytes[bytearray(b'\\x00'*32)]` | 2.8823678283493077e-05 | 1.380915606086673e-05 | 52.09% | 108.73% | 2.09x | ✅ | +| `to_bytes[bytearray(b'\\x00\\xff\\x00\\xff')]` | 2.7742978683122163e-05 | 1.4090477738104562e-05 | 49.21% | 96.89% | 1.97x | ✅ | +| `to_bytes[bytearray(b'\\x01'*100)]` | 2.811823964050555e-05 | 1.3707665667448147e-05 | 51.25% | 105.13% | 2.05x | ✅ | +| `to_bytes[bytearray(b'\\x01'*2048)]` | 3.391017406427379e-05 | 1.919177770635661e-05 | 43.40% | 76.69% | 1.77x | ✅ | +| `to_bytes[bytearray(b'\\x01\\x02\\x03')]` | 2.8462394173450054e-05 | 1.3914592712333896e-05 | 51.11% | 104.55% | 2.05x | ✅ | +| `to_bytes[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 2.7324655119913685e-05 | 1.3926543146409739e-05 | 49.03% | 96.21% | 1.96x | ✅ | +| `to_bytes[bytearray(b'\\x7f'*8)]` | 2.8213339595211048e-05 | 1.4044371871365984e-05 | 50.22% | 100.89% | 2.01x | ✅ | +| `to_bytes[bytearray(b'\\x80'*8)]` | 2.8374201519601177e-05 | 1.3591160673485316e-05 | 52.10% | 108.77% | 2.09x | ✅ | +| `to_bytes[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 2.7635922419227767e-05 | 1.3952913970882383e-05 | 49.51% | 98.07% | 1.98x | ✅ | +| `to_bytes[bytearray(b'\\xff'*64)]` | 2.7026240822884473e-05 | 1.3906665556187504e-05 | 48.54% | 94.34% | 1.94x | ✅ | +| `to_bytes[bytearray(b'a'*1024)]` | 3.432988157896774e-05 | 1.8772332715088434e-05 | 45.32% | 82.87% | 1.83x | ✅ | +| `to_bytes[bytearray(b'abc')]` | 2.885382756010611e-05 | 1.3693845950340195e-05 | 52.54% | 110.71% | 2.11x | ✅ | +| `to_bytes[bytearray(long alternating)]` | 3.471264455237198e-05 | 1.878079291354493e-05 | 45.90% | 84.83% | 1.85x | ✅ | +| `to_bytes[bytearray(mixed pattern)]` | 2.7989190247603196e-05 | 1.3960558437151378e-05 | 50.12% | 100.49% | 2.00x | ✅ | +| `to_bytes[bytearray(multiples of 0x10)]` | 2.7582618532926505e-05 | 1.3928406893349861e-05 | 49.50% | 98.03% | 1.98x | ✅ | +| `to_bytes[bytearray(palindrome ascii)]` | 2.782414795666787e-05 | 1.3981859622957737e-05 | 49.75% | 99.00% | 1.99x | ✅ | +| `to_bytes[bytearray(palindrome numeric)]` | 2.8127476455770383e-05 | 1.400108873918582e-05 | 50.22% | 100.89% | 2.01x | ✅ | +| `to_bytes[bytearray(palindrome)]` | 2.792548659413843e-05 | 1.3776069551929638e-05 | 50.67% | 102.71% | 2.03x | ✅ | +| `to_bytes[bytearray(repeated 0-9)]` | 2.7780893334180496e-05 | 1.406502786195492e-05 | 49.37% | 97.52% | 1.98x | ✅ | +| `to_bytes[bytearray(single 0xff)]` | 2.8258983296085444e-05 | 1.382382546772253e-05 | 51.08% | 104.42% | 2.04x | ✅ | +| `to_bytes[bytearray(single null byte)]` | 2.8170018895995926e-05 | 1.3711873021224604e-05 | 51.32% | 105.44% | 2.05x | ✅ | +| `to_bytes[bytearray(two patterns)]` | 2.8122028240778503e-05 | 1.3730079965809994e-05 | 51.18% | 104.82% | 2.05x | ✅ | +| `to_bytes[long alternating]` | 6.178048447603625e-06 | 3.2692099809062627e-06 | 47.08% | 88.98% | 1.89x | ✅ | +| `to_bytes[memoryview(0-9)]` | 4.066634498202126e-05 | 1.6862054686971174e-05 | 58.54% | 141.17% | 2.41x | ✅ | +| `to_bytes[memoryview(4-byte pattern)]` | 4.1265312326298835e-05 | 1.7591315311833746e-05 | 57.37% | 134.58% | 2.35x | ✅ | +| `to_bytes[memoryview(all byte values)]` | 4.2497623909989377e-05 | 1.779113414543062e-05 | 58.14% | 138.87% | 2.39x | ✅ | +| `to_bytes[memoryview(alternating 0x00/0xff)]` | 4.110091772980444e-05 | 1.6911152097707955e-05 | 58.85% | 143.04% | 2.43x | ✅ | +| `to_bytes[memoryview(alternating 0xaa/0x55)]` | 4.084250864517706e-05 | 1.682975409488464e-05 | 58.79% | 142.68% | 2.43x | ✅ | +| `to_bytes[memoryview(ascii sentence)]` | 4.1867855315406646e-05 | 1.69732711509668e-05 | 59.46% | 146.67% | 2.47x | ✅ | +| `to_bytes[memoryview(b'')]` | 3.896616181655164e-05 | 1.5065420902734553e-05 | 61.34% | 158.65% | 2.59x | ✅ | +| `to_bytes[memoryview(b'\\x00'*32)]` | 4.14776530568013e-05 | 1.6601967203651238e-05 | 59.97% | 149.84% | 2.50x | ✅ | +| `to_bytes[memoryview(b'\\x00\\xff\\x00\\xff')]` | 4.191036767007785e-05 | 1.7164314898101793e-05 | 59.05% | 144.17% | 2.44x | ✅ | +| `to_bytes[memoryview(b'\\x01'*100)]` | 4.185961858186141e-05 | 1.7301909937725706e-05 | 58.67% | 141.94% | 2.42x | ✅ | +| `to_bytes[memoryview(b'\\x01'*2048)]` | 4.730466385893137e-05 | 2.4171745574492525e-05 | 48.90% | 95.70% | 1.96x | ✅ | +| `to_bytes[memoryview(b'\\x01\\x02\\x03')]` | 4.173225178486672e-05 | 1.7545432873750583e-05 | 57.96% | 137.85% | 2.38x | ✅ | +| `to_bytes[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 4.0445835525197575e-05 | 1.6764346443890063e-05 | 58.55% | 141.26% | 2.41x | ✅ | +| `to_bytes[memoryview(b'\\x7f'*8)]` | 4.1320695932507406e-05 | 1.685817765459351e-05 | 59.20% | 145.11% | 2.45x | ✅ | +| `to_bytes[memoryview(b'\\x80'*8)]` | 4.105199003242716e-05 | 1.6717488656243486e-05 | 59.28% | 145.56% | 2.46x | ✅ | +| `to_bytes[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 4.079137454611909e-05 | 1.7309944508889713e-05 | 57.56% | 135.65% | 2.36x | ✅ | +| `to_bytes[memoryview(b'\\xff'*64)]` | 4.138749976001393e-05 | 1.6923334252525205e-05 | 59.11% | 144.56% | 2.45x | ✅ | +| `to_bytes[memoryview(b'a'*1024)]` | 4.838092219453444e-05 | 2.312892917889122e-05 | 52.19% | 109.18% | 2.09x | ✅ | +| `to_bytes[memoryview(b'abc')]` | 4.116408905408207e-05 | 1.709223268913189e-05 | 58.48% | 140.84% | 2.41x | ✅ | +| `to_bytes[memoryview(long alternating)]` | 4.8639293717120077e-05 | 2.2670597562611567e-05 | 53.39% | 114.55% | 2.15x | ✅ | +| `to_bytes[memoryview(mixed pattern)]` | 4.1960303993697014e-05 | 1.7929745440469518e-05 | 57.27% | 134.03% | 2.34x | ✅ | +| `to_bytes[memoryview(multiples of 0x10)]` | 4.224830695264305e-05 | 1.6874462798151477e-05 | 60.06% | 150.37% | 2.50x | ✅ | +| `to_bytes[memoryview(palindrome ascii)]` | 4.12947021260211e-05 | 1.699970882379411e-05 | 58.83% | 142.91% | 2.43x | ✅ | +| `to_bytes[memoryview(palindrome numeric)]` | 4.208742151320691e-05 | 1.70195287616264e-05 | 59.56% | 147.29% | 2.47x | ✅ | +| `to_bytes[memoryview(palindrome)]` | 4.0847495523812565e-05 | 1.704389619050479e-05 | 58.27% | 139.66% | 2.40x | ✅ | +| `to_bytes[memoryview(repeated 0-9)]` | 4.132822288852617e-05 | 1.7556067723068435e-05 | 57.52% | 135.41% | 2.35x | ✅ | +| `to_bytes[memoryview(single 0xff)]` | 4.1572939791052977e-05 | 1.7598321756713e-05 | 57.67% | 136.23% | 2.36x | ✅ | +| `to_bytes[memoryview(single null byte)]` | 4.2365728859945676e-05 | 1.7194875489207835e-05 | 59.41% | 146.39% | 2.46x | ✅ | +| `to_bytes[memoryview(two patterns)]` | 4.229447907482183e-05 | 1.710686488438002e-05 | 59.55% | 147.24% | 2.47x | ✅ | +| `to_bytes[mixed pattern]` | 6.206987344709217e-06 | 3.5692426471531853e-06 | 42.50% | 73.90% | 1.74x | ✅ | +| `to_bytes[multiples of 0x10]` | 5.9729366861094285e-06 | 3.4294740235501164e-06 | 42.58% | 74.16% | 1.74x | ✅ | +| `to_bytes[palindrome ascii]` | 6.06636183775943e-06 | 3.370822853607219e-06 | 44.43% | 79.97% | 1.80x | ✅ | +| `to_bytes[palindrome numeric]` | 6.305190339702692e-06 | 3.378714941457986e-06 | 46.41% | 86.62% | 1.87x | ✅ | +| `to_bytes[palindrome]` | 5.818505318028764e-06 | 3.501716430962532e-06 | 39.82% | 66.16% | 1.66x | ✅ | +| `to_bytes[repeated 0-9]` | 6.282315610035769e-06 | 3.4312800982562568e-06 | 45.38% | 83.09% | 1.83x | ✅ | +| `to_bytes[single 0xff]` | 6.193883221914061e-06 | 3.386462696283193e-06 | 45.33% | 82.90% | 1.83x | ✅ | +| `to_bytes[single null byte]` | 6.241816324726409e-06 | 3.4574426948570633e-06 | 44.61% | 80.53% | 1.81x | ✅ | +| `to_bytes[two patterns]` | 6.256173322527104e-06 | 3.4730516474397675e-06 | 44.49% | 80.13% | 1.80x | ✅ | diff --git a/benchmarks/results/main.md b/benchmarks/results/main.md index 769cb1e..6b44c24 100644 --- a/benchmarks/results/main.md +++ b/benchmarks/results/main.md @@ -2,485 +2,485 @@ | Function | Reference Mean | Faster Mean | % Change | Speedup (%) | x Faster | Faster | |----------|---------------|-------------|----------|-------------|----------|--------| -| `hexbytes_getitem_index[-1-0-9]` | 2.4398669194312766e-05 | 2.3700239430198145e-05 | 2.86% | 2.95% | 1.03x | ✅ | -| `hexbytes_getitem_index[-1-4-byte pattern]` | 2.450830766017991e-05 | 2.369375918295451e-05 | 3.32% | 3.44% | 1.03x | ✅ | -| `hexbytes_getitem_index[-1-all byte values]` | 2.469434566762072e-05 | 2.3625445209234108e-05 | 4.33% | 4.52% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-alternating 0x00/0xff]` | 2.4221882583748995e-05 | 2.3879656085388328e-05 | 1.41% | 1.43% | 1.01x | ✅ | -| `hexbytes_getitem_index[-1-alternating 0xaa/0x55]` | 2.5046820689635422e-05 | 2.3829327851060934e-05 | 4.86% | 5.11% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-ascii sentence]` | 2.4919593826664666e-05 | 2.367313657271819e-05 | 5.00% | 5.27% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x00'*32]` | 2.480809689985565e-05 | 2.3793717344139304e-05 | 4.09% | 4.26% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x00\\xff\\x00\\xff']` | 2.461919271363367e-05 | 2.3431945682523965e-05 | 4.82% | 5.07% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x01'*100]` | 2.4630726452825696e-05 | 2.357774729583105e-05 | 4.28% | 4.47% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x01'*2048]` | 2.4536670433405248e-05 | 2.3647336955355246e-05 | 3.62% | 3.76% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x01\\x02\\x03']` | 2.4523423773058737e-05 | 2.3485627301671318e-05 | 4.23% | 4.42% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.4639062929167396e-05 | 2.3746049912177567e-05 | 3.62% | 3.76% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x7f'*8]` | 2.430450130499954e-05 | 2.4710169230251275e-05 | -1.67% | -1.64% | 0.98x | ❌ | -| `hexbytes_getitem_index[-1-b'\\x80'*8]` | 2.4434900729053444e-05 | 2.423331681637108e-05 | 0.82% | 0.83% | 1.01x | ✅ | -| `hexbytes_getitem_index[-1-b'\\xde\\xad\\xbe\\xef']` | 2.4629613312282295e-05 | 2.3423216545008263e-05 | 4.90% | 5.15% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-b'\\xff'*64]` | 2.4845800747969475e-05 | 2.3703368386438114e-05 | 4.60% | 4.82% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-b'a'*1024]` | 2.4678259460932807e-05 | 2.3508701807217696e-05 | 4.74% | 4.97% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-b'abc']` | 2.4708790319489954e-05 | 2.3749122679039042e-05 | 3.88% | 4.04% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-long alternating]` | 2.4499890376275927e-05 | 2.3536941760001132e-05 | 3.93% | 4.09% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-mixed pattern]` | 2.4833918550948886e-05 | 2.366002094185289e-05 | 4.73% | 4.96% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-multiples of 0x10]` | 2.4530932090952518e-05 | 2.3603860275321053e-05 | 3.78% | 3.93% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-palindrome ascii]` | 2.473792927775634e-05 | 2.3785628596251623e-05 | 3.85% | 4.00% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-palindrome numeric]` | 2.4674051716588214e-05 | 2.3774631189217717e-05 | 3.65% | 3.78% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-palindrome]` | 2.4322168575491326e-05 | 2.3537716791990592e-05 | 3.23% | 3.33% | 1.03x | ✅ | -| `hexbytes_getitem_index[-1-repeated 0-9]` | 2.4822137512721744e-05 | 2.3680120256715353e-05 | 4.60% | 4.82% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-two patterns]` | 2.484730465183926e-05 | 2.353033140356207e-05 | 5.30% | 5.60% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-0-9]` | 2.3541203822722762e-05 | 2.2334071376755506e-05 | 5.13% | 5.40% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-4-byte pattern]` | 2.3622836172783007e-05 | 2.261316220395509e-05 | 4.27% | 4.46% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-all byte values]` | 2.3329929826634935e-05 | 2.249788634066555e-05 | 3.57% | 3.70% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-alternating 0x00/0xff]` | 2.3476671348092725e-05 | 2.3030998040207866e-05 | 1.90% | 1.94% | 1.02x | ✅ | -| `hexbytes_getitem_index[0-alternating 0xaa/0x55]` | 2.346955965933665e-05 | 2.241591994259486e-05 | 4.49% | 4.70% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-ascii sentence]` | 2.3566707478263383e-05 | 2.2299691770425253e-05 | 5.38% | 5.68% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-b'\\x00'*32]` | 2.3601092216924777e-05 | 2.2700134835908334e-05 | 3.82% | 3.97% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-b'\\x00\\xff\\x00\\xff']` | 2.3561287944174144e-05 | 2.243874331292178e-05 | 4.76% | 5.00% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-b'\\x01'*100]` | 2.3525849511031913e-05 | 2.2286282985963923e-05 | 5.27% | 5.56% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-b'\\x01'*2048]` | 2.3582326682357088e-05 | 2.2401205888529327e-05 | 5.01% | 5.27% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-b'\\x01\\x02\\x03']` | 2.3412919520580767e-05 | 2.2241284475429845e-05 | 5.00% | 5.27% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3410224423527353e-05 | 2.2438331991382242e-05 | 4.15% | 4.33% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-b'\\x7f'*8]` | 2.347658121884457e-05 | 2.2298735565323555e-05 | 5.02% | 5.28% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-b'\\x80'*8]` | 2.3496997180154425e-05 | 2.2376444378580165e-05 | 4.77% | 5.01% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-b'\\xde\\xad\\xbe\\xef']` | 2.361280092946136e-05 | 2.2391127006112786e-05 | 5.17% | 5.46% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-b'\\xff'*64]` | 2.3616494262082657e-05 | 2.2447046372853796e-05 | 4.95% | 5.21% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-b'a'*1024]` | 2.373420717375194e-05 | 2.2398481708208354e-05 | 5.63% | 5.96% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-b'abc']` | 2.3605149699265704e-05 | 2.241611295777528e-05 | 5.04% | 5.30% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-long alternating]` | 2.3669426547505043e-05 | 2.248244277772446e-05 | 5.01% | 5.28% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-mixed pattern]` | 2.3352373805274287e-05 | 2.2321574882297265e-05 | 4.41% | 4.62% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-multiples of 0x10]` | 2.3676950599830587e-05 | 2.2436675795419113e-05 | 5.24% | 5.53% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-palindrome ascii]` | 2.3474435860965547e-05 | 2.297665862906155e-05 | 2.12% | 2.17% | 1.02x | ✅ | -| `hexbytes_getitem_index[0-palindrome numeric]` | 2.3518989924499344e-05 | 2.246358438029081e-05 | 4.49% | 4.70% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-palindrome]` | 2.3599375002859852e-05 | 2.233775321964051e-05 | 5.35% | 5.65% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-repeated 0-9]` | 2.3640353361698843e-05 | 2.2849892971217804e-05 | 3.34% | 3.46% | 1.03x | ✅ | -| `hexbytes_getitem_index[0-single 0xff]` | 2.346341920319022e-05 | 2.2292270458668258e-05 | 4.99% | 5.25% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-single null byte]` | 2.3446197840391946e-05 | 2.2330860182138552e-05 | 4.76% | 4.99% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-two patterns]` | 2.3454060027859588e-05 | 2.224453190987915e-05 | 5.16% | 5.44% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-0-9]` | 2.3691002162131447e-05 | 2.2247329677103568e-05 | 6.09% | 6.49% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-4-byte pattern]` | 2.33110074747669e-05 | 2.219165544351316e-05 | 4.80% | 5.04% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-all byte values]` | 2.321439614216639e-05 | 2.2624139602615813e-05 | 2.54% | 2.61% | 1.03x | ✅ | -| `hexbytes_getitem_index[1-alternating 0x00/0xff]` | 2.3570205902531207e-05 | 2.227391273477598e-05 | 5.50% | 5.82% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-alternating 0xaa/0x55]` | 2.3448826688190982e-05 | 2.2233950075531636e-05 | 5.18% | 5.46% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-ascii sentence]` | 2.3550750942210626e-05 | 2.2736051508925692e-05 | 3.46% | 3.58% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-b'\\x00'*32]` | 2.3604233169041847e-05 | 2.1982013238930223e-05 | 6.87% | 7.38% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-b'\\x00\\xff\\x00\\xff']` | 2.3608209286437567e-05 | 2.2355126748856482e-05 | 5.31% | 5.61% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-b'\\x01'*100]` | 2.3622266034431313e-05 | 2.2367354003926377e-05 | 5.31% | 5.61% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-b'\\x01'*2048]` | 2.353366675738795e-05 | 2.2229760972989778e-05 | 5.54% | 5.87% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-b'\\x01\\x02\\x03']` | 2.368599188421352e-05 | 2.2288533528008944e-05 | 5.90% | 6.27% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.4033949295008122e-05 | 2.222385906031731e-05 | 7.53% | 8.14% | 1.08x | ✅ | -| `hexbytes_getitem_index[1-b'\\x7f'*8]` | 2.35061541926734e-05 | 2.240575967694529e-05 | 4.68% | 4.91% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-b'\\x80'*8]` | 2.3666815765234934e-05 | 2.23942349366325e-05 | 5.38% | 5.68% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-b'\\xde\\xad\\xbe\\xef']` | 2.371331240249766e-05 | 2.2191519427788198e-05 | 6.42% | 6.86% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-b'\\xff'*64]` | 2.3555832444242367e-05 | 2.2329827167497338e-05 | 5.20% | 5.49% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-b'a'*1024]` | 2.3592150805490244e-05 | 2.235376930881143e-05 | 5.25% | 5.54% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-b'abc']` | 2.3611516424938476e-05 | 2.231843472964511e-05 | 5.48% | 5.79% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-long alternating]` | 2.337883160320926e-05 | 2.2163718890448673e-05 | 5.20% | 5.48% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-mixed pattern]` | 2.3575520238429644e-05 | 2.265363635225418e-05 | 3.91% | 4.07% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-multiples of 0x10]` | 2.364329837196481e-05 | 2.2326172595914224e-05 | 5.57% | 5.90% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-palindrome ascii]` | 2.3544388609197237e-05 | 2.2409207798827006e-05 | 4.82% | 5.07% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-palindrome numeric]` | 2.3424581187317112e-05 | 2.227132816936025e-05 | 4.92% | 5.18% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-palindrome]` | 2.3470140686648523e-05 | 2.224165796693019e-05 | 5.23% | 5.52% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-repeated 0-9]` | 2.3702048596976362e-05 | 2.2716539273379364e-05 | 4.16% | 4.34% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-two patterns]` | 2.3501602522445434e-05 | 2.2655002107860892e-05 | 3.60% | 3.74% | 1.04x | ✅ | -| `hexbytes_getitem_index[2-0-9]` | 2.3447794509934847e-05 | 2.245291372514099e-05 | 4.24% | 4.43% | 1.04x | ✅ | -| `hexbytes_getitem_index[2-4-byte pattern]` | 2.3414400954146488e-05 | 2.236234712216072e-05 | 4.49% | 4.70% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-all byte values]` | 2.3684990344133688e-05 | 2.251101096794346e-05 | 4.96% | 5.22% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-alternating 0x00/0xff]` | 2.3432310978497272e-05 | 2.2746032880972158e-05 | 2.93% | 3.02% | 1.03x | ✅ | -| `hexbytes_getitem_index[2-alternating 0xaa/0x55]` | 2.35244209265714e-05 | 2.2957627484000354e-05 | 2.41% | 2.47% | 1.02x | ✅ | -| `hexbytes_getitem_index[2-ascii sentence]` | 2.3471623288978318e-05 | 2.2339471145347112e-05 | 4.82% | 5.07% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-b'\\x00'*32]` | 2.3426903962094434e-05 | 2.2838012432582728e-05 | 2.51% | 2.58% | 1.03x | ✅ | -| `hexbytes_getitem_index[2-b'\\x00\\xff\\x00\\xff']` | 2.3630965912605683e-05 | 2.2796048077793713e-05 | 3.53% | 3.66% | 1.04x | ✅ | -| `hexbytes_getitem_index[2-b'\\x01'*100]` | 2.3486774889671138e-05 | 2.2881794591782572e-05 | 2.58% | 2.64% | 1.03x | ✅ | -| `hexbytes_getitem_index[2-b'\\x01'*2048]` | 2.349018185294118e-05 | 2.231556887736033e-05 | 5.00% | 5.26% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-b'\\x01\\x02\\x03']` | 2.3546886786176074e-05 | 2.2789122391445514e-05 | 3.22% | 3.33% | 1.03x | ✅ | -| `hexbytes_getitem_index[2-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3453746555788547e-05 | 2.3081406378672532e-05 | 1.59% | 1.61% | 1.02x | ✅ | -| `hexbytes_getitem_index[2-b'\\x7f'*8]` | 2.3551237743709792e-05 | 2.2876545241825237e-05 | 2.86% | 2.95% | 1.03x | ✅ | -| `hexbytes_getitem_index[2-b'\\x80'*8]` | 2.355690728506141e-05 | 2.292595541043976e-05 | 2.68% | 2.75% | 1.03x | ✅ | -| `hexbytes_getitem_index[2-b'\\xde\\xad\\xbe\\xef']` | 2.3693109690857947e-05 | 2.2729436032433892e-05 | 4.07% | 4.24% | 1.04x | ✅ | -| `hexbytes_getitem_index[2-b'\\xff'*64]` | 2.3581684721096462e-05 | 2.268501562623656e-05 | 3.80% | 3.95% | 1.04x | ✅ | -| `hexbytes_getitem_index[2-b'a'*1024]` | 2.354630700997268e-05 | 2.5023076004966393e-05 | -6.27% | -5.90% | 0.94x | ❌ | -| `hexbytes_getitem_index[2-b'abc']` | 2.363259064606739e-05 | 2.2647233586951612e-05 | 4.17% | 4.35% | 1.04x | ✅ | -| `hexbytes_getitem_index[2-long alternating]` | 2.4018256351607184e-05 | 2.2478733509993685e-05 | 6.41% | 6.85% | 1.07x | ✅ | -| `hexbytes_getitem_index[2-mixed pattern]` | 2.3367894370210983e-05 | 2.242336362987036e-05 | 4.04% | 4.21% | 1.04x | ✅ | -| `hexbytes_getitem_index[2-multiples of 0x10]` | 2.370163353917482e-05 | 2.248870449157068e-05 | 5.12% | 5.39% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-palindrome ascii]` | 2.356338894428661e-05 | 2.2411169004831644e-05 | 4.89% | 5.14% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-palindrome numeric]` | 2.3622544899928542e-05 | 2.2507028865913996e-05 | 4.72% | 4.96% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-palindrome]` | 2.3549986274773133e-05 | 2.299134990219192e-05 | 2.37% | 2.43% | 1.02x | ✅ | -| `hexbytes_getitem_index[2-repeated 0-9]` | 2.36673258879375e-05 | 2.403737492424099e-05 | -1.56% | -1.54% | 0.98x | ❌ | -| `hexbytes_getitem_index[2-two patterns]` | 2.358372096707211e-05 | 2.2376497521475763e-05 | 5.12% | 5.40% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-0-9]` | 2.3430375870849962e-05 | 2.270036136174573e-05 | 3.12% | 3.22% | 1.03x | ✅ | -| `hexbytes_getitem_index[3-4-byte pattern]` | 2.3620840986153767e-05 | 2.2422979718020706e-05 | 5.07% | 5.34% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-all byte values]` | 2.355055765212395e-05 | 2.25145249559774e-05 | 4.40% | 4.60% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-alternating 0x00/0xff]` | 2.362852452479877e-05 | 2.2429554069679868e-05 | 5.07% | 5.35% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-alternating 0xaa/0x55]` | 2.3530991978858058e-05 | 2.238972319643262e-05 | 4.85% | 5.10% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-ascii sentence]` | 2.3917420603717367e-05 | 2.2482941233883195e-05 | 6.00% | 6.38% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'\\x00'*32]` | 2.356554442652864e-05 | 2.2457070073763163e-05 | 4.70% | 4.94% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-b'\\x00\\xff\\x00\\xff']` | 2.3631208230445264e-05 | 2.236464059504878e-05 | 5.36% | 5.66% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'\\x01'*100]` | 2.347451428710235e-05 | 2.2288569622260236e-05 | 5.05% | 5.32% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-b'\\x01'*2048]` | 2.3565868591551286e-05 | 2.2178811569900696e-05 | 5.89% | 6.25% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3565444968442306e-05 | 2.2315580383712517e-05 | 5.30% | 5.60% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'\\x7f'*8]` | 2.3734809187180593e-05 | 2.2231962874165838e-05 | 6.33% | 6.76% | 1.07x | ✅ | -| `hexbytes_getitem_index[3-b'\\x80'*8]` | 2.3565977354026065e-05 | 2.2494905322609714e-05 | 4.54% | 4.76% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-b'\\xde\\xad\\xbe\\xef']` | 2.355828355543286e-05 | 2.231851023992083e-05 | 5.26% | 5.55% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'\\xff'*64]` | 2.3594167980873218e-05 | 2.2188483642410566e-05 | 5.96% | 6.34% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'a'*1024]` | 2.364989756239821e-05 | 2.2240367402684743e-05 | 5.96% | 6.34% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-long alternating]` | 2.3680457373084312e-05 | 2.2335676332577995e-05 | 5.68% | 6.02% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-mixed pattern]` | 2.3415303198687486e-05 | 2.277437797116532e-05 | 2.74% | 2.81% | 1.03x | ✅ | -| `hexbytes_getitem_index[3-multiples of 0x10]` | 2.3718855234694836e-05 | 2.2335508587262137e-05 | 5.83% | 6.19% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-palindrome ascii]` | 2.329332823872692e-05 | 2.2483146158038168e-05 | 3.48% | 3.60% | 1.04x | ✅ | -| `hexbytes_getitem_index[3-palindrome numeric]` | 2.33700070278026e-05 | 2.252354519533211e-05 | 3.62% | 3.76% | 1.04x | ✅ | -| `hexbytes_getitem_index[3-palindrome]` | 2.3533434010267676e-05 | 2.24989332451534e-05 | 4.40% | 4.60% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-repeated 0-9]` | 2.3492518813868187e-05 | 2.222076752684814e-05 | 5.41% | 5.72% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-two patterns]` | 2.353829621424519e-05 | 2.2505458937949237e-05 | 4.39% | 4.59% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-0-9]` | 2.3554913651354285e-05 | 2.26048513922894e-05 | 4.03% | 4.20% | 1.04x | ✅ | -| `hexbytes_getitem_index[4-4-byte pattern]` | 2.335079294816758e-05 | 2.2638758698831922e-05 | 3.05% | 3.15% | 1.03x | ✅ | -| `hexbytes_getitem_index[4-all byte values]` | 2.3351627466755163e-05 | 2.259879014009907e-05 | 3.22% | 3.33% | 1.03x | ✅ | -| `hexbytes_getitem_index[4-alternating 0x00/0xff]` | 2.312076762397251e-05 | 2.26680487317488e-05 | 1.96% | 2.00% | 1.02x | ✅ | -| `hexbytes_getitem_index[4-alternating 0xaa/0x55]` | 2.3521174496115945e-05 | 2.255973265274122e-05 | 4.09% | 4.26% | 1.04x | ✅ | -| `hexbytes_getitem_index[4-ascii sentence]` | 2.3609478554188136e-05 | 2.2545762072498146e-05 | 4.51% | 4.72% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-b'\\x00'*32]` | 2.3594566134940127e-05 | 2.252329739788702e-05 | 4.54% | 4.76% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-b'\\x01'*100]` | 2.3646371334716933e-05 | 2.2589177318483427e-05 | 4.47% | 4.68% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-b'\\x01'*2048]` | 2.3451327541899686e-05 | 2.2728069735570058e-05 | 3.08% | 3.18% | 1.03x | ✅ | -| `hexbytes_getitem_index[4-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3251194910120126e-05 | 2.2511030151668294e-05 | 3.18% | 3.29% | 1.03x | ✅ | -| `hexbytes_getitem_index[4-b'\\x7f'*8]` | 2.366308734676309e-05 | 2.248238170587158e-05 | 4.99% | 5.25% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-b'\\x80'*8]` | 2.3515283048479743e-05 | 2.2548431010881657e-05 | 4.11% | 4.29% | 1.04x | ✅ | -| `hexbytes_getitem_index[4-b'\\xff'*64]` | 2.350706751789445e-05 | 2.2500897715673247e-05 | 4.28% | 4.47% | 1.04x | ✅ | -| `hexbytes_getitem_index[4-b'a'*1024]` | 2.3611694880794047e-05 | 2.2476169469517998e-05 | 4.81% | 5.05% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-long alternating]` | 2.3379939075478136e-05 | 2.283467527057928e-05 | 2.33% | 2.39% | 1.02x | ✅ | -| `hexbytes_getitem_index[4-mixed pattern]` | 2.3542909088823123e-05 | 2.2733400459804156e-05 | 3.44% | 3.56% | 1.04x | ✅ | -| `hexbytes_getitem_index[4-multiples of 0x10]` | 2.342789732047792e-05 | 2.253868107127675e-05 | 3.80% | 3.95% | 1.04x | ✅ | -| `hexbytes_getitem_index[4-palindrome ascii]` | 2.336135906743707e-05 | 2.2605280771210126e-05 | 3.24% | 3.34% | 1.03x | ✅ | -| `hexbytes_getitem_index[4-palindrome numeric]` | 2.330131704055655e-05 | 2.257940443028166e-05 | 3.10% | 3.20% | 1.03x | ✅ | -| `hexbytes_getitem_index[4-palindrome]` | 2.3465003613257747e-05 | 2.238057445687541e-05 | 4.62% | 4.85% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-repeated 0-9]` | 2.346569591080782e-05 | 2.2596475068641457e-05 | 3.70% | 3.85% | 1.04x | ✅ | -| `hexbytes_getitem_index[4-two patterns]` | 2.349641343836371e-05 | 2.2730672425060844e-05 | 3.26% | 3.37% | 1.03x | ✅ | -| `hexbytes_getitem_index[5-0-9]` | 2.3364267710856882e-05 | 2.2603407850235376e-05 | 3.26% | 3.37% | 1.03x | ✅ | -| `hexbytes_getitem_index[5-4-byte pattern]` | 2.346512118943661e-05 | 2.251140409406931e-05 | 4.06% | 4.24% | 1.04x | ✅ | -| `hexbytes_getitem_index[5-all byte values]` | 2.3603728532851323e-05 | 2.2519851788424393e-05 | 4.59% | 4.81% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-alternating 0x00/0xff]` | 2.345741753769283e-05 | 2.2795482154973822e-05 | 2.82% | 2.90% | 1.03x | ✅ | -| `hexbytes_getitem_index[5-alternating 0xaa/0x55]` | 2.3407569389008447e-05 | 2.2645062425795362e-05 | 3.26% | 3.37% | 1.03x | ✅ | -| `hexbytes_getitem_index[5-ascii sentence]` | 2.3839902582688995e-05 | 2.26472965582778e-05 | 5.00% | 5.27% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-b'\\x00'*32]` | 2.3492632804350805e-05 | 2.2724036265715902e-05 | 3.27% | 3.38% | 1.03x | ✅ | -| `hexbytes_getitem_index[5-b'\\x01'*100]` | 2.33179453318083e-05 | 2.2441267748664556e-05 | 3.76% | 3.91% | 1.04x | ✅ | -| `hexbytes_getitem_index[5-b'\\x01'*2048]` | 2.3202639886426448e-05 | 2.243839201978072e-05 | 3.29% | 3.41% | 1.03x | ✅ | -| `hexbytes_getitem_index[5-b'\\x7f'*8]` | 2.3252895219247304e-05 | 2.2602382249210317e-05 | 2.80% | 2.88% | 1.03x | ✅ | -| `hexbytes_getitem_index[5-b'\\x80'*8]` | 2.349991255846107e-05 | 2.246588673950351e-05 | 4.40% | 4.60% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-b'\\xff'*64]` | 2.343924735740345e-05 | 2.2644443546508992e-05 | 3.39% | 3.51% | 1.04x | ✅ | -| `hexbytes_getitem_index[5-b'a'*1024]` | 2.3385405659539746e-05 | 2.2660125852459174e-05 | 3.10% | 3.20% | 1.03x | ✅ | -| `hexbytes_getitem_index[5-long alternating]` | 2.3302206241430013e-05 | 2.240403538545637e-05 | 3.85% | 4.01% | 1.04x | ✅ | -| `hexbytes_getitem_index[5-mixed pattern]` | 2.371721710232653e-05 | 2.2813514673213343e-05 | 3.81% | 3.96% | 1.04x | ✅ | -| `hexbytes_getitem_index[5-multiples of 0x10]` | 2.333347548205068e-05 | 2.243353429485387e-05 | 3.86% | 4.01% | 1.04x | ✅ | -| `hexbytes_getitem_index[5-palindrome ascii]` | 2.361156515169544e-05 | 2.2656427528344982e-05 | 4.05% | 4.22% | 1.04x | ✅ | -| `hexbytes_getitem_index[5-palindrome]` | 2.3434750740978887e-05 | 2.2784388845810203e-05 | 2.78% | 2.85% | 1.03x | ✅ | -| `hexbytes_getitem_index[5-repeated 0-9]` | 2.3810674316973303e-05 | 2.2685188581123482e-05 | 4.73% | 4.96% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-two patterns]` | 2.3753898905261842e-05 | 2.2734604602605102e-05 | 4.29% | 4.48% | 1.04x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-0-9]` | 8.239547519728395e-05 | 5.90532224219288e-05 | 28.33% | 39.53% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-4-byte pattern]` | 8.31382538625647e-05 | 5.912707244901216e-05 | 28.88% | 40.61% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-all byte values]` | 8.179312836312707e-05 | 5.9638827451381435e-05 | 27.09% | 37.15% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-alternating 0x00/0xff]` | 8.17457761844264e-05 | 5.9071600820835626e-05 | 27.74% | 38.38% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-alternating 0xaa/0x55]` | 8.226122703085443e-05 | 5.937393396531789e-05 | 27.82% | 38.55% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-ascii sentence]` | 8.173244012391578e-05 | 5.898515664699402e-05 | 27.83% | 38.56% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'']` | 7.966093196970282e-05 | 5.65451108707521e-05 | 29.02% | 40.88% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00'*32]` | 8.327405550440927e-05 | 5.925427766542303e-05 | 28.84% | 40.54% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00\\xff\\x00\\xff']` | 8.307391304389725e-05 | 5.9276505689278354e-05 | 28.65% | 40.15% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*100]` | 8.183371181443498e-05 | 6.0420226135196805e-05 | 26.17% | 35.44% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*2048]` | 8.18876388938008e-05 | 5.92397193469809e-05 | 27.66% | 38.23% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01\\x02\\x03']` | 8.296002548021697e-05 | 5.8521818466662145e-05 | 29.46% | 41.76% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.237300552798887e-05 | 6.126452555617149e-05 | 25.63% | 34.45% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x7f'*8]` | 8.218977146447253e-05 | 5.906266280412066e-05 | 28.14% | 39.16% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x80'*8]` | 8.193407961735777e-05 | 6.136319251006898e-05 | 25.11% | 33.52% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\xde\\xad\\xbe\\xef']` | 8.282953149578466e-05 | 5.9535937165880325e-05 | 28.12% | 39.13% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\xff'*64]` | 8.179822531118282e-05 | 5.94767473425328e-05 | 27.29% | 37.53% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'a'*1024]` | 8.266456093814456e-05 | 5.8851164241198844e-05 | 28.81% | 40.46% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'abc']` | 8.218929397422946e-05 | 5.9203338411529e-05 | 27.97% | 38.83% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-long alternating]` | 8.182808481071303e-05 | 6.0080230447893814e-05 | 26.58% | 36.20% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-mixed pattern]` | 8.258758197965857e-05 | 5.917021542534311e-05 | 28.35% | 39.58% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-multiples of 0x10]` | 8.28458307625059e-05 | 5.906045522547849e-05 | 28.71% | 40.27% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-palindrome ascii]` | 8.220755922489121e-05 | 5.883523222445814e-05 | 28.43% | 39.73% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-palindrome numeric]` | 8.259158303672126e-05 | 5.931083956872689e-05 | 28.19% | 39.25% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-palindrome]` | 8.237644053596613e-05 | 5.9293095318421846e-05 | 28.02% | 38.93% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-repeated 0-9]` | 8.16009079237372e-05 | 5.916415208969124e-05 | 27.50% | 37.92% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-single 0xff]` | 8.067697375616507e-05 | 5.684665522318842e-05 | 29.54% | 41.92% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-single null byte]` | 8.462229574861974e-05 | 5.660815172923224e-05 | 33.10% | 49.49% | 1.49x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-two patterns]` | 8.290189414078539e-05 | 5.920341793856281e-05 | 28.59% | 40.03% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-0-9]` | 8.298242649858757e-05 | 6.000937638111914e-05 | 27.68% | 38.28% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-4-byte pattern]` | 8.247529896704689e-05 | 6.119062183914305e-05 | 25.81% | 34.78% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-all byte values]` | 8.350732420600549e-05 | 5.955284175830317e-05 | 28.69% | 40.22% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-alternating 0x00/0xff]` | 8.333850875095573e-05 | 5.912131442278957e-05 | 29.06% | 40.96% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-alternating 0xaa/0x55]` | 8.234676038682317e-05 | 5.910356595308629e-05 | 28.23% | 39.33% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-ascii sentence]` | 8.307883587291249e-05 | 5.813773746906253e-05 | 30.02% | 42.90% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'']` | 8.123055266659609e-05 | 5.7629503994582105e-05 | 29.05% | 40.95% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x00'*32]` | 8.263547610201256e-05 | 6.045800094109474e-05 | 26.84% | 36.68% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x00\\xff\\x00\\xff']` | 8.25655098130783e-05 | 6.017779425450851e-05 | 27.12% | 37.20% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*100]` | 8.26187698171802e-05 | 6.020054059328963e-05 | 27.13% | 37.24% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*2048]` | 8.278103218983851e-05 | 6.04398838042679e-05 | 26.99% | 36.96% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x01\\x02\\x03']` | 8.405134248304805e-05 | 6.02796708112385e-05 | 28.28% | 39.44% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.284280206337824e-05 | 5.979094778700229e-05 | 27.83% | 38.55% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x7f'*8]` | 8.319103670849906e-05 | 5.858195845283615e-05 | 29.58% | 42.01% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x80'*8]` | 8.17137936963362e-05 | 5.93113500733328e-05 | 27.42% | 37.77% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\xde\\xad\\xbe\\xef']` | 8.277301219219535e-05 | 6.004675805997424e-05 | 27.46% | 37.85% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\xff'*64]` | 8.320116683857284e-05 | 5.984327037056195e-05 | 28.07% | 39.03% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'a'*1024]` | 8.18878211364074e-05 | 6.217911330122297e-05 | 24.07% | 31.70% | 1.32x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'abc']` | 8.281095064443846e-05 | 6.0192402036573374e-05 | 27.31% | 37.58% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-long alternating]` | 8.381420032478278e-05 | 5.946395805187513e-05 | 29.05% | 40.95% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-mixed pattern]` | 8.248342087714592e-05 | 5.9707209396144077e-05 | 27.61% | 38.15% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-multiples of 0x10]` | 8.355841034402889e-05 | 5.893316075349019e-05 | 29.47% | 41.79% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-palindrome ascii]` | 8.276707133785648e-05 | 5.9544785021158976e-05 | 28.06% | 39.00% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-palindrome numeric]` | 8.285243053104025e-05 | 5.9668069651508084e-05 | 27.98% | 38.86% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-palindrome]` | 8.301764070826367e-05 | 5.814280154353559e-05 | 29.96% | 42.78% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-repeated 0-9]` | 8.225960632052387e-05 | 5.976560019641434e-05 | 27.35% | 37.64% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-single 0xff]` | 8.065306956436836e-05 | 5.702750749767079e-05 | 29.29% | 41.43% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-single null byte]` | 8.174174405615476e-05 | 5.721812726035227e-05 | 30.00% | 42.86% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-two patterns]` | 8.305390861481176e-05 | 5.964005651801853e-05 | 28.19% | 39.26% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-0-9]` | 8.174923075589099e-05 | 5.9448927994105324e-05 | 27.28% | 37.51% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-4-byte pattern]` | 8.280835479388329e-05 | 6.0614934505532154e-05 | 26.80% | 36.61% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-all byte values]` | 8.344398149718006e-05 | 6.032710794274664e-05 | 27.70% | 38.32% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-alternating 0x00/0xff]` | 8.25158346384662e-05 | 6.055250795487926e-05 | 26.62% | 36.27% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-alternating 0xaa/0x55]` | 8.12588521350194e-05 | 5.9758139488024083e-05 | 26.46% | 35.98% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-ascii sentence]` | 8.260784413012386e-05 | 6.008810200248438e-05 | 27.26% | 37.48% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'']` | 8.098506785597772e-05 | 5.545958736322438e-05 | 31.52% | 46.03% | 1.46x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x00'*32]` | 8.193071316117574e-05 | 5.888507256408981e-05 | 28.13% | 39.14% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x00\\xff\\x00\\xff']` | 8.311334929186846e-05 | 5.9835646931806545e-05 | 28.01% | 38.90% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*100]` | 8.205579784498634e-05 | 5.987748855324366e-05 | 27.03% | 37.04% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*2048]` | 8.203713961971798e-05 | 6.026010922474311e-05 | 26.55% | 36.14% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x01\\x02\\x03']` | 8.288837421113221e-05 | 6.003732834892931e-05 | 27.57% | 38.06% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.231798486240242e-05 | 5.984453517859794e-05 | 27.30% | 37.55% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x7f'*8]` | 8.24125983622135e-05 | 5.932318067918946e-05 | 28.02% | 38.92% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x80'*8]` | 8.365516161234174e-05 | 6.0410782963976097e-05 | 27.79% | 38.48% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\xde\\xad\\xbe\\xef']` | 8.263932907436705e-05 | 6.010920148601243e-05 | 27.26% | 37.48% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\xff'*64]` | 8.248028278229188e-05 | 5.892205026851351e-05 | 28.56% | 39.98% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'a'*1024]` | 8.357190183800957e-05 | 5.9719811492344454e-05 | 28.54% | 39.94% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'abc']` | 8.297930227963689e-05 | 5.975476589153477e-05 | 27.99% | 38.87% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-long alternating]` | 8.26397992204131e-05 | 5.9539717275665526e-05 | 27.95% | 38.80% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-mixed pattern]` | 8.29433377575843e-05 | 5.993510137452247e-05 | 27.74% | 38.39% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-multiples of 0x10]` | 8.173155231230853e-05 | 6.000559955012746e-05 | 26.58% | 36.21% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-palindrome ascii]` | 8.283153078394579e-05 | 6.007454627094755e-05 | 27.47% | 37.88% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-palindrome numeric]` | 8.295015233678777e-05 | 6.022465030588019e-05 | 27.40% | 37.73% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-palindrome]` | 8.206819891950393e-05 | 5.901645580983919e-05 | 28.09% | 39.06% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-repeated 0-9]` | 8.252315873561781e-05 | 5.959502423157254e-05 | 27.78% | 38.47% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-single 0xff]` | 8.080989615934907e-05 | 5.718744284018923e-05 | 29.23% | 41.31% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-single null byte]` | 8.118914599161036e-05 | 5.6113621906876145e-05 | 30.89% | 44.69% | 1.45x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-two patterns]` | 8.248393805518121e-05 | 5.920724874280465e-05 | 28.22% | 39.31% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-0-9]` | 8.095065748360483e-05 | 5.8523557548510644e-05 | 27.70% | 38.32% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-4-byte pattern]` | 8.349401111879623e-05 | 6.0557242492283696e-05 | 27.47% | 37.88% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-all byte values]` | 8.345053677589646e-05 | 6.037762974303666e-05 | 27.65% | 38.21% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-alternating 0x00/0xff]` | 8.215472471433139e-05 | 6.009196716551899e-05 | 26.86% | 36.71% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-alternating 0xaa/0x55]` | 8.175392017296957e-05 | 6.116748847009885e-05 | 25.18% | 33.66% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-ascii sentence]` | 8.199942366261583e-05 | 5.9238233050665474e-05 | 27.76% | 38.42% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'']` | 7.954953983031259e-05 | 5.613129821281999e-05 | 29.44% | 41.72% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x00'*32]` | 8.308253447959504e-05 | 5.92931501179078e-05 | 28.63% | 40.12% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x00\\xff\\x00\\xff']` | 8.23926025101945e-05 | 5.84268600418004e-05 | 29.09% | 41.02% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*100]` | 8.298528218158586e-05 | 6.026394666131004e-05 | 27.38% | 37.70% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*2048]` | 0.00010304009788710362 | 7.570341538490459e-05 | 26.53% | 36.11% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x01\\x02\\x03']` | 8.052766902425011e-05 | 5.662869253858933e-05 | 29.68% | 42.20% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.23525095987187e-05 | 5.9414110697291446e-05 | 27.85% | 38.61% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x7f'*8]` | 8.27793972623703e-05 | 5.927659637082556e-05 | 28.39% | 39.65% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x80'*8]` | 8.19483723063477e-05 | 5.946164297010198e-05 | 27.44% | 37.82% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\xde\\xad\\xbe\\xef']` | 8.1632556425284e-05 | 5.824580406124662e-05 | 28.65% | 40.15% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\xff'*64]` | 8.276372156742444e-05 | 6.032035426422538e-05 | 27.12% | 37.21% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'a'*1024]` | 9.834160217477096e-05 | 7.397027760985454e-05 | 24.78% | 32.95% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'abc']` | 7.982323145595234e-05 | 5.6676325756516126e-05 | 29.00% | 40.84% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-long alternating]` | 9.687716526054861e-05 | 7.099679445611465e-05 | 26.71% | 36.45% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-mixed pattern]` | 8.285762971500448e-05 | 6.0295286939502525e-05 | 27.23% | 37.42% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-multiples of 0x10]` | 8.117816004377663e-05 | 5.959264522393517e-05 | 26.59% | 36.22% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-palindrome ascii]` | 8.190667319713085e-05 | 5.908717138917533e-05 | 27.86% | 38.62% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-palindrome numeric]` | 8.138528753418362e-05 | 5.928418441238993e-05 | 27.16% | 37.28% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-palindrome]` | 8.272877074569158e-05 | 5.992511067378011e-05 | 27.56% | 38.05% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-repeated 0-9]` | 8.345111281602345e-05 | 6.243401027480398e-05 | 25.18% | 33.66% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-single 0xff]` | 7.889125949280474e-05 | 5.724288859932371e-05 | 27.44% | 37.82% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-single null byte]` | 7.970610933667062e-05 | 5.6917836128288796e-05 | 28.59% | 40.04% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-two patterns]` | 8.252426743850057e-05 | 5.942270237400395e-05 | 27.99% | 38.88% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-0-9]` | 8.116609337748508e-05 | 5.9072041303092104e-05 | 27.22% | 37.40% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-4-byte pattern]` | 8.187409056971177e-05 | 5.908142060547217e-05 | 27.84% | 38.58% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-all byte values]` | 8.179005643571542e-05 | 5.9264081163237386e-05 | 27.54% | 38.01% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-alternating 0x00/0xff]` | 8.148759715776765e-05 | 5.7706524837351347e-05 | 29.18% | 41.21% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-alternating 0xaa/0x55]` | 8.173642601973305e-05 | 5.806425421287015e-05 | 28.96% | 40.77% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-ascii sentence]` | 8.064586993388102e-05 | 5.7529019006528506e-05 | 28.66% | 40.18% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'']` | 7.793951698894283e-05 | 5.4252270439840574e-05 | 30.39% | 43.66% | 1.44x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x00'*32]` | 8.149156274294871e-05 | 5.836211789180035e-05 | 28.38% | 39.63% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x00\\xff\\x00\\xff']` | 8.144283408335203e-05 | 5.7779345575873775e-05 | 29.06% | 40.95% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*100]` | 8.160395079798388e-05 | 5.8643439990400356e-05 | 28.14% | 39.15% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*2048]` | 0.00010335031473924028 | 7.75891633463726e-05 | 24.93% | 33.20% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x01\\x02\\x03']` | 8.05348176641359e-05 | 5.8416571229484895e-05 | 27.46% | 37.86% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.181176538197907e-05 | 5.773635372456435e-05 | 29.43% | 41.70% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x7f'*8]` | 8.082338531756488e-05 | 5.8364463344557816e-05 | 27.79% | 38.48% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x80'*8]` | 8.121129159770073e-05 | 5.8773803127767965e-05 | 27.63% | 38.18% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\xde\\xad\\xbe\\xef']` | 8.21432826221098e-05 | 5.846603290937959e-05 | 28.82% | 40.50% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\xff'*64]` | 8.187571193422384e-05 | 5.854124272152134e-05 | 28.50% | 39.86% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'a'*1024]` | 9.51203698940016e-05 | 6.990818483709208e-05 | 26.51% | 36.06% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'abc']` | 8.138405677038248e-05 | 5.815244304972694e-05 | 28.55% | 39.95% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-long alternating]` | 9.688943372891182e-05 | 7.345038840045973e-05 | 24.19% | 31.91% | 1.32x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-mixed pattern]` | 8.065816282372869e-05 | 5.841218370830715e-05 | 27.58% | 38.08% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-multiples of 0x10]` | 8.349101830134883e-05 | 5.690671629595291e-05 | 31.84% | 46.72% | 1.47x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-palindrome ascii]` | 8.106081958710867e-05 | 5.686912290797657e-05 | 29.84% | 42.54% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-palindrome numeric]` | 8.135026022734481e-05 | 5.867236105786196e-05 | 27.88% | 38.65% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-palindrome]` | 8.153439110549517e-05 | 5.815226980225593e-05 | 28.68% | 40.21% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-repeated 0-9]` | 8.192464833253357e-05 | 5.776810608801202e-05 | 29.49% | 41.82% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-single 0xff]` | 7.845286956137717e-05 | 5.4403978508173726e-05 | 30.65% | 44.20% | 1.44x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-single null byte]` | 7.952978713311026e-05 | 5.471162931874426e-05 | 31.21% | 45.36% | 1.45x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-two patterns]` | 8.070442543728961e-05 | 5.763776301022499e-05 | 28.58% | 40.02% | 1.40x | ✅ | -| `hexbytes_new['']` | 7.088780430673459e-05 | 3.717920214070973e-05 | 47.55% | 90.67% | 1.91x | ✅ | -| `hexbytes_new['0x'+'00'*64]` | 9.08381729076297e-05 | 4.949742961882397e-05 | 45.51% | 83.52% | 1.84x | ✅ | -| `hexbytes_new['0x'+'a'*128]` | 9.12901110470186e-05 | 4.9569092494821324e-05 | 45.70% | 84.17% | 1.84x | ✅ | -| `hexbytes_new['0x'+'ff'*32]` | 8.786087664833968e-05 | 4.745619865953935e-05 | 45.99% | 85.14% | 1.85x | ✅ | -| `hexbytes_new['0x']` | 7.734214501135582e-05 | 3.731379415860181e-05 | 51.75% | 107.27% | 2.07x | ✅ | -| `hexbytes_new['0x1234']` | 8.549765583795547e-05 | 4.616123251737869e-05 | 46.01% | 85.22% | 1.85x | ✅ | -| `hexbytes_new['0xCAFEBABE']` | 8.48734384069494e-05 | 4.373696492167761e-05 | 48.47% | 94.05% | 1.94x | ✅ | -| `hexbytes_new['0xabcdef']` | 8.624874060832549e-05 | 4.4981086822392796e-05 | 47.85% | 91.74% | 1.92x | ✅ | -| `hexbytes_new['0xdeadbeef']` | 8.511969825899141e-05 | 4.477347057946026e-05 | 47.40% | 90.11% | 1.90x | ✅ | -| `hexbytes_new['abc']` | 8.205357686966255e-05 | 4.712751713018254e-05 | 42.56% | 74.11% | 1.74x | ✅ | -| `hexbytes_new['deadbeef']` | 7.594046936834116e-05 | 4.167178089675495e-05 | 45.13% | 82.23% | 1.82x | ✅ | -| `hexbytes_new[0-9]` | 4.32391866707604e-05 | 2.6096130303851546e-05 | 39.65% | 65.69% | 1.66x | ✅ | -| `hexbytes_new[0]` | 0.00012147360000039824 | 5.898221385802156e-05 | 51.44% | 105.95% | 2.06x | ✅ | -| `hexbytes_new[123456]` | 0.00012783664552421076 | 6.42451952541813e-05 | 49.74% | 98.98% | 1.99x | ✅ | -| `hexbytes_new[2**16]` | 0.00012899164078214196 | 6.477412555400336e-05 | 49.78% | 99.14% | 1.99x | ✅ | -| `hexbytes_new[2**256-1]` | 0.00013327829887405758 | 7.14616676658199e-05 | 46.38% | 86.50% | 1.87x | ✅ | -| `hexbytes_new[2**32]` | 0.00012888422407988012 | 6.858295083146188e-05 | 46.79% | 87.92% | 1.88x | ✅ | -| `hexbytes_new[2**64]` | 0.0001307164182086684 | 7.068757599158942e-05 | 45.92% | 84.92% | 1.85x | ✅ | -| `hexbytes_new[2**8]` | 0.00012489451176449847 | 6.427741215711869e-05 | 48.53% | 94.31% | 1.94x | ✅ | -| `hexbytes_new[4-byte pattern]` | 4.324804341271748e-05 | 2.7337381673853546e-05 | 36.79% | 58.20% | 1.58x | ✅ | -| `hexbytes_new[False]` | 5.7542648767867024e-05 | 2.7378319494961528e-05 | 52.42% | 110.18% | 2.10x | ✅ | -| `hexbytes_new[True]` | 6.0374948887364585e-05 | 2.73211104636465e-05 | 54.75% | 120.98% | 2.21x | ✅ | -| `hexbytes_new[all byte values]` | 4.3536650777960076e-05 | 2.6893745841350606e-05 | 38.23% | 61.88% | 1.62x | ✅ | -| `hexbytes_new[alternating 0x00/0xff]` | 4.29779954711265e-05 | 2.6672594696847277e-05 | 37.94% | 61.13% | 1.61x | ✅ | -| `hexbytes_new[alternating 0xaa/0x55]` | 4.2538916479430376e-05 | 2.690549654860995e-05 | 36.75% | 58.10% | 1.58x | ✅ | -| `hexbytes_new[ascii sentence]` | 4.2890489870423805e-05 | 2.6523646326315215e-05 | 38.16% | 61.71% | 1.62x | ✅ | -| `hexbytes_new[b'']` | 4.2139885089912986e-05 | 2.6485647371229392e-05 | 37.15% | 59.10% | 1.59x | ✅ | -| `hexbytes_new[b'\\x00'*32]` | 4.281992702351694e-05 | 2.6157054395036364e-05 | 38.91% | 63.70% | 1.64x | ✅ | -| `hexbytes_new[b'\\x00\\xff\\x00\\xff']` | 4.209713031739145e-05 | 2.6064592012718416e-05 | 38.08% | 61.51% | 1.62x | ✅ | -| `hexbytes_new[b'\\x01'*100]` | 4.260165115759504e-05 | 2.6371385785080617e-05 | 38.10% | 61.54% | 1.62x | ✅ | -| `hexbytes_new[b'\\x01'*2048]` | 5.589062480301016e-05 | 3.815512184711202e-05 | 31.73% | 46.48% | 1.46x | ✅ | -| `hexbytes_new[b'\\x01\\x02\\x03']` | 4.403057460825653e-05 | 2.6251221710913063e-05 | 40.38% | 67.73% | 1.68x | ✅ | -| `hexbytes_new[b'\\x10\\x20\\x30\\x40\\x50']` | 4.294391501444021e-05 | 2.625855093568112e-05 | 38.85% | 63.54% | 1.64x | ✅ | -| `hexbytes_new[b'\\x7f'*8]` | 4.237802283683679e-05 | 2.6113483699459242e-05 | 38.38% | 62.28% | 1.62x | ✅ | -| `hexbytes_new[b'\\x80'*8]` | 4.2992865260140275e-05 | 2.6178278960295655e-05 | 39.11% | 64.23% | 1.64x | ✅ | -| `hexbytes_new[b'\\xde\\xad\\xbe\\xef']` | 4.253622636523762e-05 | 2.6142689077856537e-05 | 38.54% | 62.71% | 1.63x | ✅ | -| `hexbytes_new[b'\\xff'*64]` | 4.280101714362397e-05 | 2.670987500743659e-05 | 37.60% | 60.24% | 1.60x | ✅ | -| `hexbytes_new[b'a'*1024]` | 5.039340191686589e-05 | 3.35407930403703e-05 | 33.44% | 50.25% | 1.50x | ✅ | -| `hexbytes_new[b'abc']` | 4.351984744187119e-05 | 2.6314898261348562e-05 | 39.53% | 65.38% | 1.65x | ✅ | -| `hexbytes_new[bytearray(0-9)]` | 6.924882572883054e-05 | 3.7070337109455526e-05 | 46.47% | 86.80% | 1.87x | ✅ | -| `hexbytes_new[bytearray(4-byte pattern)]` | 6.865879840472956e-05 | 3.795186682125277e-05 | 44.72% | 80.91% | 1.81x | ✅ | -| `hexbytes_new[bytearray(all byte values)]` | 6.92051621680794e-05 | 3.906494559943062e-05 | 43.55% | 77.15% | 1.77x | ✅ | -| `hexbytes_new[bytearray(alternating 0x00/0xff)]` | 6.895108774092821e-05 | 3.760643231876285e-05 | 45.46% | 83.35% | 1.83x | ✅ | -| `hexbytes_new[bytearray(alternating 0xaa/0x55)]` | 6.934933758033202e-05 | 3.8043765234650245e-05 | 45.14% | 82.29% | 1.82x | ✅ | -| `hexbytes_new[bytearray(ascii sentence)]` | 7.154259188304492e-05 | 3.7347336419638925e-05 | 47.80% | 91.56% | 1.92x | ✅ | -| `hexbytes_new[bytearray(b'')]` | 6.691779239544e-05 | 3.5881522981760556e-05 | 46.38% | 86.50% | 1.86x | ✅ | -| `hexbytes_new[bytearray(b'\\x00'*32)]` | 6.916644721487588e-05 | 3.707497534790335e-05 | 46.40% | 86.56% | 1.87x | ✅ | -| `hexbytes_new[bytearray(b'\\x00\\xff\\x00\\xff')]` | 7.023605069949667e-05 | 3.7606917412093584e-05 | 46.46% | 86.76% | 1.87x | ✅ | -| `hexbytes_new[bytearray(b'\\x01'*100)]` | 6.944845212427651e-05 | 3.7462212275079345e-05 | 46.06% | 85.38% | 1.85x | ✅ | -| `hexbytes_new[bytearray(b'\\x01'*2048)]` | 8.784037479361675e-05 | 5.4127738491531136e-05 | 38.38% | 62.28% | 1.62x | ✅ | -| `hexbytes_new[bytearray(b'\\x01\\x02\\x03')]` | 6.942490371884399e-05 | 3.786419300321061e-05 | 45.46% | 83.35% | 1.83x | ✅ | -| `hexbytes_new[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 7.144417930880813e-05 | 3.760398169637676e-05 | 47.37% | 89.99% | 1.90x | ✅ | -| `hexbytes_new[bytearray(b'\\x7f'*8)]` | 6.883889537013713e-05 | 3.690421343343348e-05 | 46.39% | 86.53% | 1.87x | ✅ | -| `hexbytes_new[bytearray(b'\\x80'*8)]` | 6.921766822811658e-05 | 3.69785762602498e-05 | 46.58% | 87.18% | 1.87x | ✅ | -| `hexbytes_new[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 6.941374860156565e-05 | 3.765025574406209e-05 | 45.76% | 84.36% | 1.84x | ✅ | -| `hexbytes_new[bytearray(b'\\xff'*64)]` | 6.987261833150233e-05 | 3.836987056775855e-05 | 45.09% | 82.10% | 1.82x | ✅ | -| `hexbytes_new[bytearray(b'a'*1024)]` | 8.436291548393331e-05 | 4.996119468824985e-05 | 40.78% | 68.86% | 1.69x | ✅ | -| `hexbytes_new[bytearray(b'abc')]` | 6.84475526276227e-05 | 3.759934389772617e-05 | 45.07% | 82.04% | 1.82x | ✅ | -| `hexbytes_new[bytearray(long alternating)]` | 8.451646979711346e-05 | 5.0827760892027275e-05 | 39.86% | 66.28% | 1.66x | ✅ | -| `hexbytes_new[bytearray(mixed pattern)]` | 7.02805573041443e-05 | 3.7690422689619085e-05 | 46.37% | 86.47% | 1.86x | ✅ | -| `hexbytes_new[bytearray(multiples of 0x10)]` | 6.964449036962057e-05 | 3.707497999939228e-05 | 46.77% | 87.85% | 1.88x | ✅ | -| `hexbytes_new[bytearray(palindrome ascii)]` | 6.974647361849695e-05 | 3.767885807057385e-05 | 45.98% | 85.11% | 1.85x | ✅ | -| `hexbytes_new[bytearray(palindrome numeric)]` | 6.97261549175874e-05 | 3.771203849116904e-05 | 45.91% | 84.89% | 1.85x | ✅ | -| `hexbytes_new[bytearray(palindrome)]` | 7.000643452950382e-05 | 3.7555088683760594e-05 | 46.35% | 86.41% | 1.86x | ✅ | -| `hexbytes_new[bytearray(repeated 0-9)]` | 6.986597381971087e-05 | 3.7480902225980816e-05 | 46.35% | 86.40% | 1.86x | ✅ | -| `hexbytes_new[bytearray(single 0xff)]` | 6.875539139841834e-05 | 3.782587262936416e-05 | 44.98% | 81.77% | 1.82x | ✅ | -| `hexbytes_new[bytearray(single null byte)]` | 6.986082850435396e-05 | 3.7667651966421094e-05 | 46.08% | 85.47% | 1.85x | ✅ | -| `hexbytes_new[bytearray(two patterns)]` | 6.930302979786374e-05 | 3.781380607530014e-05 | 45.44% | 83.27% | 1.83x | ✅ | -| `hexbytes_new[long alternating]` | 5.104927847461075e-05 | 3.3206472204869993e-05 | 34.95% | 53.73% | 1.54x | ✅ | -| `hexbytes_new[memoryview(0-9)]` | 8.33941205709884e-05 | 4.321597931252133e-05 | 48.18% | 92.97% | 1.93x | ✅ | -| `hexbytes_new[memoryview(4-byte pattern)]` | 8.343239782615673e-05 | 4.31307461574922e-05 | 48.30% | 93.44% | 1.93x | ✅ | -| `hexbytes_new[memoryview(all byte values)]` | 8.310504517979076e-05 | 4.331295322967082e-05 | 47.88% | 91.87% | 1.92x | ✅ | -| `hexbytes_new[memoryview(alternating 0x00/0xff)]` | 8.43578950971803e-05 | 4.355653393895579e-05 | 48.37% | 93.67% | 1.94x | ✅ | -| `hexbytes_new[memoryview(alternating 0xaa/0x55)]` | 8.350482009135351e-05 | 4.328347990039836e-05 | 48.17% | 92.93% | 1.93x | ✅ | -| `hexbytes_new[memoryview(ascii sentence)]` | 8.418245133308389e-05 | 4.3104843170141914e-05 | 48.80% | 95.30% | 1.95x | ✅ | -| `hexbytes_new[memoryview(b'')]` | 8.16670020370079e-05 | 3.949402578395808e-05 | 51.64% | 106.78% | 2.07x | ✅ | -| `hexbytes_new[memoryview(b'\\x00'*32)]` | 8.414462480244782e-05 | 4.2801493239288055e-05 | 49.13% | 96.59% | 1.97x | ✅ | -| `hexbytes_new[memoryview(b'\\x00\\xff\\x00\\xff')]` | 8.400868981741798e-05 | 4.321310426895086e-05 | 48.56% | 94.41% | 1.94x | ✅ | -| `hexbytes_new[memoryview(b'\\x01'*100)]` | 8.455552116281636e-05 | 4.3503569808495486e-05 | 48.55% | 94.36% | 1.94x | ✅ | -| `hexbytes_new[memoryview(b'\\x01'*2048)]` | 0.00010305093069751761 | 6.072867177761178e-05 | 41.07% | 69.69% | 1.70x | ✅ | -| `hexbytes_new[memoryview(b'\\x01\\x02\\x03')]` | 8.298567379370851e-05 | 4.27369373533555e-05 | 48.50% | 94.18% | 1.94x | ✅ | -| `hexbytes_new[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 8.42089942852863e-05 | 4.266893871163908e-05 | 49.33% | 97.35% | 1.97x | ✅ | -| `hexbytes_new[memoryview(b'\\x7f'*8)]` | 8.337231982226526e-05 | 4.338129289391536e-05 | 47.97% | 92.18% | 1.92x | ✅ | -| `hexbytes_new[memoryview(b'\\x80'*8)]` | 8.254668955252301e-05 | 4.339669686790877e-05 | 47.43% | 90.21% | 1.90x | ✅ | -| `hexbytes_new[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 8.40657775951673e-05 | 4.234327471562352e-05 | 49.63% | 98.53% | 1.99x | ✅ | -| `hexbytes_new[memoryview(b'\\xff'*64)]` | 8.356457063648914e-05 | 4.298029667119506e-05 | 48.57% | 94.43% | 1.94x | ✅ | -| `hexbytes_new[memoryview(b'a'*1024)]` | 9.845937433355294e-05 | 5.583482876694573e-05 | 43.29% | 76.34% | 1.76x | ✅ | -| `hexbytes_new[memoryview(b'abc')]` | 8.489607222820646e-05 | 4.233409720680936e-05 | 50.13% | 100.54% | 2.01x | ✅ | -| `hexbytes_new[memoryview(long alternating)]` | 9.98828766999488e-05 | 5.696237217307924e-05 | 42.97% | 75.35% | 1.75x | ✅ | -| `hexbytes_new[memoryview(mixed pattern)]` | 8.574233386021318e-05 | 4.353720003788475e-05 | 49.22% | 96.94% | 1.97x | ✅ | -| `hexbytes_new[memoryview(multiples of 0x10)]` | 8.316728905768576e-05 | 4.391765795180261e-05 | 47.19% | 89.37% | 1.89x | ✅ | -| `hexbytes_new[memoryview(palindrome ascii)]` | 8.33069546903585e-05 | 4.322721919697296e-05 | 48.11% | 92.72% | 1.93x | ✅ | -| `hexbytes_new[memoryview(palindrome numeric)]` | 8.323798546719053e-05 | 4.2778722479093196e-05 | 48.61% | 94.58% | 1.95x | ✅ | -| `hexbytes_new[memoryview(palindrome)]` | 8.4058672212827e-05 | 4.330158541235663e-05 | 48.49% | 94.12% | 1.94x | ✅ | -| `hexbytes_new[memoryview(repeated 0-9)]` | 8.334889789452623e-05 | 4.341889715371332e-05 | 47.91% | 91.96% | 1.92x | ✅ | -| `hexbytes_new[memoryview(single 0xff)]` | 8.410545725262877e-05 | 4.328793812060419e-05 | 48.53% | 94.29% | 1.94x | ✅ | -| `hexbytes_new[memoryview(single null byte)]` | 8.393237762226811e-05 | 4.333610276475428e-05 | 48.37% | 93.68% | 1.94x | ✅ | -| `hexbytes_new[memoryview(two patterns)]` | 8.375040244224084e-05 | 4.316580460201397e-05 | 48.46% | 94.02% | 1.94x | ✅ | -| `hexbytes_new[mixed pattern]` | 4.246868627429666e-05 | 2.6744996656935956e-05 | 37.02% | 58.79% | 1.59x | ✅ | -| `hexbytes_new[multiples of 0x10]` | 4.263028767945216e-05 | 2.6057066824448672e-05 | 38.88% | 63.60% | 1.64x | ✅ | -| `hexbytes_new[palindrome ascii]` | 4.322988907955655e-05 | 2.615558227624918e-05 | 39.50% | 65.28% | 1.65x | ✅ | -| `hexbytes_new[palindrome numeric]` | 4.318747024304831e-05 | 2.635158396246492e-05 | 38.98% | 63.89% | 1.64x | ✅ | -| `hexbytes_new[palindrome]` | 4.252804330517492e-05 | 2.636744998543955e-05 | 38.00% | 61.29% | 1.61x | ✅ | -| `hexbytes_new[repeated 0-9]` | 4.325075794734043e-05 | 2.743377294276552e-05 | 36.57% | 57.66% | 1.58x | ✅ | -| `hexbytes_new[single 0xff]` | 4.2650558087442775e-05 | 2.6142427678991554e-05 | 38.71% | 63.15% | 1.63x | ✅ | -| `hexbytes_new[single null byte]` | 4.2438786493578065e-05 | 2.62305329783184e-05 | 38.19% | 61.79% | 1.62x | ✅ | -| `hexbytes_new[two patterns]` | 4.300542495352237e-05 | 2.6760515339838644e-05 | 37.77% | 60.70% | 1.61x | ✅ | -| `hexbytes_repr[0-9]` | 2.872566614971813e-05 | 1.4659679789470288e-05 | 48.97% | 95.95% | 1.96x | ✅ | -| `hexbytes_repr[4-byte pattern]` | 0.00012097528343540317 | 4.082255469656911e-05 | 66.26% | 196.34% | 2.96x | ✅ | -| `hexbytes_repr[all byte values]` | 0.00012101296949902636 | 4.0889047937087264e-05 | 66.21% | 195.95% | 2.96x | ✅ | -| `hexbytes_repr[alternating 0x00/0xff]` | 4.846516875197556e-05 | 1.9757204925663502e-05 | 59.23% | 145.30% | 2.45x | ✅ | -| `hexbytes_repr[alternating 0xaa/0x55]` | 4.9198864239180924e-05 | 1.9822463312483787e-05 | 59.71% | 148.20% | 2.48x | ✅ | -| `hexbytes_repr[ascii sentence]` | 4.1706455553671124e-05 | 1.7753739168724917e-05 | 57.43% | 134.92% | 2.35x | ✅ | -| `hexbytes_repr[b'']` | 2.1281227843736355e-05 | 1.213839677469357e-05 | 42.96% | 75.32% | 1.75x | ✅ | -| `hexbytes_repr[b'\\x00'*32]` | 3.6651239026327626e-05 | 1.7438500028313234e-05 | 52.42% | 110.17% | 2.10x | ✅ | -| `hexbytes_repr[b'\\x00\\xff\\x00\\xff']` | 2.5927559436728758e-05 | 1.3896156063278452e-05 | 46.40% | 86.58% | 1.87x | ✅ | -| `hexbytes_repr[b'\\x01'*100]` | 6.166356011023328e-05 | 2.357859525097921e-05 | 61.76% | 161.52% | 2.62x | ✅ | -| `hexbytes_repr[b'\\x01'*2048]` | 0.0007587736933019505 | 0.00022222049450458444 | 70.71% | 241.45% | 3.41x | ✅ | -| `hexbytes_repr[b'\\x01\\x02\\x03']` | 2.5846472886860315e-05 | 1.4515828231319974e-05 | 43.84% | 78.06% | 1.78x | ✅ | -| `hexbytes_repr[b'\\x10\\x20\\x30\\x40\\x50']` | 2.6720775118343867e-05 | 1.3999502854561541e-05 | 47.61% | 90.87% | 1.91x | ✅ | -| `hexbytes_repr[b'\\x7f'*8]` | 2.831661231077688e-05 | 1.4514621769713463e-05 | 48.74% | 95.09% | 1.95x | ✅ | -| `hexbytes_repr[b'\\x80'*8]` | 2.7975403289546915e-05 | 1.4348914150039018e-05 | 48.71% | 94.97% | 1.95x | ✅ | -| `hexbytes_repr[b'\\xde\\xad\\xbe\\xef']` | 2.6114682665134736e-05 | 1.3892002697369287e-05 | 46.80% | 87.98% | 1.88x | ✅ | -| `hexbytes_repr[b'\\xff'*64]` | 4.862962974479862e-05 | 1.9963515407331704e-05 | 58.95% | 143.59% | 2.44x | ✅ | -| `hexbytes_repr[b'a'*1024]` | 0.00039427348447300685 | 0.00011876243514485907 | 69.88% | 231.99% | 3.32x | ✅ | -| `hexbytes_repr[b'abc']` | 2.6418753813827575e-05 | 1.4174768592177355e-05 | 46.35% | 86.38% | 1.86x | ✅ | -| `hexbytes_repr[long alternating]` | 0.0003978778695282324 | 0.00012251765528731624 | 69.21% | 224.75% | 3.25x | ✅ | -| `hexbytes_repr[mixed pattern]` | 9.768270914428448e-05 | 3.374569708172995e-05 | 65.45% | 189.47% | 2.89x | ✅ | -| `hexbytes_repr[multiples of 0x10]` | 2.8627092914797454e-05 | 1.4387501168695416e-05 | 49.74% | 98.97% | 1.99x | ✅ | -| `hexbytes_repr[palindrome ascii]` | 2.7361824310599784e-05 | 1.396790171981723e-05 | 48.95% | 95.89% | 1.96x | ✅ | -| `hexbytes_repr[palindrome numeric]` | 2.7323370495303222e-05 | 1.382805633311044e-05 | 49.39% | 97.59% | 1.98x | ✅ | -| `hexbytes_repr[palindrome]` | 3.176526098555952e-05 | 1.5648278370411235e-05 | 50.74% | 103.00% | 2.03x | ✅ | -| `hexbytes_repr[repeated 0-9]` | 6.202595140925878e-05 | 2.3644797130939777e-05 | 61.88% | 162.32% | 2.62x | ✅ | -| `hexbytes_repr[single 0xff]` | 2.535232299440646e-05 | 1.3744784468252905e-05 | 45.78% | 84.45% | 1.84x | ✅ | -| `hexbytes_repr[single null byte]` | 2.5296525236002765e-05 | 1.3483402455111459e-05 | 46.70% | 87.61% | 1.88x | ✅ | -| `hexbytes_repr[two patterns]` | 4.862438137261551e-05 | 1.9606656606642472e-05 | 59.68% | 148.00% | 2.48x | ✅ | -| `hexbytes_to_0x_hex[0-9]` | 1.544235148859773e-05 | 1.370188903873984e-05 | 11.27% | 12.70% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[4-byte pattern]` | 4.227200566071145e-05 | 4.021364210912594e-05 | 4.87% | 5.12% | 1.05x | ✅ | -| `hexbytes_to_0x_hex[all byte values]` | 4.5166155549740956e-05 | 4.040208903397559e-05 | 10.55% | 11.79% | 1.12x | ✅ | -| `hexbytes_to_0x_hex[alternating 0x00/0xff]` | 2.0509157433635433e-05 | 1.8923473901335137e-05 | 7.73% | 8.38% | 1.08x | ✅ | -| `hexbytes_to_0x_hex[alternating 0xaa/0x55]` | 2.102063999835031e-05 | 2.0622411130859385e-05 | 1.89% | 1.93% | 1.02x | ✅ | -| `hexbytes_to_0x_hex[ascii sentence]` | 1.8845274486480745e-05 | 1.7181749328408585e-05 | 8.83% | 9.68% | 1.10x | ✅ | -| `hexbytes_to_0x_hex[b'']` | 1.0080841905437211e-05 | 1.1658829265170503e-05 | -15.65% | -13.53% | 0.86x | ❌ | -| `hexbytes_to_0x_hex[b'\\x00'*32]` | 1.7496683259838742e-05 | 1.5927736174849307e-05 | 8.97% | 9.85% | 1.10x | ✅ | -| `hexbytes_to_0x_hex[b'\\x00\\xff\\x00\\xff']` | 1.4860350955516212e-05 | 1.2858530678920156e-05 | 13.47% | 15.57% | 1.16x | ✅ | -| `hexbytes_to_0x_hex[b'\\x01'*100]` | 2.520908307069086e-05 | 2.2864916435974894e-05 | 9.30% | 10.25% | 1.10x | ✅ | -| `hexbytes_to_0x_hex[b'\\x01'*2048]` | 0.0002228400227782363 | 0.00022152006307133462 | 0.59% | 0.60% | 1.01x | ✅ | -| `hexbytes_to_0x_hex[b'\\x01\\x02\\x03']` | 1.4688160305671577e-05 | 1.288246039598296e-05 | 12.29% | 14.02% | 1.14x | ✅ | -| `hexbytes_to_0x_hex[b'\\x10\\x20\\x30\\x40\\x50']` | 1.4890606877385047e-05 | 1.3086290605888474e-05 | 12.12% | 13.79% | 1.14x | ✅ | -| `hexbytes_to_0x_hex[b'\\x7f'*8]` | 1.5113177441256469e-05 | 1.3347142990239388e-05 | 11.69% | 13.23% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[b'\\x80'*8]` | 1.5131895012593648e-05 | 1.3492781570164521e-05 | 10.83% | 12.15% | 1.12x | ✅ | -| `hexbytes_to_0x_hex[b'\\xde\\xad\\xbe\\xef']` | 1.4741810922637845e-05 | 1.2888813418039586e-05 | 12.57% | 14.38% | 1.14x | ✅ | -| `hexbytes_to_0x_hex[b'\\xff'*64]` | 2.0538054271904383e-05 | 1.8887889941155288e-05 | 8.03% | 8.74% | 1.09x | ✅ | -| `hexbytes_to_0x_hex[b'a'*1024]` | 0.0001220273422405629 | 0.00012161504481905901 | 0.34% | 0.34% | 1.00x | ✅ | -| `hexbytes_to_0x_hex[b'abc']` | 1.4639706233970429e-05 | 1.3062715840253686e-05 | 10.77% | 12.07% | 1.12x | ✅ | -| `hexbytes_to_0x_hex[long alternating]` | 0.00012319042279556865 | 0.0001219906679716342 | 0.97% | 0.98% | 1.01x | ✅ | -| `hexbytes_to_0x_hex[mixed pattern]` | 3.4888799019459485e-05 | 3.2991316415402576e-05 | 5.44% | 5.75% | 1.06x | ✅ | -| `hexbytes_to_0x_hex[multiples of 0x10]` | 1.546567489556199e-05 | 1.3562740353368524e-05 | 12.30% | 14.03% | 1.14x | ✅ | -| `hexbytes_to_0x_hex[palindrome ascii]` | 1.5107767294871079e-05 | 1.3147390484659501e-05 | 12.98% | 14.91% | 1.15x | ✅ | -| `hexbytes_to_0x_hex[palindrome numeric]` | 1.4965851897216486e-05 | 1.2984114821758704e-05 | 13.24% | 15.26% | 1.15x | ✅ | -| `hexbytes_to_0x_hex[palindrome]` | 1.6300964550414532e-05 | 1.4800251494944235e-05 | 9.21% | 10.14% | 1.10x | ✅ | -| `hexbytes_to_0x_hex[repeated 0-9]` | 2.525250061269466e-05 | 2.268122398134421e-05 | 10.18% | 11.34% | 1.11x | ✅ | -| `hexbytes_to_0x_hex[single 0xff]` | 1.4594484070274873e-05 | 1.2883561770703406e-05 | 11.72% | 13.28% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[single null byte]` | 1.4602243716654297e-05 | 1.2583425810091396e-05 | 13.83% | 16.04% | 1.16x | ✅ | -| `hexbytes_to_0x_hex[two patterns]` | 2.0620916711129938e-05 | 1.8774365193650575e-05 | 8.95% | 9.84% | 1.10x | ✅ | +| `hexbytes_getitem_index[-1-0-9]` | 2.5436390744287646e-05 | 2.3298060767530137e-05 | 8.41% | 9.18% | 1.09x | ✅ | +| `hexbytes_getitem_index[-1-4-byte pattern]` | 2.5400365607685962e-05 | 2.3467228214521195e-05 | 7.61% | 8.24% | 1.08x | ✅ | +| `hexbytes_getitem_index[-1-all byte values]` | 2.5549229725974316e-05 | 2.3351058154944697e-05 | 8.60% | 9.41% | 1.09x | ✅ | +| `hexbytes_getitem_index[-1-alternating 0x00/0xff]` | 2.5437739259076793e-05 | 2.3540827085013496e-05 | 7.46% | 8.06% | 1.08x | ✅ | +| `hexbytes_getitem_index[-1-alternating 0xaa/0x55]` | 2.5674348737415375e-05 | 2.3742790301913945e-05 | 7.52% | 8.14% | 1.08x | ✅ | +| `hexbytes_getitem_index[-1-ascii sentence]` | 2.5491474823110162e-05 | 2.3257605856557487e-05 | 8.76% | 9.60% | 1.10x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x00'*32]` | 2.5738816411933375e-05 | 2.3530708777910685e-05 | 8.58% | 9.38% | 1.09x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x00\\xff\\x00\\xff']` | 2.5305566474965747e-05 | 2.3459397476595695e-05 | 7.30% | 7.87% | 1.08x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x01'*100]` | 2.5547081778212753e-05 | 2.3473099516836466e-05 | 8.12% | 8.84% | 1.09x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x01'*2048]` | 2.5586915570337544e-05 | 2.3400606215587494e-05 | 8.54% | 9.34% | 1.09x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x01\\x02\\x03']` | 2.5719230727753942e-05 | 2.3538405277197263e-05 | 8.48% | 9.26% | 1.09x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.5496031708198466e-05 | 2.3530038047080494e-05 | 7.71% | 8.36% | 1.08x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x7f'*8]` | 2.556397405178346e-05 | 2.3463523428732082e-05 | 8.22% | 8.95% | 1.09x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x80'*8]` | 2.5269436344364915e-05 | 2.3532571587538634e-05 | 6.87% | 7.38% | 1.07x | ✅ | +| `hexbytes_getitem_index[-1-b'\\xde\\xad\\xbe\\xef']` | 2.505795359803719e-05 | 2.351865758316885e-05 | 6.14% | 6.54% | 1.07x | ✅ | +| `hexbytes_getitem_index[-1-b'\\xff'*64]` | 2.5378498443784416e-05 | 2.3570616333601e-05 | 7.12% | 7.67% | 1.08x | ✅ | +| `hexbytes_getitem_index[-1-b'a'*1024]` | 2.536796217605163e-05 | 2.3583271365780484e-05 | 7.04% | 7.57% | 1.08x | ✅ | +| `hexbytes_getitem_index[-1-b'abc']` | 2.558087570716293e-05 | 2.3413728788139762e-05 | 8.47% | 9.26% | 1.09x | ✅ | +| `hexbytes_getitem_index[-1-long alternating]` | 2.5490106687330945e-05 | 2.3395409145218406e-05 | 8.22% | 8.95% | 1.09x | ✅ | +| `hexbytes_getitem_index[-1-mixed pattern]` | 2.560799864426915e-05 | 2.351785908715696e-05 | 8.16% | 8.89% | 1.09x | ✅ | +| `hexbytes_getitem_index[-1-multiples of 0x10]` | 2.573611102501675e-05 | 2.3222284491434522e-05 | 9.77% | 10.83% | 1.11x | ✅ | +| `hexbytes_getitem_index[-1-palindrome ascii]` | 2.5324234021086154e-05 | 2.3296943235617554e-05 | 8.01% | 8.70% | 1.09x | ✅ | +| `hexbytes_getitem_index[-1-palindrome numeric]` | 2.530579829640371e-05 | 2.3240805817805835e-05 | 8.16% | 8.89% | 1.09x | ✅ | +| `hexbytes_getitem_index[-1-palindrome]` | 2.5632634911864418e-05 | 2.3432652653453046e-05 | 8.58% | 9.39% | 1.09x | ✅ | +| `hexbytes_getitem_index[-1-repeated 0-9]` | 2.5570853998508186e-05 | 2.323212094177341e-05 | 9.15% | 10.07% | 1.10x | ✅ | +| `hexbytes_getitem_index[-1-two patterns]` | 2.5583188435173564e-05 | 2.3311410763867386e-05 | 8.88% | 9.75% | 1.10x | ✅ | +| `hexbytes_getitem_index[0-0-9]` | 2.425530915544807e-05 | 2.2467727704898727e-05 | 7.37% | 7.96% | 1.08x | ✅ | +| `hexbytes_getitem_index[0-4-byte pattern]` | 2.4441118443996986e-05 | 2.2517137447786105e-05 | 7.87% | 8.54% | 1.09x | ✅ | +| `hexbytes_getitem_index[0-all byte values]` | 2.440579785525404e-05 | 2.2424893845780257e-05 | 8.12% | 8.83% | 1.09x | ✅ | +| `hexbytes_getitem_index[0-alternating 0x00/0xff]` | 2.4292706079575542e-05 | 2.2506039876648737e-05 | 7.35% | 7.94% | 1.08x | ✅ | +| `hexbytes_getitem_index[0-alternating 0xaa/0x55]` | 2.4484199291201903e-05 | 2.2466784820937515e-05 | 8.24% | 8.98% | 1.09x | ✅ | +| `hexbytes_getitem_index[0-ascii sentence]` | 2.4475377456011266e-05 | 2.2415968948492115e-05 | 8.41% | 9.19% | 1.09x | ✅ | +| `hexbytes_getitem_index[0-b'\\x00'*32]` | 2.4513685888977224e-05 | 2.2235467255586656e-05 | 9.29% | 10.25% | 1.10x | ✅ | +| `hexbytes_getitem_index[0-b'\\x00\\xff\\x00\\xff']` | 2.4492978651003103e-05 | 2.2385152413986386e-05 | 8.61% | 9.42% | 1.09x | ✅ | +| `hexbytes_getitem_index[0-b'\\x01'*100]` | 2.4337049572007555e-05 | 2.2382405828980003e-05 | 8.03% | 8.73% | 1.09x | ✅ | +| `hexbytes_getitem_index[0-b'\\x01'*2048]` | 2.441957011353223e-05 | 2.2227685794710123e-05 | 8.98% | 9.86% | 1.10x | ✅ | +| `hexbytes_getitem_index[0-b'\\x01\\x02\\x03']` | 2.4276485645007908e-05 | 2.2192896089175888e-05 | 8.58% | 9.39% | 1.09x | ✅ | +| `hexbytes_getitem_index[0-b'\\x10\\x20\\x30\\x40\\x50']` | 2.434313194505011e-05 | 2.236287414945353e-05 | 8.13% | 8.86% | 1.09x | ✅ | +| `hexbytes_getitem_index[0-b'\\x7f'*8]` | 2.4543882505371466e-05 | 2.2393841465350297e-05 | 8.76% | 9.60% | 1.10x | ✅ | +| `hexbytes_getitem_index[0-b'\\x80'*8]` | 2.432225131390031e-05 | 2.230176767762654e-05 | 8.31% | 9.06% | 1.09x | ✅ | +| `hexbytes_getitem_index[0-b'\\xde\\xad\\xbe\\xef']` | 2.4480194400277603e-05 | 2.219871319944255e-05 | 9.32% | 10.28% | 1.10x | ✅ | +| `hexbytes_getitem_index[0-b'\\xff'*64]` | 2.4298331652397016e-05 | 2.2189630713562568e-05 | 8.68% | 9.50% | 1.10x | ✅ | +| `hexbytes_getitem_index[0-b'a'*1024]` | 2.4413579879212683e-05 | 2.210479321646131e-05 | 9.46% | 10.44% | 1.10x | ✅ | +| `hexbytes_getitem_index[0-b'abc']` | 2.409775675363341e-05 | 2.2434224595596274e-05 | 6.90% | 7.42% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-long alternating]` | 2.41987146251888e-05 | 2.2444441559359366e-05 | 7.25% | 7.82% | 1.08x | ✅ | +| `hexbytes_getitem_index[0-mixed pattern]` | 2.4104413317004765e-05 | 2.2335514522306402e-05 | 7.34% | 7.92% | 1.08x | ✅ | +| `hexbytes_getitem_index[0-multiples of 0x10]` | 2.4394259474592607e-05 | 2.239048589564657e-05 | 8.21% | 8.95% | 1.09x | ✅ | +| `hexbytes_getitem_index[0-palindrome ascii]` | 2.440301243600659e-05 | 2.2437271112497383e-05 | 8.06% | 8.76% | 1.09x | ✅ | +| `hexbytes_getitem_index[0-palindrome numeric]` | 2.4242448994183863e-05 | 2.2437469882525066e-05 | 7.45% | 8.04% | 1.08x | ✅ | +| `hexbytes_getitem_index[0-palindrome]` | 2.4825615115671096e-05 | 2.226703169349708e-05 | 10.31% | 11.49% | 1.11x | ✅ | +| `hexbytes_getitem_index[0-repeated 0-9]` | 2.413660588064052e-05 | 2.2431825360397113e-05 | 7.06% | 7.60% | 1.08x | ✅ | +| `hexbytes_getitem_index[0-single 0xff]` | 2.4411852278529296e-05 | 2.2402058264078315e-05 | 8.23% | 8.97% | 1.09x | ✅ | +| `hexbytes_getitem_index[0-single null byte]` | 2.4380409162948406e-05 | 2.246555971767355e-05 | 7.85% | 8.52% | 1.09x | ✅ | +| `hexbytes_getitem_index[0-two patterns]` | 2.4314100479497665e-05 | 2.2459675745532846e-05 | 7.63% | 8.26% | 1.08x | ✅ | +| `hexbytes_getitem_index[1-0-9]` | 2.4438051524457385e-05 | 2.2509230804432465e-05 | 7.89% | 8.57% | 1.09x | ✅ | +| `hexbytes_getitem_index[1-4-byte pattern]` | 2.4029808760491994e-05 | 2.216360634596092e-05 | 7.77% | 8.42% | 1.08x | ✅ | +| `hexbytes_getitem_index[1-all byte values]` | 2.3875755061879934e-05 | 2.2281593636027693e-05 | 6.68% | 7.15% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-alternating 0x00/0xff]` | 2.4408380315874422e-05 | 2.2270611284492803e-05 | 8.76% | 9.60% | 1.10x | ✅ | +| `hexbytes_getitem_index[1-alternating 0xaa/0x55]` | 2.4323445644876098e-05 | 2.2586256381460634e-05 | 7.14% | 7.69% | 1.08x | ✅ | +| `hexbytes_getitem_index[1-ascii sentence]` | 2.4038248820795232e-05 | 2.2528695523023342e-05 | 6.28% | 6.70% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-b'\\x00'*32]` | 2.4420300114894402e-05 | 2.221527693803759e-05 | 9.03% | 9.93% | 1.10x | ✅ | +| `hexbytes_getitem_index[1-b'\\x00\\xff\\x00\\xff']` | 2.4384156844581877e-05 | 2.225763384035542e-05 | 8.72% | 9.55% | 1.10x | ✅ | +| `hexbytes_getitem_index[1-b'\\x01'*100]` | 2.4365656791525397e-05 | 2.2389575239502162e-05 | 8.11% | 8.83% | 1.09x | ✅ | +| `hexbytes_getitem_index[1-b'\\x01'*2048]` | 2.4221619457365466e-05 | 2.1734473546002438e-05 | 10.27% | 11.44% | 1.11x | ✅ | +| `hexbytes_getitem_index[1-b'\\x01\\x02\\x03']` | 2.4412605883087305e-05 | 2.212056072044959e-05 | 9.39% | 10.36% | 1.10x | ✅ | +| `hexbytes_getitem_index[1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.4296365092895975e-05 | 2.231355959747814e-05 | 8.16% | 8.89% | 1.09x | ✅ | +| `hexbytes_getitem_index[1-b'\\x7f'*8]` | 2.4302605305069972e-05 | 2.3262794119606948e-05 | 4.28% | 4.47% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-b'\\x80'*8]` | 2.4191809159784125e-05 | 2.2228813781773265e-05 | 8.11% | 8.83% | 1.09x | ✅ | +| `hexbytes_getitem_index[1-b'\\xde\\xad\\xbe\\xef']` | 2.4311386111335956e-05 | 2.209357962047261e-05 | 9.12% | 10.04% | 1.10x | ✅ | +| `hexbytes_getitem_index[1-b'\\xff'*64]` | 2.408560796097078e-05 | 2.2233451119446485e-05 | 7.69% | 8.33% | 1.08x | ✅ | +| `hexbytes_getitem_index[1-b'a'*1024]` | 2.409388487542799e-05 | 2.2242072819639656e-05 | 7.69% | 8.33% | 1.08x | ✅ | +| `hexbytes_getitem_index[1-b'abc']` | 2.430279197799932e-05 | 2.2280712963374035e-05 | 8.32% | 9.08% | 1.09x | ✅ | +| `hexbytes_getitem_index[1-long alternating]` | 2.41203127865342e-05 | 2.213494879548349e-05 | 8.23% | 8.97% | 1.09x | ✅ | +| `hexbytes_getitem_index[1-mixed pattern]` | 2.3908627241751444e-05 | 2.27933696010802e-05 | 4.66% | 4.89% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-multiples of 0x10]` | 2.437946087880298e-05 | 2.236875214454886e-05 | 8.25% | 8.99% | 1.09x | ✅ | +| `hexbytes_getitem_index[1-palindrome ascii]` | 2.3679013792369127e-05 | 2.283542214199951e-05 | 3.56% | 3.69% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-palindrome numeric]` | 2.3963660290163455e-05 | 2.2321128293399032e-05 | 6.85% | 7.36% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-palindrome]` | 2.433860203319467e-05 | 2.473181047495741e-05 | -1.62% | -1.59% | 0.98x | ❌ | +| `hexbytes_getitem_index[1-repeated 0-9]` | 2.4041832892813843e-05 | 2.248552031651306e-05 | 6.47% | 6.92% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-two patterns]` | 2.3770892374334567e-05 | 2.2544529045539747e-05 | 5.16% | 5.44% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-0-9]` | 2.4244415569536655e-05 | 2.2299320075785745e-05 | 8.02% | 8.72% | 1.09x | ✅ | +| `hexbytes_getitem_index[2-4-byte pattern]` | 2.4098462586603336e-05 | 2.2502901245824784e-05 | 6.62% | 7.09% | 1.07x | ✅ | +| `hexbytes_getitem_index[2-all byte values]` | 2.4110946373082613e-05 | 2.2347724030143746e-05 | 7.31% | 7.89% | 1.08x | ✅ | +| `hexbytes_getitem_index[2-alternating 0x00/0xff]` | 2.4242216937983412e-05 | 2.2377513338861933e-05 | 7.69% | 8.33% | 1.08x | ✅ | +| `hexbytes_getitem_index[2-alternating 0xaa/0x55]` | 2.4210702185961175e-05 | 2.2337357910343283e-05 | 7.74% | 8.39% | 1.08x | ✅ | +| `hexbytes_getitem_index[2-ascii sentence]` | 2.3966912707784524e-05 | 2.2283291293721078e-05 | 7.02% | 7.56% | 1.08x | ✅ | +| `hexbytes_getitem_index[2-b'\\x00'*32]` | 2.417068364124171e-05 | 2.2471157879296735e-05 | 7.03% | 7.56% | 1.08x | ✅ | +| `hexbytes_getitem_index[2-b'\\x00\\xff\\x00\\xff']` | 2.4119396593296104e-05 | 2.232720463964139e-05 | 7.43% | 8.03% | 1.08x | ✅ | +| `hexbytes_getitem_index[2-b'\\x01'*100]` | 2.4276281255627565e-05 | 2.2358396502662854e-05 | 7.90% | 8.58% | 1.09x | ✅ | +| `hexbytes_getitem_index[2-b'\\x01'*2048]` | 2.411072650538012e-05 | 2.244543648430775e-05 | 6.91% | 7.42% | 1.07x | ✅ | +| `hexbytes_getitem_index[2-b'\\x01\\x02\\x03']` | 2.4085824435471224e-05 | 2.2336828480852336e-05 | 7.26% | 7.83% | 1.08x | ✅ | +| `hexbytes_getitem_index[2-b'\\x10\\x20\\x30\\x40\\x50']` | 2.4283479015007948e-05 | 2.2398580770554523e-05 | 7.76% | 8.42% | 1.08x | ✅ | +| `hexbytes_getitem_index[2-b'\\x7f'*8]` | 2.4233424615951713e-05 | 2.217216179934468e-05 | 8.51% | 9.30% | 1.09x | ✅ | +| `hexbytes_getitem_index[2-b'\\x80'*8]` | 2.425914751097879e-05 | 2.2319380354041405e-05 | 8.00% | 8.69% | 1.09x | ✅ | +| `hexbytes_getitem_index[2-b'\\xde\\xad\\xbe\\xef']` | 2.3940192138007366e-05 | 2.2254581270240258e-05 | 7.04% | 7.57% | 1.08x | ✅ | +| `hexbytes_getitem_index[2-b'\\xff'*64]` | 2.4164114413798258e-05 | 2.2289000902806753e-05 | 7.76% | 8.41% | 1.08x | ✅ | +| `hexbytes_getitem_index[2-b'a'*1024]` | 2.4085671639068005e-05 | 2.5018220437773233e-05 | -3.87% | -3.73% | 0.96x | ❌ | +| `hexbytes_getitem_index[2-b'abc']` | 2.402746112709058e-05 | 2.2669214334218074e-05 | 5.65% | 5.99% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-long alternating]` | 2.4128129120932564e-05 | 2.240955595282167e-05 | 7.12% | 7.67% | 1.08x | ✅ | +| `hexbytes_getitem_index[2-mixed pattern]` | 2.4205364900264775e-05 | 2.2319222975850516e-05 | 7.79% | 8.45% | 1.08x | ✅ | +| `hexbytes_getitem_index[2-multiples of 0x10]` | 2.418512116502596e-05 | 2.227853400996357e-05 | 7.88% | 8.56% | 1.09x | ✅ | +| `hexbytes_getitem_index[2-palindrome ascii]` | 2.4206976523327436e-05 | 2.2526124537792325e-05 | 6.94% | 7.46% | 1.07x | ✅ | +| `hexbytes_getitem_index[2-palindrome numeric]` | 2.414621261861482e-05 | 2.219893304676724e-05 | 8.06% | 8.77% | 1.09x | ✅ | +| `hexbytes_getitem_index[2-palindrome]` | 2.419102208392585e-05 | 2.230622513775129e-05 | 7.79% | 8.45% | 1.08x | ✅ | +| `hexbytes_getitem_index[2-repeated 0-9]` | 2.4499102826859664e-05 | 2.2527231744481515e-05 | 8.05% | 8.75% | 1.09x | ✅ | +| `hexbytes_getitem_index[2-two patterns]` | 2.4123208384817657e-05 | 2.2479229333779515e-05 | 6.81% | 7.31% | 1.07x | ✅ | +| `hexbytes_getitem_index[3-0-9]` | 2.417600487612528e-05 | 2.234041364882286e-05 | 7.59% | 8.22% | 1.08x | ✅ | +| `hexbytes_getitem_index[3-4-byte pattern]` | 2.4164828935948726e-05 | 2.2326618819403376e-05 | 7.61% | 8.23% | 1.08x | ✅ | +| `hexbytes_getitem_index[3-all byte values]` | 2.418683182291497e-05 | 2.2449368449538876e-05 | 7.18% | 7.74% | 1.08x | ✅ | +| `hexbytes_getitem_index[3-alternating 0x00/0xff]` | 2.446492541857315e-05 | 2.2192763839092597e-05 | 9.29% | 10.24% | 1.10x | ✅ | +| `hexbytes_getitem_index[3-alternating 0xaa/0x55]` | 2.437131062647012e-05 | 2.2434512676347666e-05 | 7.95% | 8.63% | 1.09x | ✅ | +| `hexbytes_getitem_index[3-ascii sentence]` | 2.4165870800931403e-05 | 2.2252134988312418e-05 | 7.92% | 8.60% | 1.09x | ✅ | +| `hexbytes_getitem_index[3-b'\\x00'*32]` | 2.452448178450455e-05 | 2.2296391745875273e-05 | 9.09% | 9.99% | 1.10x | ✅ | +| `hexbytes_getitem_index[3-b'\\x00\\xff\\x00\\xff']` | 2.4203009258323277e-05 | 2.2183499806017555e-05 | 8.34% | 9.10% | 1.09x | ✅ | +| `hexbytes_getitem_index[3-b'\\x01'*100]` | 2.4373472379242054e-05 | 2.2165594036291073e-05 | 9.06% | 9.96% | 1.10x | ✅ | +| `hexbytes_getitem_index[3-b'\\x01'*2048]` | 2.433677236957727e-05 | 2.2705366834254867e-05 | 6.70% | 7.19% | 1.07x | ✅ | +| `hexbytes_getitem_index[3-b'\\x10\\x20\\x30\\x40\\x50']` | 2.4231354118415342e-05 | 2.2115543246438045e-05 | 8.73% | 9.57% | 1.10x | ✅ | +| `hexbytes_getitem_index[3-b'\\x7f'*8]` | 2.4043406668064546e-05 | 2.215708643615461e-05 | 7.85% | 8.51% | 1.09x | ✅ | +| `hexbytes_getitem_index[3-b'\\x80'*8]` | 2.4185451277580215e-05 | 2.220252070115237e-05 | 8.20% | 8.93% | 1.09x | ✅ | +| `hexbytes_getitem_index[3-b'\\xde\\xad\\xbe\\xef']` | 2.416578629036297e-05 | 2.245919535217012e-05 | 7.06% | 7.60% | 1.08x | ✅ | +| `hexbytes_getitem_index[3-b'\\xff'*64]` | 2.424979064476921e-05 | 2.228048537107206e-05 | 8.12% | 8.84% | 1.09x | ✅ | +| `hexbytes_getitem_index[3-b'a'*1024]` | 2.418140350342552e-05 | 2.2413704386948553e-05 | 7.31% | 7.89% | 1.08x | ✅ | +| `hexbytes_getitem_index[3-long alternating]` | 2.421734347254145e-05 | 2.2279926524545042e-05 | 8.00% | 8.70% | 1.09x | ✅ | +| `hexbytes_getitem_index[3-mixed pattern]` | 2.409337727472331e-05 | 2.2309218636955755e-05 | 7.41% | 8.00% | 1.08x | ✅ | +| `hexbytes_getitem_index[3-multiples of 0x10]` | 2.4291450916342807e-05 | 2.22782199888511e-05 | 8.29% | 9.04% | 1.09x | ✅ | +| `hexbytes_getitem_index[3-palindrome ascii]` | 2.4055573142262087e-05 | 2.225896496132687e-05 | 7.47% | 8.07% | 1.08x | ✅ | +| `hexbytes_getitem_index[3-palindrome numeric]` | 2.4094594480437723e-05 | 2.220905889229611e-05 | 7.83% | 8.49% | 1.08x | ✅ | +| `hexbytes_getitem_index[3-palindrome]` | 2.4365135026216626e-05 | 2.2154709109780438e-05 | 9.07% | 9.98% | 1.10x | ✅ | +| `hexbytes_getitem_index[3-repeated 0-9]` | 2.40915407689209e-05 | 2.23016260325464e-05 | 7.43% | 8.03% | 1.08x | ✅ | +| `hexbytes_getitem_index[3-two patterns]` | 2.419838867551514e-05 | 2.2242963906091817e-05 | 8.08% | 8.79% | 1.09x | ✅ | +| `hexbytes_getitem_index[4-0-9]` | 2.4225362751715408e-05 | 2.2376983789720502e-05 | 7.63% | 8.26% | 1.08x | ✅ | +| `hexbytes_getitem_index[4-4-byte pattern]` | 2.4093413862181306e-05 | 2.2439733112820257e-05 | 6.86% | 7.37% | 1.07x | ✅ | +| `hexbytes_getitem_index[4-all byte values]` | 2.4205534562215246e-05 | 2.233192433220199e-05 | 7.74% | 8.39% | 1.08x | ✅ | +| `hexbytes_getitem_index[4-alternating 0x00/0xff]` | 2.4142128581668316e-05 | 2.226675666345603e-05 | 7.77% | 8.42% | 1.08x | ✅ | +| `hexbytes_getitem_index[4-alternating 0xaa/0x55]` | 2.392549092912116e-05 | 2.239951130004797e-05 | 6.38% | 6.81% | 1.07x | ✅ | +| `hexbytes_getitem_index[4-ascii sentence]` | 2.4202291480289368e-05 | 2.238281495459324e-05 | 7.52% | 8.13% | 1.08x | ✅ | +| `hexbytes_getitem_index[4-b'\\x00'*32]` | 2.4111002907152292e-05 | 2.2311781598417136e-05 | 7.46% | 8.06% | 1.08x | ✅ | +| `hexbytes_getitem_index[4-b'\\x01'*100]` | 2.3886035191243716e-05 | 2.252541453686808e-05 | 5.70% | 6.04% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-b'\\x01'*2048]` | 2.4071647836660192e-05 | 2.2160847006709516e-05 | 7.94% | 8.62% | 1.09x | ✅ | +| `hexbytes_getitem_index[4-b'\\x10\\x20\\x30\\x40\\x50']` | 2.40300307229132e-05 | 2.2472360642414388e-05 | 6.48% | 6.93% | 1.07x | ✅ | +| `hexbytes_getitem_index[4-b'\\x7f'*8]` | 2.4049626065524357e-05 | 2.242792441163613e-05 | 6.74% | 7.23% | 1.07x | ✅ | +| `hexbytes_getitem_index[4-b'\\x80'*8]` | 2.3952142444911515e-05 | 2.241171927364177e-05 | 6.43% | 6.87% | 1.07x | ✅ | +| `hexbytes_getitem_index[4-b'\\xff'*64]` | 2.4331249666087732e-05 | 2.2173648188021472e-05 | 8.87% | 9.73% | 1.10x | ✅ | +| `hexbytes_getitem_index[4-b'a'*1024]` | 2.412433860381172e-05 | 2.220345002452317e-05 | 7.96% | 8.65% | 1.09x | ✅ | +| `hexbytes_getitem_index[4-long alternating]` | 2.3746688109508442e-05 | 2.228078712742679e-05 | 6.17% | 6.58% | 1.07x | ✅ | +| `hexbytes_getitem_index[4-mixed pattern]` | 2.421384480853815e-05 | 2.237487865437409e-05 | 7.59% | 8.22% | 1.08x | ✅ | +| `hexbytes_getitem_index[4-multiples of 0x10]` | 2.395574784696316e-05 | 2.2419082520404426e-05 | 6.41% | 6.85% | 1.07x | ✅ | +| `hexbytes_getitem_index[4-palindrome ascii]` | 2.4261678938690255e-05 | 2.23500368260087e-05 | 7.88% | 8.55% | 1.09x | ✅ | +| `hexbytes_getitem_index[4-palindrome numeric]` | 2.41532253466421e-05 | 2.2301447254628233e-05 | 7.67% | 8.30% | 1.08x | ✅ | +| `hexbytes_getitem_index[4-palindrome]` | 2.4166279302246413e-05 | 2.2334181152484028e-05 | 7.58% | 8.20% | 1.08x | ✅ | +| `hexbytes_getitem_index[4-repeated 0-9]` | 2.419783483995442e-05 | 2.2305215077217098e-05 | 7.82% | 8.49% | 1.08x | ✅ | +| `hexbytes_getitem_index[4-two patterns]` | 2.4166691393135993e-05 | 2.234579277765461e-05 | 7.53% | 8.15% | 1.08x | ✅ | +| `hexbytes_getitem_index[5-0-9]` | 2.415451803450219e-05 | 2.2344492522918423e-05 | 7.49% | 8.10% | 1.08x | ✅ | +| `hexbytes_getitem_index[5-4-byte pattern]` | 2.4461668779704913e-05 | 2.2468695798607122e-05 | 8.15% | 8.87% | 1.09x | ✅ | +| `hexbytes_getitem_index[5-all byte values]` | 2.4526896095555104e-05 | 2.2350740438410917e-05 | 8.87% | 9.74% | 1.10x | ✅ | +| `hexbytes_getitem_index[5-alternating 0x00/0xff]` | 2.4143876749553816e-05 | 2.247950545067045e-05 | 6.89% | 7.40% | 1.07x | ✅ | +| `hexbytes_getitem_index[5-alternating 0xaa/0x55]` | 2.3826695283883187e-05 | 2.2581648821141653e-05 | 5.23% | 5.51% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-ascii sentence]` | 2.4331468357782205e-05 | 2.2098955099183076e-05 | 9.18% | 10.10% | 1.10x | ✅ | +| `hexbytes_getitem_index[5-b'\\x00'*32]` | 2.430473650514047e-05 | 2.2990063662705162e-05 | 5.41% | 5.72% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-b'\\x01'*100]` | 2.4267668357544978e-05 | 2.2323805960041367e-05 | 8.01% | 8.71% | 1.09x | ✅ | +| `hexbytes_getitem_index[5-b'\\x01'*2048]` | 2.408882952909903e-05 | 2.2374081719132762e-05 | 7.12% | 7.66% | 1.08x | ✅ | +| `hexbytes_getitem_index[5-b'\\x7f'*8]` | 2.4414670015407634e-05 | 2.2259146179606612e-05 | 8.83% | 9.68% | 1.10x | ✅ | +| `hexbytes_getitem_index[5-b'\\x80'*8]` | 2.3977866052149447e-05 | 2.2838356073548533e-05 | 4.75% | 4.99% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-b'\\xff'*64]` | 2.4916472762100033e-05 | 2.2197529395813842e-05 | 10.91% | 12.25% | 1.12x | ✅ | +| `hexbytes_getitem_index[5-b'a'*1024]` | 2.4429348633123922e-05 | 2.2397836996968996e-05 | 8.32% | 9.07% | 1.09x | ✅ | +| `hexbytes_getitem_index[5-long alternating]` | 2.442525775135446e-05 | 2.2398005774624392e-05 | 8.30% | 9.05% | 1.09x | ✅ | +| `hexbytes_getitem_index[5-mixed pattern]` | 2.4426943229586223e-05 | 2.231260201431081e-05 | 8.66% | 9.48% | 1.09x | ✅ | +| `hexbytes_getitem_index[5-multiples of 0x10]` | 2.4258021054845778e-05 | 2.2375936533533025e-05 | 7.76% | 8.41% | 1.08x | ✅ | +| `hexbytes_getitem_index[5-palindrome ascii]` | 2.4595723090018547e-05 | 2.226629253598567e-05 | 9.47% | 10.46% | 1.10x | ✅ | +| `hexbytes_getitem_index[5-palindrome]` | 2.4184849605882023e-05 | 2.240437206199145e-05 | 7.36% | 7.95% | 1.08x | ✅ | +| `hexbytes_getitem_index[5-repeated 0-9]` | 2.4449071312681704e-05 | 2.2223056236256117e-05 | 9.10% | 10.02% | 1.10x | ✅ | +| `hexbytes_getitem_index[5-two patterns]` | 2.4600495698672144e-05 | 2.2241351518153398e-05 | 9.59% | 10.61% | 1.11x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-0-9]` | 8.109822745421519e-05 | 5.934696680707812e-05 | 26.82% | 36.65% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-4-byte pattern]` | 8.237302343490868e-05 | 5.937544201425723e-05 | 27.92% | 38.73% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-all byte values]` | 8.243582634270907e-05 | 5.91607607292822e-05 | 28.23% | 39.34% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-alternating 0x00/0xff]` | 8.284119780003567e-05 | 5.8901962489552276e-05 | 28.90% | 40.64% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-alternating 0xaa/0x55]` | 8.274262507405514e-05 | 5.871635081362543e-05 | 29.04% | 40.92% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-ascii sentence]` | 8.191191542988262e-05 | 5.8757131631430473e-05 | 28.27% | 39.41% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'']` | 8.019374245683357e-05 | 5.58313000935178e-05 | 30.38% | 43.64% | 1.44x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00'*32]` | 8.217610250724421e-05 | 5.905784780246903e-05 | 28.13% | 39.15% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00\\xff\\x00\\xff']` | 8.437779492822262e-05 | 5.957040467167534e-05 | 29.40% | 41.64% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*100]` | 8.185415211611684e-05 | 5.895277111103877e-05 | 27.98% | 38.85% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*2048]` | 8.271197555162181e-05 | 5.948375176320305e-05 | 28.08% | 39.05% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01\\x02\\x03']` | 8.291729849357516e-05 | 5.955597468410873e-05 | 28.17% | 39.23% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.308586567426791e-05 | 6.0307195153575426e-05 | 27.42% | 37.77% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x7f'*8]` | 8.251827976656279e-05 | 5.890079248388075e-05 | 28.62% | 40.10% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x80'*8]` | 8.214448578611163e-05 | 5.946997317733736e-05 | 27.60% | 38.13% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\xde\\xad\\xbe\\xef']` | 8.239467528411867e-05 | 5.930399517222878e-05 | 28.02% | 38.94% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\xff'*64]` | 8.250207007116865e-05 | 5.887144119965016e-05 | 28.64% | 40.14% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'a'*1024]` | 8.237465018695229e-05 | 5.891534965676207e-05 | 28.48% | 39.82% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'abc']` | 8.148292657655743e-05 | 5.8754134224980015e-05 | 27.89% | 38.68% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-long alternating]` | 8.205347586967844e-05 | 5.914824296099802e-05 | 27.92% | 38.73% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-mixed pattern]` | 8.17242604360277e-05 | 5.999690367474975e-05 | 26.59% | 36.21% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-multiples of 0x10]` | 8.208982248861554e-05 | 5.9880895932595985e-05 | 27.05% | 37.09% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-palindrome ascii]` | 8.245719274508182e-05 | 5.9193080142279505e-05 | 28.21% | 39.30% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-palindrome numeric]` | 8.224783716585996e-05 | 5.841675369391383e-05 | 28.97% | 40.79% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-palindrome]` | 8.176603901363424e-05 | 5.9243127119971696e-05 | 27.55% | 38.02% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-repeated 0-9]` | 8.126241957498211e-05 | 5.855319337614148e-05 | 27.95% | 38.78% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-single 0xff]` | 8.107511893099894e-05 | 5.772708525918401e-05 | 28.80% | 40.45% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-single null byte]` | 8.067200033316357e-05 | 5.7539193662996e-05 | 28.68% | 40.20% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-two patterns]` | 8.163885830741557e-05 | 5.881779586400655e-05 | 27.95% | 38.80% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-0-9]` | 8.315856726264862e-05 | 6.087453332108221e-05 | 26.80% | 36.61% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-4-byte pattern]` | 8.28790134479815e-05 | 5.9083644765355076e-05 | 28.71% | 40.27% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-all byte values]` | 8.367096508132459e-05 | 5.953004733338457e-05 | 28.85% | 40.55% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-alternating 0x00/0xff]` | 8.436305355602156e-05 | 5.982426018082541e-05 | 29.09% | 41.02% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-alternating 0xaa/0x55]` | 8.361811276539272e-05 | 5.975743397892355e-05 | 28.54% | 39.93% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-ascii sentence]` | 8.34619878601952e-05 | 5.965085137592923e-05 | 28.53% | 39.92% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'']` | 8.200373242947297e-05 | 5.7324917483730085e-05 | 30.09% | 43.05% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x00'*32]` | 8.363976687310334e-05 | 5.984127959333996e-05 | 28.45% | 39.77% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x00\\xff\\x00\\xff']` | 8.285443299014988e-05 | 5.9974818752046784e-05 | 27.61% | 38.15% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*100]` | 8.36396541847934e-05 | 6.010157424496724e-05 | 28.14% | 39.16% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*2048]` | 8.276590091865628e-05 | 5.9292349705907625e-05 | 28.36% | 39.59% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x01\\x02\\x03']` | 8.308336083350276e-05 | 5.982714580750343e-05 | 27.99% | 38.87% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.28157121285493e-05 | 6.088234132945903e-05 | 26.48% | 36.03% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x7f'*8]` | 8.343262764136882e-05 | 5.963962369002214e-05 | 28.52% | 39.89% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x80'*8]` | 8.332028949151277e-05 | 5.980416016845955e-05 | 28.22% | 39.32% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\xde\\xad\\xbe\\xef']` | 8.438530174427448e-05 | 6.021107705096401e-05 | 28.65% | 40.15% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\xff'*64]` | 8.325727841261816e-05 | 5.989217447807462e-05 | 28.06% | 39.01% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'a'*1024]` | 8.300412326577643e-05 | 6.033404652818307e-05 | 27.31% | 37.57% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'abc']` | 8.396832953872635e-05 | 6.0080285275518486e-05 | 28.45% | 39.76% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-long alternating]` | 8.399434960635853e-05 | 5.946872631765933e-05 | 29.20% | 41.24% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-mixed pattern]` | 8.354582031481949e-05 | 5.9693920430457674e-05 | 28.55% | 39.96% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-multiples of 0x10]` | 8.318688003799056e-05 | 5.993481766612991e-05 | 27.95% | 38.80% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-palindrome ascii]` | 8.26215916058924e-05 | 5.9128798860127226e-05 | 28.43% | 39.73% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-palindrome numeric]` | 8.379672533288304e-05 | 5.8854254750571816e-05 | 29.77% | 42.38% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-palindrome]` | 8.334520737485796e-05 | 5.97315193824666e-05 | 28.33% | 39.53% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-repeated 0-9]` | 8.339960154942494e-05 | 5.917407804143091e-05 | 29.05% | 40.94% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-single 0xff]` | 8.20461445662428e-05 | 5.816234607806348e-05 | 29.11% | 41.06% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-single null byte]` | 8.160932409201539e-05 | 5.846077686885992e-05 | 28.37% | 39.60% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-two patterns]` | 8.34719302031235e-05 | 6.0228532935824554e-05 | 27.85% | 38.59% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-0-9]` | 8.304120442521239e-05 | 5.9513773017755354e-05 | 28.33% | 39.53% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-4-byte pattern]` | 8.278786010985059e-05 | 6.029716845854711e-05 | 27.17% | 37.30% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-all byte values]` | 8.296964237701681e-05 | 6.04454378967543e-05 | 27.15% | 37.26% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-alternating 0x00/0xff]` | 8.23194077347433e-05 | 5.946044486429683e-05 | 27.77% | 38.44% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-alternating 0xaa/0x55]` | 8.230309523756451e-05 | 5.9477118903230374e-05 | 27.73% | 38.38% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-ascii sentence]` | 8.255311079352084e-05 | 5.982115968614051e-05 | 27.54% | 38.00% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'']` | 8.020242400871506e-05 | 5.6964174541072085e-05 | 28.97% | 40.79% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x00'*32]` | 8.345150530347419e-05 | 5.987323700326012e-05 | 28.25% | 39.38% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x00\\xff\\x00\\xff']` | 8.31584389378622e-05 | 6.010803852983335e-05 | 27.72% | 38.35% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*100]` | 8.296461210986003e-05 | 5.978936685032712e-05 | 27.93% | 38.76% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*2048]` | 8.319623319560384e-05 | 5.990714490684664e-05 | 27.99% | 38.88% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x01\\x02\\x03']` | 8.320992228369728e-05 | 6.0357676475539456e-05 | 27.46% | 37.86% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.272856800534554e-05 | 6.0278835675956855e-05 | 27.14% | 37.24% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x7f'*8]` | 8.263435659002694e-05 | 5.9938958743133706e-05 | 27.46% | 37.86% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x80'*8]` | 8.266650652744275e-05 | 5.984373975126228e-05 | 27.61% | 38.14% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\xde\\xad\\xbe\\xef']` | 8.3189246222292e-05 | 5.990667752574828e-05 | 27.99% | 38.86% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\xff'*64]` | 8.344542083767353e-05 | 6.0266538073128244e-05 | 27.78% | 38.46% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'a'*1024]` | 8.337305391026689e-05 | 6.013827141105082e-05 | 27.87% | 38.64% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'abc']` | 8.306302735194207e-05 | 5.992090918115183e-05 | 27.86% | 38.62% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-long alternating]` | 8.295460001709453e-05 | 5.9885874774813256e-05 | 27.81% | 38.52% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-mixed pattern]` | 8.23649272630917e-05 | 5.9724700342349976e-05 | 27.49% | 37.91% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-multiples of 0x10]` | 8.323216830405566e-05 | 6.000593971460864e-05 | 27.91% | 38.71% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-palindrome ascii]` | 8.292404566043788e-05 | 5.999141718111593e-05 | 27.65% | 38.23% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-palindrome numeric]` | 8.214486541281033e-05 | 6.034271107894215e-05 | 26.54% | 36.13% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-palindrome]` | 8.2815195845254e-05 | 5.98974898654265e-05 | 27.67% | 38.26% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-repeated 0-9]` | 8.254985224050253e-05 | 5.995422737176669e-05 | 27.37% | 37.69% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-single 0xff]` | 7.996285563052716e-05 | 5.7204382228366704e-05 | 28.46% | 39.78% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-single null byte]` | 8.058896685549699e-05 | 5.718741378433685e-05 | 29.04% | 40.92% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-two patterns]` | 8.301480051497781e-05 | 6.008519960158616e-05 | 27.62% | 38.16% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-0-9]` | 8.299544448236158e-05 | 5.896065511233726e-05 | 28.96% | 40.76% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-4-byte pattern]` | 8.270699897511886e-05 | 6.056914953410043e-05 | 26.77% | 36.55% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-all byte values]` | 8.356663954073812e-05 | 5.99797763160345e-05 | 28.23% | 39.32% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-alternating 0x00/0xff]` | 8.271889531588747e-05 | 5.932319626420986e-05 | 28.28% | 39.44% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-alternating 0xaa/0x55]` | 8.277668807600246e-05 | 6.019526804914412e-05 | 27.28% | 37.51% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-ascii sentence]` | 8.259952441075653e-05 | 6.018178392360118e-05 | 27.14% | 37.25% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'']` | 7.962183566050274e-05 | 5.643857867021551e-05 | 29.12% | 41.08% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x00'*32]` | 8.257460615322352e-05 | 5.897461548820421e-05 | 28.58% | 40.02% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x00\\xff\\x00\\xff']` | 8.224552179085638e-05 | 5.906014966779389e-05 | 28.19% | 39.26% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*100]` | 8.245628560434216e-05 | 5.965399311720529e-05 | 27.65% | 38.22% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*2048]` | 0.00010659857088805951 | 7.742516723332857e-05 | 27.37% | 37.68% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x01\\x02\\x03']` | 8.09819284756203e-05 | 5.719355957427316e-05 | 29.37% | 41.59% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.489648422145543e-05 | 5.9704603131030955e-05 | 29.67% | 42.19% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x7f'*8]` | 8.219614473907485e-05 | 5.9671690729327297e-05 | 27.40% | 37.75% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x80'*8]` | 8.230548619491193e-05 | 5.9878502152602626e-05 | 27.25% | 37.45% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\xde\\xad\\xbe\\xef']` | 8.190242840314268e-05 | 5.9504331531713234e-05 | 27.35% | 37.64% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\xff'*64]` | 8.20909809159168e-05 | 5.906328035201062e-05 | 28.05% | 38.99% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'a'*1024]` | 0.00010101191562729828 | 7.329977225342727e-05 | 27.43% | 37.81% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'abc']` | 7.969101037602326e-05 | 5.720501374002099e-05 | 28.22% | 39.31% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-long alternating]` | 9.837515224005266e-05 | 7.53383309842874e-05 | 23.42% | 30.58% | 1.31x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-mixed pattern]` | 8.350682048495061e-05 | 5.992745047153371e-05 | 28.24% | 39.35% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-multiples of 0x10]` | 8.280391057662391e-05 | 5.8546699575472135e-05 | 29.29% | 41.43% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-palindrome ascii]` | 8.238321118968775e-05 | 5.891295247060633e-05 | 28.49% | 39.84% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-palindrome numeric]` | 8.228437180326548e-05 | 5.9291704237165855e-05 | 27.94% | 38.78% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-palindrome]` | 8.282618157775673e-05 | 5.92753859994165e-05 | 28.43% | 39.73% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-repeated 0-9]` | 8.203449842994447e-05 | 6.023450620364193e-05 | 26.57% | 36.19% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-single 0xff]` | 8.036414564370682e-05 | 5.695319034782047e-05 | 29.13% | 41.11% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-single null byte]` | 7.998914033665058e-05 | 5.700367588008864e-05 | 28.74% | 40.32% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-two patterns]` | 8.217657261863478e-05 | 5.916327051860404e-05 | 28.00% | 38.90% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-0-9]` | 8.138661546181942e-05 | 5.7476257655937686e-05 | 29.38% | 41.60% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-4-byte pattern]` | 8.225540526991797e-05 | 5.9374155693097254e-05 | 27.82% | 38.54% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-all byte values]` | 8.257653616220237e-05 | 5.9490670320242734e-05 | 27.96% | 38.81% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-alternating 0x00/0xff]` | 8.154132955191952e-05 | 5.8385853648772835e-05 | 28.40% | 39.66% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-alternating 0xaa/0x55]` | 8.151512669257545e-05 | 5.833652811055827e-05 | 28.43% | 39.73% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-ascii sentence]` | 8.117700455756239e-05 | 5.7870404214894385e-05 | 28.71% | 40.27% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'']` | 7.80272089885524e-05 | 5.508355415820893e-05 | 29.40% | 41.65% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x00'*32]` | 8.131586641342035e-05 | 5.795855399364036e-05 | 28.72% | 40.30% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x00\\xff\\x00\\xff']` | 8.002308529565672e-05 | 5.823754509443074e-05 | 27.22% | 37.41% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*100]` | 8.15837274465782e-05 | 5.8344582540813137e-05 | 28.49% | 39.83% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*2048]` | 0.00010473972853924946 | 7.865984117509225e-05 | 24.90% | 33.16% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x01\\x02\\x03']` | 8.071407620333572e-05 | 5.789782852382632e-05 | 28.27% | 39.41% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.150298185300441e-05 | 5.818686185731129e-05 | 28.61% | 40.07% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x7f'*8]` | 8.102922622328996e-05 | 5.6653477484053965e-05 | 30.08% | 43.03% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x80'*8]` | 8.096505749011665e-05 | 5.7391639880672964e-05 | 29.12% | 41.07% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\xde\\xad\\xbe\\xef']` | 8.032329702784517e-05 | 5.9405804273619835e-05 | 26.04% | 35.21% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\xff'*64]` | 8.17012649923086e-05 | 5.92151706162135e-05 | 27.52% | 37.97% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'a'*1024]` | 9.640329246121791e-05 | 6.953683262551344e-05 | 27.87% | 38.64% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'abc']` | 8.039482061330855e-05 | 5.792697174710155e-05 | 27.95% | 38.79% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-long alternating]` | 9.952732815210545e-05 | 7.21915969191772e-05 | 27.47% | 37.87% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-mixed pattern]` | 8.188805349147834e-05 | 5.833756062421042e-05 | 28.76% | 40.37% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-multiples of 0x10]` | 8.094904935201397e-05 | 5.751439998795577e-05 | 28.95% | 40.75% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-palindrome ascii]` | 8.17604120132599e-05 | 5.7333737884141926e-05 | 29.88% | 42.60% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-palindrome numeric]` | 8.069605996347859e-05 | 5.734129211223428e-05 | 28.94% | 40.73% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-palindrome]` | 8.034148623404495e-05 | 5.7820602721187005e-05 | 28.03% | 38.95% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-repeated 0-9]` | 8.105601103520871e-05 | 5.8020739404697555e-05 | 28.42% | 39.70% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-single 0xff]` | 7.842684498258443e-05 | 5.49025784929141e-05 | 30.00% | 42.85% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-single null byte]` | 7.901352154780409e-05 | 5.525479950583057e-05 | 30.07% | 43.00% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-two patterns]` | 8.120628381319012e-05 | 5.8170835199795765e-05 | 28.37% | 39.60% | 1.40x | ✅ | +| `hexbytes_new['']` | 7.068547401441922e-05 | 3.643496885379037e-05 | 48.45% | 94.00% | 1.94x | ✅ | +| `hexbytes_new['0x'+'00'*64]` | 9.197574867347415e-05 | 4.9615136987271256e-05 | 46.06% | 85.38% | 1.85x | ✅ | +| `hexbytes_new['0x'+'a'*128]` | 9.224377851142097e-05 | 4.91000447034653e-05 | 46.77% | 87.87% | 1.88x | ✅ | +| `hexbytes_new['0x'+'ff'*32]` | 8.915199276218098e-05 | 4.7818932584576934e-05 | 46.36% | 86.44% | 1.86x | ✅ | +| `hexbytes_new['0x']` | 7.87655623348165e-05 | 3.803289051475865e-05 | 51.71% | 107.10% | 2.07x | ✅ | +| `hexbytes_new['0x1234']` | 8.580084860801838e-05 | 4.4983292952141135e-05 | 47.57% | 90.74% | 1.91x | ✅ | +| `hexbytes_new['0xCAFEBABE']` | 8.745935556735071e-05 | 4.4608621141467414e-05 | 49.00% | 96.06% | 1.96x | ✅ | +| `hexbytes_new['0xabcdef']` | 8.669439737584206e-05 | 4.526726553417234e-05 | 47.79% | 91.52% | 1.92x | ✅ | +| `hexbytes_new['0xdeadbeef']` | 8.664875764727009e-05 | 4.4363382656374295e-05 | 48.80% | 95.32% | 1.95x | ✅ | +| `hexbytes_new['abc']` | 8.293618598035809e-05 | 4.754185887759291e-05 | 42.68% | 74.45% | 1.74x | ✅ | +| `hexbytes_new['deadbeef']` | 7.650124734586989e-05 | 4.160965351845961e-05 | 45.61% | 83.85% | 1.84x | ✅ | +| `hexbytes_new[0-9]` | 4.340209798992782e-05 | 2.6040666775004528e-05 | 40.00% | 66.67% | 1.67x | ✅ | +| `hexbytes_new[0]` | 0.00012063733591264394 | 6.089289052193173e-05 | 49.52% | 98.11% | 1.98x | ✅ | +| `hexbytes_new[123456]` | 0.00012396047368376498 | 6.593651967896935e-05 | 46.81% | 88.00% | 1.88x | ✅ | +| `hexbytes_new[2**16]` | 0.00012571457356197447 | 6.647586311219946e-05 | 47.12% | 89.11% | 1.89x | ✅ | +| `hexbytes_new[2**256-1]` | 0.00013274509653117507 | 7.41734686824851e-05 | 44.12% | 78.97% | 1.79x | ✅ | +| `hexbytes_new[2**32]` | 0.0001293944631536387 | 6.970192678203201e-05 | 46.13% | 85.64% | 1.86x | ✅ | +| `hexbytes_new[2**64]` | 0.00012802655259240418 | 7.197533946136962e-05 | 43.78% | 77.88% | 1.78x | ✅ | +| `hexbytes_new[2**8]` | 0.0001252371056731053 | 6.329803195779175e-05 | 49.46% | 97.85% | 1.98x | ✅ | +| `hexbytes_new[4-byte pattern]` | 4.41649981847421e-05 | 2.726303579156121e-05 | 38.27% | 62.00% | 1.62x | ✅ | +| `hexbytes_new[False]` | 5.9703296611241896e-05 | 2.6816197056187918e-05 | 55.08% | 122.64% | 2.23x | ✅ | +| `hexbytes_new[True]` | 5.9786884212968516e-05 | 2.70089403356989e-05 | 54.82% | 121.36% | 2.21x | ✅ | +| `hexbytes_new[all byte values]` | 4.463154656435076e-05 | 2.7042754048534536e-05 | 39.41% | 65.04% | 1.65x | ✅ | +| `hexbytes_new[alternating 0x00/0xff]` | 4.4156426448369485e-05 | 2.6583346320884296e-05 | 39.80% | 66.11% | 1.66x | ✅ | +| `hexbytes_new[alternating 0xaa/0x55]` | 4.354281896842732e-05 | 2.6416438015906693e-05 | 39.33% | 64.83% | 1.65x | ✅ | +| `hexbytes_new[ascii sentence]` | 4.312299561191494e-05 | 2.6484634693788167e-05 | 38.58% | 62.82% | 1.63x | ✅ | +| `hexbytes_new[b'']` | 4.2152835637097806e-05 | 2.5284057179679503e-05 | 40.02% | 66.72% | 1.67x | ✅ | +| `hexbytes_new[b'\\x00'*32]` | 4.336451790986668e-05 | 2.635797873913242e-05 | 39.22% | 64.52% | 1.65x | ✅ | +| `hexbytes_new[b'\\x00\\xff\\x00\\xff']` | 4.286373624264335e-05 | 2.6259770200542067e-05 | 38.74% | 63.23% | 1.63x | ✅ | +| `hexbytes_new[b'\\x01'*100]` | 4.330684581547887e-05 | 2.675745215537249e-05 | 38.21% | 61.85% | 1.62x | ✅ | +| `hexbytes_new[b'\\x01'*2048]` | 5.6128810407512204e-05 | 3.912339990271881e-05 | 30.30% | 43.47% | 1.43x | ✅ | +| `hexbytes_new[b'\\x01\\x02\\x03']` | 4.2929157612584444e-05 | 2.61001821521611e-05 | 39.20% | 64.48% | 1.64x | ✅ | +| `hexbytes_new[b'\\x10\\x20\\x30\\x40\\x50']` | 4.3407519670143946e-05 | 2.597213039262449e-05 | 40.17% | 67.13% | 1.67x | ✅ | +| `hexbytes_new[b'\\x7f'*8]` | 4.2517448491608834e-05 | 2.617243936818634e-05 | 38.44% | 62.45% | 1.62x | ✅ | +| `hexbytes_new[b'\\x80'*8]` | 4.289828989332265e-05 | 2.5947345279386856e-05 | 39.51% | 65.33% | 1.65x | ✅ | +| `hexbytes_new[b'\\xde\\xad\\xbe\\xef']` | 4.356827596535527e-05 | 2.613323389082877e-05 | 40.02% | 66.72% | 1.67x | ✅ | +| `hexbytes_new[b'\\xff'*64]` | 4.172100721820488e-05 | 2.6787940839330786e-05 | 35.79% | 55.75% | 1.56x | ✅ | +| `hexbytes_new[b'a'*1024]` | 5.1019182237996924e-05 | 3.310481681965658e-05 | 35.11% | 54.11% | 1.54x | ✅ | +| `hexbytes_new[b'abc']` | 4.2440613873431844e-05 | 2.6034690509894992e-05 | 38.66% | 63.02% | 1.63x | ✅ | +| `hexbytes_new[bytearray(0-9)]` | 6.970813439963739e-05 | 3.719664475122067e-05 | 46.64% | 87.40% | 1.87x | ✅ | +| `hexbytes_new[bytearray(4-byte pattern)]` | 6.970846486889084e-05 | 3.885470384648831e-05 | 44.26% | 79.41% | 1.79x | ✅ | +| `hexbytes_new[bytearray(all byte values)]` | 6.941631413474463e-05 | 3.833721049778523e-05 | 44.77% | 81.07% | 1.81x | ✅ | +| `hexbytes_new[bytearray(alternating 0x00/0xff)]` | 6.805770772453928e-05 | 3.801313540360703e-05 | 44.15% | 79.04% | 1.79x | ✅ | +| `hexbytes_new[bytearray(alternating 0xaa/0x55)]` | 6.90768099303549e-05 | 3.796775562541672e-05 | 45.04% | 81.94% | 1.82x | ✅ | +| `hexbytes_new[bytearray(ascii sentence)]` | 6.965189739410647e-05 | 3.726624366115849e-05 | 46.50% | 86.90% | 1.87x | ✅ | +| `hexbytes_new[bytearray(b'')]` | 6.775240273081897e-05 | 3.538977516035628e-05 | 47.77% | 91.45% | 1.91x | ✅ | +| `hexbytes_new[bytearray(b'\\x00'*32)]` | 6.983471392448371e-05 | 3.6971884609298236e-05 | 47.06% | 88.89% | 1.89x | ✅ | +| `hexbytes_new[bytearray(b'\\x00\\xff\\x00\\xff')]` | 6.97493531307348e-05 | 3.773981397671745e-05 | 45.89% | 84.82% | 1.85x | ✅ | +| `hexbytes_new[bytearray(b'\\x01'*100)]` | 7.037082855316753e-05 | 3.837815996964463e-05 | 45.46% | 83.36% | 1.83x | ✅ | +| `hexbytes_new[bytearray(b'\\x01'*2048)]` | 9.060026917118623e-05 | 5.5692310929631646e-05 | 38.53% | 62.68% | 1.63x | ✅ | +| `hexbytes_new[bytearray(b'\\x01\\x02\\x03')]` | 6.946552137721825e-05 | 3.790164765100416e-05 | 45.44% | 83.28% | 1.83x | ✅ | +| `hexbytes_new[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 6.93743376612542e-05 | 3.8271792710677156e-05 | 44.83% | 81.27% | 1.81x | ✅ | +| `hexbytes_new[bytearray(b'\\x7f'*8)]` | 6.923713105893634e-05 | 3.761470069718089e-05 | 45.67% | 84.07% | 1.84x | ✅ | +| `hexbytes_new[bytearray(b'\\x80'*8)]` | 6.897039304319232e-05 | 3.7447489753324534e-05 | 45.70% | 84.18% | 1.84x | ✅ | +| `hexbytes_new[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 6.962534111419634e-05 | 3.770667377618231e-05 | 45.84% | 84.65% | 1.85x | ✅ | +| `hexbytes_new[bytearray(b'\\xff'*64)]` | 7.021056949485115e-05 | 3.8508887289211266e-05 | 45.15% | 82.32% | 1.82x | ✅ | +| `hexbytes_new[bytearray(b'a'*1024)]` | 8.496938412065207e-05 | 5.059700542122202e-05 | 40.45% | 67.93% | 1.68x | ✅ | +| `hexbytes_new[bytearray(b'abc')]` | 6.884329304829434e-05 | 3.840619568508685e-05 | 44.21% | 79.25% | 1.79x | ✅ | +| `hexbytes_new[bytearray(long alternating)]` | 8.440338861360044e-05 | 5.012104799376672e-05 | 40.62% | 68.40% | 1.68x | ✅ | +| `hexbytes_new[bytearray(mixed pattern)]` | 6.873307577655587e-05 | 3.8305960634412986e-05 | 44.27% | 79.43% | 1.79x | ✅ | +| `hexbytes_new[bytearray(multiples of 0x10)]` | 6.921225604098673e-05 | 3.7229421649516645e-05 | 46.21% | 85.91% | 1.86x | ✅ | +| `hexbytes_new[bytearray(palindrome ascii)]` | 6.93855133482087e-05 | 3.7849552744185434e-05 | 45.45% | 83.32% | 1.83x | ✅ | +| `hexbytes_new[bytearray(palindrome numeric)]` | 6.979341347497555e-05 | 3.763240799590082e-05 | 46.08% | 85.46% | 1.85x | ✅ | +| `hexbytes_new[bytearray(palindrome)]` | 7.020136996698736e-05 | 3.77985894345203e-05 | 46.16% | 85.72% | 1.86x | ✅ | +| `hexbytes_new[bytearray(repeated 0-9)]` | 6.994889881439206e-05 | 3.812529913574517e-05 | 45.50% | 83.47% | 1.83x | ✅ | +| `hexbytes_new[bytearray(single 0xff)]` | 6.836217284182861e-05 | 3.808100435269928e-05 | 44.30% | 79.52% | 1.80x | ✅ | +| `hexbytes_new[bytearray(single null byte)]` | 6.935694739514334e-05 | 3.78242107875361e-05 | 45.46% | 83.37% | 1.83x | ✅ | +| `hexbytes_new[bytearray(two patterns)]` | 6.97437302110927e-05 | 3.845997863189549e-05 | 44.86% | 81.34% | 1.81x | ✅ | +| `hexbytes_new[long alternating]` | 5.091455098603236e-05 | 3.301766039444292e-05 | 35.15% | 54.20% | 1.54x | ✅ | +| `hexbytes_new[memoryview(0-9)]` | 8.343104370699861e-05 | 4.379877314171106e-05 | 47.50% | 90.49% | 1.90x | ✅ | +| `hexbytes_new[memoryview(4-byte pattern)]` | 8.41042181017874e-05 | 4.420950625898282e-05 | 47.43% | 90.24% | 1.90x | ✅ | +| `hexbytes_new[memoryview(all byte values)]` | 8.267996448740742e-05 | 4.449823822126817e-05 | 46.18% | 85.81% | 1.86x | ✅ | +| `hexbytes_new[memoryview(alternating 0x00/0xff)]` | 8.172730304613137e-05 | 4.330329300998063e-05 | 47.01% | 88.73% | 1.89x | ✅ | +| `hexbytes_new[memoryview(alternating 0xaa/0x55)]` | 8.214762799605057e-05 | 4.3247803757400135e-05 | 47.35% | 89.95% | 1.90x | ✅ | +| `hexbytes_new[memoryview(ascii sentence)]` | 8.296310363068434e-05 | 4.300026322622829e-05 | 48.17% | 92.94% | 1.93x | ✅ | +| `hexbytes_new[memoryview(b'')]` | 8.153908291327685e-05 | 4.020269118679214e-05 | 50.70% | 102.82% | 2.03x | ✅ | +| `hexbytes_new[memoryview(b'\\x00'*32)]` | 8.351918135323528e-05 | 4.344130819721966e-05 | 47.99% | 92.26% | 1.92x | ✅ | +| `hexbytes_new[memoryview(b'\\x00\\xff\\x00\\xff')]` | 8.418686631227915e-05 | 4.265831373366244e-05 | 49.33% | 97.35% | 1.97x | ✅ | +| `hexbytes_new[memoryview(b'\\x01'*100)]` | 8.259019703656104e-05 | 4.330114728659343e-05 | 47.57% | 90.73% | 1.91x | ✅ | +| `hexbytes_new[memoryview(b'\\x01'*2048)]` | 0.00010499538549097385 | 6.171489220806384e-05 | 41.22% | 70.13% | 1.70x | ✅ | +| `hexbytes_new[memoryview(b'\\x01\\x02\\x03')]` | 8.473542485608866e-05 | 4.3255419444745306e-05 | 48.95% | 95.90% | 1.96x | ✅ | +| `hexbytes_new[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 8.336554980933414e-05 | 4.258888556224709e-05 | 48.91% | 95.74% | 1.96x | ✅ | +| `hexbytes_new[memoryview(b'\\x7f'*8)]` | 8.266674605054027e-05 | 4.352092062291172e-05 | 47.35% | 89.95% | 1.90x | ✅ | +| `hexbytes_new[memoryview(b'\\x80'*8)]` | 8.269438721119731e-05 | 4.3393891248270046e-05 | 47.52% | 90.57% | 1.91x | ✅ | +| `hexbytes_new[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 8.166555396946981e-05 | 4.3087162172112174e-05 | 47.24% | 89.54% | 1.90x | ✅ | +| `hexbytes_new[memoryview(b'\\xff'*64)]` | 8.188913998927564e-05 | 4.3585464327042605e-05 | 46.78% | 87.88% | 1.88x | ✅ | +| `hexbytes_new[memoryview(b'a'*1024)]` | 9.674288086752237e-05 | 5.642464994734783e-05 | 41.68% | 71.45% | 1.71x | ✅ | +| `hexbytes_new[memoryview(b'abc')]` | 8.184776197516628e-05 | 4.388500023831169e-05 | 46.38% | 86.51% | 1.87x | ✅ | +| `hexbytes_new[memoryview(long alternating)]` | 9.845307298160714e-05 | 5.516781647069556e-05 | 43.97% | 78.46% | 1.78x | ✅ | +| `hexbytes_new[memoryview(mixed pattern)]` | 8.287099922051888e-05 | 4.374904406483315e-05 | 47.21% | 89.42% | 1.89x | ✅ | +| `hexbytes_new[memoryview(multiples of 0x10)]` | 8.482230887441657e-05 | 4.3794560821620976e-05 | 48.37% | 93.68% | 1.94x | ✅ | +| `hexbytes_new[memoryview(palindrome ascii)]` | 8.254455598022554e-05 | 4.3318527663746757e-05 | 47.52% | 90.55% | 1.91x | ✅ | +| `hexbytes_new[memoryview(palindrome numeric)]` | 8.294892521197925e-05 | 4.2900149612502955e-05 | 48.28% | 93.35% | 1.93x | ✅ | +| `hexbytes_new[memoryview(palindrome)]` | 8.236613231441595e-05 | 4.261015625269018e-05 | 48.27% | 93.30% | 1.93x | ✅ | +| `hexbytes_new[memoryview(repeated 0-9)]` | 8.13034657610096e-05 | 4.356140340970168e-05 | 46.42% | 86.64% | 1.87x | ✅ | +| `hexbytes_new[memoryview(single 0xff)]` | 8.313414886641096e-05 | 4.353548062335253e-05 | 47.63% | 90.96% | 1.91x | ✅ | +| `hexbytes_new[memoryview(single null byte)]` | 8.320984127848304e-05 | 4.320943731756206e-05 | 48.07% | 92.57% | 1.93x | ✅ | +| `hexbytes_new[memoryview(two patterns)]` | 8.356721980584258e-05 | 4.366879392941981e-05 | 47.74% | 91.37% | 1.91x | ✅ | +| `hexbytes_new[mixed pattern]` | 4.365951706041104e-05 | 2.664868008221551e-05 | 38.96% | 63.83% | 1.64x | ✅ | +| `hexbytes_new[multiples of 0x10]` | 4.3399708155713644e-05 | 2.6080858951120992e-05 | 39.91% | 66.40% | 1.66x | ✅ | +| `hexbytes_new[palindrome ascii]` | 4.265739922269339e-05 | 2.6130617727231734e-05 | 38.74% | 63.25% | 1.63x | ✅ | +| `hexbytes_new[palindrome numeric]` | 4.341127940571113e-05 | 2.6188895363662265e-05 | 39.67% | 65.76% | 1.66x | ✅ | +| `hexbytes_new[palindrome]` | 4.360560786363201e-05 | 2.610195980308686e-05 | 40.14% | 67.06% | 1.67x | ✅ | +| `hexbytes_new[repeated 0-9]` | 4.294454729310883e-05 | 2.6918413322544063e-05 | 37.32% | 59.54% | 1.60x | ✅ | +| `hexbytes_new[single 0xff]` | 4.3028281062969125e-05 | 2.5415749210429996e-05 | 40.93% | 69.30% | 1.69x | ✅ | +| `hexbytes_new[single null byte]` | 4.2227135327196064e-05 | 2.5446633689403234e-05 | 39.74% | 65.94% | 1.66x | ✅ | +| `hexbytes_new[two patterns]` | 4.34895086048685e-05 | 2.7242135222994092e-05 | 37.36% | 59.64% | 1.60x | ✅ | +| `hexbytes_repr[0-9]` | 3.0085077687269938e-05 | 1.4763183333542614e-05 | 50.93% | 103.78% | 2.04x | ✅ | +| `hexbytes_repr[4-byte pattern]` | 0.00012082995521046726 | 4.247989233825196e-05 | 64.84% | 184.44% | 2.84x | ✅ | +| `hexbytes_repr[all byte values]` | 0.00012132927034129566 | 4.224082483310528e-05 | 65.18% | 187.23% | 2.87x | ✅ | +| `hexbytes_repr[alternating 0x00/0xff]` | 4.880782588815023e-05 | 2.053150146379133e-05 | 57.93% | 137.72% | 2.38x | ✅ | +| `hexbytes_repr[alternating 0xaa/0x55]` | 4.8893547292306866e-05 | 2.0540948166084265e-05 | 57.99% | 138.03% | 2.38x | ✅ | +| `hexbytes_repr[ascii sentence]` | 4.066289942803566e-05 | 1.796571363834692e-05 | 55.82% | 126.34% | 2.26x | ✅ | +| `hexbytes_repr[b'']` | 2.167076116507663e-05 | 1.2426634578263107e-05 | 42.66% | 74.39% | 1.74x | ✅ | +| `hexbytes_repr[b'\\x00'*32]` | 3.6978156856528455e-05 | 1.6820786979005185e-05 | 54.51% | 119.84% | 2.20x | ✅ | +| `hexbytes_repr[b'\\x00\\xff\\x00\\xff']` | 2.664408470696132e-05 | 1.4190595718228422e-05 | 46.74% | 87.76% | 1.88x | ✅ | +| `hexbytes_repr[b'\\x01'*100]` | 6.205689746123589e-05 | 2.3566688921328196e-05 | 62.02% | 163.32% | 2.63x | ✅ | +| `hexbytes_repr[b'\\x01'*2048]` | 0.000759706957615766 | 0.0002229783522203603 | 70.65% | 240.71% | 3.41x | ✅ | +| `hexbytes_repr[b'\\x01\\x02\\x03']` | 2.640220528730324e-05 | 1.4056501138677934e-05 | 46.76% | 87.83% | 1.88x | ✅ | +| `hexbytes_repr[b'\\x10\\x20\\x30\\x40\\x50']` | 2.7163056470863583e-05 | 1.4030082481912044e-05 | 48.35% | 93.61% | 1.94x | ✅ | +| `hexbytes_repr[b'\\x7f'*8]` | 2.8608318907790686e-05 | 1.4272289734342924e-05 | 50.11% | 100.45% | 2.00x | ✅ | +| `hexbytes_repr[b'\\x80'*8]` | 2.8462348432509383e-05 | 1.4324060154807807e-05 | 49.67% | 98.70% | 1.99x | ✅ | +| `hexbytes_repr[b'\\xde\\xad\\xbe\\xef']` | 2.6470958989230182e-05 | 1.4140883491206113e-05 | 46.58% | 87.19% | 1.87x | ✅ | +| `hexbytes_repr[b'\\xff'*64]` | 4.910823655710094e-05 | 1.995576700803032e-05 | 59.36% | 146.09% | 2.46x | ✅ | +| `hexbytes_repr[b'a'*1024]` | 0.00039537763499463823 | 0.00011960565652989466 | 69.75% | 230.57% | 3.31x | ✅ | +| `hexbytes_repr[b'abc']` | 2.6392488669775246e-05 | 1.4040542978001046e-05 | 46.80% | 87.97% | 1.88x | ✅ | +| `hexbytes_repr[long alternating]` | 0.00039865544817419604 | 0.00012312532385376875 | 69.11% | 223.78% | 3.24x | ✅ | +| `hexbytes_repr[mixed pattern]` | 0.00010009207864616417 | 3.45447584075179e-05 | 65.49% | 189.75% | 2.90x | ✅ | +| `hexbytes_repr[multiples of 0x10]` | 2.9131503541047708e-05 | 1.4760664743588338e-05 | 49.33% | 97.36% | 1.97x | ✅ | +| `hexbytes_repr[palindrome ascii]` | 2.9056123105044568e-05 | 1.4209752397260852e-05 | 51.10% | 104.48% | 2.04x | ✅ | +| `hexbytes_repr[palindrome numeric]` | 2.8456189237168856e-05 | 1.4187919941213347e-05 | 50.14% | 100.57% | 2.01x | ✅ | +| `hexbytes_repr[palindrome]` | 3.2162296530324446e-05 | 1.5902854521833594e-05 | 50.55% | 102.24% | 2.02x | ✅ | +| `hexbytes_repr[repeated 0-9]` | 6.251018046011762e-05 | 2.3739894318188736e-05 | 62.02% | 163.31% | 2.63x | ✅ | +| `hexbytes_repr[single 0xff]` | 2.729458757256124e-05 | 1.3686243265365777e-05 | 49.86% | 99.43% | 1.99x | ✅ | +| `hexbytes_repr[single null byte]` | 2.7277924098528845e-05 | 1.3623806187906993e-05 | 50.06% | 100.22% | 2.00x | ✅ | +| `hexbytes_repr[two patterns]` | 4.913709615529845e-05 | 2.0473448418038218e-05 | 58.33% | 140.00% | 2.40x | ✅ | +| `hexbytes_to_0x_hex[0-9]` | 1.5817572055224047e-05 | 1.4167815843374486e-05 | 10.43% | 11.64% | 1.12x | ✅ | +| `hexbytes_to_0x_hex[4-byte pattern]` | 4.270800446003841e-05 | 4.1060057047062125e-05 | 3.86% | 4.01% | 1.04x | ✅ | +| `hexbytes_to_0x_hex[all byte values]` | 4.268829509344083e-05 | 4.128079684078993e-05 | 3.30% | 3.41% | 1.03x | ✅ | +| `hexbytes_to_0x_hex[alternating 0x00/0xff]` | 2.089135436471792e-05 | 1.918752189002066e-05 | 8.16% | 8.88% | 1.09x | ✅ | +| `hexbytes_to_0x_hex[alternating 0xaa/0x55]` | 2.1028141103805553e-05 | 1.9309891481896873e-05 | 8.17% | 8.90% | 1.09x | ✅ | +| `hexbytes_to_0x_hex[ascii sentence]` | 1.927172641731634e-05 | 1.6997082885086754e-05 | 11.80% | 13.38% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[b'']` | 1.055048106143779e-05 | 1.175789840046412e-05 | -11.44% | -10.27% | 0.90x | ❌ | +| `hexbytes_to_0x_hex[b'\\x00'*32]` | 1.820402827153615e-05 | 1.62981526977399e-05 | 10.47% | 11.69% | 1.12x | ✅ | +| `hexbytes_to_0x_hex[b'\\x00\\xff\\x00\\xff']` | 1.5253493744912151e-05 | 1.3226184002678508e-05 | 13.29% | 15.33% | 1.15x | ✅ | +| `hexbytes_to_0x_hex[b'\\x01'*100]` | 2.5598919540125475e-05 | 2.317315911344985e-05 | 9.48% | 10.47% | 1.10x | ✅ | +| `hexbytes_to_0x_hex[b'\\x01'*2048]` | 0.000223192332210511 | 0.0002221630271881458 | 0.46% | 0.46% | 1.00x | ✅ | +| `hexbytes_to_0x_hex[b'\\x01\\x02\\x03']` | 1.518403526497681e-05 | 1.3167872432175693e-05 | 13.28% | 15.31% | 1.15x | ✅ | +| `hexbytes_to_0x_hex[b'\\x10\\x20\\x30\\x40\\x50']` | 1.5331006214378414e-05 | 1.3630109909149088e-05 | 11.09% | 12.48% | 1.12x | ✅ | +| `hexbytes_to_0x_hex[b'\\x7f'*8]` | 1.570095454939299e-05 | 1.3602257191001543e-05 | 13.37% | 15.43% | 1.15x | ✅ | +| `hexbytes_to_0x_hex[b'\\x80'*8]` | 1.5616888054544002e-05 | 1.3851365294062877e-05 | 11.31% | 12.75% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[b'\\xde\\xad\\xbe\\xef']` | 1.5288208181027084e-05 | 1.3202088701564096e-05 | 13.65% | 15.80% | 1.16x | ✅ | +| `hexbytes_to_0x_hex[b'\\xff'*64]` | 2.0923809309158802e-05 | 1.9201263546957865e-05 | 8.23% | 8.97% | 1.09x | ✅ | +| `hexbytes_to_0x_hex[b'a'*1024]` | 0.00012269421410042474 | 0.00012204349938594545 | 0.53% | 0.53% | 1.01x | ✅ | +| `hexbytes_to_0x_hex[b'abc']` | 1.5186216785018308e-05 | 1.3352652045592194e-05 | 12.07% | 13.73% | 1.14x | ✅ | +| `hexbytes_to_0x_hex[long alternating]` | 0.0001224083723675288 | 0.0001226601147864015 | -0.21% | -0.21% | 1.00x | ❌ | +| `hexbytes_to_0x_hex[mixed pattern]` | 3.5861840935697e-05 | 3.326413221628714e-05 | 7.24% | 7.81% | 1.08x | ✅ | +| `hexbytes_to_0x_hex[multiples of 0x10]` | 1.589171012001429e-05 | 1.386710407139982e-05 | 12.74% | 14.60% | 1.15x | ✅ | +| `hexbytes_to_0x_hex[palindrome ascii]` | 1.5427591014245552e-05 | 1.3375219514129835e-05 | 13.30% | 15.34% | 1.15x | ✅ | +| `hexbytes_to_0x_hex[palindrome numeric]` | 1.5210105011876948e-05 | 1.322108983113795e-05 | 13.08% | 15.04% | 1.15x | ✅ | +| `hexbytes_to_0x_hex[palindrome]` | 1.680089082357137e-05 | 1.5003721404406791e-05 | 10.70% | 11.98% | 1.12x | ✅ | +| `hexbytes_to_0x_hex[repeated 0-9]` | 2.5615827905068646e-05 | 2.316603156317615e-05 | 9.56% | 10.57% | 1.11x | ✅ | +| `hexbytes_to_0x_hex[single 0xff]` | 1.497061842896928e-05 | 1.313653476582995e-05 | 12.25% | 13.96% | 1.14x | ✅ | +| `hexbytes_to_0x_hex[single null byte]` | 1.5034890149149935e-05 | 1.2837679456529806e-05 | 14.61% | 17.12% | 1.17x | ✅ | +| `hexbytes_to_0x_hex[two patterns]` | 2.1302926568550656e-05 | 1.9231730373558392e-05 | 9.72% | 10.77% | 1.11x | ✅ | From 05238a417551161d781b4082f4e8ee3ff633df97 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Mon, 13 Oct 2025 23:48:42 -0400 Subject: [PATCH 89/98] feat(cicd): cache .mypy_cache for runners (#33) --- .github/workflows/benchmark.yaml | 18 + .github/workflows/codspeed.yaml | 10 + .github/workflows/compile.yaml | 6 + .github/workflows/release.yaml | 6 + .github/workflows/tox.yaml | 7 + benchmarks/results/_utils.md | 276 ++++----- benchmarks/results/main.md | 966 +++++++++++++++---------------- 7 files changed, 668 insertions(+), 621 deletions(-) diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml index 95a97d4..7d2a6be 100644 --- a/.github/workflows/benchmark.yaml +++ b/.github/workflows/benchmark.yaml @@ -27,6 +27,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 + - name: Set up Python uses: actions/setup-python@v6 with: @@ -35,25 +36,39 @@ jobs: cache-dependency-path: | setup.py pyproject.toml + + - name: Cache .mypy_cache + uses: actions/cache@v4 + with: + path: .mypy_cache + key: mypy-cache-${{ runner.os }}-x64-${{ hashFiles('**/*.py', 'pyproject.toml') }} + - name: Install dependencies run: | python -m pip install --upgrade pip pip install .[dev] pytest-codspeed pytest-benchmark + - name: Remove Python files from test env run: rm -r faster_hexbytes + - name: Run Pytest Benchmark & Save Output run: pytest --benchmark-only --benchmark-json=benchmark.json benchmarks/ + - name: Upload Pytest Benchmark Results uses: actions/upload-artifact@v4 with: name: pytest-benchmark-results path: benchmark.json + - name: Parse Pytest Benchmark Output run: python scripts/benchmark/parse_benchmark_output.py benchmark.json pytest_benchmark_results.json + - name: Compare Pytest Benchmark Results run: python scripts/benchmark/compare_benchmark_results.py pytest_benchmark_results.json pytest_benchmark_diff.json + - name: Generate Markdown Benchmark Results run: python scripts/benchmark/generate_benchmark_markdown.py + - name: Commit and Push Markdown Benchmark Results continue-on-error: true run: | @@ -70,16 +85,19 @@ jobs: fi env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Upload Markdown Benchmark Results uses: actions/upload-artifact@v4 with: name: markdown-benchmark-results path: benchmarks/results/*.md + - name: Upload Pytest Benchmark Diff uses: actions/upload-artifact@v4 with: name: pytest-benchmark-diff path: pytest_benchmark_diff.json + - name: Post Pytest Benchmark Diff as PR Comment uses: actions/github-script@v8 with: diff --git a/.github/workflows/codspeed.yaml b/.github/workflows/codspeed.yaml index 7f0c2ff..0ef2bbc 100644 --- a/.github/workflows/codspeed.yaml +++ b/.github/workflows/codspeed.yaml @@ -27,6 +27,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 + - name: Set up Python uses: actions/setup-python@v6 with: @@ -35,12 +36,21 @@ jobs: cache-dependency-path: | setup.py pyproject.toml + + - name: Cache .mypy_cache + uses: actions/cache@v4 + with: + path: .mypy_cache + key: mypy-cache-${{ runner.os }}-x64-${{ hashFiles('**/*.py', 'pyproject.toml') }} + - name: Install dependencies run: | python -m pip install --upgrade pip pip install .[dev] pytest-codspeed + - name: Remove Python files from test env run: rm -r faster_hexbytes + - name: Run CodSpeed uses: CodSpeedHQ/action@v4 with: diff --git a/.github/workflows/compile.yaml b/.github/workflows/compile.yaml index a39c0b2..c625eca 100644 --- a/.github/workflows/compile.yaml +++ b/.github/workflows/compile.yaml @@ -36,6 +36,12 @@ jobs: cache-dependency-path: | setup.py pyproject.toml + + - name: Cache .mypy_cache + uses: actions/cache@v4 + with: + path: .mypy_cache + key: mypy-cache-${{ runner.os }}-x64-${{ hashFiles('**/*.py', 'pyproject.toml') }} - name: Install Faster Hexbytes env: diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 2c99d41..3e3a9cb 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -95,6 +95,12 @@ jobs: - name: Install cibuildwheel run: | python -m pip install --upgrade pip setuptools wheel cibuildwheel + + - name: Cache .mypy_cache + uses: actions/cache@v4 + with: + path: .mypy_cache + key: mypy-cache-${{ runner.os }}-x64-${{ hashFiles('**/*.py', 'pyproject.toml') }} - name: Build wheels env: diff --git a/.github/workflows/tox.yaml b/.github/workflows/tox.yaml index 2665b2b..ec97fa9 100644 --- a/.github/workflows/tox.yaml +++ b/.github/workflows/tox.yaml @@ -93,6 +93,13 @@ jobs: run: | python -m pip install --upgrade pip python -m pip install tox + + - name: Cache .mypy_cache + if: ${{ env.IS_UBUNTU_32BIT != 'true' }} + uses: actions/cache@v4 + with: + path: .mypy_cache + key: mypy-cache-${{ runner.os }}-${{ matrix.architecture }}-${{ hashFiles('**/*.py', 'pyproject.toml') }} - name: Cache tox environment and hypothesis examples if: ${{ env.IS_UBUNTU_32BIT != 'true' }} diff --git a/benchmarks/results/_utils.md b/benchmarks/results/_utils.md index 0ca8922..325a782 100644 --- a/benchmarks/results/_utils.md +++ b/benchmarks/results/_utils.md @@ -1,141 +1,141 @@ -#### [faster_hexbytes._utils](https://github.com/BobTheBuidler/faster-hexbytes/blob/master/faster_hexbytes/_utils.py) - [view benchmarks](https://github.com/BobTheBuidler/faster-hexbytes/blob/master/benchmarks/test__utils_benchmarks.py) +#### [faster_hexbytes._utils](https://github.com/BobTheBuidler/faster-hexbytes/blob/BobTheBuidler-patch-1/faster_hexbytes/_utils.py) - [view benchmarks](https://github.com/BobTheBuidler/faster-hexbytes/blob/BobTheBuidler-patch-1/benchmarks/test__utils_benchmarks.py) | Function | Reference Mean | Faster Mean | % Change | Speedup (%) | x Faster | Faster | |----------|---------------|-------------|----------|-------------|----------|--------| -| `hexstr_to_bytes['']` | 1.7631697254868227e-05 | 1.091621468053003e-05 | 38.09% | 61.52% | 1.62x | ✅ | -| `hexstr_to_bytes['0x'+'0'*128]` | 3.460504502568348e-05 | 2.1046592576001717e-05 | 39.18% | 64.42% | 1.64x | ✅ | -| `hexstr_to_bytes['0x'+'00'*64]` | 3.43840179351816e-05 | 2.0977258416815523e-05 | 38.99% | 63.91% | 1.64x | ✅ | -| `hexstr_to_bytes['0x'+'00ff'*16]` | 3.087271591788051e-05 | 1.836878200251362e-05 | 40.50% | 68.07% | 1.68x | ✅ | -| `hexstr_to_bytes['0x'+'0123456789abcdef'*8]` | 3.441267325691157e-05 | 2.1213740156999538e-05 | 38.35% | 62.22% | 1.62x | ✅ | -| `hexstr_to_bytes['0x'+'1'*64]` | 3.069728260757906e-05 | 1.843416914702672e-05 | 39.95% | 66.52% | 1.67x | ✅ | -| `hexstr_to_bytes['0x'+'1234567890abcdef'*8]` | 3.4705658948592266e-05 | 2.1239795627238952e-05 | 38.80% | 63.40% | 1.63x | ✅ | -| `hexstr_to_bytes['0x'+'a'*128]` | 3.507577275966717e-05 | 2.1068135344714727e-05 | 39.94% | 66.49% | 1.66x | ✅ | -| `hexstr_to_bytes['0x'+'a1b2c3d4'*8]` | 3.1473810848775834e-05 | 1.8351794569315014e-05 | 41.69% | 71.50% | 1.72x | ✅ | -| `hexstr_to_bytes['0x'+'b'*2048]` | 0.000137475192764233 | 0.00011832177729459453 | 13.93% | 16.19% | 1.16x | ✅ | -| `hexstr_to_bytes['0x'+'badc0ffee0ddf00d'*4]` | 3.081088360884931e-05 | 1.8322207368514194e-05 | 40.53% | 68.16% | 1.68x | ✅ | -| `hexstr_to_bytes['0x'+'beef'*16]` | 3.07422058647435e-05 | 1.8287685662583144e-05 | 40.51% | 68.10% | 1.68x | ✅ | -| `hexstr_to_bytes['0x'+'c'*1024]` | 8.963047737950764e-05 | 7.093637113695229e-05 | 20.86% | 26.35% | 1.26x | ✅ | -| `hexstr_to_bytes['0x'+'cafebabe'*8]` | 3.0891432577301886e-05 | 1.817461003574543e-05 | 41.17% | 69.97% | 1.70x | ✅ | -| `hexstr_to_bytes['0x'+'d'*512]` | 5.734958399242955e-05 | 4.0968799912746086e-05 | 28.56% | 39.98% | 1.40x | ✅ | -| `hexstr_to_bytes['0x'+'dead'*16]` | 3.073137102309844e-05 | 1.8311346368225762e-05 | 40.41% | 67.83% | 1.68x | ✅ | -| `hexstr_to_bytes['0x'+'e'*256]` | 4.354151261419979e-05 | 2.7730003809733677e-05 | 36.31% | 57.02% | 1.57x | ✅ | -| `hexstr_to_bytes['0x'+'f'*128]` | 3.411709158706449e-05 | 2.102833320708899e-05 | 38.36% | 62.24% | 1.62x | ✅ | -| `hexstr_to_bytes['0x'+'f'*64]` | 3.0467742610229984e-05 | 1.8344953673908825e-05 | 39.79% | 66.08% | 1.66x | ✅ | -| `hexstr_to_bytes['0x'+'facefeed'*8]` | 3.072038468758227e-05 | 1.8219111278417548e-05 | 40.69% | 68.62% | 1.69x | ✅ | -| `hexstr_to_bytes['0x'+'ff'*32]` | 3.108559217921719e-05 | 1.8452550538204342e-05 | 40.64% | 68.46% | 1.68x | ✅ | -| `hexstr_to_bytes['0x'+'ff00'*16]` | 3.0510658597786304e-05 | 1.8248159132963428e-05 | 40.19% | 67.20% | 1.67x | ✅ | -| `hexstr_to_bytes['0x']` | 2.2412686940179207e-05 | 1.0717849114659657e-05 | 52.18% | 109.12% | 2.09x | ✅ | -| `hexstr_to_bytes['0x0']` | 3.1251518929035074e-05 | 1.8823000842386368e-05 | 39.77% | 66.03% | 1.66x | ✅ | -| `hexstr_to_bytes['0x1']` | 3.11919000369293e-05 | 1.866611350630668e-05 | 40.16% | 67.10% | 1.67x | ✅ | -| `hexstr_to_bytes['0x1234']` | 2.8052765027645127e-05 | 1.6092020099448603e-05 | 42.64% | 74.33% | 1.74x | ✅ | -| `hexstr_to_bytes['0xCAFEBABE']` | 2.8548800769874e-05 | 1.603839898990126e-05 | 43.82% | 78.00% | 1.78x | ✅ | -| `hexstr_to_bytes['0xabcdef']` | 2.8717529683732944e-05 | 1.6165310695849303e-05 | 43.71% | 77.65% | 1.78x | ✅ | -| `hexstr_to_bytes['0xdeadbeef']` | 2.8457086025863898e-05 | 1.5995698544778376e-05 | 43.79% | 77.90% | 1.78x | ✅ | -| `hexstr_to_bytes['deadbeef']` | 2.2257481830379652e-05 | 1.4133437429091435e-05 | 36.50% | 57.48% | 1.57x | ✅ | -| `to_bytes['']` | 2.765740249333062e-05 | 1.1901871422470663e-05 | 56.97% | 132.38% | 2.32x | ✅ | -| `to_bytes['0x'+'00'*64]` | 4.646955104933755e-05 | 2.2324951042546773e-05 | 51.96% | 108.15% | 2.08x | ✅ | -| `to_bytes['0x'+'a'*128]` | 4.684962570096932e-05 | 2.2442981027032375e-05 | 52.10% | 108.75% | 2.09x | ✅ | -| `to_bytes['0x'+'ff'*32]` | 4.3583710346506605e-05 | 2.033952243872824e-05 | 53.33% | 114.28% | 2.14x | ✅ | -| `to_bytes['0x']` | 3.389490379243516e-05 | 1.2231788218340199e-05 | 63.91% | 177.11% | 2.77x | ✅ | -| `to_bytes['0x1234']` | 3.880579835708911e-05 | 1.7266811332742777e-05 | 55.50% | 124.74% | 2.25x | ✅ | -| `to_bytes['0xCAFEBABE']` | 4.0490154981887174e-05 | 1.7434025824165244e-05 | 56.94% | 132.25% | 2.32x | ✅ | -| `to_bytes['0xabcdef']` | 3.936844735204256e-05 | 1.7644349646383338e-05 | 55.18% | 123.12% | 2.23x | ✅ | -| `to_bytes['0xdeadbeef']` | 4.130083979251476e-05 | 1.746172318281109e-05 | 57.72% | 136.52% | 2.37x | ✅ | -| `to_bytes['abc']` | 3.6676121666827416e-05 | 1.924219021245015e-05 | 47.53% | 90.60% | 1.91x | ✅ | -| `to_bytes['deadbeef']` | 3.2123901789208605e-05 | 1.5130731992136517e-05 | 52.90% | 112.31% | 2.12x | ✅ | -| `to_bytes[0-9]` | 6.128806719107819e-06 | 3.4018753134086397e-06 | 44.49% | 80.16% | 1.80x | ✅ | -| `to_bytes[0]` | 7.263268368566597e-05 | 3.176434234273735e-05 | 56.27% | 128.66% | 2.29x | ✅ | -| `to_bytes[123456]` | 7.773043102282778e-05 | 3.6012911325402444e-05 | 53.67% | 115.84% | 2.16x | ✅ | -| `to_bytes[2**16]` | 7.775821154506235e-05 | 3.4643455384361994e-05 | 55.45% | 124.45% | 2.24x | ✅ | -| `to_bytes[2**256-1]` | 8.085161468450896e-05 | 3.8982111120450285e-05 | 51.79% | 107.41% | 2.07x | ✅ | -| `to_bytes[2**32]` | 7.976633493131837e-05 | 3.854280141026799e-05 | 51.68% | 106.96% | 2.07x | ✅ | -| `to_bytes[2**64]` | 7.965934143157059e-05 | 3.847738391589028e-05 | 51.70% | 107.03% | 2.07x | ✅ | -| `to_bytes[2**8]` | 7.759343341665132e-05 | 3.438625972140119e-05 | 55.68% | 125.65% | 2.26x | ✅ | -| `to_bytes[4-byte pattern]` | 6.184672956729293e-06 | 3.450719936324659e-06 | 44.21% | 79.23% | 1.79x | ✅ | -| `to_bytes[False]` | 2.0272890522406702e-05 | 4.17187869182503e-06 | 79.42% | 385.94% | 4.86x | ✅ | -| `to_bytes[True]` | 2.0337098319351452e-05 | 4.21817181904989e-06 | 79.26% | 382.13% | 4.82x | ✅ | -| `to_bytes[all byte values]` | 6.033850504195824e-06 | 3.452502531655811e-06 | 42.78% | 74.77% | 1.75x | ✅ | -| `to_bytes[alternating 0x00/0xff]` | 6.074190617381264e-06 | 3.3774857075854817e-06 | 44.40% | 79.84% | 1.80x | ✅ | -| `to_bytes[alternating 0xaa/0x55]` | 6.031660475919454e-06 | 3.4662354469314576e-06 | 42.53% | 74.01% | 1.74x | ✅ | -| `to_bytes[ascii sentence]` | 6.364708530748353e-06 | 3.596781719176758e-06 | 43.49% | 76.96% | 1.77x | ✅ | -| `to_bytes[b'']` | 5.814507665325926e-06 | 3.330422732627435e-06 | 42.72% | 74.59% | 1.75x | ✅ | -| `to_bytes[b'\\x00'*32]` | 5.952927265182257e-06 | 3.390708329220507e-06 | 43.04% | 75.57% | 1.76x | ✅ | -| `to_bytes[b'\\x00\\xff\\x00\\xff']` | 5.90897190018515e-06 | 3.4587349077796393e-06 | 41.47% | 70.84% | 1.71x | ✅ | -| `to_bytes[b'\\x01'*100]` | 6.20360648765304e-06 | 3.458023021612626e-06 | 44.26% | 79.40% | 1.79x | ✅ | -| `to_bytes[b'\\x01'*2048]` | 6.206646008047194e-06 | 3.4730449885178588e-06 | 44.04% | 78.71% | 1.79x | ✅ | -| `to_bytes[b'\\x01\\x02\\x03']` | 6.041078309225661e-06 | 3.497229283856193e-06 | 42.11% | 72.74% | 1.73x | ✅ | -| `to_bytes[b'\\x10\\x20\\x30\\x40\\x50']` | 6.1431279629040155e-06 | 3.5072234181205435e-06 | 42.91% | 75.16% | 1.75x | ✅ | -| `to_bytes[b'\\x7f'*8]` | 5.9445239552533105e-06 | 3.455990914844932e-06 | 41.86% | 72.01% | 1.72x | ✅ | -| `to_bytes[b'\\x80'*8]` | 6.0580837536454005e-06 | 3.4578818421453275e-06 | 42.92% | 75.20% | 1.75x | ✅ | -| `to_bytes[b'\\xde\\xad\\xbe\\xef']` | 5.948930336483419e-06 | 3.452870208184687e-06 | 41.96% | 72.29% | 1.72x | ✅ | -| `to_bytes[b'\\xff'*64]` | 5.910361596348655e-06 | 3.513758912809839e-06 | 40.55% | 68.21% | 1.68x | ✅ | -| `to_bytes[b'a'*1024]` | 5.940166977302666e-06 | 3.4543899667855758e-06 | 41.85% | 71.96% | 1.72x | ✅ | -| `to_bytes[b'abc']` | 5.665418129943538e-06 | 3.4920495727371732e-06 | 38.36% | 62.24% | 1.62x | ✅ | -| `to_bytes[bytearray(0-9)]` | 2.8720126266221423e-05 | 1.3848755721113967e-05 | 51.78% | 107.38% | 2.07x | ✅ | -| `to_bytes[bytearray(4-byte pattern)]` | 2.798375297400853e-05 | 1.3947081146633731e-05 | 50.16% | 100.64% | 2.01x | ✅ | -| `to_bytes[bytearray(all byte values)]` | 2.794317373426329e-05 | 1.373572727288353e-05 | 50.84% | 103.43% | 2.03x | ✅ | -| `to_bytes[bytearray(alternating 0x00/0xff)]` | 2.754027361310253e-05 | 1.3859532654303315e-05 | 49.68% | 98.71% | 1.99x | ✅ | -| `to_bytes[bytearray(alternating 0xaa/0x55)]` | 2.752330570679931e-05 | 1.3747071739416303e-05 | 50.05% | 100.21% | 2.00x | ✅ | -| `to_bytes[bytearray(ascii sentence)]` | 2.8016025511923314e-05 | 1.3966986142979778e-05 | 50.15% | 100.59% | 2.01x | ✅ | -| `to_bytes[bytearray(b'')]` | 2.6182079338905127e-05 | 1.2415538309528003e-05 | 52.58% | 110.88% | 2.11x | ✅ | -| `to_bytes[bytearray(b'\\x00'*32)]` | 2.8823678283493077e-05 | 1.380915606086673e-05 | 52.09% | 108.73% | 2.09x | ✅ | -| `to_bytes[bytearray(b'\\x00\\xff\\x00\\xff')]` | 2.7742978683122163e-05 | 1.4090477738104562e-05 | 49.21% | 96.89% | 1.97x | ✅ | -| `to_bytes[bytearray(b'\\x01'*100)]` | 2.811823964050555e-05 | 1.3707665667448147e-05 | 51.25% | 105.13% | 2.05x | ✅ | -| `to_bytes[bytearray(b'\\x01'*2048)]` | 3.391017406427379e-05 | 1.919177770635661e-05 | 43.40% | 76.69% | 1.77x | ✅ | -| `to_bytes[bytearray(b'\\x01\\x02\\x03')]` | 2.8462394173450054e-05 | 1.3914592712333896e-05 | 51.11% | 104.55% | 2.05x | ✅ | -| `to_bytes[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 2.7324655119913685e-05 | 1.3926543146409739e-05 | 49.03% | 96.21% | 1.96x | ✅ | -| `to_bytes[bytearray(b'\\x7f'*8)]` | 2.8213339595211048e-05 | 1.4044371871365984e-05 | 50.22% | 100.89% | 2.01x | ✅ | -| `to_bytes[bytearray(b'\\x80'*8)]` | 2.8374201519601177e-05 | 1.3591160673485316e-05 | 52.10% | 108.77% | 2.09x | ✅ | -| `to_bytes[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 2.7635922419227767e-05 | 1.3952913970882383e-05 | 49.51% | 98.07% | 1.98x | ✅ | -| `to_bytes[bytearray(b'\\xff'*64)]` | 2.7026240822884473e-05 | 1.3906665556187504e-05 | 48.54% | 94.34% | 1.94x | ✅ | -| `to_bytes[bytearray(b'a'*1024)]` | 3.432988157896774e-05 | 1.8772332715088434e-05 | 45.32% | 82.87% | 1.83x | ✅ | -| `to_bytes[bytearray(b'abc')]` | 2.885382756010611e-05 | 1.3693845950340195e-05 | 52.54% | 110.71% | 2.11x | ✅ | -| `to_bytes[bytearray(long alternating)]` | 3.471264455237198e-05 | 1.878079291354493e-05 | 45.90% | 84.83% | 1.85x | ✅ | -| `to_bytes[bytearray(mixed pattern)]` | 2.7989190247603196e-05 | 1.3960558437151378e-05 | 50.12% | 100.49% | 2.00x | ✅ | -| `to_bytes[bytearray(multiples of 0x10)]` | 2.7582618532926505e-05 | 1.3928406893349861e-05 | 49.50% | 98.03% | 1.98x | ✅ | -| `to_bytes[bytearray(palindrome ascii)]` | 2.782414795666787e-05 | 1.3981859622957737e-05 | 49.75% | 99.00% | 1.99x | ✅ | -| `to_bytes[bytearray(palindrome numeric)]` | 2.8127476455770383e-05 | 1.400108873918582e-05 | 50.22% | 100.89% | 2.01x | ✅ | -| `to_bytes[bytearray(palindrome)]` | 2.792548659413843e-05 | 1.3776069551929638e-05 | 50.67% | 102.71% | 2.03x | ✅ | -| `to_bytes[bytearray(repeated 0-9)]` | 2.7780893334180496e-05 | 1.406502786195492e-05 | 49.37% | 97.52% | 1.98x | ✅ | -| `to_bytes[bytearray(single 0xff)]` | 2.8258983296085444e-05 | 1.382382546772253e-05 | 51.08% | 104.42% | 2.04x | ✅ | -| `to_bytes[bytearray(single null byte)]` | 2.8170018895995926e-05 | 1.3711873021224604e-05 | 51.32% | 105.44% | 2.05x | ✅ | -| `to_bytes[bytearray(two patterns)]` | 2.8122028240778503e-05 | 1.3730079965809994e-05 | 51.18% | 104.82% | 2.05x | ✅ | -| `to_bytes[long alternating]` | 6.178048447603625e-06 | 3.2692099809062627e-06 | 47.08% | 88.98% | 1.89x | ✅ | -| `to_bytes[memoryview(0-9)]` | 4.066634498202126e-05 | 1.6862054686971174e-05 | 58.54% | 141.17% | 2.41x | ✅ | -| `to_bytes[memoryview(4-byte pattern)]` | 4.1265312326298835e-05 | 1.7591315311833746e-05 | 57.37% | 134.58% | 2.35x | ✅ | -| `to_bytes[memoryview(all byte values)]` | 4.2497623909989377e-05 | 1.779113414543062e-05 | 58.14% | 138.87% | 2.39x | ✅ | -| `to_bytes[memoryview(alternating 0x00/0xff)]` | 4.110091772980444e-05 | 1.6911152097707955e-05 | 58.85% | 143.04% | 2.43x | ✅ | -| `to_bytes[memoryview(alternating 0xaa/0x55)]` | 4.084250864517706e-05 | 1.682975409488464e-05 | 58.79% | 142.68% | 2.43x | ✅ | -| `to_bytes[memoryview(ascii sentence)]` | 4.1867855315406646e-05 | 1.69732711509668e-05 | 59.46% | 146.67% | 2.47x | ✅ | -| `to_bytes[memoryview(b'')]` | 3.896616181655164e-05 | 1.5065420902734553e-05 | 61.34% | 158.65% | 2.59x | ✅ | -| `to_bytes[memoryview(b'\\x00'*32)]` | 4.14776530568013e-05 | 1.6601967203651238e-05 | 59.97% | 149.84% | 2.50x | ✅ | -| `to_bytes[memoryview(b'\\x00\\xff\\x00\\xff')]` | 4.191036767007785e-05 | 1.7164314898101793e-05 | 59.05% | 144.17% | 2.44x | ✅ | -| `to_bytes[memoryview(b'\\x01'*100)]` | 4.185961858186141e-05 | 1.7301909937725706e-05 | 58.67% | 141.94% | 2.42x | ✅ | -| `to_bytes[memoryview(b'\\x01'*2048)]` | 4.730466385893137e-05 | 2.4171745574492525e-05 | 48.90% | 95.70% | 1.96x | ✅ | -| `to_bytes[memoryview(b'\\x01\\x02\\x03')]` | 4.173225178486672e-05 | 1.7545432873750583e-05 | 57.96% | 137.85% | 2.38x | ✅ | -| `to_bytes[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 4.0445835525197575e-05 | 1.6764346443890063e-05 | 58.55% | 141.26% | 2.41x | ✅ | -| `to_bytes[memoryview(b'\\x7f'*8)]` | 4.1320695932507406e-05 | 1.685817765459351e-05 | 59.20% | 145.11% | 2.45x | ✅ | -| `to_bytes[memoryview(b'\\x80'*8)]` | 4.105199003242716e-05 | 1.6717488656243486e-05 | 59.28% | 145.56% | 2.46x | ✅ | -| `to_bytes[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 4.079137454611909e-05 | 1.7309944508889713e-05 | 57.56% | 135.65% | 2.36x | ✅ | -| `to_bytes[memoryview(b'\\xff'*64)]` | 4.138749976001393e-05 | 1.6923334252525205e-05 | 59.11% | 144.56% | 2.45x | ✅ | -| `to_bytes[memoryview(b'a'*1024)]` | 4.838092219453444e-05 | 2.312892917889122e-05 | 52.19% | 109.18% | 2.09x | ✅ | -| `to_bytes[memoryview(b'abc')]` | 4.116408905408207e-05 | 1.709223268913189e-05 | 58.48% | 140.84% | 2.41x | ✅ | -| `to_bytes[memoryview(long alternating)]` | 4.8639293717120077e-05 | 2.2670597562611567e-05 | 53.39% | 114.55% | 2.15x | ✅ | -| `to_bytes[memoryview(mixed pattern)]` | 4.1960303993697014e-05 | 1.7929745440469518e-05 | 57.27% | 134.03% | 2.34x | ✅ | -| `to_bytes[memoryview(multiples of 0x10)]` | 4.224830695264305e-05 | 1.6874462798151477e-05 | 60.06% | 150.37% | 2.50x | ✅ | -| `to_bytes[memoryview(palindrome ascii)]` | 4.12947021260211e-05 | 1.699970882379411e-05 | 58.83% | 142.91% | 2.43x | ✅ | -| `to_bytes[memoryview(palindrome numeric)]` | 4.208742151320691e-05 | 1.70195287616264e-05 | 59.56% | 147.29% | 2.47x | ✅ | -| `to_bytes[memoryview(palindrome)]` | 4.0847495523812565e-05 | 1.704389619050479e-05 | 58.27% | 139.66% | 2.40x | ✅ | -| `to_bytes[memoryview(repeated 0-9)]` | 4.132822288852617e-05 | 1.7556067723068435e-05 | 57.52% | 135.41% | 2.35x | ✅ | -| `to_bytes[memoryview(single 0xff)]` | 4.1572939791052977e-05 | 1.7598321756713e-05 | 57.67% | 136.23% | 2.36x | ✅ | -| `to_bytes[memoryview(single null byte)]` | 4.2365728859945676e-05 | 1.7194875489207835e-05 | 59.41% | 146.39% | 2.46x | ✅ | -| `to_bytes[memoryview(two patterns)]` | 4.229447907482183e-05 | 1.710686488438002e-05 | 59.55% | 147.24% | 2.47x | ✅ | -| `to_bytes[mixed pattern]` | 6.206987344709217e-06 | 3.5692426471531853e-06 | 42.50% | 73.90% | 1.74x | ✅ | -| `to_bytes[multiples of 0x10]` | 5.9729366861094285e-06 | 3.4294740235501164e-06 | 42.58% | 74.16% | 1.74x | ✅ | -| `to_bytes[palindrome ascii]` | 6.06636183775943e-06 | 3.370822853607219e-06 | 44.43% | 79.97% | 1.80x | ✅ | -| `to_bytes[palindrome numeric]` | 6.305190339702692e-06 | 3.378714941457986e-06 | 46.41% | 86.62% | 1.87x | ✅ | -| `to_bytes[palindrome]` | 5.818505318028764e-06 | 3.501716430962532e-06 | 39.82% | 66.16% | 1.66x | ✅ | -| `to_bytes[repeated 0-9]` | 6.282315610035769e-06 | 3.4312800982562568e-06 | 45.38% | 83.09% | 1.83x | ✅ | -| `to_bytes[single 0xff]` | 6.193883221914061e-06 | 3.386462696283193e-06 | 45.33% | 82.90% | 1.83x | ✅ | -| `to_bytes[single null byte]` | 6.241816324726409e-06 | 3.4574426948570633e-06 | 44.61% | 80.53% | 1.81x | ✅ | -| `to_bytes[two patterns]` | 6.256173322527104e-06 | 3.4730516474397675e-06 | 44.49% | 80.13% | 1.80x | ✅ | +| `hexstr_to_bytes['']` | 1.8263086169235732e-05 | 1.1637289754336509e-05 | 36.28% | 56.94% | 1.57x | ✅ | +| `hexstr_to_bytes['0x'+'0'*128]` | 3.4892611234771284e-05 | 2.1072810490509902e-05 | 39.61% | 65.58% | 1.66x | ✅ | +| `hexstr_to_bytes['0x'+'00'*64]` | 3.4540312975593465e-05 | 2.0999137239693436e-05 | 39.20% | 64.48% | 1.64x | ✅ | +| `hexstr_to_bytes['0x'+'00ff'*16]` | 3.1294674831558976e-05 | 1.8311115596499395e-05 | 41.49% | 70.91% | 1.71x | ✅ | +| `hexstr_to_bytes['0x'+'0123456789abcdef'*8]` | 3.4622630552114606e-05 | 2.1239707518168565e-05 | 38.65% | 63.01% | 1.63x | ✅ | +| `hexstr_to_bytes['0x'+'1'*64]` | 3.367733898184971e-05 | 1.8157782421606094e-05 | 46.08% | 85.47% | 1.85x | ✅ | +| `hexstr_to_bytes['0x'+'1234567890abcdef'*8]` | 3.482673393199922e-05 | 2.0964992117670164e-05 | 39.80% | 66.12% | 1.66x | ✅ | +| `hexstr_to_bytes['0x'+'a'*128]` | 3.480868297151971e-05 | 2.122048636397608e-05 | 39.04% | 64.03% | 1.64x | ✅ | +| `hexstr_to_bytes['0x'+'a1b2c3d4'*8]` | 3.126767739658106e-05 | 1.817020675906111e-05 | 41.89% | 72.08% | 1.72x | ✅ | +| `hexstr_to_bytes['0x'+'b'*2048]` | 0.00013694036637338088 | 0.00011846526956541187 | 13.49% | 15.60% | 1.16x | ✅ | +| `hexstr_to_bytes['0x'+'badc0ffee0ddf00d'*4]` | 3.1171360129912135e-05 | 1.8104423807649753e-05 | 41.92% | 72.18% | 1.72x | ✅ | +| `hexstr_to_bytes['0x'+'beef'*16]` | 3.1371871151164316e-05 | 1.816919692263513e-05 | 42.08% | 72.67% | 1.73x | ✅ | +| `hexstr_to_bytes['0x'+'c'*1024]` | 8.980186027091694e-05 | 7.057102780280343e-05 | 21.41% | 27.25% | 1.27x | ✅ | +| `hexstr_to_bytes['0x'+'cafebabe'*8]` | 3.126048637630539e-05 | 1.816402755547292e-05 | 41.89% | 72.10% | 1.72x | ✅ | +| `hexstr_to_bytes['0x'+'d'*512]` | 5.7309284635538944e-05 | 4.090898796273455e-05 | 28.62% | 40.09% | 1.40x | ✅ | +| `hexstr_to_bytes['0x'+'dead'*16]` | 3.146888863888456e-05 | 1.8284510292182024e-05 | 41.90% | 72.11% | 1.72x | ✅ | +| `hexstr_to_bytes['0x'+'e'*256]` | 4.342286451895621e-05 | 2.762901749214456e-05 | 36.37% | 57.16% | 1.57x | ✅ | +| `hexstr_to_bytes['0x'+'f'*128]` | 3.4537545852320184e-05 | 2.1141958240240628e-05 | 38.79% | 63.36% | 1.63x | ✅ | +| `hexstr_to_bytes['0x'+'f'*64]` | 3.3569848430131865e-05 | 1.8088437445771423e-05 | 46.12% | 85.59% | 1.86x | ✅ | +| `hexstr_to_bytes['0x'+'facefeed'*8]` | 3.130614649200409e-05 | 1.8168808193798133e-05 | 41.96% | 72.31% | 1.72x | ✅ | +| `hexstr_to_bytes['0x'+'ff'*32]` | 3.108033223548147e-05 | 1.8291605770040535e-05 | 41.15% | 69.92% | 1.70x | ✅ | +| `hexstr_to_bytes['0x'+'ff00'*16]` | 3.1202729077994887e-05 | 1.8220248324813798e-05 | 41.61% | 71.25% | 1.71x | ✅ | +| `hexstr_to_bytes['0x']` | 2.303683632871218e-05 | 1.0824336236252521e-05 | 53.01% | 112.82% | 2.13x | ✅ | +| `hexstr_to_bytes['0x0']` | 3.1746480144197395e-05 | 1.828279259401338e-05 | 42.41% | 73.64% | 1.74x | ✅ | +| `hexstr_to_bytes['0x1']` | 3.125087117519366e-05 | 1.81716008499014e-05 | 41.85% | 71.98% | 1.72x | ✅ | +| `hexstr_to_bytes['0x1234']` | 2.9042847162620793e-05 | 1.604223559325809e-05 | 44.76% | 81.04% | 1.81x | ✅ | +| `hexstr_to_bytes['0xCAFEBABE']` | 2.9401289950095392e-05 | 1.5987552446652885e-05 | 45.62% | 83.90% | 1.84x | ✅ | +| `hexstr_to_bytes['0xabcdef']` | 2.9059199068380687e-05 | 1.617880954619848e-05 | 44.32% | 79.61% | 1.80x | ✅ | +| `hexstr_to_bytes['0xdeadbeef']` | 2.8913203106255843e-05 | 1.6020952675935775e-05 | 44.59% | 80.47% | 1.80x | ✅ | +| `hexstr_to_bytes['deadbeef']` | 2.1820574861592645e-05 | 1.421504387084691e-05 | 34.85% | 53.50% | 1.54x | ✅ | +| `to_bytes['']` | 2.8174639404890625e-05 | 1.2825732530413803e-05 | 54.48% | 119.67% | 2.20x | ✅ | +| `to_bytes['0x'+'00'*64]` | 4.6140039780883234e-05 | 2.2842063095533077e-05 | 50.49% | 102.00% | 2.02x | ✅ | +| `to_bytes['0x'+'a'*128]` | 4.6569794686142616e-05 | 2.2798823982280496e-05 | 51.04% | 104.26% | 2.04x | ✅ | +| `to_bytes['0x'+'ff'*32]` | 4.3169707192562654e-05 | 2.045148242383087e-05 | 52.63% | 111.08% | 2.11x | ✅ | +| `to_bytes['0x']` | 3.372015280527283e-05 | 1.2195543773033277e-05 | 63.83% | 176.50% | 2.76x | ✅ | +| `to_bytes['0x1234']` | 4.009687022043308e-05 | 1.7297063068140958e-05 | 56.86% | 131.81% | 2.32x | ✅ | +| `to_bytes['0xCAFEBABE']` | 4.1042978440309694e-05 | 1.7636082124802915e-05 | 57.03% | 132.72% | 2.33x | ✅ | +| `to_bytes['0xabcdef']` | 4.006001486585463e-05 | 1.762667623851406e-05 | 56.00% | 127.27% | 2.27x | ✅ | +| `to_bytes['0xdeadbeef']` | 4.043897856087141e-05 | 1.7607858090048418e-05 | 56.46% | 129.66% | 2.30x | ✅ | +| `to_bytes['abc']` | 3.672470797147311e-05 | 1.9750555875226927e-05 | 46.22% | 85.94% | 1.86x | ✅ | +| `to_bytes['deadbeef']` | 3.1745621204307444e-05 | 1.5324477758646085e-05 | 51.73% | 107.16% | 2.07x | ✅ | +| `to_bytes[0-9]` | 6.484846779651946e-06 | 3.47422328627403e-06 | 46.43% | 86.66% | 1.87x | ✅ | +| `to_bytes[0]` | 7.383183894741975e-05 | 3.0943054919100075e-05 | 58.09% | 138.61% | 2.39x | ✅ | +| `to_bytes[123456]` | 8.107189354368797e-05 | 3.375205184177991e-05 | 58.37% | 140.20% | 2.40x | ✅ | +| `to_bytes[2**16]` | 7.968008478341667e-05 | 3.4816946253027235e-05 | 56.30% | 128.85% | 2.29x | ✅ | +| `to_bytes[2**256-1]` | 8.49901280117557e-05 | 3.9685774106574554e-05 | 53.31% | 114.16% | 2.14x | ✅ | +| `to_bytes[2**32]` | 8.24170541031726e-05 | 3.551707419312329e-05 | 56.91% | 132.05% | 2.32x | ✅ | +| `to_bytes[2**64]` | 8.48233405951247e-05 | 3.8433806773242094e-05 | 54.69% | 120.70% | 2.21x | ✅ | +| `to_bytes[2**8]` | 7.772942892171581e-05 | 3.2665605060872146e-05 | 57.98% | 137.95% | 2.38x | ✅ | +| `to_bytes[4-byte pattern]` | 6.484385390558195e-06 | 3.661993763080901e-06 | 43.53% | 77.07% | 1.77x | ✅ | +| `to_bytes[False]` | 2.1876337771602007e-05 | 4.3720322393360065e-06 | 80.01% | 400.37% | 5.00x | ✅ | +| `to_bytes[True]` | 2.181262387493533e-05 | 4.346553487822929e-06 | 80.07% | 401.84% | 5.02x | ✅ | +| `to_bytes[all byte values]` | 6.537453995527932e-06 | 3.588818464493877e-06 | 45.10% | 82.16% | 1.82x | ✅ | +| `to_bytes[alternating 0x00/0xff]` | 6.586017080782295e-06 | 3.6268808662803414e-06 | 44.93% | 81.59% | 1.82x | ✅ | +| `to_bytes[alternating 0xaa/0x55]` | 6.518554141317473e-06 | 3.5598395807421336e-06 | 45.39% | 83.11% | 1.83x | ✅ | +| `to_bytes[ascii sentence]` | 6.525547707377974e-06 | 3.568235895374132e-06 | 45.32% | 82.88% | 1.83x | ✅ | +| `to_bytes[b'']` | 6.003058142938075e-06 | 3.5033370024865494e-06 | 41.64% | 71.35% | 1.71x | ✅ | +| `to_bytes[b'\\x00'*32]` | 6.535704121403627e-06 | 3.5681711482573557e-06 | 45.40% | 83.17% | 1.83x | ✅ | +| `to_bytes[b'\\x00\\xff\\x00\\xff']` | 6.539931688967957e-06 | 3.5665821266068996e-06 | 45.46% | 83.37% | 1.83x | ✅ | +| `to_bytes[b'\\x01'*100]` | 6.680104258202847e-06 | 3.622612787242084e-06 | 45.77% | 84.40% | 1.84x | ✅ | +| `to_bytes[b'\\x01'*2048]` | 6.495902071761733e-06 | 3.474819280241134e-06 | 46.51% | 86.94% | 1.87x | ✅ | +| `to_bytes[b'\\x01\\x02\\x03']` | 6.534666326685929e-06 | 3.5856480729518867e-06 | 45.13% | 82.25% | 1.82x | ✅ | +| `to_bytes[b'\\x10\\x20\\x30\\x40\\x50']` | 6.749395658194378e-06 | 3.5692616971162804e-06 | 47.12% | 89.10% | 1.89x | ✅ | +| `to_bytes[b'\\x7f'*8]` | 6.538907109343602e-06 | 3.6187302052806834e-06 | 44.66% | 80.70% | 1.81x | ✅ | +| `to_bytes[b'\\x80'*8]` | 6.586983114385041e-06 | 3.5676887846526767e-06 | 45.84% | 84.63% | 1.85x | ✅ | +| `to_bytes[b'\\xde\\xad\\xbe\\xef']` | 6.497669256560723e-06 | 3.5669714995317846e-06 | 45.10% | 82.16% | 1.82x | ✅ | +| `to_bytes[b'\\xff'*64]` | 6.555582234409466e-06 | 3.530448828389319e-06 | 46.15% | 85.69% | 1.86x | ✅ | +| `to_bytes[b'a'*1024]` | 6.525598493318736e-06 | 3.476681957562267e-06 | 46.72% | 87.70% | 1.88x | ✅ | +| `to_bytes[b'abc']` | 7.783343109902874e-06 | 3.6283077676065226e-06 | 53.38% | 114.52% | 2.15x | ✅ | +| `to_bytes[bytearray(0-9)]` | 2.8753952592152932e-05 | 1.3932332330634477e-05 | 51.55% | 106.38% | 2.06x | ✅ | +| `to_bytes[bytearray(4-byte pattern)]` | 2.8943745192990364e-05 | 1.4425045651516206e-05 | 50.16% | 100.65% | 2.01x | ✅ | +| `to_bytes[bytearray(all byte values)]` | 2.896527821290427e-05 | 1.3975326630902444e-05 | 51.75% | 107.26% | 2.07x | ✅ | +| `to_bytes[bytearray(alternating 0x00/0xff)]` | 2.8647594603018947e-05 | 1.4140579184804084e-05 | 50.64% | 102.59% | 2.03x | ✅ | +| `to_bytes[bytearray(alternating 0xaa/0x55)]` | 2.8512774529140403e-05 | 1.4032653302904298e-05 | 50.78% | 103.19% | 2.03x | ✅ | +| `to_bytes[bytearray(ascii sentence)]` | 2.852932280680667e-05 | 1.390915998193525e-05 | 51.25% | 105.11% | 2.05x | ✅ | +| `to_bytes[bytearray(b'')]` | 2.638309899844581e-05 | 1.2599877348497635e-05 | 52.24% | 109.39% | 2.09x | ✅ | +| `to_bytes[bytearray(b'\\x00'*32)]` | 2.834713270143255e-05 | 1.3965039346760707e-05 | 50.74% | 102.99% | 2.03x | ✅ | +| `to_bytes[bytearray(b'\\x00\\xff\\x00\\xff')]` | 2.7752907087888507e-05 | 1.4012399613191652e-05 | 49.51% | 98.06% | 1.98x | ✅ | +| `to_bytes[bytearray(b'\\x01'*100)]` | 2.88289083932629e-05 | 1.4059217589972597e-05 | 51.23% | 105.05% | 2.05x | ✅ | +| `to_bytes[bytearray(b'\\x01'*2048)]` | 3.5472967841643385e-05 | 1.911972430627814e-05 | 46.10% | 85.53% | 1.86x | ✅ | +| `to_bytes[bytearray(b'\\x01\\x02\\x03')]` | 2.8555877395128523e-05 | 1.3965245378130305e-05 | 51.10% | 104.48% | 2.04x | ✅ | +| `to_bytes[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 2.8602851614233422e-05 | 1.4224170468778617e-05 | 50.27% | 101.09% | 2.01x | ✅ | +| `to_bytes[bytearray(b'\\x7f'*8)]` | 2.833613004207562e-05 | 1.4120671589903749e-05 | 50.17% | 100.67% | 2.01x | ✅ | +| `to_bytes[bytearray(b'\\x80'*8)]` | 2.9114042975558028e-05 | 1.3967151028574824e-05 | 52.03% | 108.45% | 2.08x | ✅ | +| `to_bytes[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 2.9203695548841923e-05 | 1.3918567986384679e-05 | 52.34% | 109.82% | 2.10x | ✅ | +| `to_bytes[bytearray(b'\\xff'*64)]` | 2.8678068094873103e-05 | 1.4003273116358322e-05 | 51.17% | 104.80% | 2.05x | ✅ | +| `to_bytes[bytearray(b'a'*1024)]` | 3.488781049055474e-05 | 1.8720524899700206e-05 | 46.34% | 86.36% | 1.86x | ✅ | +| `to_bytes[bytearray(b'abc')]` | 2.9184731906960552e-05 | 1.381701339704248e-05 | 52.66% | 111.22% | 2.11x | ✅ | +| `to_bytes[bytearray(long alternating)]` | 3.606243276928635e-05 | 1.879037247865509e-05 | 47.89% | 91.92% | 1.92x | ✅ | +| `to_bytes[bytearray(mixed pattern)]` | 2.8973933556836655e-05 | 1.4313393003297235e-05 | 50.60% | 102.43% | 2.02x | ✅ | +| `to_bytes[bytearray(multiples of 0x10)]` | 2.874130884756391e-05 | 1.4061787627388159e-05 | 51.07% | 104.39% | 2.04x | ✅ | +| `to_bytes[bytearray(palindrome ascii)]` | 2.821820171365564e-05 | 1.3843436495142554e-05 | 50.94% | 103.84% | 2.04x | ✅ | +| `to_bytes[bytearray(palindrome numeric)]` | 2.8853214450014793e-05 | 1.3913551085482761e-05 | 51.78% | 107.37% | 2.07x | ✅ | +| `to_bytes[bytearray(palindrome)]` | 2.8644389646167733e-05 | 1.402161524311482e-05 | 51.05% | 104.29% | 2.04x | ✅ | +| `to_bytes[bytearray(repeated 0-9)]` | 2.8862503340437722e-05 | 1.4086646467656822e-05 | 51.19% | 104.89% | 2.05x | ✅ | +| `to_bytes[bytearray(single 0xff)]` | 2.8452219062684765e-05 | 1.3858921755522075e-05 | 51.29% | 105.30% | 2.05x | ✅ | +| `to_bytes[bytearray(single null byte)]` | 2.829732616035128e-05 | 1.3747466767432303e-05 | 51.42% | 105.84% | 2.06x | ✅ | +| `to_bytes[bytearray(two patterns)]` | 2.8603975035050417e-05 | 1.3901398197178127e-05 | 51.40% | 105.76% | 2.06x | ✅ | +| `to_bytes[long alternating]` | 6.472419414796197e-06 | 3.4669699293956488e-06 | 46.43% | 86.69% | 1.87x | ✅ | +| `to_bytes[memoryview(0-9)]` | 4.1871676670371116e-05 | 1.684306337462541e-05 | 59.77% | 148.60% | 2.49x | ✅ | +| `to_bytes[memoryview(4-byte pattern)]` | 4.234002850554881e-05 | 1.7755843885824303e-05 | 58.06% | 138.46% | 2.38x | ✅ | +| `to_bytes[memoryview(all byte values)]` | 4.1831839522814446e-05 | 1.7728108863189487e-05 | 57.62% | 135.96% | 2.36x | ✅ | +| `to_bytes[memoryview(alternating 0x00/0xff)]` | 4.135130793273487e-05 | 1.687657922347854e-05 | 59.19% | 145.02% | 2.45x | ✅ | +| `to_bytes[memoryview(alternating 0xaa/0x55)]` | 4.184121926776612e-05 | 1.7076547910124444e-05 | 59.19% | 145.02% | 2.45x | ✅ | +| `to_bytes[memoryview(ascii sentence)]` | 4.170808350891933e-05 | 1.6712570559553503e-05 | 59.93% | 149.56% | 2.50x | ✅ | +| `to_bytes[memoryview(b'')]` | 4.0130208847864645e-05 | 1.5166008878556888e-05 | 62.21% | 164.61% | 2.65x | ✅ | +| `to_bytes[memoryview(b'\\x00'*32)]` | 4.173906530525802e-05 | 1.6623704938375228e-05 | 60.17% | 151.08% | 2.51x | ✅ | +| `to_bytes[memoryview(b'\\x00\\xff\\x00\\xff')]` | 4.1759540824277416e-05 | 1.6676629621082363e-05 | 60.07% | 150.41% | 2.50x | ✅ | +| `to_bytes[memoryview(b'\\x01'*100)]` | 4.153482269698995e-05 | 1.731104115394515e-05 | 58.32% | 139.93% | 2.40x | ✅ | +| `to_bytes[memoryview(b'\\x01'*2048)]` | 5.034062186359411e-05 | 2.3934077682444687e-05 | 52.46% | 110.33% | 2.10x | ✅ | +| `to_bytes[memoryview(b'\\x01\\x02\\x03')]` | 4.2058112412085035e-05 | 1.6930829402223397e-05 | 59.74% | 148.41% | 2.48x | ✅ | +| `to_bytes[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 4.088636547665508e-05 | 1.7056470547478756e-05 | 58.28% | 139.71% | 2.40x | ✅ | +| `to_bytes[memoryview(b'\\x7f'*8)]` | 4.252775145676255e-05 | 1.6747113766329555e-05 | 60.62% | 153.94% | 2.54x | ✅ | +| `to_bytes[memoryview(b'\\x80'*8)]` | 4.1593599573414795e-05 | 1.6960819705997886e-05 | 59.22% | 145.23% | 2.45x | ✅ | +| `to_bytes[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 4.183566717314151e-05 | 1.6873635466074085e-05 | 59.67% | 147.94% | 2.48x | ✅ | +| `to_bytes[memoryview(b'\\xff'*64)]` | 4.147664658220224e-05 | 1.661833515294322e-05 | 59.93% | 149.58% | 2.50x | ✅ | +| `to_bytes[memoryview(b'a'*1024)]` | 4.976585476527999e-05 | 2.2346393196244003e-05 | 55.10% | 122.70% | 2.23x | ✅ | +| `to_bytes[memoryview(b'abc')]` | 4.17189182612393e-05 | 1.7182698568642615e-05 | 58.81% | 142.80% | 2.43x | ✅ | +| `to_bytes[memoryview(long alternating)]` | 4.882996815833903e-05 | 2.254067522707382e-05 | 53.84% | 116.63% | 2.17x | ✅ | +| `to_bytes[memoryview(mixed pattern)]` | 4.2098383647494465e-05 | 1.7647291476878538e-05 | 58.08% | 138.55% | 2.39x | ✅ | +| `to_bytes[memoryview(multiples of 0x10)]` | 4.154028360170726e-05 | 1.692340053647624e-05 | 59.26% | 145.46% | 2.45x | ✅ | +| `to_bytes[memoryview(palindrome ascii)]` | 4.232562632309652e-05 | 1.7002184356979993e-05 | 59.83% | 148.94% | 2.49x | ✅ | +| `to_bytes[memoryview(palindrome numeric)]` | 4.192197692350123e-05 | 1.71289141353016e-05 | 59.14% | 144.74% | 2.45x | ✅ | +| `to_bytes[memoryview(palindrome)]` | 4.1881971954116855e-05 | 1.6668849098886834e-05 | 60.20% | 151.26% | 2.51x | ✅ | +| `to_bytes[memoryview(repeated 0-9)]` | 4.215155775495408e-05 | 1.7270896687037385e-05 | 59.03% | 144.06% | 2.44x | ✅ | +| `to_bytes[memoryview(single 0xff)]` | 4.157911736591486e-05 | 1.7281793517300448e-05 | 58.44% | 140.59% | 2.41x | ✅ | +| `to_bytes[memoryview(single null byte)]` | 4.1103067488442965e-05 | 1.7403985214513442e-05 | 57.66% | 136.17% | 2.36x | ✅ | +| `to_bytes[memoryview(two patterns)]` | 4.200551930310622e-05 | 1.6750777597016637e-05 | 60.12% | 150.77% | 2.51x | ✅ | +| `to_bytes[mixed pattern]` | 6.5360251329681645e-06 | 3.6605808739734104e-06 | 43.99% | 78.55% | 1.79x | ✅ | +| `to_bytes[multiples of 0x10]` | 6.437531249991194e-06 | 3.4741175954605173e-06 | 46.03% | 85.30% | 1.85x | ✅ | +| `to_bytes[palindrome ascii]` | 6.529976889523192e-06 | 3.6609853465694693e-06 | 43.94% | 78.37% | 1.78x | ✅ | +| `to_bytes[palindrome numeric]` | 6.600803261505699e-06 | 3.7137583536125623e-06 | 43.74% | 77.74% | 1.78x | ✅ | +| `to_bytes[palindrome]` | 6.554649127124211e-06 | 3.566918196047829e-06 | 45.58% | 83.76% | 1.84x | ✅ | +| `to_bytes[repeated 0-9]` | 6.538850735915771e-06 | 3.571750007608274e-06 | 45.38% | 83.07% | 1.83x | ✅ | +| `to_bytes[single 0xff]` | 6.3175221644013145e-06 | 3.651201620829169e-06 | 42.21% | 73.03% | 1.73x | ✅ | +| `to_bytes[single null byte]` | 6.159580888943075e-06 | 3.595804272380779e-06 | 41.62% | 71.30% | 1.71x | ✅ | +| `to_bytes[two patterns]` | 6.5757959797462205e-06 | 3.711216561520405e-06 | 43.56% | 77.19% | 1.77x | ✅ | diff --git a/benchmarks/results/main.md b/benchmarks/results/main.md index 6b44c24..c9ce813 100644 --- a/benchmarks/results/main.md +++ b/benchmarks/results/main.md @@ -1,486 +1,486 @@ -#### [faster_hexbytes.main](https://github.com/BobTheBuidler/faster-hexbytes/blob/master/faster_hexbytes/main.py) - [view benchmarks](https://github.com/BobTheBuidler/faster-hexbytes/blob/master/benchmarks/test_main_benchmarks.py) +#### [faster_hexbytes.main](https://github.com/BobTheBuidler/faster-hexbytes/blob/BobTheBuidler-patch-1/faster_hexbytes/main.py) - [view benchmarks](https://github.com/BobTheBuidler/faster-hexbytes/blob/BobTheBuidler-patch-1/benchmarks/test_main_benchmarks.py) | Function | Reference Mean | Faster Mean | % Change | Speedup (%) | x Faster | Faster | |----------|---------------|-------------|----------|-------------|----------|--------| -| `hexbytes_getitem_index[-1-0-9]` | 2.5436390744287646e-05 | 2.3298060767530137e-05 | 8.41% | 9.18% | 1.09x | ✅ | -| `hexbytes_getitem_index[-1-4-byte pattern]` | 2.5400365607685962e-05 | 2.3467228214521195e-05 | 7.61% | 8.24% | 1.08x | ✅ | -| `hexbytes_getitem_index[-1-all byte values]` | 2.5549229725974316e-05 | 2.3351058154944697e-05 | 8.60% | 9.41% | 1.09x | ✅ | -| `hexbytes_getitem_index[-1-alternating 0x00/0xff]` | 2.5437739259076793e-05 | 2.3540827085013496e-05 | 7.46% | 8.06% | 1.08x | ✅ | -| `hexbytes_getitem_index[-1-alternating 0xaa/0x55]` | 2.5674348737415375e-05 | 2.3742790301913945e-05 | 7.52% | 8.14% | 1.08x | ✅ | -| `hexbytes_getitem_index[-1-ascii sentence]` | 2.5491474823110162e-05 | 2.3257605856557487e-05 | 8.76% | 9.60% | 1.10x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x00'*32]` | 2.5738816411933375e-05 | 2.3530708777910685e-05 | 8.58% | 9.38% | 1.09x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x00\\xff\\x00\\xff']` | 2.5305566474965747e-05 | 2.3459397476595695e-05 | 7.30% | 7.87% | 1.08x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x01'*100]` | 2.5547081778212753e-05 | 2.3473099516836466e-05 | 8.12% | 8.84% | 1.09x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x01'*2048]` | 2.5586915570337544e-05 | 2.3400606215587494e-05 | 8.54% | 9.34% | 1.09x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x01\\x02\\x03']` | 2.5719230727753942e-05 | 2.3538405277197263e-05 | 8.48% | 9.26% | 1.09x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.5496031708198466e-05 | 2.3530038047080494e-05 | 7.71% | 8.36% | 1.08x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x7f'*8]` | 2.556397405178346e-05 | 2.3463523428732082e-05 | 8.22% | 8.95% | 1.09x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x80'*8]` | 2.5269436344364915e-05 | 2.3532571587538634e-05 | 6.87% | 7.38% | 1.07x | ✅ | -| `hexbytes_getitem_index[-1-b'\\xde\\xad\\xbe\\xef']` | 2.505795359803719e-05 | 2.351865758316885e-05 | 6.14% | 6.54% | 1.07x | ✅ | -| `hexbytes_getitem_index[-1-b'\\xff'*64]` | 2.5378498443784416e-05 | 2.3570616333601e-05 | 7.12% | 7.67% | 1.08x | ✅ | -| `hexbytes_getitem_index[-1-b'a'*1024]` | 2.536796217605163e-05 | 2.3583271365780484e-05 | 7.04% | 7.57% | 1.08x | ✅ | -| `hexbytes_getitem_index[-1-b'abc']` | 2.558087570716293e-05 | 2.3413728788139762e-05 | 8.47% | 9.26% | 1.09x | ✅ | -| `hexbytes_getitem_index[-1-long alternating]` | 2.5490106687330945e-05 | 2.3395409145218406e-05 | 8.22% | 8.95% | 1.09x | ✅ | -| `hexbytes_getitem_index[-1-mixed pattern]` | 2.560799864426915e-05 | 2.351785908715696e-05 | 8.16% | 8.89% | 1.09x | ✅ | -| `hexbytes_getitem_index[-1-multiples of 0x10]` | 2.573611102501675e-05 | 2.3222284491434522e-05 | 9.77% | 10.83% | 1.11x | ✅ | -| `hexbytes_getitem_index[-1-palindrome ascii]` | 2.5324234021086154e-05 | 2.3296943235617554e-05 | 8.01% | 8.70% | 1.09x | ✅ | -| `hexbytes_getitem_index[-1-palindrome numeric]` | 2.530579829640371e-05 | 2.3240805817805835e-05 | 8.16% | 8.89% | 1.09x | ✅ | -| `hexbytes_getitem_index[-1-palindrome]` | 2.5632634911864418e-05 | 2.3432652653453046e-05 | 8.58% | 9.39% | 1.09x | ✅ | -| `hexbytes_getitem_index[-1-repeated 0-9]` | 2.5570853998508186e-05 | 2.323212094177341e-05 | 9.15% | 10.07% | 1.10x | ✅ | -| `hexbytes_getitem_index[-1-two patterns]` | 2.5583188435173564e-05 | 2.3311410763867386e-05 | 8.88% | 9.75% | 1.10x | ✅ | -| `hexbytes_getitem_index[0-0-9]` | 2.425530915544807e-05 | 2.2467727704898727e-05 | 7.37% | 7.96% | 1.08x | ✅ | -| `hexbytes_getitem_index[0-4-byte pattern]` | 2.4441118443996986e-05 | 2.2517137447786105e-05 | 7.87% | 8.54% | 1.09x | ✅ | -| `hexbytes_getitem_index[0-all byte values]` | 2.440579785525404e-05 | 2.2424893845780257e-05 | 8.12% | 8.83% | 1.09x | ✅ | -| `hexbytes_getitem_index[0-alternating 0x00/0xff]` | 2.4292706079575542e-05 | 2.2506039876648737e-05 | 7.35% | 7.94% | 1.08x | ✅ | -| `hexbytes_getitem_index[0-alternating 0xaa/0x55]` | 2.4484199291201903e-05 | 2.2466784820937515e-05 | 8.24% | 8.98% | 1.09x | ✅ | -| `hexbytes_getitem_index[0-ascii sentence]` | 2.4475377456011266e-05 | 2.2415968948492115e-05 | 8.41% | 9.19% | 1.09x | ✅ | -| `hexbytes_getitem_index[0-b'\\x00'*32]` | 2.4513685888977224e-05 | 2.2235467255586656e-05 | 9.29% | 10.25% | 1.10x | ✅ | -| `hexbytes_getitem_index[0-b'\\x00\\xff\\x00\\xff']` | 2.4492978651003103e-05 | 2.2385152413986386e-05 | 8.61% | 9.42% | 1.09x | ✅ | -| `hexbytes_getitem_index[0-b'\\x01'*100]` | 2.4337049572007555e-05 | 2.2382405828980003e-05 | 8.03% | 8.73% | 1.09x | ✅ | -| `hexbytes_getitem_index[0-b'\\x01'*2048]` | 2.441957011353223e-05 | 2.2227685794710123e-05 | 8.98% | 9.86% | 1.10x | ✅ | -| `hexbytes_getitem_index[0-b'\\x01\\x02\\x03']` | 2.4276485645007908e-05 | 2.2192896089175888e-05 | 8.58% | 9.39% | 1.09x | ✅ | -| `hexbytes_getitem_index[0-b'\\x10\\x20\\x30\\x40\\x50']` | 2.434313194505011e-05 | 2.236287414945353e-05 | 8.13% | 8.86% | 1.09x | ✅ | -| `hexbytes_getitem_index[0-b'\\x7f'*8]` | 2.4543882505371466e-05 | 2.2393841465350297e-05 | 8.76% | 9.60% | 1.10x | ✅ | -| `hexbytes_getitem_index[0-b'\\x80'*8]` | 2.432225131390031e-05 | 2.230176767762654e-05 | 8.31% | 9.06% | 1.09x | ✅ | -| `hexbytes_getitem_index[0-b'\\xde\\xad\\xbe\\xef']` | 2.4480194400277603e-05 | 2.219871319944255e-05 | 9.32% | 10.28% | 1.10x | ✅ | -| `hexbytes_getitem_index[0-b'\\xff'*64]` | 2.4298331652397016e-05 | 2.2189630713562568e-05 | 8.68% | 9.50% | 1.10x | ✅ | -| `hexbytes_getitem_index[0-b'a'*1024]` | 2.4413579879212683e-05 | 2.210479321646131e-05 | 9.46% | 10.44% | 1.10x | ✅ | -| `hexbytes_getitem_index[0-b'abc']` | 2.409775675363341e-05 | 2.2434224595596274e-05 | 6.90% | 7.42% | 1.07x | ✅ | -| `hexbytes_getitem_index[0-long alternating]` | 2.41987146251888e-05 | 2.2444441559359366e-05 | 7.25% | 7.82% | 1.08x | ✅ | -| `hexbytes_getitem_index[0-mixed pattern]` | 2.4104413317004765e-05 | 2.2335514522306402e-05 | 7.34% | 7.92% | 1.08x | ✅ | -| `hexbytes_getitem_index[0-multiples of 0x10]` | 2.4394259474592607e-05 | 2.239048589564657e-05 | 8.21% | 8.95% | 1.09x | ✅ | -| `hexbytes_getitem_index[0-palindrome ascii]` | 2.440301243600659e-05 | 2.2437271112497383e-05 | 8.06% | 8.76% | 1.09x | ✅ | -| `hexbytes_getitem_index[0-palindrome numeric]` | 2.4242448994183863e-05 | 2.2437469882525066e-05 | 7.45% | 8.04% | 1.08x | ✅ | -| `hexbytes_getitem_index[0-palindrome]` | 2.4825615115671096e-05 | 2.226703169349708e-05 | 10.31% | 11.49% | 1.11x | ✅ | -| `hexbytes_getitem_index[0-repeated 0-9]` | 2.413660588064052e-05 | 2.2431825360397113e-05 | 7.06% | 7.60% | 1.08x | ✅ | -| `hexbytes_getitem_index[0-single 0xff]` | 2.4411852278529296e-05 | 2.2402058264078315e-05 | 8.23% | 8.97% | 1.09x | ✅ | -| `hexbytes_getitem_index[0-single null byte]` | 2.4380409162948406e-05 | 2.246555971767355e-05 | 7.85% | 8.52% | 1.09x | ✅ | -| `hexbytes_getitem_index[0-two patterns]` | 2.4314100479497665e-05 | 2.2459675745532846e-05 | 7.63% | 8.26% | 1.08x | ✅ | -| `hexbytes_getitem_index[1-0-9]` | 2.4438051524457385e-05 | 2.2509230804432465e-05 | 7.89% | 8.57% | 1.09x | ✅ | -| `hexbytes_getitem_index[1-4-byte pattern]` | 2.4029808760491994e-05 | 2.216360634596092e-05 | 7.77% | 8.42% | 1.08x | ✅ | -| `hexbytes_getitem_index[1-all byte values]` | 2.3875755061879934e-05 | 2.2281593636027693e-05 | 6.68% | 7.15% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-alternating 0x00/0xff]` | 2.4408380315874422e-05 | 2.2270611284492803e-05 | 8.76% | 9.60% | 1.10x | ✅ | -| `hexbytes_getitem_index[1-alternating 0xaa/0x55]` | 2.4323445644876098e-05 | 2.2586256381460634e-05 | 7.14% | 7.69% | 1.08x | ✅ | -| `hexbytes_getitem_index[1-ascii sentence]` | 2.4038248820795232e-05 | 2.2528695523023342e-05 | 6.28% | 6.70% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-b'\\x00'*32]` | 2.4420300114894402e-05 | 2.221527693803759e-05 | 9.03% | 9.93% | 1.10x | ✅ | -| `hexbytes_getitem_index[1-b'\\x00\\xff\\x00\\xff']` | 2.4384156844581877e-05 | 2.225763384035542e-05 | 8.72% | 9.55% | 1.10x | ✅ | -| `hexbytes_getitem_index[1-b'\\x01'*100]` | 2.4365656791525397e-05 | 2.2389575239502162e-05 | 8.11% | 8.83% | 1.09x | ✅ | -| `hexbytes_getitem_index[1-b'\\x01'*2048]` | 2.4221619457365466e-05 | 2.1734473546002438e-05 | 10.27% | 11.44% | 1.11x | ✅ | -| `hexbytes_getitem_index[1-b'\\x01\\x02\\x03']` | 2.4412605883087305e-05 | 2.212056072044959e-05 | 9.39% | 10.36% | 1.10x | ✅ | -| `hexbytes_getitem_index[1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.4296365092895975e-05 | 2.231355959747814e-05 | 8.16% | 8.89% | 1.09x | ✅ | -| `hexbytes_getitem_index[1-b'\\x7f'*8]` | 2.4302605305069972e-05 | 2.3262794119606948e-05 | 4.28% | 4.47% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-b'\\x80'*8]` | 2.4191809159784125e-05 | 2.2228813781773265e-05 | 8.11% | 8.83% | 1.09x | ✅ | -| `hexbytes_getitem_index[1-b'\\xde\\xad\\xbe\\xef']` | 2.4311386111335956e-05 | 2.209357962047261e-05 | 9.12% | 10.04% | 1.10x | ✅ | -| `hexbytes_getitem_index[1-b'\\xff'*64]` | 2.408560796097078e-05 | 2.2233451119446485e-05 | 7.69% | 8.33% | 1.08x | ✅ | -| `hexbytes_getitem_index[1-b'a'*1024]` | 2.409388487542799e-05 | 2.2242072819639656e-05 | 7.69% | 8.33% | 1.08x | ✅ | -| `hexbytes_getitem_index[1-b'abc']` | 2.430279197799932e-05 | 2.2280712963374035e-05 | 8.32% | 9.08% | 1.09x | ✅ | -| `hexbytes_getitem_index[1-long alternating]` | 2.41203127865342e-05 | 2.213494879548349e-05 | 8.23% | 8.97% | 1.09x | ✅ | -| `hexbytes_getitem_index[1-mixed pattern]` | 2.3908627241751444e-05 | 2.27933696010802e-05 | 4.66% | 4.89% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-multiples of 0x10]` | 2.437946087880298e-05 | 2.236875214454886e-05 | 8.25% | 8.99% | 1.09x | ✅ | -| `hexbytes_getitem_index[1-palindrome ascii]` | 2.3679013792369127e-05 | 2.283542214199951e-05 | 3.56% | 3.69% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-palindrome numeric]` | 2.3963660290163455e-05 | 2.2321128293399032e-05 | 6.85% | 7.36% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-palindrome]` | 2.433860203319467e-05 | 2.473181047495741e-05 | -1.62% | -1.59% | 0.98x | ❌ | -| `hexbytes_getitem_index[1-repeated 0-9]` | 2.4041832892813843e-05 | 2.248552031651306e-05 | 6.47% | 6.92% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-two patterns]` | 2.3770892374334567e-05 | 2.2544529045539747e-05 | 5.16% | 5.44% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-0-9]` | 2.4244415569536655e-05 | 2.2299320075785745e-05 | 8.02% | 8.72% | 1.09x | ✅ | -| `hexbytes_getitem_index[2-4-byte pattern]` | 2.4098462586603336e-05 | 2.2502901245824784e-05 | 6.62% | 7.09% | 1.07x | ✅ | -| `hexbytes_getitem_index[2-all byte values]` | 2.4110946373082613e-05 | 2.2347724030143746e-05 | 7.31% | 7.89% | 1.08x | ✅ | -| `hexbytes_getitem_index[2-alternating 0x00/0xff]` | 2.4242216937983412e-05 | 2.2377513338861933e-05 | 7.69% | 8.33% | 1.08x | ✅ | -| `hexbytes_getitem_index[2-alternating 0xaa/0x55]` | 2.4210702185961175e-05 | 2.2337357910343283e-05 | 7.74% | 8.39% | 1.08x | ✅ | -| `hexbytes_getitem_index[2-ascii sentence]` | 2.3966912707784524e-05 | 2.2283291293721078e-05 | 7.02% | 7.56% | 1.08x | ✅ | -| `hexbytes_getitem_index[2-b'\\x00'*32]` | 2.417068364124171e-05 | 2.2471157879296735e-05 | 7.03% | 7.56% | 1.08x | ✅ | -| `hexbytes_getitem_index[2-b'\\x00\\xff\\x00\\xff']` | 2.4119396593296104e-05 | 2.232720463964139e-05 | 7.43% | 8.03% | 1.08x | ✅ | -| `hexbytes_getitem_index[2-b'\\x01'*100]` | 2.4276281255627565e-05 | 2.2358396502662854e-05 | 7.90% | 8.58% | 1.09x | ✅ | -| `hexbytes_getitem_index[2-b'\\x01'*2048]` | 2.411072650538012e-05 | 2.244543648430775e-05 | 6.91% | 7.42% | 1.07x | ✅ | -| `hexbytes_getitem_index[2-b'\\x01\\x02\\x03']` | 2.4085824435471224e-05 | 2.2336828480852336e-05 | 7.26% | 7.83% | 1.08x | ✅ | -| `hexbytes_getitem_index[2-b'\\x10\\x20\\x30\\x40\\x50']` | 2.4283479015007948e-05 | 2.2398580770554523e-05 | 7.76% | 8.42% | 1.08x | ✅ | -| `hexbytes_getitem_index[2-b'\\x7f'*8]` | 2.4233424615951713e-05 | 2.217216179934468e-05 | 8.51% | 9.30% | 1.09x | ✅ | -| `hexbytes_getitem_index[2-b'\\x80'*8]` | 2.425914751097879e-05 | 2.2319380354041405e-05 | 8.00% | 8.69% | 1.09x | ✅ | -| `hexbytes_getitem_index[2-b'\\xde\\xad\\xbe\\xef']` | 2.3940192138007366e-05 | 2.2254581270240258e-05 | 7.04% | 7.57% | 1.08x | ✅ | -| `hexbytes_getitem_index[2-b'\\xff'*64]` | 2.4164114413798258e-05 | 2.2289000902806753e-05 | 7.76% | 8.41% | 1.08x | ✅ | -| `hexbytes_getitem_index[2-b'a'*1024]` | 2.4085671639068005e-05 | 2.5018220437773233e-05 | -3.87% | -3.73% | 0.96x | ❌ | -| `hexbytes_getitem_index[2-b'abc']` | 2.402746112709058e-05 | 2.2669214334218074e-05 | 5.65% | 5.99% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-long alternating]` | 2.4128129120932564e-05 | 2.240955595282167e-05 | 7.12% | 7.67% | 1.08x | ✅ | -| `hexbytes_getitem_index[2-mixed pattern]` | 2.4205364900264775e-05 | 2.2319222975850516e-05 | 7.79% | 8.45% | 1.08x | ✅ | -| `hexbytes_getitem_index[2-multiples of 0x10]` | 2.418512116502596e-05 | 2.227853400996357e-05 | 7.88% | 8.56% | 1.09x | ✅ | -| `hexbytes_getitem_index[2-palindrome ascii]` | 2.4206976523327436e-05 | 2.2526124537792325e-05 | 6.94% | 7.46% | 1.07x | ✅ | -| `hexbytes_getitem_index[2-palindrome numeric]` | 2.414621261861482e-05 | 2.219893304676724e-05 | 8.06% | 8.77% | 1.09x | ✅ | -| `hexbytes_getitem_index[2-palindrome]` | 2.419102208392585e-05 | 2.230622513775129e-05 | 7.79% | 8.45% | 1.08x | ✅ | -| `hexbytes_getitem_index[2-repeated 0-9]` | 2.4499102826859664e-05 | 2.2527231744481515e-05 | 8.05% | 8.75% | 1.09x | ✅ | -| `hexbytes_getitem_index[2-two patterns]` | 2.4123208384817657e-05 | 2.2479229333779515e-05 | 6.81% | 7.31% | 1.07x | ✅ | -| `hexbytes_getitem_index[3-0-9]` | 2.417600487612528e-05 | 2.234041364882286e-05 | 7.59% | 8.22% | 1.08x | ✅ | -| `hexbytes_getitem_index[3-4-byte pattern]` | 2.4164828935948726e-05 | 2.2326618819403376e-05 | 7.61% | 8.23% | 1.08x | ✅ | -| `hexbytes_getitem_index[3-all byte values]` | 2.418683182291497e-05 | 2.2449368449538876e-05 | 7.18% | 7.74% | 1.08x | ✅ | -| `hexbytes_getitem_index[3-alternating 0x00/0xff]` | 2.446492541857315e-05 | 2.2192763839092597e-05 | 9.29% | 10.24% | 1.10x | ✅ | -| `hexbytes_getitem_index[3-alternating 0xaa/0x55]` | 2.437131062647012e-05 | 2.2434512676347666e-05 | 7.95% | 8.63% | 1.09x | ✅ | -| `hexbytes_getitem_index[3-ascii sentence]` | 2.4165870800931403e-05 | 2.2252134988312418e-05 | 7.92% | 8.60% | 1.09x | ✅ | -| `hexbytes_getitem_index[3-b'\\x00'*32]` | 2.452448178450455e-05 | 2.2296391745875273e-05 | 9.09% | 9.99% | 1.10x | ✅ | -| `hexbytes_getitem_index[3-b'\\x00\\xff\\x00\\xff']` | 2.4203009258323277e-05 | 2.2183499806017555e-05 | 8.34% | 9.10% | 1.09x | ✅ | -| `hexbytes_getitem_index[3-b'\\x01'*100]` | 2.4373472379242054e-05 | 2.2165594036291073e-05 | 9.06% | 9.96% | 1.10x | ✅ | -| `hexbytes_getitem_index[3-b'\\x01'*2048]` | 2.433677236957727e-05 | 2.2705366834254867e-05 | 6.70% | 7.19% | 1.07x | ✅ | -| `hexbytes_getitem_index[3-b'\\x10\\x20\\x30\\x40\\x50']` | 2.4231354118415342e-05 | 2.2115543246438045e-05 | 8.73% | 9.57% | 1.10x | ✅ | -| `hexbytes_getitem_index[3-b'\\x7f'*8]` | 2.4043406668064546e-05 | 2.215708643615461e-05 | 7.85% | 8.51% | 1.09x | ✅ | -| `hexbytes_getitem_index[3-b'\\x80'*8]` | 2.4185451277580215e-05 | 2.220252070115237e-05 | 8.20% | 8.93% | 1.09x | ✅ | -| `hexbytes_getitem_index[3-b'\\xde\\xad\\xbe\\xef']` | 2.416578629036297e-05 | 2.245919535217012e-05 | 7.06% | 7.60% | 1.08x | ✅ | -| `hexbytes_getitem_index[3-b'\\xff'*64]` | 2.424979064476921e-05 | 2.228048537107206e-05 | 8.12% | 8.84% | 1.09x | ✅ | -| `hexbytes_getitem_index[3-b'a'*1024]` | 2.418140350342552e-05 | 2.2413704386948553e-05 | 7.31% | 7.89% | 1.08x | ✅ | -| `hexbytes_getitem_index[3-long alternating]` | 2.421734347254145e-05 | 2.2279926524545042e-05 | 8.00% | 8.70% | 1.09x | ✅ | -| `hexbytes_getitem_index[3-mixed pattern]` | 2.409337727472331e-05 | 2.2309218636955755e-05 | 7.41% | 8.00% | 1.08x | ✅ | -| `hexbytes_getitem_index[3-multiples of 0x10]` | 2.4291450916342807e-05 | 2.22782199888511e-05 | 8.29% | 9.04% | 1.09x | ✅ | -| `hexbytes_getitem_index[3-palindrome ascii]` | 2.4055573142262087e-05 | 2.225896496132687e-05 | 7.47% | 8.07% | 1.08x | ✅ | -| `hexbytes_getitem_index[3-palindrome numeric]` | 2.4094594480437723e-05 | 2.220905889229611e-05 | 7.83% | 8.49% | 1.08x | ✅ | -| `hexbytes_getitem_index[3-palindrome]` | 2.4365135026216626e-05 | 2.2154709109780438e-05 | 9.07% | 9.98% | 1.10x | ✅ | -| `hexbytes_getitem_index[3-repeated 0-9]` | 2.40915407689209e-05 | 2.23016260325464e-05 | 7.43% | 8.03% | 1.08x | ✅ | -| `hexbytes_getitem_index[3-two patterns]` | 2.419838867551514e-05 | 2.2242963906091817e-05 | 8.08% | 8.79% | 1.09x | ✅ | -| `hexbytes_getitem_index[4-0-9]` | 2.4225362751715408e-05 | 2.2376983789720502e-05 | 7.63% | 8.26% | 1.08x | ✅ | -| `hexbytes_getitem_index[4-4-byte pattern]` | 2.4093413862181306e-05 | 2.2439733112820257e-05 | 6.86% | 7.37% | 1.07x | ✅ | -| `hexbytes_getitem_index[4-all byte values]` | 2.4205534562215246e-05 | 2.233192433220199e-05 | 7.74% | 8.39% | 1.08x | ✅ | -| `hexbytes_getitem_index[4-alternating 0x00/0xff]` | 2.4142128581668316e-05 | 2.226675666345603e-05 | 7.77% | 8.42% | 1.08x | ✅ | -| `hexbytes_getitem_index[4-alternating 0xaa/0x55]` | 2.392549092912116e-05 | 2.239951130004797e-05 | 6.38% | 6.81% | 1.07x | ✅ | -| `hexbytes_getitem_index[4-ascii sentence]` | 2.4202291480289368e-05 | 2.238281495459324e-05 | 7.52% | 8.13% | 1.08x | ✅ | -| `hexbytes_getitem_index[4-b'\\x00'*32]` | 2.4111002907152292e-05 | 2.2311781598417136e-05 | 7.46% | 8.06% | 1.08x | ✅ | -| `hexbytes_getitem_index[4-b'\\x01'*100]` | 2.3886035191243716e-05 | 2.252541453686808e-05 | 5.70% | 6.04% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-b'\\x01'*2048]` | 2.4071647836660192e-05 | 2.2160847006709516e-05 | 7.94% | 8.62% | 1.09x | ✅ | -| `hexbytes_getitem_index[4-b'\\x10\\x20\\x30\\x40\\x50']` | 2.40300307229132e-05 | 2.2472360642414388e-05 | 6.48% | 6.93% | 1.07x | ✅ | -| `hexbytes_getitem_index[4-b'\\x7f'*8]` | 2.4049626065524357e-05 | 2.242792441163613e-05 | 6.74% | 7.23% | 1.07x | ✅ | -| `hexbytes_getitem_index[4-b'\\x80'*8]` | 2.3952142444911515e-05 | 2.241171927364177e-05 | 6.43% | 6.87% | 1.07x | ✅ | -| `hexbytes_getitem_index[4-b'\\xff'*64]` | 2.4331249666087732e-05 | 2.2173648188021472e-05 | 8.87% | 9.73% | 1.10x | ✅ | -| `hexbytes_getitem_index[4-b'a'*1024]` | 2.412433860381172e-05 | 2.220345002452317e-05 | 7.96% | 8.65% | 1.09x | ✅ | -| `hexbytes_getitem_index[4-long alternating]` | 2.3746688109508442e-05 | 2.228078712742679e-05 | 6.17% | 6.58% | 1.07x | ✅ | -| `hexbytes_getitem_index[4-mixed pattern]` | 2.421384480853815e-05 | 2.237487865437409e-05 | 7.59% | 8.22% | 1.08x | ✅ | -| `hexbytes_getitem_index[4-multiples of 0x10]` | 2.395574784696316e-05 | 2.2419082520404426e-05 | 6.41% | 6.85% | 1.07x | ✅ | -| `hexbytes_getitem_index[4-palindrome ascii]` | 2.4261678938690255e-05 | 2.23500368260087e-05 | 7.88% | 8.55% | 1.09x | ✅ | -| `hexbytes_getitem_index[4-palindrome numeric]` | 2.41532253466421e-05 | 2.2301447254628233e-05 | 7.67% | 8.30% | 1.08x | ✅ | -| `hexbytes_getitem_index[4-palindrome]` | 2.4166279302246413e-05 | 2.2334181152484028e-05 | 7.58% | 8.20% | 1.08x | ✅ | -| `hexbytes_getitem_index[4-repeated 0-9]` | 2.419783483995442e-05 | 2.2305215077217098e-05 | 7.82% | 8.49% | 1.08x | ✅ | -| `hexbytes_getitem_index[4-two patterns]` | 2.4166691393135993e-05 | 2.234579277765461e-05 | 7.53% | 8.15% | 1.08x | ✅ | -| `hexbytes_getitem_index[5-0-9]` | 2.415451803450219e-05 | 2.2344492522918423e-05 | 7.49% | 8.10% | 1.08x | ✅ | -| `hexbytes_getitem_index[5-4-byte pattern]` | 2.4461668779704913e-05 | 2.2468695798607122e-05 | 8.15% | 8.87% | 1.09x | ✅ | -| `hexbytes_getitem_index[5-all byte values]` | 2.4526896095555104e-05 | 2.2350740438410917e-05 | 8.87% | 9.74% | 1.10x | ✅ | -| `hexbytes_getitem_index[5-alternating 0x00/0xff]` | 2.4143876749553816e-05 | 2.247950545067045e-05 | 6.89% | 7.40% | 1.07x | ✅ | -| `hexbytes_getitem_index[5-alternating 0xaa/0x55]` | 2.3826695283883187e-05 | 2.2581648821141653e-05 | 5.23% | 5.51% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-ascii sentence]` | 2.4331468357782205e-05 | 2.2098955099183076e-05 | 9.18% | 10.10% | 1.10x | ✅ | -| `hexbytes_getitem_index[5-b'\\x00'*32]` | 2.430473650514047e-05 | 2.2990063662705162e-05 | 5.41% | 5.72% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-b'\\x01'*100]` | 2.4267668357544978e-05 | 2.2323805960041367e-05 | 8.01% | 8.71% | 1.09x | ✅ | -| `hexbytes_getitem_index[5-b'\\x01'*2048]` | 2.408882952909903e-05 | 2.2374081719132762e-05 | 7.12% | 7.66% | 1.08x | ✅ | -| `hexbytes_getitem_index[5-b'\\x7f'*8]` | 2.4414670015407634e-05 | 2.2259146179606612e-05 | 8.83% | 9.68% | 1.10x | ✅ | -| `hexbytes_getitem_index[5-b'\\x80'*8]` | 2.3977866052149447e-05 | 2.2838356073548533e-05 | 4.75% | 4.99% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-b'\\xff'*64]` | 2.4916472762100033e-05 | 2.2197529395813842e-05 | 10.91% | 12.25% | 1.12x | ✅ | -| `hexbytes_getitem_index[5-b'a'*1024]` | 2.4429348633123922e-05 | 2.2397836996968996e-05 | 8.32% | 9.07% | 1.09x | ✅ | -| `hexbytes_getitem_index[5-long alternating]` | 2.442525775135446e-05 | 2.2398005774624392e-05 | 8.30% | 9.05% | 1.09x | ✅ | -| `hexbytes_getitem_index[5-mixed pattern]` | 2.4426943229586223e-05 | 2.231260201431081e-05 | 8.66% | 9.48% | 1.09x | ✅ | -| `hexbytes_getitem_index[5-multiples of 0x10]` | 2.4258021054845778e-05 | 2.2375936533533025e-05 | 7.76% | 8.41% | 1.08x | ✅ | -| `hexbytes_getitem_index[5-palindrome ascii]` | 2.4595723090018547e-05 | 2.226629253598567e-05 | 9.47% | 10.46% | 1.10x | ✅ | -| `hexbytes_getitem_index[5-palindrome]` | 2.4184849605882023e-05 | 2.240437206199145e-05 | 7.36% | 7.95% | 1.08x | ✅ | -| `hexbytes_getitem_index[5-repeated 0-9]` | 2.4449071312681704e-05 | 2.2223056236256117e-05 | 9.10% | 10.02% | 1.10x | ✅ | -| `hexbytes_getitem_index[5-two patterns]` | 2.4600495698672144e-05 | 2.2241351518153398e-05 | 9.59% | 10.61% | 1.11x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-0-9]` | 8.109822745421519e-05 | 5.934696680707812e-05 | 26.82% | 36.65% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-4-byte pattern]` | 8.237302343490868e-05 | 5.937544201425723e-05 | 27.92% | 38.73% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-all byte values]` | 8.243582634270907e-05 | 5.91607607292822e-05 | 28.23% | 39.34% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-alternating 0x00/0xff]` | 8.284119780003567e-05 | 5.8901962489552276e-05 | 28.90% | 40.64% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-alternating 0xaa/0x55]` | 8.274262507405514e-05 | 5.871635081362543e-05 | 29.04% | 40.92% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-ascii sentence]` | 8.191191542988262e-05 | 5.8757131631430473e-05 | 28.27% | 39.41% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'']` | 8.019374245683357e-05 | 5.58313000935178e-05 | 30.38% | 43.64% | 1.44x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00'*32]` | 8.217610250724421e-05 | 5.905784780246903e-05 | 28.13% | 39.15% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00\\xff\\x00\\xff']` | 8.437779492822262e-05 | 5.957040467167534e-05 | 29.40% | 41.64% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*100]` | 8.185415211611684e-05 | 5.895277111103877e-05 | 27.98% | 38.85% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*2048]` | 8.271197555162181e-05 | 5.948375176320305e-05 | 28.08% | 39.05% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01\\x02\\x03']` | 8.291729849357516e-05 | 5.955597468410873e-05 | 28.17% | 39.23% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.308586567426791e-05 | 6.0307195153575426e-05 | 27.42% | 37.77% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x7f'*8]` | 8.251827976656279e-05 | 5.890079248388075e-05 | 28.62% | 40.10% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x80'*8]` | 8.214448578611163e-05 | 5.946997317733736e-05 | 27.60% | 38.13% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\xde\\xad\\xbe\\xef']` | 8.239467528411867e-05 | 5.930399517222878e-05 | 28.02% | 38.94% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\xff'*64]` | 8.250207007116865e-05 | 5.887144119965016e-05 | 28.64% | 40.14% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'a'*1024]` | 8.237465018695229e-05 | 5.891534965676207e-05 | 28.48% | 39.82% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'abc']` | 8.148292657655743e-05 | 5.8754134224980015e-05 | 27.89% | 38.68% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-long alternating]` | 8.205347586967844e-05 | 5.914824296099802e-05 | 27.92% | 38.73% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-mixed pattern]` | 8.17242604360277e-05 | 5.999690367474975e-05 | 26.59% | 36.21% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-multiples of 0x10]` | 8.208982248861554e-05 | 5.9880895932595985e-05 | 27.05% | 37.09% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-palindrome ascii]` | 8.245719274508182e-05 | 5.9193080142279505e-05 | 28.21% | 39.30% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-palindrome numeric]` | 8.224783716585996e-05 | 5.841675369391383e-05 | 28.97% | 40.79% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-palindrome]` | 8.176603901363424e-05 | 5.9243127119971696e-05 | 27.55% | 38.02% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-repeated 0-9]` | 8.126241957498211e-05 | 5.855319337614148e-05 | 27.95% | 38.78% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-single 0xff]` | 8.107511893099894e-05 | 5.772708525918401e-05 | 28.80% | 40.45% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-single null byte]` | 8.067200033316357e-05 | 5.7539193662996e-05 | 28.68% | 40.20% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-two patterns]` | 8.163885830741557e-05 | 5.881779586400655e-05 | 27.95% | 38.80% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-0-9]` | 8.315856726264862e-05 | 6.087453332108221e-05 | 26.80% | 36.61% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-4-byte pattern]` | 8.28790134479815e-05 | 5.9083644765355076e-05 | 28.71% | 40.27% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-all byte values]` | 8.367096508132459e-05 | 5.953004733338457e-05 | 28.85% | 40.55% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-alternating 0x00/0xff]` | 8.436305355602156e-05 | 5.982426018082541e-05 | 29.09% | 41.02% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-alternating 0xaa/0x55]` | 8.361811276539272e-05 | 5.975743397892355e-05 | 28.54% | 39.93% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-ascii sentence]` | 8.34619878601952e-05 | 5.965085137592923e-05 | 28.53% | 39.92% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'']` | 8.200373242947297e-05 | 5.7324917483730085e-05 | 30.09% | 43.05% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x00'*32]` | 8.363976687310334e-05 | 5.984127959333996e-05 | 28.45% | 39.77% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x00\\xff\\x00\\xff']` | 8.285443299014988e-05 | 5.9974818752046784e-05 | 27.61% | 38.15% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*100]` | 8.36396541847934e-05 | 6.010157424496724e-05 | 28.14% | 39.16% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*2048]` | 8.276590091865628e-05 | 5.9292349705907625e-05 | 28.36% | 39.59% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x01\\x02\\x03']` | 8.308336083350276e-05 | 5.982714580750343e-05 | 27.99% | 38.87% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.28157121285493e-05 | 6.088234132945903e-05 | 26.48% | 36.03% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x7f'*8]` | 8.343262764136882e-05 | 5.963962369002214e-05 | 28.52% | 39.89% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x80'*8]` | 8.332028949151277e-05 | 5.980416016845955e-05 | 28.22% | 39.32% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\xde\\xad\\xbe\\xef']` | 8.438530174427448e-05 | 6.021107705096401e-05 | 28.65% | 40.15% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\xff'*64]` | 8.325727841261816e-05 | 5.989217447807462e-05 | 28.06% | 39.01% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'a'*1024]` | 8.300412326577643e-05 | 6.033404652818307e-05 | 27.31% | 37.57% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'abc']` | 8.396832953872635e-05 | 6.0080285275518486e-05 | 28.45% | 39.76% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-long alternating]` | 8.399434960635853e-05 | 5.946872631765933e-05 | 29.20% | 41.24% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-mixed pattern]` | 8.354582031481949e-05 | 5.9693920430457674e-05 | 28.55% | 39.96% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-multiples of 0x10]` | 8.318688003799056e-05 | 5.993481766612991e-05 | 27.95% | 38.80% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-palindrome ascii]` | 8.26215916058924e-05 | 5.9128798860127226e-05 | 28.43% | 39.73% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-palindrome numeric]` | 8.379672533288304e-05 | 5.8854254750571816e-05 | 29.77% | 42.38% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-palindrome]` | 8.334520737485796e-05 | 5.97315193824666e-05 | 28.33% | 39.53% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-repeated 0-9]` | 8.339960154942494e-05 | 5.917407804143091e-05 | 29.05% | 40.94% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-single 0xff]` | 8.20461445662428e-05 | 5.816234607806348e-05 | 29.11% | 41.06% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-single null byte]` | 8.160932409201539e-05 | 5.846077686885992e-05 | 28.37% | 39.60% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-two patterns]` | 8.34719302031235e-05 | 6.0228532935824554e-05 | 27.85% | 38.59% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-0-9]` | 8.304120442521239e-05 | 5.9513773017755354e-05 | 28.33% | 39.53% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-4-byte pattern]` | 8.278786010985059e-05 | 6.029716845854711e-05 | 27.17% | 37.30% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-all byte values]` | 8.296964237701681e-05 | 6.04454378967543e-05 | 27.15% | 37.26% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-alternating 0x00/0xff]` | 8.23194077347433e-05 | 5.946044486429683e-05 | 27.77% | 38.44% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-alternating 0xaa/0x55]` | 8.230309523756451e-05 | 5.9477118903230374e-05 | 27.73% | 38.38% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-ascii sentence]` | 8.255311079352084e-05 | 5.982115968614051e-05 | 27.54% | 38.00% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'']` | 8.020242400871506e-05 | 5.6964174541072085e-05 | 28.97% | 40.79% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x00'*32]` | 8.345150530347419e-05 | 5.987323700326012e-05 | 28.25% | 39.38% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x00\\xff\\x00\\xff']` | 8.31584389378622e-05 | 6.010803852983335e-05 | 27.72% | 38.35% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*100]` | 8.296461210986003e-05 | 5.978936685032712e-05 | 27.93% | 38.76% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*2048]` | 8.319623319560384e-05 | 5.990714490684664e-05 | 27.99% | 38.88% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x01\\x02\\x03']` | 8.320992228369728e-05 | 6.0357676475539456e-05 | 27.46% | 37.86% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.272856800534554e-05 | 6.0278835675956855e-05 | 27.14% | 37.24% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x7f'*8]` | 8.263435659002694e-05 | 5.9938958743133706e-05 | 27.46% | 37.86% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x80'*8]` | 8.266650652744275e-05 | 5.984373975126228e-05 | 27.61% | 38.14% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\xde\\xad\\xbe\\xef']` | 8.3189246222292e-05 | 5.990667752574828e-05 | 27.99% | 38.86% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\xff'*64]` | 8.344542083767353e-05 | 6.0266538073128244e-05 | 27.78% | 38.46% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'a'*1024]` | 8.337305391026689e-05 | 6.013827141105082e-05 | 27.87% | 38.64% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'abc']` | 8.306302735194207e-05 | 5.992090918115183e-05 | 27.86% | 38.62% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-long alternating]` | 8.295460001709453e-05 | 5.9885874774813256e-05 | 27.81% | 38.52% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-mixed pattern]` | 8.23649272630917e-05 | 5.9724700342349976e-05 | 27.49% | 37.91% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-multiples of 0x10]` | 8.323216830405566e-05 | 6.000593971460864e-05 | 27.91% | 38.71% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-palindrome ascii]` | 8.292404566043788e-05 | 5.999141718111593e-05 | 27.65% | 38.23% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-palindrome numeric]` | 8.214486541281033e-05 | 6.034271107894215e-05 | 26.54% | 36.13% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-palindrome]` | 8.2815195845254e-05 | 5.98974898654265e-05 | 27.67% | 38.26% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-repeated 0-9]` | 8.254985224050253e-05 | 5.995422737176669e-05 | 27.37% | 37.69% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-single 0xff]` | 7.996285563052716e-05 | 5.7204382228366704e-05 | 28.46% | 39.78% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-single null byte]` | 8.058896685549699e-05 | 5.718741378433685e-05 | 29.04% | 40.92% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-two patterns]` | 8.301480051497781e-05 | 6.008519960158616e-05 | 27.62% | 38.16% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-0-9]` | 8.299544448236158e-05 | 5.896065511233726e-05 | 28.96% | 40.76% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-4-byte pattern]` | 8.270699897511886e-05 | 6.056914953410043e-05 | 26.77% | 36.55% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-all byte values]` | 8.356663954073812e-05 | 5.99797763160345e-05 | 28.23% | 39.32% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-alternating 0x00/0xff]` | 8.271889531588747e-05 | 5.932319626420986e-05 | 28.28% | 39.44% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-alternating 0xaa/0x55]` | 8.277668807600246e-05 | 6.019526804914412e-05 | 27.28% | 37.51% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-ascii sentence]` | 8.259952441075653e-05 | 6.018178392360118e-05 | 27.14% | 37.25% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'']` | 7.962183566050274e-05 | 5.643857867021551e-05 | 29.12% | 41.08% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x00'*32]` | 8.257460615322352e-05 | 5.897461548820421e-05 | 28.58% | 40.02% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x00\\xff\\x00\\xff']` | 8.224552179085638e-05 | 5.906014966779389e-05 | 28.19% | 39.26% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*100]` | 8.245628560434216e-05 | 5.965399311720529e-05 | 27.65% | 38.22% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*2048]` | 0.00010659857088805951 | 7.742516723332857e-05 | 27.37% | 37.68% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x01\\x02\\x03']` | 8.09819284756203e-05 | 5.719355957427316e-05 | 29.37% | 41.59% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.489648422145543e-05 | 5.9704603131030955e-05 | 29.67% | 42.19% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x7f'*8]` | 8.219614473907485e-05 | 5.9671690729327297e-05 | 27.40% | 37.75% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x80'*8]` | 8.230548619491193e-05 | 5.9878502152602626e-05 | 27.25% | 37.45% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\xde\\xad\\xbe\\xef']` | 8.190242840314268e-05 | 5.9504331531713234e-05 | 27.35% | 37.64% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\xff'*64]` | 8.20909809159168e-05 | 5.906328035201062e-05 | 28.05% | 38.99% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'a'*1024]` | 0.00010101191562729828 | 7.329977225342727e-05 | 27.43% | 37.81% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'abc']` | 7.969101037602326e-05 | 5.720501374002099e-05 | 28.22% | 39.31% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-long alternating]` | 9.837515224005266e-05 | 7.53383309842874e-05 | 23.42% | 30.58% | 1.31x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-mixed pattern]` | 8.350682048495061e-05 | 5.992745047153371e-05 | 28.24% | 39.35% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-multiples of 0x10]` | 8.280391057662391e-05 | 5.8546699575472135e-05 | 29.29% | 41.43% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-palindrome ascii]` | 8.238321118968775e-05 | 5.891295247060633e-05 | 28.49% | 39.84% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-palindrome numeric]` | 8.228437180326548e-05 | 5.9291704237165855e-05 | 27.94% | 38.78% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-palindrome]` | 8.282618157775673e-05 | 5.92753859994165e-05 | 28.43% | 39.73% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-repeated 0-9]` | 8.203449842994447e-05 | 6.023450620364193e-05 | 26.57% | 36.19% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-single 0xff]` | 8.036414564370682e-05 | 5.695319034782047e-05 | 29.13% | 41.11% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-single null byte]` | 7.998914033665058e-05 | 5.700367588008864e-05 | 28.74% | 40.32% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-two patterns]` | 8.217657261863478e-05 | 5.916327051860404e-05 | 28.00% | 38.90% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-0-9]` | 8.138661546181942e-05 | 5.7476257655937686e-05 | 29.38% | 41.60% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-4-byte pattern]` | 8.225540526991797e-05 | 5.9374155693097254e-05 | 27.82% | 38.54% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-all byte values]` | 8.257653616220237e-05 | 5.9490670320242734e-05 | 27.96% | 38.81% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-alternating 0x00/0xff]` | 8.154132955191952e-05 | 5.8385853648772835e-05 | 28.40% | 39.66% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-alternating 0xaa/0x55]` | 8.151512669257545e-05 | 5.833652811055827e-05 | 28.43% | 39.73% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-ascii sentence]` | 8.117700455756239e-05 | 5.7870404214894385e-05 | 28.71% | 40.27% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'']` | 7.80272089885524e-05 | 5.508355415820893e-05 | 29.40% | 41.65% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x00'*32]` | 8.131586641342035e-05 | 5.795855399364036e-05 | 28.72% | 40.30% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x00\\xff\\x00\\xff']` | 8.002308529565672e-05 | 5.823754509443074e-05 | 27.22% | 37.41% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*100]` | 8.15837274465782e-05 | 5.8344582540813137e-05 | 28.49% | 39.83% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*2048]` | 0.00010473972853924946 | 7.865984117509225e-05 | 24.90% | 33.16% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x01\\x02\\x03']` | 8.071407620333572e-05 | 5.789782852382632e-05 | 28.27% | 39.41% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.150298185300441e-05 | 5.818686185731129e-05 | 28.61% | 40.07% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x7f'*8]` | 8.102922622328996e-05 | 5.6653477484053965e-05 | 30.08% | 43.03% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x80'*8]` | 8.096505749011665e-05 | 5.7391639880672964e-05 | 29.12% | 41.07% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\xde\\xad\\xbe\\xef']` | 8.032329702784517e-05 | 5.9405804273619835e-05 | 26.04% | 35.21% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\xff'*64]` | 8.17012649923086e-05 | 5.92151706162135e-05 | 27.52% | 37.97% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'a'*1024]` | 9.640329246121791e-05 | 6.953683262551344e-05 | 27.87% | 38.64% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'abc']` | 8.039482061330855e-05 | 5.792697174710155e-05 | 27.95% | 38.79% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-long alternating]` | 9.952732815210545e-05 | 7.21915969191772e-05 | 27.47% | 37.87% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-mixed pattern]` | 8.188805349147834e-05 | 5.833756062421042e-05 | 28.76% | 40.37% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-multiples of 0x10]` | 8.094904935201397e-05 | 5.751439998795577e-05 | 28.95% | 40.75% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-palindrome ascii]` | 8.17604120132599e-05 | 5.7333737884141926e-05 | 29.88% | 42.60% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-palindrome numeric]` | 8.069605996347859e-05 | 5.734129211223428e-05 | 28.94% | 40.73% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-palindrome]` | 8.034148623404495e-05 | 5.7820602721187005e-05 | 28.03% | 38.95% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-repeated 0-9]` | 8.105601103520871e-05 | 5.8020739404697555e-05 | 28.42% | 39.70% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-single 0xff]` | 7.842684498258443e-05 | 5.49025784929141e-05 | 30.00% | 42.85% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-single null byte]` | 7.901352154780409e-05 | 5.525479950583057e-05 | 30.07% | 43.00% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-two patterns]` | 8.120628381319012e-05 | 5.8170835199795765e-05 | 28.37% | 39.60% | 1.40x | ✅ | -| `hexbytes_new['']` | 7.068547401441922e-05 | 3.643496885379037e-05 | 48.45% | 94.00% | 1.94x | ✅ | -| `hexbytes_new['0x'+'00'*64]` | 9.197574867347415e-05 | 4.9615136987271256e-05 | 46.06% | 85.38% | 1.85x | ✅ | -| `hexbytes_new['0x'+'a'*128]` | 9.224377851142097e-05 | 4.91000447034653e-05 | 46.77% | 87.87% | 1.88x | ✅ | -| `hexbytes_new['0x'+'ff'*32]` | 8.915199276218098e-05 | 4.7818932584576934e-05 | 46.36% | 86.44% | 1.86x | ✅ | -| `hexbytes_new['0x']` | 7.87655623348165e-05 | 3.803289051475865e-05 | 51.71% | 107.10% | 2.07x | ✅ | -| `hexbytes_new['0x1234']` | 8.580084860801838e-05 | 4.4983292952141135e-05 | 47.57% | 90.74% | 1.91x | ✅ | -| `hexbytes_new['0xCAFEBABE']` | 8.745935556735071e-05 | 4.4608621141467414e-05 | 49.00% | 96.06% | 1.96x | ✅ | -| `hexbytes_new['0xabcdef']` | 8.669439737584206e-05 | 4.526726553417234e-05 | 47.79% | 91.52% | 1.92x | ✅ | -| `hexbytes_new['0xdeadbeef']` | 8.664875764727009e-05 | 4.4363382656374295e-05 | 48.80% | 95.32% | 1.95x | ✅ | -| `hexbytes_new['abc']` | 8.293618598035809e-05 | 4.754185887759291e-05 | 42.68% | 74.45% | 1.74x | ✅ | -| `hexbytes_new['deadbeef']` | 7.650124734586989e-05 | 4.160965351845961e-05 | 45.61% | 83.85% | 1.84x | ✅ | -| `hexbytes_new[0-9]` | 4.340209798992782e-05 | 2.6040666775004528e-05 | 40.00% | 66.67% | 1.67x | ✅ | -| `hexbytes_new[0]` | 0.00012063733591264394 | 6.089289052193173e-05 | 49.52% | 98.11% | 1.98x | ✅ | -| `hexbytes_new[123456]` | 0.00012396047368376498 | 6.593651967896935e-05 | 46.81% | 88.00% | 1.88x | ✅ | -| `hexbytes_new[2**16]` | 0.00012571457356197447 | 6.647586311219946e-05 | 47.12% | 89.11% | 1.89x | ✅ | -| `hexbytes_new[2**256-1]` | 0.00013274509653117507 | 7.41734686824851e-05 | 44.12% | 78.97% | 1.79x | ✅ | -| `hexbytes_new[2**32]` | 0.0001293944631536387 | 6.970192678203201e-05 | 46.13% | 85.64% | 1.86x | ✅ | -| `hexbytes_new[2**64]` | 0.00012802655259240418 | 7.197533946136962e-05 | 43.78% | 77.88% | 1.78x | ✅ | -| `hexbytes_new[2**8]` | 0.0001252371056731053 | 6.329803195779175e-05 | 49.46% | 97.85% | 1.98x | ✅ | -| `hexbytes_new[4-byte pattern]` | 4.41649981847421e-05 | 2.726303579156121e-05 | 38.27% | 62.00% | 1.62x | ✅ | -| `hexbytes_new[False]` | 5.9703296611241896e-05 | 2.6816197056187918e-05 | 55.08% | 122.64% | 2.23x | ✅ | -| `hexbytes_new[True]` | 5.9786884212968516e-05 | 2.70089403356989e-05 | 54.82% | 121.36% | 2.21x | ✅ | -| `hexbytes_new[all byte values]` | 4.463154656435076e-05 | 2.7042754048534536e-05 | 39.41% | 65.04% | 1.65x | ✅ | -| `hexbytes_new[alternating 0x00/0xff]` | 4.4156426448369485e-05 | 2.6583346320884296e-05 | 39.80% | 66.11% | 1.66x | ✅ | -| `hexbytes_new[alternating 0xaa/0x55]` | 4.354281896842732e-05 | 2.6416438015906693e-05 | 39.33% | 64.83% | 1.65x | ✅ | -| `hexbytes_new[ascii sentence]` | 4.312299561191494e-05 | 2.6484634693788167e-05 | 38.58% | 62.82% | 1.63x | ✅ | -| `hexbytes_new[b'']` | 4.2152835637097806e-05 | 2.5284057179679503e-05 | 40.02% | 66.72% | 1.67x | ✅ | -| `hexbytes_new[b'\\x00'*32]` | 4.336451790986668e-05 | 2.635797873913242e-05 | 39.22% | 64.52% | 1.65x | ✅ | -| `hexbytes_new[b'\\x00\\xff\\x00\\xff']` | 4.286373624264335e-05 | 2.6259770200542067e-05 | 38.74% | 63.23% | 1.63x | ✅ | -| `hexbytes_new[b'\\x01'*100]` | 4.330684581547887e-05 | 2.675745215537249e-05 | 38.21% | 61.85% | 1.62x | ✅ | -| `hexbytes_new[b'\\x01'*2048]` | 5.6128810407512204e-05 | 3.912339990271881e-05 | 30.30% | 43.47% | 1.43x | ✅ | -| `hexbytes_new[b'\\x01\\x02\\x03']` | 4.2929157612584444e-05 | 2.61001821521611e-05 | 39.20% | 64.48% | 1.64x | ✅ | -| `hexbytes_new[b'\\x10\\x20\\x30\\x40\\x50']` | 4.3407519670143946e-05 | 2.597213039262449e-05 | 40.17% | 67.13% | 1.67x | ✅ | -| `hexbytes_new[b'\\x7f'*8]` | 4.2517448491608834e-05 | 2.617243936818634e-05 | 38.44% | 62.45% | 1.62x | ✅ | -| `hexbytes_new[b'\\x80'*8]` | 4.289828989332265e-05 | 2.5947345279386856e-05 | 39.51% | 65.33% | 1.65x | ✅ | -| `hexbytes_new[b'\\xde\\xad\\xbe\\xef']` | 4.356827596535527e-05 | 2.613323389082877e-05 | 40.02% | 66.72% | 1.67x | ✅ | -| `hexbytes_new[b'\\xff'*64]` | 4.172100721820488e-05 | 2.6787940839330786e-05 | 35.79% | 55.75% | 1.56x | ✅ | -| `hexbytes_new[b'a'*1024]` | 5.1019182237996924e-05 | 3.310481681965658e-05 | 35.11% | 54.11% | 1.54x | ✅ | -| `hexbytes_new[b'abc']` | 4.2440613873431844e-05 | 2.6034690509894992e-05 | 38.66% | 63.02% | 1.63x | ✅ | -| `hexbytes_new[bytearray(0-9)]` | 6.970813439963739e-05 | 3.719664475122067e-05 | 46.64% | 87.40% | 1.87x | ✅ | -| `hexbytes_new[bytearray(4-byte pattern)]` | 6.970846486889084e-05 | 3.885470384648831e-05 | 44.26% | 79.41% | 1.79x | ✅ | -| `hexbytes_new[bytearray(all byte values)]` | 6.941631413474463e-05 | 3.833721049778523e-05 | 44.77% | 81.07% | 1.81x | ✅ | -| `hexbytes_new[bytearray(alternating 0x00/0xff)]` | 6.805770772453928e-05 | 3.801313540360703e-05 | 44.15% | 79.04% | 1.79x | ✅ | -| `hexbytes_new[bytearray(alternating 0xaa/0x55)]` | 6.90768099303549e-05 | 3.796775562541672e-05 | 45.04% | 81.94% | 1.82x | ✅ | -| `hexbytes_new[bytearray(ascii sentence)]` | 6.965189739410647e-05 | 3.726624366115849e-05 | 46.50% | 86.90% | 1.87x | ✅ | -| `hexbytes_new[bytearray(b'')]` | 6.775240273081897e-05 | 3.538977516035628e-05 | 47.77% | 91.45% | 1.91x | ✅ | -| `hexbytes_new[bytearray(b'\\x00'*32)]` | 6.983471392448371e-05 | 3.6971884609298236e-05 | 47.06% | 88.89% | 1.89x | ✅ | -| `hexbytes_new[bytearray(b'\\x00\\xff\\x00\\xff')]` | 6.97493531307348e-05 | 3.773981397671745e-05 | 45.89% | 84.82% | 1.85x | ✅ | -| `hexbytes_new[bytearray(b'\\x01'*100)]` | 7.037082855316753e-05 | 3.837815996964463e-05 | 45.46% | 83.36% | 1.83x | ✅ | -| `hexbytes_new[bytearray(b'\\x01'*2048)]` | 9.060026917118623e-05 | 5.5692310929631646e-05 | 38.53% | 62.68% | 1.63x | ✅ | -| `hexbytes_new[bytearray(b'\\x01\\x02\\x03')]` | 6.946552137721825e-05 | 3.790164765100416e-05 | 45.44% | 83.28% | 1.83x | ✅ | -| `hexbytes_new[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 6.93743376612542e-05 | 3.8271792710677156e-05 | 44.83% | 81.27% | 1.81x | ✅ | -| `hexbytes_new[bytearray(b'\\x7f'*8)]` | 6.923713105893634e-05 | 3.761470069718089e-05 | 45.67% | 84.07% | 1.84x | ✅ | -| `hexbytes_new[bytearray(b'\\x80'*8)]` | 6.897039304319232e-05 | 3.7447489753324534e-05 | 45.70% | 84.18% | 1.84x | ✅ | -| `hexbytes_new[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 6.962534111419634e-05 | 3.770667377618231e-05 | 45.84% | 84.65% | 1.85x | ✅ | -| `hexbytes_new[bytearray(b'\\xff'*64)]` | 7.021056949485115e-05 | 3.8508887289211266e-05 | 45.15% | 82.32% | 1.82x | ✅ | -| `hexbytes_new[bytearray(b'a'*1024)]` | 8.496938412065207e-05 | 5.059700542122202e-05 | 40.45% | 67.93% | 1.68x | ✅ | -| `hexbytes_new[bytearray(b'abc')]` | 6.884329304829434e-05 | 3.840619568508685e-05 | 44.21% | 79.25% | 1.79x | ✅ | -| `hexbytes_new[bytearray(long alternating)]` | 8.440338861360044e-05 | 5.012104799376672e-05 | 40.62% | 68.40% | 1.68x | ✅ | -| `hexbytes_new[bytearray(mixed pattern)]` | 6.873307577655587e-05 | 3.8305960634412986e-05 | 44.27% | 79.43% | 1.79x | ✅ | -| `hexbytes_new[bytearray(multiples of 0x10)]` | 6.921225604098673e-05 | 3.7229421649516645e-05 | 46.21% | 85.91% | 1.86x | ✅ | -| `hexbytes_new[bytearray(palindrome ascii)]` | 6.93855133482087e-05 | 3.7849552744185434e-05 | 45.45% | 83.32% | 1.83x | ✅ | -| `hexbytes_new[bytearray(palindrome numeric)]` | 6.979341347497555e-05 | 3.763240799590082e-05 | 46.08% | 85.46% | 1.85x | ✅ | -| `hexbytes_new[bytearray(palindrome)]` | 7.020136996698736e-05 | 3.77985894345203e-05 | 46.16% | 85.72% | 1.86x | ✅ | -| `hexbytes_new[bytearray(repeated 0-9)]` | 6.994889881439206e-05 | 3.812529913574517e-05 | 45.50% | 83.47% | 1.83x | ✅ | -| `hexbytes_new[bytearray(single 0xff)]` | 6.836217284182861e-05 | 3.808100435269928e-05 | 44.30% | 79.52% | 1.80x | ✅ | -| `hexbytes_new[bytearray(single null byte)]` | 6.935694739514334e-05 | 3.78242107875361e-05 | 45.46% | 83.37% | 1.83x | ✅ | -| `hexbytes_new[bytearray(two patterns)]` | 6.97437302110927e-05 | 3.845997863189549e-05 | 44.86% | 81.34% | 1.81x | ✅ | -| `hexbytes_new[long alternating]` | 5.091455098603236e-05 | 3.301766039444292e-05 | 35.15% | 54.20% | 1.54x | ✅ | -| `hexbytes_new[memoryview(0-9)]` | 8.343104370699861e-05 | 4.379877314171106e-05 | 47.50% | 90.49% | 1.90x | ✅ | -| `hexbytes_new[memoryview(4-byte pattern)]` | 8.41042181017874e-05 | 4.420950625898282e-05 | 47.43% | 90.24% | 1.90x | ✅ | -| `hexbytes_new[memoryview(all byte values)]` | 8.267996448740742e-05 | 4.449823822126817e-05 | 46.18% | 85.81% | 1.86x | ✅ | -| `hexbytes_new[memoryview(alternating 0x00/0xff)]` | 8.172730304613137e-05 | 4.330329300998063e-05 | 47.01% | 88.73% | 1.89x | ✅ | -| `hexbytes_new[memoryview(alternating 0xaa/0x55)]` | 8.214762799605057e-05 | 4.3247803757400135e-05 | 47.35% | 89.95% | 1.90x | ✅ | -| `hexbytes_new[memoryview(ascii sentence)]` | 8.296310363068434e-05 | 4.300026322622829e-05 | 48.17% | 92.94% | 1.93x | ✅ | -| `hexbytes_new[memoryview(b'')]` | 8.153908291327685e-05 | 4.020269118679214e-05 | 50.70% | 102.82% | 2.03x | ✅ | -| `hexbytes_new[memoryview(b'\\x00'*32)]` | 8.351918135323528e-05 | 4.344130819721966e-05 | 47.99% | 92.26% | 1.92x | ✅ | -| `hexbytes_new[memoryview(b'\\x00\\xff\\x00\\xff')]` | 8.418686631227915e-05 | 4.265831373366244e-05 | 49.33% | 97.35% | 1.97x | ✅ | -| `hexbytes_new[memoryview(b'\\x01'*100)]` | 8.259019703656104e-05 | 4.330114728659343e-05 | 47.57% | 90.73% | 1.91x | ✅ | -| `hexbytes_new[memoryview(b'\\x01'*2048)]` | 0.00010499538549097385 | 6.171489220806384e-05 | 41.22% | 70.13% | 1.70x | ✅ | -| `hexbytes_new[memoryview(b'\\x01\\x02\\x03')]` | 8.473542485608866e-05 | 4.3255419444745306e-05 | 48.95% | 95.90% | 1.96x | ✅ | -| `hexbytes_new[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 8.336554980933414e-05 | 4.258888556224709e-05 | 48.91% | 95.74% | 1.96x | ✅ | -| `hexbytes_new[memoryview(b'\\x7f'*8)]` | 8.266674605054027e-05 | 4.352092062291172e-05 | 47.35% | 89.95% | 1.90x | ✅ | -| `hexbytes_new[memoryview(b'\\x80'*8)]` | 8.269438721119731e-05 | 4.3393891248270046e-05 | 47.52% | 90.57% | 1.91x | ✅ | -| `hexbytes_new[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 8.166555396946981e-05 | 4.3087162172112174e-05 | 47.24% | 89.54% | 1.90x | ✅ | -| `hexbytes_new[memoryview(b'\\xff'*64)]` | 8.188913998927564e-05 | 4.3585464327042605e-05 | 46.78% | 87.88% | 1.88x | ✅ | -| `hexbytes_new[memoryview(b'a'*1024)]` | 9.674288086752237e-05 | 5.642464994734783e-05 | 41.68% | 71.45% | 1.71x | ✅ | -| `hexbytes_new[memoryview(b'abc')]` | 8.184776197516628e-05 | 4.388500023831169e-05 | 46.38% | 86.51% | 1.87x | ✅ | -| `hexbytes_new[memoryview(long alternating)]` | 9.845307298160714e-05 | 5.516781647069556e-05 | 43.97% | 78.46% | 1.78x | ✅ | -| `hexbytes_new[memoryview(mixed pattern)]` | 8.287099922051888e-05 | 4.374904406483315e-05 | 47.21% | 89.42% | 1.89x | ✅ | -| `hexbytes_new[memoryview(multiples of 0x10)]` | 8.482230887441657e-05 | 4.3794560821620976e-05 | 48.37% | 93.68% | 1.94x | ✅ | -| `hexbytes_new[memoryview(palindrome ascii)]` | 8.254455598022554e-05 | 4.3318527663746757e-05 | 47.52% | 90.55% | 1.91x | ✅ | -| `hexbytes_new[memoryview(palindrome numeric)]` | 8.294892521197925e-05 | 4.2900149612502955e-05 | 48.28% | 93.35% | 1.93x | ✅ | -| `hexbytes_new[memoryview(palindrome)]` | 8.236613231441595e-05 | 4.261015625269018e-05 | 48.27% | 93.30% | 1.93x | ✅ | -| `hexbytes_new[memoryview(repeated 0-9)]` | 8.13034657610096e-05 | 4.356140340970168e-05 | 46.42% | 86.64% | 1.87x | ✅ | -| `hexbytes_new[memoryview(single 0xff)]` | 8.313414886641096e-05 | 4.353548062335253e-05 | 47.63% | 90.96% | 1.91x | ✅ | -| `hexbytes_new[memoryview(single null byte)]` | 8.320984127848304e-05 | 4.320943731756206e-05 | 48.07% | 92.57% | 1.93x | ✅ | -| `hexbytes_new[memoryview(two patterns)]` | 8.356721980584258e-05 | 4.366879392941981e-05 | 47.74% | 91.37% | 1.91x | ✅ | -| `hexbytes_new[mixed pattern]` | 4.365951706041104e-05 | 2.664868008221551e-05 | 38.96% | 63.83% | 1.64x | ✅ | -| `hexbytes_new[multiples of 0x10]` | 4.3399708155713644e-05 | 2.6080858951120992e-05 | 39.91% | 66.40% | 1.66x | ✅ | -| `hexbytes_new[palindrome ascii]` | 4.265739922269339e-05 | 2.6130617727231734e-05 | 38.74% | 63.25% | 1.63x | ✅ | -| `hexbytes_new[palindrome numeric]` | 4.341127940571113e-05 | 2.6188895363662265e-05 | 39.67% | 65.76% | 1.66x | ✅ | -| `hexbytes_new[palindrome]` | 4.360560786363201e-05 | 2.610195980308686e-05 | 40.14% | 67.06% | 1.67x | ✅ | -| `hexbytes_new[repeated 0-9]` | 4.294454729310883e-05 | 2.6918413322544063e-05 | 37.32% | 59.54% | 1.60x | ✅ | -| `hexbytes_new[single 0xff]` | 4.3028281062969125e-05 | 2.5415749210429996e-05 | 40.93% | 69.30% | 1.69x | ✅ | -| `hexbytes_new[single null byte]` | 4.2227135327196064e-05 | 2.5446633689403234e-05 | 39.74% | 65.94% | 1.66x | ✅ | -| `hexbytes_new[two patterns]` | 4.34895086048685e-05 | 2.7242135222994092e-05 | 37.36% | 59.64% | 1.60x | ✅ | -| `hexbytes_repr[0-9]` | 3.0085077687269938e-05 | 1.4763183333542614e-05 | 50.93% | 103.78% | 2.04x | ✅ | -| `hexbytes_repr[4-byte pattern]` | 0.00012082995521046726 | 4.247989233825196e-05 | 64.84% | 184.44% | 2.84x | ✅ | -| `hexbytes_repr[all byte values]` | 0.00012132927034129566 | 4.224082483310528e-05 | 65.18% | 187.23% | 2.87x | ✅ | -| `hexbytes_repr[alternating 0x00/0xff]` | 4.880782588815023e-05 | 2.053150146379133e-05 | 57.93% | 137.72% | 2.38x | ✅ | -| `hexbytes_repr[alternating 0xaa/0x55]` | 4.8893547292306866e-05 | 2.0540948166084265e-05 | 57.99% | 138.03% | 2.38x | ✅ | -| `hexbytes_repr[ascii sentence]` | 4.066289942803566e-05 | 1.796571363834692e-05 | 55.82% | 126.34% | 2.26x | ✅ | -| `hexbytes_repr[b'']` | 2.167076116507663e-05 | 1.2426634578263107e-05 | 42.66% | 74.39% | 1.74x | ✅ | -| `hexbytes_repr[b'\\x00'*32]` | 3.6978156856528455e-05 | 1.6820786979005185e-05 | 54.51% | 119.84% | 2.20x | ✅ | -| `hexbytes_repr[b'\\x00\\xff\\x00\\xff']` | 2.664408470696132e-05 | 1.4190595718228422e-05 | 46.74% | 87.76% | 1.88x | ✅ | -| `hexbytes_repr[b'\\x01'*100]` | 6.205689746123589e-05 | 2.3566688921328196e-05 | 62.02% | 163.32% | 2.63x | ✅ | -| `hexbytes_repr[b'\\x01'*2048]` | 0.000759706957615766 | 0.0002229783522203603 | 70.65% | 240.71% | 3.41x | ✅ | -| `hexbytes_repr[b'\\x01\\x02\\x03']` | 2.640220528730324e-05 | 1.4056501138677934e-05 | 46.76% | 87.83% | 1.88x | ✅ | -| `hexbytes_repr[b'\\x10\\x20\\x30\\x40\\x50']` | 2.7163056470863583e-05 | 1.4030082481912044e-05 | 48.35% | 93.61% | 1.94x | ✅ | -| `hexbytes_repr[b'\\x7f'*8]` | 2.8608318907790686e-05 | 1.4272289734342924e-05 | 50.11% | 100.45% | 2.00x | ✅ | -| `hexbytes_repr[b'\\x80'*8]` | 2.8462348432509383e-05 | 1.4324060154807807e-05 | 49.67% | 98.70% | 1.99x | ✅ | -| `hexbytes_repr[b'\\xde\\xad\\xbe\\xef']` | 2.6470958989230182e-05 | 1.4140883491206113e-05 | 46.58% | 87.19% | 1.87x | ✅ | -| `hexbytes_repr[b'\\xff'*64]` | 4.910823655710094e-05 | 1.995576700803032e-05 | 59.36% | 146.09% | 2.46x | ✅ | -| `hexbytes_repr[b'a'*1024]` | 0.00039537763499463823 | 0.00011960565652989466 | 69.75% | 230.57% | 3.31x | ✅ | -| `hexbytes_repr[b'abc']` | 2.6392488669775246e-05 | 1.4040542978001046e-05 | 46.80% | 87.97% | 1.88x | ✅ | -| `hexbytes_repr[long alternating]` | 0.00039865544817419604 | 0.00012312532385376875 | 69.11% | 223.78% | 3.24x | ✅ | -| `hexbytes_repr[mixed pattern]` | 0.00010009207864616417 | 3.45447584075179e-05 | 65.49% | 189.75% | 2.90x | ✅ | -| `hexbytes_repr[multiples of 0x10]` | 2.9131503541047708e-05 | 1.4760664743588338e-05 | 49.33% | 97.36% | 1.97x | ✅ | -| `hexbytes_repr[palindrome ascii]` | 2.9056123105044568e-05 | 1.4209752397260852e-05 | 51.10% | 104.48% | 2.04x | ✅ | -| `hexbytes_repr[palindrome numeric]` | 2.8456189237168856e-05 | 1.4187919941213347e-05 | 50.14% | 100.57% | 2.01x | ✅ | -| `hexbytes_repr[palindrome]` | 3.2162296530324446e-05 | 1.5902854521833594e-05 | 50.55% | 102.24% | 2.02x | ✅ | -| `hexbytes_repr[repeated 0-9]` | 6.251018046011762e-05 | 2.3739894318188736e-05 | 62.02% | 163.31% | 2.63x | ✅ | -| `hexbytes_repr[single 0xff]` | 2.729458757256124e-05 | 1.3686243265365777e-05 | 49.86% | 99.43% | 1.99x | ✅ | -| `hexbytes_repr[single null byte]` | 2.7277924098528845e-05 | 1.3623806187906993e-05 | 50.06% | 100.22% | 2.00x | ✅ | -| `hexbytes_repr[two patterns]` | 4.913709615529845e-05 | 2.0473448418038218e-05 | 58.33% | 140.00% | 2.40x | ✅ | -| `hexbytes_to_0x_hex[0-9]` | 1.5817572055224047e-05 | 1.4167815843374486e-05 | 10.43% | 11.64% | 1.12x | ✅ | -| `hexbytes_to_0x_hex[4-byte pattern]` | 4.270800446003841e-05 | 4.1060057047062125e-05 | 3.86% | 4.01% | 1.04x | ✅ | -| `hexbytes_to_0x_hex[all byte values]` | 4.268829509344083e-05 | 4.128079684078993e-05 | 3.30% | 3.41% | 1.03x | ✅ | -| `hexbytes_to_0x_hex[alternating 0x00/0xff]` | 2.089135436471792e-05 | 1.918752189002066e-05 | 8.16% | 8.88% | 1.09x | ✅ | -| `hexbytes_to_0x_hex[alternating 0xaa/0x55]` | 2.1028141103805553e-05 | 1.9309891481896873e-05 | 8.17% | 8.90% | 1.09x | ✅ | -| `hexbytes_to_0x_hex[ascii sentence]` | 1.927172641731634e-05 | 1.6997082885086754e-05 | 11.80% | 13.38% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[b'']` | 1.055048106143779e-05 | 1.175789840046412e-05 | -11.44% | -10.27% | 0.90x | ❌ | -| `hexbytes_to_0x_hex[b'\\x00'*32]` | 1.820402827153615e-05 | 1.62981526977399e-05 | 10.47% | 11.69% | 1.12x | ✅ | -| `hexbytes_to_0x_hex[b'\\x00\\xff\\x00\\xff']` | 1.5253493744912151e-05 | 1.3226184002678508e-05 | 13.29% | 15.33% | 1.15x | ✅ | -| `hexbytes_to_0x_hex[b'\\x01'*100]` | 2.5598919540125475e-05 | 2.317315911344985e-05 | 9.48% | 10.47% | 1.10x | ✅ | -| `hexbytes_to_0x_hex[b'\\x01'*2048]` | 0.000223192332210511 | 0.0002221630271881458 | 0.46% | 0.46% | 1.00x | ✅ | -| `hexbytes_to_0x_hex[b'\\x01\\x02\\x03']` | 1.518403526497681e-05 | 1.3167872432175693e-05 | 13.28% | 15.31% | 1.15x | ✅ | -| `hexbytes_to_0x_hex[b'\\x10\\x20\\x30\\x40\\x50']` | 1.5331006214378414e-05 | 1.3630109909149088e-05 | 11.09% | 12.48% | 1.12x | ✅ | -| `hexbytes_to_0x_hex[b'\\x7f'*8]` | 1.570095454939299e-05 | 1.3602257191001543e-05 | 13.37% | 15.43% | 1.15x | ✅ | -| `hexbytes_to_0x_hex[b'\\x80'*8]` | 1.5616888054544002e-05 | 1.3851365294062877e-05 | 11.31% | 12.75% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[b'\\xde\\xad\\xbe\\xef']` | 1.5288208181027084e-05 | 1.3202088701564096e-05 | 13.65% | 15.80% | 1.16x | ✅ | -| `hexbytes_to_0x_hex[b'\\xff'*64]` | 2.0923809309158802e-05 | 1.9201263546957865e-05 | 8.23% | 8.97% | 1.09x | ✅ | -| `hexbytes_to_0x_hex[b'a'*1024]` | 0.00012269421410042474 | 0.00012204349938594545 | 0.53% | 0.53% | 1.01x | ✅ | -| `hexbytes_to_0x_hex[b'abc']` | 1.5186216785018308e-05 | 1.3352652045592194e-05 | 12.07% | 13.73% | 1.14x | ✅ | -| `hexbytes_to_0x_hex[long alternating]` | 0.0001224083723675288 | 0.0001226601147864015 | -0.21% | -0.21% | 1.00x | ❌ | -| `hexbytes_to_0x_hex[mixed pattern]` | 3.5861840935697e-05 | 3.326413221628714e-05 | 7.24% | 7.81% | 1.08x | ✅ | -| `hexbytes_to_0x_hex[multiples of 0x10]` | 1.589171012001429e-05 | 1.386710407139982e-05 | 12.74% | 14.60% | 1.15x | ✅ | -| `hexbytes_to_0x_hex[palindrome ascii]` | 1.5427591014245552e-05 | 1.3375219514129835e-05 | 13.30% | 15.34% | 1.15x | ✅ | -| `hexbytes_to_0x_hex[palindrome numeric]` | 1.5210105011876948e-05 | 1.322108983113795e-05 | 13.08% | 15.04% | 1.15x | ✅ | -| `hexbytes_to_0x_hex[palindrome]` | 1.680089082357137e-05 | 1.5003721404406791e-05 | 10.70% | 11.98% | 1.12x | ✅ | -| `hexbytes_to_0x_hex[repeated 0-9]` | 2.5615827905068646e-05 | 2.316603156317615e-05 | 9.56% | 10.57% | 1.11x | ✅ | -| `hexbytes_to_0x_hex[single 0xff]` | 1.497061842896928e-05 | 1.313653476582995e-05 | 12.25% | 13.96% | 1.14x | ✅ | -| `hexbytes_to_0x_hex[single null byte]` | 1.5034890149149935e-05 | 1.2837679456529806e-05 | 14.61% | 17.12% | 1.17x | ✅ | -| `hexbytes_to_0x_hex[two patterns]` | 2.1302926568550656e-05 | 1.9231730373558392e-05 | 9.72% | 10.77% | 1.11x | ✅ | +| `hexbytes_getitem_index[-1-0-9]` | 2.4651960971581144e-05 | 2.3742079655049166e-05 | 3.69% | 3.83% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-4-byte pattern]` | 2.4914589877013902e-05 | 2.3721452695396386e-05 | 4.79% | 5.03% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-all byte values]` | 2.4870298768105796e-05 | 2.3683938066914603e-05 | 4.77% | 5.01% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-alternating 0x00/0xff]` | 2.4441135785164883e-05 | 2.3603704740361955e-05 | 3.43% | 3.55% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-alternating 0xaa/0x55]` | 2.4629223292141224e-05 | 2.3549131802973782e-05 | 4.39% | 4.59% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-ascii sentence]` | 2.5146059330733922e-05 | 2.3483815893506455e-05 | 6.61% | 7.08% | 1.07x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x00'*32]` | 2.474791267091099e-05 | 2.3673202583450512e-05 | 4.34% | 4.54% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x00\\xff\\x00\\xff']` | 2.4539493474144706e-05 | 2.357505416173682e-05 | 3.93% | 4.09% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x01'*100]` | 2.4801258886605904e-05 | 2.356331295261873e-05 | 4.99% | 5.25% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x01'*2048]` | 2.4722036842682627e-05 | 2.3684410506043172e-05 | 4.20% | 4.38% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x01\\x02\\x03']` | 2.462301380722871e-05 | 2.350778553800804e-05 | 4.53% | 4.74% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.4732560758196835e-05 | 2.3666414323639715e-05 | 4.31% | 4.50% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x7f'*8]` | 2.4828387895957752e-05 | 2.3510741330565454e-05 | 5.31% | 5.60% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x80'*8]` | 2.417106165572371e-05 | 2.3641289360599036e-05 | 2.19% | 2.24% | 1.02x | ✅ | +| `hexbytes_getitem_index[-1-b'\\xde\\xad\\xbe\\xef']` | 2.4761245496400876e-05 | 2.3513523976292314e-05 | 5.04% | 5.31% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'\\xff'*64]` | 2.470209957743426e-05 | 2.3561682920752914e-05 | 4.62% | 4.84% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'a'*1024]` | 2.4785439338627667e-05 | 2.3539953770655566e-05 | 5.03% | 5.29% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'abc']` | 2.4602124917944918e-05 | 2.37010509465164e-05 | 3.66% | 3.80% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-long alternating]` | 2.4786898517207075e-05 | 2.385015756790433e-05 | 3.78% | 3.93% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-mixed pattern]` | 2.506776108026341e-05 | 2.374638694500302e-05 | 5.27% | 5.56% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-multiples of 0x10]` | 2.4716235667745476e-05 | 2.372554353504267e-05 | 4.01% | 4.18% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-palindrome ascii]` | 2.4991224042452845e-05 | 2.3761606567373045e-05 | 4.92% | 5.17% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-palindrome numeric]` | 2.48612457179913e-05 | 2.373565527421482e-05 | 4.53% | 4.74% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-palindrome]` | 2.476836353946959e-05 | 2.3506553561083275e-05 | 5.09% | 5.37% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-repeated 0-9]` | 2.497758756549075e-05 | 2.3537885991152604e-05 | 5.76% | 6.12% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-two patterns]` | 2.4912925424040037e-05 | 2.357351587115538e-05 | 5.38% | 5.68% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-0-9]` | 2.3552392899033618e-05 | 2.2706469370209416e-05 | 3.59% | 3.73% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-4-byte pattern]` | 2.3706932147929157e-05 | 2.277820757228196e-05 | 3.92% | 4.08% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-all byte values]` | 2.376317693212643e-05 | 2.2997485431157426e-05 | 3.22% | 3.33% | 1.03x | ✅ | +| `hexbytes_getitem_index[0-alternating 0x00/0xff]` | 2.375639410252125e-05 | 2.259090275280149e-05 | 4.91% | 5.16% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-alternating 0xaa/0x55]` | 2.3771039282453677e-05 | 2.2389388133951e-05 | 5.81% | 6.17% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-ascii sentence]` | 2.3652355422515932e-05 | 2.262054829524286e-05 | 4.36% | 4.56% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-b'\\x00'*32]` | 2.3688476172809026e-05 | 2.267875758680969e-05 | 4.26% | 4.45% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-b'\\x00\\xff\\x00\\xff']` | 2.5603807294365365e-05 | 2.25676997796218e-05 | 11.86% | 13.45% | 1.13x | ✅ | +| `hexbytes_getitem_index[0-b'\\x01'*100]` | 2.3568021477888985e-05 | 2.2477354817355278e-05 | 4.63% | 4.85% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-b'\\x01'*2048]` | 2.3726669642236345e-05 | 2.2574931719763578e-05 | 4.85% | 5.10% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-b'\\x01\\x02\\x03']` | 2.3965766108147683e-05 | 2.24450657495643e-05 | 6.35% | 6.78% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-b'\\x10\\x20\\x30\\x40\\x50']` | 2.358085325316612e-05 | 2.2403101267703223e-05 | 4.99% | 5.26% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-b'\\x7f'*8]` | 2.3699287914925477e-05 | 2.248879324132225e-05 | 5.11% | 5.38% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-b'\\x80'*8]` | 2.3658399290103703e-05 | 2.2534614930071396e-05 | 4.75% | 4.99% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-b'\\xde\\xad\\xbe\\xef']` | 2.372446570049721e-05 | 2.2309551750539106e-05 | 5.96% | 6.34% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-b'\\xff'*64]` | 2.361081601937645e-05 | 2.2580510202332043e-05 | 4.36% | 4.56% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-b'a'*1024]` | 2.3853200325644165e-05 | 2.2326871825418786e-05 | 6.40% | 6.84% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-b'abc']` | 2.3561004442665264e-05 | 2.257152154387967e-05 | 4.20% | 4.38% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-long alternating]` | 2.385969297391155e-05 | 2.2704869154983565e-05 | 4.84% | 5.09% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-mixed pattern]` | 2.3706699030158312e-05 | 2.269054749681057e-05 | 4.29% | 4.48% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-multiples of 0x10]` | 2.3767635127293485e-05 | 2.2700208446505834e-05 | 4.49% | 4.70% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-palindrome ascii]` | 2.3872602534973736e-05 | 2.2505738922799452e-05 | 5.73% | 6.07% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-palindrome numeric]` | 2.3650864158307702e-05 | 2.2505362808841013e-05 | 4.84% | 5.09% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-palindrome]` | 2.389110668805602e-05 | 2.2517198282302654e-05 | 5.75% | 6.10% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-repeated 0-9]` | 2.3749080797372078e-05 | 2.274016197100676e-05 | 4.25% | 4.44% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-single 0xff]` | 2.384500164707853e-05 | 2.26824494461279e-05 | 4.88% | 5.13% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-single null byte]` | 2.3710620325141458e-05 | 2.2563834589142225e-05 | 4.84% | 5.08% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-two patterns]` | 2.3725237763328324e-05 | 2.275650995646531e-05 | 4.08% | 4.26% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-0-9]` | 2.3963689968818588e-05 | 2.2947783670581576e-05 | 4.24% | 4.43% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-4-byte pattern]` | 2.3764937664157905e-05 | 2.2400115317102403e-05 | 5.74% | 6.09% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-all byte values]` | 2.39650643076325e-05 | 2.2360730932404967e-05 | 6.69% | 7.17% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-alternating 0x00/0xff]` | 2.368946108563518e-05 | 2.277422869591683e-05 | 3.86% | 4.02% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-alternating 0xaa/0x55]` | 2.3821875072477958e-05 | 2.2966183704564473e-05 | 3.59% | 3.73% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-ascii sentence]` | 2.3945917187918905e-05 | 2.2039358030301282e-05 | 7.96% | 8.65% | 1.09x | ✅ | +| `hexbytes_getitem_index[1-b'\\x00'*32]` | 2.3800010730992442e-05 | 2.2898180459583268e-05 | 3.79% | 3.94% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-b'\\x00\\xff\\x00\\xff']` | 2.391173775042203e-05 | 2.2807688378797876e-05 | 4.62% | 4.84% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-b'\\x01'*100]` | 2.3685970102818634e-05 | 2.286635158849624e-05 | 3.46% | 3.58% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-b'\\x01'*2048]` | 2.3904209846583215e-05 | 2.229993282354903e-05 | 6.71% | 7.19% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-b'\\x01\\x02\\x03']` | 2.3776399904698173e-05 | 2.282667082608641e-05 | 3.99% | 4.16% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3717054602155944e-05 | 2.275532124231809e-05 | 4.06% | 4.23% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-b'\\x7f'*8]` | 2.3635144131737e-05 | 2.2794580002010076e-05 | 3.56% | 3.69% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-b'\\x80'*8]` | 2.3642553013960808e-05 | 2.280008245099661e-05 | 3.56% | 3.70% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-b'\\xde\\xad\\xbe\\xef']` | 2.37268151388951e-05 | 2.2878381172070876e-05 | 3.58% | 3.71% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-b'\\xff'*64]` | 2.3764922052232538e-05 | 2.2983272495408684e-05 | 3.29% | 3.40% | 1.03x | ✅ | +| `hexbytes_getitem_index[1-b'a'*1024]` | 2.389620277613219e-05 | 2.2868693419290814e-05 | 4.30% | 4.49% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-b'abc']` | 2.381179689224361e-05 | 2.261058158338374e-05 | 5.04% | 5.31% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-long alternating]` | 2.3947274340818952e-05 | 2.230994834697093e-05 | 6.84% | 7.34% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-mixed pattern]` | 2.3976678552543847e-05 | 2.2726994986763895e-05 | 5.21% | 5.50% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-multiples of 0x10]` | 2.3622868411768784e-05 | 2.23159963043466e-05 | 5.53% | 5.86% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-palindrome ascii]` | 2.4094650683047702e-05 | 2.230840450415285e-05 | 7.41% | 8.01% | 1.08x | ✅ | +| `hexbytes_getitem_index[1-palindrome numeric]` | 2.375249288072367e-05 | 2.261610529510791e-05 | 4.78% | 5.02% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-palindrome]` | 2.3664737814981775e-05 | 2.2788093813537335e-05 | 3.70% | 3.85% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-repeated 0-9]` | 2.39430082328806e-05 | 2.2333154055712127e-05 | 6.72% | 7.21% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-two patterns]` | 2.380657528466817e-05 | 2.263174066927076e-05 | 4.93% | 5.19% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-0-9]` | 2.3759878489485154e-05 | 2.2421869826917465e-05 | 5.63% | 5.97% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-4-byte pattern]` | 2.3696033630537857e-05 | 2.2436542911204173e-05 | 5.32% | 5.61% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-all byte values]` | 2.4009031281243505e-05 | 2.2558009394689917e-05 | 6.04% | 6.43% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-alternating 0x00/0xff]` | 2.3787578391980155e-05 | 2.2352974384459595e-05 | 6.03% | 6.42% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-alternating 0xaa/0x55]` | 2.389483280493658e-05 | 2.217315086371502e-05 | 7.21% | 7.76% | 1.08x | ✅ | +| `hexbytes_getitem_index[2-ascii sentence]` | 2.3989364146550072e-05 | 2.2293362282276747e-05 | 7.07% | 7.61% | 1.08x | ✅ | +| `hexbytes_getitem_index[2-b'\\x00'*32]` | 2.3929301695838763e-05 | 2.2243663880455482e-05 | 7.04% | 7.58% | 1.08x | ✅ | +| `hexbytes_getitem_index[2-b'\\x00\\xff\\x00\\xff']` | 2.390094352471186e-05 | 2.2388085484846872e-05 | 6.33% | 6.76% | 1.07x | ✅ | +| `hexbytes_getitem_index[2-b'\\x01'*100]` | 2.3912838492563126e-05 | 2.223576054388474e-05 | 7.01% | 7.54% | 1.08x | ✅ | +| `hexbytes_getitem_index[2-b'\\x01'*2048]` | 2.3839805980868495e-05 | 2.2482428944202168e-05 | 5.69% | 6.04% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-b'\\x01\\x02\\x03']` | 2.3946240708655286e-05 | 2.2134188439129625e-05 | 7.57% | 8.19% | 1.08x | ✅ | +| `hexbytes_getitem_index[2-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3830132864498836e-05 | 2.2204587399637516e-05 | 6.82% | 7.32% | 1.07x | ✅ | +| `hexbytes_getitem_index[2-b'\\x7f'*8]` | 2.3956867057869268e-05 | 2.2297675060307316e-05 | 6.93% | 7.44% | 1.07x | ✅ | +| `hexbytes_getitem_index[2-b'\\x80'*8]` | 2.3659258874574295e-05 | 2.229929744684334e-05 | 5.75% | 6.10% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-b'\\xde\\xad\\xbe\\xef']` | 2.3948837913970947e-05 | 2.2253094320491686e-05 | 7.08% | 7.62% | 1.08x | ✅ | +| `hexbytes_getitem_index[2-b'\\xff'*64]` | 2.3774163724281074e-05 | 2.2276505145158204e-05 | 6.30% | 6.72% | 1.07x | ✅ | +| `hexbytes_getitem_index[2-b'a'*1024]` | 2.403854006515259e-05 | 2.535659157177087e-05 | -5.48% | -5.20% | 0.95x | ❌ | +| `hexbytes_getitem_index[2-b'abc']` | 2.3719325230356465e-05 | 2.2243213526803864e-05 | 6.22% | 6.64% | 1.07x | ✅ | +| `hexbytes_getitem_index[2-long alternating]` | 2.3900143751114583e-05 | 2.2381869143738894e-05 | 6.35% | 6.78% | 1.07x | ✅ | +| `hexbytes_getitem_index[2-mixed pattern]` | 2.394913454453958e-05 | 2.271665308174575e-05 | 5.15% | 5.43% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-multiples of 0x10]` | 2.381973442865675e-05 | 2.2428888583584435e-05 | 5.84% | 6.20% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-palindrome ascii]` | 2.3711765423516114e-05 | 2.225850253344376e-05 | 6.13% | 6.53% | 1.07x | ✅ | +| `hexbytes_getitem_index[2-palindrome numeric]` | 2.3876108298483828e-05 | 2.2507732474511268e-05 | 5.73% | 6.08% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-palindrome]` | 2.3877181318422928e-05 | 2.2292052910813717e-05 | 6.64% | 7.11% | 1.07x | ✅ | +| `hexbytes_getitem_index[2-repeated 0-9]` | 2.391583873307995e-05 | 2.2260601128023153e-05 | 6.92% | 7.44% | 1.07x | ✅ | +| `hexbytes_getitem_index[2-two patterns]` | 2.388620010775735e-05 | 2.254326163173068e-05 | 5.62% | 5.96% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-0-9]` | 2.374288242860744e-05 | 2.234580053706118e-05 | 5.88% | 6.25% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-4-byte pattern]` | 2.3808221335763292e-05 | 2.242056561205241e-05 | 5.83% | 6.19% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-all byte values]` | 2.360101179165709e-05 | 2.223899701096301e-05 | 5.77% | 6.12% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-alternating 0x00/0xff]` | 2.3425022099941238e-05 | 2.2691252964576542e-05 | 3.13% | 3.23% | 1.03x | ✅ | +| `hexbytes_getitem_index[3-alternating 0xaa/0x55]` | 2.3570532426018685e-05 | 2.232126186648629e-05 | 5.30% | 5.60% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-ascii sentence]` | 2.3667104524828177e-05 | 2.2348126107982218e-05 | 5.57% | 5.90% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'\\x00'*32]` | 2.3834274442930237e-05 | 2.2454221906176193e-05 | 5.79% | 6.15% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'\\x00\\xff\\x00\\xff']` | 2.334232673854612e-05 | 2.213479558210342e-05 | 5.17% | 5.46% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-b'\\x01'*100]` | 2.366026717609489e-05 | 2.2346918175273533e-05 | 5.55% | 5.88% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'\\x01'*2048]` | 2.3783580706241166e-05 | 2.2394678424258706e-05 | 5.84% | 6.20% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'\\x10\\x20\\x30\\x40\\x50']` | 2.358496422944416e-05 | 2.2284603063809602e-05 | 5.51% | 5.84% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'\\x7f'*8]` | 2.3616635596984097e-05 | 2.2230039609024826e-05 | 5.87% | 6.24% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'\\x80'*8]` | 2.358696974761443e-05 | 2.226369948315651e-05 | 5.61% | 5.94% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'\\xde\\xad\\xbe\\xef']` | 2.3841421667314486e-05 | 2.224531700089243e-05 | 6.69% | 7.18% | 1.07x | ✅ | +| `hexbytes_getitem_index[3-b'\\xff'*64]` | 2.3852856997623723e-05 | 2.245439670031442e-05 | 5.86% | 6.23% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'a'*1024]` | 2.371245778804023e-05 | 2.2334016617086115e-05 | 5.81% | 6.17% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-long alternating]` | 2.3953630972695282e-05 | 2.2281194871917552e-05 | 6.98% | 7.51% | 1.08x | ✅ | +| `hexbytes_getitem_index[3-mixed pattern]` | 2.360093194211216e-05 | 2.2504282923644097e-05 | 4.65% | 4.87% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-multiples of 0x10]` | 2.3659343009664815e-05 | 2.233404501972741e-05 | 5.60% | 5.93% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-palindrome ascii]` | 2.382104850932273e-05 | 2.2296625606055568e-05 | 6.40% | 6.84% | 1.07x | ✅ | +| `hexbytes_getitem_index[3-palindrome numeric]` | 2.3821292432792257e-05 | 2.231770656528545e-05 | 6.31% | 6.74% | 1.07x | ✅ | +| `hexbytes_getitem_index[3-palindrome]` | 2.418370369398492e-05 | 2.223625909578257e-05 | 8.05% | 8.76% | 1.09x | ✅ | +| `hexbytes_getitem_index[3-repeated 0-9]` | 2.3549914281609854e-05 | 2.239536854949025e-05 | 4.90% | 5.16% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-two patterns]` | 2.3581715505717703e-05 | 2.233839016262871e-05 | 5.27% | 5.57% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-0-9]` | 2.3709003040145822e-05 | 2.253740515692887e-05 | 4.94% | 5.20% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-4-byte pattern]` | 2.37370651256261e-05 | 2.2626763019765507e-05 | 4.68% | 4.91% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-all byte values]` | 2.363319125539605e-05 | 2.2483375411589478e-05 | 4.87% | 5.11% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-alternating 0x00/0xff]` | 2.363345720554712e-05 | 2.2437279341295577e-05 | 5.06% | 5.33% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-alternating 0xaa/0x55]` | 2.3686750169933537e-05 | 2.249959353849564e-05 | 5.01% | 5.28% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-ascii sentence]` | 2.3862702220155034e-05 | 2.2521624005521676e-05 | 5.62% | 5.95% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-b'\\x00'*32]` | 2.3446334624891095e-05 | 2.2517943468318158e-05 | 3.96% | 4.12% | 1.04x | ✅ | +| `hexbytes_getitem_index[4-b'\\x01'*100]` | 2.353666292773432e-05 | 2.2540378307715853e-05 | 4.23% | 4.42% | 1.04x | ✅ | +| `hexbytes_getitem_index[4-b'\\x01'*2048]` | 2.3667148424653667e-05 | 2.23635845139677e-05 | 5.51% | 5.83% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3616073790037003e-05 | 2.2477275695333708e-05 | 4.82% | 5.07% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-b'\\x7f'*8]` | 2.365667181938546e-05 | 2.2479638334589596e-05 | 4.98% | 5.24% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-b'\\x80'*8]` | 2.360863328195228e-05 | 2.2542688756548335e-05 | 4.52% | 4.73% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-b'\\xff'*64]` | 2.3698144640379696e-05 | 2.2296469909688985e-05 | 5.91% | 6.29% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-b'a'*1024]` | 2.3669893692941123e-05 | 2.2279180024041587e-05 | 5.88% | 6.24% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-long alternating]` | 2.3714192321174797e-05 | 2.2636048756140697e-05 | 4.55% | 4.76% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-mixed pattern]` | 2.367463362629922e-05 | 2.2564731380060752e-05 | 4.69% | 4.92% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-multiples of 0x10]` | 2.377896247538816e-05 | 2.2489893922902326e-05 | 5.42% | 5.73% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-palindrome ascii]` | 2.3696862417507692e-05 | 2.2640943799683836e-05 | 4.46% | 4.66% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-palindrome numeric]` | 2.3757765037093327e-05 | 2.2508844821880213e-05 | 5.26% | 5.55% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-palindrome]` | 2.355779781619912e-05 | 2.218344927203531e-05 | 5.83% | 6.20% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-repeated 0-9]` | 2.318634217888085e-05 | 2.2556870903105894e-05 | 2.71% | 2.79% | 1.03x | ✅ | +| `hexbytes_getitem_index[4-two patterns]` | 2.3855517516910593e-05 | 2.2603117471540457e-05 | 5.25% | 5.54% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-0-9]` | 2.3548196064566108e-05 | 2.2513663460124153e-05 | 4.39% | 4.60% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-4-byte pattern]` | 2.365568277820364e-05 | 2.2617926049483086e-05 | 4.39% | 4.59% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-all byte values]` | 2.3675156919783204e-05 | 2.2538417021036196e-05 | 4.80% | 5.04% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-alternating 0x00/0xff]` | 2.359308668806988e-05 | 2.254536829014792e-05 | 4.44% | 4.65% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-alternating 0xaa/0x55]` | 2.3556700839463984e-05 | 2.2490638055690138e-05 | 4.53% | 4.74% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-ascii sentence]` | 2.3625076355439547e-05 | 2.24613930939796e-05 | 4.93% | 5.18% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-b'\\x00'*32]` | 2.3586780005605462e-05 | 2.2593186975130276e-05 | 4.21% | 4.40% | 1.04x | ✅ | +| `hexbytes_getitem_index[5-b'\\x01'*100]` | 2.3491254037320052e-05 | 2.2481907616767723e-05 | 4.30% | 4.49% | 1.04x | ✅ | +| `hexbytes_getitem_index[5-b'\\x01'*2048]` | 2.369606246611395e-05 | 2.258547347118303e-05 | 4.69% | 4.92% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-b'\\x7f'*8]` | 2.3571789245281507e-05 | 2.240625755083801e-05 | 4.94% | 5.20% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-b'\\x80'*8]` | 2.3654410983717284e-05 | 2.2519207884417063e-05 | 4.80% | 5.04% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-b'\\xff'*64]` | 2.3638751655862992e-05 | 2.2522775552394233e-05 | 4.72% | 4.95% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-b'a'*1024]` | 2.3437222548013353e-05 | 2.2482076455869534e-05 | 4.08% | 4.25% | 1.04x | ✅ | +| `hexbytes_getitem_index[5-long alternating]` | 2.3643866628657753e-05 | 2.2597247884400497e-05 | 4.43% | 4.63% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-mixed pattern]` | 2.3704150408769832e-05 | 2.2562529992604035e-05 | 4.82% | 5.06% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-multiples of 0x10]` | 2.356418754687801e-05 | 2.2566689141872047e-05 | 4.23% | 4.42% | 1.04x | ✅ | +| `hexbytes_getitem_index[5-palindrome ascii]` | 2.360664503832402e-05 | 2.254839829538522e-05 | 4.48% | 4.69% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-palindrome]` | 2.3430245806861645e-05 | 2.246184552307775e-05 | 4.13% | 4.31% | 1.04x | ✅ | +| `hexbytes_getitem_index[5-repeated 0-9]` | 2.3626169169951377e-05 | 2.2552721079885228e-05 | 4.54% | 4.76% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-two patterns]` | 2.3481735902666036e-05 | 2.252091484461108e-05 | 4.09% | 4.27% | 1.04x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-0-9]` | 8.188282262367498e-05 | 5.99705426521925e-05 | 26.76% | 36.54% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-4-byte pattern]` | 8.141414771790435e-05 | 5.958031697777583e-05 | 26.82% | 36.65% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-all byte values]` | 8.185049453614378e-05 | 5.953360796611001e-05 | 27.27% | 37.49% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-alternating 0x00/0xff]` | 8.180988682127241e-05 | 6.021565348336068e-05 | 26.40% | 35.86% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-alternating 0xaa/0x55]` | 8.20494837448135e-05 | 6.026773951574961e-05 | 26.55% | 36.14% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-ascii sentence]` | 8.185850207773249e-05 | 6.0044394819668885e-05 | 26.65% | 36.33% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'']` | 8.0027600939987e-05 | 5.765484046166121e-05 | 27.96% | 38.80% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00'*32]` | 8.205283582249193e-05 | 5.9543737100346765e-05 | 27.43% | 37.80% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00\\xff\\x00\\xff']` | 8.153306992641606e-05 | 5.998235380632076e-05 | 26.43% | 35.93% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*100]` | 8.170710250718827e-05 | 6.065065529506699e-05 | 25.77% | 34.72% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*2048]` | 8.157936641513887e-05 | 6.0288920775316713e-05 | 26.10% | 35.31% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01\\x02\\x03']` | 8.253511691621822e-05 | 5.990469783622166e-05 | 27.42% | 37.78% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.151974089816915e-05 | 5.9817269764953106e-05 | 26.62% | 36.28% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x7f'*8]` | 8.178414979336885e-05 | 5.92868319185694e-05 | 27.51% | 37.95% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x80'*8]` | 8.187080718583789e-05 | 5.996978094321253e-05 | 26.75% | 36.52% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\xde\\xad\\xbe\\xef']` | 8.221205846978547e-05 | 5.92096918939267e-05 | 27.98% | 38.85% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\xff'*64]` | 8.229906895712295e-05 | 6.032587733830027e-05 | 26.70% | 36.42% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'a'*1024]` | 8.194259915136483e-05 | 5.9341651236448896e-05 | 27.58% | 38.09% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'abc']` | 8.25811681722612e-05 | 6.0564547076953155e-05 | 26.66% | 36.35% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-long alternating]` | 8.195011578391536e-05 | 6.046045715784966e-05 | 26.22% | 35.54% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-mixed pattern]` | 8.165920985899151e-05 | 5.955459503695057e-05 | 27.07% | 37.12% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-multiples of 0x10]` | 8.140876584467526e-05 | 5.995998930321452e-05 | 26.35% | 35.77% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-palindrome ascii]` | 8.179254091422523e-05 | 5.968083841606335e-05 | 27.03% | 37.05% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-palindrome numeric]` | 8.220244454409264e-05 | 5.979644729236433e-05 | 27.26% | 37.47% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-palindrome]` | 8.19769515467715e-05 | 5.9262351090209405e-05 | 27.71% | 38.33% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-repeated 0-9]` | 8.125058408894145e-05 | 5.981408511392185e-05 | 26.38% | 35.84% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-single 0xff]` | 8.158868825405351e-05 | 5.805739666586402e-05 | 28.84% | 40.53% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-single null byte]` | 8.053243440307724e-05 | 5.909304117275174e-05 | 26.62% | 36.28% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-two patterns]` | 8.179723215677768e-05 | 5.911160700487675e-05 | 27.73% | 38.38% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-0-9]` | 8.219050969860988e-05 | 6.081678973282211e-05 | 26.01% | 35.14% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-4-byte pattern]` | 8.267707809637939e-05 | 6.166161881146768e-05 | 25.42% | 34.08% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-all byte values]` | 8.296342580041108e-05 | 6.156329458313869e-05 | 25.79% | 34.76% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-alternating 0x00/0xff]` | 8.227732619097291e-05 | 6.0536488469922664e-05 | 26.42% | 35.91% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-alternating 0xaa/0x55]` | 8.336597972844179e-05 | 6.066461438404699e-05 | 27.23% | 37.42% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-ascii sentence]` | 8.190254480276036e-05 | 6.027780990619787e-05 | 26.40% | 35.88% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'']` | 8.036711164065048e-05 | 5.815637378036025e-05 | 27.64% | 38.19% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x00'*32]` | 8.243998121808049e-05 | 6.0979596059296965e-05 | 26.03% | 35.19% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x00\\xff\\x00\\xff']` | 8.25695591275962e-05 | 6.10774964178927e-05 | 26.03% | 35.19% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*100]` | 8.222716636929613e-05 | 6.153466817829526e-05 | 25.17% | 33.63% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*2048]` | 8.244713697933408e-05 | 6.0853900593699986e-05 | 26.19% | 35.48% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x01\\x02\\x03']` | 8.29035276011581e-05 | 6.197360475266339e-05 | 25.25% | 33.77% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.257712605019676e-05 | 6.117768153554298e-05 | 25.91% | 34.98% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x7f'*8]` | 8.200404447488137e-05 | 6.092355614417758e-05 | 25.71% | 34.60% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x80'*8]` | 8.27952734618027e-05 | 6.222057795313694e-05 | 24.85% | 33.07% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\xde\\xad\\xbe\\xef']` | 8.300402060252565e-05 | 6.145479279308517e-05 | 25.96% | 35.07% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\xff'*64]` | 8.210837511470977e-05 | 6.212990970776714e-05 | 24.33% | 32.16% | 1.32x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'a'*1024]` | 8.191333606668248e-05 | 6.176405085010158e-05 | 24.60% | 32.62% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'abc']` | 8.350607343687452e-05 | 6.09613553610321e-05 | 27.00% | 36.98% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-long alternating]` | 8.253954564652985e-05 | 6.118946602672985e-05 | 25.87% | 34.89% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-mixed pattern]` | 8.220550520211693e-05 | 6.046883108258285e-05 | 26.44% | 35.95% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-multiples of 0x10]` | 8.288234812913995e-05 | 6.086559194851514e-05 | 26.56% | 36.17% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-palindrome ascii]` | 8.196839575122381e-05 | 6.109890468722255e-05 | 25.46% | 34.16% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-palindrome numeric]` | 8.191663290814502e-05 | 6.024971062748656e-05 | 26.45% | 35.96% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-palindrome]` | 8.225538873975235e-05 | 6.0673947569751234e-05 | 26.24% | 35.57% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-repeated 0-9]` | 8.325470592758964e-05 | 6.021114049383146e-05 | 27.68% | 38.27% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-single 0xff]` | 8.152387208920414e-05 | 5.838766598850358e-05 | 28.38% | 39.63% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-single null byte]` | 8.166747992629646e-05 | 5.818535163395908e-05 | 28.75% | 40.36% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-two patterns]` | 8.292456383558042e-05 | 6.066650219418695e-05 | 26.84% | 36.69% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-0-9]` | 8.283877970578877e-05 | 6.13965867593453e-05 | 25.88% | 34.92% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-4-byte pattern]` | 8.16315437396668e-05 | 6.080957531807193e-05 | 25.51% | 34.24% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-all byte values]` | 8.223987379899948e-05 | 6.152681982445922e-05 | 25.19% | 33.67% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-alternating 0x00/0xff]` | 8.196550352010294e-05 | 6.102012109547479e-05 | 25.55% | 34.33% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-alternating 0xaa/0x55]` | 8.431489475056753e-05 | 6.0876450064232096e-05 | 27.80% | 38.50% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-ascii sentence]` | 8.26091212709668e-05 | 6.12711949432357e-05 | 25.83% | 34.83% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'']` | 8.028537546059318e-05 | 5.9679945053987706e-05 | 25.67% | 34.53% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x00'*32]` | 8.193302538636353e-05 | 6.19901118074846e-05 | 24.34% | 32.17% | 1.32x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x00\\xff\\x00\\xff']` | 8.302082676689456e-05 | 6.0571752257095706e-05 | 27.04% | 37.06% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*100]` | 8.410599399287703e-05 | 6.0223220900306696e-05 | 28.40% | 39.66% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*2048]` | 8.289664339269829e-05 | 6.158656664520727e-05 | 25.71% | 34.60% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x01\\x02\\x03']` | 8.327898518635638e-05 | 6.10641647916191e-05 | 26.68% | 36.38% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.21226338529932e-05 | 6.127910837050417e-05 | 25.38% | 34.01% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x7f'*8]` | 8.179871182855887e-05 | 6.0103943548498716e-05 | 26.52% | 36.10% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x80'*8]` | 8.240871194114127e-05 | 6.03633342702947e-05 | 26.75% | 36.52% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\xde\\xad\\xbe\\xef']` | 8.192926135507694e-05 | 6.0105782373000276e-05 | 26.64% | 36.31% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\xff'*64]` | 8.183982794049471e-05 | 6.112623592059756e-05 | 25.31% | 33.89% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'a'*1024]` | 8.247461364013947e-05 | 6.0855620172021904e-05 | 26.21% | 35.53% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'abc']` | 8.145200871196106e-05 | 6.036883602176715e-05 | 25.88% | 34.92% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-long alternating]` | 8.240270163731342e-05 | 6.057206655519939e-05 | 26.49% | 36.04% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-mixed pattern]` | 8.170188522270842e-05 | 6.073954742684313e-05 | 25.66% | 34.51% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-multiples of 0x10]` | 8.174464010631686e-05 | 6.129174907747252e-05 | 25.02% | 33.37% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-palindrome ascii]` | 8.424363581274513e-05 | 6.158069279722402e-05 | 26.90% | 36.80% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-palindrome numeric]` | 8.197006358576009e-05 | 6.105562823286938e-05 | 25.51% | 34.25% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-palindrome]` | 8.245318718939036e-05 | 6.0170784576533205e-05 | 27.02% | 37.03% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-repeated 0-9]` | 8.14598674525449e-05 | 6.0583974002984e-05 | 25.63% | 34.46% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-single 0xff]` | 7.967176815547012e-05 | 5.843648470642701e-05 | 26.65% | 36.34% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-single null byte]` | 8.038728582652907e-05 | 5.834769884521148e-05 | 27.42% | 37.77% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-two patterns]` | 8.208553301500394e-05 | 6.039829369442206e-05 | 26.42% | 35.91% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-0-9]` | 8.132706316647871e-05 | 5.8234645074267526e-05 | 28.39% | 39.65% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-4-byte pattern]` | 8.194958213419803e-05 | 6.10462967018272e-05 | 25.51% | 34.24% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-all byte values]` | 8.241535458746012e-05 | 6.10384885898469e-05 | 25.94% | 35.02% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-alternating 0x00/0xff]` | 8.196905008525878e-05 | 6.121337780149159e-05 | 25.32% | 33.91% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-alternating 0xaa/0x55]` | 8.17298383193159e-05 | 6.109188302321797e-05 | 25.25% | 33.78% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-ascii sentence]` | 8.143266574827366e-05 | 6.078094651070287e-05 | 25.36% | 33.98% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'']` | 7.923727885146362e-05 | 5.745183344169047e-05 | 27.49% | 37.92% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x00'*32]` | 8.088500327257349e-05 | 6.01890287780394e-05 | 25.59% | 34.38% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x00\\xff\\x00\\xff']` | 8.130393501572301e-05 | 5.9826485405613124e-05 | 26.42% | 35.90% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*100]` | 8.21625267430338e-05 | 6.146550890897575e-05 | 25.19% | 33.67% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*2048]` | 0.00010715455697350455 | 7.7884695648295e-05 | 27.32% | 37.58% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x01\\x02\\x03']` | 7.96153606093641e-05 | 5.7551930299219345e-05 | 27.71% | 38.34% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.140783624259222e-05 | 6.0222790957131226e-05 | 26.02% | 35.18% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x7f'*8]` | 8.116152702597893e-05 | 6.0336199715254506e-05 | 25.66% | 34.52% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x80'*8]` | 8.124745107842207e-05 | 6.050556664307744e-05 | 25.53% | 34.28% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\xde\\xad\\xbe\\xef']` | 8.122748801309516e-05 | 5.9778224369593206e-05 | 26.41% | 35.88% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\xff'*64]` | 8.140300722739676e-05 | 6.105837810975075e-05 | 24.99% | 33.32% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'a'*1024]` | 9.989191752248823e-05 | 7.491857358025404e-05 | 25.00% | 33.33% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'abc']` | 7.997079477313963e-05 | 5.78103747751335e-05 | 27.71% | 38.33% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-long alternating]` | 0.00010307101128697139 | 7.359069621298992e-05 | 28.60% | 40.06% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-mixed pattern]` | 8.182412250114438e-05 | 6.0800048570594684e-05 | 25.69% | 34.58% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-multiples of 0x10]` | 8.10068462877111e-05 | 5.9850938449238435e-05 | 26.12% | 35.35% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-palindrome ascii]` | 8.209061537737693e-05 | 5.991736330824162e-05 | 27.01% | 37.01% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-palindrome numeric]` | 8.165903022661204e-05 | 6.076781056950024e-05 | 25.58% | 34.38% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-palindrome]` | 8.02655125921484e-05 | 6.132994569033027e-05 | 23.59% | 30.87% | 1.31x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-repeated 0-9]` | 8.080847841677988e-05 | 5.902323867154604e-05 | 26.96% | 36.91% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-single 0xff]` | 7.859799611675312e-05 | 5.743726216263625e-05 | 26.92% | 36.84% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-single null byte]` | 7.895000319275955e-05 | 5.766566994998397e-05 | 26.96% | 36.91% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-two patterns]` | 8.126600579755457e-05 | 6.050830558276442e-05 | 25.54% | 34.31% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-0-9]` | 8.053997699614431e-05 | 5.864400884862508e-05 | 27.19% | 37.34% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-4-byte pattern]` | 8.129177499550509e-05 | 5.912117576582968e-05 | 27.27% | 37.50% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-all byte values]` | 8.085185537034994e-05 | 5.828823214042174e-05 | 27.91% | 38.71% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-alternating 0x00/0xff]` | 8.095446505844143e-05 | 5.7886503830423075e-05 | 28.49% | 39.85% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-alternating 0xaa/0x55]` | 8.073987713275129e-05 | 5.733975367539536e-05 | 28.98% | 40.81% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-ascii sentence]` | 8.054094636835294e-05 | 5.9038025349627365e-05 | 26.70% | 36.42% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'']` | 7.745072433616554e-05 | 5.6565728770241404e-05 | 26.97% | 36.92% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x00'*32]` | 7.965826633864038e-05 | 5.840624778299748e-05 | 26.68% | 36.39% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x00\\xff\\x00\\xff']` | 8.043739009012542e-05 | 5.726354314937087e-05 | 28.81% | 40.47% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*100]` | 8.08302955022355e-05 | 5.8779060934845705e-05 | 27.28% | 37.52% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*2048]` | 0.00010587511613295407 | 8.152667495033689e-05 | 23.00% | 29.87% | 1.30x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x01\\x02\\x03']` | 7.94895493816294e-05 | 5.725209743542306e-05 | 27.98% | 38.84% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.047515235879133e-05 | 5.837150209456553e-05 | 27.47% | 37.87% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x7f'*8]` | 8.048947641030272e-05 | 5.7923306476959616e-05 | 28.04% | 38.96% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x80'*8]` | 8.043531601493851e-05 | 5.858325237405438e-05 | 27.17% | 37.30% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\xde\\xad\\xbe\\xef']` | 7.968416127980274e-05 | 5.719394811358798e-05 | 28.22% | 39.32% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\xff'*64]` | 8.02864142358187e-05 | 5.721292826423238e-05 | 28.74% | 40.33% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'a'*1024]` | 9.976804489231354e-05 | 6.92643149099454e-05 | 30.57% | 44.04% | 1.44x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'abc']` | 8.00525940697233e-05 | 5.799280600524524e-05 | 27.56% | 38.04% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-long alternating]` | 0.00010023892144228582 | 7.433617601471303e-05 | 25.84% | 34.85% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-mixed pattern]` | 8.190135737026516e-05 | 5.8626392425408464e-05 | 28.42% | 39.70% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-multiples of 0x10]` | 8.108139452336353e-05 | 5.79455207205184e-05 | 28.53% | 39.93% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-palindrome ascii]` | 8.125950024810618e-05 | 5.8060637058874196e-05 | 28.55% | 39.96% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-palindrome numeric]` | 8.131956479014433e-05 | 5.815552257484653e-05 | 28.49% | 39.83% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-palindrome]` | 8.038686965603729e-05 | 5.693184291860686e-05 | 29.18% | 41.20% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-repeated 0-9]` | 8.136809358369172e-05 | 5.866405881602825e-05 | 27.90% | 38.70% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-single 0xff]` | 7.875141040150117e-05 | 5.592423208194507e-05 | 28.99% | 40.82% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-single null byte]` | 7.861621648895409e-05 | 5.610970326550653e-05 | 28.63% | 40.11% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-two patterns]` | 8.081124905182938e-05 | 5.827503624881302e-05 | 27.89% | 38.67% | 1.39x | ✅ | +| `hexbytes_new['']` | 7.131281614525125e-05 | 3.674571170359664e-05 | 48.47% | 94.07% | 1.94x | ✅ | +| `hexbytes_new['0x'+'00'*64]` | 9.334474182297979e-05 | 5.002092223893261e-05 | 46.41% | 86.61% | 1.87x | ✅ | +| `hexbytes_new['0x'+'a'*128]` | 9.332212376562862e-05 | 4.9688573185256294e-05 | 46.76% | 87.81% | 1.88x | ✅ | +| `hexbytes_new['0x'+'ff'*32]` | 8.897483979299019e-05 | 4.717107068690907e-05 | 46.98% | 88.62% | 1.89x | ✅ | +| `hexbytes_new['0x']` | 7.859271584945845e-05 | 3.7248041998330384e-05 | 52.61% | 111.00% | 2.11x | ✅ | +| `hexbytes_new['0x1234']` | 8.623097748543887e-05 | 4.445432225880482e-05 | 48.45% | 93.98% | 1.94x | ✅ | +| `hexbytes_new['0xCAFEBABE']` | 8.534164171012035e-05 | 4.3372963790031904e-05 | 49.18% | 96.76% | 1.97x | ✅ | +| `hexbytes_new['0xabcdef']` | 8.67185763250266e-05 | 4.455483574005099e-05 | 48.62% | 94.63% | 1.95x | ✅ | +| `hexbytes_new['0xdeadbeef']` | 8.658706715658466e-05 | 4.344636172954605e-05 | 49.82% | 99.30% | 1.99x | ✅ | +| `hexbytes_new['abc']` | 8.292515782974168e-05 | 4.7843991558183755e-05 | 42.30% | 73.32% | 1.73x | ✅ | +| `hexbytes_new['deadbeef']` | 7.718485042166974e-05 | 4.04787813345739e-05 | 47.56% | 90.68% | 1.91x | ✅ | +| `hexbytes_new[0-9]` | 4.231792093549312e-05 | 2.5451141414617816e-05 | 39.86% | 66.27% | 1.66x | ✅ | +| `hexbytes_new[0]` | 0.00012300621169908922 | 6.0380405153025e-05 | 50.91% | 103.72% | 2.04x | ✅ | +| `hexbytes_new[123456]` | 0.00012830273207382816 | 6.532929183911044e-05 | 49.08% | 96.39% | 1.96x | ✅ | +| `hexbytes_new[2**16]` | 0.00012715477042007792 | 6.586500074308855e-05 | 48.20% | 93.05% | 1.93x | ✅ | +| `hexbytes_new[2**256-1]` | 0.00013127475948868122 | 7.162552601799069e-05 | 45.44% | 83.28% | 1.83x | ✅ | +| `hexbytes_new[2**32]` | 0.00012909899030330623 | 6.87847683413182e-05 | 46.72% | 87.69% | 1.88x | ✅ | +| `hexbytes_new[2**64]` | 0.00013082380064914468 | 7.23297716854257e-05 | 44.71% | 80.87% | 1.81x | ✅ | +| `hexbytes_new[2**8]` | 0.00012401706250032195 | 6.248346389739209e-05 | 49.62% | 98.48% | 1.98x | ✅ | +| `hexbytes_new[4-byte pattern]` | 4.365671612359027e-05 | 2.643552942035839e-05 | 39.45% | 65.14% | 1.65x | ✅ | +| `hexbytes_new[False]` | 5.998564665625443e-05 | 2.7018440393916153e-05 | 54.96% | 122.02% | 2.22x | ✅ | +| `hexbytes_new[True]` | 6.030799126926403e-05 | 2.7165876078291013e-05 | 54.95% | 122.00% | 2.22x | ✅ | +| `hexbytes_new[all byte values]` | 4.296420066652947e-05 | 2.6508217313219185e-05 | 38.30% | 62.08% | 1.62x | ✅ | +| `hexbytes_new[alternating 0x00/0xff]` | 4.2859126587784984e-05 | 2.6024256057515943e-05 | 39.28% | 64.69% | 1.65x | ✅ | +| `hexbytes_new[alternating 0xaa/0x55]` | 4.318860514174584e-05 | 2.622396682693305e-05 | 39.28% | 64.69% | 1.65x | ✅ | +| `hexbytes_new[ascii sentence]` | 4.3571666073357616e-05 | 2.5626769265913558e-05 | 41.18% | 70.02% | 1.70x | ✅ | +| `hexbytes_new[b'']` | 4.242551041226786e-05 | 2.5627476251042672e-05 | 39.59% | 65.55% | 1.66x | ✅ | +| `hexbytes_new[b'\\x00'*32]` | 4.291665145012345e-05 | 2.5688885937140336e-05 | 40.14% | 67.06% | 1.67x | ✅ | +| `hexbytes_new[b'\\x00\\xff\\x00\\xff']` | 4.337699329369043e-05 | 2.5680748593699936e-05 | 40.80% | 68.91% | 1.69x | ✅ | +| `hexbytes_new[b'\\x01'*100]` | 4.340454259538618e-05 | 2.6030976413286714e-05 | 40.03% | 66.74% | 1.67x | ✅ | +| `hexbytes_new[b'\\x01'*2048]` | 5.650313969787112e-05 | 3.7988764006587585e-05 | 32.77% | 48.74% | 1.49x | ✅ | +| `hexbytes_new[b'\\x01\\x02\\x03']` | 4.1441968531657095e-05 | 2.5582851644495712e-05 | 38.27% | 61.99% | 1.62x | ✅ | +| `hexbytes_new[b'\\x10\\x20\\x30\\x40\\x50']` | 4.334814660598144e-05 | 2.5473656619051085e-05 | 41.23% | 70.17% | 1.70x | ✅ | +| `hexbytes_new[b'\\x7f'*8]` | 4.299352536456225e-05 | 2.57916928699872e-05 | 40.01% | 66.70% | 1.67x | ✅ | +| `hexbytes_new[b'\\x80'*8]` | 4.257729278163156e-05 | 2.5614936372892292e-05 | 39.84% | 66.22% | 1.66x | ✅ | +| `hexbytes_new[b'\\xde\\xad\\xbe\\xef']` | 4.3027180623284775e-05 | 2.5620470186368232e-05 | 40.46% | 67.94% | 1.68x | ✅ | +| `hexbytes_new[b'\\xff'*64]` | 4.2891169389391585e-05 | 2.636638420645834e-05 | 38.53% | 62.67% | 1.63x | ✅ | +| `hexbytes_new[b'a'*1024]` | 5.177837690782392e-05 | 3.318321308631852e-05 | 35.91% | 56.04% | 1.56x | ✅ | +| `hexbytes_new[b'abc']` | 4.2025070845850364e-05 | 2.5707930238955852e-05 | 38.83% | 63.47% | 1.63x | ✅ | +| `hexbytes_new[bytearray(0-9)]` | 6.857137987171737e-05 | 3.648192106839913e-05 | 46.80% | 87.96% | 1.88x | ✅ | +| `hexbytes_new[bytearray(4-byte pattern)]` | 6.925469430782842e-05 | 3.7684764952484636e-05 | 45.59% | 83.77% | 1.84x | ✅ | +| `hexbytes_new[bytearray(all byte values)]` | 6.966291999385976e-05 | 3.7939080904727996e-05 | 45.54% | 83.62% | 1.84x | ✅ | +| `hexbytes_new[bytearray(alternating 0x00/0xff)]` | 6.934033147383811e-05 | 3.7390071149242896e-05 | 46.08% | 85.45% | 1.85x | ✅ | +| `hexbytes_new[bytearray(alternating 0xaa/0x55)]` | 6.913529425216894e-05 | 3.720184645744461e-05 | 46.19% | 85.84% | 1.86x | ✅ | +| `hexbytes_new[bytearray(ascii sentence)]` | 6.89390375633696e-05 | 3.692158541086033e-05 | 46.44% | 86.72% | 1.87x | ✅ | +| `hexbytes_new[bytearray(b'')]` | 6.657921329737774e-05 | 3.498702985417451e-05 | 47.45% | 90.30% | 1.90x | ✅ | +| `hexbytes_new[bytearray(b'\\x00'*32)]` | 6.974467984682716e-05 | 3.66649225570196e-05 | 47.43% | 90.22% | 1.90x | ✅ | +| `hexbytes_new[bytearray(b'\\x00\\xff\\x00\\xff')]` | 6.813157795855745e-05 | 3.729734851214318e-05 | 45.26% | 82.67% | 1.83x | ✅ | +| `hexbytes_new[bytearray(b'\\x01'*100)]` | 6.942868792763909e-05 | 3.724968173535996e-05 | 46.35% | 86.39% | 1.86x | ✅ | +| `hexbytes_new[bytearray(b'\\x01'*2048)]` | 9.248464725352624e-05 | 5.596309762596068e-05 | 39.49% | 65.26% | 1.65x | ✅ | +| `hexbytes_new[bytearray(b'\\x01\\x02\\x03')]` | 6.871018576342032e-05 | 3.692052224340135e-05 | 46.27% | 86.10% | 1.86x | ✅ | +| `hexbytes_new[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 6.944273118250012e-05 | 3.695582931162502e-05 | 46.78% | 87.91% | 1.88x | ✅ | +| `hexbytes_new[bytearray(b'\\x7f'*8)]` | 6.969877030579308e-05 | 3.6792067649256717e-05 | 47.21% | 89.44% | 1.89x | ✅ | +| `hexbytes_new[bytearray(b'\\x80'*8)]` | 6.835225734833033e-05 | 3.652445295009898e-05 | 46.56% | 87.14% | 1.87x | ✅ | +| `hexbytes_new[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 6.983915410011755e-05 | 3.773740761299638e-05 | 45.97% | 85.07% | 1.85x | ✅ | +| `hexbytes_new[bytearray(b'\\xff'*64)]` | 6.926805350883918e-05 | 3.822801460354347e-05 | 44.81% | 81.20% | 1.81x | ✅ | +| `hexbytes_new[bytearray(b'a'*1024)]` | 8.635688718709579e-05 | 5.193362604467308e-05 | 39.86% | 66.28% | 1.66x | ✅ | +| `hexbytes_new[bytearray(b'abc')]` | 6.813005150075139e-05 | 3.740022913282253e-05 | 45.10% | 82.16% | 1.82x | ✅ | +| `hexbytes_new[bytearray(long alternating)]` | 8.709562230016446e-05 | 5.017746402674249e-05 | 42.39% | 73.58% | 1.74x | ✅ | +| `hexbytes_new[bytearray(mixed pattern)]` | 6.950971618754891e-05 | 3.7842997732392495e-05 | 45.56% | 83.68% | 1.84x | ✅ | +| `hexbytes_new[bytearray(multiples of 0x10)]` | 6.820170256215343e-05 | 3.6597542872320416e-05 | 46.34% | 86.36% | 1.86x | ✅ | +| `hexbytes_new[bytearray(palindrome ascii)]` | 6.841474700339718e-05 | 3.755793028274776e-05 | 45.10% | 82.16% | 1.82x | ✅ | +| `hexbytes_new[bytearray(palindrome numeric)]` | 6.878712014857778e-05 | 3.769801178153598e-05 | 45.20% | 82.47% | 1.82x | ✅ | +| `hexbytes_new[bytearray(palindrome)]` | 6.819899415354758e-05 | 3.719801693516349e-05 | 45.46% | 83.34% | 1.83x | ✅ | +| `hexbytes_new[bytearray(repeated 0-9)]` | 6.966693798531093e-05 | 3.726643545910852e-05 | 46.51% | 86.94% | 1.87x | ✅ | +| `hexbytes_new[bytearray(single 0xff)]` | 6.92218372941298e-05 | 3.7608169166181365e-05 | 45.67% | 84.06% | 1.84x | ✅ | +| `hexbytes_new[bytearray(single null byte)]` | 6.962209900488615e-05 | 3.780280228059994e-05 | 45.70% | 84.17% | 1.84x | ✅ | +| `hexbytes_new[bytearray(two patterns)]` | 6.920861849182834e-05 | 3.749633921084595e-05 | 45.82% | 84.57% | 1.85x | ✅ | +| `hexbytes_new[long alternating]` | 5.159495132199906e-05 | 3.308769512154607e-05 | 35.87% | 55.93% | 1.56x | ✅ | +| `hexbytes_new[memoryview(0-9)]` | 8.287889860728582e-05 | 4.2727305077680735e-05 | 48.45% | 93.97% | 1.94x | ✅ | +| `hexbytes_new[memoryview(4-byte pattern)]` | 8.171808752874566e-05 | 4.3136149613718545e-05 | 47.21% | 89.44% | 1.89x | ✅ | +| `hexbytes_new[memoryview(all byte values)]` | 8.256301601316813e-05 | 4.367906161584491e-05 | 47.10% | 89.02% | 1.89x | ✅ | +| `hexbytes_new[memoryview(alternating 0x00/0xff)]` | 8.272460297603305e-05 | 4.260909824084246e-05 | 48.49% | 94.15% | 1.94x | ✅ | +| `hexbytes_new[memoryview(alternating 0xaa/0x55)]` | 8.311275038620333e-05 | 4.273833763646143e-05 | 48.58% | 94.47% | 1.94x | ✅ | +| `hexbytes_new[memoryview(ascii sentence)]` | 8.241427164965519e-05 | 4.26381348909767e-05 | 48.26% | 93.29% | 1.93x | ✅ | +| `hexbytes_new[memoryview(b'')]` | 8.068140800595341e-05 | 4.022441332458065e-05 | 50.14% | 100.58% | 2.01x | ✅ | +| `hexbytes_new[memoryview(b'\\x00'*32)]` | 8.23535183161755e-05 | 4.257693218557696e-05 | 48.30% | 93.42% | 1.93x | ✅ | +| `hexbytes_new[memoryview(b'\\x00\\xff\\x00\\xff')]` | 8.227866961361686e-05 | 4.2242032737624914e-05 | 48.66% | 94.78% | 1.95x | ✅ | +| `hexbytes_new[memoryview(b'\\x01'*100)]` | 8.367759081857251e-05 | 4.334902829685653e-05 | 48.20% | 93.03% | 1.93x | ✅ | +| `hexbytes_new[memoryview(b'\\x01'*2048)]` | 0.00010710661932177443 | 6.275219850187019e-05 | 41.41% | 70.68% | 1.71x | ✅ | +| `hexbytes_new[memoryview(b'\\x01\\x02\\x03')]` | 8.314378913028096e-05 | 4.2693573205169005e-05 | 48.65% | 94.75% | 1.95x | ✅ | +| `hexbytes_new[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 8.176646614151828e-05 | 4.2635709961958026e-05 | 47.86% | 91.78% | 1.92x | ✅ | +| `hexbytes_new[memoryview(b'\\x7f'*8)]` | 8.286830867871187e-05 | 4.346485853398484e-05 | 47.55% | 90.66% | 1.91x | ✅ | +| `hexbytes_new[memoryview(b'\\x80'*8)]` | 8.248276209488502e-05 | 4.325699180190259e-05 | 47.56% | 90.68% | 1.91x | ✅ | +| `hexbytes_new[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 8.204779702012512e-05 | 4.270990821086162e-05 | 47.95% | 92.10% | 1.92x | ✅ | +| `hexbytes_new[memoryview(b'\\xff'*64)]` | 8.2459388711959e-05 | 4.284519058772579e-05 | 48.04% | 92.46% | 1.92x | ✅ | +| `hexbytes_new[memoryview(b'a'*1024)]` | 0.00010010044393146698 | 5.68532917622124e-05 | 43.20% | 76.07% | 1.76x | ✅ | +| `hexbytes_new[memoryview(b'abc')]` | 8.274411400721749e-05 | 4.335850610109714e-05 | 47.60% | 90.84% | 1.91x | ✅ | +| `hexbytes_new[memoryview(long alternating)]` | 0.00010076537341216057 | 5.723866681298617e-05 | 43.20% | 76.04% | 1.76x | ✅ | +| `hexbytes_new[memoryview(mixed pattern)]` | 8.454846887039537e-05 | 4.294932863552669e-05 | 49.20% | 96.86% | 1.97x | ✅ | +| `hexbytes_new[memoryview(multiples of 0x10)]` | 8.245803357250002e-05 | 4.275896508601862e-05 | 48.14% | 92.84% | 1.93x | ✅ | +| `hexbytes_new[memoryview(palindrome ascii)]` | 8.226666862613707e-05 | 4.322120909722521e-05 | 47.46% | 90.34% | 1.90x | ✅ | +| `hexbytes_new[memoryview(palindrome numeric)]` | 8.264503383990198e-05 | 4.313333596788622e-05 | 47.81% | 91.60% | 1.92x | ✅ | +| `hexbytes_new[memoryview(palindrome)]` | 8.17596790228505e-05 | 4.3143714944438304e-05 | 47.23% | 89.51% | 1.90x | ✅ | +| `hexbytes_new[memoryview(repeated 0-9)]` | 8.327484685864827e-05 | 4.298848906873776e-05 | 48.38% | 93.71% | 1.94x | ✅ | +| `hexbytes_new[memoryview(single 0xff)]` | 8.264911074652624e-05 | 4.262318789190444e-05 | 48.43% | 93.91% | 1.94x | ✅ | +| `hexbytes_new[memoryview(single null byte)]` | 8.400966988362832e-05 | 4.5119517305945794e-05 | 46.29% | 86.19% | 1.86x | ✅ | +| `hexbytes_new[memoryview(two patterns)]` | 8.250392366393075e-05 | 4.233908895521254e-05 | 48.68% | 94.86% | 1.95x | ✅ | +| `hexbytes_new[mixed pattern]` | 4.3211471558634816e-05 | 2.6457080181705535e-05 | 38.77% | 63.33% | 1.63x | ✅ | +| `hexbytes_new[multiples of 0x10]` | 4.2444978553650595e-05 | 2.557214861869313e-05 | 39.75% | 65.98% | 1.66x | ✅ | +| `hexbytes_new[palindrome ascii]` | 4.268600620202398e-05 | 2.5555415866223987e-05 | 40.13% | 67.03% | 1.67x | ✅ | +| `hexbytes_new[palindrome numeric]` | 4.301294462221504e-05 | 2.547051792056463e-05 | 40.78% | 68.87% | 1.69x | ✅ | +| `hexbytes_new[palindrome]` | 4.2689947302116406e-05 | 2.562523538297266e-05 | 39.97% | 66.59% | 1.67x | ✅ | +| `hexbytes_new[repeated 0-9]` | 4.4628749000750453e-05 | 2.6336091031623872e-05 | 40.99% | 69.46% | 1.69x | ✅ | +| `hexbytes_new[single 0xff]` | 4.2341900454552596e-05 | 2.5345621179626575e-05 | 40.14% | 67.06% | 1.67x | ✅ | +| `hexbytes_new[single null byte]` | 4.2525391463418224e-05 | 2.523053461995226e-05 | 40.67% | 68.55% | 1.69x | ✅ | +| `hexbytes_new[two patterns]` | 4.369902588475111e-05 | 2.6249559665532792e-05 | 39.93% | 66.48% | 1.66x | ✅ | +| `hexbytes_repr[0-9]` | 2.9187304621569174e-05 | 1.4767182477565945e-05 | 49.41% | 97.65% | 1.98x | ✅ | +| `hexbytes_repr[4-byte pattern]` | 0.00012095054334785625 | 4.073080271460914e-05 | 66.32% | 196.95% | 2.97x | ✅ | +| `hexbytes_repr[all byte values]` | 0.00012079475715495627 | 4.080656330244894e-05 | 66.22% | 196.02% | 2.96x | ✅ | +| `hexbytes_repr[alternating 0x00/0xff]` | 4.879247173946032e-05 | 1.972718656821867e-05 | 59.57% | 147.34% | 2.47x | ✅ | +| `hexbytes_repr[alternating 0xaa/0x55]` | 4.907386938716735e-05 | 2.0031776270147567e-05 | 59.18% | 144.98% | 2.45x | ✅ | +| `hexbytes_repr[ascii sentence]` | 4.037500615403e-05 | 1.798608584618184e-05 | 55.45% | 124.48% | 2.24x | ✅ | +| `hexbytes_repr[b'']` | 2.1374154054112182e-05 | 1.1996002272361253e-05 | 43.88% | 78.18% | 1.78x | ✅ | +| `hexbytes_repr[b'\\x00'*32]` | 3.6706308348955985e-05 | 1.672493529541419e-05 | 54.44% | 119.47% | 2.19x | ✅ | +| `hexbytes_repr[b'\\x00\\xff\\x00\\xff']` | 2.629904158189077e-05 | 1.445360420518436e-05 | 45.04% | 81.95% | 1.82x | ✅ | +| `hexbytes_repr[b'\\x01'*100]` | 6.156156128892413e-05 | 2.3513707607178435e-05 | 61.80% | 161.81% | 2.62x | ✅ | +| `hexbytes_repr[b'\\x01'*2048]` | 0.0007640247680792069 | 0.00022208838299627866 | 70.93% | 244.02% | 3.44x | ✅ | +| `hexbytes_repr[b'\\x01\\x02\\x03']` | 2.641780942028035e-05 | 1.3975240327200895e-05 | 47.10% | 89.03% | 1.89x | ✅ | +| `hexbytes_repr[b'\\x10\\x20\\x30\\x40\\x50']` | 2.706146425852074e-05 | 1.3944181015269194e-05 | 48.47% | 94.07% | 1.94x | ✅ | +| `hexbytes_repr[b'\\x7f'*8]` | 2.8317761728101958e-05 | 1.452182530084492e-05 | 48.72% | 95.00% | 1.95x | ✅ | +| `hexbytes_repr[b'\\x80'*8]` | 2.8246804651327292e-05 | 1.449871519197123e-05 | 48.67% | 94.82% | 1.95x | ✅ | +| `hexbytes_repr[b'\\xde\\xad\\xbe\\xef']` | 2.6556674396914108e-05 | 1.3960063447599712e-05 | 47.43% | 90.23% | 1.90x | ✅ | +| `hexbytes_repr[b'\\xff'*64]` | 4.906146813993663e-05 | 1.9941398499679938e-05 | 59.35% | 146.03% | 2.46x | ✅ | +| `hexbytes_repr[b'a'*1024]` | 0.0003943572048768505 | 0.00011920687747521057 | 69.77% | 230.82% | 3.31x | ✅ | +| `hexbytes_repr[b'abc']` | 2.636133273036128e-05 | 1.4088210523049315e-05 | 46.56% | 87.12% | 1.87x | ✅ | +| `hexbytes_repr[long alternating]` | 0.0004009027828012222 | 0.00012224040825631327 | 69.51% | 227.96% | 3.28x | ✅ | +| `hexbytes_repr[mixed pattern]` | 9.74906938816574e-05 | 3.389073299281704e-05 | 65.24% | 187.66% | 2.88x | ✅ | +| `hexbytes_repr[multiples of 0x10]` | 2.8980901472739657e-05 | 1.4768078790974174e-05 | 49.04% | 96.24% | 1.96x | ✅ | +| `hexbytes_repr[palindrome ascii]` | 2.7497650007931497e-05 | 1.4206513090344305e-05 | 48.34% | 93.56% | 1.94x | ✅ | +| `hexbytes_repr[palindrome numeric]` | 2.7167873682963378e-05 | 1.4074426174185583e-05 | 48.19% | 93.03% | 1.93x | ✅ | +| `hexbytes_repr[palindrome]` | 3.1805676812776164e-05 | 1.569448214240066e-05 | 50.66% | 102.66% | 2.03x | ✅ | +| `hexbytes_repr[repeated 0-9]` | 6.202144388762241e-05 | 2.3521573515010182e-05 | 62.08% | 163.68% | 2.64x | ✅ | +| `hexbytes_repr[single 0xff]` | 2.5682551238886384e-05 | 1.3670211707782565e-05 | 46.77% | 87.87% | 1.88x | ✅ | +| `hexbytes_repr[single null byte]` | 2.5739552433113837e-05 | 1.3692272049884517e-05 | 46.80% | 87.99% | 1.88x | ✅ | +| `hexbytes_repr[two patterns]` | 4.8869286458867283e-05 | 1.9801979955166373e-05 | 59.48% | 146.79% | 2.47x | ✅ | +| `hexbytes_to_0x_hex[0-9]` | 1.5507100781739503e-05 | 1.3720889616615897e-05 | 11.52% | 13.02% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[4-byte pattern]` | 4.160869849896216e-05 | 3.9532899704882e-05 | 4.99% | 5.25% | 1.05x | ✅ | +| `hexbytes_to_0x_hex[all byte values]` | 4.203209895051505e-05 | 3.966634079237324e-05 | 5.63% | 5.96% | 1.06x | ✅ | +| `hexbytes_to_0x_hex[alternating 0x00/0xff]` | 2.0528765549755123e-05 | 1.9060867073581375e-05 | 7.15% | 7.70% | 1.08x | ✅ | +| `hexbytes_to_0x_hex[alternating 0xaa/0x55]` | 2.0541844460125804e-05 | 1.904253573168782e-05 | 7.30% | 7.87% | 1.08x | ✅ | +| `hexbytes_to_0x_hex[ascii sentence]` | 1.8883281837479487e-05 | 1.7089710073088742e-05 | 9.50% | 10.50% | 1.10x | ✅ | +| `hexbytes_to_0x_hex[b'']` | 1.0087661560853127e-05 | 1.1426056170392028e-05 | -13.27% | -11.71% | 0.88x | ❌ | +| `hexbytes_to_0x_hex[b'\\x00'*32]` | 1.755908759655568e-05 | 1.588403147533557e-05 | 9.54% | 10.55% | 1.11x | ✅ | +| `hexbytes_to_0x_hex[b'\\x00\\xff\\x00\\xff']` | 1.4788934788884675e-05 | 1.3202085566789468e-05 | 10.73% | 12.02% | 1.12x | ✅ | +| `hexbytes_to_0x_hex[b'\\x01'*100]` | 2.5236715245189543e-05 | 2.275266905241282e-05 | 9.84% | 10.92% | 1.11x | ✅ | +| `hexbytes_to_0x_hex[b'\\x01'*2048]` | 0.00022311016033142175 | 0.00022127130409725708 | 0.82% | 0.83% | 1.01x | ✅ | +| `hexbytes_to_0x_hex[b'\\x01\\x02\\x03']` | 1.479442719469979e-05 | 1.2880539704547602e-05 | 12.94% | 14.86% | 1.15x | ✅ | +| `hexbytes_to_0x_hex[b'\\x10\\x20\\x30\\x40\\x50']` | 1.5002000816647791e-05 | 1.3125483134257102e-05 | 12.51% | 14.30% | 1.14x | ✅ | +| `hexbytes_to_0x_hex[b'\\x7f'*8]` | 1.5185757284642895e-05 | 1.35887309395344e-05 | 10.52% | 11.75% | 1.12x | ✅ | +| `hexbytes_to_0x_hex[b'\\x80'*8]` | 1.5156579193448804e-05 | 1.3370986444776743e-05 | 11.78% | 13.35% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[b'\\xde\\xad\\xbe\\xef']` | 1.4873734311867481e-05 | 1.316189826343049e-05 | 11.51% | 13.01% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[b'\\xff'*64]` | 2.0543926774309124e-05 | 1.924749086826406e-05 | 6.31% | 6.74% | 1.07x | ✅ | +| `hexbytes_to_0x_hex[b'a'*1024]` | 0.00012653994401341594 | 0.00012202280081000878 | 3.57% | 3.70% | 1.04x | ✅ | +| `hexbytes_to_0x_hex[b'abc']` | 1.4669784406308202e-05 | 1.2947219349042556e-05 | 11.74% | 13.30% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[long alternating]` | 0.0001223113650088322 | 0.00012160198987206701 | 0.58% | 0.58% | 1.01x | ✅ | +| `hexbytes_to_0x_hex[mixed pattern]` | 3.4854023484979934e-05 | 3.302895178778691e-05 | 5.24% | 5.53% | 1.06x | ✅ | +| `hexbytes_to_0x_hex[multiples of 0x10]` | 1.5497808532987216e-05 | 1.379875391961279e-05 | 10.96% | 12.31% | 1.12x | ✅ | +| `hexbytes_to_0x_hex[palindrome ascii]` | 1.5222916836600922e-05 | 1.3193096140767923e-05 | 13.33% | 15.39% | 1.15x | ✅ | +| `hexbytes_to_0x_hex[palindrome numeric]` | 1.4942441585811032e-05 | 1.317183261852326e-05 | 11.85% | 13.44% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[palindrome]` | 1.6303881224814978e-05 | 1.475977400827135e-05 | 9.47% | 10.46% | 1.10x | ✅ | +| `hexbytes_to_0x_hex[repeated 0-9]` | 2.5400406723852176e-05 | 2.286319150446288e-05 | 9.99% | 11.10% | 1.11x | ✅ | +| `hexbytes_to_0x_hex[single 0xff]` | 1.4636139161965622e-05 | 1.2782157128082903e-05 | 12.67% | 14.50% | 1.15x | ✅ | +| `hexbytes_to_0x_hex[single null byte]` | 1.456926841651575e-05 | 1.261913417901959e-05 | 13.39% | 15.45% | 1.15x | ✅ | +| `hexbytes_to_0x_hex[two patterns]` | 2.0577188057685784e-05 | 1.899111175092068e-05 | 7.71% | 8.35% | 1.08x | ✅ | From 21706c5562367f046ddc7bd02517c522a73012f0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 14 Oct 2025 00:05:08 -0400 Subject: [PATCH 90/98] chore(deps): update actions/setup-python action to v6 (#31) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/tox.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tox.yaml b/.github/workflows/tox.yaml index ec97fa9..a7070ff 100644 --- a/.github/workflows/tox.yaml +++ b/.github/workflows/tox.yaml @@ -66,7 +66,7 @@ jobs: # No architecture specified for MacOS - name: Set up Python (macos) if: ${{ matrix.os == 'macos-latest' }} - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: ${{ matrix.python-version }} cache: pip From a1d37ac84566b5d20b887700b7d21fa3bbc1e2c0 Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Tue, 14 Oct 2025 02:08:47 -0400 Subject: [PATCH 91/98] feat(test): limit cronjob to 4 runners (#35) --- .github/workflows/tox.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/tox.yaml b/.github/workflows/tox.yaml index a7070ff..4ef9941 100644 --- a/.github/workflows/tox.yaml +++ b/.github/workflows/tox.yaml @@ -40,6 +40,7 @@ jobs: # Exclude x86 (32-bit) builds for macos, which doesn't support 32-bit at all - os: macos-latest architecture: x86 + max-parallel: ${{ (github.event_name == 'schedule' || github.event_name == 'push') && 4 || 20 }} env: TOXENV: py${{ matrix.python-version }}-${{ matrix.jobtype }} TOX_RECREATE_FLAG: ${{ github.event_name == 'schedule' && '-r' || '' }} From a99ffaa9d17466fae039aee8948cf04b2bf75c5e Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Tue, 14 Oct 2025 21:42:53 -0400 Subject: [PATCH 92/98] feat: set mypyc flag strict_dunder_typing=True (#37) --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 44ba46c..f652c97 100644 --- a/setup.py +++ b/setup.py @@ -53,7 +53,7 @@ if skip_mypyc: ext_modules = [] else: - ext_modules = mypycify(["faster_hexbytes/", "--strict", "--pretty"]) + ext_modules = mypycify(["faster_hexbytes/", "--strict", "--pretty"], strict_dunder_typing=True) setup( From 3d5be8d338c9a3ea69a1835b860f15b008c1f4c8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 15 Oct 2025 02:41:58 +0000 Subject: [PATCH 93/98] Update benchmark results [skip ci] --- benchmarks/results/_utils.md | 276 +++++----- benchmarks/results/main.md | 966 +++++++++++++++++------------------ 2 files changed, 621 insertions(+), 621 deletions(-) diff --git a/benchmarks/results/_utils.md b/benchmarks/results/_utils.md index 325a782..7592077 100644 --- a/benchmarks/results/_utils.md +++ b/benchmarks/results/_utils.md @@ -1,141 +1,141 @@ -#### [faster_hexbytes._utils](https://github.com/BobTheBuidler/faster-hexbytes/blob/BobTheBuidler-patch-1/faster_hexbytes/_utils.py) - [view benchmarks](https://github.com/BobTheBuidler/faster-hexbytes/blob/BobTheBuidler-patch-1/benchmarks/test__utils_benchmarks.py) +#### [faster_hexbytes._utils](https://github.com/BobTheBuidler/faster-hexbytes/blob/master/faster_hexbytes/_utils.py) - [view benchmarks](https://github.com/BobTheBuidler/faster-hexbytes/blob/master/benchmarks/test__utils_benchmarks.py) | Function | Reference Mean | Faster Mean | % Change | Speedup (%) | x Faster | Faster | |----------|---------------|-------------|----------|-------------|----------|--------| -| `hexstr_to_bytes['']` | 1.8263086169235732e-05 | 1.1637289754336509e-05 | 36.28% | 56.94% | 1.57x | ✅ | -| `hexstr_to_bytes['0x'+'0'*128]` | 3.4892611234771284e-05 | 2.1072810490509902e-05 | 39.61% | 65.58% | 1.66x | ✅ | -| `hexstr_to_bytes['0x'+'00'*64]` | 3.4540312975593465e-05 | 2.0999137239693436e-05 | 39.20% | 64.48% | 1.64x | ✅ | -| `hexstr_to_bytes['0x'+'00ff'*16]` | 3.1294674831558976e-05 | 1.8311115596499395e-05 | 41.49% | 70.91% | 1.71x | ✅ | -| `hexstr_to_bytes['0x'+'0123456789abcdef'*8]` | 3.4622630552114606e-05 | 2.1239707518168565e-05 | 38.65% | 63.01% | 1.63x | ✅ | -| `hexstr_to_bytes['0x'+'1'*64]` | 3.367733898184971e-05 | 1.8157782421606094e-05 | 46.08% | 85.47% | 1.85x | ✅ | -| `hexstr_to_bytes['0x'+'1234567890abcdef'*8]` | 3.482673393199922e-05 | 2.0964992117670164e-05 | 39.80% | 66.12% | 1.66x | ✅ | -| `hexstr_to_bytes['0x'+'a'*128]` | 3.480868297151971e-05 | 2.122048636397608e-05 | 39.04% | 64.03% | 1.64x | ✅ | -| `hexstr_to_bytes['0x'+'a1b2c3d4'*8]` | 3.126767739658106e-05 | 1.817020675906111e-05 | 41.89% | 72.08% | 1.72x | ✅ | -| `hexstr_to_bytes['0x'+'b'*2048]` | 0.00013694036637338088 | 0.00011846526956541187 | 13.49% | 15.60% | 1.16x | ✅ | -| `hexstr_to_bytes['0x'+'badc0ffee0ddf00d'*4]` | 3.1171360129912135e-05 | 1.8104423807649753e-05 | 41.92% | 72.18% | 1.72x | ✅ | -| `hexstr_to_bytes['0x'+'beef'*16]` | 3.1371871151164316e-05 | 1.816919692263513e-05 | 42.08% | 72.67% | 1.73x | ✅ | -| `hexstr_to_bytes['0x'+'c'*1024]` | 8.980186027091694e-05 | 7.057102780280343e-05 | 21.41% | 27.25% | 1.27x | ✅ | -| `hexstr_to_bytes['0x'+'cafebabe'*8]` | 3.126048637630539e-05 | 1.816402755547292e-05 | 41.89% | 72.10% | 1.72x | ✅ | -| `hexstr_to_bytes['0x'+'d'*512]` | 5.7309284635538944e-05 | 4.090898796273455e-05 | 28.62% | 40.09% | 1.40x | ✅ | -| `hexstr_to_bytes['0x'+'dead'*16]` | 3.146888863888456e-05 | 1.8284510292182024e-05 | 41.90% | 72.11% | 1.72x | ✅ | -| `hexstr_to_bytes['0x'+'e'*256]` | 4.342286451895621e-05 | 2.762901749214456e-05 | 36.37% | 57.16% | 1.57x | ✅ | -| `hexstr_to_bytes['0x'+'f'*128]` | 3.4537545852320184e-05 | 2.1141958240240628e-05 | 38.79% | 63.36% | 1.63x | ✅ | -| `hexstr_to_bytes['0x'+'f'*64]` | 3.3569848430131865e-05 | 1.8088437445771423e-05 | 46.12% | 85.59% | 1.86x | ✅ | -| `hexstr_to_bytes['0x'+'facefeed'*8]` | 3.130614649200409e-05 | 1.8168808193798133e-05 | 41.96% | 72.31% | 1.72x | ✅ | -| `hexstr_to_bytes['0x'+'ff'*32]` | 3.108033223548147e-05 | 1.8291605770040535e-05 | 41.15% | 69.92% | 1.70x | ✅ | -| `hexstr_to_bytes['0x'+'ff00'*16]` | 3.1202729077994887e-05 | 1.8220248324813798e-05 | 41.61% | 71.25% | 1.71x | ✅ | -| `hexstr_to_bytes['0x']` | 2.303683632871218e-05 | 1.0824336236252521e-05 | 53.01% | 112.82% | 2.13x | ✅ | -| `hexstr_to_bytes['0x0']` | 3.1746480144197395e-05 | 1.828279259401338e-05 | 42.41% | 73.64% | 1.74x | ✅ | -| `hexstr_to_bytes['0x1']` | 3.125087117519366e-05 | 1.81716008499014e-05 | 41.85% | 71.98% | 1.72x | ✅ | -| `hexstr_to_bytes['0x1234']` | 2.9042847162620793e-05 | 1.604223559325809e-05 | 44.76% | 81.04% | 1.81x | ✅ | -| `hexstr_to_bytes['0xCAFEBABE']` | 2.9401289950095392e-05 | 1.5987552446652885e-05 | 45.62% | 83.90% | 1.84x | ✅ | -| `hexstr_to_bytes['0xabcdef']` | 2.9059199068380687e-05 | 1.617880954619848e-05 | 44.32% | 79.61% | 1.80x | ✅ | -| `hexstr_to_bytes['0xdeadbeef']` | 2.8913203106255843e-05 | 1.6020952675935775e-05 | 44.59% | 80.47% | 1.80x | ✅ | -| `hexstr_to_bytes['deadbeef']` | 2.1820574861592645e-05 | 1.421504387084691e-05 | 34.85% | 53.50% | 1.54x | ✅ | -| `to_bytes['']` | 2.8174639404890625e-05 | 1.2825732530413803e-05 | 54.48% | 119.67% | 2.20x | ✅ | -| `to_bytes['0x'+'00'*64]` | 4.6140039780883234e-05 | 2.2842063095533077e-05 | 50.49% | 102.00% | 2.02x | ✅ | -| `to_bytes['0x'+'a'*128]` | 4.6569794686142616e-05 | 2.2798823982280496e-05 | 51.04% | 104.26% | 2.04x | ✅ | -| `to_bytes['0x'+'ff'*32]` | 4.3169707192562654e-05 | 2.045148242383087e-05 | 52.63% | 111.08% | 2.11x | ✅ | -| `to_bytes['0x']` | 3.372015280527283e-05 | 1.2195543773033277e-05 | 63.83% | 176.50% | 2.76x | ✅ | -| `to_bytes['0x1234']` | 4.009687022043308e-05 | 1.7297063068140958e-05 | 56.86% | 131.81% | 2.32x | ✅ | -| `to_bytes['0xCAFEBABE']` | 4.1042978440309694e-05 | 1.7636082124802915e-05 | 57.03% | 132.72% | 2.33x | ✅ | -| `to_bytes['0xabcdef']` | 4.006001486585463e-05 | 1.762667623851406e-05 | 56.00% | 127.27% | 2.27x | ✅ | -| `to_bytes['0xdeadbeef']` | 4.043897856087141e-05 | 1.7607858090048418e-05 | 56.46% | 129.66% | 2.30x | ✅ | -| `to_bytes['abc']` | 3.672470797147311e-05 | 1.9750555875226927e-05 | 46.22% | 85.94% | 1.86x | ✅ | -| `to_bytes['deadbeef']` | 3.1745621204307444e-05 | 1.5324477758646085e-05 | 51.73% | 107.16% | 2.07x | ✅ | -| `to_bytes[0-9]` | 6.484846779651946e-06 | 3.47422328627403e-06 | 46.43% | 86.66% | 1.87x | ✅ | -| `to_bytes[0]` | 7.383183894741975e-05 | 3.0943054919100075e-05 | 58.09% | 138.61% | 2.39x | ✅ | -| `to_bytes[123456]` | 8.107189354368797e-05 | 3.375205184177991e-05 | 58.37% | 140.20% | 2.40x | ✅ | -| `to_bytes[2**16]` | 7.968008478341667e-05 | 3.4816946253027235e-05 | 56.30% | 128.85% | 2.29x | ✅ | -| `to_bytes[2**256-1]` | 8.49901280117557e-05 | 3.9685774106574554e-05 | 53.31% | 114.16% | 2.14x | ✅ | -| `to_bytes[2**32]` | 8.24170541031726e-05 | 3.551707419312329e-05 | 56.91% | 132.05% | 2.32x | ✅ | -| `to_bytes[2**64]` | 8.48233405951247e-05 | 3.8433806773242094e-05 | 54.69% | 120.70% | 2.21x | ✅ | -| `to_bytes[2**8]` | 7.772942892171581e-05 | 3.2665605060872146e-05 | 57.98% | 137.95% | 2.38x | ✅ | -| `to_bytes[4-byte pattern]` | 6.484385390558195e-06 | 3.661993763080901e-06 | 43.53% | 77.07% | 1.77x | ✅ | -| `to_bytes[False]` | 2.1876337771602007e-05 | 4.3720322393360065e-06 | 80.01% | 400.37% | 5.00x | ✅ | -| `to_bytes[True]` | 2.181262387493533e-05 | 4.346553487822929e-06 | 80.07% | 401.84% | 5.02x | ✅ | -| `to_bytes[all byte values]` | 6.537453995527932e-06 | 3.588818464493877e-06 | 45.10% | 82.16% | 1.82x | ✅ | -| `to_bytes[alternating 0x00/0xff]` | 6.586017080782295e-06 | 3.6268808662803414e-06 | 44.93% | 81.59% | 1.82x | ✅ | -| `to_bytes[alternating 0xaa/0x55]` | 6.518554141317473e-06 | 3.5598395807421336e-06 | 45.39% | 83.11% | 1.83x | ✅ | -| `to_bytes[ascii sentence]` | 6.525547707377974e-06 | 3.568235895374132e-06 | 45.32% | 82.88% | 1.83x | ✅ | -| `to_bytes[b'']` | 6.003058142938075e-06 | 3.5033370024865494e-06 | 41.64% | 71.35% | 1.71x | ✅ | -| `to_bytes[b'\\x00'*32]` | 6.535704121403627e-06 | 3.5681711482573557e-06 | 45.40% | 83.17% | 1.83x | ✅ | -| `to_bytes[b'\\x00\\xff\\x00\\xff']` | 6.539931688967957e-06 | 3.5665821266068996e-06 | 45.46% | 83.37% | 1.83x | ✅ | -| `to_bytes[b'\\x01'*100]` | 6.680104258202847e-06 | 3.622612787242084e-06 | 45.77% | 84.40% | 1.84x | ✅ | -| `to_bytes[b'\\x01'*2048]` | 6.495902071761733e-06 | 3.474819280241134e-06 | 46.51% | 86.94% | 1.87x | ✅ | -| `to_bytes[b'\\x01\\x02\\x03']` | 6.534666326685929e-06 | 3.5856480729518867e-06 | 45.13% | 82.25% | 1.82x | ✅ | -| `to_bytes[b'\\x10\\x20\\x30\\x40\\x50']` | 6.749395658194378e-06 | 3.5692616971162804e-06 | 47.12% | 89.10% | 1.89x | ✅ | -| `to_bytes[b'\\x7f'*8]` | 6.538907109343602e-06 | 3.6187302052806834e-06 | 44.66% | 80.70% | 1.81x | ✅ | -| `to_bytes[b'\\x80'*8]` | 6.586983114385041e-06 | 3.5676887846526767e-06 | 45.84% | 84.63% | 1.85x | ✅ | -| `to_bytes[b'\\xde\\xad\\xbe\\xef']` | 6.497669256560723e-06 | 3.5669714995317846e-06 | 45.10% | 82.16% | 1.82x | ✅ | -| `to_bytes[b'\\xff'*64]` | 6.555582234409466e-06 | 3.530448828389319e-06 | 46.15% | 85.69% | 1.86x | ✅ | -| `to_bytes[b'a'*1024]` | 6.525598493318736e-06 | 3.476681957562267e-06 | 46.72% | 87.70% | 1.88x | ✅ | -| `to_bytes[b'abc']` | 7.783343109902874e-06 | 3.6283077676065226e-06 | 53.38% | 114.52% | 2.15x | ✅ | -| `to_bytes[bytearray(0-9)]` | 2.8753952592152932e-05 | 1.3932332330634477e-05 | 51.55% | 106.38% | 2.06x | ✅ | -| `to_bytes[bytearray(4-byte pattern)]` | 2.8943745192990364e-05 | 1.4425045651516206e-05 | 50.16% | 100.65% | 2.01x | ✅ | -| `to_bytes[bytearray(all byte values)]` | 2.896527821290427e-05 | 1.3975326630902444e-05 | 51.75% | 107.26% | 2.07x | ✅ | -| `to_bytes[bytearray(alternating 0x00/0xff)]` | 2.8647594603018947e-05 | 1.4140579184804084e-05 | 50.64% | 102.59% | 2.03x | ✅ | -| `to_bytes[bytearray(alternating 0xaa/0x55)]` | 2.8512774529140403e-05 | 1.4032653302904298e-05 | 50.78% | 103.19% | 2.03x | ✅ | -| `to_bytes[bytearray(ascii sentence)]` | 2.852932280680667e-05 | 1.390915998193525e-05 | 51.25% | 105.11% | 2.05x | ✅ | -| `to_bytes[bytearray(b'')]` | 2.638309899844581e-05 | 1.2599877348497635e-05 | 52.24% | 109.39% | 2.09x | ✅ | -| `to_bytes[bytearray(b'\\x00'*32)]` | 2.834713270143255e-05 | 1.3965039346760707e-05 | 50.74% | 102.99% | 2.03x | ✅ | -| `to_bytes[bytearray(b'\\x00\\xff\\x00\\xff')]` | 2.7752907087888507e-05 | 1.4012399613191652e-05 | 49.51% | 98.06% | 1.98x | ✅ | -| `to_bytes[bytearray(b'\\x01'*100)]` | 2.88289083932629e-05 | 1.4059217589972597e-05 | 51.23% | 105.05% | 2.05x | ✅ | -| `to_bytes[bytearray(b'\\x01'*2048)]` | 3.5472967841643385e-05 | 1.911972430627814e-05 | 46.10% | 85.53% | 1.86x | ✅ | -| `to_bytes[bytearray(b'\\x01\\x02\\x03')]` | 2.8555877395128523e-05 | 1.3965245378130305e-05 | 51.10% | 104.48% | 2.04x | ✅ | -| `to_bytes[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 2.8602851614233422e-05 | 1.4224170468778617e-05 | 50.27% | 101.09% | 2.01x | ✅ | -| `to_bytes[bytearray(b'\\x7f'*8)]` | 2.833613004207562e-05 | 1.4120671589903749e-05 | 50.17% | 100.67% | 2.01x | ✅ | -| `to_bytes[bytearray(b'\\x80'*8)]` | 2.9114042975558028e-05 | 1.3967151028574824e-05 | 52.03% | 108.45% | 2.08x | ✅ | -| `to_bytes[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 2.9203695548841923e-05 | 1.3918567986384679e-05 | 52.34% | 109.82% | 2.10x | ✅ | -| `to_bytes[bytearray(b'\\xff'*64)]` | 2.8678068094873103e-05 | 1.4003273116358322e-05 | 51.17% | 104.80% | 2.05x | ✅ | -| `to_bytes[bytearray(b'a'*1024)]` | 3.488781049055474e-05 | 1.8720524899700206e-05 | 46.34% | 86.36% | 1.86x | ✅ | -| `to_bytes[bytearray(b'abc')]` | 2.9184731906960552e-05 | 1.381701339704248e-05 | 52.66% | 111.22% | 2.11x | ✅ | -| `to_bytes[bytearray(long alternating)]` | 3.606243276928635e-05 | 1.879037247865509e-05 | 47.89% | 91.92% | 1.92x | ✅ | -| `to_bytes[bytearray(mixed pattern)]` | 2.8973933556836655e-05 | 1.4313393003297235e-05 | 50.60% | 102.43% | 2.02x | ✅ | -| `to_bytes[bytearray(multiples of 0x10)]` | 2.874130884756391e-05 | 1.4061787627388159e-05 | 51.07% | 104.39% | 2.04x | ✅ | -| `to_bytes[bytearray(palindrome ascii)]` | 2.821820171365564e-05 | 1.3843436495142554e-05 | 50.94% | 103.84% | 2.04x | ✅ | -| `to_bytes[bytearray(palindrome numeric)]` | 2.8853214450014793e-05 | 1.3913551085482761e-05 | 51.78% | 107.37% | 2.07x | ✅ | -| `to_bytes[bytearray(palindrome)]` | 2.8644389646167733e-05 | 1.402161524311482e-05 | 51.05% | 104.29% | 2.04x | ✅ | -| `to_bytes[bytearray(repeated 0-9)]` | 2.8862503340437722e-05 | 1.4086646467656822e-05 | 51.19% | 104.89% | 2.05x | ✅ | -| `to_bytes[bytearray(single 0xff)]` | 2.8452219062684765e-05 | 1.3858921755522075e-05 | 51.29% | 105.30% | 2.05x | ✅ | -| `to_bytes[bytearray(single null byte)]` | 2.829732616035128e-05 | 1.3747466767432303e-05 | 51.42% | 105.84% | 2.06x | ✅ | -| `to_bytes[bytearray(two patterns)]` | 2.8603975035050417e-05 | 1.3901398197178127e-05 | 51.40% | 105.76% | 2.06x | ✅ | -| `to_bytes[long alternating]` | 6.472419414796197e-06 | 3.4669699293956488e-06 | 46.43% | 86.69% | 1.87x | ✅ | -| `to_bytes[memoryview(0-9)]` | 4.1871676670371116e-05 | 1.684306337462541e-05 | 59.77% | 148.60% | 2.49x | ✅ | -| `to_bytes[memoryview(4-byte pattern)]` | 4.234002850554881e-05 | 1.7755843885824303e-05 | 58.06% | 138.46% | 2.38x | ✅ | -| `to_bytes[memoryview(all byte values)]` | 4.1831839522814446e-05 | 1.7728108863189487e-05 | 57.62% | 135.96% | 2.36x | ✅ | -| `to_bytes[memoryview(alternating 0x00/0xff)]` | 4.135130793273487e-05 | 1.687657922347854e-05 | 59.19% | 145.02% | 2.45x | ✅ | -| `to_bytes[memoryview(alternating 0xaa/0x55)]` | 4.184121926776612e-05 | 1.7076547910124444e-05 | 59.19% | 145.02% | 2.45x | ✅ | -| `to_bytes[memoryview(ascii sentence)]` | 4.170808350891933e-05 | 1.6712570559553503e-05 | 59.93% | 149.56% | 2.50x | ✅ | -| `to_bytes[memoryview(b'')]` | 4.0130208847864645e-05 | 1.5166008878556888e-05 | 62.21% | 164.61% | 2.65x | ✅ | -| `to_bytes[memoryview(b'\\x00'*32)]` | 4.173906530525802e-05 | 1.6623704938375228e-05 | 60.17% | 151.08% | 2.51x | ✅ | -| `to_bytes[memoryview(b'\\x00\\xff\\x00\\xff')]` | 4.1759540824277416e-05 | 1.6676629621082363e-05 | 60.07% | 150.41% | 2.50x | ✅ | -| `to_bytes[memoryview(b'\\x01'*100)]` | 4.153482269698995e-05 | 1.731104115394515e-05 | 58.32% | 139.93% | 2.40x | ✅ | -| `to_bytes[memoryview(b'\\x01'*2048)]` | 5.034062186359411e-05 | 2.3934077682444687e-05 | 52.46% | 110.33% | 2.10x | ✅ | -| `to_bytes[memoryview(b'\\x01\\x02\\x03')]` | 4.2058112412085035e-05 | 1.6930829402223397e-05 | 59.74% | 148.41% | 2.48x | ✅ | -| `to_bytes[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 4.088636547665508e-05 | 1.7056470547478756e-05 | 58.28% | 139.71% | 2.40x | ✅ | -| `to_bytes[memoryview(b'\\x7f'*8)]` | 4.252775145676255e-05 | 1.6747113766329555e-05 | 60.62% | 153.94% | 2.54x | ✅ | -| `to_bytes[memoryview(b'\\x80'*8)]` | 4.1593599573414795e-05 | 1.6960819705997886e-05 | 59.22% | 145.23% | 2.45x | ✅ | -| `to_bytes[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 4.183566717314151e-05 | 1.6873635466074085e-05 | 59.67% | 147.94% | 2.48x | ✅ | -| `to_bytes[memoryview(b'\\xff'*64)]` | 4.147664658220224e-05 | 1.661833515294322e-05 | 59.93% | 149.58% | 2.50x | ✅ | -| `to_bytes[memoryview(b'a'*1024)]` | 4.976585476527999e-05 | 2.2346393196244003e-05 | 55.10% | 122.70% | 2.23x | ✅ | -| `to_bytes[memoryview(b'abc')]` | 4.17189182612393e-05 | 1.7182698568642615e-05 | 58.81% | 142.80% | 2.43x | ✅ | -| `to_bytes[memoryview(long alternating)]` | 4.882996815833903e-05 | 2.254067522707382e-05 | 53.84% | 116.63% | 2.17x | ✅ | -| `to_bytes[memoryview(mixed pattern)]` | 4.2098383647494465e-05 | 1.7647291476878538e-05 | 58.08% | 138.55% | 2.39x | ✅ | -| `to_bytes[memoryview(multiples of 0x10)]` | 4.154028360170726e-05 | 1.692340053647624e-05 | 59.26% | 145.46% | 2.45x | ✅ | -| `to_bytes[memoryview(palindrome ascii)]` | 4.232562632309652e-05 | 1.7002184356979993e-05 | 59.83% | 148.94% | 2.49x | ✅ | -| `to_bytes[memoryview(palindrome numeric)]` | 4.192197692350123e-05 | 1.71289141353016e-05 | 59.14% | 144.74% | 2.45x | ✅ | -| `to_bytes[memoryview(palindrome)]` | 4.1881971954116855e-05 | 1.6668849098886834e-05 | 60.20% | 151.26% | 2.51x | ✅ | -| `to_bytes[memoryview(repeated 0-9)]` | 4.215155775495408e-05 | 1.7270896687037385e-05 | 59.03% | 144.06% | 2.44x | ✅ | -| `to_bytes[memoryview(single 0xff)]` | 4.157911736591486e-05 | 1.7281793517300448e-05 | 58.44% | 140.59% | 2.41x | ✅ | -| `to_bytes[memoryview(single null byte)]` | 4.1103067488442965e-05 | 1.7403985214513442e-05 | 57.66% | 136.17% | 2.36x | ✅ | -| `to_bytes[memoryview(two patterns)]` | 4.200551930310622e-05 | 1.6750777597016637e-05 | 60.12% | 150.77% | 2.51x | ✅ | -| `to_bytes[mixed pattern]` | 6.5360251329681645e-06 | 3.6605808739734104e-06 | 43.99% | 78.55% | 1.79x | ✅ | -| `to_bytes[multiples of 0x10]` | 6.437531249991194e-06 | 3.4741175954605173e-06 | 46.03% | 85.30% | 1.85x | ✅ | -| `to_bytes[palindrome ascii]` | 6.529976889523192e-06 | 3.6609853465694693e-06 | 43.94% | 78.37% | 1.78x | ✅ | -| `to_bytes[palindrome numeric]` | 6.600803261505699e-06 | 3.7137583536125623e-06 | 43.74% | 77.74% | 1.78x | ✅ | -| `to_bytes[palindrome]` | 6.554649127124211e-06 | 3.566918196047829e-06 | 45.58% | 83.76% | 1.84x | ✅ | -| `to_bytes[repeated 0-9]` | 6.538850735915771e-06 | 3.571750007608274e-06 | 45.38% | 83.07% | 1.83x | ✅ | -| `to_bytes[single 0xff]` | 6.3175221644013145e-06 | 3.651201620829169e-06 | 42.21% | 73.03% | 1.73x | ✅ | -| `to_bytes[single null byte]` | 6.159580888943075e-06 | 3.595804272380779e-06 | 41.62% | 71.30% | 1.71x | ✅ | -| `to_bytes[two patterns]` | 6.5757959797462205e-06 | 3.711216561520405e-06 | 43.56% | 77.19% | 1.77x | ✅ | +| `hexstr_to_bytes['']` | 1.8265031036840496e-05 | 1.0818353622888828e-05 | 40.77% | 68.83% | 1.69x | ✅ | +| `hexstr_to_bytes['0x'+'0'*128]` | 3.48106117387236e-05 | 2.1064456324836723e-05 | 39.49% | 65.26% | 1.65x | ✅ | +| `hexstr_to_bytes['0x'+'00'*64]` | 3.4569382404575054e-05 | 2.113074126289758e-05 | 38.87% | 63.60% | 1.64x | ✅ | +| `hexstr_to_bytes['0x'+'00ff'*16]` | 3.1294880640865165e-05 | 1.8257581128391344e-05 | 41.66% | 71.41% | 1.71x | ✅ | +| `hexstr_to_bytes['0x'+'0123456789abcdef'*8]` | 3.4487114352523785e-05 | 2.1319301371068184e-05 | 38.18% | 61.76% | 1.62x | ✅ | +| `hexstr_to_bytes['0x'+'1'*64]` | 3.1392733220324415e-05 | 1.8121255622065647e-05 | 42.28% | 73.24% | 1.73x | ✅ | +| `hexstr_to_bytes['0x'+'1234567890abcdef'*8]` | 3.462527345792889e-05 | 2.108709369174962e-05 | 39.10% | 64.20% | 1.64x | ✅ | +| `hexstr_to_bytes['0x'+'a'*128]` | 3.473270624028392e-05 | 2.105434982738371e-05 | 39.38% | 64.97% | 1.65x | ✅ | +| `hexstr_to_bytes['0x'+'a1b2c3d4'*8]` | 3.1467627743182165e-05 | 1.8099886556773463e-05 | 42.48% | 73.86% | 1.74x | ✅ | +| `hexstr_to_bytes['0x'+'b'*2048]` | 0.0001371154186080856 | 0.00011899454057622306 | 13.22% | 15.23% | 1.15x | ✅ | +| `hexstr_to_bytes['0x'+'badc0ffee0ddf00d'*4]` | 3.1442456131902006e-05 | 1.8259576228414115e-05 | 41.93% | 72.20% | 1.72x | ✅ | +| `hexstr_to_bytes['0x'+'beef'*16]` | 3.148983591156057e-05 | 1.8224676983834355e-05 | 42.13% | 72.79% | 1.73x | ✅ | +| `hexstr_to_bytes['0x'+'c'*1024]` | 8.941691125760567e-05 | 7.08383454978325e-05 | 20.78% | 26.23% | 1.26x | ✅ | +| `hexstr_to_bytes['0x'+'cafebabe'*8]` | 3.1405471956352554e-05 | 1.8277468030407478e-05 | 41.80% | 71.83% | 1.72x | ✅ | +| `hexstr_to_bytes['0x'+'d'*512]` | 5.7176007664668063e-05 | 4.0721405318317644e-05 | 28.78% | 40.41% | 1.40x | ✅ | +| `hexstr_to_bytes['0x'+'dead'*16]` | 3.172656336899147e-05 | 1.8381743673678752e-05 | 42.06% | 72.60% | 1.73x | ✅ | +| `hexstr_to_bytes['0x'+'e'*256]` | 4.342722044409168e-05 | 2.7753765562136623e-05 | 36.09% | 56.47% | 1.56x | ✅ | +| `hexstr_to_bytes['0x'+'f'*128]` | 3.469195489758815e-05 | 2.1405908886769915e-05 | 38.30% | 62.07% | 1.62x | ✅ | +| `hexstr_to_bytes['0x'+'f'*64]` | 3.1200266498902244e-05 | 1.8153740904838577e-05 | 41.82% | 71.87% | 1.72x | ✅ | +| `hexstr_to_bytes['0x'+'facefeed'*8]` | 3.143628339790148e-05 | 1.828487346655031e-05 | 41.84% | 71.93% | 1.72x | ✅ | +| `hexstr_to_bytes['0x'+'ff'*32]` | 3.162774235050176e-05 | 1.7788644200015465e-05 | 43.76% | 77.80% | 1.78x | ✅ | +| `hexstr_to_bytes['0x'+'ff00'*16]` | 3.1203822733749597e-05 | 1.7927412155141745e-05 | 42.55% | 74.06% | 1.74x | ✅ | +| `hexstr_to_bytes['0x']` | 2.2864566232658183e-05 | 1.0807926399776171e-05 | 52.73% | 111.55% | 2.12x | ✅ | +| `hexstr_to_bytes['0x0']` | 3.16298023857698e-05 | 1.8389114165819183e-05 | 41.86% | 72.00% | 1.72x | ✅ | +| `hexstr_to_bytes['0x1']` | 3.121632381959181e-05 | 1.871748192437112e-05 | 40.04% | 66.78% | 1.67x | ✅ | +| `hexstr_to_bytes['0x1234']` | 2.863245329949138e-05 | 1.5908421878918133e-05 | 44.44% | 79.98% | 1.80x | ✅ | +| `hexstr_to_bytes['0xCAFEBABE']` | 2.9292754142909626e-05 | 1.614961296160776e-05 | 44.87% | 81.38% | 1.81x | ✅ | +| `hexstr_to_bytes['0xabcdef']` | 2.9146721422313698e-05 | 1.5789576398088737e-05 | 45.83% | 84.59% | 1.85x | ✅ | +| `hexstr_to_bytes['0xdeadbeef']` | 2.935899351408868e-05 | 1.59869500423835e-05 | 45.55% | 83.64% | 1.84x | ✅ | +| `hexstr_to_bytes['deadbeef']` | 2.2187515584479e-05 | 1.4204332004679542e-05 | 35.98% | 56.20% | 1.56x | ✅ | +| `to_bytes['']` | 2.8767739551788455e-05 | 1.208788143071761e-05 | 57.98% | 137.99% | 2.38x | ✅ | +| `to_bytes['0x'+'00'*64]` | 4.724161944066457e-05 | 2.2917712685569093e-05 | 51.49% | 106.14% | 2.06x | ✅ | +| `to_bytes['0x'+'a'*128]` | 4.80429607528706e-05 | 2.288399257594495e-05 | 52.37% | 109.94% | 2.10x | ✅ | +| `to_bytes['0x'+'ff'*32]` | 4.424147228108829e-05 | 2.0414340735219646e-05 | 53.86% | 116.72% | 2.17x | ✅ | +| `to_bytes['0x']` | 3.4633827135510764e-05 | 1.2454329444852403e-05 | 64.04% | 178.09% | 2.78x | ✅ | +| `to_bytes['0x1234']` | 4.1523932137317815e-05 | 1.7775289110241235e-05 | 57.19% | 133.60% | 2.34x | ✅ | +| `to_bytes['0xCAFEBABE']` | 4.1490285584571187e-05 | 1.7573233455432773e-05 | 57.64% | 136.10% | 2.36x | ✅ | +| `to_bytes['0xabcdef']` | 4.121760116130357e-05 | 1.7638944660939296e-05 | 57.21% | 133.67% | 2.34x | ✅ | +| `to_bytes['0xdeadbeef']` | 4.1866793231468244e-05 | 1.7708767407246115e-05 | 57.70% | 136.42% | 2.36x | ✅ | +| `to_bytes['abc']` | 3.7383120228402616e-05 | 1.9633682245414375e-05 | 47.48% | 90.40% | 1.90x | ✅ | +| `to_bytes['deadbeef']` | 3.36630891162861e-05 | 1.4867702732782816e-05 | 55.83% | 126.42% | 2.26x | ✅ | +| `to_bytes[0-9]` | 6.607898839118496e-06 | 3.565398260883424e-06 | 46.04% | 85.33% | 1.85x | ✅ | +| `to_bytes[0]` | 7.64808991902418e-05 | 3.0887657002497055e-05 | 59.61% | 147.61% | 2.48x | ✅ | +| `to_bytes[123456]` | 8.086384269684407e-05 | 3.553665217382275e-05 | 56.05% | 127.55% | 2.28x | ✅ | +| `to_bytes[2**16]` | 8.165539348608992e-05 | 3.5217010512187575e-05 | 56.87% | 131.86% | 2.32x | ✅ | +| `to_bytes[2**256-1]` | 8.462405471137204e-05 | 4.0702509651285575e-05 | 51.90% | 107.91% | 2.08x | ✅ | +| `to_bytes[2**32]` | 8.304881070076173e-05 | 3.852775994957527e-05 | 53.61% | 115.56% | 2.16x | ✅ | +| `to_bytes[2**64]` | 8.321779148214102e-05 | 3.974385517986183e-05 | 52.24% | 109.39% | 2.09x | ✅ | +| `to_bytes[2**8]` | 7.960694582152316e-05 | 3.359864925102589e-05 | 57.79% | 136.93% | 2.37x | ✅ | +| `to_bytes[4-byte pattern]` | 6.607979682761316e-06 | 3.641193311115989e-06 | 44.90% | 81.48% | 1.81x | ✅ | +| `to_bytes[False]` | 2.3175095726303814e-05 | 4.2868974773418265e-06 | 81.50% | 440.60% | 5.41x | ✅ | +| `to_bytes[True]` | 2.2845753797640923e-05 | 4.249801391417992e-06 | 81.40% | 437.57% | 5.38x | ✅ | +| `to_bytes[all byte values]` | 6.570740370491101e-06 | 3.6604815259671475e-06 | 44.29% | 79.50% | 1.80x | ✅ | +| `to_bytes[alternating 0x00/0xff]` | 6.6379763616022835e-06 | 3.5676145636222147e-06 | 46.25% | 86.06% | 1.86x | ✅ | +| `to_bytes[alternating 0xaa/0x55]` | 6.545270661735808e-06 | 3.5652474842634582e-06 | 45.53% | 83.59% | 1.84x | ✅ | +| `to_bytes[ascii sentence]` | 6.5983782602965815e-06 | 3.5687198710223096e-06 | 45.92% | 84.89% | 1.85x | ✅ | +| `to_bytes[b'']` | 6.203563865686327e-06 | 3.7208993912965393e-06 | 40.02% | 66.72% | 1.67x | ✅ | +| `to_bytes[b'\\x00'*32]` | 6.797017128635246e-06 | 3.782967793457678e-06 | 44.34% | 79.67% | 1.80x | ✅ | +| `to_bytes[b'\\x00\\xff\\x00\\xff']` | 6.598000184114403e-06 | 3.786604538859205e-06 | 42.61% | 74.25% | 1.74x | ✅ | +| `to_bytes[b'\\x01'*100]` | 6.632974499672324e-06 | 3.5266235305452413e-06 | 46.83% | 88.08% | 1.88x | ✅ | +| `to_bytes[b'\\x01'*2048]` | 6.646240870466545e-06 | 3.5679001351755268e-06 | 46.32% | 86.28% | 1.86x | ✅ | +| `to_bytes[b'\\x01\\x02\\x03']` | 6.495176257910074e-06 | 3.83918389605137e-06 | 40.89% | 69.18% | 1.69x | ✅ | +| `to_bytes[b'\\x10\\x20\\x30\\x40\\x50']` | 6.6494314571618005e-06 | 3.4736287848499767e-06 | 47.76% | 91.43% | 1.91x | ✅ | +| `to_bytes[b'\\x7f'*8]` | 6.6029223552890405e-06 | 3.57069557925024e-06 | 45.92% | 84.92% | 1.85x | ✅ | +| `to_bytes[b'\\x80'*8]` | 6.629168133043793e-06 | 3.569627339901665e-06 | 46.15% | 85.71% | 1.86x | ✅ | +| `to_bytes[b'\\xde\\xad\\xbe\\xef']` | 6.632895765667766e-06 | 3.82865800008364e-06 | 42.28% | 73.24% | 1.73x | ✅ | +| `to_bytes[b'\\xff'*64]` | 6.626496744846487e-06 | 3.838222313556072e-06 | 42.08% | 72.64% | 1.73x | ✅ | +| `to_bytes[b'a'*1024]` | 6.526263035520842e-06 | 3.844738512234349e-06 | 41.09% | 69.75% | 1.70x | ✅ | +| `to_bytes[b'abc']` | 6.494023752021424e-06 | 3.711824923577414e-06 | 42.84% | 74.96% | 1.75x | ✅ | +| `to_bytes[bytearray(0-9)]` | 2.9100261223081722e-05 | 1.4073834723977602e-05 | 51.64% | 106.77% | 2.07x | ✅ | +| `to_bytes[bytearray(4-byte pattern)]` | 3.0219734364169352e-05 | 1.430355527660967e-05 | 52.67% | 111.27% | 2.11x | ✅ | +| `to_bytes[bytearray(all byte values)]` | 2.9469805951882877e-05 | 1.4329421638296105e-05 | 51.38% | 105.66% | 2.06x | ✅ | +| `to_bytes[bytearray(alternating 0x00/0xff)]` | 2.8871583279223313e-05 | 1.4086529348678737e-05 | 51.21% | 104.96% | 2.05x | ✅ | +| `to_bytes[bytearray(alternating 0xaa/0x55)]` | 2.8431525098819396e-05 | 1.4025179470032653e-05 | 50.67% | 102.72% | 2.03x | ✅ | +| `to_bytes[bytearray(ascii sentence)]` | 2.8945176012117372e-05 | 1.3949390935321998e-05 | 51.81% | 107.50% | 2.08x | ✅ | +| `to_bytes[bytearray(b'')]` | 2.7110836616644204e-05 | 1.2424443959715387e-05 | 54.17% | 118.21% | 2.18x | ✅ | +| `to_bytes[bytearray(b'\\x00'*32)]` | 2.8915287024335052e-05 | 1.4015107911370946e-05 | 51.53% | 106.32% | 2.06x | ✅ | +| `to_bytes[bytearray(b'\\x00\\xff\\x00\\xff')]` | 2.8521276175498012e-05 | 1.4054300831609767e-05 | 50.72% | 102.94% | 2.03x | ✅ | +| `to_bytes[bytearray(b'\\x01'*100)]` | 2.956872205427049e-05 | 1.415330004580673e-05 | 52.13% | 108.92% | 2.09x | ✅ | +| `to_bytes[bytearray(b'\\x01'*2048)]` | 3.650672109536751e-05 | 1.940258270581093e-05 | 46.85% | 88.15% | 1.88x | ✅ | +| `to_bytes[bytearray(b'\\x01\\x02\\x03')]` | 2.943451440077889e-05 | 1.4032475374987274e-05 | 52.33% | 109.76% | 2.10x | ✅ | +| `to_bytes[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 2.8757095194063118e-05 | 1.4128017870245605e-05 | 50.87% | 103.55% | 2.04x | ✅ | +| `to_bytes[bytearray(b'\\x7f'*8)]` | 2.9282562185049603e-05 | 1.3975496057715808e-05 | 52.27% | 109.53% | 2.10x | ✅ | +| `to_bytes[bytearray(b'\\x80'*8)]` | 2.9428854839187653e-05 | 1.4263711184541324e-05 | 51.53% | 106.32% | 2.06x | ✅ | +| `to_bytes[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 2.9320277234600084e-05 | 1.396496818487286e-05 | 52.37% | 109.96% | 2.10x | ✅ | +| `to_bytes[bytearray(b'\\xff'*64)]` | 2.817498989865669e-05 | 1.4065001599299754e-05 | 50.08% | 100.32% | 2.00x | ✅ | +| `to_bytes[bytearray(b'a'*1024)]` | 3.5662421616964274e-05 | 1.8994211426882947e-05 | 46.74% | 87.75% | 1.88x | ✅ | +| `to_bytes[bytearray(b'abc')]` | 2.9045779937875826e-05 | 1.4189041360184816e-05 | 51.15% | 104.71% | 2.05x | ✅ | +| `to_bytes[bytearray(long alternating)]` | 3.576139302885913e-05 | 1.8559591630510302e-05 | 48.10% | 92.68% | 1.93x | ✅ | +| `to_bytes[bytearray(mixed pattern)]` | 2.7605232446264443e-05 | 1.4157859944861863e-05 | 48.71% | 94.98% | 1.95x | ✅ | +| `to_bytes[bytearray(multiples of 0x10)]` | 2.8876920723595686e-05 | 1.3960875991197816e-05 | 51.65% | 106.84% | 2.07x | ✅ | +| `to_bytes[bytearray(palindrome ascii)]` | 2.9468988831393466e-05 | 1.4018845744546433e-05 | 52.43% | 110.21% | 2.10x | ✅ | +| `to_bytes[bytearray(palindrome numeric)]` | 2.903756897563374e-05 | 1.3999905060457661e-05 | 51.79% | 107.41% | 2.07x | ✅ | +| `to_bytes[bytearray(palindrome)]` | 2.8767541393435736e-05 | 1.403775244313133e-05 | 51.20% | 104.93% | 2.05x | ✅ | +| `to_bytes[bytearray(repeated 0-9)]` | 2.924045850630331e-05 | 1.417578516527674e-05 | 51.52% | 106.27% | 2.06x | ✅ | +| `to_bytes[bytearray(single 0xff)]` | 2.9116512978043233e-05 | 1.3736527568770625e-05 | 52.82% | 111.96% | 2.12x | ✅ | +| `to_bytes[bytearray(single null byte)]` | 2.8344438796043512e-05 | 1.3776421940644135e-05 | 51.40% | 105.75% | 2.06x | ✅ | +| `to_bytes[bytearray(two patterns)]` | 2.9344947241903332e-05 | 1.4031309857084977e-05 | 52.18% | 109.14% | 2.09x | ✅ | +| `to_bytes[long alternating]` | 6.681976956775542e-06 | 3.373340802978678e-06 | 49.52% | 98.08% | 1.98x | ✅ | +| `to_bytes[memoryview(0-9)]` | 4.3604972985885015e-05 | 1.6872538091710824e-05 | 61.31% | 158.44% | 2.58x | ✅ | +| `to_bytes[memoryview(4-byte pattern)]` | 4.3418776198888865e-05 | 1.7521532863205926e-05 | 59.65% | 147.80% | 2.48x | ✅ | +| `to_bytes[memoryview(all byte values)]` | 4.378956108120711e-05 | 1.832671201858964e-05 | 58.15% | 138.94% | 2.39x | ✅ | +| `to_bytes[memoryview(alternating 0x00/0xff)]` | 4.444307421378364e-05 | 1.689894728807489e-05 | 61.98% | 162.99% | 2.63x | ✅ | +| `to_bytes[memoryview(alternating 0xaa/0x55)]` | 4.367785397676683e-05 | 1.6518086528736596e-05 | 62.18% | 164.42% | 2.64x | ✅ | +| `to_bytes[memoryview(ascii sentence)]` | 4.379462449536509e-05 | 1.6751490314532864e-05 | 61.75% | 161.44% | 2.61x | ✅ | +| `to_bytes[memoryview(b'')]` | 4.1897333040122677e-05 | 1.493545966985892e-05 | 64.35% | 180.52% | 2.81x | ✅ | +| `to_bytes[memoryview(b'\\x00'*32)]` | 4.388119140149641e-05 | 1.6708389598938207e-05 | 61.92% | 162.63% | 2.63x | ✅ | +| `to_bytes[memoryview(b'\\x00\\xff\\x00\\xff')]` | 4.347031015265689e-05 | 1.6736936182265994e-05 | 61.50% | 159.73% | 2.60x | ✅ | +| `to_bytes[memoryview(b'\\x01'*100)]` | 4.4289089077080966e-05 | 1.7528613644030733e-05 | 60.42% | 152.67% | 2.53x | ✅ | +| `to_bytes[memoryview(b'\\x01'*2048)]` | 5.167744693954769e-05 | 2.4586403583532758e-05 | 52.42% | 110.19% | 2.10x | ✅ | +| `to_bytes[memoryview(b'\\x01\\x02\\x03')]` | 4.384447177785944e-05 | 1.7274228124069396e-05 | 60.60% | 153.81% | 2.54x | ✅ | +| `to_bytes[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 4.391971662366577e-05 | 1.700320503013752e-05 | 61.29% | 158.30% | 2.58x | ✅ | +| `to_bytes[memoryview(b'\\x7f'*8)]` | 4.4050438274316226e-05 | 1.6709086908731573e-05 | 62.07% | 163.63% | 2.64x | ✅ | +| `to_bytes[memoryview(b'\\x80'*8)]` | 4.4003802310070355e-05 | 1.6868683032436964e-05 | 61.67% | 160.86% | 2.61x | ✅ | +| `to_bytes[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 4.3723387894071716e-05 | 1.6787649862410426e-05 | 61.60% | 160.45% | 2.60x | ✅ | +| `to_bytes[memoryview(b'\\xff'*64)]` | 4.3496488575710974e-05 | 1.6841202011601105e-05 | 61.28% | 158.27% | 2.58x | ✅ | +| `to_bytes[memoryview(b'a'*1024)]` | 5.0053166914425434e-05 | 2.3075329941614223e-05 | 53.90% | 116.91% | 2.17x | ✅ | +| `to_bytes[memoryview(b'abc')]` | 4.36621087346292e-05 | 1.6900890390692953e-05 | 61.29% | 158.34% | 2.58x | ✅ | +| `to_bytes[memoryview(long alternating)]` | 5.043722532139686e-05 | 2.2852576182519015e-05 | 54.69% | 120.71% | 2.21x | ✅ | +| `to_bytes[memoryview(mixed pattern)]` | 4.3948604694793566e-05 | 1.7550975856479723e-05 | 60.06% | 150.41% | 2.50x | ✅ | +| `to_bytes[memoryview(multiples of 0x10)]` | 4.31032466876879e-05 | 1.6783869716430207e-05 | 61.06% | 156.81% | 2.57x | ✅ | +| `to_bytes[memoryview(palindrome ascii)]` | 4.3689733135254905e-05 | 1.6790930451016958e-05 | 61.57% | 160.20% | 2.60x | ✅ | +| `to_bytes[memoryview(palindrome numeric)]` | 4.465017562456981e-05 | 1.699396377694519e-05 | 61.94% | 162.74% | 2.63x | ✅ | +| `to_bytes[memoryview(palindrome)]` | 4.3189635577315905e-05 | 1.6784004865238028e-05 | 61.14% | 157.33% | 2.57x | ✅ | +| `to_bytes[memoryview(repeated 0-9)]` | 4.4166732482096736e-05 | 1.7179692174448305e-05 | 61.10% | 157.09% | 2.57x | ✅ | +| `to_bytes[memoryview(single 0xff)]` | 4.102402486400195e-05 | 1.7298456598627793e-05 | 57.83% | 137.15% | 2.37x | ✅ | +| `to_bytes[memoryview(single null byte)]` | 4.3525250197380176e-05 | 1.714779706152543e-05 | 60.60% | 153.82% | 2.54x | ✅ | +| `to_bytes[memoryview(two patterns)]` | 4.359724184823798e-05 | 1.6881188816275528e-05 | 61.28% | 158.26% | 2.58x | ✅ | +| `to_bytes[mixed pattern]` | 6.65510391783218e-06 | 3.4765458988995523e-06 | 47.76% | 91.43% | 1.91x | ✅ | +| `to_bytes[multiples of 0x10]` | 6.649713706157269e-06 | 3.62303244917209e-06 | 45.52% | 83.54% | 1.84x | ✅ | +| `to_bytes[palindrome ascii]` | 6.620468198219783e-06 | 3.6592659527847616e-06 | 44.73% | 80.92% | 1.81x | ✅ | +| `to_bytes[palindrome numeric]` | 6.59698564018264e-06 | 3.58800424738478e-06 | 45.61% | 83.86% | 1.84x | ✅ | +| `to_bytes[palindrome]` | 6.591607532974155e-06 | 3.5982481467809225e-06 | 45.41% | 83.19% | 1.83x | ✅ | +| `to_bytes[repeated 0-9]` | 6.6740438464783246e-06 | 3.566926253898742e-06 | 46.56% | 87.11% | 1.87x | ✅ | +| `to_bytes[single 0xff]` | 6.31750279084045e-06 | 3.411171412646713e-06 | 46.00% | 85.20% | 1.85x | ✅ | +| `to_bytes[single null byte]` | 6.427208342090642e-06 | 3.515224979595995e-06 | 45.31% | 82.84% | 1.83x | ✅ | +| `to_bytes[two patterns]` | 6.6235555200924545e-06 | 3.5684742671908625e-06 | 46.12% | 85.61% | 1.86x | ✅ | diff --git a/benchmarks/results/main.md b/benchmarks/results/main.md index c9ce813..ed148b9 100644 --- a/benchmarks/results/main.md +++ b/benchmarks/results/main.md @@ -1,486 +1,486 @@ -#### [faster_hexbytes.main](https://github.com/BobTheBuidler/faster-hexbytes/blob/BobTheBuidler-patch-1/faster_hexbytes/main.py) - [view benchmarks](https://github.com/BobTheBuidler/faster-hexbytes/blob/BobTheBuidler-patch-1/benchmarks/test_main_benchmarks.py) +#### [faster_hexbytes.main](https://github.com/BobTheBuidler/faster-hexbytes/blob/master/faster_hexbytes/main.py) - [view benchmarks](https://github.com/BobTheBuidler/faster-hexbytes/blob/master/benchmarks/test_main_benchmarks.py) | Function | Reference Mean | Faster Mean | % Change | Speedup (%) | x Faster | Faster | |----------|---------------|-------------|----------|-------------|----------|--------| -| `hexbytes_getitem_index[-1-0-9]` | 2.4651960971581144e-05 | 2.3742079655049166e-05 | 3.69% | 3.83% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-4-byte pattern]` | 2.4914589877013902e-05 | 2.3721452695396386e-05 | 4.79% | 5.03% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-all byte values]` | 2.4870298768105796e-05 | 2.3683938066914603e-05 | 4.77% | 5.01% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-alternating 0x00/0xff]` | 2.4441135785164883e-05 | 2.3603704740361955e-05 | 3.43% | 3.55% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-alternating 0xaa/0x55]` | 2.4629223292141224e-05 | 2.3549131802973782e-05 | 4.39% | 4.59% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-ascii sentence]` | 2.5146059330733922e-05 | 2.3483815893506455e-05 | 6.61% | 7.08% | 1.07x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x00'*32]` | 2.474791267091099e-05 | 2.3673202583450512e-05 | 4.34% | 4.54% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x00\\xff\\x00\\xff']` | 2.4539493474144706e-05 | 2.357505416173682e-05 | 3.93% | 4.09% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x01'*100]` | 2.4801258886605904e-05 | 2.356331295261873e-05 | 4.99% | 5.25% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x01'*2048]` | 2.4722036842682627e-05 | 2.3684410506043172e-05 | 4.20% | 4.38% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x01\\x02\\x03']` | 2.462301380722871e-05 | 2.350778553800804e-05 | 4.53% | 4.74% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.4732560758196835e-05 | 2.3666414323639715e-05 | 4.31% | 4.50% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x7f'*8]` | 2.4828387895957752e-05 | 2.3510741330565454e-05 | 5.31% | 5.60% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x80'*8]` | 2.417106165572371e-05 | 2.3641289360599036e-05 | 2.19% | 2.24% | 1.02x | ✅ | -| `hexbytes_getitem_index[-1-b'\\xde\\xad\\xbe\\xef']` | 2.4761245496400876e-05 | 2.3513523976292314e-05 | 5.04% | 5.31% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-b'\\xff'*64]` | 2.470209957743426e-05 | 2.3561682920752914e-05 | 4.62% | 4.84% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-b'a'*1024]` | 2.4785439338627667e-05 | 2.3539953770655566e-05 | 5.03% | 5.29% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-b'abc']` | 2.4602124917944918e-05 | 2.37010509465164e-05 | 3.66% | 3.80% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-long alternating]` | 2.4786898517207075e-05 | 2.385015756790433e-05 | 3.78% | 3.93% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-mixed pattern]` | 2.506776108026341e-05 | 2.374638694500302e-05 | 5.27% | 5.56% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-multiples of 0x10]` | 2.4716235667745476e-05 | 2.372554353504267e-05 | 4.01% | 4.18% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-palindrome ascii]` | 2.4991224042452845e-05 | 2.3761606567373045e-05 | 4.92% | 5.17% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-palindrome numeric]` | 2.48612457179913e-05 | 2.373565527421482e-05 | 4.53% | 4.74% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-palindrome]` | 2.476836353946959e-05 | 2.3506553561083275e-05 | 5.09% | 5.37% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-repeated 0-9]` | 2.497758756549075e-05 | 2.3537885991152604e-05 | 5.76% | 6.12% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-two patterns]` | 2.4912925424040037e-05 | 2.357351587115538e-05 | 5.38% | 5.68% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-0-9]` | 2.3552392899033618e-05 | 2.2706469370209416e-05 | 3.59% | 3.73% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-4-byte pattern]` | 2.3706932147929157e-05 | 2.277820757228196e-05 | 3.92% | 4.08% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-all byte values]` | 2.376317693212643e-05 | 2.2997485431157426e-05 | 3.22% | 3.33% | 1.03x | ✅ | -| `hexbytes_getitem_index[0-alternating 0x00/0xff]` | 2.375639410252125e-05 | 2.259090275280149e-05 | 4.91% | 5.16% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-alternating 0xaa/0x55]` | 2.3771039282453677e-05 | 2.2389388133951e-05 | 5.81% | 6.17% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-ascii sentence]` | 2.3652355422515932e-05 | 2.262054829524286e-05 | 4.36% | 4.56% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-b'\\x00'*32]` | 2.3688476172809026e-05 | 2.267875758680969e-05 | 4.26% | 4.45% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-b'\\x00\\xff\\x00\\xff']` | 2.5603807294365365e-05 | 2.25676997796218e-05 | 11.86% | 13.45% | 1.13x | ✅ | -| `hexbytes_getitem_index[0-b'\\x01'*100]` | 2.3568021477888985e-05 | 2.2477354817355278e-05 | 4.63% | 4.85% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-b'\\x01'*2048]` | 2.3726669642236345e-05 | 2.2574931719763578e-05 | 4.85% | 5.10% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-b'\\x01\\x02\\x03']` | 2.3965766108147683e-05 | 2.24450657495643e-05 | 6.35% | 6.78% | 1.07x | ✅ | -| `hexbytes_getitem_index[0-b'\\x10\\x20\\x30\\x40\\x50']` | 2.358085325316612e-05 | 2.2403101267703223e-05 | 4.99% | 5.26% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-b'\\x7f'*8]` | 2.3699287914925477e-05 | 2.248879324132225e-05 | 5.11% | 5.38% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-b'\\x80'*8]` | 2.3658399290103703e-05 | 2.2534614930071396e-05 | 4.75% | 4.99% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-b'\\xde\\xad\\xbe\\xef']` | 2.372446570049721e-05 | 2.2309551750539106e-05 | 5.96% | 6.34% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-b'\\xff'*64]` | 2.361081601937645e-05 | 2.2580510202332043e-05 | 4.36% | 4.56% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-b'a'*1024]` | 2.3853200325644165e-05 | 2.2326871825418786e-05 | 6.40% | 6.84% | 1.07x | ✅ | -| `hexbytes_getitem_index[0-b'abc']` | 2.3561004442665264e-05 | 2.257152154387967e-05 | 4.20% | 4.38% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-long alternating]` | 2.385969297391155e-05 | 2.2704869154983565e-05 | 4.84% | 5.09% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-mixed pattern]` | 2.3706699030158312e-05 | 2.269054749681057e-05 | 4.29% | 4.48% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-multiples of 0x10]` | 2.3767635127293485e-05 | 2.2700208446505834e-05 | 4.49% | 4.70% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-palindrome ascii]` | 2.3872602534973736e-05 | 2.2505738922799452e-05 | 5.73% | 6.07% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-palindrome numeric]` | 2.3650864158307702e-05 | 2.2505362808841013e-05 | 4.84% | 5.09% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-palindrome]` | 2.389110668805602e-05 | 2.2517198282302654e-05 | 5.75% | 6.10% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-repeated 0-9]` | 2.3749080797372078e-05 | 2.274016197100676e-05 | 4.25% | 4.44% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-single 0xff]` | 2.384500164707853e-05 | 2.26824494461279e-05 | 4.88% | 5.13% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-single null byte]` | 2.3710620325141458e-05 | 2.2563834589142225e-05 | 4.84% | 5.08% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-two patterns]` | 2.3725237763328324e-05 | 2.275650995646531e-05 | 4.08% | 4.26% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-0-9]` | 2.3963689968818588e-05 | 2.2947783670581576e-05 | 4.24% | 4.43% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-4-byte pattern]` | 2.3764937664157905e-05 | 2.2400115317102403e-05 | 5.74% | 6.09% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-all byte values]` | 2.39650643076325e-05 | 2.2360730932404967e-05 | 6.69% | 7.17% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-alternating 0x00/0xff]` | 2.368946108563518e-05 | 2.277422869591683e-05 | 3.86% | 4.02% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-alternating 0xaa/0x55]` | 2.3821875072477958e-05 | 2.2966183704564473e-05 | 3.59% | 3.73% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-ascii sentence]` | 2.3945917187918905e-05 | 2.2039358030301282e-05 | 7.96% | 8.65% | 1.09x | ✅ | -| `hexbytes_getitem_index[1-b'\\x00'*32]` | 2.3800010730992442e-05 | 2.2898180459583268e-05 | 3.79% | 3.94% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-b'\\x00\\xff\\x00\\xff']` | 2.391173775042203e-05 | 2.2807688378797876e-05 | 4.62% | 4.84% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-b'\\x01'*100]` | 2.3685970102818634e-05 | 2.286635158849624e-05 | 3.46% | 3.58% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-b'\\x01'*2048]` | 2.3904209846583215e-05 | 2.229993282354903e-05 | 6.71% | 7.19% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-b'\\x01\\x02\\x03']` | 2.3776399904698173e-05 | 2.282667082608641e-05 | 3.99% | 4.16% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3717054602155944e-05 | 2.275532124231809e-05 | 4.06% | 4.23% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-b'\\x7f'*8]` | 2.3635144131737e-05 | 2.2794580002010076e-05 | 3.56% | 3.69% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-b'\\x80'*8]` | 2.3642553013960808e-05 | 2.280008245099661e-05 | 3.56% | 3.70% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-b'\\xde\\xad\\xbe\\xef']` | 2.37268151388951e-05 | 2.2878381172070876e-05 | 3.58% | 3.71% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-b'\\xff'*64]` | 2.3764922052232538e-05 | 2.2983272495408684e-05 | 3.29% | 3.40% | 1.03x | ✅ | -| `hexbytes_getitem_index[1-b'a'*1024]` | 2.389620277613219e-05 | 2.2868693419290814e-05 | 4.30% | 4.49% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-b'abc']` | 2.381179689224361e-05 | 2.261058158338374e-05 | 5.04% | 5.31% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-long alternating]` | 2.3947274340818952e-05 | 2.230994834697093e-05 | 6.84% | 7.34% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-mixed pattern]` | 2.3976678552543847e-05 | 2.2726994986763895e-05 | 5.21% | 5.50% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-multiples of 0x10]` | 2.3622868411768784e-05 | 2.23159963043466e-05 | 5.53% | 5.86% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-palindrome ascii]` | 2.4094650683047702e-05 | 2.230840450415285e-05 | 7.41% | 8.01% | 1.08x | ✅ | -| `hexbytes_getitem_index[1-palindrome numeric]` | 2.375249288072367e-05 | 2.261610529510791e-05 | 4.78% | 5.02% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-palindrome]` | 2.3664737814981775e-05 | 2.2788093813537335e-05 | 3.70% | 3.85% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-repeated 0-9]` | 2.39430082328806e-05 | 2.2333154055712127e-05 | 6.72% | 7.21% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-two patterns]` | 2.380657528466817e-05 | 2.263174066927076e-05 | 4.93% | 5.19% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-0-9]` | 2.3759878489485154e-05 | 2.2421869826917465e-05 | 5.63% | 5.97% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-4-byte pattern]` | 2.3696033630537857e-05 | 2.2436542911204173e-05 | 5.32% | 5.61% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-all byte values]` | 2.4009031281243505e-05 | 2.2558009394689917e-05 | 6.04% | 6.43% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-alternating 0x00/0xff]` | 2.3787578391980155e-05 | 2.2352974384459595e-05 | 6.03% | 6.42% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-alternating 0xaa/0x55]` | 2.389483280493658e-05 | 2.217315086371502e-05 | 7.21% | 7.76% | 1.08x | ✅ | -| `hexbytes_getitem_index[2-ascii sentence]` | 2.3989364146550072e-05 | 2.2293362282276747e-05 | 7.07% | 7.61% | 1.08x | ✅ | -| `hexbytes_getitem_index[2-b'\\x00'*32]` | 2.3929301695838763e-05 | 2.2243663880455482e-05 | 7.04% | 7.58% | 1.08x | ✅ | -| `hexbytes_getitem_index[2-b'\\x00\\xff\\x00\\xff']` | 2.390094352471186e-05 | 2.2388085484846872e-05 | 6.33% | 6.76% | 1.07x | ✅ | -| `hexbytes_getitem_index[2-b'\\x01'*100]` | 2.3912838492563126e-05 | 2.223576054388474e-05 | 7.01% | 7.54% | 1.08x | ✅ | -| `hexbytes_getitem_index[2-b'\\x01'*2048]` | 2.3839805980868495e-05 | 2.2482428944202168e-05 | 5.69% | 6.04% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-b'\\x01\\x02\\x03']` | 2.3946240708655286e-05 | 2.2134188439129625e-05 | 7.57% | 8.19% | 1.08x | ✅ | -| `hexbytes_getitem_index[2-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3830132864498836e-05 | 2.2204587399637516e-05 | 6.82% | 7.32% | 1.07x | ✅ | -| `hexbytes_getitem_index[2-b'\\x7f'*8]` | 2.3956867057869268e-05 | 2.2297675060307316e-05 | 6.93% | 7.44% | 1.07x | ✅ | -| `hexbytes_getitem_index[2-b'\\x80'*8]` | 2.3659258874574295e-05 | 2.229929744684334e-05 | 5.75% | 6.10% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-b'\\xde\\xad\\xbe\\xef']` | 2.3948837913970947e-05 | 2.2253094320491686e-05 | 7.08% | 7.62% | 1.08x | ✅ | -| `hexbytes_getitem_index[2-b'\\xff'*64]` | 2.3774163724281074e-05 | 2.2276505145158204e-05 | 6.30% | 6.72% | 1.07x | ✅ | -| `hexbytes_getitem_index[2-b'a'*1024]` | 2.403854006515259e-05 | 2.535659157177087e-05 | -5.48% | -5.20% | 0.95x | ❌ | -| `hexbytes_getitem_index[2-b'abc']` | 2.3719325230356465e-05 | 2.2243213526803864e-05 | 6.22% | 6.64% | 1.07x | ✅ | -| `hexbytes_getitem_index[2-long alternating]` | 2.3900143751114583e-05 | 2.2381869143738894e-05 | 6.35% | 6.78% | 1.07x | ✅ | -| `hexbytes_getitem_index[2-mixed pattern]` | 2.394913454453958e-05 | 2.271665308174575e-05 | 5.15% | 5.43% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-multiples of 0x10]` | 2.381973442865675e-05 | 2.2428888583584435e-05 | 5.84% | 6.20% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-palindrome ascii]` | 2.3711765423516114e-05 | 2.225850253344376e-05 | 6.13% | 6.53% | 1.07x | ✅ | -| `hexbytes_getitem_index[2-palindrome numeric]` | 2.3876108298483828e-05 | 2.2507732474511268e-05 | 5.73% | 6.08% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-palindrome]` | 2.3877181318422928e-05 | 2.2292052910813717e-05 | 6.64% | 7.11% | 1.07x | ✅ | -| `hexbytes_getitem_index[2-repeated 0-9]` | 2.391583873307995e-05 | 2.2260601128023153e-05 | 6.92% | 7.44% | 1.07x | ✅ | -| `hexbytes_getitem_index[2-two patterns]` | 2.388620010775735e-05 | 2.254326163173068e-05 | 5.62% | 5.96% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-0-9]` | 2.374288242860744e-05 | 2.234580053706118e-05 | 5.88% | 6.25% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-4-byte pattern]` | 2.3808221335763292e-05 | 2.242056561205241e-05 | 5.83% | 6.19% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-all byte values]` | 2.360101179165709e-05 | 2.223899701096301e-05 | 5.77% | 6.12% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-alternating 0x00/0xff]` | 2.3425022099941238e-05 | 2.2691252964576542e-05 | 3.13% | 3.23% | 1.03x | ✅ | -| `hexbytes_getitem_index[3-alternating 0xaa/0x55]` | 2.3570532426018685e-05 | 2.232126186648629e-05 | 5.30% | 5.60% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-ascii sentence]` | 2.3667104524828177e-05 | 2.2348126107982218e-05 | 5.57% | 5.90% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'\\x00'*32]` | 2.3834274442930237e-05 | 2.2454221906176193e-05 | 5.79% | 6.15% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'\\x00\\xff\\x00\\xff']` | 2.334232673854612e-05 | 2.213479558210342e-05 | 5.17% | 5.46% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-b'\\x01'*100]` | 2.366026717609489e-05 | 2.2346918175273533e-05 | 5.55% | 5.88% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'\\x01'*2048]` | 2.3783580706241166e-05 | 2.2394678424258706e-05 | 5.84% | 6.20% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'\\x10\\x20\\x30\\x40\\x50']` | 2.358496422944416e-05 | 2.2284603063809602e-05 | 5.51% | 5.84% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'\\x7f'*8]` | 2.3616635596984097e-05 | 2.2230039609024826e-05 | 5.87% | 6.24% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'\\x80'*8]` | 2.358696974761443e-05 | 2.226369948315651e-05 | 5.61% | 5.94% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'\\xde\\xad\\xbe\\xef']` | 2.3841421667314486e-05 | 2.224531700089243e-05 | 6.69% | 7.18% | 1.07x | ✅ | -| `hexbytes_getitem_index[3-b'\\xff'*64]` | 2.3852856997623723e-05 | 2.245439670031442e-05 | 5.86% | 6.23% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'a'*1024]` | 2.371245778804023e-05 | 2.2334016617086115e-05 | 5.81% | 6.17% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-long alternating]` | 2.3953630972695282e-05 | 2.2281194871917552e-05 | 6.98% | 7.51% | 1.08x | ✅ | -| `hexbytes_getitem_index[3-mixed pattern]` | 2.360093194211216e-05 | 2.2504282923644097e-05 | 4.65% | 4.87% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-multiples of 0x10]` | 2.3659343009664815e-05 | 2.233404501972741e-05 | 5.60% | 5.93% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-palindrome ascii]` | 2.382104850932273e-05 | 2.2296625606055568e-05 | 6.40% | 6.84% | 1.07x | ✅ | -| `hexbytes_getitem_index[3-palindrome numeric]` | 2.3821292432792257e-05 | 2.231770656528545e-05 | 6.31% | 6.74% | 1.07x | ✅ | -| `hexbytes_getitem_index[3-palindrome]` | 2.418370369398492e-05 | 2.223625909578257e-05 | 8.05% | 8.76% | 1.09x | ✅ | -| `hexbytes_getitem_index[3-repeated 0-9]` | 2.3549914281609854e-05 | 2.239536854949025e-05 | 4.90% | 5.16% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-two patterns]` | 2.3581715505717703e-05 | 2.233839016262871e-05 | 5.27% | 5.57% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-0-9]` | 2.3709003040145822e-05 | 2.253740515692887e-05 | 4.94% | 5.20% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-4-byte pattern]` | 2.37370651256261e-05 | 2.2626763019765507e-05 | 4.68% | 4.91% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-all byte values]` | 2.363319125539605e-05 | 2.2483375411589478e-05 | 4.87% | 5.11% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-alternating 0x00/0xff]` | 2.363345720554712e-05 | 2.2437279341295577e-05 | 5.06% | 5.33% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-alternating 0xaa/0x55]` | 2.3686750169933537e-05 | 2.249959353849564e-05 | 5.01% | 5.28% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-ascii sentence]` | 2.3862702220155034e-05 | 2.2521624005521676e-05 | 5.62% | 5.95% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-b'\\x00'*32]` | 2.3446334624891095e-05 | 2.2517943468318158e-05 | 3.96% | 4.12% | 1.04x | ✅ | -| `hexbytes_getitem_index[4-b'\\x01'*100]` | 2.353666292773432e-05 | 2.2540378307715853e-05 | 4.23% | 4.42% | 1.04x | ✅ | -| `hexbytes_getitem_index[4-b'\\x01'*2048]` | 2.3667148424653667e-05 | 2.23635845139677e-05 | 5.51% | 5.83% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3616073790037003e-05 | 2.2477275695333708e-05 | 4.82% | 5.07% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-b'\\x7f'*8]` | 2.365667181938546e-05 | 2.2479638334589596e-05 | 4.98% | 5.24% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-b'\\x80'*8]` | 2.360863328195228e-05 | 2.2542688756548335e-05 | 4.52% | 4.73% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-b'\\xff'*64]` | 2.3698144640379696e-05 | 2.2296469909688985e-05 | 5.91% | 6.29% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-b'a'*1024]` | 2.3669893692941123e-05 | 2.2279180024041587e-05 | 5.88% | 6.24% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-long alternating]` | 2.3714192321174797e-05 | 2.2636048756140697e-05 | 4.55% | 4.76% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-mixed pattern]` | 2.367463362629922e-05 | 2.2564731380060752e-05 | 4.69% | 4.92% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-multiples of 0x10]` | 2.377896247538816e-05 | 2.2489893922902326e-05 | 5.42% | 5.73% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-palindrome ascii]` | 2.3696862417507692e-05 | 2.2640943799683836e-05 | 4.46% | 4.66% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-palindrome numeric]` | 2.3757765037093327e-05 | 2.2508844821880213e-05 | 5.26% | 5.55% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-palindrome]` | 2.355779781619912e-05 | 2.218344927203531e-05 | 5.83% | 6.20% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-repeated 0-9]` | 2.318634217888085e-05 | 2.2556870903105894e-05 | 2.71% | 2.79% | 1.03x | ✅ | -| `hexbytes_getitem_index[4-two patterns]` | 2.3855517516910593e-05 | 2.2603117471540457e-05 | 5.25% | 5.54% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-0-9]` | 2.3548196064566108e-05 | 2.2513663460124153e-05 | 4.39% | 4.60% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-4-byte pattern]` | 2.365568277820364e-05 | 2.2617926049483086e-05 | 4.39% | 4.59% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-all byte values]` | 2.3675156919783204e-05 | 2.2538417021036196e-05 | 4.80% | 5.04% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-alternating 0x00/0xff]` | 2.359308668806988e-05 | 2.254536829014792e-05 | 4.44% | 4.65% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-alternating 0xaa/0x55]` | 2.3556700839463984e-05 | 2.2490638055690138e-05 | 4.53% | 4.74% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-ascii sentence]` | 2.3625076355439547e-05 | 2.24613930939796e-05 | 4.93% | 5.18% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-b'\\x00'*32]` | 2.3586780005605462e-05 | 2.2593186975130276e-05 | 4.21% | 4.40% | 1.04x | ✅ | -| `hexbytes_getitem_index[5-b'\\x01'*100]` | 2.3491254037320052e-05 | 2.2481907616767723e-05 | 4.30% | 4.49% | 1.04x | ✅ | -| `hexbytes_getitem_index[5-b'\\x01'*2048]` | 2.369606246611395e-05 | 2.258547347118303e-05 | 4.69% | 4.92% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-b'\\x7f'*8]` | 2.3571789245281507e-05 | 2.240625755083801e-05 | 4.94% | 5.20% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-b'\\x80'*8]` | 2.3654410983717284e-05 | 2.2519207884417063e-05 | 4.80% | 5.04% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-b'\\xff'*64]` | 2.3638751655862992e-05 | 2.2522775552394233e-05 | 4.72% | 4.95% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-b'a'*1024]` | 2.3437222548013353e-05 | 2.2482076455869534e-05 | 4.08% | 4.25% | 1.04x | ✅ | -| `hexbytes_getitem_index[5-long alternating]` | 2.3643866628657753e-05 | 2.2597247884400497e-05 | 4.43% | 4.63% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-mixed pattern]` | 2.3704150408769832e-05 | 2.2562529992604035e-05 | 4.82% | 5.06% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-multiples of 0x10]` | 2.356418754687801e-05 | 2.2566689141872047e-05 | 4.23% | 4.42% | 1.04x | ✅ | -| `hexbytes_getitem_index[5-palindrome ascii]` | 2.360664503832402e-05 | 2.254839829538522e-05 | 4.48% | 4.69% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-palindrome]` | 2.3430245806861645e-05 | 2.246184552307775e-05 | 4.13% | 4.31% | 1.04x | ✅ | -| `hexbytes_getitem_index[5-repeated 0-9]` | 2.3626169169951377e-05 | 2.2552721079885228e-05 | 4.54% | 4.76% | 1.05x | ✅ | -| `hexbytes_getitem_index[5-two patterns]` | 2.3481735902666036e-05 | 2.252091484461108e-05 | 4.09% | 4.27% | 1.04x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-0-9]` | 8.188282262367498e-05 | 5.99705426521925e-05 | 26.76% | 36.54% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-4-byte pattern]` | 8.141414771790435e-05 | 5.958031697777583e-05 | 26.82% | 36.65% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-all byte values]` | 8.185049453614378e-05 | 5.953360796611001e-05 | 27.27% | 37.49% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-alternating 0x00/0xff]` | 8.180988682127241e-05 | 6.021565348336068e-05 | 26.40% | 35.86% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-alternating 0xaa/0x55]` | 8.20494837448135e-05 | 6.026773951574961e-05 | 26.55% | 36.14% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-ascii sentence]` | 8.185850207773249e-05 | 6.0044394819668885e-05 | 26.65% | 36.33% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'']` | 8.0027600939987e-05 | 5.765484046166121e-05 | 27.96% | 38.80% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00'*32]` | 8.205283582249193e-05 | 5.9543737100346765e-05 | 27.43% | 37.80% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00\\xff\\x00\\xff']` | 8.153306992641606e-05 | 5.998235380632076e-05 | 26.43% | 35.93% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*100]` | 8.170710250718827e-05 | 6.065065529506699e-05 | 25.77% | 34.72% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*2048]` | 8.157936641513887e-05 | 6.0288920775316713e-05 | 26.10% | 35.31% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01\\x02\\x03']` | 8.253511691621822e-05 | 5.990469783622166e-05 | 27.42% | 37.78% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.151974089816915e-05 | 5.9817269764953106e-05 | 26.62% | 36.28% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x7f'*8]` | 8.178414979336885e-05 | 5.92868319185694e-05 | 27.51% | 37.95% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x80'*8]` | 8.187080718583789e-05 | 5.996978094321253e-05 | 26.75% | 36.52% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\xde\\xad\\xbe\\xef']` | 8.221205846978547e-05 | 5.92096918939267e-05 | 27.98% | 38.85% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\xff'*64]` | 8.229906895712295e-05 | 6.032587733830027e-05 | 26.70% | 36.42% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'a'*1024]` | 8.194259915136483e-05 | 5.9341651236448896e-05 | 27.58% | 38.09% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'abc']` | 8.25811681722612e-05 | 6.0564547076953155e-05 | 26.66% | 36.35% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-long alternating]` | 8.195011578391536e-05 | 6.046045715784966e-05 | 26.22% | 35.54% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-mixed pattern]` | 8.165920985899151e-05 | 5.955459503695057e-05 | 27.07% | 37.12% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-multiples of 0x10]` | 8.140876584467526e-05 | 5.995998930321452e-05 | 26.35% | 35.77% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-palindrome ascii]` | 8.179254091422523e-05 | 5.968083841606335e-05 | 27.03% | 37.05% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-palindrome numeric]` | 8.220244454409264e-05 | 5.979644729236433e-05 | 27.26% | 37.47% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-palindrome]` | 8.19769515467715e-05 | 5.9262351090209405e-05 | 27.71% | 38.33% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-repeated 0-9]` | 8.125058408894145e-05 | 5.981408511392185e-05 | 26.38% | 35.84% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-single 0xff]` | 8.158868825405351e-05 | 5.805739666586402e-05 | 28.84% | 40.53% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-single null byte]` | 8.053243440307724e-05 | 5.909304117275174e-05 | 26.62% | 36.28% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-two patterns]` | 8.179723215677768e-05 | 5.911160700487675e-05 | 27.73% | 38.38% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-0-9]` | 8.219050969860988e-05 | 6.081678973282211e-05 | 26.01% | 35.14% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-4-byte pattern]` | 8.267707809637939e-05 | 6.166161881146768e-05 | 25.42% | 34.08% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-all byte values]` | 8.296342580041108e-05 | 6.156329458313869e-05 | 25.79% | 34.76% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-alternating 0x00/0xff]` | 8.227732619097291e-05 | 6.0536488469922664e-05 | 26.42% | 35.91% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-alternating 0xaa/0x55]` | 8.336597972844179e-05 | 6.066461438404699e-05 | 27.23% | 37.42% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-ascii sentence]` | 8.190254480276036e-05 | 6.027780990619787e-05 | 26.40% | 35.88% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'']` | 8.036711164065048e-05 | 5.815637378036025e-05 | 27.64% | 38.19% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x00'*32]` | 8.243998121808049e-05 | 6.0979596059296965e-05 | 26.03% | 35.19% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x00\\xff\\x00\\xff']` | 8.25695591275962e-05 | 6.10774964178927e-05 | 26.03% | 35.19% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*100]` | 8.222716636929613e-05 | 6.153466817829526e-05 | 25.17% | 33.63% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*2048]` | 8.244713697933408e-05 | 6.0853900593699986e-05 | 26.19% | 35.48% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x01\\x02\\x03']` | 8.29035276011581e-05 | 6.197360475266339e-05 | 25.25% | 33.77% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.257712605019676e-05 | 6.117768153554298e-05 | 25.91% | 34.98% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x7f'*8]` | 8.200404447488137e-05 | 6.092355614417758e-05 | 25.71% | 34.60% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x80'*8]` | 8.27952734618027e-05 | 6.222057795313694e-05 | 24.85% | 33.07% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\xde\\xad\\xbe\\xef']` | 8.300402060252565e-05 | 6.145479279308517e-05 | 25.96% | 35.07% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\xff'*64]` | 8.210837511470977e-05 | 6.212990970776714e-05 | 24.33% | 32.16% | 1.32x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'a'*1024]` | 8.191333606668248e-05 | 6.176405085010158e-05 | 24.60% | 32.62% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'abc']` | 8.350607343687452e-05 | 6.09613553610321e-05 | 27.00% | 36.98% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-long alternating]` | 8.253954564652985e-05 | 6.118946602672985e-05 | 25.87% | 34.89% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-mixed pattern]` | 8.220550520211693e-05 | 6.046883108258285e-05 | 26.44% | 35.95% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-multiples of 0x10]` | 8.288234812913995e-05 | 6.086559194851514e-05 | 26.56% | 36.17% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-palindrome ascii]` | 8.196839575122381e-05 | 6.109890468722255e-05 | 25.46% | 34.16% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-palindrome numeric]` | 8.191663290814502e-05 | 6.024971062748656e-05 | 26.45% | 35.96% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-palindrome]` | 8.225538873975235e-05 | 6.0673947569751234e-05 | 26.24% | 35.57% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-repeated 0-9]` | 8.325470592758964e-05 | 6.021114049383146e-05 | 27.68% | 38.27% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-single 0xff]` | 8.152387208920414e-05 | 5.838766598850358e-05 | 28.38% | 39.63% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-single null byte]` | 8.166747992629646e-05 | 5.818535163395908e-05 | 28.75% | 40.36% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-two patterns]` | 8.292456383558042e-05 | 6.066650219418695e-05 | 26.84% | 36.69% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-0-9]` | 8.283877970578877e-05 | 6.13965867593453e-05 | 25.88% | 34.92% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-4-byte pattern]` | 8.16315437396668e-05 | 6.080957531807193e-05 | 25.51% | 34.24% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-all byte values]` | 8.223987379899948e-05 | 6.152681982445922e-05 | 25.19% | 33.67% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-alternating 0x00/0xff]` | 8.196550352010294e-05 | 6.102012109547479e-05 | 25.55% | 34.33% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-alternating 0xaa/0x55]` | 8.431489475056753e-05 | 6.0876450064232096e-05 | 27.80% | 38.50% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-ascii sentence]` | 8.26091212709668e-05 | 6.12711949432357e-05 | 25.83% | 34.83% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'']` | 8.028537546059318e-05 | 5.9679945053987706e-05 | 25.67% | 34.53% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x00'*32]` | 8.193302538636353e-05 | 6.19901118074846e-05 | 24.34% | 32.17% | 1.32x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x00\\xff\\x00\\xff']` | 8.302082676689456e-05 | 6.0571752257095706e-05 | 27.04% | 37.06% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*100]` | 8.410599399287703e-05 | 6.0223220900306696e-05 | 28.40% | 39.66% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*2048]` | 8.289664339269829e-05 | 6.158656664520727e-05 | 25.71% | 34.60% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x01\\x02\\x03']` | 8.327898518635638e-05 | 6.10641647916191e-05 | 26.68% | 36.38% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.21226338529932e-05 | 6.127910837050417e-05 | 25.38% | 34.01% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x7f'*8]` | 8.179871182855887e-05 | 6.0103943548498716e-05 | 26.52% | 36.10% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x80'*8]` | 8.240871194114127e-05 | 6.03633342702947e-05 | 26.75% | 36.52% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\xde\\xad\\xbe\\xef']` | 8.192926135507694e-05 | 6.0105782373000276e-05 | 26.64% | 36.31% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\xff'*64]` | 8.183982794049471e-05 | 6.112623592059756e-05 | 25.31% | 33.89% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'a'*1024]` | 8.247461364013947e-05 | 6.0855620172021904e-05 | 26.21% | 35.53% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'abc']` | 8.145200871196106e-05 | 6.036883602176715e-05 | 25.88% | 34.92% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-long alternating]` | 8.240270163731342e-05 | 6.057206655519939e-05 | 26.49% | 36.04% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-mixed pattern]` | 8.170188522270842e-05 | 6.073954742684313e-05 | 25.66% | 34.51% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-multiples of 0x10]` | 8.174464010631686e-05 | 6.129174907747252e-05 | 25.02% | 33.37% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-palindrome ascii]` | 8.424363581274513e-05 | 6.158069279722402e-05 | 26.90% | 36.80% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-palindrome numeric]` | 8.197006358576009e-05 | 6.105562823286938e-05 | 25.51% | 34.25% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-palindrome]` | 8.245318718939036e-05 | 6.0170784576533205e-05 | 27.02% | 37.03% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-repeated 0-9]` | 8.14598674525449e-05 | 6.0583974002984e-05 | 25.63% | 34.46% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-single 0xff]` | 7.967176815547012e-05 | 5.843648470642701e-05 | 26.65% | 36.34% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-single null byte]` | 8.038728582652907e-05 | 5.834769884521148e-05 | 27.42% | 37.77% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-two patterns]` | 8.208553301500394e-05 | 6.039829369442206e-05 | 26.42% | 35.91% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-0-9]` | 8.132706316647871e-05 | 5.8234645074267526e-05 | 28.39% | 39.65% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-4-byte pattern]` | 8.194958213419803e-05 | 6.10462967018272e-05 | 25.51% | 34.24% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-all byte values]` | 8.241535458746012e-05 | 6.10384885898469e-05 | 25.94% | 35.02% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-alternating 0x00/0xff]` | 8.196905008525878e-05 | 6.121337780149159e-05 | 25.32% | 33.91% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-alternating 0xaa/0x55]` | 8.17298383193159e-05 | 6.109188302321797e-05 | 25.25% | 33.78% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-ascii sentence]` | 8.143266574827366e-05 | 6.078094651070287e-05 | 25.36% | 33.98% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'']` | 7.923727885146362e-05 | 5.745183344169047e-05 | 27.49% | 37.92% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x00'*32]` | 8.088500327257349e-05 | 6.01890287780394e-05 | 25.59% | 34.38% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x00\\xff\\x00\\xff']` | 8.130393501572301e-05 | 5.9826485405613124e-05 | 26.42% | 35.90% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*100]` | 8.21625267430338e-05 | 6.146550890897575e-05 | 25.19% | 33.67% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*2048]` | 0.00010715455697350455 | 7.7884695648295e-05 | 27.32% | 37.58% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x01\\x02\\x03']` | 7.96153606093641e-05 | 5.7551930299219345e-05 | 27.71% | 38.34% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.140783624259222e-05 | 6.0222790957131226e-05 | 26.02% | 35.18% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x7f'*8]` | 8.116152702597893e-05 | 6.0336199715254506e-05 | 25.66% | 34.52% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x80'*8]` | 8.124745107842207e-05 | 6.050556664307744e-05 | 25.53% | 34.28% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\xde\\xad\\xbe\\xef']` | 8.122748801309516e-05 | 5.9778224369593206e-05 | 26.41% | 35.88% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\xff'*64]` | 8.140300722739676e-05 | 6.105837810975075e-05 | 24.99% | 33.32% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'a'*1024]` | 9.989191752248823e-05 | 7.491857358025404e-05 | 25.00% | 33.33% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'abc']` | 7.997079477313963e-05 | 5.78103747751335e-05 | 27.71% | 38.33% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-long alternating]` | 0.00010307101128697139 | 7.359069621298992e-05 | 28.60% | 40.06% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-mixed pattern]` | 8.182412250114438e-05 | 6.0800048570594684e-05 | 25.69% | 34.58% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-multiples of 0x10]` | 8.10068462877111e-05 | 5.9850938449238435e-05 | 26.12% | 35.35% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-palindrome ascii]` | 8.209061537737693e-05 | 5.991736330824162e-05 | 27.01% | 37.01% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-palindrome numeric]` | 8.165903022661204e-05 | 6.076781056950024e-05 | 25.58% | 34.38% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-palindrome]` | 8.02655125921484e-05 | 6.132994569033027e-05 | 23.59% | 30.87% | 1.31x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-repeated 0-9]` | 8.080847841677988e-05 | 5.902323867154604e-05 | 26.96% | 36.91% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-single 0xff]` | 7.859799611675312e-05 | 5.743726216263625e-05 | 26.92% | 36.84% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-single null byte]` | 7.895000319275955e-05 | 5.766566994998397e-05 | 26.96% | 36.91% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-two patterns]` | 8.126600579755457e-05 | 6.050830558276442e-05 | 25.54% | 34.31% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-0-9]` | 8.053997699614431e-05 | 5.864400884862508e-05 | 27.19% | 37.34% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-4-byte pattern]` | 8.129177499550509e-05 | 5.912117576582968e-05 | 27.27% | 37.50% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-all byte values]` | 8.085185537034994e-05 | 5.828823214042174e-05 | 27.91% | 38.71% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-alternating 0x00/0xff]` | 8.095446505844143e-05 | 5.7886503830423075e-05 | 28.49% | 39.85% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-alternating 0xaa/0x55]` | 8.073987713275129e-05 | 5.733975367539536e-05 | 28.98% | 40.81% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-ascii sentence]` | 8.054094636835294e-05 | 5.9038025349627365e-05 | 26.70% | 36.42% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'']` | 7.745072433616554e-05 | 5.6565728770241404e-05 | 26.97% | 36.92% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x00'*32]` | 7.965826633864038e-05 | 5.840624778299748e-05 | 26.68% | 36.39% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x00\\xff\\x00\\xff']` | 8.043739009012542e-05 | 5.726354314937087e-05 | 28.81% | 40.47% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*100]` | 8.08302955022355e-05 | 5.8779060934845705e-05 | 27.28% | 37.52% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*2048]` | 0.00010587511613295407 | 8.152667495033689e-05 | 23.00% | 29.87% | 1.30x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x01\\x02\\x03']` | 7.94895493816294e-05 | 5.725209743542306e-05 | 27.98% | 38.84% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.047515235879133e-05 | 5.837150209456553e-05 | 27.47% | 37.87% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x7f'*8]` | 8.048947641030272e-05 | 5.7923306476959616e-05 | 28.04% | 38.96% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x80'*8]` | 8.043531601493851e-05 | 5.858325237405438e-05 | 27.17% | 37.30% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\xde\\xad\\xbe\\xef']` | 7.968416127980274e-05 | 5.719394811358798e-05 | 28.22% | 39.32% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\xff'*64]` | 8.02864142358187e-05 | 5.721292826423238e-05 | 28.74% | 40.33% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'a'*1024]` | 9.976804489231354e-05 | 6.92643149099454e-05 | 30.57% | 44.04% | 1.44x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'abc']` | 8.00525940697233e-05 | 5.799280600524524e-05 | 27.56% | 38.04% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-long alternating]` | 0.00010023892144228582 | 7.433617601471303e-05 | 25.84% | 34.85% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-mixed pattern]` | 8.190135737026516e-05 | 5.8626392425408464e-05 | 28.42% | 39.70% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-multiples of 0x10]` | 8.108139452336353e-05 | 5.79455207205184e-05 | 28.53% | 39.93% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-palindrome ascii]` | 8.125950024810618e-05 | 5.8060637058874196e-05 | 28.55% | 39.96% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-palindrome numeric]` | 8.131956479014433e-05 | 5.815552257484653e-05 | 28.49% | 39.83% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-palindrome]` | 8.038686965603729e-05 | 5.693184291860686e-05 | 29.18% | 41.20% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-repeated 0-9]` | 8.136809358369172e-05 | 5.866405881602825e-05 | 27.90% | 38.70% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-single 0xff]` | 7.875141040150117e-05 | 5.592423208194507e-05 | 28.99% | 40.82% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-single null byte]` | 7.861621648895409e-05 | 5.610970326550653e-05 | 28.63% | 40.11% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-two patterns]` | 8.081124905182938e-05 | 5.827503624881302e-05 | 27.89% | 38.67% | 1.39x | ✅ | -| `hexbytes_new['']` | 7.131281614525125e-05 | 3.674571170359664e-05 | 48.47% | 94.07% | 1.94x | ✅ | -| `hexbytes_new['0x'+'00'*64]` | 9.334474182297979e-05 | 5.002092223893261e-05 | 46.41% | 86.61% | 1.87x | ✅ | -| `hexbytes_new['0x'+'a'*128]` | 9.332212376562862e-05 | 4.9688573185256294e-05 | 46.76% | 87.81% | 1.88x | ✅ | -| `hexbytes_new['0x'+'ff'*32]` | 8.897483979299019e-05 | 4.717107068690907e-05 | 46.98% | 88.62% | 1.89x | ✅ | -| `hexbytes_new['0x']` | 7.859271584945845e-05 | 3.7248041998330384e-05 | 52.61% | 111.00% | 2.11x | ✅ | -| `hexbytes_new['0x1234']` | 8.623097748543887e-05 | 4.445432225880482e-05 | 48.45% | 93.98% | 1.94x | ✅ | -| `hexbytes_new['0xCAFEBABE']` | 8.534164171012035e-05 | 4.3372963790031904e-05 | 49.18% | 96.76% | 1.97x | ✅ | -| `hexbytes_new['0xabcdef']` | 8.67185763250266e-05 | 4.455483574005099e-05 | 48.62% | 94.63% | 1.95x | ✅ | -| `hexbytes_new['0xdeadbeef']` | 8.658706715658466e-05 | 4.344636172954605e-05 | 49.82% | 99.30% | 1.99x | ✅ | -| `hexbytes_new['abc']` | 8.292515782974168e-05 | 4.7843991558183755e-05 | 42.30% | 73.32% | 1.73x | ✅ | -| `hexbytes_new['deadbeef']` | 7.718485042166974e-05 | 4.04787813345739e-05 | 47.56% | 90.68% | 1.91x | ✅ | -| `hexbytes_new[0-9]` | 4.231792093549312e-05 | 2.5451141414617816e-05 | 39.86% | 66.27% | 1.66x | ✅ | -| `hexbytes_new[0]` | 0.00012300621169908922 | 6.0380405153025e-05 | 50.91% | 103.72% | 2.04x | ✅ | -| `hexbytes_new[123456]` | 0.00012830273207382816 | 6.532929183911044e-05 | 49.08% | 96.39% | 1.96x | ✅ | -| `hexbytes_new[2**16]` | 0.00012715477042007792 | 6.586500074308855e-05 | 48.20% | 93.05% | 1.93x | ✅ | -| `hexbytes_new[2**256-1]` | 0.00013127475948868122 | 7.162552601799069e-05 | 45.44% | 83.28% | 1.83x | ✅ | -| `hexbytes_new[2**32]` | 0.00012909899030330623 | 6.87847683413182e-05 | 46.72% | 87.69% | 1.88x | ✅ | -| `hexbytes_new[2**64]` | 0.00013082380064914468 | 7.23297716854257e-05 | 44.71% | 80.87% | 1.81x | ✅ | -| `hexbytes_new[2**8]` | 0.00012401706250032195 | 6.248346389739209e-05 | 49.62% | 98.48% | 1.98x | ✅ | -| `hexbytes_new[4-byte pattern]` | 4.365671612359027e-05 | 2.643552942035839e-05 | 39.45% | 65.14% | 1.65x | ✅ | -| `hexbytes_new[False]` | 5.998564665625443e-05 | 2.7018440393916153e-05 | 54.96% | 122.02% | 2.22x | ✅ | -| `hexbytes_new[True]` | 6.030799126926403e-05 | 2.7165876078291013e-05 | 54.95% | 122.00% | 2.22x | ✅ | -| `hexbytes_new[all byte values]` | 4.296420066652947e-05 | 2.6508217313219185e-05 | 38.30% | 62.08% | 1.62x | ✅ | -| `hexbytes_new[alternating 0x00/0xff]` | 4.2859126587784984e-05 | 2.6024256057515943e-05 | 39.28% | 64.69% | 1.65x | ✅ | -| `hexbytes_new[alternating 0xaa/0x55]` | 4.318860514174584e-05 | 2.622396682693305e-05 | 39.28% | 64.69% | 1.65x | ✅ | -| `hexbytes_new[ascii sentence]` | 4.3571666073357616e-05 | 2.5626769265913558e-05 | 41.18% | 70.02% | 1.70x | ✅ | -| `hexbytes_new[b'']` | 4.242551041226786e-05 | 2.5627476251042672e-05 | 39.59% | 65.55% | 1.66x | ✅ | -| `hexbytes_new[b'\\x00'*32]` | 4.291665145012345e-05 | 2.5688885937140336e-05 | 40.14% | 67.06% | 1.67x | ✅ | -| `hexbytes_new[b'\\x00\\xff\\x00\\xff']` | 4.337699329369043e-05 | 2.5680748593699936e-05 | 40.80% | 68.91% | 1.69x | ✅ | -| `hexbytes_new[b'\\x01'*100]` | 4.340454259538618e-05 | 2.6030976413286714e-05 | 40.03% | 66.74% | 1.67x | ✅ | -| `hexbytes_new[b'\\x01'*2048]` | 5.650313969787112e-05 | 3.7988764006587585e-05 | 32.77% | 48.74% | 1.49x | ✅ | -| `hexbytes_new[b'\\x01\\x02\\x03']` | 4.1441968531657095e-05 | 2.5582851644495712e-05 | 38.27% | 61.99% | 1.62x | ✅ | -| `hexbytes_new[b'\\x10\\x20\\x30\\x40\\x50']` | 4.334814660598144e-05 | 2.5473656619051085e-05 | 41.23% | 70.17% | 1.70x | ✅ | -| `hexbytes_new[b'\\x7f'*8]` | 4.299352536456225e-05 | 2.57916928699872e-05 | 40.01% | 66.70% | 1.67x | ✅ | -| `hexbytes_new[b'\\x80'*8]` | 4.257729278163156e-05 | 2.5614936372892292e-05 | 39.84% | 66.22% | 1.66x | ✅ | -| `hexbytes_new[b'\\xde\\xad\\xbe\\xef']` | 4.3027180623284775e-05 | 2.5620470186368232e-05 | 40.46% | 67.94% | 1.68x | ✅ | -| `hexbytes_new[b'\\xff'*64]` | 4.2891169389391585e-05 | 2.636638420645834e-05 | 38.53% | 62.67% | 1.63x | ✅ | -| `hexbytes_new[b'a'*1024]` | 5.177837690782392e-05 | 3.318321308631852e-05 | 35.91% | 56.04% | 1.56x | ✅ | -| `hexbytes_new[b'abc']` | 4.2025070845850364e-05 | 2.5707930238955852e-05 | 38.83% | 63.47% | 1.63x | ✅ | -| `hexbytes_new[bytearray(0-9)]` | 6.857137987171737e-05 | 3.648192106839913e-05 | 46.80% | 87.96% | 1.88x | ✅ | -| `hexbytes_new[bytearray(4-byte pattern)]` | 6.925469430782842e-05 | 3.7684764952484636e-05 | 45.59% | 83.77% | 1.84x | ✅ | -| `hexbytes_new[bytearray(all byte values)]` | 6.966291999385976e-05 | 3.7939080904727996e-05 | 45.54% | 83.62% | 1.84x | ✅ | -| `hexbytes_new[bytearray(alternating 0x00/0xff)]` | 6.934033147383811e-05 | 3.7390071149242896e-05 | 46.08% | 85.45% | 1.85x | ✅ | -| `hexbytes_new[bytearray(alternating 0xaa/0x55)]` | 6.913529425216894e-05 | 3.720184645744461e-05 | 46.19% | 85.84% | 1.86x | ✅ | -| `hexbytes_new[bytearray(ascii sentence)]` | 6.89390375633696e-05 | 3.692158541086033e-05 | 46.44% | 86.72% | 1.87x | ✅ | -| `hexbytes_new[bytearray(b'')]` | 6.657921329737774e-05 | 3.498702985417451e-05 | 47.45% | 90.30% | 1.90x | ✅ | -| `hexbytes_new[bytearray(b'\\x00'*32)]` | 6.974467984682716e-05 | 3.66649225570196e-05 | 47.43% | 90.22% | 1.90x | ✅ | -| `hexbytes_new[bytearray(b'\\x00\\xff\\x00\\xff')]` | 6.813157795855745e-05 | 3.729734851214318e-05 | 45.26% | 82.67% | 1.83x | ✅ | -| `hexbytes_new[bytearray(b'\\x01'*100)]` | 6.942868792763909e-05 | 3.724968173535996e-05 | 46.35% | 86.39% | 1.86x | ✅ | -| `hexbytes_new[bytearray(b'\\x01'*2048)]` | 9.248464725352624e-05 | 5.596309762596068e-05 | 39.49% | 65.26% | 1.65x | ✅ | -| `hexbytes_new[bytearray(b'\\x01\\x02\\x03')]` | 6.871018576342032e-05 | 3.692052224340135e-05 | 46.27% | 86.10% | 1.86x | ✅ | -| `hexbytes_new[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 6.944273118250012e-05 | 3.695582931162502e-05 | 46.78% | 87.91% | 1.88x | ✅ | -| `hexbytes_new[bytearray(b'\\x7f'*8)]` | 6.969877030579308e-05 | 3.6792067649256717e-05 | 47.21% | 89.44% | 1.89x | ✅ | -| `hexbytes_new[bytearray(b'\\x80'*8)]` | 6.835225734833033e-05 | 3.652445295009898e-05 | 46.56% | 87.14% | 1.87x | ✅ | -| `hexbytes_new[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 6.983915410011755e-05 | 3.773740761299638e-05 | 45.97% | 85.07% | 1.85x | ✅ | -| `hexbytes_new[bytearray(b'\\xff'*64)]` | 6.926805350883918e-05 | 3.822801460354347e-05 | 44.81% | 81.20% | 1.81x | ✅ | -| `hexbytes_new[bytearray(b'a'*1024)]` | 8.635688718709579e-05 | 5.193362604467308e-05 | 39.86% | 66.28% | 1.66x | ✅ | -| `hexbytes_new[bytearray(b'abc')]` | 6.813005150075139e-05 | 3.740022913282253e-05 | 45.10% | 82.16% | 1.82x | ✅ | -| `hexbytes_new[bytearray(long alternating)]` | 8.709562230016446e-05 | 5.017746402674249e-05 | 42.39% | 73.58% | 1.74x | ✅ | -| `hexbytes_new[bytearray(mixed pattern)]` | 6.950971618754891e-05 | 3.7842997732392495e-05 | 45.56% | 83.68% | 1.84x | ✅ | -| `hexbytes_new[bytearray(multiples of 0x10)]` | 6.820170256215343e-05 | 3.6597542872320416e-05 | 46.34% | 86.36% | 1.86x | ✅ | -| `hexbytes_new[bytearray(palindrome ascii)]` | 6.841474700339718e-05 | 3.755793028274776e-05 | 45.10% | 82.16% | 1.82x | ✅ | -| `hexbytes_new[bytearray(palindrome numeric)]` | 6.878712014857778e-05 | 3.769801178153598e-05 | 45.20% | 82.47% | 1.82x | ✅ | -| `hexbytes_new[bytearray(palindrome)]` | 6.819899415354758e-05 | 3.719801693516349e-05 | 45.46% | 83.34% | 1.83x | ✅ | -| `hexbytes_new[bytearray(repeated 0-9)]` | 6.966693798531093e-05 | 3.726643545910852e-05 | 46.51% | 86.94% | 1.87x | ✅ | -| `hexbytes_new[bytearray(single 0xff)]` | 6.92218372941298e-05 | 3.7608169166181365e-05 | 45.67% | 84.06% | 1.84x | ✅ | -| `hexbytes_new[bytearray(single null byte)]` | 6.962209900488615e-05 | 3.780280228059994e-05 | 45.70% | 84.17% | 1.84x | ✅ | -| `hexbytes_new[bytearray(two patterns)]` | 6.920861849182834e-05 | 3.749633921084595e-05 | 45.82% | 84.57% | 1.85x | ✅ | -| `hexbytes_new[long alternating]` | 5.159495132199906e-05 | 3.308769512154607e-05 | 35.87% | 55.93% | 1.56x | ✅ | -| `hexbytes_new[memoryview(0-9)]` | 8.287889860728582e-05 | 4.2727305077680735e-05 | 48.45% | 93.97% | 1.94x | ✅ | -| `hexbytes_new[memoryview(4-byte pattern)]` | 8.171808752874566e-05 | 4.3136149613718545e-05 | 47.21% | 89.44% | 1.89x | ✅ | -| `hexbytes_new[memoryview(all byte values)]` | 8.256301601316813e-05 | 4.367906161584491e-05 | 47.10% | 89.02% | 1.89x | ✅ | -| `hexbytes_new[memoryview(alternating 0x00/0xff)]` | 8.272460297603305e-05 | 4.260909824084246e-05 | 48.49% | 94.15% | 1.94x | ✅ | -| `hexbytes_new[memoryview(alternating 0xaa/0x55)]` | 8.311275038620333e-05 | 4.273833763646143e-05 | 48.58% | 94.47% | 1.94x | ✅ | -| `hexbytes_new[memoryview(ascii sentence)]` | 8.241427164965519e-05 | 4.26381348909767e-05 | 48.26% | 93.29% | 1.93x | ✅ | -| `hexbytes_new[memoryview(b'')]` | 8.068140800595341e-05 | 4.022441332458065e-05 | 50.14% | 100.58% | 2.01x | ✅ | -| `hexbytes_new[memoryview(b'\\x00'*32)]` | 8.23535183161755e-05 | 4.257693218557696e-05 | 48.30% | 93.42% | 1.93x | ✅ | -| `hexbytes_new[memoryview(b'\\x00\\xff\\x00\\xff')]` | 8.227866961361686e-05 | 4.2242032737624914e-05 | 48.66% | 94.78% | 1.95x | ✅ | -| `hexbytes_new[memoryview(b'\\x01'*100)]` | 8.367759081857251e-05 | 4.334902829685653e-05 | 48.20% | 93.03% | 1.93x | ✅ | -| `hexbytes_new[memoryview(b'\\x01'*2048)]` | 0.00010710661932177443 | 6.275219850187019e-05 | 41.41% | 70.68% | 1.71x | ✅ | -| `hexbytes_new[memoryview(b'\\x01\\x02\\x03')]` | 8.314378913028096e-05 | 4.2693573205169005e-05 | 48.65% | 94.75% | 1.95x | ✅ | -| `hexbytes_new[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 8.176646614151828e-05 | 4.2635709961958026e-05 | 47.86% | 91.78% | 1.92x | ✅ | -| `hexbytes_new[memoryview(b'\\x7f'*8)]` | 8.286830867871187e-05 | 4.346485853398484e-05 | 47.55% | 90.66% | 1.91x | ✅ | -| `hexbytes_new[memoryview(b'\\x80'*8)]` | 8.248276209488502e-05 | 4.325699180190259e-05 | 47.56% | 90.68% | 1.91x | ✅ | -| `hexbytes_new[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 8.204779702012512e-05 | 4.270990821086162e-05 | 47.95% | 92.10% | 1.92x | ✅ | -| `hexbytes_new[memoryview(b'\\xff'*64)]` | 8.2459388711959e-05 | 4.284519058772579e-05 | 48.04% | 92.46% | 1.92x | ✅ | -| `hexbytes_new[memoryview(b'a'*1024)]` | 0.00010010044393146698 | 5.68532917622124e-05 | 43.20% | 76.07% | 1.76x | ✅ | -| `hexbytes_new[memoryview(b'abc')]` | 8.274411400721749e-05 | 4.335850610109714e-05 | 47.60% | 90.84% | 1.91x | ✅ | -| `hexbytes_new[memoryview(long alternating)]` | 0.00010076537341216057 | 5.723866681298617e-05 | 43.20% | 76.04% | 1.76x | ✅ | -| `hexbytes_new[memoryview(mixed pattern)]` | 8.454846887039537e-05 | 4.294932863552669e-05 | 49.20% | 96.86% | 1.97x | ✅ | -| `hexbytes_new[memoryview(multiples of 0x10)]` | 8.245803357250002e-05 | 4.275896508601862e-05 | 48.14% | 92.84% | 1.93x | ✅ | -| `hexbytes_new[memoryview(palindrome ascii)]` | 8.226666862613707e-05 | 4.322120909722521e-05 | 47.46% | 90.34% | 1.90x | ✅ | -| `hexbytes_new[memoryview(palindrome numeric)]` | 8.264503383990198e-05 | 4.313333596788622e-05 | 47.81% | 91.60% | 1.92x | ✅ | -| `hexbytes_new[memoryview(palindrome)]` | 8.17596790228505e-05 | 4.3143714944438304e-05 | 47.23% | 89.51% | 1.90x | ✅ | -| `hexbytes_new[memoryview(repeated 0-9)]` | 8.327484685864827e-05 | 4.298848906873776e-05 | 48.38% | 93.71% | 1.94x | ✅ | -| `hexbytes_new[memoryview(single 0xff)]` | 8.264911074652624e-05 | 4.262318789190444e-05 | 48.43% | 93.91% | 1.94x | ✅ | -| `hexbytes_new[memoryview(single null byte)]` | 8.400966988362832e-05 | 4.5119517305945794e-05 | 46.29% | 86.19% | 1.86x | ✅ | -| `hexbytes_new[memoryview(two patterns)]` | 8.250392366393075e-05 | 4.233908895521254e-05 | 48.68% | 94.86% | 1.95x | ✅ | -| `hexbytes_new[mixed pattern]` | 4.3211471558634816e-05 | 2.6457080181705535e-05 | 38.77% | 63.33% | 1.63x | ✅ | -| `hexbytes_new[multiples of 0x10]` | 4.2444978553650595e-05 | 2.557214861869313e-05 | 39.75% | 65.98% | 1.66x | ✅ | -| `hexbytes_new[palindrome ascii]` | 4.268600620202398e-05 | 2.5555415866223987e-05 | 40.13% | 67.03% | 1.67x | ✅ | -| `hexbytes_new[palindrome numeric]` | 4.301294462221504e-05 | 2.547051792056463e-05 | 40.78% | 68.87% | 1.69x | ✅ | -| `hexbytes_new[palindrome]` | 4.2689947302116406e-05 | 2.562523538297266e-05 | 39.97% | 66.59% | 1.67x | ✅ | -| `hexbytes_new[repeated 0-9]` | 4.4628749000750453e-05 | 2.6336091031623872e-05 | 40.99% | 69.46% | 1.69x | ✅ | -| `hexbytes_new[single 0xff]` | 4.2341900454552596e-05 | 2.5345621179626575e-05 | 40.14% | 67.06% | 1.67x | ✅ | -| `hexbytes_new[single null byte]` | 4.2525391463418224e-05 | 2.523053461995226e-05 | 40.67% | 68.55% | 1.69x | ✅ | -| `hexbytes_new[two patterns]` | 4.369902588475111e-05 | 2.6249559665532792e-05 | 39.93% | 66.48% | 1.66x | ✅ | -| `hexbytes_repr[0-9]` | 2.9187304621569174e-05 | 1.4767182477565945e-05 | 49.41% | 97.65% | 1.98x | ✅ | -| `hexbytes_repr[4-byte pattern]` | 0.00012095054334785625 | 4.073080271460914e-05 | 66.32% | 196.95% | 2.97x | ✅ | -| `hexbytes_repr[all byte values]` | 0.00012079475715495627 | 4.080656330244894e-05 | 66.22% | 196.02% | 2.96x | ✅ | -| `hexbytes_repr[alternating 0x00/0xff]` | 4.879247173946032e-05 | 1.972718656821867e-05 | 59.57% | 147.34% | 2.47x | ✅ | -| `hexbytes_repr[alternating 0xaa/0x55]` | 4.907386938716735e-05 | 2.0031776270147567e-05 | 59.18% | 144.98% | 2.45x | ✅ | -| `hexbytes_repr[ascii sentence]` | 4.037500615403e-05 | 1.798608584618184e-05 | 55.45% | 124.48% | 2.24x | ✅ | -| `hexbytes_repr[b'']` | 2.1374154054112182e-05 | 1.1996002272361253e-05 | 43.88% | 78.18% | 1.78x | ✅ | -| `hexbytes_repr[b'\\x00'*32]` | 3.6706308348955985e-05 | 1.672493529541419e-05 | 54.44% | 119.47% | 2.19x | ✅ | -| `hexbytes_repr[b'\\x00\\xff\\x00\\xff']` | 2.629904158189077e-05 | 1.445360420518436e-05 | 45.04% | 81.95% | 1.82x | ✅ | -| `hexbytes_repr[b'\\x01'*100]` | 6.156156128892413e-05 | 2.3513707607178435e-05 | 61.80% | 161.81% | 2.62x | ✅ | -| `hexbytes_repr[b'\\x01'*2048]` | 0.0007640247680792069 | 0.00022208838299627866 | 70.93% | 244.02% | 3.44x | ✅ | -| `hexbytes_repr[b'\\x01\\x02\\x03']` | 2.641780942028035e-05 | 1.3975240327200895e-05 | 47.10% | 89.03% | 1.89x | ✅ | -| `hexbytes_repr[b'\\x10\\x20\\x30\\x40\\x50']` | 2.706146425852074e-05 | 1.3944181015269194e-05 | 48.47% | 94.07% | 1.94x | ✅ | -| `hexbytes_repr[b'\\x7f'*8]` | 2.8317761728101958e-05 | 1.452182530084492e-05 | 48.72% | 95.00% | 1.95x | ✅ | -| `hexbytes_repr[b'\\x80'*8]` | 2.8246804651327292e-05 | 1.449871519197123e-05 | 48.67% | 94.82% | 1.95x | ✅ | -| `hexbytes_repr[b'\\xde\\xad\\xbe\\xef']` | 2.6556674396914108e-05 | 1.3960063447599712e-05 | 47.43% | 90.23% | 1.90x | ✅ | -| `hexbytes_repr[b'\\xff'*64]` | 4.906146813993663e-05 | 1.9941398499679938e-05 | 59.35% | 146.03% | 2.46x | ✅ | -| `hexbytes_repr[b'a'*1024]` | 0.0003943572048768505 | 0.00011920687747521057 | 69.77% | 230.82% | 3.31x | ✅ | -| `hexbytes_repr[b'abc']` | 2.636133273036128e-05 | 1.4088210523049315e-05 | 46.56% | 87.12% | 1.87x | ✅ | -| `hexbytes_repr[long alternating]` | 0.0004009027828012222 | 0.00012224040825631327 | 69.51% | 227.96% | 3.28x | ✅ | -| `hexbytes_repr[mixed pattern]` | 9.74906938816574e-05 | 3.389073299281704e-05 | 65.24% | 187.66% | 2.88x | ✅ | -| `hexbytes_repr[multiples of 0x10]` | 2.8980901472739657e-05 | 1.4768078790974174e-05 | 49.04% | 96.24% | 1.96x | ✅ | -| `hexbytes_repr[palindrome ascii]` | 2.7497650007931497e-05 | 1.4206513090344305e-05 | 48.34% | 93.56% | 1.94x | ✅ | -| `hexbytes_repr[palindrome numeric]` | 2.7167873682963378e-05 | 1.4074426174185583e-05 | 48.19% | 93.03% | 1.93x | ✅ | -| `hexbytes_repr[palindrome]` | 3.1805676812776164e-05 | 1.569448214240066e-05 | 50.66% | 102.66% | 2.03x | ✅ | -| `hexbytes_repr[repeated 0-9]` | 6.202144388762241e-05 | 2.3521573515010182e-05 | 62.08% | 163.68% | 2.64x | ✅ | -| `hexbytes_repr[single 0xff]` | 2.5682551238886384e-05 | 1.3670211707782565e-05 | 46.77% | 87.87% | 1.88x | ✅ | -| `hexbytes_repr[single null byte]` | 2.5739552433113837e-05 | 1.3692272049884517e-05 | 46.80% | 87.99% | 1.88x | ✅ | -| `hexbytes_repr[two patterns]` | 4.8869286458867283e-05 | 1.9801979955166373e-05 | 59.48% | 146.79% | 2.47x | ✅ | -| `hexbytes_to_0x_hex[0-9]` | 1.5507100781739503e-05 | 1.3720889616615897e-05 | 11.52% | 13.02% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[4-byte pattern]` | 4.160869849896216e-05 | 3.9532899704882e-05 | 4.99% | 5.25% | 1.05x | ✅ | -| `hexbytes_to_0x_hex[all byte values]` | 4.203209895051505e-05 | 3.966634079237324e-05 | 5.63% | 5.96% | 1.06x | ✅ | -| `hexbytes_to_0x_hex[alternating 0x00/0xff]` | 2.0528765549755123e-05 | 1.9060867073581375e-05 | 7.15% | 7.70% | 1.08x | ✅ | -| `hexbytes_to_0x_hex[alternating 0xaa/0x55]` | 2.0541844460125804e-05 | 1.904253573168782e-05 | 7.30% | 7.87% | 1.08x | ✅ | -| `hexbytes_to_0x_hex[ascii sentence]` | 1.8883281837479487e-05 | 1.7089710073088742e-05 | 9.50% | 10.50% | 1.10x | ✅ | -| `hexbytes_to_0x_hex[b'']` | 1.0087661560853127e-05 | 1.1426056170392028e-05 | -13.27% | -11.71% | 0.88x | ❌ | -| `hexbytes_to_0x_hex[b'\\x00'*32]` | 1.755908759655568e-05 | 1.588403147533557e-05 | 9.54% | 10.55% | 1.11x | ✅ | -| `hexbytes_to_0x_hex[b'\\x00\\xff\\x00\\xff']` | 1.4788934788884675e-05 | 1.3202085566789468e-05 | 10.73% | 12.02% | 1.12x | ✅ | -| `hexbytes_to_0x_hex[b'\\x01'*100]` | 2.5236715245189543e-05 | 2.275266905241282e-05 | 9.84% | 10.92% | 1.11x | ✅ | -| `hexbytes_to_0x_hex[b'\\x01'*2048]` | 0.00022311016033142175 | 0.00022127130409725708 | 0.82% | 0.83% | 1.01x | ✅ | -| `hexbytes_to_0x_hex[b'\\x01\\x02\\x03']` | 1.479442719469979e-05 | 1.2880539704547602e-05 | 12.94% | 14.86% | 1.15x | ✅ | -| `hexbytes_to_0x_hex[b'\\x10\\x20\\x30\\x40\\x50']` | 1.5002000816647791e-05 | 1.3125483134257102e-05 | 12.51% | 14.30% | 1.14x | ✅ | -| `hexbytes_to_0x_hex[b'\\x7f'*8]` | 1.5185757284642895e-05 | 1.35887309395344e-05 | 10.52% | 11.75% | 1.12x | ✅ | -| `hexbytes_to_0x_hex[b'\\x80'*8]` | 1.5156579193448804e-05 | 1.3370986444776743e-05 | 11.78% | 13.35% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[b'\\xde\\xad\\xbe\\xef']` | 1.4873734311867481e-05 | 1.316189826343049e-05 | 11.51% | 13.01% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[b'\\xff'*64]` | 2.0543926774309124e-05 | 1.924749086826406e-05 | 6.31% | 6.74% | 1.07x | ✅ | -| `hexbytes_to_0x_hex[b'a'*1024]` | 0.00012653994401341594 | 0.00012202280081000878 | 3.57% | 3.70% | 1.04x | ✅ | -| `hexbytes_to_0x_hex[b'abc']` | 1.4669784406308202e-05 | 1.2947219349042556e-05 | 11.74% | 13.30% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[long alternating]` | 0.0001223113650088322 | 0.00012160198987206701 | 0.58% | 0.58% | 1.01x | ✅ | -| `hexbytes_to_0x_hex[mixed pattern]` | 3.4854023484979934e-05 | 3.302895178778691e-05 | 5.24% | 5.53% | 1.06x | ✅ | -| `hexbytes_to_0x_hex[multiples of 0x10]` | 1.5497808532987216e-05 | 1.379875391961279e-05 | 10.96% | 12.31% | 1.12x | ✅ | -| `hexbytes_to_0x_hex[palindrome ascii]` | 1.5222916836600922e-05 | 1.3193096140767923e-05 | 13.33% | 15.39% | 1.15x | ✅ | -| `hexbytes_to_0x_hex[palindrome numeric]` | 1.4942441585811032e-05 | 1.317183261852326e-05 | 11.85% | 13.44% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[palindrome]` | 1.6303881224814978e-05 | 1.475977400827135e-05 | 9.47% | 10.46% | 1.10x | ✅ | -| `hexbytes_to_0x_hex[repeated 0-9]` | 2.5400406723852176e-05 | 2.286319150446288e-05 | 9.99% | 11.10% | 1.11x | ✅ | -| `hexbytes_to_0x_hex[single 0xff]` | 1.4636139161965622e-05 | 1.2782157128082903e-05 | 12.67% | 14.50% | 1.15x | ✅ | -| `hexbytes_to_0x_hex[single null byte]` | 1.456926841651575e-05 | 1.261913417901959e-05 | 13.39% | 15.45% | 1.15x | ✅ | -| `hexbytes_to_0x_hex[two patterns]` | 2.0577188057685784e-05 | 1.899111175092068e-05 | 7.71% | 8.35% | 1.08x | ✅ | +| `hexbytes_getitem_index[-1-0-9]` | 2.490709214169354e-05 | 2.370748858175925e-05 | 4.82% | 5.06% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-4-byte pattern]` | 2.4944033381598877e-05 | 2.3596921403830403e-05 | 5.40% | 5.71% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-all byte values]` | 2.489169469090146e-05 | 2.368375301935395e-05 | 4.85% | 5.10% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-alternating 0x00/0xff]` | 2.4616856971277598e-05 | 2.367910966805255e-05 | 3.81% | 3.96% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-alternating 0xaa/0x55]` | 2.4810174022866607e-05 | 2.364585807709314e-05 | 4.69% | 4.92% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-ascii sentence]` | 2.4876026369098616e-05 | 2.3401698000016383e-05 | 5.93% | 6.30% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x00'*32]` | 2.5179318770972272e-05 | 2.3682104962795438e-05 | 5.95% | 6.32% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x00\\xff\\x00\\xff']` | 2.469411541356294e-05 | 2.3651485726805122e-05 | 4.22% | 4.41% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x01'*100]` | 2.450403953078943e-05 | 2.393845559201651e-05 | 2.31% | 2.36% | 1.02x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x01'*2048]` | 2.4793527926133996e-05 | 2.3673859203495446e-05 | 4.52% | 4.73% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x01\\x02\\x03']` | 2.4839162569491994e-05 | 2.3678830214022088e-05 | 4.67% | 4.90% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.472520244691875e-05 | 2.3801060858945628e-05 | 3.74% | 3.88% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x7f'*8]` | 2.4799162623988217e-05 | 2.380391230241173e-05 | 4.01% | 4.18% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x80'*8]` | 2.469218193263831e-05 | 2.3751265667095653e-05 | 3.81% | 3.96% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-b'\\xde\\xad\\xbe\\xef']` | 2.4610220362058187e-05 | 2.4347358207216905e-05 | 1.07% | 1.08% | 1.01x | ✅ | +| `hexbytes_getitem_index[-1-b'\\xff'*64]` | 2.4932962472324192e-05 | 2.363601582818424e-05 | 5.20% | 5.49% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'a'*1024]` | 2.4916169522003968e-05 | 2.3660802442189224e-05 | 5.04% | 5.31% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'abc']` | 2.4731356538688148e-05 | 2.3733560709730495e-05 | 4.03% | 4.20% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-long alternating]` | 2.4922983725099812e-05 | 2.373363203045093e-05 | 4.77% | 5.01% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-mixed pattern]` | 2.502179565787116e-05 | 2.3655083751740592e-05 | 5.46% | 5.78% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-multiples of 0x10]` | 2.482023088683099e-05 | 2.3600794131323934e-05 | 4.91% | 5.17% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-palindrome ascii]` | 2.4637436134955697e-05 | 2.3725335024125925e-05 | 3.70% | 3.84% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-palindrome numeric]` | 2.4790932389676028e-05 | 2.3642997999800265e-05 | 4.63% | 4.86% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-palindrome]` | 2.4656196665282742e-05 | 2.4314268430394298e-05 | 1.39% | 1.41% | 1.01x | ✅ | +| `hexbytes_getitem_index[-1-repeated 0-9]` | 2.4815698138590123e-05 | 2.3592542900903538e-05 | 4.93% | 5.18% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-two patterns]` | 2.482972845430588e-05 | 2.3585646651003552e-05 | 5.01% | 5.27% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-0-9]` | 2.3804435985581907e-05 | 2.2332741040488598e-05 | 6.18% | 6.59% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-4-byte pattern]` | 2.3771378416221362e-05 | 2.2207662416870945e-05 | 6.58% | 7.04% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-all byte values]` | 2.3648703120629988e-05 | 2.2333754906503866e-05 | 5.56% | 5.89% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-alternating 0x00/0xff]` | 2.3729806903673045e-05 | 2.234556747866719e-05 | 5.83% | 6.19% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-alternating 0xaa/0x55]` | 2.362031854600441e-05 | 2.230126355056076e-05 | 5.58% | 5.91% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-ascii sentence]` | 2.388190673483288e-05 | 2.23427556347629e-05 | 6.44% | 6.89% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-b'\\x00'*32]` | 2.3602802016469315e-05 | 2.2515627610547883e-05 | 4.61% | 4.83% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-b'\\x00\\xff\\x00\\xff']` | 2.356633073042294e-05 | 2.2449551736768575e-05 | 4.74% | 4.97% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-b'\\x01'*100]` | 2.373950600219785e-05 | 2.234548922547636e-05 | 5.87% | 6.24% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-b'\\x01'*2048]` | 2.3585919752857638e-05 | 2.2322596236281787e-05 | 5.36% | 5.66% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-b'\\x01\\x02\\x03']` | 2.354421020381418e-05 | 2.2267148404612698e-05 | 5.42% | 5.74% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3657149757468722e-05 | 2.239984540601803e-05 | 5.31% | 5.61% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-b'\\x7f'*8]` | 2.3682984208393784e-05 | 2.2300732078499635e-05 | 5.84% | 6.20% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-b'\\x80'*8]` | 2.373976053498264e-05 | 2.224161890697393e-05 | 6.31% | 6.74% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-b'\\xde\\xad\\xbe\\xef']` | 2.3529202995029878e-05 | 2.2936153077175266e-05 | 2.52% | 2.59% | 1.03x | ✅ | +| `hexbytes_getitem_index[0-b'\\xff'*64]` | 2.3361196700308235e-05 | 2.2360294500621842e-05 | 4.28% | 4.48% | 1.04x | ✅ | +| `hexbytes_getitem_index[0-b'a'*1024]` | 2.3768117942715358e-05 | 2.2424629627706747e-05 | 5.65% | 5.99% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-b'abc']` | 2.3759305249720714e-05 | 2.2508983582644e-05 | 5.26% | 5.55% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-long alternating]` | 2.3497055023329787e-05 | 2.2286754536703178e-05 | 5.15% | 5.43% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-mixed pattern]` | 2.3662767625523338e-05 | 2.2186145443099764e-05 | 6.24% | 6.66% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-multiples of 0x10]` | 2.3968756596597983e-05 | 2.2269591466586076e-05 | 7.09% | 7.63% | 1.08x | ✅ | +| `hexbytes_getitem_index[0-palindrome ascii]` | 2.382029751364173e-05 | 2.227932623915601e-05 | 6.47% | 6.92% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-palindrome numeric]` | 2.38171238489521e-05 | 2.214003875187448e-05 | 7.04% | 7.57% | 1.08x | ✅ | +| `hexbytes_getitem_index[0-palindrome]` | 2.3804432878066472e-05 | 2.226730524570395e-05 | 6.46% | 6.90% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-repeated 0-9]` | 2.377569950404774e-05 | 2.2437429199166335e-05 | 5.63% | 5.96% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-single 0xff]` | 2.3995499731795414e-05 | 2.218166166405336e-05 | 7.56% | 8.18% | 1.08x | ✅ | +| `hexbytes_getitem_index[0-single null byte]` | 2.3556894752030408e-05 | 2.229389044331145e-05 | 5.36% | 5.67% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-two patterns]` | 2.3639717936999068e-05 | 2.2408132843656126e-05 | 5.21% | 5.50% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-0-9]` | 2.400120672540772e-05 | 2.241032643767427e-05 | 6.63% | 7.10% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-4-byte pattern]` | 2.3926794701960164e-05 | 2.2499639116277377e-05 | 5.96% | 6.34% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-all byte values]` | 2.4489367875722634e-05 | 2.235271008857805e-05 | 8.72% | 9.56% | 1.10x | ✅ | +| `hexbytes_getitem_index[1-alternating 0x00/0xff]` | 2.371355350721647e-05 | 2.2316975615891112e-05 | 5.89% | 6.26% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-alternating 0xaa/0x55]` | 2.4005697906690265e-05 | 2.2310656442950614e-05 | 7.06% | 7.60% | 1.08x | ✅ | +| `hexbytes_getitem_index[1-ascii sentence]` | 2.3988890426407122e-05 | 2.2320323109938985e-05 | 6.96% | 7.48% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-b'\\x00'*32]` | 2.3719139804305662e-05 | 2.2553088161249025e-05 | 4.92% | 5.17% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-b'\\x00\\xff\\x00\\xff']` | 2.3951760723661583e-05 | 2.3112537769938194e-05 | 3.50% | 3.63% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-b'\\x01'*100]` | 2.4111626628490464e-05 | 2.2427875152351023e-05 | 6.98% | 7.51% | 1.08x | ✅ | +| `hexbytes_getitem_index[1-b'\\x01'*2048]` | 2.4044132226561195e-05 | 2.2326438568795778e-05 | 7.14% | 7.69% | 1.08x | ✅ | +| `hexbytes_getitem_index[1-b'\\x01\\x02\\x03']` | 2.3969020698736155e-05 | 2.2511009311633602e-05 | 6.08% | 6.48% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3986273042285928e-05 | 2.2465757911337137e-05 | 6.34% | 6.77% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-b'\\x7f'*8]` | 2.4020942708596204e-05 | 2.310142510771549e-05 | 3.83% | 3.98% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-b'\\x80'*8]` | 2.3971430731877633e-05 | 2.2474512477115264e-05 | 6.24% | 6.66% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-b'\\xde\\xad\\xbe\\xef']` | 2.387267731833952e-05 | 2.246828229777548e-05 | 5.88% | 6.25% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-b'\\xff'*64]` | 2.4059317084984183e-05 | 2.2423332730001766e-05 | 6.80% | 7.30% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-b'a'*1024]` | 2.382424450796304e-05 | 2.2529734614517946e-05 | 5.43% | 5.75% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-b'abc']` | 2.3724497800231034e-05 | 2.2396936622972052e-05 | 5.60% | 5.93% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-long alternating]` | 2.4028262385191222e-05 | 2.2318558414022063e-05 | 7.12% | 7.66% | 1.08x | ✅ | +| `hexbytes_getitem_index[1-mixed pattern]` | 2.400480781254558e-05 | 2.23731434513761e-05 | 6.80% | 7.29% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-multiples of 0x10]` | 2.4153705786085365e-05 | 2.232106667616376e-05 | 7.59% | 8.21% | 1.08x | ✅ | +| `hexbytes_getitem_index[1-palindrome ascii]` | 2.3997284524641675e-05 | 2.2352295763253378e-05 | 6.85% | 7.36% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-palindrome numeric]` | 2.3703576471447492e-05 | 2.2312168078273283e-05 | 5.87% | 6.24% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-palindrome]` | 2.3921338916415162e-05 | 2.242737764945785e-05 | 6.25% | 6.66% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-repeated 0-9]` | 2.3882986148653527e-05 | 2.2425614154787146e-05 | 6.10% | 6.50% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-two patterns]` | 2.388854772774617e-05 | 2.240852628090585e-05 | 6.20% | 6.60% | 1.07x | ✅ | +| `hexbytes_getitem_index[2-0-9]` | 2.3874871002614772e-05 | 2.2595767050003412e-05 | 5.36% | 5.66% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-4-byte pattern]` | 2.378837577320109e-05 | 2.256729257183067e-05 | 5.13% | 5.41% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-all byte values]` | 2.3473709014025585e-05 | 2.2662990168809288e-05 | 3.45% | 3.58% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-alternating 0x00/0xff]` | 2.3819441526286557e-05 | 2.2629141689281784e-05 | 5.00% | 5.26% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-alternating 0xaa/0x55]` | 2.3788247969989892e-05 | 2.2559227085855442e-05 | 5.17% | 5.45% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-ascii sentence]` | 2.3881140895929696e-05 | 2.2503355213873067e-05 | 5.77% | 6.12% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-b'\\x00'*32]` | 2.3909324357148648e-05 | 2.2700414309150026e-05 | 5.06% | 5.33% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-b'\\x00\\xff\\x00\\xff']` | 2.3786758271363673e-05 | 2.256335284912241e-05 | 5.14% | 5.42% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-b'\\x01'*100]` | 2.3804630915860972e-05 | 2.2599882901266554e-05 | 5.06% | 5.33% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-b'\\x01'*2048]` | 2.3650964643674444e-05 | 2.2658351052203995e-05 | 4.20% | 4.38% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-b'\\x01\\x02\\x03']` | 2.3901152032443655e-05 | 2.269953385166723e-05 | 5.03% | 5.29% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3902635114912487e-05 | 2.258400219130994e-05 | 5.52% | 5.84% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-b'\\x7f'*8]` | 2.3956975051065156e-05 | 2.2433761403873002e-05 | 6.36% | 6.79% | 1.07x | ✅ | +| `hexbytes_getitem_index[2-b'\\x80'*8]` | 2.4000884487649335e-05 | 2.2612079400099142e-05 | 5.79% | 6.14% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-b'\\xde\\xad\\xbe\\xef']` | 2.387051031228347e-05 | 2.2561639124750637e-05 | 5.48% | 5.80% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-b'\\xff'*64]` | 2.395242520577041e-05 | 2.262039730697539e-05 | 5.56% | 5.89% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-b'a'*1024]` | 2.3721300855653547e-05 | 2.5062847537239017e-05 | -5.66% | -5.35% | 0.95x | ❌ | +| `hexbytes_getitem_index[2-b'abc']` | 2.3925296484719404e-05 | 2.238723398853787e-05 | 6.43% | 6.87% | 1.07x | ✅ | +| `hexbytes_getitem_index[2-long alternating]` | 2.3631409339470236e-05 | 2.270989815763629e-05 | 3.90% | 4.06% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-mixed pattern]` | 2.3917553928721185e-05 | 2.2468101242594494e-05 | 6.06% | 6.45% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-multiples of 0x10]` | 2.378429071656568e-05 | 2.260425237241182e-05 | 4.96% | 5.22% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-palindrome ascii]` | 2.3513794817634814e-05 | 2.280097648496391e-05 | 3.03% | 3.13% | 1.03x | ✅ | +| `hexbytes_getitem_index[2-palindrome numeric]` | 2.3615102503494594e-05 | 2.270456350190985e-05 | 3.86% | 4.01% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-palindrome]` | 2.369638133083021e-05 | 2.264106485277953e-05 | 4.45% | 4.66% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-repeated 0-9]` | 2.376862877791056e-05 | 2.2376456921488585e-05 | 5.86% | 6.22% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-two patterns]` | 2.4077285971019048e-05 | 2.265738702958722e-05 | 5.90% | 6.27% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-0-9]` | 2.439369799811505e-05 | 2.253675959777434e-05 | 7.61% | 8.24% | 1.08x | ✅ | +| `hexbytes_getitem_index[3-4-byte pattern]` | 2.386717246825088e-05 | 2.243975488496998e-05 | 5.98% | 6.36% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-all byte values]` | 2.3799023966498162e-05 | 2.240720688782243e-05 | 5.85% | 6.21% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-alternating 0x00/0xff]` | 2.3962919643503147e-05 | 2.2542445438952883e-05 | 5.93% | 6.30% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-alternating 0xaa/0x55]` | 2.4433303155792243e-05 | 2.2581678686573463e-05 | 7.58% | 8.20% | 1.08x | ✅ | +| `hexbytes_getitem_index[3-ascii sentence]` | 2.370391824588414e-05 | 2.236818869361316e-05 | 5.64% | 5.97% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'\\x00'*32]` | 2.3741442385531174e-05 | 2.2449300535719423e-05 | 5.44% | 5.76% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'\\x00\\xff\\x00\\xff']` | 2.3642590889324142e-05 | 2.242886783222327e-05 | 5.13% | 5.41% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-b'\\x01'*100]` | 2.3910948504054585e-05 | 2.2485045934544003e-05 | 5.96% | 6.34% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'\\x01'*2048]` | 2.3716164249038793e-05 | 2.2490769745119254e-05 | 5.17% | 5.45% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3842339577157476e-05 | 2.2606873779719484e-05 | 5.18% | 5.47% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-b'\\x7f'*8]` | 2.3831313382717287e-05 | 2.2476603061146345e-05 | 5.68% | 6.03% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-b'\\x80'*8]` | 2.3692723389430334e-05 | 2.2530841402795717e-05 | 4.90% | 5.16% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-b'\\xde\\xad\\xbe\\xef']` | 2.3737964654743143e-05 | 2.2512745796212118e-05 | 5.16% | 5.44% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-b'\\xff'*64]` | 2.3658578308390954e-05 | 2.2779203305943146e-05 | 3.72% | 3.86% | 1.04x | ✅ | +| `hexbytes_getitem_index[3-b'a'*1024]` | 2.3855334593372263e-05 | 2.228266012547315e-05 | 6.59% | 7.06% | 1.07x | ✅ | +| `hexbytes_getitem_index[3-long alternating]` | 2.379532469536168e-05 | 2.273123458903386e-05 | 4.47% | 4.68% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-mixed pattern]` | 2.3809073739940073e-05 | 2.250883338219717e-05 | 5.46% | 5.78% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-multiples of 0x10]` | 2.3800334608921906e-05 | 2.2475127995915347e-05 | 5.57% | 5.90% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-palindrome ascii]` | 2.3834246395556575e-05 | 2.2496892882948072e-05 | 5.61% | 5.94% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-palindrome numeric]` | 2.392653327715017e-05 | 2.2501220115371612e-05 | 5.96% | 6.33% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-palindrome]` | 2.3566548828364226e-05 | 2.2415157208298935e-05 | 4.89% | 5.14% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-repeated 0-9]` | 2.375054065781441e-05 | 2.2438583443993667e-05 | 5.52% | 5.85% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-two patterns]` | 2.390830814374423e-05 | 2.2387012231341507e-05 | 6.36% | 6.80% | 1.07x | ✅ | +| `hexbytes_getitem_index[4-0-9]` | 2.3860426804613494e-05 | 2.303468474145708e-05 | 3.46% | 3.58% | 1.04x | ✅ | +| `hexbytes_getitem_index[4-4-byte pattern]` | 2.371701733597088e-05 | 2.2619075633073228e-05 | 4.63% | 4.85% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-all byte values]` | 2.3653544587480196e-05 | 2.2361993524046553e-05 | 5.46% | 5.78% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-alternating 0x00/0xff]` | 2.3904754490096712e-05 | 2.250823427695607e-05 | 5.84% | 6.20% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-alternating 0xaa/0x55]` | 2.3517849488132403e-05 | 2.2474955222076763e-05 | 4.43% | 4.64% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-ascii sentence]` | 2.362207759893742e-05 | 2.2450533847434663e-05 | 4.96% | 5.22% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-b'\\x00'*32]` | 2.374762076375316e-05 | 2.2532225114053345e-05 | 5.12% | 5.39% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-b'\\x01'*100]` | 2.3773919637662047e-05 | 2.2463245587186392e-05 | 5.51% | 5.83% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-b'\\x01'*2048]` | 2.375160053499626e-05 | 2.2292451148194973e-05 | 6.14% | 6.55% | 1.07x | ✅ | +| `hexbytes_getitem_index[4-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3899836759321147e-05 | 2.251437737829921e-05 | 5.80% | 6.15% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-b'\\x7f'*8]` | 2.3856474969524506e-05 | 2.2378458837154206e-05 | 6.20% | 6.60% | 1.07x | ✅ | +| `hexbytes_getitem_index[4-b'\\x80'*8]` | 2.388889848091968e-05 | 2.246377790210001e-05 | 5.97% | 6.34% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-b'\\xff'*64]` | 2.416365062100428e-05 | 2.2359556222050437e-05 | 7.47% | 8.07% | 1.08x | ✅ | +| `hexbytes_getitem_index[4-b'a'*1024]` | 2.3869906956677523e-05 | 2.2526865990605293e-05 | 5.63% | 5.96% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-long alternating]` | 2.3497115373928753e-05 | 2.247128467968984e-05 | 4.37% | 4.57% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-mixed pattern]` | 2.3806720648714753e-05 | 2.2406893363493278e-05 | 5.88% | 6.25% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-multiples of 0x10]` | 2.3753036366812696e-05 | 2.238585863714701e-05 | 5.76% | 6.11% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-palindrome ascii]` | 2.370483023887628e-05 | 2.2431662782420498e-05 | 5.37% | 5.68% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-palindrome numeric]` | 2.373627721647737e-05 | 2.2406648472272992e-05 | 5.60% | 5.93% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-palindrome]` | 2.3767029299258282e-05 | 2.2572461850716227e-05 | 5.03% | 5.29% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-repeated 0-9]` | 2.38225532876968e-05 | 2.2434662394114503e-05 | 5.83% | 6.19% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-two patterns]` | 2.384295706929274e-05 | 2.251970694455076e-05 | 5.55% | 5.88% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-0-9]` | 2.4248189104740953e-05 | 2.2400637581087466e-05 | 7.62% | 8.25% | 1.08x | ✅ | +| `hexbytes_getitem_index[5-4-byte pattern]` | 2.3821893881481354e-05 | 2.2471075941926205e-05 | 5.67% | 6.01% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-all byte values]` | 2.380855459913893e-05 | 2.2366614596256905e-05 | 6.06% | 6.45% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-alternating 0x00/0xff]` | 2.3930511243002562e-05 | 2.2435101782182286e-05 | 6.25% | 6.67% | 1.07x | ✅ | +| `hexbytes_getitem_index[5-alternating 0xaa/0x55]` | 2.3954371589133342e-05 | 2.2385198174316946e-05 | 6.55% | 7.01% | 1.07x | ✅ | +| `hexbytes_getitem_index[5-ascii sentence]` | 2.3800473999683568e-05 | 2.2393369712176927e-05 | 5.91% | 6.28% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-b'\\x00'*32]` | 2.3898545829205375e-05 | 2.255921141509606e-05 | 5.60% | 5.94% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-b'\\x01'*100]` | 2.3875203896918393e-05 | 2.2464589619196282e-05 | 5.91% | 6.28% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-b'\\x01'*2048]` | 2.382852421992495e-05 | 2.23906342502219e-05 | 6.03% | 6.42% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-b'\\x7f'*8]` | 2.3780812031940156e-05 | 2.2378183663124868e-05 | 5.90% | 6.27% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-b'\\x80'*8]` | 2.3740083218147064e-05 | 2.236032780277669e-05 | 5.81% | 6.17% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-b'\\xff'*64]` | 2.407765753479756e-05 | 2.2571715341949e-05 | 6.25% | 6.67% | 1.07x | ✅ | +| `hexbytes_getitem_index[5-b'a'*1024]` | 2.4051897335355348e-05 | 2.2480111373566207e-05 | 6.53% | 6.99% | 1.07x | ✅ | +| `hexbytes_getitem_index[5-long alternating]` | 2.3743341348274583e-05 | 2.244221334642182e-05 | 5.48% | 5.80% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-mixed pattern]` | 2.4035202112700412e-05 | 2.2560207011135367e-05 | 6.14% | 6.54% | 1.07x | ✅ | +| `hexbytes_getitem_index[5-multiples of 0x10]` | 2.399239823736184e-05 | 2.245929546266039e-05 | 6.39% | 6.83% | 1.07x | ✅ | +| `hexbytes_getitem_index[5-palindrome ascii]` | 2.3892460190599218e-05 | 2.2213239789007683e-05 | 7.03% | 7.56% | 1.08x | ✅ | +| `hexbytes_getitem_index[5-palindrome]` | 2.3900620577957767e-05 | 2.293923130269364e-05 | 4.02% | 4.19% | 1.04x | ✅ | +| `hexbytes_getitem_index[5-repeated 0-9]` | 2.400664951478795e-05 | 2.239824139377637e-05 | 6.70% | 7.18% | 1.07x | ✅ | +| `hexbytes_getitem_index[5-two patterns]` | 2.386699073994476e-05 | 2.2472839612278768e-05 | 5.84% | 6.20% | 1.06x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-0-9]` | 8.32276641185018e-05 | 5.9392133539793776e-05 | 28.64% | 40.13% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-4-byte pattern]` | 8.32660487122901e-05 | 5.95357203027742e-05 | 28.50% | 39.86% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-all byte values]` | 8.33382902102735e-05 | 5.928682291806192e-05 | 28.86% | 40.57% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-alternating 0x00/0xff]` | 8.385854682063518e-05 | 5.9107574524644834e-05 | 29.52% | 41.87% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-alternating 0xaa/0x55]` | 8.373562891255854e-05 | 5.919563051720296e-05 | 29.31% | 41.46% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-ascii sentence]` | 8.324972504221016e-05 | 5.960700651708667e-05 | 28.40% | 39.66% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'']` | 7.932016947525156e-05 | 5.7115820812438964e-05 | 27.99% | 38.88% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00'*32]` | 8.292995274155987e-05 | 5.930130663020627e-05 | 28.49% | 39.85% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00\\xff\\x00\\xff']` | 8.316279294043541e-05 | 5.9241280421108735e-05 | 28.76% | 40.38% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*100]` | 8.395639228849057e-05 | 5.923882981249348e-05 | 29.44% | 41.73% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*2048]` | 8.367936740927366e-05 | 5.964635091092003e-05 | 28.72% | 40.29% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01\\x02\\x03']` | 8.271821450137845e-05 | 6.026804526073817e-05 | 27.14% | 37.25% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.350783454886942e-05 | 5.9373796787871524e-05 | 28.90% | 40.65% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x7f'*8]` | 8.377029632135502e-05 | 5.951573868183052e-05 | 28.95% | 40.75% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x80'*8]` | 8.347913369061712e-05 | 5.935401823513363e-05 | 28.90% | 40.65% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\xde\\xad\\xbe\\xef']` | 8.25783527008288e-05 | 5.962091262378579e-05 | 27.80% | 38.51% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\xff'*64]` | 8.269321072481892e-05 | 5.9530914222902434e-05 | 28.01% | 38.91% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'a'*1024]` | 8.216836159190521e-05 | 6.119844371415817e-05 | 25.52% | 34.27% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'abc']` | 8.29193292756891e-05 | 5.9648766453563725e-05 | 28.06% | 39.01% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-long alternating]` | 8.346907949252995e-05 | 5.900201255697889e-05 | 29.31% | 41.47% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-mixed pattern]` | 8.326278403410781e-05 | 5.938259296010846e-05 | 28.68% | 40.21% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-multiples of 0x10]` | 8.341101905037474e-05 | 5.920007306769483e-05 | 29.03% | 40.90% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-palindrome ascii]` | 8.348660881494046e-05 | 5.917117532705174e-05 | 29.12% | 41.09% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-palindrome numeric]` | 8.377598217004357e-05 | 5.8259340330205355e-05 | 30.46% | 43.80% | 1.44x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-palindrome]` | 8.327757050714812e-05 | 5.942133069179488e-05 | 28.65% | 40.15% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-repeated 0-9]` | 8.417446569218182e-05 | 5.9077505804667156e-05 | 29.82% | 42.48% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-single 0xff]` | 8.096890751263667e-05 | 5.7799399363348916e-05 | 28.62% | 40.09% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-single null byte]` | 8.038271799105993e-05 | 5.741769295605544e-05 | 28.57% | 40.00% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-two patterns]` | 8.367443260409659e-05 | 5.9419627224032405e-05 | 28.99% | 40.82% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-0-9]` | 8.589274819902874e-05 | 6.0353272088903996e-05 | 29.73% | 42.32% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-4-byte pattern]` | 8.579040525059124e-05 | 6.0517280751551134e-05 | 29.46% | 41.76% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-all byte values]` | 8.490513116442084e-05 | 6.002004276790745e-05 | 29.31% | 41.46% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-alternating 0x00/0xff]` | 8.533308494723087e-05 | 5.9938315253642996e-05 | 29.76% | 42.37% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-alternating 0xaa/0x55]` | 8.547083980887567e-05 | 5.984092071035252e-05 | 29.99% | 42.83% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-ascii sentence]` | 8.60157234712693e-05 | 6.040517181753777e-05 | 29.77% | 42.40% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'']` | 8.207992622525732e-05 | 5.7769325184836234e-05 | 29.62% | 42.08% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x00'*32]` | 8.58702496313986e-05 | 6.0914847458932964e-05 | 29.06% | 40.97% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x00\\xff\\x00\\xff']` | 8.534888613834434e-05 | 6.0244062617905884e-05 | 29.41% | 41.67% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*100]` | 8.498257113583648e-05 | 6.0376828607576656e-05 | 28.95% | 40.75% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*2048]` | 8.53189279526048e-05 | 6.0724188678180417e-05 | 28.83% | 40.50% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x01\\x02\\x03']` | 8.604015703734421e-05 | 6.0794337675546786e-05 | 29.34% | 41.53% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.549712870737008e-05 | 6.003499101765047e-05 | 29.78% | 42.41% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x7f'*8]` | 8.721659776787429e-05 | 6.0805160174484554e-05 | 30.28% | 43.44% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x80'*8]` | 8.516662837251062e-05 | 6.033016034387013e-05 | 29.16% | 41.17% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\xde\\xad\\xbe\\xef']` | 8.532536349607248e-05 | 6.0219052001491885e-05 | 29.42% | 41.69% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\xff'*64]` | 8.541486666137092e-05 | 5.9944906116263294e-05 | 29.82% | 42.49% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'a'*1024]` | 8.548784568240804e-05 | 6.011608571766489e-05 | 29.68% | 42.20% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'abc']` | 8.552006648789931e-05 | 6.0293675409293205e-05 | 29.50% | 41.84% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-long alternating]` | 8.66998763987192e-05 | 6.055310680722894e-05 | 30.16% | 43.18% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-mixed pattern]` | 8.557435522353925e-05 | 6.0540797722359984e-05 | 29.25% | 41.35% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-multiples of 0x10]` | 8.519605833139771e-05 | 6.002877735239444e-05 | 29.54% | 41.93% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-palindrome ascii]` | 8.596965904345099e-05 | 6.0631485237682544e-05 | 29.47% | 41.79% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-palindrome numeric]` | 8.520965820717488e-05 | 6.0704168373619484e-05 | 28.76% | 40.37% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-palindrome]` | 8.599056234263655e-05 | 6.016072291818725e-05 | 30.04% | 42.93% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-repeated 0-9]` | 8.52051909470375e-05 | 6.061754967211224e-05 | 28.86% | 40.56% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-single 0xff]` | 8.28890693472363e-05 | 5.8539082838904596e-05 | 29.38% | 41.60% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-single null byte]` | 8.23709397664725e-05 | 5.8345155815960616e-05 | 29.17% | 41.18% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-two patterns]` | 8.566681155833708e-05 | 6.068387839699444e-05 | 29.16% | 41.17% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-0-9]` | 8.557013631360816e-05 | 5.9405515329987936e-05 | 30.58% | 44.04% | 1.44x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-4-byte pattern]` | 8.522436688243362e-05 | 5.9626118596123544e-05 | 30.04% | 42.93% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-all byte values]` | 8.512764024396662e-05 | 5.9952140702915984e-05 | 29.57% | 41.99% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-alternating 0x00/0xff]` | 8.500559724613708e-05 | 5.974098520355692e-05 | 29.72% | 42.29% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-alternating 0xaa/0x55]` | 8.525623742430138e-05 | 6.014805423029504e-05 | 29.45% | 41.74% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-ascii sentence]` | 8.408350887524309e-05 | 6.012422130986206e-05 | 28.49% | 39.85% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'']` | 8.382843727488694e-05 | 5.722731449007277e-05 | 31.73% | 46.48% | 1.46x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x00'*32]` | 8.559476491913702e-05 | 6.0490621718902786e-05 | 29.33% | 41.50% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x00\\xff\\x00\\xff']` | 8.526424844275364e-05 | 5.9710067044661e-05 | 29.97% | 42.80% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*100]` | 8.560429973253727e-05 | 6.020840682903669e-05 | 29.67% | 42.18% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*2048]` | 8.48113818854283e-05 | 5.968545731153144e-05 | 29.63% | 42.10% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x01\\x02\\x03']` | 8.5674736456771e-05 | 6.066469504960577e-05 | 29.19% | 41.23% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.493533350440145e-05 | 6.010516690905615e-05 | 29.23% | 41.31% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x7f'*8]` | 8.510780105097976e-05 | 6.038849383004164e-05 | 29.04% | 40.93% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x80'*8]` | 8.537998260930513e-05 | 5.989029554413826e-05 | 29.85% | 42.56% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\xde\\xad\\xbe\\xef']` | 8.56018688341726e-05 | 5.944772340661606e-05 | 30.55% | 44.00% | 1.44x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\xff'*64]` | 8.51548627884011e-05 | 6.046487702638672e-05 | 28.99% | 40.83% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'a'*1024]` | 8.568353813231655e-05 | 6.040461251268431e-05 | 29.50% | 41.85% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'abc']` | 8.542602842411513e-05 | 6.036451065527349e-05 | 29.34% | 41.52% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-long alternating]` | 8.458949745874604e-05 | 6.0255257901389506e-05 | 28.77% | 40.39% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-mixed pattern]` | 8.306242841405523e-05 | 6.009628290781094e-05 | 27.65% | 38.22% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-multiples of 0x10]` | 8.521217344283e-05 | 6.009221629916794e-05 | 29.48% | 41.80% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-palindrome ascii]` | 8.625153003892215e-05 | 5.998215228240877e-05 | 30.46% | 43.80% | 1.44x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-palindrome numeric]` | 8.384860176051902e-05 | 6.012112239473286e-05 | 28.30% | 39.47% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-palindrome]` | 8.554333720321167e-05 | 5.976190750682727e-05 | 30.14% | 43.14% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-repeated 0-9]` | 8.426675182364554e-05 | 6.018901363411315e-05 | 28.57% | 40.00% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-single 0xff]` | 7.96065765513371e-05 | 5.809394615242466e-05 | 27.02% | 37.03% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-single null byte]` | 8.032398525356815e-05 | 5.7965923652190144e-05 | 27.83% | 38.57% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-two patterns]` | 8.406606839157142e-05 | 6.034577512429265e-05 | 28.22% | 39.31% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-0-9]` | 8.190674649126556e-05 | 5.854445675744449e-05 | 28.52% | 39.91% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-4-byte pattern]` | 8.436722389445974e-05 | 6.0799994596595585e-05 | 27.93% | 38.76% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-all byte values]` | 8.661939225028212e-05 | 6.0775609727275464e-05 | 29.84% | 42.52% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-alternating 0x00/0xff]` | 8.309491396124049e-05 | 5.973195991565079e-05 | 28.12% | 39.11% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-alternating 0xaa/0x55]` | 8.253984613513597e-05 | 5.971091334612533e-05 | 27.66% | 38.23% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-ascii sentence]` | 8.3341431932376e-05 | 5.967265682135002e-05 | 28.40% | 39.66% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'']` | 7.881684353985629e-05 | 5.676169861042841e-05 | 27.98% | 38.86% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x00'*32]` | 8.324971387561403e-05 | 6.051674770862192e-05 | 27.31% | 37.56% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x00\\xff\\x00\\xff']` | 8.245541290454048e-05 | 5.9743096353115184e-05 | 27.54% | 38.02% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*100]` | 8.301139261550149e-05 | 6.027558843074417e-05 | 27.39% | 37.72% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*2048]` | 0.00010797276022616967 | 8.308728367426276e-05 | 23.05% | 29.95% | 1.30x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x01\\x02\\x03']` | 7.959053485863148e-05 | 5.777683327319688e-05 | 27.41% | 37.76% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.222840028762428e-05 | 5.9429699590781224e-05 | 27.73% | 38.36% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x7f'*8]` | 8.215461055463192e-05 | 5.934957960539131e-05 | 27.76% | 38.42% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x80'*8]` | 8.290044960897929e-05 | 5.947489891233341e-05 | 28.26% | 39.39% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\xde\\xad\\xbe\\xef']` | 8.977207539402503e-05 | 5.9388333822126925e-05 | 33.85% | 51.16% | 1.51x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\xff'*64]` | 8.343981791751911e-05 | 6.0098192351054565e-05 | 27.97% | 38.84% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'a'*1024]` | 0.00010281438366650724 | 7.473150524042893e-05 | 27.31% | 37.58% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'abc']` | 7.922704930416912e-05 | 5.828210827974682e-05 | 26.44% | 35.94% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-long alternating]` | 0.0001008617329858742 | 7.603772418434353e-05 | 24.61% | 32.65% | 1.33x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-mixed pattern]` | 8.445720289607102e-05 | 6.0472811128150825e-05 | 28.40% | 39.66% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-multiples of 0x10]` | 8.246743260668376e-05 | 6.125156273890022e-05 | 25.73% | 34.64% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-palindrome ascii]` | 8.316748366018358e-05 | 5.9335189927639554e-05 | 28.66% | 40.17% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-palindrome numeric]` | 8.240192479935688e-05 | 5.9188481719440463e-05 | 28.17% | 39.22% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-palindrome]` | 8.282882409882076e-05 | 5.945190133296893e-05 | 28.22% | 39.32% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-repeated 0-9]` | 8.407986504002371e-05 | 5.9798152072744695e-05 | 28.88% | 40.61% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-single 0xff]` | 7.922120280697799e-05 | 5.6935412853129575e-05 | 28.13% | 39.14% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-single null byte]` | 7.948541050228543e-05 | 5.7350042932915996e-05 | 27.85% | 38.60% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-two patterns]` | 8.339168913302604e-05 | 5.948740287373026e-05 | 28.67% | 40.18% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-0-9]` | 8.146905082244557e-05 | 5.755845256959647e-05 | 29.35% | 41.54% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-4-byte pattern]` | 8.237840233046554e-05 | 5.9310751643105504e-05 | 28.00% | 38.89% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-all byte values]` | 8.265635868290242e-05 | 5.916134133437624e-05 | 28.42% | 39.71% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-alternating 0x00/0xff]` | 8.169673806797571e-05 | 5.832842685040504e-05 | 28.60% | 40.06% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-alternating 0xaa/0x55]` | 8.185877131338807e-05 | 5.851336179867169e-05 | 28.52% | 39.90% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-ascii sentence]` | 8.192488683935511e-05 | 5.797788952938418e-05 | 29.23% | 41.30% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'']` | 7.761042719632246e-05 | 5.530506029868729e-05 | 28.74% | 40.33% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x00'*32]` | 8.372799346744341e-05 | 5.8100580887757596e-05 | 30.61% | 44.11% | 1.44x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x00\\xff\\x00\\xff']` | 8.162098637628971e-05 | 5.7446373549558824e-05 | 29.62% | 42.08% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*100]` | 8.193004183538208e-05 | 5.890377963308224e-05 | 28.10% | 39.09% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*2048]` | 0.00010641362550643201 | 7.879420639688185e-05 | 25.95% | 35.05% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x01\\x02\\x03']` | 8.190489869314932e-05 | 5.8076256524106635e-05 | 29.09% | 41.03% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.153149012586322e-05 | 5.7793750603990706e-05 | 29.11% | 41.07% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x7f'*8]` | 8.169410998190315e-05 | 5.708734804244775e-05 | 30.12% | 43.10% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x80'*8]` | 8.203530257101946e-05 | 5.6962805277869094e-05 | 30.56% | 44.02% | 1.44x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\xde\\xad\\xbe\\xef']` | 8.121518646630655e-05 | 5.755053944538901e-05 | 29.14% | 41.12% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\xff'*64]` | 8.21628200508517e-05 | 5.819491244922907e-05 | 29.17% | 41.19% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'a'*1024]` | 9.779578610550654e-05 | 7.317613872506656e-05 | 25.17% | 33.64% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'abc']` | 8.223648413879729e-05 | 5.796567843795873e-05 | 29.51% | 41.87% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-long alternating]` | 9.99245278423855e-05 | 7.298895844882583e-05 | 26.96% | 36.90% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-mixed pattern]` | 8.385222791377953e-05 | 5.823933095859904e-05 | 30.55% | 43.98% | 1.44x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-multiples of 0x10]` | 8.197195192671946e-05 | 5.648337876794043e-05 | 31.09% | 45.13% | 1.45x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-palindrome ascii]` | 8.155076945856169e-05 | 5.752301032790361e-05 | 29.46% | 41.77% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-palindrome numeric]` | 8.11165873978217e-05 | 5.781050799802059e-05 | 28.73% | 40.31% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-palindrome]` | 8.192592116868612e-05 | 5.794422635597991e-05 | 29.27% | 41.39% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-repeated 0-9]` | 8.243455492022623e-05 | 5.826076186286292e-05 | 29.32% | 41.49% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-single 0xff]` | 7.877124331271905e-05 | 5.615964382683851e-05 | 28.71% | 40.26% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-single null byte]` | 7.823631717472704e-05 | 5.6233273908239645e-05 | 28.12% | 39.13% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-two patterns]` | 8.22571312824803e-05 | 5.825821031197209e-05 | 29.18% | 41.19% | 1.41x | ✅ | +| `hexbytes_new['']` | 7.191205345480013e-05 | 3.6156903247600816e-05 | 49.72% | 98.89% | 1.99x | ✅ | +| `hexbytes_new['0x'+'00'*64]` | 9.2453591626881e-05 | 4.986079760998382e-05 | 46.07% | 85.42% | 1.85x | ✅ | +| `hexbytes_new['0x'+'a'*128]` | 9.30449618590328e-05 | 5.035942043565867e-05 | 45.88% | 84.76% | 1.85x | ✅ | +| `hexbytes_new['0x'+'ff'*32]` | 9.189116277047179e-05 | 4.7672181606842344e-05 | 48.12% | 92.76% | 1.93x | ✅ | +| `hexbytes_new['0x']` | 7.934523336677422e-05 | 3.7951552345238005e-05 | 52.17% | 109.07% | 2.09x | ✅ | +| `hexbytes_new['0x1234']` | 8.766373532885638e-05 | 4.4810808401692795e-05 | 48.88% | 95.63% | 1.96x | ✅ | +| `hexbytes_new['0xCAFEBABE']` | 8.677029505377376e-05 | 4.421178324104536e-05 | 49.05% | 96.26% | 1.96x | ✅ | +| `hexbytes_new['0xabcdef']` | 8.72536539483624e-05 | 4.5644747732748906e-05 | 47.69% | 91.16% | 1.91x | ✅ | +| `hexbytes_new['0xdeadbeef']` | 8.71303589421189e-05 | 4.562096547871489e-05 | 47.64% | 90.99% | 1.91x | ✅ | +| `hexbytes_new['abc']` | 8.39874714593401e-05 | 4.759717629870371e-05 | 43.33% | 76.45% | 1.76x | ✅ | +| `hexbytes_new['deadbeef']` | 7.859565384924951e-05 | 4.090706587795483e-05 | 47.95% | 92.13% | 1.92x | ✅ | +| `hexbytes_new[0-9]` | 4.550280969867527e-05 | 2.600225259900955e-05 | 42.86% | 75.00% | 1.75x | ✅ | +| `hexbytes_new[0]` | 0.00012408794369145557 | 6.0756829376676467e-05 | 51.04% | 104.24% | 2.04x | ✅ | +| `hexbytes_new[123456]` | 0.00012905433637957732 | 6.53093542617329e-05 | 49.39% | 97.60% | 1.98x | ✅ | +| `hexbytes_new[2**16]` | 0.0001308623769712392 | 6.552587949886654e-05 | 49.93% | 99.71% | 2.00x | ✅ | +| `hexbytes_new[2**256-1]` | 0.00013259275936302803 | 7.384774570060862e-05 | 44.30% | 79.55% | 1.80x | ✅ | +| `hexbytes_new[2**32]` | 0.00013094473797798566 | 6.90967574046993e-05 | 47.23% | 89.51% | 1.90x | ✅ | +| `hexbytes_new[2**64]` | 0.00013440956040928635 | 7.26865982088707e-05 | 45.92% | 84.92% | 1.85x | ✅ | +| `hexbytes_new[2**8]` | 0.00012641292708056402 | 6.330106925262815e-05 | 49.93% | 99.70% | 2.00x | ✅ | +| `hexbytes_new[4-byte pattern]` | 4.362004045280963e-05 | 2.6911734961396298e-05 | 38.30% | 62.09% | 1.62x | ✅ | +| `hexbytes_new[False]` | 6.0645945934053214e-05 | 2.716958239118988e-05 | 55.20% | 123.21% | 2.23x | ✅ | +| `hexbytes_new[True]` | 6.0334158166627326e-05 | 2.7415235748202844e-05 | 54.56% | 120.08% | 2.20x | ✅ | +| `hexbytes_new[all byte values]` | 4.3911377734017934e-05 | 2.683600095969989e-05 | 38.89% | 63.63% | 1.64x | ✅ | +| `hexbytes_new[alternating 0x00/0xff]` | 4.3920513293090255e-05 | 2.650232187292285e-05 | 39.66% | 65.72% | 1.66x | ✅ | +| `hexbytes_new[alternating 0xaa/0x55]` | 4.374538487079925e-05 | 2.6760241886215845e-05 | 38.83% | 63.47% | 1.63x | ✅ | +| `hexbytes_new[ascii sentence]` | 4.3676776314734305e-05 | 2.6376644958874928e-05 | 39.61% | 65.59% | 1.66x | ✅ | +| `hexbytes_new[b'']` | 4.5212016050316594e-05 | 2.57385698341687e-05 | 43.07% | 75.66% | 1.76x | ✅ | +| `hexbytes_new[b'\\x00'*32]` | 4.301393312270818e-05 | 2.609798466363096e-05 | 39.33% | 64.82% | 1.65x | ✅ | +| `hexbytes_new[b'\\x00\\xff\\x00\\xff']` | 4.5741936285582744e-05 | 2.611775215526315e-05 | 42.90% | 75.14% | 1.75x | ✅ | +| `hexbytes_new[b'\\x01'*100]` | 4.436460663753062e-05 | 2.6372541342750785e-05 | 40.55% | 68.22% | 1.68x | ✅ | +| `hexbytes_new[b'\\x01'*2048]` | 5.6242055704242035e-05 | 3.868517878441558e-05 | 31.22% | 45.38% | 1.45x | ✅ | +| `hexbytes_new[b'\\x01\\x02\\x03']` | 4.5466731817215816e-05 | 2.6071107403941655e-05 | 42.66% | 74.40% | 1.74x | ✅ | +| `hexbytes_new[b'\\x10\\x20\\x30\\x40\\x50']` | 4.616272798162098e-05 | 2.6144821919931078e-05 | 43.36% | 76.57% | 1.77x | ✅ | +| `hexbytes_new[b'\\x7f'*8]` | 4.4995454377686266e-05 | 2.6062086965096205e-05 | 42.08% | 72.65% | 1.73x | ✅ | +| `hexbytes_new[b'\\x80'*8]` | 4.495119586956768e-05 | 2.6075722268845037e-05 | 41.99% | 72.39% | 1.72x | ✅ | +| `hexbytes_new[b'\\xde\\xad\\xbe\\xef']` | 4.563272356212131e-05 | 2.598826341701107e-05 | 43.05% | 75.59% | 1.76x | ✅ | +| `hexbytes_new[b'\\xff'*64]` | 4.3420740426716346e-05 | 2.6498633518126992e-05 | 38.97% | 63.86% | 1.64x | ✅ | +| `hexbytes_new[b'a'*1024]` | 5.002392545033268e-05 | 3.2804967738388224e-05 | 34.42% | 52.49% | 1.52x | ✅ | +| `hexbytes_new[b'abc']` | 4.5148190163270386e-05 | 2.600176582178445e-05 | 42.41% | 73.64% | 1.74x | ✅ | +| `hexbytes_new[bytearray(0-9)]` | 6.96947702157491e-05 | 3.71017329527819e-05 | 46.77% | 87.85% | 1.88x | ✅ | +| `hexbytes_new[bytearray(4-byte pattern)]` | 7.010664958985715e-05 | 3.790294929582462e-05 | 45.94% | 84.96% | 1.85x | ✅ | +| `hexbytes_new[bytearray(all byte values)]` | 6.967078730103361e-05 | 3.8109291801591446e-05 | 45.30% | 82.82% | 1.83x | ✅ | +| `hexbytes_new[bytearray(alternating 0x00/0xff)]` | 7.007854018675634e-05 | 3.761663889094393e-05 | 46.32% | 86.30% | 1.86x | ✅ | +| `hexbytes_new[bytearray(alternating 0xaa/0x55)]` | 6.96436705358402e-05 | 3.774757739187778e-05 | 45.80% | 84.50% | 1.84x | ✅ | +| `hexbytes_new[bytearray(ascii sentence)]` | 6.962337941622524e-05 | 3.705490452386085e-05 | 46.78% | 87.89% | 1.88x | ✅ | +| `hexbytes_new[bytearray(b'')]` | 6.915907194889651e-05 | 3.503701450349708e-05 | 49.34% | 97.39% | 1.97x | ✅ | +| `hexbytes_new[bytearray(b'\\x00'*32)]` | 6.957097014361838e-05 | 3.7377601858369035e-05 | 46.27% | 86.13% | 1.86x | ✅ | +| `hexbytes_new[bytearray(b'\\x00\\xff\\x00\\xff')]` | 7.081247841455098e-05 | 3.738965960156375e-05 | 47.20% | 89.39% | 1.89x | ✅ | +| `hexbytes_new[bytearray(b'\\x01'*100)]` | 7.010073897005398e-05 | 3.775960091661915e-05 | 46.14% | 85.65% | 1.86x | ✅ | +| `hexbytes_new[bytearray(b'\\x01'*2048)]` | 8.961822545748723e-05 | 5.464359891879814e-05 | 39.03% | 64.00% | 1.64x | ✅ | +| `hexbytes_new[bytearray(b'\\x01\\x02\\x03')]` | 7.013884875778293e-05 | 3.7465587465318865e-05 | 46.58% | 87.21% | 1.87x | ✅ | +| `hexbytes_new[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 6.91977893180953e-05 | 3.704874651605604e-05 | 46.46% | 86.77% | 1.87x | ✅ | +| `hexbytes_new[bytearray(b'\\x7f'*8)]` | 7.092748527113357e-05 | 3.722132162648545e-05 | 47.52% | 90.56% | 1.91x | ✅ | +| `hexbytes_new[bytearray(b'\\x80'*8)]` | 6.827195363601445e-05 | 3.7220926812601647e-05 | 45.48% | 83.42% | 1.83x | ✅ | +| `hexbytes_new[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 7.031970628483075e-05 | 3.741012712943005e-05 | 46.80% | 87.97% | 1.88x | ✅ | +| `hexbytes_new[bytearray(b'\\xff'*64)]` | 6.887530216052492e-05 | 3.869579081019998e-05 | 43.82% | 77.99% | 1.78x | ✅ | +| `hexbytes_new[bytearray(b'a'*1024)]` | 8.530271796528696e-05 | 5.0831526755599075e-05 | 40.41% | 67.81% | 1.68x | ✅ | +| `hexbytes_new[bytearray(b'abc')]` | 7.005153568871182e-05 | 3.729871524484331e-05 | 46.76% | 87.81% | 1.88x | ✅ | +| `hexbytes_new[bytearray(long alternating)]` | 8.43192647520283e-05 | 4.897102229573958e-05 | 41.92% | 72.18% | 1.72x | ✅ | +| `hexbytes_new[bytearray(mixed pattern)]` | 6.951866148905018e-05 | 3.7780212591029484e-05 | 45.65% | 84.01% | 1.84x | ✅ | +| `hexbytes_new[bytearray(multiples of 0x10)]` | 6.850446294415748e-05 | 3.697705565146936e-05 | 46.02% | 85.26% | 1.85x | ✅ | +| `hexbytes_new[bytearray(palindrome ascii)]` | 6.930157517814214e-05 | 3.731926540409419e-05 | 46.15% | 85.70% | 1.86x | ✅ | +| `hexbytes_new[bytearray(palindrome numeric)]` | 6.873471147844537e-05 | 3.720466446451209e-05 | 45.87% | 84.75% | 1.85x | ✅ | +| `hexbytes_new[bytearray(palindrome)]` | 7.047387678378979e-05 | 3.7516632979952807e-05 | 46.77% | 87.85% | 1.88x | ✅ | +| `hexbytes_new[bytearray(repeated 0-9)]` | 6.910517965350705e-05 | 3.772831566686903e-05 | 45.40% | 83.17% | 1.83x | ✅ | +| `hexbytes_new[bytearray(single 0xff)]` | 6.9735995678985e-05 | 3.752950268569966e-05 | 46.18% | 85.82% | 1.86x | ✅ | +| `hexbytes_new[bytearray(single null byte)]` | 7.019922904370778e-05 | 3.7446669235222476e-05 | 46.66% | 87.46% | 1.87x | ✅ | +| `hexbytes_new[bytearray(two patterns)]` | 6.850404063635144e-05 | 3.770531425648953e-05 | 44.96% | 81.68% | 1.82x | ✅ | +| `hexbytes_new[long alternating]` | 5.064790425410023e-05 | 3.27166835765398e-05 | 35.40% | 54.81% | 1.55x | ✅ | +| `hexbytes_new[memoryview(0-9)]` | 8.259924141523795e-05 | 4.3249196441611925e-05 | 47.64% | 90.98% | 1.91x | ✅ | +| `hexbytes_new[memoryview(4-byte pattern)]` | 8.421811841988154e-05 | 4.326109602672626e-05 | 48.63% | 94.67% | 1.95x | ✅ | +| `hexbytes_new[memoryview(all byte values)]` | 8.502828590720312e-05 | 4.336502484507728e-05 | 49.00% | 96.08% | 1.96x | ✅ | +| `hexbytes_new[memoryview(alternating 0x00/0xff)]` | 8.337381691198904e-05 | 4.283239907286774e-05 | 48.63% | 94.65% | 1.95x | ✅ | +| `hexbytes_new[memoryview(alternating 0xaa/0x55)]` | 8.331452945275645e-05 | 4.2435043783499907e-05 | 49.07% | 96.33% | 1.96x | ✅ | +| `hexbytes_new[memoryview(ascii sentence)]` | 8.39356600050079e-05 | 4.2782069134518204e-05 | 49.03% | 96.19% | 1.96x | ✅ | +| `hexbytes_new[memoryview(b'')]` | 8.115164625990701e-05 | 3.9676029740172826e-05 | 51.11% | 104.54% | 2.05x | ✅ | +| `hexbytes_new[memoryview(b'\\x00'*32)]` | 8.272360570065305e-05 | 4.309540089200309e-05 | 47.90% | 91.95% | 1.92x | ✅ | +| `hexbytes_new[memoryview(b'\\x00\\xff\\x00\\xff')]` | 8.273753171139944e-05 | 4.286367576630053e-05 | 48.19% | 93.02% | 1.93x | ✅ | +| `hexbytes_new[memoryview(b'\\x01'*100)]` | 8.317839379567048e-05 | 4.297396369450455e-05 | 48.34% | 93.56% | 1.94x | ✅ | +| `hexbytes_new[memoryview(b'\\x01'*2048)]` | 0.00010384068753392566 | 6.21602480474859e-05 | 40.14% | 67.05% | 1.67x | ✅ | +| `hexbytes_new[memoryview(b'\\x01\\x02\\x03')]` | 8.328504356153329e-05 | 4.2895335876753366e-05 | 48.50% | 94.16% | 1.94x | ✅ | +| `hexbytes_new[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 8.401971848259507e-05 | 4.273402649331273e-05 | 49.14% | 96.61% | 1.97x | ✅ | +| `hexbytes_new[memoryview(b'\\x7f'*8)]` | 8.267212937830791e-05 | 4.342589005250742e-05 | 47.47% | 90.38% | 1.90x | ✅ | +| `hexbytes_new[memoryview(b'\\x80'*8)]` | 8.115790310181659e-05 | 4.342896920724569e-05 | 46.49% | 86.88% | 1.87x | ✅ | +| `hexbytes_new[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 8.343541754048697e-05 | 4.302937347274966e-05 | 48.43% | 93.90% | 1.94x | ✅ | +| `hexbytes_new[memoryview(b'\\xff'*64)]` | 8.166308316540824e-05 | 4.30550504360115e-05 | 47.28% | 89.67% | 1.90x | ✅ | +| `hexbytes_new[memoryview(b'a'*1024)]` | 9.870087881891286e-05 | 5.583071029244206e-05 | 43.43% | 76.79% | 1.77x | ✅ | +| `hexbytes_new[memoryview(b'abc')]` | 8.393499147773037e-05 | 4.2360970574565455e-05 | 49.53% | 98.14% | 1.98x | ✅ | +| `hexbytes_new[memoryview(long alternating)]` | 9.827908276403593e-05 | 5.620402002457057e-05 | 42.81% | 74.86% | 1.75x | ✅ | +| `hexbytes_new[memoryview(mixed pattern)]` | 8.423481251123282e-05 | 4.2936700948622235e-05 | 49.03% | 96.18% | 1.96x | ✅ | +| `hexbytes_new[memoryview(multiples of 0x10)]` | 8.225366369649692e-05 | 4.317243844163413e-05 | 47.51% | 90.52% | 1.91x | ✅ | +| `hexbytes_new[memoryview(palindrome ascii)]` | 8.394170653496689e-05 | 4.2845723537889474e-05 | 48.96% | 95.92% | 1.96x | ✅ | +| `hexbytes_new[memoryview(palindrome numeric)]` | 8.318085751424985e-05 | 4.2501938486879665e-05 | 48.90% | 95.71% | 1.96x | ✅ | +| `hexbytes_new[memoryview(palindrome)]` | 8.502180491960375e-05 | 4.299385413145483e-05 | 49.43% | 97.75% | 1.98x | ✅ | +| `hexbytes_new[memoryview(repeated 0-9)]` | 8.517594143493324e-05 | 4.3122918266756394e-05 | 49.37% | 97.52% | 1.98x | ✅ | +| `hexbytes_new[memoryview(single 0xff)]` | 8.446110874919173e-05 | 4.285124015974651e-05 | 49.27% | 97.10% | 1.97x | ✅ | +| `hexbytes_new[memoryview(single null byte)]` | 8.357215066529933e-05 | 4.247278935869429e-05 | 49.18% | 96.77% | 1.97x | ✅ | +| `hexbytes_new[memoryview(two patterns)]` | 8.402022805770297e-05 | 4.27182187528165e-05 | 49.16% | 96.68% | 1.97x | ✅ | +| `hexbytes_new[mixed pattern]` | 4.358574530954181e-05 | 2.6702209604829674e-05 | 38.74% | 63.23% | 1.63x | ✅ | +| `hexbytes_new[multiples of 0x10]` | 4.5985371040188524e-05 | 2.609839182406303e-05 | 43.25% | 76.20% | 1.76x | ✅ | +| `hexbytes_new[palindrome ascii]` | 4.542694188400667e-05 | 2.594903133094324e-05 | 42.88% | 75.06% | 1.75x | ✅ | +| `hexbytes_new[palindrome numeric]` | 4.5533104144037265e-05 | 2.6038983941374473e-05 | 42.81% | 74.87% | 1.75x | ✅ | +| `hexbytes_new[palindrome]` | 4.566038611121606e-05 | 2.615134731450359e-05 | 42.73% | 74.60% | 1.75x | ✅ | +| `hexbytes_new[repeated 0-9]` | 4.35884506685385e-05 | 2.6468024469762155e-05 | 39.28% | 64.68% | 1.65x | ✅ | +| `hexbytes_new[single 0xff]` | 4.492678251455585e-05 | 2.5878347592516068e-05 | 42.40% | 73.61% | 1.74x | ✅ | +| `hexbytes_new[single null byte]` | 4.514802924713938e-05 | 2.58225828864893e-05 | 42.80% | 74.84% | 1.75x | ✅ | +| `hexbytes_new[two patterns]` | 4.3448333194963355e-05 | 2.6585952091118598e-05 | 38.81% | 63.43% | 1.63x | ✅ | +| `hexbytes_repr[0-9]` | 2.90917062480457e-05 | 1.4891940895303129e-05 | 48.81% | 95.35% | 1.95x | ✅ | +| `hexbytes_repr[4-byte pattern]` | 0.00011971625384044225 | 4.066434470590167e-05 | 66.03% | 194.40% | 2.94x | ✅ | +| `hexbytes_repr[all byte values]` | 0.00011980209942103418 | 4.0952586968401107e-05 | 65.82% | 192.54% | 2.93x | ✅ | +| `hexbytes_repr[alternating 0x00/0xff]` | 4.877746835484394e-05 | 2.017249572309728e-05 | 58.64% | 141.80% | 2.42x | ✅ | +| `hexbytes_repr[alternating 0xaa/0x55]` | 4.8921292559526905e-05 | 2.0702599071843557e-05 | 57.68% | 136.31% | 2.36x | ✅ | +| `hexbytes_repr[ascii sentence]` | 4.0663303363781104e-05 | 1.829174674269637e-05 | 55.02% | 122.30% | 2.22x | ✅ | +| `hexbytes_repr[b'']` | 2.1423255966738722e-05 | 1.2485745617730196e-05 | 41.72% | 71.58% | 1.72x | ✅ | +| `hexbytes_repr[b'\\x00'*32]` | 3.668725209629936e-05 | 1.713188272425832e-05 | 53.30% | 114.15% | 2.14x | ✅ | +| `hexbytes_repr[b'\\x00\\xff\\x00\\xff']` | 2.6460860454927108e-05 | 1.4226364154586392e-05 | 46.24% | 86.00% | 1.86x | ✅ | +| `hexbytes_repr[b'\\x01'*100]` | 6.181529100321468e-05 | 2.3799380239366954e-05 | 61.50% | 159.73% | 2.60x | ✅ | +| `hexbytes_repr[b'\\x01'*2048]` | 0.0007614429280748219 | 0.00022326650460278 | 70.68% | 241.05% | 3.41x | ✅ | +| `hexbytes_repr[b'\\x01\\x02\\x03']` | 2.611378302187971e-05 | 1.42731660378973e-05 | 45.34% | 82.96% | 1.83x | ✅ | +| `hexbytes_repr[b'\\x10\\x20\\x30\\x40\\x50']` | 2.680525743059527e-05 | 1.4178100169254488e-05 | 47.11% | 89.06% | 1.89x | ✅ | +| `hexbytes_repr[b'\\x7f'*8]` | 2.8219841029493324e-05 | 1.4588338953195674e-05 | 48.30% | 93.44% | 1.93x | ✅ | +| `hexbytes_repr[b'\\x80'*8]` | 2.837019625680039e-05 | 1.4704814737548184e-05 | 48.17% | 92.93% | 1.93x | ✅ | +| `hexbytes_repr[b'\\xde\\xad\\xbe\\xef']` | 2.6383961637081323e-05 | 1.406136358049372e-05 | 46.70% | 87.63% | 1.88x | ✅ | +| `hexbytes_repr[b'\\xff'*64]` | 4.8781932533750604e-05 | 2.0134414260777473e-05 | 58.73% | 142.28% | 2.42x | ✅ | +| `hexbytes_repr[b'a'*1024]` | 0.00039861062091936923 | 0.00011896985405342659 | 70.15% | 235.05% | 3.35x | ✅ | +| `hexbytes_repr[b'abc']` | 2.628475519274224e-05 | 1.4315050134941631e-05 | 45.54% | 83.62% | 1.84x | ✅ | +| `hexbytes_repr[long alternating]` | 0.0003979663907263547 | 0.0001228467701204065 | 69.13% | 223.95% | 3.24x | ✅ | +| `hexbytes_repr[mixed pattern]` | 9.7913006214038e-05 | 3.399208503061899e-05 | 65.28% | 188.05% | 2.88x | ✅ | +| `hexbytes_repr[multiples of 0x10]` | 2.8965290377602712e-05 | 1.4834659482516764e-05 | 48.78% | 95.25% | 1.95x | ✅ | +| `hexbytes_repr[palindrome ascii]` | 2.7695533751385868e-05 | 1.4505520739620352e-05 | 47.63% | 90.93% | 1.91x | ✅ | +| `hexbytes_repr[palindrome numeric]` | 2.7115952890482598e-05 | 1.4305379216417575e-05 | 47.24% | 89.55% | 1.90x | ✅ | +| `hexbytes_repr[palindrome]` | 3.1926683114550975e-05 | 1.578801466263184e-05 | 50.55% | 102.22% | 2.02x | ✅ | +| `hexbytes_repr[repeated 0-9]` | 6.193758389401909e-05 | 2.395005739659018e-05 | 61.33% | 158.61% | 2.59x | ✅ | +| `hexbytes_repr[single 0xff]` | 2.568116981167715e-05 | 1.3752781280746002e-05 | 46.45% | 86.73% | 1.87x | ✅ | +| `hexbytes_repr[single null byte]` | 2.569787108573903e-05 | 1.3965290934070544e-05 | 45.66% | 84.01% | 1.84x | ✅ | +| `hexbytes_repr[two patterns]` | 4.876871993542943e-05 | 2.015990358348897e-05 | 58.66% | 141.91% | 2.42x | ✅ | +| `hexbytes_to_0x_hex[0-9]` | 1.546978882659725e-05 | 1.3896885308674311e-05 | 10.17% | 11.32% | 1.11x | ✅ | +| `hexbytes_to_0x_hex[4-byte pattern]` | 4.197563585590553e-05 | 3.942983815323764e-05 | 6.06% | 6.46% | 1.06x | ✅ | +| `hexbytes_to_0x_hex[all byte values]` | 4.203846115061454e-05 | 3.973475141840655e-05 | 5.48% | 5.80% | 1.06x | ✅ | +| `hexbytes_to_0x_hex[alternating 0x00/0xff]` | 2.061345740868597e-05 | 1.8849604994256886e-05 | 8.56% | 9.36% | 1.09x | ✅ | +| `hexbytes_to_0x_hex[alternating 0xaa/0x55]` | 2.1034556258913767e-05 | 1.8993906962346065e-05 | 9.70% | 10.74% | 1.11x | ✅ | +| `hexbytes_to_0x_hex[ascii sentence]` | 1.8875813815466942e-05 | 1.7198966687540505e-05 | 8.88% | 9.75% | 1.10x | ✅ | +| `hexbytes_to_0x_hex[b'']` | 1.0187843418930654e-05 | 1.146381534799183e-05 | -12.52% | -11.13% | 0.89x | ❌ | +| `hexbytes_to_0x_hex[b'\\x00'*32]` | 1.7761525834716025e-05 | 1.5999200078484397e-05 | 9.92% | 11.02% | 1.11x | ✅ | +| `hexbytes_to_0x_hex[b'\\x00\\xff\\x00\\xff']` | 1.491279167519561e-05 | 1.3187113551675205e-05 | 11.57% | 13.09% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[b'\\x01'*100]` | 2.5307246640760228e-05 | 2.2900483468102752e-05 | 9.51% | 10.51% | 1.11x | ✅ | +| `hexbytes_to_0x_hex[b'\\x01'*2048]` | 0.00022203437311137995 | 0.00022395427718314203 | -0.86% | -0.86% | 0.99x | ❌ | +| `hexbytes_to_0x_hex[b'\\x01\\x02\\x03']` | 1.4820425255525232e-05 | 1.3184821091019296e-05 | 11.04% | 12.41% | 1.12x | ✅ | +| `hexbytes_to_0x_hex[b'\\x10\\x20\\x30\\x40\\x50']` | 1.4995496346233545e-05 | 1.321709792754367e-05 | 11.86% | 13.46% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[b'\\x7f'*8]` | 1.5384478660719788e-05 | 1.3595138155271592e-05 | 11.63% | 13.16% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[b'\\x80'*8]` | 1.5282176594059864e-05 | 1.3556489689269711e-05 | 11.29% | 12.73% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[b'\\xde\\xad\\xbe\\xef']` | 1.4950046576285572e-05 | 1.3164590514630685e-05 | 11.94% | 13.56% | 1.14x | ✅ | +| `hexbytes_to_0x_hex[b'\\xff'*64]` | 2.0585464319793074e-05 | 1.9116413035709033e-05 | 7.14% | 7.68% | 1.08x | ✅ | +| `hexbytes_to_0x_hex[b'a'*1024]` | 0.00012262134610012176 | 0.00012103434681815538 | 1.29% | 1.31% | 1.01x | ✅ | +| `hexbytes_to_0x_hex[b'abc']` | 1.4883331621779883e-05 | 1.3139927004937988e-05 | 11.71% | 13.27% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[long alternating]` | 0.00012271264979629563 | 0.00012163735934798776 | 0.88% | 0.88% | 1.01x | ✅ | +| `hexbytes_to_0x_hex[mixed pattern]` | 3.518972816544199e-05 | 3.345415831964962e-05 | 4.93% | 5.19% | 1.05x | ✅ | +| `hexbytes_to_0x_hex[multiples of 0x10]` | 1.5515474278699935e-05 | 1.3754441581482815e-05 | 11.35% | 12.80% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[palindrome ascii]` | 1.523780388983388e-05 | 1.3442734337496116e-05 | 11.78% | 13.35% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[palindrome numeric]` | 1.5001470322697928e-05 | 1.3255464347376665e-05 | 11.64% | 13.17% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[palindrome]` | 1.6391737335853485e-05 | 1.490631471786646e-05 | 9.06% | 9.97% | 1.10x | ✅ | +| `hexbytes_to_0x_hex[repeated 0-9]` | 2.5399863287419973e-05 | 2.291752748305005e-05 | 9.77% | 10.83% | 1.11x | ✅ | +| `hexbytes_to_0x_hex[single 0xff]` | 1.4561474537362167e-05 | 1.2885793476890897e-05 | 11.51% | 13.00% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[single null byte]` | 1.4769295355417153e-05 | 1.2796363356841186e-05 | 13.36% | 15.42% | 1.15x | ✅ | +| `hexbytes_to_0x_hex[two patterns]` | 2.0578869953624934e-05 | 1.907937672056507e-05 | 7.29% | 7.86% | 1.08x | ✅ | From b24533a4c14075468b3b4f055abdd39e26f8357d Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Tue, 14 Oct 2025 22:56:22 -0400 Subject: [PATCH 94/98] chore: set mypyc group name (#36) --- .github/workflows/compile.yaml | 5 ++++- ...13d6a7ddf.c => __native_faster_hexbytes.c} | 22 +++++++++---------- ...13d6a7ddf.h => __native_faster_hexbytes.h} | 4 ++-- ....h => __native_internal_faster_hexbytes.h} | 6 ++--- build/faster_hexbytes.c | 4 ++-- build/faster_hexbytes/_utils.c | 4 ++-- build/faster_hexbytes/main.c | 4 ++-- setup.py | 6 ++++- 8 files changed, 31 insertions(+), 24 deletions(-) rename build/{__native_6a32f4913d613d6a7ddf.c => __native_faster_hexbytes.c} (99%) rename build/{__native_6a32f4913d613d6a7ddf.h => __native_faster_hexbytes.h} (94%) rename build/{__native_internal_6a32f4913d613d6a7ddf.h => __native_internal_faster_hexbytes.h} (97%) diff --git a/.github/workflows/compile.yaml b/.github/workflows/compile.yaml index c625eca..8a43f5f 100644 --- a/.github/workflows/compile.yaml +++ b/.github/workflows/compile.yaml @@ -42,7 +42,10 @@ jobs: with: path: .mypy_cache key: mypy-cache-${{ runner.os }}-x64-${{ hashFiles('**/*.py', 'pyproject.toml') }} - + + - name: Delete existing build files + run: rm -rf build + - name: Install Faster Hexbytes env: MYPYC_STRICT_DUNDER_TYPING: 1 diff --git a/build/__native_6a32f4913d613d6a7ddf.c b/build/__native_faster_hexbytes.c similarity index 99% rename from build/__native_6a32f4913d613d6a7ddf.c rename to build/__native_faster_hexbytes.c index c73096d..11d0949 100644 --- a/build/__native_6a32f4913d613d6a7ddf.c +++ b/build/__native_faster_hexbytes.c @@ -16,8 +16,8 @@ #include "misc_ops.c" #include "generic_ops.c" #include "pythonsupport.c" -#include "__native_6a32f4913d613d6a7ddf.h" -#include "__native_internal_6a32f4913d613d6a7ddf.h" +#include "__native_faster_hexbytes.h" +#include "__native_internal_faster_hexbytes.h" static PyMethodDef faster_hexbytesmodule_methods[] = { {NULL, NULL, 0, NULL} }; @@ -3543,14 +3543,14 @@ tuple_T2OT2OO CPyDef_main_____reduce___3_HexBytes_obj_____call__(PyObject *cpy_r PyObject *CPyPy_main_____reduce___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames); char CPyDef_main_____top_level__(void); -static int exec_6a32f4913d613d6a7ddf__mypyc(PyObject *module) +static int exec_faster_hexbytes__mypyc(PyObject *module) { int res; PyObject *capsule; PyObject *tmp; extern PyObject *CPyInit_faster_hexbytes(void); - capsule = PyCapsule_New((void *)CPyInit_faster_hexbytes, "6a32f4913d613d6a7ddf__mypyc.init_faster_hexbytes", NULL); + capsule = PyCapsule_New((void *)CPyInit_faster_hexbytes, "faster_hexbytes__mypyc.init_faster_hexbytes", NULL); if (!capsule) { goto fail; } @@ -3561,7 +3561,7 @@ static int exec_6a32f4913d613d6a7ddf__mypyc(PyObject *module) } extern PyObject *CPyInit_faster_hexbytes____utils(void); - capsule = PyCapsule_New((void *)CPyInit_faster_hexbytes____utils, "6a32f4913d613d6a7ddf__mypyc.init_faster_hexbytes____utils", NULL); + capsule = PyCapsule_New((void *)CPyInit_faster_hexbytes____utils, "faster_hexbytes__mypyc.init_faster_hexbytes____utils", NULL); if (!capsule) { goto fail; } @@ -3572,7 +3572,7 @@ static int exec_6a32f4913d613d6a7ddf__mypyc(PyObject *module) } extern PyObject *CPyInit_faster_hexbytes___main(void); - capsule = PyCapsule_New((void *)CPyInit_faster_hexbytes___main, "6a32f4913d613d6a7ddf__mypyc.init_faster_hexbytes___main", NULL); + capsule = PyCapsule_New((void *)CPyInit_faster_hexbytes___main, "faster_hexbytes__mypyc.init_faster_hexbytes___main", NULL); if (!capsule) { goto fail; } @@ -3586,24 +3586,24 @@ static int exec_6a32f4913d613d6a7ddf__mypyc(PyObject *module) fail: return -1; } -static PyModuleDef module_def_6a32f4913d613d6a7ddf__mypyc = { +static PyModuleDef module_def_faster_hexbytes__mypyc = { PyModuleDef_HEAD_INIT, - .m_name = "6a32f4913d613d6a7ddf__mypyc", + .m_name = "faster_hexbytes__mypyc", .m_doc = NULL, .m_size = -1, .m_methods = NULL, }; -PyMODINIT_FUNC PyInit_6a32f4913d613d6a7ddf__mypyc(void) { +PyMODINIT_FUNC PyInit_faster_hexbytes__mypyc(void) { static PyObject *module = NULL; if (module) { Py_INCREF(module); return module; } - module = PyModule_Create(&module_def_6a32f4913d613d6a7ddf__mypyc); + module = PyModule_Create(&module_def_faster_hexbytes__mypyc); if (!module) { return NULL; } - if (exec_6a32f4913d613d6a7ddf__mypyc(module) < 0) { + if (exec_faster_hexbytes__mypyc(module) < 0) { Py_DECREF(module); return NULL; } diff --git a/build/__native_6a32f4913d613d6a7ddf.h b/build/__native_faster_hexbytes.h similarity index 94% rename from build/__native_6a32f4913d613d6a7ddf.h rename to build/__native_faster_hexbytes.h index d1ad01d..6b5b2ac 100644 --- a/build/__native_6a32f4913d613d6a7ddf.h +++ b/build/__native_faster_hexbytes.h @@ -1,5 +1,5 @@ -#ifndef MYPYC_NATIVE_6a32f4913d613d6a7ddf_H -#define MYPYC_NATIVE_6a32f4913d613d6a7ddf_H +#ifndef MYPYC_NATIVE_faster_hexbytes_H +#define MYPYC_NATIVE_faster_hexbytes_H #include #include #ifndef MYPYC_DECLARED_tuple_T2OO diff --git a/build/__native_internal_6a32f4913d613d6a7ddf.h b/build/__native_internal_faster_hexbytes.h similarity index 97% rename from build/__native_internal_6a32f4913d613d6a7ddf.h rename to build/__native_internal_faster_hexbytes.h index a093531..3473122 100644 --- a/build/__native_internal_6a32f4913d613d6a7ddf.h +++ b/build/__native_internal_faster_hexbytes.h @@ -1,8 +1,8 @@ -#ifndef MYPYC_NATIVE_INTERNAL_6a32f4913d613d6a7ddf_H -#define MYPYC_NATIVE_INTERNAL_6a32f4913d613d6a7ddf_H +#ifndef MYPYC_NATIVE_INTERNAL_faster_hexbytes_H +#define MYPYC_NATIVE_INTERNAL_faster_hexbytes_H #include #include -#include "__native_6a32f4913d613d6a7ddf.h" +#include "__native_faster_hexbytes.h" int CPyGlobalsInit(void); diff --git a/build/faster_hexbytes.c b/build/faster_hexbytes.c index c0722af..f3a5670 100644 --- a/build/faster_hexbytes.c +++ b/build/faster_hexbytes.c @@ -7,11 +7,11 @@ PyMODINIT_FUNC PyInit_faster_hexbytes(void) { PyObject *tmp; - if (!(tmp = PyImport_ImportModule("6a32f4913d613d6a7ddf__mypyc"))) return NULL; + if (!(tmp = PyImport_ImportModule("faster_hexbytes__mypyc"))) return NULL; PyObject *capsule = PyObject_GetAttrString(tmp, "init_faster_hexbytes"); Py_DECREF(tmp); if (capsule == NULL) return NULL; - void *init_func = PyCapsule_GetPointer(capsule, "6a32f4913d613d6a7ddf__mypyc.init_faster_hexbytes"); + void *init_func = PyCapsule_GetPointer(capsule, "faster_hexbytes__mypyc.init_faster_hexbytes"); Py_DECREF(capsule); if (!init_func) { return NULL; diff --git a/build/faster_hexbytes/_utils.c b/build/faster_hexbytes/_utils.c index d9858f5..466da50 100644 --- a/build/faster_hexbytes/_utils.c +++ b/build/faster_hexbytes/_utils.c @@ -4,11 +4,11 @@ PyMODINIT_FUNC PyInit__utils(void) { PyObject *tmp; - if (!(tmp = PyImport_ImportModule("6a32f4913d613d6a7ddf__mypyc"))) return NULL; + if (!(tmp = PyImport_ImportModule("faster_hexbytes__mypyc"))) return NULL; PyObject *capsule = PyObject_GetAttrString(tmp, "init_faster_hexbytes____utils"); Py_DECREF(tmp); if (capsule == NULL) return NULL; - void *init_func = PyCapsule_GetPointer(capsule, "6a32f4913d613d6a7ddf__mypyc.init_faster_hexbytes____utils"); + void *init_func = PyCapsule_GetPointer(capsule, "faster_hexbytes__mypyc.init_faster_hexbytes____utils"); Py_DECREF(capsule); if (!init_func) { return NULL; diff --git a/build/faster_hexbytes/main.c b/build/faster_hexbytes/main.c index 12ae3ec..54a5b09 100644 --- a/build/faster_hexbytes/main.c +++ b/build/faster_hexbytes/main.c @@ -4,11 +4,11 @@ PyMODINIT_FUNC PyInit_main(void) { PyObject *tmp; - if (!(tmp = PyImport_ImportModule("6a32f4913d613d6a7ddf__mypyc"))) return NULL; + if (!(tmp = PyImport_ImportModule("faster_hexbytes__mypyc"))) return NULL; PyObject *capsule = PyObject_GetAttrString(tmp, "init_faster_hexbytes___main"); Py_DECREF(tmp); if (capsule == NULL) return NULL; - void *init_func = PyCapsule_GetPointer(capsule, "6a32f4913d613d6a7ddf__mypyc.init_faster_hexbytes___main"); + void *init_func = PyCapsule_GetPointer(capsule, "faster_hexbytes__mypyc.init_faster_hexbytes___main"); Py_DECREF(capsule); if (!init_func) { return NULL; diff --git a/setup.py b/setup.py index f652c97..2675066 100644 --- a/setup.py +++ b/setup.py @@ -53,7 +53,11 @@ if skip_mypyc: ext_modules = [] else: - ext_modules = mypycify(["faster_hexbytes/", "--strict", "--pretty"], strict_dunder_typing=True) + ext_modules = mypycify( + ["faster_hexbytes/", "--strict", "--pretty"], + group_name="faster_hexbytes", + strict_dunder_typing=True, + ) setup( From 53d3878ca13e1262056a6816bc491071693b6514 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 15 Oct 2025 03:52:57 +0000 Subject: [PATCH 95/98] Update benchmark results [skip ci] --- benchmarks/results/_utils.md | 274 +++++----- benchmarks/results/main.md | 964 +++++++++++++++++------------------ 2 files changed, 619 insertions(+), 619 deletions(-) diff --git a/benchmarks/results/_utils.md b/benchmarks/results/_utils.md index 7592077..fe41ac1 100644 --- a/benchmarks/results/_utils.md +++ b/benchmarks/results/_utils.md @@ -2,140 +2,140 @@ | Function | Reference Mean | Faster Mean | % Change | Speedup (%) | x Faster | Faster | |----------|---------------|-------------|----------|-------------|----------|--------| -| `hexstr_to_bytes['']` | 1.8265031036840496e-05 | 1.0818353622888828e-05 | 40.77% | 68.83% | 1.69x | ✅ | -| `hexstr_to_bytes['0x'+'0'*128]` | 3.48106117387236e-05 | 2.1064456324836723e-05 | 39.49% | 65.26% | 1.65x | ✅ | -| `hexstr_to_bytes['0x'+'00'*64]` | 3.4569382404575054e-05 | 2.113074126289758e-05 | 38.87% | 63.60% | 1.64x | ✅ | -| `hexstr_to_bytes['0x'+'00ff'*16]` | 3.1294880640865165e-05 | 1.8257581128391344e-05 | 41.66% | 71.41% | 1.71x | ✅ | -| `hexstr_to_bytes['0x'+'0123456789abcdef'*8]` | 3.4487114352523785e-05 | 2.1319301371068184e-05 | 38.18% | 61.76% | 1.62x | ✅ | -| `hexstr_to_bytes['0x'+'1'*64]` | 3.1392733220324415e-05 | 1.8121255622065647e-05 | 42.28% | 73.24% | 1.73x | ✅ | -| `hexstr_to_bytes['0x'+'1234567890abcdef'*8]` | 3.462527345792889e-05 | 2.108709369174962e-05 | 39.10% | 64.20% | 1.64x | ✅ | -| `hexstr_to_bytes['0x'+'a'*128]` | 3.473270624028392e-05 | 2.105434982738371e-05 | 39.38% | 64.97% | 1.65x | ✅ | -| `hexstr_to_bytes['0x'+'a1b2c3d4'*8]` | 3.1467627743182165e-05 | 1.8099886556773463e-05 | 42.48% | 73.86% | 1.74x | ✅ | -| `hexstr_to_bytes['0x'+'b'*2048]` | 0.0001371154186080856 | 0.00011899454057622306 | 13.22% | 15.23% | 1.15x | ✅ | -| `hexstr_to_bytes['0x'+'badc0ffee0ddf00d'*4]` | 3.1442456131902006e-05 | 1.8259576228414115e-05 | 41.93% | 72.20% | 1.72x | ✅ | -| `hexstr_to_bytes['0x'+'beef'*16]` | 3.148983591156057e-05 | 1.8224676983834355e-05 | 42.13% | 72.79% | 1.73x | ✅ | -| `hexstr_to_bytes['0x'+'c'*1024]` | 8.941691125760567e-05 | 7.08383454978325e-05 | 20.78% | 26.23% | 1.26x | ✅ | -| `hexstr_to_bytes['0x'+'cafebabe'*8]` | 3.1405471956352554e-05 | 1.8277468030407478e-05 | 41.80% | 71.83% | 1.72x | ✅ | -| `hexstr_to_bytes['0x'+'d'*512]` | 5.7176007664668063e-05 | 4.0721405318317644e-05 | 28.78% | 40.41% | 1.40x | ✅ | -| `hexstr_to_bytes['0x'+'dead'*16]` | 3.172656336899147e-05 | 1.8381743673678752e-05 | 42.06% | 72.60% | 1.73x | ✅ | -| `hexstr_to_bytes['0x'+'e'*256]` | 4.342722044409168e-05 | 2.7753765562136623e-05 | 36.09% | 56.47% | 1.56x | ✅ | -| `hexstr_to_bytes['0x'+'f'*128]` | 3.469195489758815e-05 | 2.1405908886769915e-05 | 38.30% | 62.07% | 1.62x | ✅ | -| `hexstr_to_bytes['0x'+'f'*64]` | 3.1200266498902244e-05 | 1.8153740904838577e-05 | 41.82% | 71.87% | 1.72x | ✅ | -| `hexstr_to_bytes['0x'+'facefeed'*8]` | 3.143628339790148e-05 | 1.828487346655031e-05 | 41.84% | 71.93% | 1.72x | ✅ | -| `hexstr_to_bytes['0x'+'ff'*32]` | 3.162774235050176e-05 | 1.7788644200015465e-05 | 43.76% | 77.80% | 1.78x | ✅ | -| `hexstr_to_bytes['0x'+'ff00'*16]` | 3.1203822733749597e-05 | 1.7927412155141745e-05 | 42.55% | 74.06% | 1.74x | ✅ | -| `hexstr_to_bytes['0x']` | 2.2864566232658183e-05 | 1.0807926399776171e-05 | 52.73% | 111.55% | 2.12x | ✅ | -| `hexstr_to_bytes['0x0']` | 3.16298023857698e-05 | 1.8389114165819183e-05 | 41.86% | 72.00% | 1.72x | ✅ | -| `hexstr_to_bytes['0x1']` | 3.121632381959181e-05 | 1.871748192437112e-05 | 40.04% | 66.78% | 1.67x | ✅ | -| `hexstr_to_bytes['0x1234']` | 2.863245329949138e-05 | 1.5908421878918133e-05 | 44.44% | 79.98% | 1.80x | ✅ | -| `hexstr_to_bytes['0xCAFEBABE']` | 2.9292754142909626e-05 | 1.614961296160776e-05 | 44.87% | 81.38% | 1.81x | ✅ | -| `hexstr_to_bytes['0xabcdef']` | 2.9146721422313698e-05 | 1.5789576398088737e-05 | 45.83% | 84.59% | 1.85x | ✅ | -| `hexstr_to_bytes['0xdeadbeef']` | 2.935899351408868e-05 | 1.59869500423835e-05 | 45.55% | 83.64% | 1.84x | ✅ | -| `hexstr_to_bytes['deadbeef']` | 2.2187515584479e-05 | 1.4204332004679542e-05 | 35.98% | 56.20% | 1.56x | ✅ | -| `to_bytes['']` | 2.8767739551788455e-05 | 1.208788143071761e-05 | 57.98% | 137.99% | 2.38x | ✅ | -| `to_bytes['0x'+'00'*64]` | 4.724161944066457e-05 | 2.2917712685569093e-05 | 51.49% | 106.14% | 2.06x | ✅ | -| `to_bytes['0x'+'a'*128]` | 4.80429607528706e-05 | 2.288399257594495e-05 | 52.37% | 109.94% | 2.10x | ✅ | -| `to_bytes['0x'+'ff'*32]` | 4.424147228108829e-05 | 2.0414340735219646e-05 | 53.86% | 116.72% | 2.17x | ✅ | -| `to_bytes['0x']` | 3.4633827135510764e-05 | 1.2454329444852403e-05 | 64.04% | 178.09% | 2.78x | ✅ | -| `to_bytes['0x1234']` | 4.1523932137317815e-05 | 1.7775289110241235e-05 | 57.19% | 133.60% | 2.34x | ✅ | -| `to_bytes['0xCAFEBABE']` | 4.1490285584571187e-05 | 1.7573233455432773e-05 | 57.64% | 136.10% | 2.36x | ✅ | -| `to_bytes['0xabcdef']` | 4.121760116130357e-05 | 1.7638944660939296e-05 | 57.21% | 133.67% | 2.34x | ✅ | -| `to_bytes['0xdeadbeef']` | 4.1866793231468244e-05 | 1.7708767407246115e-05 | 57.70% | 136.42% | 2.36x | ✅ | -| `to_bytes['abc']` | 3.7383120228402616e-05 | 1.9633682245414375e-05 | 47.48% | 90.40% | 1.90x | ✅ | -| `to_bytes['deadbeef']` | 3.36630891162861e-05 | 1.4867702732782816e-05 | 55.83% | 126.42% | 2.26x | ✅ | -| `to_bytes[0-9]` | 6.607898839118496e-06 | 3.565398260883424e-06 | 46.04% | 85.33% | 1.85x | ✅ | -| `to_bytes[0]` | 7.64808991902418e-05 | 3.0887657002497055e-05 | 59.61% | 147.61% | 2.48x | ✅ | -| `to_bytes[123456]` | 8.086384269684407e-05 | 3.553665217382275e-05 | 56.05% | 127.55% | 2.28x | ✅ | -| `to_bytes[2**16]` | 8.165539348608992e-05 | 3.5217010512187575e-05 | 56.87% | 131.86% | 2.32x | ✅ | -| `to_bytes[2**256-1]` | 8.462405471137204e-05 | 4.0702509651285575e-05 | 51.90% | 107.91% | 2.08x | ✅ | -| `to_bytes[2**32]` | 8.304881070076173e-05 | 3.852775994957527e-05 | 53.61% | 115.56% | 2.16x | ✅ | -| `to_bytes[2**64]` | 8.321779148214102e-05 | 3.974385517986183e-05 | 52.24% | 109.39% | 2.09x | ✅ | -| `to_bytes[2**8]` | 7.960694582152316e-05 | 3.359864925102589e-05 | 57.79% | 136.93% | 2.37x | ✅ | -| `to_bytes[4-byte pattern]` | 6.607979682761316e-06 | 3.641193311115989e-06 | 44.90% | 81.48% | 1.81x | ✅ | -| `to_bytes[False]` | 2.3175095726303814e-05 | 4.2868974773418265e-06 | 81.50% | 440.60% | 5.41x | ✅ | -| `to_bytes[True]` | 2.2845753797640923e-05 | 4.249801391417992e-06 | 81.40% | 437.57% | 5.38x | ✅ | -| `to_bytes[all byte values]` | 6.570740370491101e-06 | 3.6604815259671475e-06 | 44.29% | 79.50% | 1.80x | ✅ | -| `to_bytes[alternating 0x00/0xff]` | 6.6379763616022835e-06 | 3.5676145636222147e-06 | 46.25% | 86.06% | 1.86x | ✅ | -| `to_bytes[alternating 0xaa/0x55]` | 6.545270661735808e-06 | 3.5652474842634582e-06 | 45.53% | 83.59% | 1.84x | ✅ | -| `to_bytes[ascii sentence]` | 6.5983782602965815e-06 | 3.5687198710223096e-06 | 45.92% | 84.89% | 1.85x | ✅ | -| `to_bytes[b'']` | 6.203563865686327e-06 | 3.7208993912965393e-06 | 40.02% | 66.72% | 1.67x | ✅ | -| `to_bytes[b'\\x00'*32]` | 6.797017128635246e-06 | 3.782967793457678e-06 | 44.34% | 79.67% | 1.80x | ✅ | -| `to_bytes[b'\\x00\\xff\\x00\\xff']` | 6.598000184114403e-06 | 3.786604538859205e-06 | 42.61% | 74.25% | 1.74x | ✅ | -| `to_bytes[b'\\x01'*100]` | 6.632974499672324e-06 | 3.5266235305452413e-06 | 46.83% | 88.08% | 1.88x | ✅ | -| `to_bytes[b'\\x01'*2048]` | 6.646240870466545e-06 | 3.5679001351755268e-06 | 46.32% | 86.28% | 1.86x | ✅ | -| `to_bytes[b'\\x01\\x02\\x03']` | 6.495176257910074e-06 | 3.83918389605137e-06 | 40.89% | 69.18% | 1.69x | ✅ | -| `to_bytes[b'\\x10\\x20\\x30\\x40\\x50']` | 6.6494314571618005e-06 | 3.4736287848499767e-06 | 47.76% | 91.43% | 1.91x | ✅ | -| `to_bytes[b'\\x7f'*8]` | 6.6029223552890405e-06 | 3.57069557925024e-06 | 45.92% | 84.92% | 1.85x | ✅ | -| `to_bytes[b'\\x80'*8]` | 6.629168133043793e-06 | 3.569627339901665e-06 | 46.15% | 85.71% | 1.86x | ✅ | -| `to_bytes[b'\\xde\\xad\\xbe\\xef']` | 6.632895765667766e-06 | 3.82865800008364e-06 | 42.28% | 73.24% | 1.73x | ✅ | -| `to_bytes[b'\\xff'*64]` | 6.626496744846487e-06 | 3.838222313556072e-06 | 42.08% | 72.64% | 1.73x | ✅ | -| `to_bytes[b'a'*1024]` | 6.526263035520842e-06 | 3.844738512234349e-06 | 41.09% | 69.75% | 1.70x | ✅ | -| `to_bytes[b'abc']` | 6.494023752021424e-06 | 3.711824923577414e-06 | 42.84% | 74.96% | 1.75x | ✅ | -| `to_bytes[bytearray(0-9)]` | 2.9100261223081722e-05 | 1.4073834723977602e-05 | 51.64% | 106.77% | 2.07x | ✅ | -| `to_bytes[bytearray(4-byte pattern)]` | 3.0219734364169352e-05 | 1.430355527660967e-05 | 52.67% | 111.27% | 2.11x | ✅ | -| `to_bytes[bytearray(all byte values)]` | 2.9469805951882877e-05 | 1.4329421638296105e-05 | 51.38% | 105.66% | 2.06x | ✅ | -| `to_bytes[bytearray(alternating 0x00/0xff)]` | 2.8871583279223313e-05 | 1.4086529348678737e-05 | 51.21% | 104.96% | 2.05x | ✅ | -| `to_bytes[bytearray(alternating 0xaa/0x55)]` | 2.8431525098819396e-05 | 1.4025179470032653e-05 | 50.67% | 102.72% | 2.03x | ✅ | -| `to_bytes[bytearray(ascii sentence)]` | 2.8945176012117372e-05 | 1.3949390935321998e-05 | 51.81% | 107.50% | 2.08x | ✅ | -| `to_bytes[bytearray(b'')]` | 2.7110836616644204e-05 | 1.2424443959715387e-05 | 54.17% | 118.21% | 2.18x | ✅ | -| `to_bytes[bytearray(b'\\x00'*32)]` | 2.8915287024335052e-05 | 1.4015107911370946e-05 | 51.53% | 106.32% | 2.06x | ✅ | -| `to_bytes[bytearray(b'\\x00\\xff\\x00\\xff')]` | 2.8521276175498012e-05 | 1.4054300831609767e-05 | 50.72% | 102.94% | 2.03x | ✅ | -| `to_bytes[bytearray(b'\\x01'*100)]` | 2.956872205427049e-05 | 1.415330004580673e-05 | 52.13% | 108.92% | 2.09x | ✅ | -| `to_bytes[bytearray(b'\\x01'*2048)]` | 3.650672109536751e-05 | 1.940258270581093e-05 | 46.85% | 88.15% | 1.88x | ✅ | -| `to_bytes[bytearray(b'\\x01\\x02\\x03')]` | 2.943451440077889e-05 | 1.4032475374987274e-05 | 52.33% | 109.76% | 2.10x | ✅ | -| `to_bytes[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 2.8757095194063118e-05 | 1.4128017870245605e-05 | 50.87% | 103.55% | 2.04x | ✅ | -| `to_bytes[bytearray(b'\\x7f'*8)]` | 2.9282562185049603e-05 | 1.3975496057715808e-05 | 52.27% | 109.53% | 2.10x | ✅ | -| `to_bytes[bytearray(b'\\x80'*8)]` | 2.9428854839187653e-05 | 1.4263711184541324e-05 | 51.53% | 106.32% | 2.06x | ✅ | -| `to_bytes[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 2.9320277234600084e-05 | 1.396496818487286e-05 | 52.37% | 109.96% | 2.10x | ✅ | -| `to_bytes[bytearray(b'\\xff'*64)]` | 2.817498989865669e-05 | 1.4065001599299754e-05 | 50.08% | 100.32% | 2.00x | ✅ | -| `to_bytes[bytearray(b'a'*1024)]` | 3.5662421616964274e-05 | 1.8994211426882947e-05 | 46.74% | 87.75% | 1.88x | ✅ | -| `to_bytes[bytearray(b'abc')]` | 2.9045779937875826e-05 | 1.4189041360184816e-05 | 51.15% | 104.71% | 2.05x | ✅ | -| `to_bytes[bytearray(long alternating)]` | 3.576139302885913e-05 | 1.8559591630510302e-05 | 48.10% | 92.68% | 1.93x | ✅ | -| `to_bytes[bytearray(mixed pattern)]` | 2.7605232446264443e-05 | 1.4157859944861863e-05 | 48.71% | 94.98% | 1.95x | ✅ | -| `to_bytes[bytearray(multiples of 0x10)]` | 2.8876920723595686e-05 | 1.3960875991197816e-05 | 51.65% | 106.84% | 2.07x | ✅ | -| `to_bytes[bytearray(palindrome ascii)]` | 2.9468988831393466e-05 | 1.4018845744546433e-05 | 52.43% | 110.21% | 2.10x | ✅ | -| `to_bytes[bytearray(palindrome numeric)]` | 2.903756897563374e-05 | 1.3999905060457661e-05 | 51.79% | 107.41% | 2.07x | ✅ | -| `to_bytes[bytearray(palindrome)]` | 2.8767541393435736e-05 | 1.403775244313133e-05 | 51.20% | 104.93% | 2.05x | ✅ | -| `to_bytes[bytearray(repeated 0-9)]` | 2.924045850630331e-05 | 1.417578516527674e-05 | 51.52% | 106.27% | 2.06x | ✅ | -| `to_bytes[bytearray(single 0xff)]` | 2.9116512978043233e-05 | 1.3736527568770625e-05 | 52.82% | 111.96% | 2.12x | ✅ | -| `to_bytes[bytearray(single null byte)]` | 2.8344438796043512e-05 | 1.3776421940644135e-05 | 51.40% | 105.75% | 2.06x | ✅ | -| `to_bytes[bytearray(two patterns)]` | 2.9344947241903332e-05 | 1.4031309857084977e-05 | 52.18% | 109.14% | 2.09x | ✅ | -| `to_bytes[long alternating]` | 6.681976956775542e-06 | 3.373340802978678e-06 | 49.52% | 98.08% | 1.98x | ✅ | -| `to_bytes[memoryview(0-9)]` | 4.3604972985885015e-05 | 1.6872538091710824e-05 | 61.31% | 158.44% | 2.58x | ✅ | -| `to_bytes[memoryview(4-byte pattern)]` | 4.3418776198888865e-05 | 1.7521532863205926e-05 | 59.65% | 147.80% | 2.48x | ✅ | -| `to_bytes[memoryview(all byte values)]` | 4.378956108120711e-05 | 1.832671201858964e-05 | 58.15% | 138.94% | 2.39x | ✅ | -| `to_bytes[memoryview(alternating 0x00/0xff)]` | 4.444307421378364e-05 | 1.689894728807489e-05 | 61.98% | 162.99% | 2.63x | ✅ | -| `to_bytes[memoryview(alternating 0xaa/0x55)]` | 4.367785397676683e-05 | 1.6518086528736596e-05 | 62.18% | 164.42% | 2.64x | ✅ | -| `to_bytes[memoryview(ascii sentence)]` | 4.379462449536509e-05 | 1.6751490314532864e-05 | 61.75% | 161.44% | 2.61x | ✅ | -| `to_bytes[memoryview(b'')]` | 4.1897333040122677e-05 | 1.493545966985892e-05 | 64.35% | 180.52% | 2.81x | ✅ | -| `to_bytes[memoryview(b'\\x00'*32)]` | 4.388119140149641e-05 | 1.6708389598938207e-05 | 61.92% | 162.63% | 2.63x | ✅ | -| `to_bytes[memoryview(b'\\x00\\xff\\x00\\xff')]` | 4.347031015265689e-05 | 1.6736936182265994e-05 | 61.50% | 159.73% | 2.60x | ✅ | -| `to_bytes[memoryview(b'\\x01'*100)]` | 4.4289089077080966e-05 | 1.7528613644030733e-05 | 60.42% | 152.67% | 2.53x | ✅ | -| `to_bytes[memoryview(b'\\x01'*2048)]` | 5.167744693954769e-05 | 2.4586403583532758e-05 | 52.42% | 110.19% | 2.10x | ✅ | -| `to_bytes[memoryview(b'\\x01\\x02\\x03')]` | 4.384447177785944e-05 | 1.7274228124069396e-05 | 60.60% | 153.81% | 2.54x | ✅ | -| `to_bytes[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 4.391971662366577e-05 | 1.700320503013752e-05 | 61.29% | 158.30% | 2.58x | ✅ | -| `to_bytes[memoryview(b'\\x7f'*8)]` | 4.4050438274316226e-05 | 1.6709086908731573e-05 | 62.07% | 163.63% | 2.64x | ✅ | -| `to_bytes[memoryview(b'\\x80'*8)]` | 4.4003802310070355e-05 | 1.6868683032436964e-05 | 61.67% | 160.86% | 2.61x | ✅ | -| `to_bytes[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 4.3723387894071716e-05 | 1.6787649862410426e-05 | 61.60% | 160.45% | 2.60x | ✅ | -| `to_bytes[memoryview(b'\\xff'*64)]` | 4.3496488575710974e-05 | 1.6841202011601105e-05 | 61.28% | 158.27% | 2.58x | ✅ | -| `to_bytes[memoryview(b'a'*1024)]` | 5.0053166914425434e-05 | 2.3075329941614223e-05 | 53.90% | 116.91% | 2.17x | ✅ | -| `to_bytes[memoryview(b'abc')]` | 4.36621087346292e-05 | 1.6900890390692953e-05 | 61.29% | 158.34% | 2.58x | ✅ | -| `to_bytes[memoryview(long alternating)]` | 5.043722532139686e-05 | 2.2852576182519015e-05 | 54.69% | 120.71% | 2.21x | ✅ | -| `to_bytes[memoryview(mixed pattern)]` | 4.3948604694793566e-05 | 1.7550975856479723e-05 | 60.06% | 150.41% | 2.50x | ✅ | -| `to_bytes[memoryview(multiples of 0x10)]` | 4.31032466876879e-05 | 1.6783869716430207e-05 | 61.06% | 156.81% | 2.57x | ✅ | -| `to_bytes[memoryview(palindrome ascii)]` | 4.3689733135254905e-05 | 1.6790930451016958e-05 | 61.57% | 160.20% | 2.60x | ✅ | -| `to_bytes[memoryview(palindrome numeric)]` | 4.465017562456981e-05 | 1.699396377694519e-05 | 61.94% | 162.74% | 2.63x | ✅ | -| `to_bytes[memoryview(palindrome)]` | 4.3189635577315905e-05 | 1.6784004865238028e-05 | 61.14% | 157.33% | 2.57x | ✅ | -| `to_bytes[memoryview(repeated 0-9)]` | 4.4166732482096736e-05 | 1.7179692174448305e-05 | 61.10% | 157.09% | 2.57x | ✅ | -| `to_bytes[memoryview(single 0xff)]` | 4.102402486400195e-05 | 1.7298456598627793e-05 | 57.83% | 137.15% | 2.37x | ✅ | -| `to_bytes[memoryview(single null byte)]` | 4.3525250197380176e-05 | 1.714779706152543e-05 | 60.60% | 153.82% | 2.54x | ✅ | -| `to_bytes[memoryview(two patterns)]` | 4.359724184823798e-05 | 1.6881188816275528e-05 | 61.28% | 158.26% | 2.58x | ✅ | -| `to_bytes[mixed pattern]` | 6.65510391783218e-06 | 3.4765458988995523e-06 | 47.76% | 91.43% | 1.91x | ✅ | -| `to_bytes[multiples of 0x10]` | 6.649713706157269e-06 | 3.62303244917209e-06 | 45.52% | 83.54% | 1.84x | ✅ | -| `to_bytes[palindrome ascii]` | 6.620468198219783e-06 | 3.6592659527847616e-06 | 44.73% | 80.92% | 1.81x | ✅ | -| `to_bytes[palindrome numeric]` | 6.59698564018264e-06 | 3.58800424738478e-06 | 45.61% | 83.86% | 1.84x | ✅ | -| `to_bytes[palindrome]` | 6.591607532974155e-06 | 3.5982481467809225e-06 | 45.41% | 83.19% | 1.83x | ✅ | -| `to_bytes[repeated 0-9]` | 6.6740438464783246e-06 | 3.566926253898742e-06 | 46.56% | 87.11% | 1.87x | ✅ | -| `to_bytes[single 0xff]` | 6.31750279084045e-06 | 3.411171412646713e-06 | 46.00% | 85.20% | 1.85x | ✅ | -| `to_bytes[single null byte]` | 6.427208342090642e-06 | 3.515224979595995e-06 | 45.31% | 82.84% | 1.83x | ✅ | -| `to_bytes[two patterns]` | 6.6235555200924545e-06 | 3.5684742671908625e-06 | 46.12% | 85.61% | 1.86x | ✅ | +| `hexstr_to_bytes['']` | 1.7775917983662326e-05 | 1.0727932500263032e-05 | 39.65% | 65.70% | 1.66x | ✅ | +| `hexstr_to_bytes['0x'+'0'*128]` | 3.491490471043102e-05 | 2.0919416525130024e-05 | 40.08% | 66.90% | 1.67x | ✅ | +| `hexstr_to_bytes['0x'+'00'*64]` | 3.446399900535072e-05 | 2.084486314228059e-05 | 39.52% | 65.34% | 1.65x | ✅ | +| `hexstr_to_bytes['0x'+'00ff'*16]` | 3.07139326313055e-05 | 1.8245216446590623e-05 | 40.60% | 68.34% | 1.68x | ✅ | +| `hexstr_to_bytes['0x'+'0123456789abcdef'*8]` | 3.4416328818048816e-05 | 2.1364675933872856e-05 | 37.92% | 61.09% | 1.61x | ✅ | +| `hexstr_to_bytes['0x'+'1'*64]` | 3.100143024090268e-05 | 1.8085035848866485e-05 | 41.66% | 71.42% | 1.71x | ✅ | +| `hexstr_to_bytes['0x'+'1234567890abcdef'*8]` | 3.441861393884184e-05 | 2.0849935033229896e-05 | 39.42% | 65.08% | 1.65x | ✅ | +| `hexstr_to_bytes['0x'+'a'*128]` | 3.4561192947161615e-05 | 2.0909033331686867e-05 | 39.50% | 65.29% | 1.65x | ✅ | +| `hexstr_to_bytes['0x'+'a1b2c3d4'*8]` | 3.1403812929364115e-05 | 1.8250018801877918e-05 | 41.89% | 72.08% | 1.72x | ✅ | +| `hexstr_to_bytes['0x'+'b'*2048]` | 0.00013753065358410233 | 0.00011893207404219291 | 13.52% | 15.64% | 1.16x | ✅ | +| `hexstr_to_bytes['0x'+'badc0ffee0ddf00d'*4]` | 3.099832064262594e-05 | 1.8894152914837597e-05 | 39.05% | 64.06% | 1.64x | ✅ | +| `hexstr_to_bytes['0x'+'beef'*16]` | 3.069293012127684e-05 | 1.819615153771005e-05 | 40.72% | 68.68% | 1.69x | ✅ | +| `hexstr_to_bytes['0x'+'c'*1024]` | 9.01187594160798e-05 | 7.165488217868635e-05 | 20.49% | 25.77% | 1.26x | ✅ | +| `hexstr_to_bytes['0x'+'cafebabe'*8]` | 3.078868619515657e-05 | 1.8153241640669056e-05 | 41.04% | 69.60% | 1.70x | ✅ | +| `hexstr_to_bytes['0x'+'d'*512]` | 5.717538693757999e-05 | 4.191188016720377e-05 | 26.70% | 36.42% | 1.36x | ✅ | +| `hexstr_to_bytes['0x'+'dead'*16]` | 3.056904536226116e-05 | 1.807443997571223e-05 | 40.87% | 69.13% | 1.69x | ✅ | +| `hexstr_to_bytes['0x'+'e'*256]` | 4.2916587071081487e-05 | 2.777874104941655e-05 | 35.27% | 54.49% | 1.54x | ✅ | +| `hexstr_to_bytes['0x'+'f'*128]` | 3.441630937427268e-05 | 2.1008247175884103e-05 | 38.96% | 63.82% | 1.64x | ✅ | +| `hexstr_to_bytes['0x'+'f'*64]` | 3.115085523484252e-05 | 1.8273651367177792e-05 | 41.34% | 70.47% | 1.70x | ✅ | +| `hexstr_to_bytes['0x'+'facefeed'*8]` | 3.052517387721047e-05 | 1.8539806661974925e-05 | 39.26% | 64.65% | 1.65x | ✅ | +| `hexstr_to_bytes['0x'+'ff'*32]` | 3.101207130589155e-05 | 1.8166417131457863e-05 | 41.42% | 70.71% | 1.71x | ✅ | +| `hexstr_to_bytes['0x'+'ff00'*16]` | 3.125244425618186e-05 | 1.8120887750486596e-05 | 42.02% | 72.47% | 1.72x | ✅ | +| `hexstr_to_bytes['0x']` | 2.2601683819888815e-05 | 1.0645460230090324e-05 | 52.90% | 112.31% | 2.12x | ✅ | +| `hexstr_to_bytes['0x0']` | 3.1713275923851624e-05 | 1.817321485458567e-05 | 42.70% | 74.51% | 1.75x | ✅ | +| `hexstr_to_bytes['0x1']` | 3.17379536154141e-05 | 1.822157537232279e-05 | 42.59% | 74.18% | 1.74x | ✅ | +| `hexstr_to_bytes['0x1234']` | 2.7838757970796635e-05 | 1.5795555405837136e-05 | 43.26% | 76.24% | 1.76x | ✅ | +| `hexstr_to_bytes['0xCAFEBABE']` | 2.8614949011522105e-05 | 1.591753977381602e-05 | 44.37% | 79.77% | 1.80x | ✅ | +| `hexstr_to_bytes['0xabcdef']` | 2.8803541128933988e-05 | 1.5921828453220432e-05 | 44.72% | 80.91% | 1.81x | ✅ | +| `hexstr_to_bytes['0xdeadbeef']` | 2.8607378892316006e-05 | 1.587141543631149e-05 | 44.52% | 80.24% | 1.80x | ✅ | +| `hexstr_to_bytes['deadbeef']` | 2.1949053918184868e-05 | 1.3789659724657343e-05 | 37.17% | 59.17% | 1.59x | ✅ | +| `to_bytes['']` | 2.7955620716199966e-05 | 1.1797225133100466e-05 | 57.80% | 136.97% | 2.37x | ✅ | +| `to_bytes['0x'+'00'*64]` | 4.640411641467185e-05 | 2.2434685311775978e-05 | 51.65% | 106.84% | 2.07x | ✅ | +| `to_bytes['0x'+'a'*128]` | 4.684056000001329e-05 | 2.2574385306526537e-05 | 51.81% | 107.49% | 2.07x | ✅ | +| `to_bytes['0x'+'ff'*32]` | 4.318002503555302e-05 | 2.020647868451592e-05 | 53.20% | 113.69% | 2.14x | ✅ | +| `to_bytes['0x']` | 3.314101681805598e-05 | 1.2266483321805938e-05 | 62.99% | 170.18% | 2.70x | ✅ | +| `to_bytes['0x1234']` | 4.0501930807956784e-05 | 1.738635051057951e-05 | 57.07% | 132.95% | 2.33x | ✅ | +| `to_bytes['0xCAFEBABE']` | 4.0621225816056714e-05 | 1.743460371084774e-05 | 57.08% | 132.99% | 2.33x | ✅ | +| `to_bytes['0xabcdef']` | 4.0354350721587806e-05 | 1.7580093385599063e-05 | 56.44% | 129.55% | 2.30x | ✅ | +| `to_bytes['0xdeadbeef']` | 4.0645245803455973e-05 | 1.7482358201118536e-05 | 56.99% | 132.49% | 2.32x | ✅ | +| `to_bytes['abc']` | 3.6857843943719186e-05 | 1.8918340672893454e-05 | 48.67% | 94.83% | 1.95x | ✅ | +| `to_bytes['deadbeef']` | 3.20727471455936e-05 | 1.5093752812033718e-05 | 52.94% | 112.49% | 2.12x | ✅ | +| `to_bytes[0-9]` | 6.405104477169434e-06 | 3.481490940926133e-06 | 45.65% | 83.98% | 1.84x | ✅ | +| `to_bytes[0]` | 7.386539555383063e-05 | 3.185220650225649e-05 | 56.88% | 131.90% | 2.32x | ✅ | +| `to_bytes[123456]` | 7.821481600061214e-05 | 3.5855117308899914e-05 | 54.16% | 118.14% | 2.18x | ✅ | +| `to_bytes[2**16]` | 7.852956848802972e-05 | 3.562569676400627e-05 | 54.63% | 120.43% | 2.20x | ✅ | +| `to_bytes[2**256-1]` | 8.200174130913126e-05 | 4.2477666359339256e-05 | 48.20% | 93.05% | 1.93x | ✅ | +| `to_bytes[2**32]` | 7.990086204576741e-05 | 3.917294543620569e-05 | 50.97% | 103.97% | 2.04x | ✅ | +| `to_bytes[2**64]` | 8.096338538172213e-05 | 4.049433200400262e-05 | 49.98% | 99.94% | 2.00x | ✅ | +| `to_bytes[2**8]` | 7.736550064124095e-05 | 3.38261195493415e-05 | 56.28% | 128.72% | 2.29x | ✅ | +| `to_bytes[4-byte pattern]` | 5.810964246285607e-06 | 3.4827826985651824e-06 | 40.07% | 66.85% | 1.67x | ✅ | +| `to_bytes[False]` | 2.2148925700342022e-05 | 4.193161930657539e-06 | 81.07% | 428.22% | 5.28x | ✅ | +| `to_bytes[True]` | 2.1914907076166526e-05 | 4.272684603804276e-06 | 80.50% | 412.91% | 5.13x | ✅ | +| `to_bytes[all byte values]` | 6.280903951637545e-06 | 3.463342473454103e-06 | 44.86% | 81.35% | 1.81x | ✅ | +| `to_bytes[alternating 0x00/0xff]` | 6.254048018198429e-06 | 3.449426758973995e-06 | 44.84% | 81.31% | 1.81x | ✅ | +| `to_bytes[alternating 0xaa/0x55]` | 6.274259199507789e-06 | 3.47531986681661e-06 | 44.61% | 80.54% | 1.81x | ✅ | +| `to_bytes[ascii sentence]` | 6.410588981912706e-06 | 3.5700308497286407e-06 | 44.31% | 79.57% | 1.80x | ✅ | +| `to_bytes[b'']` | 6.10352624376636e-06 | 3.5640788418879e-06 | 41.61% | 71.25% | 1.71x | ✅ | +| `to_bytes[b'\\x00'*32]` | 6.204836918156331e-06 | 3.5478724157598516e-06 | 42.82% | 74.89% | 1.75x | ✅ | +| `to_bytes[b'\\x00\\xff\\x00\\xff']` | 6.212304353583824e-06 | 3.488907567241734e-06 | 43.84% | 78.06% | 1.78x | ✅ | +| `to_bytes[b'\\x01'*100]` | 6.1108317619697845e-06 | 3.475464519872266e-06 | 43.13% | 75.83% | 1.76x | ✅ | +| `to_bytes[b'\\x01'*2048]` | 6.412506347989267e-06 | 3.5317178487341285e-06 | 44.92% | 81.57% | 1.82x | ✅ | +| `to_bytes[b'\\x01\\x02\\x03']` | 6.263785655651608e-06 | 3.5467792157562786e-06 | 43.38% | 76.60% | 1.77x | ✅ | +| `to_bytes[b'\\x10\\x20\\x30\\x40\\x50']` | 6.2030308329165995e-06 | 3.569135670965629e-06 | 42.46% | 73.80% | 1.74x | ✅ | +| `to_bytes[b'\\x7f'*8]` | 6.110410318541576e-06 | 3.4510035726980575e-06 | 43.52% | 77.06% | 1.77x | ✅ | +| `to_bytes[b'\\x80'*8]` | 6.108707295649537e-06 | 3.4766991212699945e-06 | 43.09% | 75.70% | 1.76x | ✅ | +| `to_bytes[b'\\xde\\xad\\xbe\\xef']` | 6.221459231679587e-06 | 3.6628319193328574e-06 | 41.13% | 69.85% | 1.70x | ✅ | +| `to_bytes[b'\\xff'*64]` | 6.20125730704149e-06 | 3.6603347174000155e-06 | 40.97% | 69.42% | 1.69x | ✅ | +| `to_bytes[b'a'*1024]` | 6.208299950724173e-06 | 3.664229542525834e-06 | 40.98% | 69.43% | 1.69x | ✅ | +| `to_bytes[b'abc']` | 5.824765260288395e-06 | 3.627948166702222e-06 | 37.72% | 60.55% | 1.61x | ✅ | +| `to_bytes[bytearray(0-9)]` | 2.8340198982049607e-05 | 1.389877378098738e-05 | 50.96% | 103.90% | 2.04x | ✅ | +| `to_bytes[bytearray(4-byte pattern)]` | 2.8516350658940008e-05 | 1.4015066218152717e-05 | 50.85% | 103.47% | 2.03x | ✅ | +| `to_bytes[bytearray(all byte values)]` | 2.8485148340827248e-05 | 1.4016406086190249e-05 | 50.79% | 103.23% | 2.03x | ✅ | +| `to_bytes[bytearray(alternating 0x00/0xff)]` | 2.8199036845120896e-05 | 1.3904260965956375e-05 | 50.69% | 102.81% | 2.03x | ✅ | +| `to_bytes[bytearray(alternating 0xaa/0x55)]` | 2.815897700733323e-05 | 1.3683789830500578e-05 | 51.41% | 105.78% | 2.06x | ✅ | +| `to_bytes[bytearray(ascii sentence)]` | 2.8263667834917084e-05 | 1.3943717727594286e-05 | 50.67% | 102.70% | 2.03x | ✅ | +| `to_bytes[bytearray(b'')]` | 2.6409268578679534e-05 | 1.2568176618087206e-05 | 52.41% | 110.13% | 2.10x | ✅ | +| `to_bytes[bytearray(b'\\x00'*32)]` | 2.8037044180183664e-05 | 1.3932908291924571e-05 | 50.31% | 101.23% | 2.01x | ✅ | +| `to_bytes[bytearray(b'\\x00\\xff\\x00\\xff')]` | 2.7323515494515315e-05 | 1.3949457982115627e-05 | 48.95% | 95.88% | 1.96x | ✅ | +| `to_bytes[bytearray(b'\\x01'*100)]` | 2.8221135504671916e-05 | 1.4097409849262612e-05 | 50.05% | 100.19% | 2.00x | ✅ | +| `to_bytes[bytearray(b'\\x01'*2048)]` | 3.570467544896867e-05 | 1.9927464588039017e-05 | 44.19% | 79.17% | 1.79x | ✅ | +| `to_bytes[bytearray(b'\\x01\\x02\\x03')]` | 2.8287103714232012e-05 | 1.4147741627550316e-05 | 49.99% | 99.94% | 2.00x | ✅ | +| `to_bytes[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 2.7658895030992004e-05 | 1.385051129578054e-05 | 49.92% | 99.70% | 2.00x | ✅ | +| `to_bytes[bytearray(b'\\x7f'*8)]` | 2.7940442051731036e-05 | 1.4136463383102241e-05 | 49.41% | 97.65% | 1.98x | ✅ | +| `to_bytes[bytearray(b'\\x80'*8)]` | 2.834711645944484e-05 | 1.3917514809080335e-05 | 50.90% | 103.68% | 2.04x | ✅ | +| `to_bytes[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 2.8023905091192385e-05 | 1.4127868235928117e-05 | 49.59% | 98.36% | 1.98x | ✅ | +| `to_bytes[bytearray(b'\\xff'*64)]` | 2.8041287223907698e-05 | 1.3796742968987002e-05 | 50.80% | 103.25% | 2.03x | ✅ | +| `to_bytes[bytearray(b'a'*1024)]` | 3.452359306148068e-05 | 1.9926495228188348e-05 | 42.28% | 73.25% | 1.73x | ✅ | +| `to_bytes[bytearray(b'abc')]` | 2.7993054555332495e-05 | 1.4101273131591149e-05 | 49.63% | 98.51% | 1.99x | ✅ | +| `to_bytes[bytearray(long alternating)]` | 3.4941171445052263e-05 | 1.9958103041113844e-05 | 42.88% | 75.07% | 1.75x | ✅ | +| `to_bytes[bytearray(mixed pattern)]` | 2.8412226547313388e-05 | 1.4054230794244093e-05 | 50.53% | 102.16% | 2.02x | ✅ | +| `to_bytes[bytearray(multiples of 0x10)]` | 2.8210212994194743e-05 | 1.4066195751407053e-05 | 50.14% | 100.55% | 2.01x | ✅ | +| `to_bytes[bytearray(palindrome ascii)]` | 2.811958424887465e-05 | 1.4077242534547195e-05 | 49.94% | 99.75% | 2.00x | ✅ | +| `to_bytes[bytearray(palindrome numeric)]` | 2.7881754838381873e-05 | 1.4076983481452832e-05 | 49.51% | 98.07% | 1.98x | ✅ | +| `to_bytes[bytearray(palindrome)]` | 2.8108772201246278e-05 | 1.4064760910190597e-05 | 49.96% | 99.85% | 2.00x | ✅ | +| `to_bytes[bytearray(repeated 0-9)]` | 2.7875124149586617e-05 | 1.4130458538432285e-05 | 49.31% | 97.27% | 1.97x | ✅ | +| `to_bytes[bytearray(single 0xff)]` | 2.8173936254947837e-05 | 1.43499823632826e-05 | 49.07% | 96.33% | 1.96x | ✅ | +| `to_bytes[bytearray(single null byte)]` | 2.802816211427365e-05 | 1.4394923331648491e-05 | 48.64% | 94.71% | 1.95x | ✅ | +| `to_bytes[bytearray(two patterns)]` | 2.819233572932223e-05 | 1.3915738498587107e-05 | 50.64% | 102.59% | 2.03x | ✅ | +| `to_bytes[long alternating]` | 6.415968997645673e-06 | 3.395213209207197e-06 | 47.08% | 88.97% | 1.89x | ✅ | +| `to_bytes[memoryview(0-9)]` | 4.2749595779593174e-05 | 1.6729078785421595e-05 | 60.87% | 155.54% | 2.56x | ✅ | +| `to_bytes[memoryview(4-byte pattern)]` | 4.230633340732641e-05 | 1.7672179228065396e-05 | 58.23% | 139.40% | 2.39x | ✅ | +| `to_bytes[memoryview(all byte values)]` | 4.1825420467904574e-05 | 1.7727645718149545e-05 | 57.62% | 135.93% | 2.36x | ✅ | +| `to_bytes[memoryview(alternating 0x00/0xff)]` | 4.142029004912543e-05 | 1.6863311969785655e-05 | 59.29% | 145.62% | 2.46x | ✅ | +| `to_bytes[memoryview(alternating 0xaa/0x55)]` | 4.243998568804123e-05 | 1.685910583996521e-05 | 60.28% | 151.73% | 2.52x | ✅ | +| `to_bytes[memoryview(ascii sentence)]` | 4.21362768954307e-05 | 1.7067336933448895e-05 | 59.49% | 146.88% | 2.47x | ✅ | +| `to_bytes[memoryview(b'')]` | 4.037774127942253e-05 | 1.5303872734096135e-05 | 62.10% | 163.84% | 2.64x | ✅ | +| `to_bytes[memoryview(b'\\x00'*32)]` | 4.153634534747011e-05 | 1.7118680363379728e-05 | 58.79% | 142.64% | 2.43x | ✅ | +| `to_bytes[memoryview(b'\\x00\\xff\\x00\\xff')]` | 4.222663602906194e-05 | 1.715702613960184e-05 | 59.37% | 146.12% | 2.46x | ✅ | +| `to_bytes[memoryview(b'\\x01'*100)]` | 4.161471657379659e-05 | 1.7721207457399612e-05 | 57.42% | 134.83% | 2.35x | ✅ | +| `to_bytes[memoryview(b'\\x01'*2048)]` | 5.0768532666849206e-05 | 2.3962627337585568e-05 | 52.80% | 111.87% | 2.12x | ✅ | +| `to_bytes[memoryview(b'\\x01\\x02\\x03')]` | 4.1099188083035814e-05 | 1.733918454650432e-05 | 57.81% | 137.03% | 2.37x | ✅ | +| `to_bytes[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 4.193944557658287e-05 | 1.7098338768552156e-05 | 59.23% | 145.28% | 2.45x | ✅ | +| `to_bytes[memoryview(b'\\x7f'*8)]` | 4.2378447529107664e-05 | 1.710789949815429e-05 | 59.63% | 147.71% | 2.48x | ✅ | +| `to_bytes[memoryview(b'\\x80'*8)]` | 4.269689760055061e-05 | 1.6952550682772517e-05 | 60.30% | 151.86% | 2.52x | ✅ | +| `to_bytes[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 4.189233114923724e-05 | 1.71297682780245e-05 | 59.11% | 144.56% | 2.45x | ✅ | +| `to_bytes[memoryview(b'\\xff'*64)]` | 4.171092115928625e-05 | 1.7007314413660392e-05 | 59.23% | 145.25% | 2.45x | ✅ | +| `to_bytes[memoryview(b'a'*1024)]` | 4.980692543268638e-05 | 2.457575314659188e-05 | 50.66% | 102.67% | 2.03x | ✅ | +| `to_bytes[memoryview(b'abc')]` | 4.083182682664677e-05 | 1.7346904310720036e-05 | 57.52% | 135.38% | 2.35x | ✅ | +| `to_bytes[memoryview(long alternating)]` | 4.887775280551575e-05 | 2.2811732311275143e-05 | 53.33% | 114.27% | 2.14x | ✅ | +| `to_bytes[memoryview(mixed pattern)]` | 4.2911069076599587e-05 | 1.7611319399190952e-05 | 58.96% | 143.66% | 2.44x | ✅ | +| `to_bytes[memoryview(multiples of 0x10)]` | 4.2443399062919516e-05 | 1.685632448891867e-05 | 60.29% | 151.80% | 2.52x | ✅ | +| `to_bytes[memoryview(palindrome ascii)]` | 4.203521250490273e-05 | 1.6958199115612473e-05 | 59.66% | 147.88% | 2.48x | ✅ | +| `to_bytes[memoryview(palindrome numeric)]` | 4.172926686035928e-05 | 1.7081017581140755e-05 | 59.07% | 144.30% | 2.44x | ✅ | +| `to_bytes[memoryview(palindrome)]` | 4.241722505404804e-05 | 1.7155580227242966e-05 | 59.56% | 147.25% | 2.47x | ✅ | +| `to_bytes[memoryview(repeated 0-9)]` | 4.25180515779048e-05 | 1.755468544093007e-05 | 58.71% | 142.20% | 2.42x | ✅ | +| `to_bytes[memoryview(single 0xff)]` | 4.22082408931371e-05 | 1.7265692772094226e-05 | 59.09% | 144.46% | 2.44x | ✅ | +| `to_bytes[memoryview(single null byte)]` | 4.259737195222626e-05 | 1.7302336770885106e-05 | 59.38% | 146.19% | 2.46x | ✅ | +| `to_bytes[memoryview(two patterns)]` | 4.248407717683878e-05 | 1.7077688830265145e-05 | 59.80% | 148.77% | 2.49x | ✅ | +| `to_bytes[mixed pattern]` | 6.339674193176509e-06 | 3.506538152394292e-06 | 44.69% | 80.80% | 1.81x | ✅ | +| `to_bytes[multiples of 0x10]` | 6.413060162742873e-06 | 3.477923311417062e-06 | 45.77% | 84.39% | 1.84x | ✅ | +| `to_bytes[palindrome ascii]` | 6.329120349634986e-06 | 3.4775444088901684e-06 | 45.05% | 82.00% | 1.82x | ✅ | +| `to_bytes[palindrome numeric]` | 6.284042853244198e-06 | 3.5741855388631874e-06 | 43.12% | 75.82% | 1.76x | ✅ | +| `to_bytes[palindrome]` | 6.146577946421703e-06 | 3.4775622138726858e-06 | 43.42% | 76.75% | 1.77x | ✅ | +| `to_bytes[repeated 0-9]` | 6.406428210258779e-06 | 3.5764697127159e-06 | 44.17% | 79.13% | 1.79x | ✅ | +| `to_bytes[single 0xff]` | 6.303223160387747e-06 | 3.320065286642722e-06 | 47.33% | 89.85% | 1.90x | ✅ | +| `to_bytes[single null byte]` | 6.122554022222805e-06 | 3.4135951948735565e-06 | 44.25% | 79.36% | 1.79x | ✅ | +| `to_bytes[two patterns]` | 6.344258505391835e-06 | 3.576089281212079e-06 | 43.63% | 77.41% | 1.77x | ✅ | diff --git a/benchmarks/results/main.md b/benchmarks/results/main.md index ed148b9..ad291ee 100644 --- a/benchmarks/results/main.md +++ b/benchmarks/results/main.md @@ -2,485 +2,485 @@ | Function | Reference Mean | Faster Mean | % Change | Speedup (%) | x Faster | Faster | |----------|---------------|-------------|----------|-------------|----------|--------| -| `hexbytes_getitem_index[-1-0-9]` | 2.490709214169354e-05 | 2.370748858175925e-05 | 4.82% | 5.06% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-4-byte pattern]` | 2.4944033381598877e-05 | 2.3596921403830403e-05 | 5.40% | 5.71% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-all byte values]` | 2.489169469090146e-05 | 2.368375301935395e-05 | 4.85% | 5.10% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-alternating 0x00/0xff]` | 2.4616856971277598e-05 | 2.367910966805255e-05 | 3.81% | 3.96% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-alternating 0xaa/0x55]` | 2.4810174022866607e-05 | 2.364585807709314e-05 | 4.69% | 4.92% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-ascii sentence]` | 2.4876026369098616e-05 | 2.3401698000016383e-05 | 5.93% | 6.30% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x00'*32]` | 2.5179318770972272e-05 | 2.3682104962795438e-05 | 5.95% | 6.32% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x00\\xff\\x00\\xff']` | 2.469411541356294e-05 | 2.3651485726805122e-05 | 4.22% | 4.41% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x01'*100]` | 2.450403953078943e-05 | 2.393845559201651e-05 | 2.31% | 2.36% | 1.02x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x01'*2048]` | 2.4793527926133996e-05 | 2.3673859203495446e-05 | 4.52% | 4.73% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x01\\x02\\x03']` | 2.4839162569491994e-05 | 2.3678830214022088e-05 | 4.67% | 4.90% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.472520244691875e-05 | 2.3801060858945628e-05 | 3.74% | 3.88% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x7f'*8]` | 2.4799162623988217e-05 | 2.380391230241173e-05 | 4.01% | 4.18% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-b'\\x80'*8]` | 2.469218193263831e-05 | 2.3751265667095653e-05 | 3.81% | 3.96% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-b'\\xde\\xad\\xbe\\xef']` | 2.4610220362058187e-05 | 2.4347358207216905e-05 | 1.07% | 1.08% | 1.01x | ✅ | -| `hexbytes_getitem_index[-1-b'\\xff'*64]` | 2.4932962472324192e-05 | 2.363601582818424e-05 | 5.20% | 5.49% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-b'a'*1024]` | 2.4916169522003968e-05 | 2.3660802442189224e-05 | 5.04% | 5.31% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-b'abc']` | 2.4731356538688148e-05 | 2.3733560709730495e-05 | 4.03% | 4.20% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-long alternating]` | 2.4922983725099812e-05 | 2.373363203045093e-05 | 4.77% | 5.01% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-mixed pattern]` | 2.502179565787116e-05 | 2.3655083751740592e-05 | 5.46% | 5.78% | 1.06x | ✅ | -| `hexbytes_getitem_index[-1-multiples of 0x10]` | 2.482023088683099e-05 | 2.3600794131323934e-05 | 4.91% | 5.17% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-palindrome ascii]` | 2.4637436134955697e-05 | 2.3725335024125925e-05 | 3.70% | 3.84% | 1.04x | ✅ | -| `hexbytes_getitem_index[-1-palindrome numeric]` | 2.4790932389676028e-05 | 2.3642997999800265e-05 | 4.63% | 4.86% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-palindrome]` | 2.4656196665282742e-05 | 2.4314268430394298e-05 | 1.39% | 1.41% | 1.01x | ✅ | -| `hexbytes_getitem_index[-1-repeated 0-9]` | 2.4815698138590123e-05 | 2.3592542900903538e-05 | 4.93% | 5.18% | 1.05x | ✅ | -| `hexbytes_getitem_index[-1-two patterns]` | 2.482972845430588e-05 | 2.3585646651003552e-05 | 5.01% | 5.27% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-0-9]` | 2.3804435985581907e-05 | 2.2332741040488598e-05 | 6.18% | 6.59% | 1.07x | ✅ | -| `hexbytes_getitem_index[0-4-byte pattern]` | 2.3771378416221362e-05 | 2.2207662416870945e-05 | 6.58% | 7.04% | 1.07x | ✅ | -| `hexbytes_getitem_index[0-all byte values]` | 2.3648703120629988e-05 | 2.2333754906503866e-05 | 5.56% | 5.89% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-alternating 0x00/0xff]` | 2.3729806903673045e-05 | 2.234556747866719e-05 | 5.83% | 6.19% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-alternating 0xaa/0x55]` | 2.362031854600441e-05 | 2.230126355056076e-05 | 5.58% | 5.91% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-ascii sentence]` | 2.388190673483288e-05 | 2.23427556347629e-05 | 6.44% | 6.89% | 1.07x | ✅ | -| `hexbytes_getitem_index[0-b'\\x00'*32]` | 2.3602802016469315e-05 | 2.2515627610547883e-05 | 4.61% | 4.83% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-b'\\x00\\xff\\x00\\xff']` | 2.356633073042294e-05 | 2.2449551736768575e-05 | 4.74% | 4.97% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-b'\\x01'*100]` | 2.373950600219785e-05 | 2.234548922547636e-05 | 5.87% | 6.24% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-b'\\x01'*2048]` | 2.3585919752857638e-05 | 2.2322596236281787e-05 | 5.36% | 5.66% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-b'\\x01\\x02\\x03']` | 2.354421020381418e-05 | 2.2267148404612698e-05 | 5.42% | 5.74% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3657149757468722e-05 | 2.239984540601803e-05 | 5.31% | 5.61% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-b'\\x7f'*8]` | 2.3682984208393784e-05 | 2.2300732078499635e-05 | 5.84% | 6.20% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-b'\\x80'*8]` | 2.373976053498264e-05 | 2.224161890697393e-05 | 6.31% | 6.74% | 1.07x | ✅ | -| `hexbytes_getitem_index[0-b'\\xde\\xad\\xbe\\xef']` | 2.3529202995029878e-05 | 2.2936153077175266e-05 | 2.52% | 2.59% | 1.03x | ✅ | -| `hexbytes_getitem_index[0-b'\\xff'*64]` | 2.3361196700308235e-05 | 2.2360294500621842e-05 | 4.28% | 4.48% | 1.04x | ✅ | -| `hexbytes_getitem_index[0-b'a'*1024]` | 2.3768117942715358e-05 | 2.2424629627706747e-05 | 5.65% | 5.99% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-b'abc']` | 2.3759305249720714e-05 | 2.2508983582644e-05 | 5.26% | 5.55% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-long alternating]` | 2.3497055023329787e-05 | 2.2286754536703178e-05 | 5.15% | 5.43% | 1.05x | ✅ | -| `hexbytes_getitem_index[0-mixed pattern]` | 2.3662767625523338e-05 | 2.2186145443099764e-05 | 6.24% | 6.66% | 1.07x | ✅ | -| `hexbytes_getitem_index[0-multiples of 0x10]` | 2.3968756596597983e-05 | 2.2269591466586076e-05 | 7.09% | 7.63% | 1.08x | ✅ | -| `hexbytes_getitem_index[0-palindrome ascii]` | 2.382029751364173e-05 | 2.227932623915601e-05 | 6.47% | 6.92% | 1.07x | ✅ | -| `hexbytes_getitem_index[0-palindrome numeric]` | 2.38171238489521e-05 | 2.214003875187448e-05 | 7.04% | 7.57% | 1.08x | ✅ | -| `hexbytes_getitem_index[0-palindrome]` | 2.3804432878066472e-05 | 2.226730524570395e-05 | 6.46% | 6.90% | 1.07x | ✅ | -| `hexbytes_getitem_index[0-repeated 0-9]` | 2.377569950404774e-05 | 2.2437429199166335e-05 | 5.63% | 5.96% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-single 0xff]` | 2.3995499731795414e-05 | 2.218166166405336e-05 | 7.56% | 8.18% | 1.08x | ✅ | -| `hexbytes_getitem_index[0-single null byte]` | 2.3556894752030408e-05 | 2.229389044331145e-05 | 5.36% | 5.67% | 1.06x | ✅ | -| `hexbytes_getitem_index[0-two patterns]` | 2.3639717936999068e-05 | 2.2408132843656126e-05 | 5.21% | 5.50% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-0-9]` | 2.400120672540772e-05 | 2.241032643767427e-05 | 6.63% | 7.10% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-4-byte pattern]` | 2.3926794701960164e-05 | 2.2499639116277377e-05 | 5.96% | 6.34% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-all byte values]` | 2.4489367875722634e-05 | 2.235271008857805e-05 | 8.72% | 9.56% | 1.10x | ✅ | -| `hexbytes_getitem_index[1-alternating 0x00/0xff]` | 2.371355350721647e-05 | 2.2316975615891112e-05 | 5.89% | 6.26% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-alternating 0xaa/0x55]` | 2.4005697906690265e-05 | 2.2310656442950614e-05 | 7.06% | 7.60% | 1.08x | ✅ | -| `hexbytes_getitem_index[1-ascii sentence]` | 2.3988890426407122e-05 | 2.2320323109938985e-05 | 6.96% | 7.48% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-b'\\x00'*32]` | 2.3719139804305662e-05 | 2.2553088161249025e-05 | 4.92% | 5.17% | 1.05x | ✅ | -| `hexbytes_getitem_index[1-b'\\x00\\xff\\x00\\xff']` | 2.3951760723661583e-05 | 2.3112537769938194e-05 | 3.50% | 3.63% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-b'\\x01'*100]` | 2.4111626628490464e-05 | 2.2427875152351023e-05 | 6.98% | 7.51% | 1.08x | ✅ | -| `hexbytes_getitem_index[1-b'\\x01'*2048]` | 2.4044132226561195e-05 | 2.2326438568795778e-05 | 7.14% | 7.69% | 1.08x | ✅ | -| `hexbytes_getitem_index[1-b'\\x01\\x02\\x03']` | 2.3969020698736155e-05 | 2.2511009311633602e-05 | 6.08% | 6.48% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3986273042285928e-05 | 2.2465757911337137e-05 | 6.34% | 6.77% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-b'\\x7f'*8]` | 2.4020942708596204e-05 | 2.310142510771549e-05 | 3.83% | 3.98% | 1.04x | ✅ | -| `hexbytes_getitem_index[1-b'\\x80'*8]` | 2.3971430731877633e-05 | 2.2474512477115264e-05 | 6.24% | 6.66% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-b'\\xde\\xad\\xbe\\xef']` | 2.387267731833952e-05 | 2.246828229777548e-05 | 5.88% | 6.25% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-b'\\xff'*64]` | 2.4059317084984183e-05 | 2.2423332730001766e-05 | 6.80% | 7.30% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-b'a'*1024]` | 2.382424450796304e-05 | 2.2529734614517946e-05 | 5.43% | 5.75% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-b'abc']` | 2.3724497800231034e-05 | 2.2396936622972052e-05 | 5.60% | 5.93% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-long alternating]` | 2.4028262385191222e-05 | 2.2318558414022063e-05 | 7.12% | 7.66% | 1.08x | ✅ | -| `hexbytes_getitem_index[1-mixed pattern]` | 2.400480781254558e-05 | 2.23731434513761e-05 | 6.80% | 7.29% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-multiples of 0x10]` | 2.4153705786085365e-05 | 2.232106667616376e-05 | 7.59% | 8.21% | 1.08x | ✅ | -| `hexbytes_getitem_index[1-palindrome ascii]` | 2.3997284524641675e-05 | 2.2352295763253378e-05 | 6.85% | 7.36% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-palindrome numeric]` | 2.3703576471447492e-05 | 2.2312168078273283e-05 | 5.87% | 6.24% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-palindrome]` | 2.3921338916415162e-05 | 2.242737764945785e-05 | 6.25% | 6.66% | 1.07x | ✅ | -| `hexbytes_getitem_index[1-repeated 0-9]` | 2.3882986148653527e-05 | 2.2425614154787146e-05 | 6.10% | 6.50% | 1.06x | ✅ | -| `hexbytes_getitem_index[1-two patterns]` | 2.388854772774617e-05 | 2.240852628090585e-05 | 6.20% | 6.60% | 1.07x | ✅ | -| `hexbytes_getitem_index[2-0-9]` | 2.3874871002614772e-05 | 2.2595767050003412e-05 | 5.36% | 5.66% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-4-byte pattern]` | 2.378837577320109e-05 | 2.256729257183067e-05 | 5.13% | 5.41% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-all byte values]` | 2.3473709014025585e-05 | 2.2662990168809288e-05 | 3.45% | 3.58% | 1.04x | ✅ | -| `hexbytes_getitem_index[2-alternating 0x00/0xff]` | 2.3819441526286557e-05 | 2.2629141689281784e-05 | 5.00% | 5.26% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-alternating 0xaa/0x55]` | 2.3788247969989892e-05 | 2.2559227085855442e-05 | 5.17% | 5.45% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-ascii sentence]` | 2.3881140895929696e-05 | 2.2503355213873067e-05 | 5.77% | 6.12% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-b'\\x00'*32]` | 2.3909324357148648e-05 | 2.2700414309150026e-05 | 5.06% | 5.33% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-b'\\x00\\xff\\x00\\xff']` | 2.3786758271363673e-05 | 2.256335284912241e-05 | 5.14% | 5.42% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-b'\\x01'*100]` | 2.3804630915860972e-05 | 2.2599882901266554e-05 | 5.06% | 5.33% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-b'\\x01'*2048]` | 2.3650964643674444e-05 | 2.2658351052203995e-05 | 4.20% | 4.38% | 1.04x | ✅ | -| `hexbytes_getitem_index[2-b'\\x01\\x02\\x03']` | 2.3901152032443655e-05 | 2.269953385166723e-05 | 5.03% | 5.29% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3902635114912487e-05 | 2.258400219130994e-05 | 5.52% | 5.84% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-b'\\x7f'*8]` | 2.3956975051065156e-05 | 2.2433761403873002e-05 | 6.36% | 6.79% | 1.07x | ✅ | -| `hexbytes_getitem_index[2-b'\\x80'*8]` | 2.4000884487649335e-05 | 2.2612079400099142e-05 | 5.79% | 6.14% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-b'\\xde\\xad\\xbe\\xef']` | 2.387051031228347e-05 | 2.2561639124750637e-05 | 5.48% | 5.80% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-b'\\xff'*64]` | 2.395242520577041e-05 | 2.262039730697539e-05 | 5.56% | 5.89% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-b'a'*1024]` | 2.3721300855653547e-05 | 2.5062847537239017e-05 | -5.66% | -5.35% | 0.95x | ❌ | -| `hexbytes_getitem_index[2-b'abc']` | 2.3925296484719404e-05 | 2.238723398853787e-05 | 6.43% | 6.87% | 1.07x | ✅ | -| `hexbytes_getitem_index[2-long alternating]` | 2.3631409339470236e-05 | 2.270989815763629e-05 | 3.90% | 4.06% | 1.04x | ✅ | -| `hexbytes_getitem_index[2-mixed pattern]` | 2.3917553928721185e-05 | 2.2468101242594494e-05 | 6.06% | 6.45% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-multiples of 0x10]` | 2.378429071656568e-05 | 2.260425237241182e-05 | 4.96% | 5.22% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-palindrome ascii]` | 2.3513794817634814e-05 | 2.280097648496391e-05 | 3.03% | 3.13% | 1.03x | ✅ | -| `hexbytes_getitem_index[2-palindrome numeric]` | 2.3615102503494594e-05 | 2.270456350190985e-05 | 3.86% | 4.01% | 1.04x | ✅ | -| `hexbytes_getitem_index[2-palindrome]` | 2.369638133083021e-05 | 2.264106485277953e-05 | 4.45% | 4.66% | 1.05x | ✅ | -| `hexbytes_getitem_index[2-repeated 0-9]` | 2.376862877791056e-05 | 2.2376456921488585e-05 | 5.86% | 6.22% | 1.06x | ✅ | -| `hexbytes_getitem_index[2-two patterns]` | 2.4077285971019048e-05 | 2.265738702958722e-05 | 5.90% | 6.27% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-0-9]` | 2.439369799811505e-05 | 2.253675959777434e-05 | 7.61% | 8.24% | 1.08x | ✅ | -| `hexbytes_getitem_index[3-4-byte pattern]` | 2.386717246825088e-05 | 2.243975488496998e-05 | 5.98% | 6.36% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-all byte values]` | 2.3799023966498162e-05 | 2.240720688782243e-05 | 5.85% | 6.21% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-alternating 0x00/0xff]` | 2.3962919643503147e-05 | 2.2542445438952883e-05 | 5.93% | 6.30% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-alternating 0xaa/0x55]` | 2.4433303155792243e-05 | 2.2581678686573463e-05 | 7.58% | 8.20% | 1.08x | ✅ | -| `hexbytes_getitem_index[3-ascii sentence]` | 2.370391824588414e-05 | 2.236818869361316e-05 | 5.64% | 5.97% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'\\x00'*32]` | 2.3741442385531174e-05 | 2.2449300535719423e-05 | 5.44% | 5.76% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'\\x00\\xff\\x00\\xff']` | 2.3642590889324142e-05 | 2.242886783222327e-05 | 5.13% | 5.41% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-b'\\x01'*100]` | 2.3910948504054585e-05 | 2.2485045934544003e-05 | 5.96% | 6.34% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'\\x01'*2048]` | 2.3716164249038793e-05 | 2.2490769745119254e-05 | 5.17% | 5.45% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3842339577157476e-05 | 2.2606873779719484e-05 | 5.18% | 5.47% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-b'\\x7f'*8]` | 2.3831313382717287e-05 | 2.2476603061146345e-05 | 5.68% | 6.03% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-b'\\x80'*8]` | 2.3692723389430334e-05 | 2.2530841402795717e-05 | 4.90% | 5.16% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-b'\\xde\\xad\\xbe\\xef']` | 2.3737964654743143e-05 | 2.2512745796212118e-05 | 5.16% | 5.44% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-b'\\xff'*64]` | 2.3658578308390954e-05 | 2.2779203305943146e-05 | 3.72% | 3.86% | 1.04x | ✅ | -| `hexbytes_getitem_index[3-b'a'*1024]` | 2.3855334593372263e-05 | 2.228266012547315e-05 | 6.59% | 7.06% | 1.07x | ✅ | -| `hexbytes_getitem_index[3-long alternating]` | 2.379532469536168e-05 | 2.273123458903386e-05 | 4.47% | 4.68% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-mixed pattern]` | 2.3809073739940073e-05 | 2.250883338219717e-05 | 5.46% | 5.78% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-multiples of 0x10]` | 2.3800334608921906e-05 | 2.2475127995915347e-05 | 5.57% | 5.90% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-palindrome ascii]` | 2.3834246395556575e-05 | 2.2496892882948072e-05 | 5.61% | 5.94% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-palindrome numeric]` | 2.392653327715017e-05 | 2.2501220115371612e-05 | 5.96% | 6.33% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-palindrome]` | 2.3566548828364226e-05 | 2.2415157208298935e-05 | 4.89% | 5.14% | 1.05x | ✅ | -| `hexbytes_getitem_index[3-repeated 0-9]` | 2.375054065781441e-05 | 2.2438583443993667e-05 | 5.52% | 5.85% | 1.06x | ✅ | -| `hexbytes_getitem_index[3-two patterns]` | 2.390830814374423e-05 | 2.2387012231341507e-05 | 6.36% | 6.80% | 1.07x | ✅ | -| `hexbytes_getitem_index[4-0-9]` | 2.3860426804613494e-05 | 2.303468474145708e-05 | 3.46% | 3.58% | 1.04x | ✅ | -| `hexbytes_getitem_index[4-4-byte pattern]` | 2.371701733597088e-05 | 2.2619075633073228e-05 | 4.63% | 4.85% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-all byte values]` | 2.3653544587480196e-05 | 2.2361993524046553e-05 | 5.46% | 5.78% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-alternating 0x00/0xff]` | 2.3904754490096712e-05 | 2.250823427695607e-05 | 5.84% | 6.20% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-alternating 0xaa/0x55]` | 2.3517849488132403e-05 | 2.2474955222076763e-05 | 4.43% | 4.64% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-ascii sentence]` | 2.362207759893742e-05 | 2.2450533847434663e-05 | 4.96% | 5.22% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-b'\\x00'*32]` | 2.374762076375316e-05 | 2.2532225114053345e-05 | 5.12% | 5.39% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-b'\\x01'*100]` | 2.3773919637662047e-05 | 2.2463245587186392e-05 | 5.51% | 5.83% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-b'\\x01'*2048]` | 2.375160053499626e-05 | 2.2292451148194973e-05 | 6.14% | 6.55% | 1.07x | ✅ | -| `hexbytes_getitem_index[4-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3899836759321147e-05 | 2.251437737829921e-05 | 5.80% | 6.15% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-b'\\x7f'*8]` | 2.3856474969524506e-05 | 2.2378458837154206e-05 | 6.20% | 6.60% | 1.07x | ✅ | -| `hexbytes_getitem_index[4-b'\\x80'*8]` | 2.388889848091968e-05 | 2.246377790210001e-05 | 5.97% | 6.34% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-b'\\xff'*64]` | 2.416365062100428e-05 | 2.2359556222050437e-05 | 7.47% | 8.07% | 1.08x | ✅ | -| `hexbytes_getitem_index[4-b'a'*1024]` | 2.3869906956677523e-05 | 2.2526865990605293e-05 | 5.63% | 5.96% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-long alternating]` | 2.3497115373928753e-05 | 2.247128467968984e-05 | 4.37% | 4.57% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-mixed pattern]` | 2.3806720648714753e-05 | 2.2406893363493278e-05 | 5.88% | 6.25% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-multiples of 0x10]` | 2.3753036366812696e-05 | 2.238585863714701e-05 | 5.76% | 6.11% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-palindrome ascii]` | 2.370483023887628e-05 | 2.2431662782420498e-05 | 5.37% | 5.68% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-palindrome numeric]` | 2.373627721647737e-05 | 2.2406648472272992e-05 | 5.60% | 5.93% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-palindrome]` | 2.3767029299258282e-05 | 2.2572461850716227e-05 | 5.03% | 5.29% | 1.05x | ✅ | -| `hexbytes_getitem_index[4-repeated 0-9]` | 2.38225532876968e-05 | 2.2434662394114503e-05 | 5.83% | 6.19% | 1.06x | ✅ | -| `hexbytes_getitem_index[4-two patterns]` | 2.384295706929274e-05 | 2.251970694455076e-05 | 5.55% | 5.88% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-0-9]` | 2.4248189104740953e-05 | 2.2400637581087466e-05 | 7.62% | 8.25% | 1.08x | ✅ | -| `hexbytes_getitem_index[5-4-byte pattern]` | 2.3821893881481354e-05 | 2.2471075941926205e-05 | 5.67% | 6.01% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-all byte values]` | 2.380855459913893e-05 | 2.2366614596256905e-05 | 6.06% | 6.45% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-alternating 0x00/0xff]` | 2.3930511243002562e-05 | 2.2435101782182286e-05 | 6.25% | 6.67% | 1.07x | ✅ | -| `hexbytes_getitem_index[5-alternating 0xaa/0x55]` | 2.3954371589133342e-05 | 2.2385198174316946e-05 | 6.55% | 7.01% | 1.07x | ✅ | -| `hexbytes_getitem_index[5-ascii sentence]` | 2.3800473999683568e-05 | 2.2393369712176927e-05 | 5.91% | 6.28% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-b'\\x00'*32]` | 2.3898545829205375e-05 | 2.255921141509606e-05 | 5.60% | 5.94% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-b'\\x01'*100]` | 2.3875203896918393e-05 | 2.2464589619196282e-05 | 5.91% | 6.28% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-b'\\x01'*2048]` | 2.382852421992495e-05 | 2.23906342502219e-05 | 6.03% | 6.42% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-b'\\x7f'*8]` | 2.3780812031940156e-05 | 2.2378183663124868e-05 | 5.90% | 6.27% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-b'\\x80'*8]` | 2.3740083218147064e-05 | 2.236032780277669e-05 | 5.81% | 6.17% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-b'\\xff'*64]` | 2.407765753479756e-05 | 2.2571715341949e-05 | 6.25% | 6.67% | 1.07x | ✅ | -| `hexbytes_getitem_index[5-b'a'*1024]` | 2.4051897335355348e-05 | 2.2480111373566207e-05 | 6.53% | 6.99% | 1.07x | ✅ | -| `hexbytes_getitem_index[5-long alternating]` | 2.3743341348274583e-05 | 2.244221334642182e-05 | 5.48% | 5.80% | 1.06x | ✅ | -| `hexbytes_getitem_index[5-mixed pattern]` | 2.4035202112700412e-05 | 2.2560207011135367e-05 | 6.14% | 6.54% | 1.07x | ✅ | -| `hexbytes_getitem_index[5-multiples of 0x10]` | 2.399239823736184e-05 | 2.245929546266039e-05 | 6.39% | 6.83% | 1.07x | ✅ | -| `hexbytes_getitem_index[5-palindrome ascii]` | 2.3892460190599218e-05 | 2.2213239789007683e-05 | 7.03% | 7.56% | 1.08x | ✅ | -| `hexbytes_getitem_index[5-palindrome]` | 2.3900620577957767e-05 | 2.293923130269364e-05 | 4.02% | 4.19% | 1.04x | ✅ | -| `hexbytes_getitem_index[5-repeated 0-9]` | 2.400664951478795e-05 | 2.239824139377637e-05 | 6.70% | 7.18% | 1.07x | ✅ | -| `hexbytes_getitem_index[5-two patterns]` | 2.386699073994476e-05 | 2.2472839612278768e-05 | 5.84% | 6.20% | 1.06x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-0-9]` | 8.32276641185018e-05 | 5.9392133539793776e-05 | 28.64% | 40.13% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-4-byte pattern]` | 8.32660487122901e-05 | 5.95357203027742e-05 | 28.50% | 39.86% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-all byte values]` | 8.33382902102735e-05 | 5.928682291806192e-05 | 28.86% | 40.57% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-alternating 0x00/0xff]` | 8.385854682063518e-05 | 5.9107574524644834e-05 | 29.52% | 41.87% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-alternating 0xaa/0x55]` | 8.373562891255854e-05 | 5.919563051720296e-05 | 29.31% | 41.46% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-ascii sentence]` | 8.324972504221016e-05 | 5.960700651708667e-05 | 28.40% | 39.66% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'']` | 7.932016947525156e-05 | 5.7115820812438964e-05 | 27.99% | 38.88% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00'*32]` | 8.292995274155987e-05 | 5.930130663020627e-05 | 28.49% | 39.85% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00\\xff\\x00\\xff']` | 8.316279294043541e-05 | 5.9241280421108735e-05 | 28.76% | 40.38% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*100]` | 8.395639228849057e-05 | 5.923882981249348e-05 | 29.44% | 41.73% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*2048]` | 8.367936740927366e-05 | 5.964635091092003e-05 | 28.72% | 40.29% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01\\x02\\x03']` | 8.271821450137845e-05 | 6.026804526073817e-05 | 27.14% | 37.25% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.350783454886942e-05 | 5.9373796787871524e-05 | 28.90% | 40.65% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x7f'*8]` | 8.377029632135502e-05 | 5.951573868183052e-05 | 28.95% | 40.75% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\x80'*8]` | 8.347913369061712e-05 | 5.935401823513363e-05 | 28.90% | 40.65% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\xde\\xad\\xbe\\xef']` | 8.25783527008288e-05 | 5.962091262378579e-05 | 27.80% | 38.51% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'\\xff'*64]` | 8.269321072481892e-05 | 5.9530914222902434e-05 | 28.01% | 38.91% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'a'*1024]` | 8.216836159190521e-05 | 6.119844371415817e-05 | 25.52% | 34.27% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-b'abc']` | 8.29193292756891e-05 | 5.9648766453563725e-05 | 28.06% | 39.01% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-long alternating]` | 8.346907949252995e-05 | 5.900201255697889e-05 | 29.31% | 41.47% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-mixed pattern]` | 8.326278403410781e-05 | 5.938259296010846e-05 | 28.68% | 40.21% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-multiples of 0x10]` | 8.341101905037474e-05 | 5.920007306769483e-05 | 29.03% | 40.90% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-palindrome ascii]` | 8.348660881494046e-05 | 5.917117532705174e-05 | 29.12% | 41.09% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-palindrome numeric]` | 8.377598217004357e-05 | 5.8259340330205355e-05 | 30.46% | 43.80% | 1.44x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-palindrome]` | 8.327757050714812e-05 | 5.942133069179488e-05 | 28.65% | 40.15% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-repeated 0-9]` | 8.417446569218182e-05 | 5.9077505804667156e-05 | 29.82% | 42.48% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-single 0xff]` | 8.096890751263667e-05 | 5.7799399363348916e-05 | 28.62% | 40.09% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-single null byte]` | 8.038271799105993e-05 | 5.741769295605544e-05 | 28.57% | 40.00% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(-3,None)-two patterns]` | 8.367443260409659e-05 | 5.9419627224032405e-05 | 28.99% | 40.82% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-0-9]` | 8.589274819902874e-05 | 6.0353272088903996e-05 | 29.73% | 42.32% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-4-byte pattern]` | 8.579040525059124e-05 | 6.0517280751551134e-05 | 29.46% | 41.76% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-all byte values]` | 8.490513116442084e-05 | 6.002004276790745e-05 | 29.31% | 41.46% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-alternating 0x00/0xff]` | 8.533308494723087e-05 | 5.9938315253642996e-05 | 29.76% | 42.37% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-alternating 0xaa/0x55]` | 8.547083980887567e-05 | 5.984092071035252e-05 | 29.99% | 42.83% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-ascii sentence]` | 8.60157234712693e-05 | 6.040517181753777e-05 | 29.77% | 42.40% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'']` | 8.207992622525732e-05 | 5.7769325184836234e-05 | 29.62% | 42.08% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x00'*32]` | 8.58702496313986e-05 | 6.0914847458932964e-05 | 29.06% | 40.97% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x00\\xff\\x00\\xff']` | 8.534888613834434e-05 | 6.0244062617905884e-05 | 29.41% | 41.67% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*100]` | 8.498257113583648e-05 | 6.0376828607576656e-05 | 28.95% | 40.75% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*2048]` | 8.53189279526048e-05 | 6.0724188678180417e-05 | 28.83% | 40.50% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x01\\x02\\x03']` | 8.604015703734421e-05 | 6.0794337675546786e-05 | 29.34% | 41.53% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.549712870737008e-05 | 6.003499101765047e-05 | 29.78% | 42.41% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x7f'*8]` | 8.721659776787429e-05 | 6.0805160174484554e-05 | 30.28% | 43.44% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\x80'*8]` | 8.516662837251062e-05 | 6.033016034387013e-05 | 29.16% | 41.17% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\xde\\xad\\xbe\\xef']` | 8.532536349607248e-05 | 6.0219052001491885e-05 | 29.42% | 41.69% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'\\xff'*64]` | 8.541486666137092e-05 | 5.9944906116263294e-05 | 29.82% | 42.49% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'a'*1024]` | 8.548784568240804e-05 | 6.011608571766489e-05 | 29.68% | 42.20% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-b'abc']` | 8.552006648789931e-05 | 6.0293675409293205e-05 | 29.50% | 41.84% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-long alternating]` | 8.66998763987192e-05 | 6.055310680722894e-05 | 30.16% | 43.18% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-mixed pattern]` | 8.557435522353925e-05 | 6.0540797722359984e-05 | 29.25% | 41.35% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-multiples of 0x10]` | 8.519605833139771e-05 | 6.002877735239444e-05 | 29.54% | 41.93% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-palindrome ascii]` | 8.596965904345099e-05 | 6.0631485237682544e-05 | 29.47% | 41.79% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-palindrome numeric]` | 8.520965820717488e-05 | 6.0704168373619484e-05 | 28.76% | 40.37% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-palindrome]` | 8.599056234263655e-05 | 6.016072291818725e-05 | 30.04% | 42.93% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-repeated 0-9]` | 8.52051909470375e-05 | 6.061754967211224e-05 | 28.86% | 40.56% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-single 0xff]` | 8.28890693472363e-05 | 5.8539082838904596e-05 | 29.38% | 41.60% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-single null byte]` | 8.23709397664725e-05 | 5.8345155815960616e-05 | 29.17% | 41.18% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(0,3)-two patterns]` | 8.566681155833708e-05 | 6.068387839699444e-05 | 29.16% | 41.17% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-0-9]` | 8.557013631360816e-05 | 5.9405515329987936e-05 | 30.58% | 44.04% | 1.44x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-4-byte pattern]` | 8.522436688243362e-05 | 5.9626118596123544e-05 | 30.04% | 42.93% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-all byte values]` | 8.512764024396662e-05 | 5.9952140702915984e-05 | 29.57% | 41.99% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-alternating 0x00/0xff]` | 8.500559724613708e-05 | 5.974098520355692e-05 | 29.72% | 42.29% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-alternating 0xaa/0x55]` | 8.525623742430138e-05 | 6.014805423029504e-05 | 29.45% | 41.74% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-ascii sentence]` | 8.408350887524309e-05 | 6.012422130986206e-05 | 28.49% | 39.85% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'']` | 8.382843727488694e-05 | 5.722731449007277e-05 | 31.73% | 46.48% | 1.46x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x00'*32]` | 8.559476491913702e-05 | 6.0490621718902786e-05 | 29.33% | 41.50% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x00\\xff\\x00\\xff']` | 8.526424844275364e-05 | 5.9710067044661e-05 | 29.97% | 42.80% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*100]` | 8.560429973253727e-05 | 6.020840682903669e-05 | 29.67% | 42.18% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*2048]` | 8.48113818854283e-05 | 5.968545731153144e-05 | 29.63% | 42.10% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x01\\x02\\x03']` | 8.5674736456771e-05 | 6.066469504960577e-05 | 29.19% | 41.23% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.493533350440145e-05 | 6.010516690905615e-05 | 29.23% | 41.31% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x7f'*8]` | 8.510780105097976e-05 | 6.038849383004164e-05 | 29.04% | 40.93% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\x80'*8]` | 8.537998260930513e-05 | 5.989029554413826e-05 | 29.85% | 42.56% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\xde\\xad\\xbe\\xef']` | 8.56018688341726e-05 | 5.944772340661606e-05 | 30.55% | 44.00% | 1.44x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'\\xff'*64]` | 8.51548627884011e-05 | 6.046487702638672e-05 | 28.99% | 40.83% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'a'*1024]` | 8.568353813231655e-05 | 6.040461251268431e-05 | 29.50% | 41.85% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-b'abc']` | 8.542602842411513e-05 | 6.036451065527349e-05 | 29.34% | 41.52% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-long alternating]` | 8.458949745874604e-05 | 6.0255257901389506e-05 | 28.77% | 40.39% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-mixed pattern]` | 8.306242841405523e-05 | 6.009628290781094e-05 | 27.65% | 38.22% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-multiples of 0x10]` | 8.521217344283e-05 | 6.009221629916794e-05 | 29.48% | 41.80% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-palindrome ascii]` | 8.625153003892215e-05 | 5.998215228240877e-05 | 30.46% | 43.80% | 1.44x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-palindrome numeric]` | 8.384860176051902e-05 | 6.012112239473286e-05 | 28.30% | 39.47% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-palindrome]` | 8.554333720321167e-05 | 5.976190750682727e-05 | 30.14% | 43.14% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-repeated 0-9]` | 8.426675182364554e-05 | 6.018901363411315e-05 | 28.57% | 40.00% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-single 0xff]` | 7.96065765513371e-05 | 5.809394615242466e-05 | 27.02% | 37.03% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-single null byte]` | 8.032398525356815e-05 | 5.7965923652190144e-05 | 27.83% | 38.57% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(1,6)-two patterns]` | 8.406606839157142e-05 | 6.034577512429265e-05 | 28.22% | 39.31% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-0-9]` | 8.190674649126556e-05 | 5.854445675744449e-05 | 28.52% | 39.91% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-4-byte pattern]` | 8.436722389445974e-05 | 6.0799994596595585e-05 | 27.93% | 38.76% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-all byte values]` | 8.661939225028212e-05 | 6.0775609727275464e-05 | 29.84% | 42.52% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-alternating 0x00/0xff]` | 8.309491396124049e-05 | 5.973195991565079e-05 | 28.12% | 39.11% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-alternating 0xaa/0x55]` | 8.253984613513597e-05 | 5.971091334612533e-05 | 27.66% | 38.23% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-ascii sentence]` | 8.3341431932376e-05 | 5.967265682135002e-05 | 28.40% | 39.66% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'']` | 7.881684353985629e-05 | 5.676169861042841e-05 | 27.98% | 38.86% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x00'*32]` | 8.324971387561403e-05 | 6.051674770862192e-05 | 27.31% | 37.56% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x00\\xff\\x00\\xff']` | 8.245541290454048e-05 | 5.9743096353115184e-05 | 27.54% | 38.02% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*100]` | 8.301139261550149e-05 | 6.027558843074417e-05 | 27.39% | 37.72% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*2048]` | 0.00010797276022616967 | 8.308728367426276e-05 | 23.05% | 29.95% | 1.30x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x01\\x02\\x03']` | 7.959053485863148e-05 | 5.777683327319688e-05 | 27.41% | 37.76% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.222840028762428e-05 | 5.9429699590781224e-05 | 27.73% | 38.36% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x7f'*8]` | 8.215461055463192e-05 | 5.934957960539131e-05 | 27.76% | 38.42% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\x80'*8]` | 8.290044960897929e-05 | 5.947489891233341e-05 | 28.26% | 39.39% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\xde\\xad\\xbe\\xef']` | 8.977207539402503e-05 | 5.9388333822126925e-05 | 33.85% | 51.16% | 1.51x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'\\xff'*64]` | 8.343981791751911e-05 | 6.0098192351054565e-05 | 27.97% | 38.84% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'a'*1024]` | 0.00010281438366650724 | 7.473150524042893e-05 | 27.31% | 37.58% | 1.38x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-b'abc']` | 7.922704930416912e-05 | 5.828210827974682e-05 | 26.44% | 35.94% | 1.36x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-long alternating]` | 0.0001008617329858742 | 7.603772418434353e-05 | 24.61% | 32.65% | 1.33x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-mixed pattern]` | 8.445720289607102e-05 | 6.0472811128150825e-05 | 28.40% | 39.66% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-multiples of 0x10]` | 8.246743260668376e-05 | 6.125156273890022e-05 | 25.73% | 34.64% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-palindrome ascii]` | 8.316748366018358e-05 | 5.9335189927639554e-05 | 28.66% | 40.17% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-palindrome numeric]` | 8.240192479935688e-05 | 5.9188481719440463e-05 | 28.17% | 39.22% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-palindrome]` | 8.282882409882076e-05 | 5.945190133296893e-05 | 28.22% | 39.32% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-repeated 0-9]` | 8.407986504002371e-05 | 5.9798152072744695e-05 | 28.88% | 40.61% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-single 0xff]` | 7.922120280697799e-05 | 5.6935412853129575e-05 | 28.13% | 39.14% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-single null byte]` | 7.948541050228543e-05 | 5.7350042932915996e-05 | 27.85% | 38.60% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(2,None)-two patterns]` | 8.339168913302604e-05 | 5.948740287373026e-05 | 28.67% | 40.18% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-0-9]` | 8.146905082244557e-05 | 5.755845256959647e-05 | 29.35% | 41.54% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-4-byte pattern]` | 8.237840233046554e-05 | 5.9310751643105504e-05 | 28.00% | 38.89% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-all byte values]` | 8.265635868290242e-05 | 5.916134133437624e-05 | 28.42% | 39.71% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-alternating 0x00/0xff]` | 8.169673806797571e-05 | 5.832842685040504e-05 | 28.60% | 40.06% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-alternating 0xaa/0x55]` | 8.185877131338807e-05 | 5.851336179867169e-05 | 28.52% | 39.90% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-ascii sentence]` | 8.192488683935511e-05 | 5.797788952938418e-05 | 29.23% | 41.30% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'']` | 7.761042719632246e-05 | 5.530506029868729e-05 | 28.74% | 40.33% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x00'*32]` | 8.372799346744341e-05 | 5.8100580887757596e-05 | 30.61% | 44.11% | 1.44x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x00\\xff\\x00\\xff']` | 8.162098637628971e-05 | 5.7446373549558824e-05 | 29.62% | 42.08% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*100]` | 8.193004183538208e-05 | 5.890377963308224e-05 | 28.10% | 39.09% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*2048]` | 0.00010641362550643201 | 7.879420639688185e-05 | 25.95% | 35.05% | 1.35x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x01\\x02\\x03']` | 8.190489869314932e-05 | 5.8076256524106635e-05 | 29.09% | 41.03% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.153149012586322e-05 | 5.7793750603990706e-05 | 29.11% | 41.07% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x7f'*8]` | 8.169410998190315e-05 | 5.708734804244775e-05 | 30.12% | 43.10% | 1.43x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\x80'*8]` | 8.203530257101946e-05 | 5.6962805277869094e-05 | 30.56% | 44.02% | 1.44x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\xde\\xad\\xbe\\xef']` | 8.121518646630655e-05 | 5.755053944538901e-05 | 29.14% | 41.12% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'\\xff'*64]` | 8.21628200508517e-05 | 5.819491244922907e-05 | 29.17% | 41.19% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'a'*1024]` | 9.779578610550654e-05 | 7.317613872506656e-05 | 25.17% | 33.64% | 1.34x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-b'abc']` | 8.223648413879729e-05 | 5.796567843795873e-05 | 29.51% | 41.87% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-long alternating]` | 9.99245278423855e-05 | 7.298895844882583e-05 | 26.96% | 36.90% | 1.37x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-mixed pattern]` | 8.385222791377953e-05 | 5.823933095859904e-05 | 30.55% | 43.98% | 1.44x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-multiples of 0x10]` | 8.197195192671946e-05 | 5.648337876794043e-05 | 31.09% | 45.13% | 1.45x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-palindrome ascii]` | 8.155076945856169e-05 | 5.752301032790361e-05 | 29.46% | 41.77% | 1.42x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-palindrome numeric]` | 8.11165873978217e-05 | 5.781050799802059e-05 | 28.73% | 40.31% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-palindrome]` | 8.192592116868612e-05 | 5.794422635597991e-05 | 29.27% | 41.39% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-repeated 0-9]` | 8.243455492022623e-05 | 5.826076186286292e-05 | 29.32% | 41.49% | 1.41x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-single 0xff]` | 7.877124331271905e-05 | 5.615964382683851e-05 | 28.71% | 40.26% | 1.40x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-single null byte]` | 7.823631717472704e-05 | 5.6233273908239645e-05 | 28.12% | 39.13% | 1.39x | ✅ | -| `hexbytes_getitem_slice[slice(None,None)-two patterns]` | 8.22571312824803e-05 | 5.825821031197209e-05 | 29.18% | 41.19% | 1.41x | ✅ | -| `hexbytes_new['']` | 7.191205345480013e-05 | 3.6156903247600816e-05 | 49.72% | 98.89% | 1.99x | ✅ | -| `hexbytes_new['0x'+'00'*64]` | 9.2453591626881e-05 | 4.986079760998382e-05 | 46.07% | 85.42% | 1.85x | ✅ | -| `hexbytes_new['0x'+'a'*128]` | 9.30449618590328e-05 | 5.035942043565867e-05 | 45.88% | 84.76% | 1.85x | ✅ | -| `hexbytes_new['0x'+'ff'*32]` | 9.189116277047179e-05 | 4.7672181606842344e-05 | 48.12% | 92.76% | 1.93x | ✅ | -| `hexbytes_new['0x']` | 7.934523336677422e-05 | 3.7951552345238005e-05 | 52.17% | 109.07% | 2.09x | ✅ | -| `hexbytes_new['0x1234']` | 8.766373532885638e-05 | 4.4810808401692795e-05 | 48.88% | 95.63% | 1.96x | ✅ | -| `hexbytes_new['0xCAFEBABE']` | 8.677029505377376e-05 | 4.421178324104536e-05 | 49.05% | 96.26% | 1.96x | ✅ | -| `hexbytes_new['0xabcdef']` | 8.72536539483624e-05 | 4.5644747732748906e-05 | 47.69% | 91.16% | 1.91x | ✅ | -| `hexbytes_new['0xdeadbeef']` | 8.71303589421189e-05 | 4.562096547871489e-05 | 47.64% | 90.99% | 1.91x | ✅ | -| `hexbytes_new['abc']` | 8.39874714593401e-05 | 4.759717629870371e-05 | 43.33% | 76.45% | 1.76x | ✅ | -| `hexbytes_new['deadbeef']` | 7.859565384924951e-05 | 4.090706587795483e-05 | 47.95% | 92.13% | 1.92x | ✅ | -| `hexbytes_new[0-9]` | 4.550280969867527e-05 | 2.600225259900955e-05 | 42.86% | 75.00% | 1.75x | ✅ | -| `hexbytes_new[0]` | 0.00012408794369145557 | 6.0756829376676467e-05 | 51.04% | 104.24% | 2.04x | ✅ | -| `hexbytes_new[123456]` | 0.00012905433637957732 | 6.53093542617329e-05 | 49.39% | 97.60% | 1.98x | ✅ | -| `hexbytes_new[2**16]` | 0.0001308623769712392 | 6.552587949886654e-05 | 49.93% | 99.71% | 2.00x | ✅ | -| `hexbytes_new[2**256-1]` | 0.00013259275936302803 | 7.384774570060862e-05 | 44.30% | 79.55% | 1.80x | ✅ | -| `hexbytes_new[2**32]` | 0.00013094473797798566 | 6.90967574046993e-05 | 47.23% | 89.51% | 1.90x | ✅ | -| `hexbytes_new[2**64]` | 0.00013440956040928635 | 7.26865982088707e-05 | 45.92% | 84.92% | 1.85x | ✅ | -| `hexbytes_new[2**8]` | 0.00012641292708056402 | 6.330106925262815e-05 | 49.93% | 99.70% | 2.00x | ✅ | -| `hexbytes_new[4-byte pattern]` | 4.362004045280963e-05 | 2.6911734961396298e-05 | 38.30% | 62.09% | 1.62x | ✅ | -| `hexbytes_new[False]` | 6.0645945934053214e-05 | 2.716958239118988e-05 | 55.20% | 123.21% | 2.23x | ✅ | -| `hexbytes_new[True]` | 6.0334158166627326e-05 | 2.7415235748202844e-05 | 54.56% | 120.08% | 2.20x | ✅ | -| `hexbytes_new[all byte values]` | 4.3911377734017934e-05 | 2.683600095969989e-05 | 38.89% | 63.63% | 1.64x | ✅ | -| `hexbytes_new[alternating 0x00/0xff]` | 4.3920513293090255e-05 | 2.650232187292285e-05 | 39.66% | 65.72% | 1.66x | ✅ | -| `hexbytes_new[alternating 0xaa/0x55]` | 4.374538487079925e-05 | 2.6760241886215845e-05 | 38.83% | 63.47% | 1.63x | ✅ | -| `hexbytes_new[ascii sentence]` | 4.3676776314734305e-05 | 2.6376644958874928e-05 | 39.61% | 65.59% | 1.66x | ✅ | -| `hexbytes_new[b'']` | 4.5212016050316594e-05 | 2.57385698341687e-05 | 43.07% | 75.66% | 1.76x | ✅ | -| `hexbytes_new[b'\\x00'*32]` | 4.301393312270818e-05 | 2.609798466363096e-05 | 39.33% | 64.82% | 1.65x | ✅ | -| `hexbytes_new[b'\\x00\\xff\\x00\\xff']` | 4.5741936285582744e-05 | 2.611775215526315e-05 | 42.90% | 75.14% | 1.75x | ✅ | -| `hexbytes_new[b'\\x01'*100]` | 4.436460663753062e-05 | 2.6372541342750785e-05 | 40.55% | 68.22% | 1.68x | ✅ | -| `hexbytes_new[b'\\x01'*2048]` | 5.6242055704242035e-05 | 3.868517878441558e-05 | 31.22% | 45.38% | 1.45x | ✅ | -| `hexbytes_new[b'\\x01\\x02\\x03']` | 4.5466731817215816e-05 | 2.6071107403941655e-05 | 42.66% | 74.40% | 1.74x | ✅ | -| `hexbytes_new[b'\\x10\\x20\\x30\\x40\\x50']` | 4.616272798162098e-05 | 2.6144821919931078e-05 | 43.36% | 76.57% | 1.77x | ✅ | -| `hexbytes_new[b'\\x7f'*8]` | 4.4995454377686266e-05 | 2.6062086965096205e-05 | 42.08% | 72.65% | 1.73x | ✅ | -| `hexbytes_new[b'\\x80'*8]` | 4.495119586956768e-05 | 2.6075722268845037e-05 | 41.99% | 72.39% | 1.72x | ✅ | -| `hexbytes_new[b'\\xde\\xad\\xbe\\xef']` | 4.563272356212131e-05 | 2.598826341701107e-05 | 43.05% | 75.59% | 1.76x | ✅ | -| `hexbytes_new[b'\\xff'*64]` | 4.3420740426716346e-05 | 2.6498633518126992e-05 | 38.97% | 63.86% | 1.64x | ✅ | -| `hexbytes_new[b'a'*1024]` | 5.002392545033268e-05 | 3.2804967738388224e-05 | 34.42% | 52.49% | 1.52x | ✅ | -| `hexbytes_new[b'abc']` | 4.5148190163270386e-05 | 2.600176582178445e-05 | 42.41% | 73.64% | 1.74x | ✅ | -| `hexbytes_new[bytearray(0-9)]` | 6.96947702157491e-05 | 3.71017329527819e-05 | 46.77% | 87.85% | 1.88x | ✅ | -| `hexbytes_new[bytearray(4-byte pattern)]` | 7.010664958985715e-05 | 3.790294929582462e-05 | 45.94% | 84.96% | 1.85x | ✅ | -| `hexbytes_new[bytearray(all byte values)]` | 6.967078730103361e-05 | 3.8109291801591446e-05 | 45.30% | 82.82% | 1.83x | ✅ | -| `hexbytes_new[bytearray(alternating 0x00/0xff)]` | 7.007854018675634e-05 | 3.761663889094393e-05 | 46.32% | 86.30% | 1.86x | ✅ | -| `hexbytes_new[bytearray(alternating 0xaa/0x55)]` | 6.96436705358402e-05 | 3.774757739187778e-05 | 45.80% | 84.50% | 1.84x | ✅ | -| `hexbytes_new[bytearray(ascii sentence)]` | 6.962337941622524e-05 | 3.705490452386085e-05 | 46.78% | 87.89% | 1.88x | ✅ | -| `hexbytes_new[bytearray(b'')]` | 6.915907194889651e-05 | 3.503701450349708e-05 | 49.34% | 97.39% | 1.97x | ✅ | -| `hexbytes_new[bytearray(b'\\x00'*32)]` | 6.957097014361838e-05 | 3.7377601858369035e-05 | 46.27% | 86.13% | 1.86x | ✅ | -| `hexbytes_new[bytearray(b'\\x00\\xff\\x00\\xff')]` | 7.081247841455098e-05 | 3.738965960156375e-05 | 47.20% | 89.39% | 1.89x | ✅ | -| `hexbytes_new[bytearray(b'\\x01'*100)]` | 7.010073897005398e-05 | 3.775960091661915e-05 | 46.14% | 85.65% | 1.86x | ✅ | -| `hexbytes_new[bytearray(b'\\x01'*2048)]` | 8.961822545748723e-05 | 5.464359891879814e-05 | 39.03% | 64.00% | 1.64x | ✅ | -| `hexbytes_new[bytearray(b'\\x01\\x02\\x03')]` | 7.013884875778293e-05 | 3.7465587465318865e-05 | 46.58% | 87.21% | 1.87x | ✅ | -| `hexbytes_new[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 6.91977893180953e-05 | 3.704874651605604e-05 | 46.46% | 86.77% | 1.87x | ✅ | -| `hexbytes_new[bytearray(b'\\x7f'*8)]` | 7.092748527113357e-05 | 3.722132162648545e-05 | 47.52% | 90.56% | 1.91x | ✅ | -| `hexbytes_new[bytearray(b'\\x80'*8)]` | 6.827195363601445e-05 | 3.7220926812601647e-05 | 45.48% | 83.42% | 1.83x | ✅ | -| `hexbytes_new[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 7.031970628483075e-05 | 3.741012712943005e-05 | 46.80% | 87.97% | 1.88x | ✅ | -| `hexbytes_new[bytearray(b'\\xff'*64)]` | 6.887530216052492e-05 | 3.869579081019998e-05 | 43.82% | 77.99% | 1.78x | ✅ | -| `hexbytes_new[bytearray(b'a'*1024)]` | 8.530271796528696e-05 | 5.0831526755599075e-05 | 40.41% | 67.81% | 1.68x | ✅ | -| `hexbytes_new[bytearray(b'abc')]` | 7.005153568871182e-05 | 3.729871524484331e-05 | 46.76% | 87.81% | 1.88x | ✅ | -| `hexbytes_new[bytearray(long alternating)]` | 8.43192647520283e-05 | 4.897102229573958e-05 | 41.92% | 72.18% | 1.72x | ✅ | -| `hexbytes_new[bytearray(mixed pattern)]` | 6.951866148905018e-05 | 3.7780212591029484e-05 | 45.65% | 84.01% | 1.84x | ✅ | -| `hexbytes_new[bytearray(multiples of 0x10)]` | 6.850446294415748e-05 | 3.697705565146936e-05 | 46.02% | 85.26% | 1.85x | ✅ | -| `hexbytes_new[bytearray(palindrome ascii)]` | 6.930157517814214e-05 | 3.731926540409419e-05 | 46.15% | 85.70% | 1.86x | ✅ | -| `hexbytes_new[bytearray(palindrome numeric)]` | 6.873471147844537e-05 | 3.720466446451209e-05 | 45.87% | 84.75% | 1.85x | ✅ | -| `hexbytes_new[bytearray(palindrome)]` | 7.047387678378979e-05 | 3.7516632979952807e-05 | 46.77% | 87.85% | 1.88x | ✅ | -| `hexbytes_new[bytearray(repeated 0-9)]` | 6.910517965350705e-05 | 3.772831566686903e-05 | 45.40% | 83.17% | 1.83x | ✅ | -| `hexbytes_new[bytearray(single 0xff)]` | 6.9735995678985e-05 | 3.752950268569966e-05 | 46.18% | 85.82% | 1.86x | ✅ | -| `hexbytes_new[bytearray(single null byte)]` | 7.019922904370778e-05 | 3.7446669235222476e-05 | 46.66% | 87.46% | 1.87x | ✅ | -| `hexbytes_new[bytearray(two patterns)]` | 6.850404063635144e-05 | 3.770531425648953e-05 | 44.96% | 81.68% | 1.82x | ✅ | -| `hexbytes_new[long alternating]` | 5.064790425410023e-05 | 3.27166835765398e-05 | 35.40% | 54.81% | 1.55x | ✅ | -| `hexbytes_new[memoryview(0-9)]` | 8.259924141523795e-05 | 4.3249196441611925e-05 | 47.64% | 90.98% | 1.91x | ✅ | -| `hexbytes_new[memoryview(4-byte pattern)]` | 8.421811841988154e-05 | 4.326109602672626e-05 | 48.63% | 94.67% | 1.95x | ✅ | -| `hexbytes_new[memoryview(all byte values)]` | 8.502828590720312e-05 | 4.336502484507728e-05 | 49.00% | 96.08% | 1.96x | ✅ | -| `hexbytes_new[memoryview(alternating 0x00/0xff)]` | 8.337381691198904e-05 | 4.283239907286774e-05 | 48.63% | 94.65% | 1.95x | ✅ | -| `hexbytes_new[memoryview(alternating 0xaa/0x55)]` | 8.331452945275645e-05 | 4.2435043783499907e-05 | 49.07% | 96.33% | 1.96x | ✅ | -| `hexbytes_new[memoryview(ascii sentence)]` | 8.39356600050079e-05 | 4.2782069134518204e-05 | 49.03% | 96.19% | 1.96x | ✅ | -| `hexbytes_new[memoryview(b'')]` | 8.115164625990701e-05 | 3.9676029740172826e-05 | 51.11% | 104.54% | 2.05x | ✅ | -| `hexbytes_new[memoryview(b'\\x00'*32)]` | 8.272360570065305e-05 | 4.309540089200309e-05 | 47.90% | 91.95% | 1.92x | ✅ | -| `hexbytes_new[memoryview(b'\\x00\\xff\\x00\\xff')]` | 8.273753171139944e-05 | 4.286367576630053e-05 | 48.19% | 93.02% | 1.93x | ✅ | -| `hexbytes_new[memoryview(b'\\x01'*100)]` | 8.317839379567048e-05 | 4.297396369450455e-05 | 48.34% | 93.56% | 1.94x | ✅ | -| `hexbytes_new[memoryview(b'\\x01'*2048)]` | 0.00010384068753392566 | 6.21602480474859e-05 | 40.14% | 67.05% | 1.67x | ✅ | -| `hexbytes_new[memoryview(b'\\x01\\x02\\x03')]` | 8.328504356153329e-05 | 4.2895335876753366e-05 | 48.50% | 94.16% | 1.94x | ✅ | -| `hexbytes_new[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 8.401971848259507e-05 | 4.273402649331273e-05 | 49.14% | 96.61% | 1.97x | ✅ | -| `hexbytes_new[memoryview(b'\\x7f'*8)]` | 8.267212937830791e-05 | 4.342589005250742e-05 | 47.47% | 90.38% | 1.90x | ✅ | -| `hexbytes_new[memoryview(b'\\x80'*8)]` | 8.115790310181659e-05 | 4.342896920724569e-05 | 46.49% | 86.88% | 1.87x | ✅ | -| `hexbytes_new[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 8.343541754048697e-05 | 4.302937347274966e-05 | 48.43% | 93.90% | 1.94x | ✅ | -| `hexbytes_new[memoryview(b'\\xff'*64)]` | 8.166308316540824e-05 | 4.30550504360115e-05 | 47.28% | 89.67% | 1.90x | ✅ | -| `hexbytes_new[memoryview(b'a'*1024)]` | 9.870087881891286e-05 | 5.583071029244206e-05 | 43.43% | 76.79% | 1.77x | ✅ | -| `hexbytes_new[memoryview(b'abc')]` | 8.393499147773037e-05 | 4.2360970574565455e-05 | 49.53% | 98.14% | 1.98x | ✅ | -| `hexbytes_new[memoryview(long alternating)]` | 9.827908276403593e-05 | 5.620402002457057e-05 | 42.81% | 74.86% | 1.75x | ✅ | -| `hexbytes_new[memoryview(mixed pattern)]` | 8.423481251123282e-05 | 4.2936700948622235e-05 | 49.03% | 96.18% | 1.96x | ✅ | -| `hexbytes_new[memoryview(multiples of 0x10)]` | 8.225366369649692e-05 | 4.317243844163413e-05 | 47.51% | 90.52% | 1.91x | ✅ | -| `hexbytes_new[memoryview(palindrome ascii)]` | 8.394170653496689e-05 | 4.2845723537889474e-05 | 48.96% | 95.92% | 1.96x | ✅ | -| `hexbytes_new[memoryview(palindrome numeric)]` | 8.318085751424985e-05 | 4.2501938486879665e-05 | 48.90% | 95.71% | 1.96x | ✅ | -| `hexbytes_new[memoryview(palindrome)]` | 8.502180491960375e-05 | 4.299385413145483e-05 | 49.43% | 97.75% | 1.98x | ✅ | -| `hexbytes_new[memoryview(repeated 0-9)]` | 8.517594143493324e-05 | 4.3122918266756394e-05 | 49.37% | 97.52% | 1.98x | ✅ | -| `hexbytes_new[memoryview(single 0xff)]` | 8.446110874919173e-05 | 4.285124015974651e-05 | 49.27% | 97.10% | 1.97x | ✅ | -| `hexbytes_new[memoryview(single null byte)]` | 8.357215066529933e-05 | 4.247278935869429e-05 | 49.18% | 96.77% | 1.97x | ✅ | -| `hexbytes_new[memoryview(two patterns)]` | 8.402022805770297e-05 | 4.27182187528165e-05 | 49.16% | 96.68% | 1.97x | ✅ | -| `hexbytes_new[mixed pattern]` | 4.358574530954181e-05 | 2.6702209604829674e-05 | 38.74% | 63.23% | 1.63x | ✅ | -| `hexbytes_new[multiples of 0x10]` | 4.5985371040188524e-05 | 2.609839182406303e-05 | 43.25% | 76.20% | 1.76x | ✅ | -| `hexbytes_new[palindrome ascii]` | 4.542694188400667e-05 | 2.594903133094324e-05 | 42.88% | 75.06% | 1.75x | ✅ | -| `hexbytes_new[palindrome numeric]` | 4.5533104144037265e-05 | 2.6038983941374473e-05 | 42.81% | 74.87% | 1.75x | ✅ | -| `hexbytes_new[palindrome]` | 4.566038611121606e-05 | 2.615134731450359e-05 | 42.73% | 74.60% | 1.75x | ✅ | -| `hexbytes_new[repeated 0-9]` | 4.35884506685385e-05 | 2.6468024469762155e-05 | 39.28% | 64.68% | 1.65x | ✅ | -| `hexbytes_new[single 0xff]` | 4.492678251455585e-05 | 2.5878347592516068e-05 | 42.40% | 73.61% | 1.74x | ✅ | -| `hexbytes_new[single null byte]` | 4.514802924713938e-05 | 2.58225828864893e-05 | 42.80% | 74.84% | 1.75x | ✅ | -| `hexbytes_new[two patterns]` | 4.3448333194963355e-05 | 2.6585952091118598e-05 | 38.81% | 63.43% | 1.63x | ✅ | -| `hexbytes_repr[0-9]` | 2.90917062480457e-05 | 1.4891940895303129e-05 | 48.81% | 95.35% | 1.95x | ✅ | -| `hexbytes_repr[4-byte pattern]` | 0.00011971625384044225 | 4.066434470590167e-05 | 66.03% | 194.40% | 2.94x | ✅ | -| `hexbytes_repr[all byte values]` | 0.00011980209942103418 | 4.0952586968401107e-05 | 65.82% | 192.54% | 2.93x | ✅ | -| `hexbytes_repr[alternating 0x00/0xff]` | 4.877746835484394e-05 | 2.017249572309728e-05 | 58.64% | 141.80% | 2.42x | ✅ | -| `hexbytes_repr[alternating 0xaa/0x55]` | 4.8921292559526905e-05 | 2.0702599071843557e-05 | 57.68% | 136.31% | 2.36x | ✅ | -| `hexbytes_repr[ascii sentence]` | 4.0663303363781104e-05 | 1.829174674269637e-05 | 55.02% | 122.30% | 2.22x | ✅ | -| `hexbytes_repr[b'']` | 2.1423255966738722e-05 | 1.2485745617730196e-05 | 41.72% | 71.58% | 1.72x | ✅ | -| `hexbytes_repr[b'\\x00'*32]` | 3.668725209629936e-05 | 1.713188272425832e-05 | 53.30% | 114.15% | 2.14x | ✅ | -| `hexbytes_repr[b'\\x00\\xff\\x00\\xff']` | 2.6460860454927108e-05 | 1.4226364154586392e-05 | 46.24% | 86.00% | 1.86x | ✅ | -| `hexbytes_repr[b'\\x01'*100]` | 6.181529100321468e-05 | 2.3799380239366954e-05 | 61.50% | 159.73% | 2.60x | ✅ | -| `hexbytes_repr[b'\\x01'*2048]` | 0.0007614429280748219 | 0.00022326650460278 | 70.68% | 241.05% | 3.41x | ✅ | -| `hexbytes_repr[b'\\x01\\x02\\x03']` | 2.611378302187971e-05 | 1.42731660378973e-05 | 45.34% | 82.96% | 1.83x | ✅ | -| `hexbytes_repr[b'\\x10\\x20\\x30\\x40\\x50']` | 2.680525743059527e-05 | 1.4178100169254488e-05 | 47.11% | 89.06% | 1.89x | ✅ | -| `hexbytes_repr[b'\\x7f'*8]` | 2.8219841029493324e-05 | 1.4588338953195674e-05 | 48.30% | 93.44% | 1.93x | ✅ | -| `hexbytes_repr[b'\\x80'*8]` | 2.837019625680039e-05 | 1.4704814737548184e-05 | 48.17% | 92.93% | 1.93x | ✅ | -| `hexbytes_repr[b'\\xde\\xad\\xbe\\xef']` | 2.6383961637081323e-05 | 1.406136358049372e-05 | 46.70% | 87.63% | 1.88x | ✅ | -| `hexbytes_repr[b'\\xff'*64]` | 4.8781932533750604e-05 | 2.0134414260777473e-05 | 58.73% | 142.28% | 2.42x | ✅ | -| `hexbytes_repr[b'a'*1024]` | 0.00039861062091936923 | 0.00011896985405342659 | 70.15% | 235.05% | 3.35x | ✅ | -| `hexbytes_repr[b'abc']` | 2.628475519274224e-05 | 1.4315050134941631e-05 | 45.54% | 83.62% | 1.84x | ✅ | -| `hexbytes_repr[long alternating]` | 0.0003979663907263547 | 0.0001228467701204065 | 69.13% | 223.95% | 3.24x | ✅ | -| `hexbytes_repr[mixed pattern]` | 9.7913006214038e-05 | 3.399208503061899e-05 | 65.28% | 188.05% | 2.88x | ✅ | -| `hexbytes_repr[multiples of 0x10]` | 2.8965290377602712e-05 | 1.4834659482516764e-05 | 48.78% | 95.25% | 1.95x | ✅ | -| `hexbytes_repr[palindrome ascii]` | 2.7695533751385868e-05 | 1.4505520739620352e-05 | 47.63% | 90.93% | 1.91x | ✅ | -| `hexbytes_repr[palindrome numeric]` | 2.7115952890482598e-05 | 1.4305379216417575e-05 | 47.24% | 89.55% | 1.90x | ✅ | -| `hexbytes_repr[palindrome]` | 3.1926683114550975e-05 | 1.578801466263184e-05 | 50.55% | 102.22% | 2.02x | ✅ | -| `hexbytes_repr[repeated 0-9]` | 6.193758389401909e-05 | 2.395005739659018e-05 | 61.33% | 158.61% | 2.59x | ✅ | -| `hexbytes_repr[single 0xff]` | 2.568116981167715e-05 | 1.3752781280746002e-05 | 46.45% | 86.73% | 1.87x | ✅ | -| `hexbytes_repr[single null byte]` | 2.569787108573903e-05 | 1.3965290934070544e-05 | 45.66% | 84.01% | 1.84x | ✅ | -| `hexbytes_repr[two patterns]` | 4.876871993542943e-05 | 2.015990358348897e-05 | 58.66% | 141.91% | 2.42x | ✅ | -| `hexbytes_to_0x_hex[0-9]` | 1.546978882659725e-05 | 1.3896885308674311e-05 | 10.17% | 11.32% | 1.11x | ✅ | -| `hexbytes_to_0x_hex[4-byte pattern]` | 4.197563585590553e-05 | 3.942983815323764e-05 | 6.06% | 6.46% | 1.06x | ✅ | -| `hexbytes_to_0x_hex[all byte values]` | 4.203846115061454e-05 | 3.973475141840655e-05 | 5.48% | 5.80% | 1.06x | ✅ | -| `hexbytes_to_0x_hex[alternating 0x00/0xff]` | 2.061345740868597e-05 | 1.8849604994256886e-05 | 8.56% | 9.36% | 1.09x | ✅ | -| `hexbytes_to_0x_hex[alternating 0xaa/0x55]` | 2.1034556258913767e-05 | 1.8993906962346065e-05 | 9.70% | 10.74% | 1.11x | ✅ | -| `hexbytes_to_0x_hex[ascii sentence]` | 1.8875813815466942e-05 | 1.7198966687540505e-05 | 8.88% | 9.75% | 1.10x | ✅ | -| `hexbytes_to_0x_hex[b'']` | 1.0187843418930654e-05 | 1.146381534799183e-05 | -12.52% | -11.13% | 0.89x | ❌ | -| `hexbytes_to_0x_hex[b'\\x00'*32]` | 1.7761525834716025e-05 | 1.5999200078484397e-05 | 9.92% | 11.02% | 1.11x | ✅ | -| `hexbytes_to_0x_hex[b'\\x00\\xff\\x00\\xff']` | 1.491279167519561e-05 | 1.3187113551675205e-05 | 11.57% | 13.09% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[b'\\x01'*100]` | 2.5307246640760228e-05 | 2.2900483468102752e-05 | 9.51% | 10.51% | 1.11x | ✅ | -| `hexbytes_to_0x_hex[b'\\x01'*2048]` | 0.00022203437311137995 | 0.00022395427718314203 | -0.86% | -0.86% | 0.99x | ❌ | -| `hexbytes_to_0x_hex[b'\\x01\\x02\\x03']` | 1.4820425255525232e-05 | 1.3184821091019296e-05 | 11.04% | 12.41% | 1.12x | ✅ | -| `hexbytes_to_0x_hex[b'\\x10\\x20\\x30\\x40\\x50']` | 1.4995496346233545e-05 | 1.321709792754367e-05 | 11.86% | 13.46% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[b'\\x7f'*8]` | 1.5384478660719788e-05 | 1.3595138155271592e-05 | 11.63% | 13.16% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[b'\\x80'*8]` | 1.5282176594059864e-05 | 1.3556489689269711e-05 | 11.29% | 12.73% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[b'\\xde\\xad\\xbe\\xef']` | 1.4950046576285572e-05 | 1.3164590514630685e-05 | 11.94% | 13.56% | 1.14x | ✅ | -| `hexbytes_to_0x_hex[b'\\xff'*64]` | 2.0585464319793074e-05 | 1.9116413035709033e-05 | 7.14% | 7.68% | 1.08x | ✅ | -| `hexbytes_to_0x_hex[b'a'*1024]` | 0.00012262134610012176 | 0.00012103434681815538 | 1.29% | 1.31% | 1.01x | ✅ | -| `hexbytes_to_0x_hex[b'abc']` | 1.4883331621779883e-05 | 1.3139927004937988e-05 | 11.71% | 13.27% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[long alternating]` | 0.00012271264979629563 | 0.00012163735934798776 | 0.88% | 0.88% | 1.01x | ✅ | -| `hexbytes_to_0x_hex[mixed pattern]` | 3.518972816544199e-05 | 3.345415831964962e-05 | 4.93% | 5.19% | 1.05x | ✅ | -| `hexbytes_to_0x_hex[multiples of 0x10]` | 1.5515474278699935e-05 | 1.3754441581482815e-05 | 11.35% | 12.80% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[palindrome ascii]` | 1.523780388983388e-05 | 1.3442734337496116e-05 | 11.78% | 13.35% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[palindrome numeric]` | 1.5001470322697928e-05 | 1.3255464347376665e-05 | 11.64% | 13.17% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[palindrome]` | 1.6391737335853485e-05 | 1.490631471786646e-05 | 9.06% | 9.97% | 1.10x | ✅ | -| `hexbytes_to_0x_hex[repeated 0-9]` | 2.5399863287419973e-05 | 2.291752748305005e-05 | 9.77% | 10.83% | 1.11x | ✅ | -| `hexbytes_to_0x_hex[single 0xff]` | 1.4561474537362167e-05 | 1.2885793476890897e-05 | 11.51% | 13.00% | 1.13x | ✅ | -| `hexbytes_to_0x_hex[single null byte]` | 1.4769295355417153e-05 | 1.2796363356841186e-05 | 13.36% | 15.42% | 1.15x | ✅ | -| `hexbytes_to_0x_hex[two patterns]` | 2.0578869953624934e-05 | 1.907937672056507e-05 | 7.29% | 7.86% | 1.08x | ✅ | +| `hexbytes_getitem_index[-1-0-9]` | 2.4754881906208523e-05 | 2.36101290408267e-05 | 4.62% | 4.85% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-4-byte pattern]` | 2.478487193494239e-05 | 2.3431113403435642e-05 | 5.46% | 5.78% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-all byte values]` | 2.470368766320023e-05 | 2.364275939613159e-05 | 4.29% | 4.49% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-alternating 0x00/0xff]` | 2.4896610380112766e-05 | 2.361363987671643e-05 | 5.15% | 5.43% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-alternating 0xaa/0x55]` | 2.4731110648896462e-05 | 2.370604565036118e-05 | 4.14% | 4.32% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-ascii sentence]` | 2.4661189514374503e-05 | 2.3727241339910318e-05 | 3.79% | 3.94% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x00'*32]` | 2.459202631467664e-05 | 2.3764809506726955e-05 | 3.36% | 3.48% | 1.03x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x00\\xff\\x00\\xff']` | 2.4694652962089537e-05 | 2.3592214347367266e-05 | 4.46% | 4.67% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x01'*100]` | 2.47202669441009e-05 | 2.3629964039164815e-05 | 4.41% | 4.61% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x01'*2048]` | 2.4526826059437435e-05 | 2.340732067475789e-05 | 4.56% | 4.78% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x01\\x02\\x03']` | 2.450398621063975e-05 | 2.3638475156303192e-05 | 3.53% | 3.66% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.4684590057352116e-05 | 2.3653271956331653e-05 | 4.18% | 4.36% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x7f'*8]` | 2.4751953902601515e-05 | 2.3555827154925643e-05 | 4.83% | 5.08% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'\\x80'*8]` | 2.4720320137424888e-05 | 2.3647478742445188e-05 | 4.34% | 4.54% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'\\xde\\xad\\xbe\\xef']` | 2.468165859865056e-05 | 2.3423259512719994e-05 | 5.10% | 5.37% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-b'\\xff'*64]` | 2.4377689073240468e-05 | 2.3658937275614014e-05 | 2.95% | 3.04% | 1.03x | ✅ | +| `hexbytes_getitem_index[-1-b'a'*1024]` | 2.4695952401237492e-05 | 2.366338024547864e-05 | 4.18% | 4.36% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-b'abc']` | 2.4800231674423054e-05 | 2.3452005299177345e-05 | 5.44% | 5.75% | 1.06x | ✅ | +| `hexbytes_getitem_index[-1-long alternating]` | 2.464127714730724e-05 | 2.349964519133728e-05 | 4.63% | 4.86% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-mixed pattern]` | 2.490234386622281e-05 | 2.3673651752844787e-05 | 4.93% | 5.19% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-multiples of 0x10]` | 2.471712311112505e-05 | 2.3538268903849502e-05 | 4.77% | 5.01% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-palindrome ascii]` | 2.4969699866733358e-05 | 2.3674475003669625e-05 | 5.19% | 5.47% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-palindrome numeric]` | 2.4720960424348795e-05 | 2.35198337052224e-05 | 4.86% | 5.11% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-palindrome]` | 2.4730699765237392e-05 | 2.361908106747321e-05 | 4.49% | 4.71% | 1.05x | ✅ | +| `hexbytes_getitem_index[-1-repeated 0-9]` | 2.4778248510655504e-05 | 2.371700090864329e-05 | 4.28% | 4.47% | 1.04x | ✅ | +| `hexbytes_getitem_index[-1-two patterns]` | 2.4925916740350813e-05 | 2.355574189183202e-05 | 5.50% | 5.82% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-0-9]` | 2.3574485924826352e-05 | 2.233714169508928e-05 | 5.25% | 5.54% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-4-byte pattern]` | 2.3688561803606983e-05 | 2.2437420454966476e-05 | 5.28% | 5.58% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-all byte values]` | 2.3815792609252528e-05 | 2.225711666626083e-05 | 6.54% | 7.00% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-alternating 0x00/0xff]` | 2.3598852107127032e-05 | 2.2335021439197906e-05 | 5.36% | 5.66% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-alternating 0xaa/0x55]` | 2.3662492195827045e-05 | 2.2482525217041793e-05 | 4.99% | 5.25% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-ascii sentence]` | 2.3794392693218644e-05 | 2.230096771135748e-05 | 6.28% | 6.70% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-b'\\x00'*32]` | 2.365388249112569e-05 | 2.2362793690086348e-05 | 5.46% | 5.77% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-b'\\x00\\xff\\x00\\xff']` | 2.373522166087113e-05 | 2.2352927595969076e-05 | 5.82% | 6.18% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-b'\\x01'*100]` | 2.3810309165051318e-05 | 2.2268803262158138e-05 | 6.47% | 6.92% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-b'\\x01'*2048]` | 2.3865380270337903e-05 | 2.2433777460444585e-05 | 6.00% | 6.38% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-b'\\x01\\x02\\x03']` | 2.3687567012699863e-05 | 2.2142043598113183e-05 | 6.52% | 6.98% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3665175268832828e-05 | 2.22770555775527e-05 | 5.87% | 6.23% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-b'\\x7f'*8]` | 2.375633959321337e-05 | 2.210544040276182e-05 | 6.95% | 7.47% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-b'\\x80'*8]` | 2.366345837231524e-05 | 2.2282313631059953e-05 | 5.84% | 6.20% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-b'\\xde\\xad\\xbe\\xef']` | 2.3813665988852002e-05 | 2.225609869629857e-05 | 6.54% | 7.00% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-b'\\xff'*64]` | 2.38010661143064e-05 | 2.23844079908076e-05 | 5.95% | 6.33% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-b'a'*1024]` | 2.387913994799082e-05 | 2.2221621747005114e-05 | 6.94% | 7.46% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-b'abc']` | 2.3405791927593618e-05 | 2.238444648865565e-05 | 4.36% | 4.56% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-long alternating]` | 2.3848708237134662e-05 | 2.2604184928612543e-05 | 5.22% | 5.51% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-mixed pattern]` | 2.3611310275487704e-05 | 2.2304260956267688e-05 | 5.54% | 5.86% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-multiples of 0x10]` | 2.3775802467868507e-05 | 2.249233952309131e-05 | 5.40% | 5.71% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-palindrome ascii]` | 2.388396453925264e-05 | 2.2408350203997427e-05 | 6.18% | 6.59% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-palindrome numeric]` | 2.3615511099754482e-05 | 2.229416988361859e-05 | 5.60% | 5.93% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-palindrome]` | 2.3769869763035617e-05 | 2.2262362266245086e-05 | 6.34% | 6.77% | 1.07x | ✅ | +| `hexbytes_getitem_index[0-repeated 0-9]` | 2.365069434437882e-05 | 2.2545686539260675e-05 | 4.67% | 4.90% | 1.05x | ✅ | +| `hexbytes_getitem_index[0-single 0xff]` | 2.3764204532388718e-05 | 2.231888352301192e-05 | 6.08% | 6.48% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-single null byte]` | 2.3688530707151423e-05 | 2.2451306821425064e-05 | 5.22% | 5.51% | 1.06x | ✅ | +| `hexbytes_getitem_index[0-two patterns]` | 2.36301805484756e-05 | 2.2420918565641907e-05 | 5.12% | 5.39% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-0-9]` | 2.329318114513981e-05 | 2.2595021861281157e-05 | 3.00% | 3.09% | 1.03x | ✅ | +| `hexbytes_getitem_index[1-4-byte pattern]` | 2.350705450220431e-05 | 2.241064176845273e-05 | 4.66% | 4.89% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-all byte values]` | 2.3514594342731333e-05 | 2.2383803789615347e-05 | 4.81% | 5.05% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-alternating 0x00/0xff]` | 2.3456498513295538e-05 | 2.2794411416332482e-05 | 2.82% | 2.90% | 1.03x | ✅ | +| `hexbytes_getitem_index[1-alternating 0xaa/0x55]` | 2.33792320107034e-05 | 2.258775699764005e-05 | 3.39% | 3.50% | 1.04x | ✅ | +| `hexbytes_getitem_index[1-ascii sentence]` | 2.3534967809989544e-05 | 2.2409397832567892e-05 | 4.78% | 5.02% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-b'\\x00'*32]` | 2.357479555109983e-05 | 2.2443906695829757e-05 | 4.80% | 5.04% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-b'\\x00\\xff\\x00\\xff']` | 2.3748749032151378e-05 | 2.2240414077822714e-05 | 6.35% | 6.78% | 1.07x | ✅ | +| `hexbytes_getitem_index[1-b'\\x01'*100]` | 2.3662733513615578e-05 | 2.2441215871707897e-05 | 5.16% | 5.44% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-b'\\x01'*2048]` | 2.3709492840837744e-05 | 2.24685964209688e-05 | 5.23% | 5.52% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-b'\\x01\\x02\\x03']` | 2.36027222668159e-05 | 2.2380020102669342e-05 | 5.18% | 5.46% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3597789003283424e-05 | 2.2288636831188665e-05 | 5.55% | 5.87% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-b'\\x7f'*8]` | 2.3691764469992e-05 | 2.2299293834068118e-05 | 5.88% | 6.24% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-b'\\x80'*8]` | 2.3826422020934128e-05 | 2.2412189972717277e-05 | 5.94% | 6.31% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-b'\\xde\\xad\\xbe\\xef']` | 2.353906005495418e-05 | 2.2392269446532264e-05 | 4.87% | 5.12% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-b'\\xff'*64]` | 2.365230211027973e-05 | 2.2245732835752976e-05 | 5.95% | 6.32% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-b'a'*1024]` | 2.3484244683977175e-05 | 2.236002527981225e-05 | 4.79% | 5.03% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-b'abc']` | 2.3704651914080182e-05 | 2.2448525457870448e-05 | 5.30% | 5.60% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-long alternating]` | 2.3598917101884618e-05 | 2.227244048933691e-05 | 5.62% | 5.96% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-mixed pattern]` | 2.3621775771809625e-05 | 2.2583749485366612e-05 | 4.39% | 4.60% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-multiples of 0x10]` | 2.3693149230133233e-05 | 2.252206198034193e-05 | 4.94% | 5.20% | 1.05x | ✅ | +| `hexbytes_getitem_index[1-palindrome ascii]` | 2.3691940669726937e-05 | 2.239498737455051e-05 | 5.47% | 5.79% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-palindrome numeric]` | 2.365400554007733e-05 | 2.2371409895768863e-05 | 5.42% | 5.73% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-palindrome]` | 2.3675183340500855e-05 | 2.2237579616887215e-05 | 6.07% | 6.46% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-repeated 0-9]` | 2.3692106062427222e-05 | 2.2339301694125923e-05 | 5.71% | 6.06% | 1.06x | ✅ | +| `hexbytes_getitem_index[1-two patterns]` | 2.347440318738751e-05 | 2.2597520456767633e-05 | 3.74% | 3.88% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-0-9]` | 2.355688845962313e-05 | 2.4261384212057037e-05 | -2.99% | -2.90% | 0.97x | ❌ | +| `hexbytes_getitem_index[2-4-byte pattern]` | 2.3608846660519697e-05 | 2.2332800032368067e-05 | 5.40% | 5.71% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-all byte values]` | 2.36165716399943e-05 | 2.246791718745253e-05 | 4.86% | 5.11% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-alternating 0x00/0xff]` | 2.3440142543499264e-05 | 2.2397256602394565e-05 | 4.45% | 4.66% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-alternating 0xaa/0x55]` | 2.356465073497173e-05 | 2.243608283580368e-05 | 4.79% | 5.03% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-ascii sentence]` | 2.3505508604959207e-05 | 2.241275927913798e-05 | 4.65% | 4.88% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-b'\\x00'*32]` | 2.3589922841261772e-05 | 2.257320642403751e-05 | 4.31% | 4.50% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-b'\\x00\\xff\\x00\\xff']` | 2.355475482912007e-05 | 2.2477188683986006e-05 | 4.57% | 4.79% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-b'\\x01'*100]` | 2.346727600324626e-05 | 2.2506590017179802e-05 | 4.09% | 4.27% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-b'\\x01'*2048]` | 2.353005129369121e-05 | 2.2395722305092045e-05 | 4.82% | 5.06% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-b'\\x01\\x02\\x03']` | 2.33074531422992e-05 | 2.237412942444611e-05 | 4.00% | 4.17% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-b'\\x10\\x20\\x30\\x40\\x50']` | 2.321343591275329e-05 | 2.254406730437095e-05 | 2.88% | 2.97% | 1.03x | ✅ | +| `hexbytes_getitem_index[2-b'\\x7f'*8]` | 2.3527214043220956e-05 | 2.2674214666592336e-05 | 3.63% | 3.76% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-b'\\x80'*8]` | 2.337044839325868e-05 | 2.2452453944729094e-05 | 3.93% | 4.09% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-b'\\xde\\xad\\xbe\\xef']` | 2.340673201496728e-05 | 2.240066612867552e-05 | 4.30% | 4.49% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-b'\\xff'*64]` | 2.360131229298037e-05 | 2.2244556857409582e-05 | 5.75% | 6.10% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-b'a'*1024]` | 2.3665018000383798e-05 | 2.5125172281399264e-05 | -6.17% | -5.81% | 0.94x | ❌ | +| `hexbytes_getitem_index[2-b'abc']` | 2.380289567004414e-05 | 2.245531909896443e-05 | 5.66% | 6.00% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-long alternating]` | 2.3655027207555663e-05 | 2.2388121833366522e-05 | 5.36% | 5.66% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-mixed pattern]` | 2.3737811757973662e-05 | 2.257145841923933e-05 | 4.91% | 5.17% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-multiples of 0x10]` | 2.3642536640876452e-05 | 2.2526284317449725e-05 | 4.72% | 4.96% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-palindrome ascii]` | 2.372753651435304e-05 | 2.2493329098700958e-05 | 5.20% | 5.49% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-palindrome numeric]` | 2.3571672631195312e-05 | 2.253551626081466e-05 | 4.40% | 4.60% | 1.05x | ✅ | +| `hexbytes_getitem_index[2-palindrome]` | 2.3547101832961222e-05 | 2.268268239536875e-05 | 3.67% | 3.81% | 1.04x | ✅ | +| `hexbytes_getitem_index[2-repeated 0-9]` | 2.3513220158121124e-05 | 2.227612777128761e-05 | 5.26% | 5.55% | 1.06x | ✅ | +| `hexbytes_getitem_index[2-two patterns]` | 2.340848905314925e-05 | 2.272821272161723e-05 | 2.91% | 2.99% | 1.03x | ✅ | +| `hexbytes_getitem_index[3-0-9]` | 2.3576010352500134e-05 | 2.249933017323468e-05 | 4.57% | 4.79% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-4-byte pattern]` | 2.385000037840209e-05 | 2.2461119585210943e-05 | 5.82% | 6.18% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-all byte values]` | 2.3775252516393495e-05 | 2.248610239277294e-05 | 5.42% | 5.73% | 1.06x | ✅ | +| `hexbytes_getitem_index[3-alternating 0x00/0xff]` | 2.3620665725476133e-05 | 2.250075635537158e-05 | 4.74% | 4.98% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-alternating 0xaa/0x55]` | 2.3541084222772135e-05 | 2.2464470518704077e-05 | 4.57% | 4.79% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-ascii sentence]` | 2.346174931499305e-05 | 2.27957074799885e-05 | 2.84% | 2.92% | 1.03x | ✅ | +| `hexbytes_getitem_index[3-b'\\x00'*32]` | 2.3501243476908307e-05 | 2.2709342294336463e-05 | 3.37% | 3.49% | 1.03x | ✅ | +| `hexbytes_getitem_index[3-b'\\x00\\xff\\x00\\xff']` | 2.3555799904401475e-05 | 2.251219930254488e-05 | 4.43% | 4.64% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-b'\\x01'*100]` | 2.36993936183925e-05 | 2.264406873357705e-05 | 4.45% | 4.66% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-b'\\x01'*2048]` | 2.378989579510454e-05 | 2.2989998400409215e-05 | 3.36% | 3.48% | 1.03x | ✅ | +| `hexbytes_getitem_index[3-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3634821435136594e-05 | 2.254072400583579e-05 | 4.63% | 4.85% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-b'\\x7f'*8]` | 2.37200861957124e-05 | 2.2621822198159395e-05 | 4.63% | 4.85% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-b'\\x80'*8]` | 2.360496022752374e-05 | 2.2543848811819762e-05 | 4.50% | 4.71% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-b'\\xde\\xad\\xbe\\xef']` | 2.368350687795692e-05 | 2.2719638182910784e-05 | 4.07% | 4.24% | 1.04x | ✅ | +| `hexbytes_getitem_index[3-b'\\xff'*64]` | 2.3523289950363346e-05 | 2.248615551782306e-05 | 4.41% | 4.61% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-b'a'*1024]` | 2.354283917780575e-05 | 2.2464599159274333e-05 | 4.58% | 4.80% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-long alternating]` | 2.3579060017179824e-05 | 2.3978434677375887e-05 | -1.69% | -1.67% | 0.98x | ❌ | +| `hexbytes_getitem_index[3-mixed pattern]` | 2.3553754771224537e-05 | 2.282347126921508e-05 | 3.10% | 3.20% | 1.03x | ✅ | +| `hexbytes_getitem_index[3-multiples of 0x10]` | 2.3750767141469264e-05 | 2.252582817330135e-05 | 5.16% | 5.44% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-palindrome ascii]` | 2.4650124072047144e-05 | 2.2396818517852645e-05 | 9.14% | 10.06% | 1.10x | ✅ | +| `hexbytes_getitem_index[3-palindrome numeric]` | 2.352077990326374e-05 | 2.274978676995817e-05 | 3.28% | 3.39% | 1.03x | ✅ | +| `hexbytes_getitem_index[3-palindrome]` | 2.3587277870466196e-05 | 2.2615664850080164e-05 | 4.12% | 4.30% | 1.04x | ✅ | +| `hexbytes_getitem_index[3-repeated 0-9]` | 2.408347461178827e-05 | 2.2835377243803067e-05 | 5.18% | 5.47% | 1.05x | ✅ | +| `hexbytes_getitem_index[3-two patterns]` | 2.3418577625506303e-05 | 2.2858807369489183e-05 | 2.39% | 2.45% | 1.02x | ✅ | +| `hexbytes_getitem_index[4-0-9]` | 2.3537196825790606e-05 | 2.2213506018573626e-05 | 5.62% | 5.96% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-4-byte pattern]` | 2.3580105863717855e-05 | 2.230762278912365e-05 | 5.40% | 5.70% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-all byte values]` | 2.3519478645725014e-05 | 2.2309578514028877e-05 | 5.14% | 5.42% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-alternating 0x00/0xff]` | 2.350723066814595e-05 | 2.246099095156534e-05 | 4.45% | 4.66% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-alternating 0xaa/0x55]` | 2.3685751734765844e-05 | 2.225148850941126e-05 | 6.06% | 6.45% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-ascii sentence]` | 2.360457143146751e-05 | 2.2434029009138264e-05 | 4.96% | 5.22% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-b'\\x00'*32]` | 2.3472392098610384e-05 | 2.2295223659813942e-05 | 5.02% | 5.28% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-b'\\x01'*100]` | 2.3047541559492632e-05 | 2.2170109285260752e-05 | 3.81% | 3.96% | 1.04x | ✅ | +| `hexbytes_getitem_index[4-b'\\x01'*2048]` | 2.3743269875918887e-05 | 2.2303072436209178e-05 | 6.07% | 6.46% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-b'\\x10\\x20\\x30\\x40\\x50']` | 2.3478806726330697e-05 | 2.2301505267799543e-05 | 5.01% | 5.28% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-b'\\x7f'*8]` | 2.368720722307953e-05 | 2.2299659819566278e-05 | 5.86% | 6.22% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-b'\\x80'*8]` | 2.3515450278779338e-05 | 2.2334273562173423e-05 | 5.02% | 5.29% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-b'\\xff'*64]` | 2.3499989406680296e-05 | 2.2232979503789415e-05 | 5.39% | 5.70% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-b'a'*1024]` | 2.343938543778619e-05 | 2.2285731820629667e-05 | 4.92% | 5.18% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-long alternating]` | 2.3570199560485246e-05 | 2.238697799496658e-05 | 5.02% | 5.29% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-mixed pattern]` | 2.3729716972989387e-05 | 2.2674647575012118e-05 | 4.45% | 4.65% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-multiples of 0x10]` | 2.3545089639028536e-05 | 2.2284937116599952e-05 | 5.35% | 5.65% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-palindrome ascii]` | 2.370522311246462e-05 | 2.226328353102064e-05 | 6.08% | 6.48% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-palindrome numeric]` | 2.372963640010582e-05 | 2.2155294143450594e-05 | 6.63% | 7.11% | 1.07x | ✅ | +| `hexbytes_getitem_index[4-palindrome]` | 2.3624213413572695e-05 | 2.2213138820311965e-05 | 5.97% | 6.35% | 1.06x | ✅ | +| `hexbytes_getitem_index[4-repeated 0-9]` | 2.3628146410634584e-05 | 2.2408982601033284e-05 | 5.16% | 5.44% | 1.05x | ✅ | +| `hexbytes_getitem_index[4-two patterns]` | 2.373264530951133e-05 | 2.2480844769105957e-05 | 5.27% | 5.57% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-0-9]` | 2.3602017481047336e-05 | 2.229941549805124e-05 | 5.52% | 5.84% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-4-byte pattern]` | 2.3379511339428266e-05 | 2.247616470088032e-05 | 3.86% | 4.02% | 1.04x | ✅ | +| `hexbytes_getitem_index[5-all byte values]` | 2.3576271504153953e-05 | 2.2634634900502964e-05 | 3.99% | 4.16% | 1.04x | ✅ | +| `hexbytes_getitem_index[5-alternating 0x00/0xff]` | 2.373751669879084e-05 | 2.2234757221157685e-05 | 6.33% | 6.76% | 1.07x | ✅ | +| `hexbytes_getitem_index[5-alternating 0xaa/0x55]` | 2.3745904341684655e-05 | 2.2399087543428368e-05 | 5.67% | 6.01% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-ascii sentence]` | 2.3691694466209017e-05 | 2.248142929640372e-05 | 5.11% | 5.38% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-b'\\x00'*32]` | 2.3741275431181503e-05 | 2.2646020538464026e-05 | 4.61% | 4.84% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-b'\\x01'*100]` | 2.3633107982612668e-05 | 2.2275880076416084e-05 | 5.74% | 6.09% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-b'\\x01'*2048]` | 2.3710655249171262e-05 | 2.2344529408669472e-05 | 5.76% | 6.11% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-b'\\x7f'*8]` | 2.3730829173121472e-05 | 2.2404394033385047e-05 | 5.59% | 5.92% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-b'\\x80'*8]` | 2.3889296541693285e-05 | 2.2265206377808846e-05 | 6.80% | 7.29% | 1.07x | ✅ | +| `hexbytes_getitem_index[5-b'\\xff'*64]` | 2.36967651856715e-05 | 2.2562358699335254e-05 | 4.79% | 5.03% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-b'a'*1024]` | 2.3507004000068462e-05 | 2.2543062239345965e-05 | 4.10% | 4.28% | 1.04x | ✅ | +| `hexbytes_getitem_index[5-long alternating]` | 2.3991399752071886e-05 | 2.2383703385345844e-05 | 6.70% | 7.18% | 1.07x | ✅ | +| `hexbytes_getitem_index[5-mixed pattern]` | 2.3742833746834207e-05 | 2.24864625182179e-05 | 5.29% | 5.59% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-multiples of 0x10]` | 2.3786383813608743e-05 | 2.2349265596003387e-05 | 6.04% | 6.43% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-palindrome ascii]` | 2.3569618000652596e-05 | 2.2358560365411047e-05 | 5.14% | 5.42% | 1.05x | ✅ | +| `hexbytes_getitem_index[5-palindrome]` | 2.3655680235117278e-05 | 2.239778922748858e-05 | 5.32% | 5.62% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-repeated 0-9]` | 2.3812073408732064e-05 | 2.2412318671355585e-05 | 5.88% | 6.25% | 1.06x | ✅ | +| `hexbytes_getitem_index[5-two patterns]` | 2.3765649823838392e-05 | 2.2320559177681606e-05 | 6.08% | 6.47% | 1.06x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-0-9]` | 8.30388151247685e-05 | 5.974196772849583e-05 | 28.06% | 39.00% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-4-byte pattern]` | 8.375297990090131e-05 | 5.958217706474068e-05 | 28.86% | 40.57% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-all byte values]` | 8.361016821467982e-05 | 6.0172421187179344e-05 | 28.03% | 38.95% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-alternating 0x00/0xff]` | 8.30170166865535e-05 | 6.0370870116860724e-05 | 27.28% | 37.51% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-alternating 0xaa/0x55]` | 8.313613171986278e-05 | 5.940580507392356e-05 | 28.54% | 39.95% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-ascii sentence]` | 8.296036855893063e-05 | 6.025149743431761e-05 | 27.37% | 37.69% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'']` | 8.135824719250991e-05 | 5.726857262743525e-05 | 29.61% | 42.06% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00'*32]` | 8.220942673884756e-05 | 5.979658253378586e-05 | 27.26% | 37.48% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x00\\xff\\x00\\xff']` | 8.43643196448106e-05 | 6.004223358590643e-05 | 28.83% | 40.51% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*100]` | 8.360289000301351e-05 | 5.962791279112184e-05 | 28.68% | 40.21% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01'*2048]` | 8.265773682881185e-05 | 5.978796441306175e-05 | 27.67% | 38.25% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x01\\x02\\x03']` | 8.319841360473207e-05 | 6.030960284287987e-05 | 27.51% | 37.95% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.344373454053871e-05 | 5.929052449074296e-05 | 28.95% | 40.74% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x7f'*8]` | 8.372106489945515e-05 | 5.920325731823158e-05 | 29.29% | 41.41% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\x80'*8]` | 8.385600977202209e-05 | 5.9297395569426354e-05 | 29.29% | 41.42% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\xde\\xad\\xbe\\xef']` | 8.314562369115489e-05 | 5.9369384408174854e-05 | 28.60% | 40.05% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'\\xff'*64]` | 8.332756490504269e-05 | 5.900826063304261e-05 | 29.19% | 41.21% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'a'*1024]` | 8.312618840000476e-05 | 5.979495487066626e-05 | 28.07% | 39.02% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-b'abc']` | 8.385703515856632e-05 | 6.028367402120767e-05 | 28.11% | 39.10% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-long alternating]` | 8.364521787093274e-05 | 5.958557071333933e-05 | 28.76% | 40.38% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-mixed pattern]` | 8.32932185994307e-05 | 6.0332581149115977e-05 | 27.57% | 38.06% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-multiples of 0x10]` | 8.242906111749164e-05 | 5.981759992529685e-05 | 27.43% | 37.80% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-palindrome ascii]` | 8.385359967614687e-05 | 6.011068171486642e-05 | 28.31% | 39.50% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-palindrome numeric]` | 8.40005908681848e-05 | 6.0068371114253004e-05 | 28.49% | 39.84% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-palindrome]` | 8.518531691242643e-05 | 5.828737874627635e-05 | 31.58% | 46.15% | 1.46x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-repeated 0-9]` | 8.538738885111364e-05 | 6.0281931253483786e-05 | 29.40% | 41.65% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-single 0xff]` | 8.145036963290045e-05 | 5.8040992196251164e-05 | 28.74% | 40.33% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-single null byte]` | 8.14418854953201e-05 | 5.8324130551876356e-05 | 28.39% | 39.64% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(-3,None)-two patterns]` | 8.589874325598071e-05 | 6.030384954395382e-05 | 29.80% | 42.44% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-0-9]` | 8.454347599108936e-05 | 6.0587200907338523e-05 | 28.34% | 39.54% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-4-byte pattern]` | 8.45122004434002e-05 | 6.044426402384052e-05 | 28.48% | 39.82% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-all byte values]` | 8.392720968203999e-05 | 6.006694418480193e-05 | 28.43% | 39.72% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-alternating 0x00/0xff]` | 8.499767119133119e-05 | 6.039528397418928e-05 | 28.94% | 40.74% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-alternating 0xaa/0x55]` | 8.456780765164754e-05 | 6.047287582876879e-05 | 28.49% | 39.84% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-ascii sentence]` | 8.363027101268132e-05 | 6.001081544155575e-05 | 28.24% | 39.36% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'']` | 8.209503181091495e-05 | 5.7231600261878467e-05 | 30.29% | 43.44% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x00'*32]` | 8.429138601626187e-05 | 5.986777553262876e-05 | 28.98% | 40.80% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x00\\xff\\x00\\xff']` | 8.449139418748611e-05 | 5.981647480210914e-05 | 29.20% | 41.25% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*100]` | 8.41043787367813e-05 | 6.0102154281623076e-05 | 28.54% | 39.94% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x01'*2048]` | 8.463946603446461e-05 | 6.072507685626701e-05 | 28.25% | 39.38% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x01\\x02\\x03']` | 8.436062131286568e-05 | 6.042550742000852e-05 | 28.37% | 39.61% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.407275288164303e-05 | 6.0208376267930425e-05 | 28.39% | 39.64% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x7f'*8]` | 8.40359606450767e-05 | 5.9637132612793676e-05 | 29.03% | 40.91% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\x80'*8]` | 8.446455676838324e-05 | 6.021461019475137e-05 | 28.71% | 40.27% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\xde\\xad\\xbe\\xef']` | 8.441565492876512e-05 | 5.981740930704092e-05 | 29.14% | 41.12% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'\\xff'*64]` | 8.432145460865879e-05 | 6.013070263305703e-05 | 28.69% | 40.23% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'a'*1024]` | 8.4256050816817e-05 | 6.055887485150245e-05 | 28.13% | 39.13% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-b'abc']` | 8.415672929454271e-05 | 6.040766485263629e-05 | 28.22% | 39.31% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-long alternating]` | 8.460227761173369e-05 | 5.989251035535988e-05 | 29.21% | 41.26% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-mixed pattern]` | 8.303167669890931e-05 | 6.095096365297069e-05 | 26.59% | 36.23% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-multiples of 0x10]` | 8.42567242483147e-05 | 6.0837107937451675e-05 | 27.80% | 38.50% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-palindrome ascii]` | 8.24238298322723e-05 | 6.026642387182083e-05 | 26.88% | 36.77% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-palindrome numeric]` | 8.289118892881509e-05 | 6.009400343034516e-05 | 27.50% | 37.94% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-palindrome]` | 8.420060892436717e-05 | 5.976776123120024e-05 | 29.02% | 40.88% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-repeated 0-9]` | 8.361435829002896e-05 | 5.988689040248024e-05 | 28.38% | 39.62% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-single 0xff]` | 8.207450641949347e-05 | 5.903174259825323e-05 | 28.08% | 39.03% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-single null byte]` | 8.15964000853899e-05 | 5.880622964172609e-05 | 27.93% | 38.75% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(0,3)-two patterns]` | 8.324148780953776e-05 | 6.018653663487212e-05 | 27.70% | 38.31% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-0-9]` | 8.43259519664925e-05 | 6.0631605718717184e-05 | 28.10% | 39.08% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-4-byte pattern]` | 8.355265614590987e-05 | 6.049882645663349e-05 | 27.59% | 38.11% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-all byte values]` | 8.368752384188281e-05 | 6.0679565159777985e-05 | 27.49% | 37.92% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-alternating 0x00/0xff]` | 8.362879922802444e-05 | 6.089356041028733e-05 | 27.19% | 37.34% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-alternating 0xaa/0x55]` | 8.305002411217038e-05 | 6.083435095464481e-05 | 26.75% | 36.52% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-ascii sentence]` | 8.38274511249871e-05 | 6.219255540865889e-05 | 25.81% | 34.79% | 1.35x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'']` | 8.140288169666229e-05 | 5.787470290294113e-05 | 28.90% | 40.65% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x00'*32]` | 8.30974847167894e-05 | 6.0225606615435476e-05 | 27.52% | 37.98% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x00\\xff\\x00\\xff']` | 8.418443490975507e-05 | 5.958848967385628e-05 | 29.22% | 41.28% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*100]` | 8.39191268148017e-05 | 6.050497942396702e-05 | 27.90% | 38.70% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x01'*2048]` | 8.377991672370648e-05 | 6.129063686565741e-05 | 26.84% | 36.69% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x01\\x02\\x03']` | 8.429650567750775e-05 | 6.03085623201959e-05 | 28.46% | 39.78% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.212733293390555e-05 | 6.024597141305707e-05 | 26.64% | 36.32% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x7f'*8]` | 8.349126006658662e-05 | 6.033781134604746e-05 | 27.73% | 38.37% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\x80'*8]` | 8.298766019753463e-05 | 6.0303527702103845e-05 | 27.33% | 37.62% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\xde\\xad\\xbe\\xef']` | 8.375833712101175e-05 | 6.025837024860317e-05 | 28.06% | 39.00% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'\\xff'*64]` | 8.279296606100152e-05 | 6.0354741832947256e-05 | 27.10% | 37.18% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'a'*1024]` | 8.369726598136753e-05 | 6.0787394416353865e-05 | 27.37% | 37.69% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-b'abc']` | 8.33975953078815e-05 | 6.0670448482286404e-05 | 27.25% | 37.46% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-long alternating]` | 8.325772790077907e-05 | 6.063150973065067e-05 | 27.18% | 37.32% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-mixed pattern]` | 8.336834648226309e-05 | 6.0960333270751124e-05 | 26.88% | 36.76% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-multiples of 0x10]` | 8.346109580505115e-05 | 6.075849272150297e-05 | 27.20% | 37.37% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-palindrome ascii]` | 8.367838453083825e-05 | 6.0235235916563827e-05 | 28.02% | 38.92% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-palindrome numeric]` | 8.401544476774352e-05 | 6.0745205829970156e-05 | 27.70% | 38.31% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-palindrome]` | 8.302556042199684e-05 | 6.036305062778827e-05 | 27.30% | 37.54% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-repeated 0-9]` | 8.389499292946268e-05 | 6.025498283485574e-05 | 28.18% | 39.23% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-single 0xff]` | 8.198046013101483e-05 | 5.807917593293117e-05 | 29.15% | 41.15% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-single null byte]` | 8.18057217505065e-05 | 5.801160666238077e-05 | 29.09% | 41.02% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(1,6)-two patterns]` | 8.341036824341767e-05 | 6.058446907631278e-05 | 27.37% | 37.68% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-0-9]` | 8.056142928069139e-05 | 5.932610690953358e-05 | 26.36% | 35.79% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-4-byte pattern]` | 8.280384736939069e-05 | 6.0699500740082045e-05 | 26.69% | 36.42% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-all byte values]` | 8.318570478366326e-05 | 6.0518874594629106e-05 | 27.25% | 37.45% | 1.37x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-alternating 0x00/0xff]` | 8.340139295848626e-05 | 5.9419763708352866e-05 | 28.75% | 40.36% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-alternating 0xaa/0x55]` | 8.343246143411365e-05 | 5.907229085978559e-05 | 29.20% | 41.24% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-ascii sentence]` | 8.32739689693414e-05 | 5.872746802326737e-05 | 29.48% | 41.80% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'']` | 8.075462932427068e-05 | 5.7308668677736426e-05 | 29.03% | 40.91% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x00'*32]` | 8.298614165392246e-05 | 6.0000392148342656e-05 | 27.70% | 38.31% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x00\\xff\\x00\\xff']` | 8.262015444463298e-05 | 5.968463608963788e-05 | 27.76% | 38.43% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*100]` | 8.321795590988354e-05 | 6.018480210622123e-05 | 27.68% | 38.27% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x01'*2048]` | 0.00010297547772419773 | 8.097321901724279e-05 | 21.37% | 27.17% | 1.27x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x01\\x02\\x03']` | 8.044619363413883e-05 | 5.692465072729741e-05 | 29.24% | 41.32% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.327160135354066e-05 | 5.9627418448974144e-05 | 28.39% | 39.65% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x7f'*8]` | 8.23954223852242e-05 | 5.924491540849989e-05 | 28.10% | 39.08% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\x80'*8]` | 8.255868352253954e-05 | 5.879546558138738e-05 | 28.78% | 40.42% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\xde\\xad\\xbe\\xef']` | 8.292055283612205e-05 | 5.9710332670067847e-05 | 27.99% | 38.87% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'\\xff'*64]` | 8.239734798712192e-05 | 5.922418072815931e-05 | 28.12% | 39.13% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'a'*1024]` | 9.886175605970168e-05 | 7.357511382990991e-05 | 25.58% | 34.37% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-b'abc']` | 8.137093460040369e-05 | 5.734148142472723e-05 | 29.53% | 41.91% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-long alternating]` | 0.00010120346073662373 | 7.309737544020189e-05 | 27.77% | 38.45% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-mixed pattern]` | 8.362987563184948e-05 | 5.9967447105371136e-05 | 28.29% | 39.46% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-multiples of 0x10]` | 8.15080897020665e-05 | 5.924169816872563e-05 | 27.32% | 37.59% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-palindrome ascii]` | 8.27725892009646e-05 | 5.923130601459847e-05 | 28.44% | 39.74% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-palindrome numeric]` | 8.26703357927777e-05 | 5.876092471873986e-05 | 28.92% | 40.69% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-palindrome]` | 8.208866877468639e-05 | 5.880220555716517e-05 | 28.37% | 39.60% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-repeated 0-9]` | 8.376995296961262e-05 | 5.999609341153718e-05 | 28.38% | 39.63% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-single 0xff]` | 8.133537076097424e-05 | 5.642052344160219e-05 | 30.63% | 44.16% | 1.44x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-single null byte]` | 8.13738318311498e-05 | 5.616877701865991e-05 | 30.97% | 44.87% | 1.45x | ✅ | +| `hexbytes_getitem_slice[slice(2,None)-two patterns]` | 8.373585746322378e-05 | 5.9153407585947314e-05 | 29.36% | 41.56% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-0-9]` | 8.194370514057105e-05 | 5.783746275315815e-05 | 29.42% | 41.68% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-4-byte pattern]` | 8.2155750785384e-05 | 5.928462178174182e-05 | 27.84% | 38.58% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-all byte values]` | 8.238038387224774e-05 | 5.941041951294707e-05 | 27.88% | 38.66% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-alternating 0x00/0xff]` | 8.213782279833962e-05 | 5.853302875060524e-05 | 28.74% | 40.33% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-alternating 0xaa/0x55]` | 8.166474895011831e-05 | 5.851202699107647e-05 | 28.35% | 39.57% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-ascii sentence]` | 8.127557261584109e-05 | 5.8510536960492956e-05 | 28.01% | 38.91% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'']` | 7.864901946742648e-05 | 5.491276865981801e-05 | 30.18% | 43.23% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x00'*32]` | 8.140027224461524e-05 | 5.77354184890508e-05 | 29.07% | 40.99% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x00\\xff\\x00\\xff']` | 8.136487169570919e-05 | 5.875159434414076e-05 | 27.79% | 38.49% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*100]` | 8.175923869798613e-05 | 5.8572683798405825e-05 | 28.36% | 39.59% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x01'*2048]` | 0.00010602691890342189 | 7.939717078611532e-05 | 25.12% | 33.54% | 1.34x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x01\\x02\\x03']` | 8.196324379198659e-05 | 5.82050245295629e-05 | 28.99% | 40.82% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x10\\x20\\x30\\x40\\x50']` | 8.162627816565408e-05 | 5.843637970522368e-05 | 28.41% | 39.68% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x7f'*8]` | 8.21471987960966e-05 | 5.77016628951427e-05 | 29.76% | 42.37% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\x80'*8]` | 8.176050058478607e-05 | 5.815095674391131e-05 | 28.88% | 40.60% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\xde\\xad\\xbe\\xef']` | 8.151977191004657e-05 | 5.835655718975721e-05 | 28.41% | 39.69% | 1.40x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'\\xff'*64]` | 8.113492237307905e-05 | 5.7470397829917084e-05 | 29.17% | 41.18% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'a'*1024]` | 9.883113051157147e-05 | 7.245412861541862e-05 | 26.69% | 36.41% | 1.36x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-b'abc']` | 8.202072545230366e-05 | 5.7844334915116016e-05 | 29.48% | 41.80% | 1.42x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-long alternating]` | 0.0001013935034848419 | 7.33083477501886e-05 | 27.70% | 38.31% | 1.38x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-mixed pattern]` | 8.186370183391493e-05 | 5.89571046497168e-05 | 27.98% | 38.85% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-multiples of 0x10]` | 8.191113723497395e-05 | 5.7948580598685945e-05 | 29.25% | 41.35% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-palindrome ascii]` | 8.214716583361791e-05 | 5.843134069166401e-05 | 28.87% | 40.59% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-palindrome numeric]` | 8.31435042714451e-05 | 5.8094353359514036e-05 | 30.13% | 43.12% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-palindrome]` | 8.12891802447415e-05 | 5.8349632564492215e-05 | 28.22% | 39.31% | 1.39x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-repeated 0-9]` | 8.17021352982232e-05 | 5.796983590232829e-05 | 29.05% | 40.94% | 1.41x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-single 0xff]` | 7.988367261327101e-05 | 5.598729192832613e-05 | 29.91% | 42.68% | 1.43x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-single null byte]` | 8.021587345609672e-05 | 5.5331935433973326e-05 | 31.02% | 44.97% | 1.45x | ✅ | +| `hexbytes_getitem_slice[slice(None,None)-two patterns]` | 8.190176510660492e-05 | 5.8478507299448175e-05 | 28.60% | 40.05% | 1.40x | ✅ | +| `hexbytes_new['']` | 7.14638036365002e-05 | 3.6254154599672435e-05 | 49.27% | 97.12% | 1.97x | ✅ | +| `hexbytes_new['0x'+'00'*64]` | 9.287994327804942e-05 | 4.905492313816793e-05 | 47.18% | 89.34% | 1.89x | ✅ | +| `hexbytes_new['0x'+'a'*128]` | 9.321101875013893e-05 | 4.907705730375601e-05 | 47.35% | 89.93% | 1.90x | ✅ | +| `hexbytes_new['0x'+'ff'*32]` | 8.872338912007005e-05 | 4.547720480524316e-05 | 48.74% | 95.09% | 1.95x | ✅ | +| `hexbytes_new['0x']` | 7.886365084985266e-05 | 3.715100207527047e-05 | 52.89% | 112.28% | 2.12x | ✅ | +| `hexbytes_new['0x1234']` | 8.623872816433201e-05 | 4.44025907047815e-05 | 48.51% | 94.22% | 1.94x | ✅ | +| `hexbytes_new['0xCAFEBABE']` | 8.614830473507889e-05 | 4.3958294405919485e-05 | 48.97% | 95.98% | 1.96x | ✅ | +| `hexbytes_new['0xabcdef']` | 8.660338990843487e-05 | 4.4100506224403834e-05 | 49.08% | 96.38% | 1.96x | ✅ | +| `hexbytes_new['0xdeadbeef']` | 8.635821698080613e-05 | 4.359479135929844e-05 | 49.52% | 98.09% | 1.98x | ✅ | +| `hexbytes_new['abc']` | 8.363837584385083e-05 | 4.6575349075679855e-05 | 44.31% | 79.58% | 1.80x | ✅ | +| `hexbytes_new['deadbeef']` | 7.768718423786706e-05 | 4.0718143640317914e-05 | 47.59% | 90.79% | 1.91x | ✅ | +| `hexbytes_new[0-9]` | 4.229327079289703e-05 | 2.6189287292384018e-05 | 38.08% | 61.49% | 1.61x | ✅ | +| `hexbytes_new[0]` | 0.00012447587940273987 | 6.0997476835458304e-05 | 51.00% | 104.07% | 2.04x | ✅ | +| `hexbytes_new[123456]` | 0.00012414348762016447 | 6.591816487667816e-05 | 46.90% | 88.33% | 1.88x | ✅ | +| `hexbytes_new[2**16]` | 0.00012762085052898652 | 6.546162987682679e-05 | 48.71% | 94.96% | 1.95x | ✅ | +| `hexbytes_new[2**256-1]` | 0.00013409927717393524 | 7.26471338089095e-05 | 45.83% | 84.59% | 1.85x | ✅ | +| `hexbytes_new[2**32]` | 0.00013075663267241125 | 6.891864001718936e-05 | 47.29% | 89.73% | 1.90x | ✅ | +| `hexbytes_new[2**64]` | 0.00013297397159393057 | 7.225898091470653e-05 | 45.66% | 84.02% | 1.84x | ✅ | +| `hexbytes_new[2**8]` | 0.0001269265283021604 | 6.288189451941512e-05 | 50.46% | 101.85% | 2.02x | ✅ | +| `hexbytes_new[4-byte pattern]` | 4.424933432149152e-05 | 2.7030373969690305e-05 | 38.91% | 63.70% | 1.64x | ✅ | +| `hexbytes_new[False]` | 6.206981214971313e-05 | 2.7338314186684588e-05 | 55.96% | 127.04% | 2.27x | ✅ | +| `hexbytes_new[True]` | 6.150845034740875e-05 | 2.7261251975765582e-05 | 55.68% | 125.63% | 2.26x | ✅ | +| `hexbytes_new[all byte values]` | 4.322321422405936e-05 | 2.7028676889111198e-05 | 37.47% | 59.92% | 1.60x | ✅ | +| `hexbytes_new[alternating 0x00/0xff]` | 4.318138167377625e-05 | 2.6125129045523777e-05 | 39.50% | 65.29% | 1.65x | ✅ | +| `hexbytes_new[alternating 0xaa/0x55]` | 4.491875282572908e-05 | 2.663429475686673e-05 | 40.71% | 68.65% | 1.69x | ✅ | +| `hexbytes_new[ascii sentence]` | 4.3688227632488575e-05 | 2.6074002344376176e-05 | 40.32% | 67.55% | 1.68x | ✅ | +| `hexbytes_new[b'']` | 4.27567283052601e-05 | 2.5998521918589314e-05 | 39.19% | 64.46% | 1.64x | ✅ | +| `hexbytes_new[b'\\x00'*32]` | 4.3667982472232435e-05 | 2.6417868318576768e-05 | 39.50% | 65.30% | 1.65x | ✅ | +| `hexbytes_new[b'\\x00\\xff\\x00\\xff']` | 4.2964947713059645e-05 | 2.6608183224598657e-05 | 38.07% | 61.47% | 1.61x | ✅ | +| `hexbytes_new[b'\\x01'*100]` | 4.376604389693765e-05 | 2.64491821237421e-05 | 39.57% | 65.47% | 1.65x | ✅ | +| `hexbytes_new[b'\\x01'*2048]` | 5.540759626494421e-05 | 3.874432058338106e-05 | 30.07% | 43.01% | 1.43x | ✅ | +| `hexbytes_new[b'\\x01\\x02\\x03']` | 4.2874337547385384e-05 | 2.6122196462722696e-05 | 39.07% | 64.13% | 1.64x | ✅ | +| `hexbytes_new[b'\\x10\\x20\\x30\\x40\\x50']` | 4.2539045725741594e-05 | 2.6071966965298128e-05 | 38.71% | 63.16% | 1.63x | ✅ | +| `hexbytes_new[b'\\x7f'*8]` | 4.271227931088447e-05 | 2.6085148895624344e-05 | 38.93% | 63.74% | 1.64x | ✅ | +| `hexbytes_new[b'\\x80'*8]` | 4.330706012723817e-05 | 2.612571216773257e-05 | 39.67% | 65.76% | 1.66x | ✅ | +| `hexbytes_new[b'\\xde\\xad\\xbe\\xef']` | 4.290179181665324e-05 | 2.617464481603589e-05 | 38.99% | 63.91% | 1.64x | ✅ | +| `hexbytes_new[b'\\xff'*64]` | 4.3763422880254916e-05 | 2.6631925494023984e-05 | 39.15% | 64.33% | 1.64x | ✅ | +| `hexbytes_new[b'a'*1024]` | 5.0996850466108756e-05 | 3.315920795510173e-05 | 34.98% | 53.79% | 1.54x | ✅ | +| `hexbytes_new[b'abc']` | 4.312344796893197e-05 | 2.6397335472610203e-05 | 38.79% | 63.36% | 1.63x | ✅ | +| `hexbytes_new[bytearray(0-9)]` | 6.95555467674014e-05 | 3.787057907977333e-05 | 45.55% | 83.67% | 1.84x | ✅ | +| `hexbytes_new[bytearray(4-byte pattern)]` | 7.033810763053322e-05 | 3.8262071396141393e-05 | 45.60% | 83.83% | 1.84x | ✅ | +| `hexbytes_new[bytearray(all byte values)]` | 6.992101743916858e-05 | 3.861889486211478e-05 | 44.77% | 81.05% | 1.81x | ✅ | +| `hexbytes_new[bytearray(alternating 0x00/0xff)]` | 6.975086024358698e-05 | 3.796567324586105e-05 | 45.57% | 83.72% | 1.84x | ✅ | +| `hexbytes_new[bytearray(alternating 0xaa/0x55)]` | 6.977925005524052e-05 | 3.8007883339629135e-05 | 45.53% | 83.59% | 1.84x | ✅ | +| `hexbytes_new[bytearray(ascii sentence)]` | 6.91287659557757e-05 | 3.75018620534071e-05 | 45.75% | 84.33% | 1.84x | ✅ | +| `hexbytes_new[bytearray(b'')]` | 6.733192041830041e-05 | 3.590439204503096e-05 | 46.68% | 87.53% | 1.88x | ✅ | +| `hexbytes_new[bytearray(b'\\x00'*32)]` | 7.004709397931802e-05 | 3.747602878282135e-05 | 46.50% | 86.91% | 1.87x | ✅ | +| `hexbytes_new[bytearray(b'\\x00\\xff\\x00\\xff')]` | 7.009933825365818e-05 | 3.7876488164147304e-05 | 45.97% | 85.07% | 1.85x | ✅ | +| `hexbytes_new[bytearray(b'\\x01'*100)]` | 6.983202728868121e-05 | 3.841461380354141e-05 | 44.99% | 81.79% | 1.82x | ✅ | +| `hexbytes_new[bytearray(b'\\x01'*2048)]` | 9.150336627404717e-05 | 5.591526537763019e-05 | 38.89% | 63.65% | 1.64x | ✅ | +| `hexbytes_new[bytearray(b'\\x01\\x02\\x03')]` | 7.063389487397726e-05 | 3.773388102263764e-05 | 46.58% | 87.19% | 1.87x | ✅ | +| `hexbytes_new[bytearray(b'\\x10\\x20\\x30\\x40\\x50')]` | 6.99340591666782e-05 | 3.816299995835928e-05 | 45.43% | 83.25% | 1.83x | ✅ | +| `hexbytes_new[bytearray(b'\\x7f'*8)]` | 6.913010985696697e-05 | 3.795018571018686e-05 | 45.10% | 82.16% | 1.82x | ✅ | +| `hexbytes_new[bytearray(b'\\x80'*8)]` | 6.94580309780633e-05 | 3.737236839794092e-05 | 46.19% | 85.85% | 1.86x | ✅ | +| `hexbytes_new[bytearray(b'\\xde\\xad\\xbe\\xef')]` | 6.98104776195999e-05 | 3.805968160332621e-05 | 45.48% | 83.42% | 1.83x | ✅ | +| `hexbytes_new[bytearray(b'\\xff'*64)]` | 6.93433961727389e-05 | 3.808602398676135e-05 | 45.08% | 82.07% | 1.82x | ✅ | +| `hexbytes_new[bytearray(b'a'*1024)]` | 8.577753287473044e-05 | 4.940095330343995e-05 | 42.41% | 73.64% | 1.74x | ✅ | +| `hexbytes_new[bytearray(b'abc')]` | 6.86498958009881e-05 | 3.740953128780973e-05 | 45.51% | 83.51% | 1.84x | ✅ | +| `hexbytes_new[bytearray(long alternating)]` | 8.583357432264511e-05 | 4.96066843390949e-05 | 42.21% | 73.03% | 1.73x | ✅ | +| `hexbytes_new[bytearray(mixed pattern)]` | 6.996455194799104e-05 | 3.8434577296362995e-05 | 45.07% | 82.04% | 1.82x | ✅ | +| `hexbytes_new[bytearray(multiples of 0x10)]` | 6.936167396151872e-05 | 3.770843136921391e-05 | 45.64% | 83.94% | 1.84x | ✅ | +| `hexbytes_new[bytearray(palindrome ascii)]` | 6.930844696518391e-05 | 3.7852213938648755e-05 | 45.39% | 83.10% | 1.83x | ✅ | +| `hexbytes_new[bytearray(palindrome numeric)]` | 7.001840905081622e-05 | 4.173124907948678e-05 | 40.40% | 67.78% | 1.68x | ✅ | +| `hexbytes_new[bytearray(palindrome)]` | 6.923400331803462e-05 | 3.766781415488292e-05 | 45.59% | 83.80% | 1.84x | ✅ | +| `hexbytes_new[bytearray(repeated 0-9)]` | 6.961646736643518e-05 | 3.8171665332991254e-05 | 45.17% | 82.38% | 1.82x | ✅ | +| `hexbytes_new[bytearray(single 0xff)]` | 6.951539313093669e-05 | 3.7905807957240355e-05 | 45.47% | 83.39% | 1.83x | ✅ | +| `hexbytes_new[bytearray(single null byte)]` | 7.002705185730866e-05 | 3.780377030057523e-05 | 46.02% | 85.24% | 1.85x | ✅ | +| `hexbytes_new[bytearray(two patterns)]` | 7.021730955006781e-05 | 3.819433051883357e-05 | 45.61% | 83.84% | 1.84x | ✅ | +| `hexbytes_new[long alternating]` | 5.152918805766896e-05 | 3.300556594521577e-05 | 35.95% | 56.12% | 1.56x | ✅ | +| `hexbytes_new[memoryview(0-9)]` | 8.022331148780298e-05 | 4.3579981072928074e-05 | 45.68% | 84.08% | 1.84x | ✅ | +| `hexbytes_new[memoryview(4-byte pattern)]` | 8.341540154237858e-05 | 4.38445649168893e-05 | 47.44% | 90.25% | 1.90x | ✅ | +| `hexbytes_new[memoryview(all byte values)]` | 8.293859730349804e-05 | 4.380901119766068e-05 | 47.18% | 89.32% | 1.89x | ✅ | +| `hexbytes_new[memoryview(alternating 0x00/0xff)]` | 8.1489545647376e-05 | 4.3979571726363436e-05 | 46.03% | 85.29% | 1.85x | ✅ | +| `hexbytes_new[memoryview(alternating 0xaa/0x55)]` | 8.099116148905616e-05 | 4.3424935085864754e-05 | 46.38% | 86.51% | 1.87x | ✅ | +| `hexbytes_new[memoryview(ascii sentence)]` | 8.310321258598485e-05 | 4.3297633791979736e-05 | 47.90% | 91.93% | 1.92x | ✅ | +| `hexbytes_new[memoryview(b'')]` | 8.188410303758324e-05 | 4.016491724069025e-05 | 50.95% | 103.87% | 2.04x | ✅ | +| `hexbytes_new[memoryview(b'\\x00'*32)]` | 8.338688091957809e-05 | 4.3429359304459876e-05 | 47.92% | 92.01% | 1.92x | ✅ | +| `hexbytes_new[memoryview(b'\\x00\\xff\\x00\\xff')]` | 8.340909693892604e-05 | 4.3500825943088554e-05 | 47.85% | 91.74% | 1.92x | ✅ | +| `hexbytes_new[memoryview(b'\\x01'*100)]` | 7.997783175652987e-05 | 4.388274631699859e-05 | 45.13% | 82.25% | 1.82x | ✅ | +| `hexbytes_new[memoryview(b'\\x01'*2048)]` | 0.00010169240252214409 | 6.311411081140181e-05 | 37.94% | 61.12% | 1.61x | ✅ | +| `hexbytes_new[memoryview(b'\\x01\\x02\\x03')]` | 8.4460586551187e-05 | 4.3752511320158954e-05 | 48.20% | 93.04% | 1.93x | ✅ | +| `hexbytes_new[memoryview(b'\\x10\\x20\\x30\\x40\\x50')]` | 8.22274015848023e-05 | 4.289337845164596e-05 | 47.84% | 91.70% | 1.92x | ✅ | +| `hexbytes_new[memoryview(b'\\x7f'*8)]` | 8.324568531610435e-05 | 4.351649760335474e-05 | 47.73% | 91.30% | 1.91x | ✅ | +| `hexbytes_new[memoryview(b'\\x80'*8)]` | 8.33645322052042e-05 | 4.338391968277489e-05 | 47.96% | 92.16% | 1.92x | ✅ | +| `hexbytes_new[memoryview(b'\\xde\\xad\\xbe\\xef')]` | 8.484956625465498e-05 | 4.353813319345513e-05 | 48.69% | 94.89% | 1.95x | ✅ | +| `hexbytes_new[memoryview(b'\\xff'*64)]` | 8.3430397782451e-05 | 4.3927261484952914e-05 | 47.35% | 89.93% | 1.90x | ✅ | +| `hexbytes_new[memoryview(b'a'*1024)]` | 0.00010047904689140954 | 5.6443398731331476e-05 | 43.83% | 78.02% | 1.78x | ✅ | +| `hexbytes_new[memoryview(b'abc')]` | 8.34114766484776e-05 | 4.346394261952448e-05 | 47.89% | 91.91% | 1.92x | ✅ | +| `hexbytes_new[memoryview(long alternating)]` | 9.787971164049838e-05 | 5.676548435978873e-05 | 42.00% | 72.43% | 1.72x | ✅ | +| `hexbytes_new[memoryview(mixed pattern)]` | 8.378598033602691e-05 | 4.328265993514059e-05 | 48.34% | 93.58% | 1.94x | ✅ | +| `hexbytes_new[memoryview(multiples of 0x10)]` | 8.20253774114009e-05 | 4.366698741190707e-05 | 46.76% | 87.84% | 1.88x | ✅ | +| `hexbytes_new[memoryview(palindrome ascii)]` | 8.268911083692241e-05 | 4.3133538000604524e-05 | 47.84% | 91.70% | 1.92x | ✅ | +| `hexbytes_new[memoryview(palindrome numeric)]` | 8.306993737839588e-05 | 4.3364824052142434e-05 | 47.80% | 91.56% | 1.92x | ✅ | +| `hexbytes_new[memoryview(palindrome)]` | 8.31876279291165e-05 | 4.370661270418656e-05 | 47.46% | 90.33% | 1.90x | ✅ | +| `hexbytes_new[memoryview(repeated 0-9)]` | 8.23495604683162e-05 | 4.3603825282673034e-05 | 47.05% | 88.86% | 1.89x | ✅ | +| `hexbytes_new[memoryview(single 0xff)]` | 8.268373658642514e-05 | 4.341736780573953e-05 | 47.49% | 90.44% | 1.90x | ✅ | +| `hexbytes_new[memoryview(single null byte)]` | 8.208563618100804e-05 | 4.3837933169361676e-05 | 46.59% | 87.25% | 1.87x | ✅ | +| `hexbytes_new[memoryview(two patterns)]` | 8.267537679797833e-05 | 4.333163509742315e-05 | 47.59% | 90.80% | 1.91x | ✅ | +| `hexbytes_new[mixed pattern]` | 4.392505894371362e-05 | 2.6601866589359637e-05 | 39.44% | 65.12% | 1.65x | ✅ | +| `hexbytes_new[multiples of 0x10]` | 4.343348036656633e-05 | 2.6273067206239062e-05 | 39.51% | 65.32% | 1.65x | ✅ | +| `hexbytes_new[palindrome ascii]` | 4.251207849330514e-05 | 2.6162733710625447e-05 | 38.46% | 62.49% | 1.62x | ✅ | +| `hexbytes_new[palindrome numeric]` | 4.2583072652377186e-05 | 2.62861354412074e-05 | 38.27% | 62.00% | 1.62x | ✅ | +| `hexbytes_new[palindrome]` | 4.2269347982501034e-05 | 2.6127132199485306e-05 | 38.19% | 61.78% | 1.62x | ✅ | +| `hexbytes_new[repeated 0-9]` | 4.382144246311918e-05 | 2.669771834215431e-05 | 39.08% | 64.14% | 1.64x | ✅ | +| `hexbytes_new[single 0xff]` | 4.285055823609423e-05 | 2.5757956684936326e-05 | 39.89% | 66.36% | 1.66x | ✅ | +| `hexbytes_new[single null byte]` | 4.315406991503432e-05 | 2.580524445125473e-05 | 40.20% | 67.23% | 1.67x | ✅ | +| `hexbytes_new[two patterns]` | 4.37496933715355e-05 | 2.6224226509567357e-05 | 40.06% | 66.83% | 1.67x | ✅ | +| `hexbytes_repr[0-9]` | 2.906798628681222e-05 | 1.4531913113973036e-05 | 50.01% | 100.03% | 2.00x | ✅ | +| `hexbytes_repr[4-byte pattern]` | 0.00011935082533055303 | 4.083441099235044e-05 | 65.79% | 192.28% | 2.92x | ✅ | +| `hexbytes_repr[all byte values]` | 0.00011953885360769618 | 4.0906192772751766e-05 | 65.78% | 192.23% | 2.92x | ✅ | +| `hexbytes_repr[alternating 0x00/0xff]` | 4.8766614966374895e-05 | 1.9830588723513578e-05 | 59.34% | 145.92% | 2.46x | ✅ | +| `hexbytes_repr[alternating 0xaa/0x55]` | 4.879737396349098e-05 | 1.991196490103694e-05 | 59.19% | 145.07% | 2.45x | ✅ | +| `hexbytes_repr[ascii sentence]` | 4.0355017432216155e-05 | 1.8182835967215847e-05 | 54.94% | 121.94% | 2.22x | ✅ | +| `hexbytes_repr[b'']` | 2.1396382325640314e-05 | 1.2031822807425543e-05 | 43.77% | 77.83% | 1.78x | ✅ | +| `hexbytes_repr[b'\\x00'*32]` | 3.636127133370274e-05 | 1.6711449068402516e-05 | 54.04% | 117.58% | 2.18x | ✅ | +| `hexbytes_repr[b'\\x00\\xff\\x00\\xff']` | 2.6344754874310393e-05 | 1.3998785811927036e-05 | 46.86% | 88.19% | 1.88x | ✅ | +| `hexbytes_repr[b'\\x01'*100]` | 6.141888043507738e-05 | 2.389577750429593e-05 | 61.09% | 157.03% | 2.57x | ✅ | +| `hexbytes_repr[b'\\x01'*2048]` | 0.0007651395210586643 | 0.00022305139081562906 | 70.85% | 243.03% | 3.43x | ✅ | +| `hexbytes_repr[b'\\x01\\x02\\x03']` | 2.632420191094396e-05 | 1.4028082142250416e-05 | 46.71% | 87.65% | 1.88x | ✅ | +| `hexbytes_repr[b'\\x10\\x20\\x30\\x40\\x50']` | 2.706277390156218e-05 | 1.403789537331631e-05 | 48.13% | 92.78% | 1.93x | ✅ | +| `hexbytes_repr[b'\\x7f'*8]` | 2.8376596198488254e-05 | 1.432204194824075e-05 | 49.53% | 98.13% | 1.98x | ✅ | +| `hexbytes_repr[b'\\x80'*8]` | 2.8549436341641795e-05 | 1.4395340086866826e-05 | 49.58% | 98.32% | 1.98x | ✅ | +| `hexbytes_repr[b'\\xde\\xad\\xbe\\xef']` | 2.6362181300417332e-05 | 1.396854297532199e-05 | 47.01% | 88.73% | 1.89x | ✅ | +| `hexbytes_repr[b'\\xff'*64]` | 4.8686630362055564e-05 | 1.9830965235271825e-05 | 59.27% | 145.51% | 2.46x | ✅ | +| `hexbytes_repr[b'a'*1024]` | 0.00039941884942643676 | 0.00012258952376106996 | 69.31% | 225.82% | 3.26x | ✅ | +| `hexbytes_repr[b'abc']` | 2.6385804359140176e-05 | 1.3872932654247955e-05 | 47.42% | 90.20% | 1.90x | ✅ | +| `hexbytes_repr[long alternating]` | 0.0003999947155260777 | 0.00012260052332378147 | 69.35% | 226.26% | 3.26x | ✅ | +| `hexbytes_repr[mixed pattern]` | 9.765705535730533e-05 | 3.3752756622427605e-05 | 65.44% | 189.33% | 2.89x | ✅ | +| `hexbytes_repr[multiples of 0x10]` | 2.9054582291393952e-05 | 1.4535057836989328e-05 | 49.97% | 99.89% | 2.00x | ✅ | +| `hexbytes_repr[palindrome ascii]` | 2.764780958800019e-05 | 1.3997407078561349e-05 | 49.37% | 97.52% | 1.98x | ✅ | +| `hexbytes_repr[palindrome numeric]` | 2.7119834752884084e-05 | 1.3884448310409815e-05 | 48.80% | 95.33% | 1.95x | ✅ | +| `hexbytes_repr[palindrome]` | 3.19139538471712e-05 | 1.5610305650399587e-05 | 51.09% | 104.44% | 2.04x | ✅ | +| `hexbytes_repr[repeated 0-9]` | 6.163221431809811e-05 | 2.339075241459804e-05 | 62.05% | 163.49% | 2.63x | ✅ | +| `hexbytes_repr[single 0xff]` | 2.556155348855207e-05 | 1.3534636647879307e-05 | 47.05% | 88.86% | 1.89x | ✅ | +| `hexbytes_repr[single null byte]` | 2.5477357675176088e-05 | 1.3488493283911999e-05 | 47.06% | 88.88% | 1.89x | ✅ | +| `hexbytes_repr[two patterns]` | 4.8746659369136945e-05 | 1.9840445470066074e-05 | 59.30% | 145.69% | 2.46x | ✅ | +| `hexbytes_to_0x_hex[0-9]` | 1.5751175843188188e-05 | 1.3512168268861273e-05 | 14.21% | 16.57% | 1.17x | ✅ | +| `hexbytes_to_0x_hex[4-byte pattern]` | 4.188944600410523e-05 | 3.972684342751932e-05 | 5.16% | 5.44% | 1.05x | ✅ | +| `hexbytes_to_0x_hex[all byte values]` | 4.198416473118811e-05 | 3.9905394372347894e-05 | 4.95% | 5.21% | 1.05x | ✅ | +| `hexbytes_to_0x_hex[alternating 0x00/0xff]` | 2.0729235575349237e-05 | 1.8759347999864966e-05 | 9.50% | 10.50% | 1.11x | ✅ | +| `hexbytes_to_0x_hex[alternating 0xaa/0x55]` | 2.0935197305447756e-05 | 1.9037620818789003e-05 | 9.06% | 9.97% | 1.10x | ✅ | +| `hexbytes_to_0x_hex[ascii sentence]` | 1.8680887434516488e-05 | 1.673122727529239e-05 | 10.44% | 11.65% | 1.12x | ✅ | +| `hexbytes_to_0x_hex[b'']` | 1.0129796390515284e-05 | 1.1230908929698665e-05 | -10.87% | -9.80% | 0.90x | ❌ | +| `hexbytes_to_0x_hex[b'\\x00'*32]` | 1.747934309800761e-05 | 1.5828109926636758e-05 | 9.45% | 10.43% | 1.10x | ✅ | +| `hexbytes_to_0x_hex[b'\\x00\\xff\\x00\\xff']` | 1.4976104490067639e-05 | 1.3079329502293043e-05 | 12.67% | 14.50% | 1.15x | ✅ | +| `hexbytes_to_0x_hex[b'\\x01'*100]` | 2.5136693060848967e-05 | 2.2702589812717672e-05 | 9.68% | 10.72% | 1.11x | ✅ | +| `hexbytes_to_0x_hex[b'\\x01'*2048]` | 0.0002229201516443345 | 0.0002219118834105949 | 0.45% | 0.45% | 1.00x | ✅ | +| `hexbytes_to_0x_hex[b'\\x01\\x02\\x03']` | 1.4759359703304708e-05 | 1.2904398127835308e-05 | 12.57% | 14.37% | 1.14x | ✅ | +| `hexbytes_to_0x_hex[b'\\x10\\x20\\x30\\x40\\x50']` | 1.5034359717442118e-05 | 1.3507130242500617e-05 | 10.16% | 11.31% | 1.11x | ✅ | +| `hexbytes_to_0x_hex[b'\\x7f'*8]` | 1.6442674135908144e-05 | 1.3449368062563744e-05 | 18.20% | 22.26% | 1.22x | ✅ | +| `hexbytes_to_0x_hex[b'\\x80'*8]` | 1.5284441435804402e-05 | 1.341387379371508e-05 | 12.24% | 13.95% | 1.14x | ✅ | +| `hexbytes_to_0x_hex[b'\\xde\\xad\\xbe\\xef']` | 1.4818882536857224e-05 | 1.3113785223065585e-05 | 11.51% | 13.00% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[b'\\xff'*64]` | 2.0653224627941112e-05 | 1.880171410021685e-05 | 8.96% | 9.85% | 1.10x | ✅ | +| `hexbytes_to_0x_hex[b'a'*1024]` | 0.00012215348819907536 | 0.00012176789988852488 | 0.32% | 0.32% | 1.00x | ✅ | +| `hexbytes_to_0x_hex[b'abc']` | 1.476645561092787e-05 | 1.2842567312862918e-05 | 13.03% | 14.98% | 1.15x | ✅ | +| `hexbytes_to_0x_hex[long alternating]` | 0.00012236644545641535 | 0.00012102260530175359 | 1.10% | 1.11% | 1.01x | ✅ | +| `hexbytes_to_0x_hex[mixed pattern]` | 3.4963886205126254e-05 | 3.2889936730400586e-05 | 5.93% | 6.31% | 1.06x | ✅ | +| `hexbytes_to_0x_hex[multiples of 0x10]` | 1.5641651068076332e-05 | 1.409609734237564e-05 | 9.88% | 10.96% | 1.11x | ✅ | +| `hexbytes_to_0x_hex[palindrome ascii]` | 1.5071756320538221e-05 | 1.3222747996462207e-05 | 12.27% | 13.98% | 1.14x | ✅ | +| `hexbytes_to_0x_hex[palindrome numeric]` | 1.498200289295834e-05 | 1.327094536511816e-05 | 11.42% | 12.89% | 1.13x | ✅ | +| `hexbytes_to_0x_hex[palindrome]` | 1.643034873494635e-05 | 1.4635341821183812e-05 | 10.92% | 12.26% | 1.12x | ✅ | +| `hexbytes_to_0x_hex[repeated 0-9]` | 2.5167728154543546e-05 | 2.273393673682945e-05 | 9.67% | 10.71% | 1.11x | ✅ | +| `hexbytes_to_0x_hex[single 0xff]` | 1.4659952030930308e-05 | 1.2670889720289785e-05 | 13.57% | 15.70% | 1.16x | ✅ | +| `hexbytes_to_0x_hex[single null byte]` | 1.4580408318988365e-05 | 1.2707411692001782e-05 | 12.85% | 14.74% | 1.15x | ✅ | +| `hexbytes_to_0x_hex[two patterns]` | 2.071625963528691e-05 | 1.8746568542236906e-05 | 9.51% | 10.51% | 1.11x | ✅ | From 015cadbf1c8d60867fa9468fbd753a452f7d38ff Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Wed, 15 Oct 2025 00:16:04 -0400 Subject: [PATCH 96/98] fix(test): dont queue workers unless cronjob --- .github/workflows/tox.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tox.yaml b/.github/workflows/tox.yaml index 4ef9941..50e52be 100644 --- a/.github/workflows/tox.yaml +++ b/.github/workflows/tox.yaml @@ -40,7 +40,7 @@ jobs: # Exclude x86 (32-bit) builds for macos, which doesn't support 32-bit at all - os: macos-latest architecture: x86 - max-parallel: ${{ (github.event_name == 'schedule' || github.event_name == 'push') && 4 || 20 }} + max-parallel: ${{ (github.event_name == 'schedule' || github.event_name == 'push') && 4 || 1000 }} env: TOXENV: py${{ matrix.python-version }}-${{ matrix.jobtype }} TOX_RECREATE_FLAG: ${{ github.event_name == 'schedule' && '-r' || '' }} From f803b0746c7ff89adab3da10eb653d9e8ca5f90f Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Thu, 16 Oct 2025 22:51:53 -0400 Subject: [PATCH 97/98] fix(test): fix wheel test (#40) --- tox.ini | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tox.ini b/tox.ini index 0b7521c..b940b95 100644 --- a/tox.ini +++ b/tox.ini @@ -46,8 +46,8 @@ commands= python -m pip install --upgrade pip /bin/rm -rf build dist python -m build - /bin/bash -c 'python -m pip install --upgrade "$(ls dist/hexbytes-*-py3-none-any.whl)" --progress-bar off' - python -c "import hexbytes" + /bin/bash -c 'python -m pip install --upgrade "$(ls dist/faster_hexbytes-*-py3-none-any.whl)" --progress-bar off' + python -c "import faster_hexbytes" skip_install=true [testenv:windows-wheel] @@ -61,6 +61,6 @@ commands= python -m pip install --upgrade pip bash.exe -c "rm -rf build dist" python -m build - bash.exe -c 'python -m pip install --upgrade "$(ls dist/hexbytes-*-py3-none-any.whl)" --progress-bar off' - python -c "import hexbytes" + bash.exe -c 'python -m pip install --upgrade "$(ls dist/faster_hexbytes-*-py3-none-any.whl)" --progress-bar off' + python -c "import faster_hexbytes" skip_install=true From 661f617630c327229b74cc52ebc1f725e002aaba Mon Sep 17 00:00:00 2001 From: BobTheBuidler <70677534+BobTheBuidler@users.noreply.github.com> Date: Fri, 17 Oct 2025 00:10:58 -0400 Subject: [PATCH 98/98] Update tox.ini --- tox.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index b940b95..044ec8e 100644 --- a/tox.ini +++ b/tox.ini @@ -28,7 +28,7 @@ extras= docs allowlist_externals=make,pre-commit -[testenv:py{39,310,311,312,313,313t,314,314t}-lint] +[py{39,310,311,312,313,313t,314,314t}-lint] deps=pre-commit extras=dev commands=