Skip to content

Commit 376ca2b

Browse files
committed
Fix formatting and add extra test
1 parent 53ae6c9 commit 376ca2b

File tree

2 files changed

+20
-9
lines changed

2 files changed

+20
-9
lines changed

pyiceberg/expressions/parser.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -156,10 +156,8 @@ def _(result: ParseResults) -> Literal[L]:
156156

157157
@between.set_parse_action
158158
def _(result: ParseResults) -> BooleanExpression:
159-
return And(
160-
GreaterThanOrEqual(result.column, result[2]),
161-
LessThanOrEqual(result.column, result[4])
162-
)
159+
return And(GreaterThanOrEqual(result.column, result[2]), LessThanOrEqual(result.column, result[4]))
160+
163161

164162
@left_ref.set_parse_action
165163
def _(result: ParseResults) -> BooleanExpression:

tests/expressions/test_parser.py

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@
3939
NotNull,
4040
NotStartsWith,
4141
Or,
42-
StartsWith, Reference,
42+
Reference,
43+
StartsWith,
4344
)
4445
from pyiceberg.expressions.literals import DecimalLiteral, LongLiteral
4546

@@ -239,10 +240,22 @@ def test_quoted_column_with_dots() -> None:
239240
def test_quoted_column_with_spaces() -> None:
240241
assert EqualTo("Foo Bar", "data") == parser.parse("\"Foo Bar\" = 'data'")
241242

243+
242244
def test_valid_between() -> None:
243-
assert And(left=GreaterThanOrEqual(Reference(name="foo"), LongLiteral(1)), right=LessThanOrEqual(Reference(name="foo"), LongLiteral(3))) == parser.parse("foo between 1 and 3")
244-
assert And(left=GreaterThanOrEqual(Reference(name="foo"), LongLiteral(1)), right=LessThanOrEqual(Reference(name="foo"), LongLiteral(1))) == parser.parse("foo between 1 and 1")
245-
assert And(left=GreaterThanOrEqual(Reference(name="foo"), DecimalLiteral(Decimal(1.0))), right=LessThanOrEqual(Reference(name="foo"), DecimalLiteral(Decimal(4.0)))) == parser.parse("foo between 1.0 and 4.0")
245+
assert And(
246+
left=GreaterThanOrEqual(Reference(name="foo"), LongLiteral(1)),
247+
right=LessThanOrEqual(Reference(name="foo"), LongLiteral(3)),
248+
) == parser.parse("foo between 1 and 3")
249+
assert And(
250+
left=GreaterThanOrEqual(Reference(name="foo"), LongLiteral(1)),
251+
right=LessThanOrEqual(Reference(name="foo"), LongLiteral(1)),
252+
) == parser.parse("foo between 1 and 1")
253+
assert And(
254+
left=GreaterThanOrEqual(Reference(name="foo"), DecimalLiteral(Decimal(1.0))),
255+
right=LessThanOrEqual(Reference(name="foo"), DecimalLiteral(Decimal(4.0))),
256+
) == parser.parse("foo between 1.0 and 4.0")
257+
assert parser.parse("foo between 1 and 3") == parser.parse("1 <= foo and foo <= 3")
258+
246259

247260
def test_invalid_between() -> None:
248261
# boolean
@@ -253,4 +266,4 @@ def test_invalid_between() -> None:
253266
# string
254267
with pytest.raises(ParseException) as exc_info:
255268
parser.parse("foo between 'a' and 'b'")
256-
assert "Expected number, found \"\'\"" in str(exc_info)
269+
assert 'Expected number, found "\'"' in str(exc_info)

0 commit comments

Comments
 (0)