DriverTrac/venv/lib/python3.12/site-packages/polars/lazyframe/in_process.py

43 lines
1.1 KiB
Python

from __future__ import annotations
from typing import TYPE_CHECKING
from polars._utils.wrap import wrap_df
if TYPE_CHECKING:
from polars import DataFrame
from polars._plr import PyInProcessQuery
class InProcessQuery:
"""
A placeholder for an in process query.
This can be used to do something else while a query is running.
The queries can be cancelled. You can peek if the query is finished,
or you can await the result.
"""
def __init__(self, ipq: PyInProcessQuery) -> None:
self._inner = ipq
def cancel(self) -> None:
"""Cancel the query at earliest convenience."""
self._inner.cancel()
def fetch(self) -> DataFrame | None:
"""
Fetch the result.
If it is ready, a materialized DataFrame is returned.
If it is not ready it will return `None`.
"""
if (out := self._inner.fetch()) is not None:
return wrap_df(out)
else:
return None
def fetch_blocking(self) -> DataFrame:
"""Await the result synchronously."""
return wrap_df(self._inner.fetch_blocking())