Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Move bytearray primitives to a separate file
  • Loading branch information
JukkaL committed Jan 9, 2026
commit a5548e9d5b84fc720fd9b59d96ce4afd4b90b9a4
3 changes: 2 additions & 1 deletion mypyc/irbuild/specialize.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,8 @@
join_formatted_strings,
tokenizer_format_call,
)
from mypyc.primitives.bytes_ops import isinstance_bytearray, isinstance_bytes
from mypyc.primitives.bytearray_ops import isinstance_bytearray
from mypyc.primitives.bytes_ops import isinstance_bytes
from mypyc.primitives.dict_ops import (
dict_items_op,
dict_keys_op,
Expand Down
28 changes: 28 additions & 0 deletions mypyc/primitives/bytearray_ops.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
"""Primitive bytearray ops."""

from __future__ import annotations

from mypyc.ir.ops import ERR_MAGIC, ERR_NEVER
from mypyc.ir.rtypes import bit_rprimitive, bytearray_rprimitive, object_rprimitive
from mypyc.primitives.registry import function_op, load_address_op

# Get the 'bytearray' type object.
load_address_op(name="builtins.bytearray", type=object_rprimitive, src="PyByteArray_Type")

# bytearray(obj)
function_op(
name="builtins.bytearray",
arg_types=[object_rprimitive],
return_type=bytearray_rprimitive,
c_function_name="PyByteArray_FromObject",
error_kind=ERR_MAGIC,
)

# translate isinstance(obj, bytearray)
isinstance_bytearray = function_op(
name="builtins.isinstance",
arg_types=[object_rprimitive],
return_type=bit_rprimitive,
c_function_name="PyByteArray_Check",
error_kind=ERR_NEVER,
)
24 changes: 1 addition & 23 deletions mypyc/primitives/bytes_ops.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
"""Primitive bytes and bytearray ops."""
"""Primitive bytes ops."""

from __future__ import annotations

Expand All @@ -8,7 +8,6 @@
RUnion,
bit_rprimitive,
bool_rprimitive,
bytearray_rprimitive,
bytes_rprimitive,
c_int_rprimitive,
c_pyssize_t_rprimitive,
Expand All @@ -30,9 +29,6 @@
# Get the 'bytes' type object.
load_address_op(name="builtins.bytes", type=object_rprimitive, src="PyBytes_Type")

# Get the 'bytearray' type object.
load_address_op(name="builtins.bytearray", type=object_rprimitive, src="PyByteArray_Type")

# bytes(obj)
function_op(
name="builtins.bytes",
Expand All @@ -51,24 +47,6 @@
error_kind=ERR_NEVER,
)

# bytearray(obj)
function_op(
name="builtins.bytearray",
arg_types=[object_rprimitive],
return_type=bytearray_rprimitive,
c_function_name="PyByteArray_FromObject",
error_kind=ERR_MAGIC,
)

# translate isinstance(obj, bytearray)
isinstance_bytearray = function_op(
name="builtins.isinstance",
arg_types=[object_rprimitive],
return_type=bit_rprimitive,
c_function_name="PyByteArray_Check",
error_kind=ERR_NEVER,
)

# bytes ==/!= (return -1/0/1)
bytes_compare = custom_op(
arg_types=[bytes_rprimitive, bytes_rprimitive],
Expand Down
1 change: 1 addition & 0 deletions mypyc/primitives/registry.py
Original file line number Diff line number Diff line change
Expand Up @@ -388,6 +388,7 @@ def load_address_op(name: str, type: RType, src: str) -> LoadAddressDescription:


# Import various modules that set up global state.
import mypyc.primitives.bytearray_ops
import mypyc.primitives.bytes_ops
import mypyc.primitives.dict_ops
import mypyc.primitives.float_ops
Expand Down