Skip to content

Kaleido version 1.3.0 can't handle Decimals #453

@BlastoiseBlue

Description

@BlastoiseBlue

In version 1.3.0, kaleido switched to using orjson in the _KaleidoTab._calc_fig() method in src/py/kaleido/_kaleido_tab/_tab.py, but orjson doesn't support decimal.Decimal objects, resulting in an error.

import asyncio
from decimal import Decimal
import plotly.express as px
from kaleido import Kaleido

async def calc_kaleido_fig(fig):
    async with Kaleido(n=1) as kaleido_context:
        chart = await kaleido_context.calc_fig(fig)
    return chart

int_fig = px.bar(x=[1, 2, 3], y=[10, 20, 30])
decimal_fig = px.bar(x=[1, 2, 3], y=[Decimal(10), Decimal(20), Decimal(30)])

asyncio.run(calc_kaleido_fig(int_fig))
# Binary output

asyncio.run(calc_kaleido_fig(decimal_fig))
# TypeError
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
File .venv/lib/python3.14/site-packages/kaleido/_kaleido_tab/_tab.py:32, in _orjson_default(obj)
     31     return obj.tolist()
---> 32 raise TypeError(f"Type is not JSON serializable: {type(obj).__name__}")

TypeError: Type is not JSON serializable: Decimal

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions