Skip to content

Commit

Permalink
use enum in polars code
Browse files Browse the repository at this point in the history
  • Loading branch information
brandon-b-miller committed Oct 2, 2024
1 parent 616c5dd commit 5fd9468
Showing 1 changed file with 25 additions and 15 deletions.
40 changes: 25 additions & 15 deletions python/cudf_polars/cudf_polars/dsl/expr.py
Original file line number Diff line number Diff line change
Expand Up @@ -961,16 +961,16 @@ def do_evaluate(
class TemporalFunction(Expr):
__slots__ = ("name", "options", "children")
_COMPONENT_MAP: ClassVar[dict[pl_expr.TemporalFunction, str]] = {
pl_expr.TemporalFunction.Year: "year",
pl_expr.TemporalFunction.Month: "month",
pl_expr.TemporalFunction.Day: "day",
pl_expr.TemporalFunction.WeekDay: "weekday",
pl_expr.TemporalFunction.Hour: "hour",
pl_expr.TemporalFunction.Minute: "minute",
pl_expr.TemporalFunction.Second: "second",
pl_expr.TemporalFunction.Millisecond: "millisecond",
pl_expr.TemporalFunction.Microsecond: "microsecond",
pl_expr.TemporalFunction.Nanosecond: "nanosecond",
pl_expr.TemporalFunction.Year: plc.datetime.DatetimeComponent.YEAR,
pl_expr.TemporalFunction.Month: plc.datetime.DatetimeComponent.MONTH,
pl_expr.TemporalFunction.Day: plc.datetime.DatetimeComponent.DAY,
pl_expr.TemporalFunction.WeekDay: plc.datetime.DatetimeComponent.WEEKDAY,
pl_expr.TemporalFunction.Hour: plc.datetime.DatetimeComponent.HOUR,
pl_expr.TemporalFunction.Minute: plc.datetime.DatetimeComponent.MINUTE,
pl_expr.TemporalFunction.Second: plc.datetime.DatetimeComponent.SECOND,
pl_expr.TemporalFunction.Millisecond: plc.datetime.DatetimeComponent.MILLISECOND,
pl_expr.TemporalFunction.Microsecond: plc.datetime.DatetimeComponent.MICROSECOND,
pl_expr.TemporalFunction.Nanosecond: plc.datetime.DatetimeComponent.NANOSECOND,
}
_non_child = ("dtype", "name", "options")
children: tuple[Expr, ...]
Expand Down Expand Up @@ -1003,8 +1003,12 @@ def do_evaluate(
]
(column,) = columns
if self.name == pl_expr.TemporalFunction.Microsecond:
millis = plc.datetime.extract_datetime_component(column.obj, "millisecond")
micros = plc.datetime.extract_datetime_component(column.obj, "microsecond")
millis = plc.datetime.extract_datetime_component(
column.obj, plc.datetime.DatetimeComponent.MILLISECOND
)
micros = plc.datetime.extract_datetime_component(
column.obj, plc.datetime.DatetimeComponent.MICROSECOND
)
millis_as_micros = plc.binaryop.binary_operation(
millis,
plc.interop.from_arrow(pa.scalar(1_000, type=pa.int32())),
Expand All @@ -1019,9 +1023,15 @@ def do_evaluate(
)
return Column(total_micros)
elif self.name == pl_expr.TemporalFunction.Nanosecond:
millis = plc.datetime.extract_datetime_component(column.obj, "millisecond")
micros = plc.datetime.extract_datetime_component(column.obj, "microsecond")
nanos = plc.datetime.extract_datetime_component(column.obj, "nanosecond")
millis = plc.datetime.extract_datetime_component(
column.obj, plc.datetime.DatetimeComponent.MILLISECOND
)
micros = plc.datetime.extract_datetime_component(
column.obj, plc.datetime.DatetimeComponent.MICROSECOND
)
nanos = plc.datetime.extract_datetime_component(
column.obj, plc.datetime.DatetimeComponent.NANOSECOND
)
millis_as_nanos = plc.binaryop.binary_operation(
millis,
plc.interop.from_arrow(pa.scalar(1_000_000, type=pa.int32())),
Expand Down

0 comments on commit 5fd9468

Please sign in to comment.