Coverage for src/ipyvizzustory/env/pn/story.py: 100%
11 statements
« prev ^ index » next coverage.py v7.2.7, created at 2023-06-10 09:08 +0000
« prev ^ index » next coverage.py v7.2.7, created at 2023-06-10 09:08 +0000
1"""A module for working with presentation stories in `Panel` environment."""
3from typing import Optional
5from panel.pane import HTML
7from ipyvizzu import Data, Style
9from ipyvizzustory.storylib.story import StorySize, Story as StoryLib
12class Story(StoryLib):
13 """A class for representing a presentation story in `Panel` environment."""
15 def __init__(self, data: Data, style: Optional[Style] = None):
16 """
17 Presentation Story constructor.
19 Args:
20 data: Data set for the whole presentation story.
21 After initialization `data` can not be modified,
22 but it can be filtered.
23 style: Style settings for the presentation story.
24 `style` can be changed at each presentation step.
25 """
27 super().__init__(data=data, style=style)
29 def play(self) -> None:
30 """
31 A method for displaying the assembled `HTML` code in `Panel` environment.
33 Raises:
34 ValueError: If `width` or `height` is not in pixel.
35 """
37 if any(
38 [
39 not StorySize.is_pixel(self._size.width),
40 not StorySize.is_pixel(self._size.height),
41 ]
42 ):
43 raise ValueError("width and height should be in pixels")
45 HTML(
46 self.to_html(),
47 width=int(self._size.width[:-2]), # type: ignore
48 height=int(self._size.height[:-2]), # type: ignore
49 ).servable()