Source code for fastpyxl.chart.bubble_chart

# Autogenerated schema
from __future__ import annotations

from fastpyxl.typed_serialisable.errors import FieldValidationError
from fastpyxl.typed_serialisable.fields import AliasField, Field

from fastpyxl.descriptors.excel import ExtensionList

from ._chart import ChartBase
from .axis import NumericAxis
from .series import XYSeries
from .label import DataLabelList


def _bubble_scale(v):
    if v is None:
        return None
    try:
        n = int(v)
    except (TypeError, ValueError) as exc:
        raise FieldValidationError(f"bubbleScale rejected value {v!r}") from exc
    if n < 0 or n > 300:
        raise FieldValidationError(f"bubbleScale rejected value {v!r}")
    return n


def _size_represents(v):
    if v is None or v == "none":
        return None
    if v not in ("area", "w"):
        raise FieldValidationError(f"sizeRepresents rejected value {v!r}")
    return v


[docs] class BubbleChart(ChartBase): tagname = "bubbleChart" varyColors: bool | None = Field.nested_bool(allow_none=True, default=None) ser: list[XYSeries] | None = Field.sequence(expected_type=XYSeries, allow_none=True, default=list) dLbls: DataLabelList | None = Field.element( expected_type=DataLabelList, allow_none=True, default=None ) dataLabels = AliasField("dLbls", default=None) bubble3D: bool | None = Field.nested_bool(allow_none=True, default=None) bubbleScale: int | None = Field.nested_value( expected_type=int, allow_none=True, converter=_bubble_scale, default=None, ) showNegBubbles: bool | None = Field.nested_bool(allow_none=True, default=None) sizeRepresents: str | None = Field.nested_value( expected_type=str, allow_none=True, converter=_size_represents, default=None, ) extLst: ExtensionList | None = Field.element( expected_type=ExtensionList, allow_none=True, serialize=False, default=None ) _series_type = "bubble" xml_order = ( "varyColors", "ser", "dLbls", "bubble3D", "bubbleScale", "showNegBubbles", "sizeRepresents", "axId", ) def __init__( self, varyColors=None, ser=(), dLbls=None, bubble3D=None, bubbleScale=None, showNegBubbles=None, sizeRepresents=None, extLst=None, **kw, ): self.varyColors = varyColors self.ser = list(ser) if ser is not None else [] self.dLbls = dLbls self.bubble3D = bubble3D self.bubbleScale = bubbleScale self.showNegBubbles = showNegBubbles self.sizeRepresents = sizeRepresents self.extLst = extLst self.x_axis = NumericAxis(axId=10, crossAx=20) self.y_axis = NumericAxis(axId=20, crossAx=10) super().__init__(**kw)