Coverage for src/jointview/__init__.py: 100%
5 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-10-01 04:48 +0000
« prev ^ index » next coverage.py v7.15.4, created at 2026-10-01 04:48 +0000
1"""Compare two price or NAV series of a Polars DataFrame side by side."""
3from jointview.columns import (
4 PERIOD,
5 WINDOW_ALL,
6 WINDOWS,
7 aligned,
8 date_column,
9 default_pair,
10 series_columns,
11 windowed,
12)
13from jointview.data import demo_frame, load_frame
14from jointview.plot import drawn_points, line_chart, line_frame
15from jointview.stats import drawdown, metrics, returns, summary, summary_markdown
17__all__ = [
18 # The name `aligned` writes the x-axis under and the statistics read it back out
19 # of. Exported because `aligned` is: a caller who has the frame but not the name
20 # has to spell "period" by hand, which is the literal `columns` exists to hold.
21 "PERIOD",
22 # The windows the app offers over the plot, and the key that means "no cut". A caller
23 # cutting a frame the way the app does needs the same names the picker shows, and the
24 # one that stands for the whole sample is worth not spelling twice.
25 "WINDOWS",
26 "WINDOW_ALL",
27 "aligned",
28 "date_column",
29 "default_pair",
30 "demo_frame",
31 "drawdown",
32 # What the chart actually draws, which past MAX_POINTS is not what it was given.
33 # Exported for the same reason PERIOD is: the caption beside the plot has to say
34 # which of the two numbers it is quoting, and so does anyone else drawing this frame.
35 "drawn_points",
36 "line_chart",
37 "line_frame",
38 "load_frame",
39 "metrics",
40 "returns",
41 "series_columns",
42 "summary",
43 "summary_markdown",
44 "windowed",
45]