Skip to content

Support for Datetime, Decimal #14

@wennerryle

Description

@wennerryle

Hello! Your library looks good!

But I had some troubles with my code, and think it's because of library:

from typing import TypedDict
import polars as pl
from webtime_analytics.utils import assert_is_root

from polaroids import DataFrame, Field
from polaroids.types import int8, float32


class SiteStatistics(TypedDict):
    created: pl.Datetime
    id: str
    secondsSpended: pl.Decimal
    title: str
    url: str


def main():
    assert_is_root()
    root_df = pl.read_parquet("./parquets/site_statistics.parquet").with_columns(
        pl.col("created").str.to_datetime(time_zone="Europe/Kirov"),
        pl.col("secondsSpended").cast(pl.String).cast(pl.Decimal(10, 2)),
    )

    root_df = root_df.pipe(DataFrame[SiteStatistics]).validate()

    # root_df = root_df.with_columns(pl.col(""))

    print(root_df)
wennerryle@fedora:~/Рабочий стол/webtime-analytics$ poetry run dev
Traceback (most recent call last):
  File "<string>", line 1, in <module>
    import sys; from importlib import import_module; sys.argv = ['/home/wennerryle/Рабочий стол/webtime-analytics/.venv/bin/dev']; sys.exit(import_module('webtime_analytics.main').main())
                                                                                                                                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/home/wennerryle/Рабочий стол/webtime-analytics/src/webtime_analytics/main.py", line 24, in main
    root_df = root_df.pipe(DataFrame[SiteStatistics]).validate()
  File "/home/wennerryle/Рабочий стол/webtime-analytics/.venv/lib/python3.13/site-packages/polaroids/dataframe.py", line 150, in validate
    _utils.assert_schema_equal(self._schema, self.schema)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/wennerryle/Рабочий стол/webtime-analytics/.venv/lib/python3.13/site-packages/polaroids/_utils.py", line 45, in assert_schema_equal
    raise ValidationError(message)
polaroids.exceptions.ValidationError: columns have different types:
  created: Object != Datetime(time_unit='us', time_zone='Europe/Kirov')
  secondsSpended: Object != Decimal(precision=10, scale=2)

wennerryle@fedora:~/Рабочий стол/webtime-analytics$ 

How can I solve this?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions