如何输入提示`pl.date`?

问题描述 投票:0回答:1

假设我们创建一些日期:

import polars as pl

df = pl.DataFrame(
    [
        pl.Series("start", ["2023-01-01"], dtype=pl.Date).str.to_date(),
        pl.Series("end", ["2024-01-01"], dtype=pl.Date).str.to_date(),
    ]
)

现在我可以根据这些创建日期范围:

dates = pl.date_range(df[0, "start"], df[0, "end"], "1mo", eager=True)

但是我想定义一个函数,它接受几个日期并输出一个范围,作为

pl.date_range
的包装:

def my_date_range(start: pl.Date, end: pl.Date) -> pl.Series:
    return pl.date_range(start, end, "1mo", eager=True)

上面的内容没有通过

pyright
/Pylance 进行类型检查,因为:

Argument of type "Date" cannot be assigned to parameter "start" of type "IntoExprColumn | date | datetime" in function "date_range"
  Type "Date" is incompatible with type "IntoExprColumn | date | datetime"
    "Date" is incompatible with "date"
    "Date" is incompatible with "datetime"
    "Date" is incompatible with "Expr"
    "Date" is incompatible with "Series"
    "Date" is incompatible with "str"PylancereportArgumentType

如果我查看

type(df[0, "start"])
,我会看到:

datetime.date

pl.Date
不好,因为
isinstance(df[0, "start"], pl.Date) == False

我不知道如何导入

datetime.date
以便将其用作类型注释(尝试
import polars.datetime as dt
会引发
No module named 'polars.datetime'
)。

如何做到这一点?或者换句话说:

my_date_range
的日期参数应该如何注释?

python python-typing python-polars pyright
1个回答
1
投票

由于

datetime.date
start
预期的
end
pl.date_range
参数兼容,这应该足够了:

import polars as pl
from datetime import date

def my_date_range(start: date, end: date) -> pl.Series:
    return pl.date_range(start, end, "1mo", eager=True)
© www.soinside.com 2019 - 2024. All rights reserved.