Skip to content

Commit 7205e0a

Browse files
committed
Change name from register_interop_behavior to enable_java_integration
1 parent f5064ad commit 7205e0a

File tree

1 file changed

+28
-15
lines changed

1 file changed

+28
-15
lines changed

graalpython/lib-graalpython/modules/_polyglot_arrow.py

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -122,13 +122,20 @@ def __arrow_c_array__(self, requested_schema=None):
122122
return __graalpython__.export_arrow_vector(self)
123123

124124

125-
__interop_registered = False
125+
__enabled_java_integration = False
126126

127127

128-
def register_interop_behavior():
129-
global __interop_registered
130-
if not __interop_registered:
131-
__interop_registered = True
128+
def enable_java_integration(allow_method_overwrites: bool = False):
129+
"""
130+
This method enables passing Java Apache Arrow vector classes directly to Python code without copying any memory.
131+
It basically calls `polyglot.register_interop_type` on every vector class defined in the library.
132+
Calling the method more than once has no effect.
133+
134+
If allow_method_overwrites=True, defining the same method is explicitly allowed.
135+
"""
136+
global __enabled_java_integration
137+
if not __enabled_java_integration:
138+
__enabled_java_integration = True
132139
# Ints
133140
int8_vector_class_path = java.type("org.apache.arrow.vector.TinyIntVector")
134141
int16_vector_class_path = java.type("org.apache.arrow.vector.SmallIntVector")
@@ -141,13 +148,19 @@ def register_interop_behavior():
141148
float4_vector_class_path = java.type("org.apache.arrow.vector.Float4Vector")
142149
float8_vector_class_path = java.type("org.apache.arrow.vector.Float8Vector")
143150

144-
polyglot.register_interop_type(int8_vector_class_path, TinyIntVector)
145-
polyglot.register_interop_type(int16_vector_class_path, SmallIntVector)
146-
polyglot.register_interop_type(int32_vector_class_path, IntVector)
147-
polyglot.register_interop_type(int64_vector_class_path, BigIntVector)
148-
149-
polyglot.register_interop_type(boolean_vector_class_path, BitVector)
150-
151-
polyglot.register_interop_type(float2_vector_class_path, Float2Vector)
152-
polyglot.register_interop_type(float4_vector_class_path, Float4Vector)
153-
polyglot.register_interop_type(float8_vector_class_path, Float8Vector)
151+
polyglot.register_interop_type(int8_vector_class_path, TinyIntVector,
152+
allow_method_overwrites=allow_method_overwrites)
153+
polyglot.register_interop_type(int16_vector_class_path, SmallIntVector,
154+
allow_method_overwrites=allow_method_overwrites)
155+
polyglot.register_interop_type(int32_vector_class_path, IntVector,
156+
allow_method_overwrites=allow_method_overwrites)
157+
polyglot.register_interop_type(int64_vector_class_path, BigIntVector,
158+
allow_method_overwrites=allow_method_overwrites)
159+
polyglot.register_interop_type(boolean_vector_class_path, BitVector,
160+
allow_method_overwrites=allow_method_overwrites)
161+
polyglot.register_interop_type(float2_vector_class_path, Float2Vector,
162+
allow_method_overwrites=allow_method_overwrites)
163+
polyglot.register_interop_type(float4_vector_class_path, Float4Vector,
164+
allow_method_overwrites=allow_method_overwrites)
165+
polyglot.register_interop_type(float8_vector_class_path, Float8Vector,
166+
allow_method_overwrites=allow_method_overwrites)

0 commit comments

Comments
 (0)