Как набрать серию Polars в Python?Python

Программы на Python
Ответить
Anonymous
 Как набрать серию Polars в Python?

Сообщение Anonymous »

Я пытаюсь ввести свои функции в Python для объектов Polars.Series определенного типа dtype.
Например, в MWE функция может выглядеть так:

Код: Выделить всё

import typing as tp
import polars as pl

u = pl.Series(range(5))

def f(L: tp.Sequence[int]) -> int:
return len(L) + sum(L)

print(f(u))
Он работает как положено, но Mypy жалуется на это:

Код: Выделить всё

error: Argument 1 to "f" has incompatible type "Series"; expected "Sequence[int]"  [arg-type]
Я ожидал, что pl.Series будет распознан как tp.Sequence, но это не так, хотя pl.Series > иметь необходимые методы __len__ и __getitem__.
Способ сделать это — расширить возможности набора текста:

Код: Выделить всё

import typing as tp
import polars as pl

u = pl.Series(range(5))

def f(L: tp.Sequence[int] | pl.Series) -> int:
return len(L) + sum(L)

print(f(u))  # should pass (u is a pl.Series, result is an int)
print(f(u+0.1))  # should fail (u is a pl.Series but result is not an int)
но Mypy не находит проблем в этом коде, где он должен пометить второй вызов f (это потому, что sum не проверяется по типу, и это вне рамок этого MWE, моя проблема все еще остается, поскольку я хотел убедиться, что мой pl.Series заполнен целыми числами, а вызов sum был простым прокси-сервером для этого, я просто хотел продемонстрировать это; ввод моего ввода как pl.Series не дает исправить проблему).
Последняя попытка, я попытался подписать тип pl.Series, поскольку у него есть атрибут dtype, который описывает данные внутри него ( в моем случае u.dtype — это Int64, внутренний тип Polars).

Код: Выделить всё

import typing as tp
import polars as pl

u = pl.Series(range(5))

def f(L: tp.Sequence[int] | pl.Series[int]) -> int:
return len(L) + sum(L)
но серии не могут быть подписаны таким образом:

Код: Выделить всё

error: "Series" expects no type arguments, but 1 given  [type-arg]
Мне не удалось найти никаких дополнительных указаний на правильный способ ограничения внутреннего типа моей серии Polars, поэтому любые подсказки приветствуются, спасибо!

Подробнее здесь: https://stackoverflow.com/questions/793 ... -in-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»