Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rewrite all as toplevel funcs #58

Merged
merged 8 commits into from
Jan 22, 2024
Merged

Rewrite all as toplevel funcs #58

merged 8 commits into from
Jan 22, 2024

Conversation

MarcoGorelli
Copy link
Collaborator

@MarcoGorelli MarcoGorelli commented Jan 22, 2024

This would address the type checking issues reported in pola-rs/polars#13899

But it keeps the namespace pl.col('a').xdt syntax available for anyone who prefers it


TODO: fix some argument names and type annotations

Comment on lines +10 to +23
@pl.api.register_expr_namespace("xdt")
class ExprXDTNamespace:
"""eXtra stuff for DateTimes."""

def __init__(self, expr: pl.Expr) -> None:
self._expr = expr

def __getattr__(self, function_name: str) -> Callable[[Any], pl.Expr]:
def func(*args: Any, **kwargs: Any) -> pl.Expr:
return getattr(functions, function_name)(
self._expr, *args, **kwargs
)

return func
Copy link
Collaborator Author

@MarcoGorelli MarcoGorelli Jan 22, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

adding this for backwards-compatibility, so that

from datetime import date

import polars as pl
import polars_xdt  # noqa: F401


df = pl.DataFrame(
    {"date": [date(2023, 4, 3), date(2023, 9, 1), date(2024, 1, 4)]}
)

result = df.with_columns(
    date_shifted=pl.col("date").xdt.offset_by(
      '5bd',
      weekend=('Sat', 'Sun'),
    )
)
print(result)

can still run

Not that there's many (any?) real users yet, but still, being backwards compatible is a good practice

@MarcoGorelli MarcoGorelli changed the title WIP: Rewrite all as toplevel funcs Rewrite all as toplevel funcs Jan 22, 2024
@MarcoGorelli MarcoGorelli merged commit f527b05 into main Jan 22, 2024
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant