Skip to content

Commit 5a0a5d9

Browse files
committed
fix: remove typing_extensions dependency and update codegen
1 parent a165544 commit 5a0a5d9

File tree

9 files changed

+54
-126
lines changed

9 files changed

+54
-126
lines changed

Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ codegen-extensions:
1010
--input third_party/substrait/text/simple_extensions_schema.yaml \
1111
--output src/substrait/gen/json/simple_extensions.py \
1212
--output-model-type dataclasses.dataclass \
13+
--target-python-version 3.10 \
1314
--disable-timestamp
1415

1516
lint:

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ authors = [{name = "Substrait contributors", email = "[email protected]
55
license = {text = "Apache-2.0"}
66
readme = "README.md"
77
requires-python = ">=3.10"
8-
dependencies = ["protobuf >=3.19.1,<6", "typing_extensions"]
8+
dependencies = ["protobuf >=3.19.1,<6"]
99
dynamic = ["version"]
1010

1111
[tool.setuptools_scm]

src/substrait/builders/plan.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
See `examples/builder_example.py` for usage.
66
"""
77

8-
98
from typing import Callable, Iterable, Optional, TypedDict, Union
109
import substrait.gen.proto.algebra_pb2 as stalg
1110
from substrait.gen.proto.extensions.extensions_pb2 import AdvancedExtension

src/substrait/builders/type.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,7 @@ def precision_timestamp_tz(precision: int, nullable=True) -> stt.Type:
221221
)
222222
)
223223

224+
224225
def timestamp(nullable=True) -> stt.Type:
225226
return stt.Type(
226227
timestamp=stt.Type.Timestamp(
@@ -230,6 +231,7 @@ def timestamp(nullable=True) -> stt.Type:
230231
)
231232
)
232233

234+
233235
def struct(types: Iterable[stt.Type], nullable=True) -> stt.Type:
234236
return stt.Type(
235237
struct=stt.Type.Struct(

src/substrait/extension_registry.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -324,12 +324,14 @@ def satisfies_signature(self, signature: tuple | list) -> Optional[str]:
324324
output_type = evaluate(self.impl.return_, parameters)
325325

326326
if self.nullability == se.NullabilityHandling.MIRROR:
327-
sig_contains_nullable = any([
328-
p.__getattribute__(p.WhichOneof("kind")).nullability
329-
== Type.NULLABILITY_NULLABLE
330-
for p in signature
331-
if isinstance(p, Type)
332-
])
327+
sig_contains_nullable = any(
328+
[
329+
p.__getattribute__(p.WhichOneof("kind")).nullability
330+
== Type.NULLABILITY_NULLABLE
331+
for p in signature
332+
if isinstance(p, Type)
333+
]
334+
)
333335
output_type.__getattribute__(output_type.WhichOneof("kind")).nullability = (
334336
Type.NULLABILITY_NULLABLE
335337
if sig_contains_nullable

src/substrait/gen/json/simple_extensions.py

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

tests/test_extension_registry.py

Lines changed: 36 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -129,11 +129,12 @@
129129
)
130130

131131

132-
133132
def test_non_existing_urn():
134133
assert (
135134
registry.lookup_function(
136-
urn="non_existent", function_name="add", signature=[i8(nullable=False), i8(nullable=False)]
135+
urn="non_existent",
136+
function_name="add",
137+
signature=[i8(nullable=False), i8(nullable=False)],
137138
)
138139
is None
139140
)
@@ -142,8 +143,9 @@ def test_non_existing_urn():
142143
def test_non_existing_function():
143144
assert (
144145
registry.lookup_function(
145-
146-
urn="extension:test:functions", function_name="sub", signature=[i8(nullable=False), i8(nullable=False)]
146+
urn="extension:test:functions",
147+
function_name="sub",
148+
signature=[i8(nullable=False), i8(nullable=False)],
147149
)
148150
is None
149151
)
@@ -152,15 +154,19 @@ def test_non_existing_function():
152154
def test_non_existing_function_signature():
153155
assert (
154156
registry.lookup_function(
155-
urn="extension:test:functions", function_name="add", signature=[i8(nullable=False)]
157+
urn="extension:test:functions",
158+
function_name="add",
159+
signature=[i8(nullable=False)],
156160
)
157161
is None
158162
)
159163

160164

161165
def test_exact_match():
162166
assert registry.lookup_function(
163-
urn="extension:test:functions", function_name="add", signature=[i8(nullable=False), i8(nullable=False)]
167+
urn="extension:test:functions",
168+
function_name="add",
169+
signature=[i8(nullable=False), i8(nullable=False)],
164170
)[1] == Type(i8=Type.I8(nullability=Type.NULLABILITY_REQUIRED))
165171

166172

@@ -184,43 +190,35 @@ def test_wildcard_match_fails_with_constraits():
184190

185191

186192
def test_wildcard_match_with_constraits():
187-
assert (
188-
registry.lookup_function(
189-
urn="extension:test:functions",
190-
function_name="add",
191-
signature=[i16(nullable=False), i16(nullable=False), i8(nullable=False)],
192-
)[1]
193-
== i8(nullable=False)
194-
)
193+
assert registry.lookup_function(
194+
urn="extension:test:functions",
195+
function_name="add",
196+
signature=[i16(nullable=False), i16(nullable=False), i8(nullable=False)],
197+
)[1] == i8(nullable=False)
195198

196199

197200
def test_variadic():
198-
assert (
199-
registry.lookup_function(
200-
urn="extension:test:functions",
201-
function_name="test_fn",
202-
signature=[i8(nullable=False), i8(nullable=False), i8(nullable=False)],
203-
)[1]
204-
== i8(nullable=False)
205-
)
201+
assert registry.lookup_function(
202+
urn="extension:test:functions",
203+
function_name="test_fn",
204+
signature=[i8(nullable=False), i8(nullable=False), i8(nullable=False)],
205+
)[1] == i8(nullable=False)
206206

207207

208208
def test_variadic_any():
209-
assert (
210-
registry.lookup_function(
211-
urn="extension:test:functions",
212-
function_name="test_fn_variadic_any",
213-
signature=[i16(nullable=False), i16(nullable=False), i16(nullable=False)],
214-
)[1]
215-
== i16(nullable=False)
216-
)
209+
assert registry.lookup_function(
210+
urn="extension:test:functions",
211+
function_name="test_fn_variadic_any",
212+
signature=[i16(nullable=False), i16(nullable=False), i16(nullable=False)],
213+
)[1] == i16(nullable=False)
217214

218215

219216
def test_variadic_fails_min_constraint():
220217
assert (
221218
registry.lookup_function(
222-
223-
urn="extension:test:functions", function_name="test_fn", signature=[i8(nullable=False)]
219+
urn="extension:test:functions",
220+
function_name="test_fn",
221+
signature=[i8(nullable=False)],
224222
)
225223
is None
226224
)
@@ -254,14 +252,11 @@ def test_decimal_happy_path_discrete():
254252

255253

256254
def test_enum_with_valid_option():
257-
assert (
258-
registry.lookup_function(
259-
urn="extension:test:functions",
260-
function_name="test_enum",
261-
signature=["FLIP", i8(nullable=False)],
262-
)[1]
263-
== i8(nullable=False)
264-
)
255+
assert registry.lookup_function(
256+
urn="extension:test:functions",
257+
function_name="test_enum",
258+
signature=["FLIP", i8(nullable=False)],
259+
)[1] == i8(nullable=False)
265260

266261

267262
def test_enum_with_nonexistent_option():
@@ -572,4 +567,4 @@ def test_register_requires_uri():
572567

573568
# During migration, URI is required - this should fail with TypeError
574569
with pytest.raises(TypeError):
575-
registry.register_extension_dict(yaml.safe_load(content))
570+
registry.register_extension_dict(yaml.safe_load(content))

third_party/substrait-cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Subproject commit e26585f45cdfd0ed3bf03f700c354f04685398c6

0 commit comments

Comments
 (0)