Skip to content

Commit 6ff3d41

Browse files
authored
chore: support for substrait>=0.27 (#6216)
https://github.com/substrait-io/substrait-python/releases > code under substrait.gen.proto is now found under substrait --------- Signed-off-by: blaginin <github@blaginin.me>
1 parent 2c198c4 commit 6ff3d41

3 files changed

Lines changed: 44 additions & 12 deletions

File tree

uv.lock

Lines changed: 16 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vortex-python/python/vortex/arrow/expression.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import pyarrow as pa
77
import pyarrow.compute as pc
88
from substrait.proto import ( # pyright: ignore[reportMissingTypeStubs]
9-
ExtendedExpression, # pyright: ignore[reportAttributeAccessIssue, reportUnknownVariableType]
9+
ExtendedExpression,
1010
)
1111

1212
from vortex._lib.expr import Expr # pyright: ignore[reportMissingModuleSource]
@@ -46,10 +46,10 @@ def _schema_for_substrait(schema: pa.Schema) -> pa.Schema:
4646

4747
def arrow_to_vortex(arrow_expression: pc.Expression, schema: pa.Schema) -> Expr:
4848
compat_schema = _schema_for_substrait(schema)
49-
substrait_object = ExtendedExpression() # pyright: ignore[reportUnknownVariableType]
50-
substrait_object.ParseFromString(arrow_expression.to_substrait(compat_schema)) # pyright: ignore[reportUnknownMemberType]
49+
substrait_object = ExtendedExpression()
50+
substrait_object.ParseFromString(bytes(arrow_expression.to_substrait(compat_schema))) # pyright: ignore[reportUnusedCallResult]
5151

52-
expressions = extended_expression(substrait_object) # pyright: ignore[reportUnknownArgumentType]
52+
expressions = extended_expression(substrait_object)
5353

5454
if len(expressions) < 0 or len(expressions) > 1:
5555
raise ValueError("arrow_to_vortex: extended expression must have exactly one child")

vortex-python/python/vortex/substrait.py

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,31 @@
33

44
import operator
55
from collections.abc import Callable
6+
from typing import TYPE_CHECKING
67

78
from google.protobuf.internal.containers import RepeatedCompositeFieldContainer
8-
from substrait.gen.proto.algebra_pb2 import Expression, FunctionArgument
9-
from substrait.gen.proto.extended_expression_pb2 import ExpressionReference, ExtendedExpression
10-
from substrait.gen.proto.extensions.extensions_pb2 import SimpleExtensionDeclaration, SimpleExtensionURI
11-
from substrait.gen.proto.type_pb2 import NamedStruct
9+
10+
if TYPE_CHECKING:
11+
from substrait.algebra_pb2 import Expression, FunctionArgument
12+
from substrait.extended_expression_pb2 import ExpressionReference, ExtendedExpression
13+
from substrait.extensions.extensions_pb2 import (
14+
SimpleExtensionDeclaration,
15+
SimpleExtensionURI, # pyright: ignore[reportDeprecated]
16+
)
17+
from substrait.type_pb2 import NamedStruct
18+
else:
19+
try:
20+
# substrait >= 0.27
21+
from substrait.algebra_pb2 import Expression, FunctionArgument
22+
from substrait.extended_expression_pb2 import ExpressionReference, ExtendedExpression
23+
from substrait.extensions.extensions_pb2 import SimpleExtensionDeclaration, SimpleExtensionURI
24+
from substrait.type_pb2 import NamedStruct
25+
except ImportError:
26+
# substrait < 0.27
27+
from substrait.gen.proto.algebra_pb2 import Expression, FunctionArgument
28+
from substrait.gen.proto.extended_expression_pb2 import ExpressionReference, ExtendedExpression
29+
from substrait.gen.proto.extensions.extensions_pb2 import SimpleExtensionDeclaration, SimpleExtensionURI
30+
from substrait.gen.proto.type_pb2 import NamedStruct
1231

1332
from ._lib import dtype as _dtype # pyright: ignore[reportMissingModuleSource]
1433
from ._lib import expr as _expr # pyright: ignore[reportMissingModuleSource]
@@ -150,7 +169,7 @@ def function_argument(
150169

151170
def extension_function(
152171
substrait_object: SimpleExtensionDeclaration.ExtensionFunction,
153-
extension_uris: RepeatedCompositeFieldContainer[SimpleExtensionURI],
172+
extension_uris: RepeatedCompositeFieldContainer[SimpleExtensionURI], # pyright: ignore[reportDeprecated]
154173
) -> Callable[..., _expr.Expr]:
155174
# https://github.com/substrait-io/substrait/blob/main/proto/substrait/extensions/extensions.proto#L57
156175
match extension_uris[substrait_object.extension_uri_reference].uri:

0 commit comments

Comments
 (0)