frequenz-cs-reporting 0.2.9__tar.gz → 0.2.10__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/PKG-INFO +13 -13
  2. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/RELEASE_NOTES.md +2 -0
  3. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/pyproject.toml +13 -13
  4. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/components/plot_charts.py +5 -1
  5. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/views/metric_renderers.py +9 -2
  6. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/views/plot_renderers.py +21 -3
  7. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/views/table_renderers.py +4 -2
  8. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz_cs_reporting.egg-info/PKG-INFO +13 -13
  9. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz_cs_reporting.egg-info/requires.txt +12 -12
  10. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/toml_directory/__init__.py +1 -0
  11. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/.streamlit/config.toml +0 -0
  12. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/Dockerfile +0 -0
  13. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/LICENSE +0 -0
  14. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/MANIFEST.in +0 -0
  15. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/README.md +0 -0
  16. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/app.py +0 -0
  17. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/setup.cfg +0 -0
  18. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/__init__.py +0 -0
  19. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/app_pages/__init__.py +0 -0
  20. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/app_pages/home.py +0 -0
  21. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/app_pages/reporting.py +0 -0
  22. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/app_pages/solar.py +0 -0
  23. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/assets/__init__.py +0 -0
  24. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/assets/neustrom_background.png +0 -0
  25. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/assets/neustrom_logo.png +0 -0
  26. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/components/__init__.py +0 -0
  27. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/components/inputs.py +0 -0
  28. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/components/sidebar_inputs.py +0 -0
  29. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/components/tables.py +0 -0
  30. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/components/ui.py +0 -0
  31. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/conftest.py +0 -0
  32. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/constants.py +0 -0
  33. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/py.typed +0 -0
  34. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/rep_cs_core/__init__.py +0 -0
  35. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/rep_cs_core/config.py +0 -0
  36. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/rep_cs_core/page_spec.py +0 -0
  37. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/services/__init__.py +0 -0
  38. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/services/client_factory.py +0 -0
  39. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/services/data_service.py +0 -0
  40. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/services/solar_workflow.py +0 -0
  41. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/styles/dashboard.css +0 -0
  42. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/styles/home.css +0 -0
  43. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/styles/kpi.css +0 -0
  44. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/styles/plot_card.css +0 -0
  45. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/templates/dashboard_section_divider.html +0 -0
  46. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/templates/home_feature_grid.html +0 -0
  47. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/templates/home_feature_item.html +0 -0
  48. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/templates/home_footer.html +0 -0
  49. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/templates/home_hero.html +0 -0
  50. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/templates/home_logo.html +0 -0
  51. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/templates/home_stat_item.html +0 -0
  52. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/templates/home_stats.html +0 -0
  53. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/ui_resources.py +0 -0
  54. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/utils/__init__.py +0 -0
  55. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/utils/env.py +0 -0
  56. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/utils/time.py +0 -0
  57. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/views/__init__.py +0 -0
  58. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/views/dashboard.py +0 -0
  59. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/views/sections.py +0 -0
  60. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz/cs_reporting/views/solar_results.py +0 -0
  61. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz_cs_reporting.egg-info/SOURCES.txt +0 -0
  62. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz_cs_reporting.egg-info/dependency_links.txt +0 -0
  63. {frequenz_cs_reporting-0.2.9 → frequenz_cs_reporting-0.2.10}/src/frequenz_cs_reporting.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: frequenz-cs-reporting
3
- Version: 0.2.9
3
+ Version: 0.2.10
4
4
  Summary: Streamlit Library for reporting and solar monitoring
5
5
  Author-email: Frequenz Energy-as-a-Service GmbH <floss@frequenz.com>
6
6
  License-Expression: MIT
@@ -38,39 +38,39 @@ Requires-Dist: flake8==7.3.0; extra == "dev-flake8"
38
38
  Requires-Dist: flake8-datetimez==20.10.0; extra == "dev-flake8"
39
39
  Requires-Dist: flake8-docstrings==1.7.0; extra == "dev-flake8"
40
40
  Requires-Dist: flake8-pyproject==1.2.4; extra == "dev-flake8"
41
- Requires-Dist: pydoclint==0.8.3; extra == "dev-flake8"
41
+ Requires-Dist: pydoclint==0.8.6; extra == "dev-flake8"
42
42
  Requires-Dist: pydocstyle==6.3.0; extra == "dev-flake8"
43
43
  Provides-Extra: dev-formatting
44
- Requires-Dist: black==26.3.1; extra == "dev-formatting"
44
+ Requires-Dist: black==26.5.1; extra == "dev-formatting"
45
45
  Requires-Dist: isort==8.0.1; extra == "dev-formatting"
46
46
  Provides-Extra: dev-mkdocs
47
47
  Requires-Dist: Markdown==3.10.2; extra == "dev-mkdocs"
48
- Requires-Dist: black==26.3.1; extra == "dev-mkdocs"
48
+ Requires-Dist: black==26.5.1; extra == "dev-mkdocs"
49
49
  Requires-Dist: mike==2.2.0; extra == "dev-mkdocs"
50
50
  Requires-Dist: mkdocs-gen-files==0.6.1; extra == "dev-mkdocs"
51
51
  Requires-Dist: mkdocs-literate-nav==0.6.3; extra == "dev-mkdocs"
52
52
  Requires-Dist: mkdocs-macros-plugin==1.5.0; extra == "dev-mkdocs"
53
53
  Requires-Dist: mkdocs-material==9.7.6; extra == "dev-mkdocs"
54
54
  Requires-Dist: mkdocstrings[python]==1.0.4; extra == "dev-mkdocs"
55
- Requires-Dist: mkdocstrings-python==2.0.3; extra == "dev-mkdocs"
56
- Requires-Dist: frequenz-repo-config[lib]==0.17.0; extra == "dev-mkdocs"
55
+ Requires-Dist: mkdocstrings-python==2.0.4; extra == "dev-mkdocs"
56
+ Requires-Dist: frequenz-repo-config[lib]==0.18.0; extra == "dev-mkdocs"
57
57
  Provides-Extra: dev-mypy
58
- Requires-Dist: mypy==1.20.1; extra == "dev-mypy"
59
- Requires-Dist: types-Markdown==3.10.2.20260408; extra == "dev-mypy"
58
+ Requires-Dist: mypy==2.1.0; extra == "dev-mypy"
59
+ Requires-Dist: types-Markdown==3.10.2.20260518; extra == "dev-mypy"
60
60
  Requires-Dist: types-pytz; extra == "dev-mypy"
61
61
  Requires-Dist: pandas-stubs; extra == "dev-mypy"
62
62
  Requires-Dist: frequenz-cs-reporting[dev-mkdocs,dev-noxfile,dev-pytest]; extra == "dev-mypy"
63
63
  Provides-Extra: dev-noxfile
64
64
  Requires-Dist: nox==2026.4.10; extra == "dev-noxfile"
65
- Requires-Dist: frequenz-repo-config[lib]==0.17.0; extra == "dev-noxfile"
65
+ Requires-Dist: frequenz-repo-config[lib]==0.18.0; extra == "dev-noxfile"
66
66
  Provides-Extra: dev-pylint
67
67
  Requires-Dist: frequenz-cs-reporting[dev-mkdocs,dev-noxfile,dev-pytest]; extra == "dev-pylint"
68
68
  Provides-Extra: dev-pytest
69
- Requires-Dist: pytest==9.0.3; extra == "dev-pytest"
70
- Requires-Dist: pylint==4.0.5; extra == "dev-pytest"
71
- Requires-Dist: frequenz-repo-config[extra-lint-examples]==0.17.0; extra == "dev-pytest"
69
+ Requires-Dist: pytest==9.1.0; extra == "dev-pytest"
70
+ Requires-Dist: pylint==4.0.6; extra == "dev-pytest"
71
+ Requires-Dist: frequenz-repo-config[extra-lint-examples]==0.18.0; extra == "dev-pytest"
72
72
  Requires-Dist: pytest-mock==3.15.1; extra == "dev-pytest"
73
- Requires-Dist: pytest-asyncio==1.3.0; extra == "dev-pytest"
73
+ Requires-Dist: pytest-asyncio==1.4.0; extra == "dev-pytest"
74
74
  Requires-Dist: async-solipsism==0.9; extra == "dev-pytest"
75
75
  Provides-Extra: dev
76
76
  Requires-Dist: frequenz-cs-reporting[dev-flake8,dev-formatting,dev-mkdocs,dev-mypy,dev-noxfile,dev-pylint,dev-pytest]; extra == "dev"
@@ -8,5 +8,7 @@
8
8
  ## New Features
9
9
 
10
10
  - Update the radio button navigation for streamlit in deepnote.
11
+ - Add KWK aliases in the line plot.
12
+ - Update the KPIs to german format.
11
13
 
12
14
  ## Bug Fixes
@@ -5,7 +5,7 @@
5
5
  requires = [
6
6
  "setuptools == 82.0.1",
7
7
  "setuptools_scm[toml] == 10.0.5",
8
- "frequenz-repo-config[lib] == 0.17.0",
8
+ "frequenz-repo-config[lib] == 0.18.0",
9
9
  ]
10
10
  build-backend = "setuptools.build_meta"
11
11
 
@@ -54,25 +54,25 @@ dev-flake8 = [
54
54
  "flake8-datetimez == 20.10.0",
55
55
  "flake8-docstrings == 1.7.0",
56
56
  "flake8-pyproject == 1.2.4", # For reading the flake8 config from pyproject.toml
57
- "pydoclint == 0.8.3",
57
+ "pydoclint == 0.8.6",
58
58
  "pydocstyle == 6.3.0",
59
59
  ]
60
- dev-formatting = ["black == 26.3.1", "isort == 8.0.1"]
60
+ dev-formatting = ["black == 26.5.1", "isort == 8.0.1"]
61
61
  dev-mkdocs = [
62
62
  "Markdown == 3.10.2",
63
- "black == 26.3.1",
63
+ "black == 26.5.1",
64
64
  "mike == 2.2.0",
65
65
  "mkdocs-gen-files == 0.6.1",
66
66
  "mkdocs-literate-nav == 0.6.3",
67
67
  "mkdocs-macros-plugin == 1.5.0",
68
68
  "mkdocs-material == 9.7.6",
69
69
  "mkdocstrings[python] == 1.0.4",
70
- "mkdocstrings-python == 2.0.3",
71
- "frequenz-repo-config[lib] == 0.17.0",
70
+ "mkdocstrings-python == 2.0.4",
71
+ "frequenz-repo-config[lib] == 0.18.0",
72
72
  ]
73
73
  dev-mypy = [
74
- "mypy == 1.20.1",
75
- "types-Markdown == 3.10.2.20260408",
74
+ "mypy == 2.1.0",
75
+ "types-Markdown == 3.10.2.20260518",
76
76
  "types-pytz",
77
77
  "pandas-stubs",
78
78
  # For checking the noxfile, docs/ script, and tests
@@ -80,7 +80,7 @@ dev-mypy = [
80
80
  ]
81
81
  dev-noxfile = [
82
82
  "nox == 2026.4.10",
83
- "frequenz-repo-config[lib] == 0.17.0",
83
+ "frequenz-repo-config[lib] == 0.18.0",
84
84
  ]
85
85
  dev-pylint = [
86
86
  # dev-pytest already defines a dependency to pylint because of the examples
@@ -88,11 +88,11 @@ dev-pylint = [
88
88
  "frequenz-cs-reporting[dev-mkdocs,dev-noxfile,dev-pytest]",
89
89
  ]
90
90
  dev-pytest = [
91
- "pytest == 9.0.3",
92
- "pylint == 4.0.5", # We need this to check for the examples
93
- "frequenz-repo-config[extra-lint-examples] == 0.17.0",
91
+ "pytest == 9.1.0",
92
+ "pylint == 4.0.6", # We need this to check for the examples
93
+ "frequenz-repo-config[extra-lint-examples] == 0.18.0",
94
94
  "pytest-mock == 3.15.1",
95
- "pytest-asyncio == 1.3.0",
95
+ "pytest-asyncio == 1.4.0",
96
96
  "async-solipsism == 0.9",
97
97
  ]
98
98
  dev = [
@@ -198,9 +198,13 @@ def plot_percentage_bar(
198
198
  "font_color": "#f8fafc",
199
199
  "bordercolor": "#334155",
200
200
  },
201
+ separators=",.",
201
202
  annotations=[
202
203
  {
203
- "text": f"<b>{total_key}:</b> {total:,.0f} kWh",
204
+ "text": f"<b>{total_key}:</b> {total:,.0f}".replace(",", "X")
205
+ .replace(".", ",")
206
+ .replace("X", ".")
207
+ + " kWh",
204
208
  "x": 0.5,
205
209
  "xref": "paper",
206
210
  "y": 1.35,
@@ -12,6 +12,13 @@ import streamlit as st
12
12
  from frequenz.cs_reporting.components.plot_charts import plot_percentage_bar
13
13
  from frequenz.cs_reporting.ui_resources import inject_style
14
14
 
15
+
16
+ def _fmt_de(val: float, decimals: int) -> str:
17
+ """Format a number in German locale (period thousands, comma decimal)."""
18
+ formatted = f"{val:,.{decimals}f}"
19
+ return formatted.replace(",", "X").replace(".", ",").replace("X", ".")
20
+
21
+
15
22
  # ── Section accent colours ─────────────────────────────────────────────────────
16
23
  # Each reporting section gets a distinct left-border colour so the dashboard
17
24
  # reads as a structured, visually hierarchical document.
@@ -154,9 +161,9 @@ def render_box_grid(
154
161
  '<div class="kpi-card__value kpi-card__value--null">—</div>'
155
162
  )
156
163
  elif isinstance(val, float) and val == int(val):
157
- value_html = f'<div class="kpi-card__value">{val:,.0f}</div>'
164
+ value_html = f'<div class="kpi-card__value">{_fmt_de(val, 0)}</div>'
158
165
  elif isinstance(val, (int, float)):
159
- value_html = f'<div class="kpi-card__value">{val:,.2f}</div>'
166
+ value_html = f'<div class="kpi-card__value">{_fmt_de(val, 2)}</div>'
160
167
  else:
161
168
  value_html = f'<div class="kpi-card__value">{val}</div>'
162
169
 
@@ -28,7 +28,7 @@ _DEFAULT_PLOT_ORDER = [
28
28
  "Zeitpunkt",
29
29
  "MID Gesamtverbrauch",
30
30
  "Netzbezug",
31
- "Netz Einspeisung",
31
+ "Netzeinspeisung",
32
32
  "PV-Erzeugung",
33
33
  "KWK-Erzeugung",
34
34
  "Wind-Erzeugung",
@@ -36,7 +36,18 @@ _DEFAULT_PLOT_ORDER = [
36
36
  ]
37
37
 
38
38
  _DEFAULT_DOTTED_COLS = ["Netzbezug"]
39
- _FILL_EXCLUDE = {"Zeitpunkt", "MID Gesamtverbrauch", "Netzbezug", "Netz Einspeisung"}
39
+ _FILL_EXCLUDE = {
40
+ "Zeitpunkt",
41
+ "MID Gesamtverbrauch",
42
+ "Netzbezug",
43
+ "Netzeinspeisung",
44
+ "Netz Einspeisung",
45
+ }
46
+ _OVERVIEW_ALIASES = {
47
+ "BHKW-Erzeugung": "KWK-Erzeugung",
48
+ "CHP": "KWK-Erzeugung",
49
+ "Netz Einspeisung": "Netzeinspeisung",
50
+ }
40
51
  _COMPONENT_TABS = [
41
52
  ("PV Leistung", "pv"),
42
53
  ("Batterie", "batt"),
@@ -214,7 +225,14 @@ def _prepare_overview_df(
214
225
 
215
226
  overview_df = mapper.to_display(overview_df)
216
227
  # Compatibility shim until the latest lib notebooks update rolls out
217
- return overview_df.rename(columns=COLUMN_RENAME_MAP)
228
+ overview_df = overview_df.rename(columns=COLUMN_RENAME_MAP)
229
+
230
+ # Normalize known legacy aliases so plot ordering always includes key series.
231
+ for source, target in _OVERVIEW_ALIASES.items():
232
+ if source in overview_df.columns and target not in overview_df.columns:
233
+ overview_df = overview_df.rename(columns={source: target})
234
+
235
+ return overview_df
218
236
 
219
237
 
220
238
  def _render_overview_plot(
@@ -131,7 +131,7 @@ def render_table_section(
131
131
  header_cols[0].markdown("", unsafe_allow_html=True)
132
132
 
133
133
  if not safe_df.empty:
134
- csv_bytes = display_df.to_csv(index=False).encode("utf-8")
134
+ csv_bytes = display_df.to_csv(index=False, sep=";", decimal=",").encode("utf-8")
135
135
  _style_download_button(header_cols[1])
136
136
  header_cols[1].download_button(
137
137
  label="CSV herunterladen",
@@ -160,7 +160,9 @@ def render_master_df(master_df: pd.DataFrame) -> None:
160
160
  header_cols = st.columns([10, 1])
161
161
  header_cols[0].caption("Standardized master dataframe")
162
162
  display_df = _round_numeric_columns(master_df)
163
- master_csv = display_df.to_csv(index=False).encode("utf-8")
163
+ master_csv = display_df.to_csv(index=False, sep=";", decimal=",").encode(
164
+ "utf-8"
165
+ )
164
166
  _style_download_button(header_cols[1])
165
167
  header_cols[1].download_button(
166
168
  label="Download Gesamt-Datensatz",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: frequenz-cs-reporting
3
- Version: 0.2.9
3
+ Version: 0.2.10
4
4
  Summary: Streamlit Library for reporting and solar monitoring
5
5
  Author-email: Frequenz Energy-as-a-Service GmbH <floss@frequenz.com>
6
6
  License-Expression: MIT
@@ -38,39 +38,39 @@ Requires-Dist: flake8==7.3.0; extra == "dev-flake8"
38
38
  Requires-Dist: flake8-datetimez==20.10.0; extra == "dev-flake8"
39
39
  Requires-Dist: flake8-docstrings==1.7.0; extra == "dev-flake8"
40
40
  Requires-Dist: flake8-pyproject==1.2.4; extra == "dev-flake8"
41
- Requires-Dist: pydoclint==0.8.3; extra == "dev-flake8"
41
+ Requires-Dist: pydoclint==0.8.6; extra == "dev-flake8"
42
42
  Requires-Dist: pydocstyle==6.3.0; extra == "dev-flake8"
43
43
  Provides-Extra: dev-formatting
44
- Requires-Dist: black==26.3.1; extra == "dev-formatting"
44
+ Requires-Dist: black==26.5.1; extra == "dev-formatting"
45
45
  Requires-Dist: isort==8.0.1; extra == "dev-formatting"
46
46
  Provides-Extra: dev-mkdocs
47
47
  Requires-Dist: Markdown==3.10.2; extra == "dev-mkdocs"
48
- Requires-Dist: black==26.3.1; extra == "dev-mkdocs"
48
+ Requires-Dist: black==26.5.1; extra == "dev-mkdocs"
49
49
  Requires-Dist: mike==2.2.0; extra == "dev-mkdocs"
50
50
  Requires-Dist: mkdocs-gen-files==0.6.1; extra == "dev-mkdocs"
51
51
  Requires-Dist: mkdocs-literate-nav==0.6.3; extra == "dev-mkdocs"
52
52
  Requires-Dist: mkdocs-macros-plugin==1.5.0; extra == "dev-mkdocs"
53
53
  Requires-Dist: mkdocs-material==9.7.6; extra == "dev-mkdocs"
54
54
  Requires-Dist: mkdocstrings[python]==1.0.4; extra == "dev-mkdocs"
55
- Requires-Dist: mkdocstrings-python==2.0.3; extra == "dev-mkdocs"
56
- Requires-Dist: frequenz-repo-config[lib]==0.17.0; extra == "dev-mkdocs"
55
+ Requires-Dist: mkdocstrings-python==2.0.4; extra == "dev-mkdocs"
56
+ Requires-Dist: frequenz-repo-config[lib]==0.18.0; extra == "dev-mkdocs"
57
57
  Provides-Extra: dev-mypy
58
- Requires-Dist: mypy==1.20.1; extra == "dev-mypy"
59
- Requires-Dist: types-Markdown==3.10.2.20260408; extra == "dev-mypy"
58
+ Requires-Dist: mypy==2.1.0; extra == "dev-mypy"
59
+ Requires-Dist: types-Markdown==3.10.2.20260518; extra == "dev-mypy"
60
60
  Requires-Dist: types-pytz; extra == "dev-mypy"
61
61
  Requires-Dist: pandas-stubs; extra == "dev-mypy"
62
62
  Requires-Dist: frequenz-cs-reporting[dev-mkdocs,dev-noxfile,dev-pytest]; extra == "dev-mypy"
63
63
  Provides-Extra: dev-noxfile
64
64
  Requires-Dist: nox==2026.4.10; extra == "dev-noxfile"
65
- Requires-Dist: frequenz-repo-config[lib]==0.17.0; extra == "dev-noxfile"
65
+ Requires-Dist: frequenz-repo-config[lib]==0.18.0; extra == "dev-noxfile"
66
66
  Provides-Extra: dev-pylint
67
67
  Requires-Dist: frequenz-cs-reporting[dev-mkdocs,dev-noxfile,dev-pytest]; extra == "dev-pylint"
68
68
  Provides-Extra: dev-pytest
69
- Requires-Dist: pytest==9.0.3; extra == "dev-pytest"
70
- Requires-Dist: pylint==4.0.5; extra == "dev-pytest"
71
- Requires-Dist: frequenz-repo-config[extra-lint-examples]==0.17.0; extra == "dev-pytest"
69
+ Requires-Dist: pytest==9.1.0; extra == "dev-pytest"
70
+ Requires-Dist: pylint==4.0.6; extra == "dev-pytest"
71
+ Requires-Dist: frequenz-repo-config[extra-lint-examples]==0.18.0; extra == "dev-pytest"
72
72
  Requires-Dist: pytest-mock==3.15.1; extra == "dev-pytest"
73
- Requires-Dist: pytest-asyncio==1.3.0; extra == "dev-pytest"
73
+ Requires-Dist: pytest-asyncio==1.4.0; extra == "dev-pytest"
74
74
  Requires-Dist: async-solipsism==0.9; extra == "dev-pytest"
75
75
  Provides-Extra: dev
76
76
  Requires-Dist: frequenz-cs-reporting[dev-flake8,dev-formatting,dev-mkdocs,dev-mypy,dev-noxfile,dev-pylint,dev-pytest]; extra == "dev"
@@ -21,43 +21,43 @@ flake8==7.3.0
21
21
  flake8-datetimez==20.10.0
22
22
  flake8-docstrings==1.7.0
23
23
  flake8-pyproject==1.2.4
24
- pydoclint==0.8.3
24
+ pydoclint==0.8.6
25
25
  pydocstyle==6.3.0
26
26
 
27
27
  [dev-formatting]
28
- black==26.3.1
28
+ black==26.5.1
29
29
  isort==8.0.1
30
30
 
31
31
  [dev-mkdocs]
32
32
  Markdown==3.10.2
33
- black==26.3.1
33
+ black==26.5.1
34
34
  mike==2.2.0
35
35
  mkdocs-gen-files==0.6.1
36
36
  mkdocs-literate-nav==0.6.3
37
37
  mkdocs-macros-plugin==1.5.0
38
38
  mkdocs-material==9.7.6
39
39
  mkdocstrings[python]==1.0.4
40
- mkdocstrings-python==2.0.3
41
- frequenz-repo-config[lib]==0.17.0
40
+ mkdocstrings-python==2.0.4
41
+ frequenz-repo-config[lib]==0.18.0
42
42
 
43
43
  [dev-mypy]
44
- mypy==1.20.1
45
- types-Markdown==3.10.2.20260408
44
+ mypy==2.1.0
45
+ types-Markdown==3.10.2.20260518
46
46
  types-pytz
47
47
  pandas-stubs
48
48
  frequenz-cs-reporting[dev-mkdocs,dev-noxfile,dev-pytest]
49
49
 
50
50
  [dev-noxfile]
51
51
  nox==2026.4.10
52
- frequenz-repo-config[lib]==0.17.0
52
+ frequenz-repo-config[lib]==0.18.0
53
53
 
54
54
  [dev-pylint]
55
55
  frequenz-cs-reporting[dev-mkdocs,dev-noxfile,dev-pytest]
56
56
 
57
57
  [dev-pytest]
58
- pytest==9.0.3
59
- pylint==4.0.5
60
- frequenz-repo-config[extra-lint-examples]==0.17.0
58
+ pytest==9.1.0
59
+ pylint==4.0.6
60
+ frequenz-repo-config[extra-lint-examples]==0.18.0
61
61
  pytest-mock==3.15.1
62
- pytest-asyncio==1.3.0
62
+ pytest-asyncio==1.4.0
63
63
  async-solipsism==0.9
@@ -2,4 +2,5 @@
2
2
  # Copyright © 2026 Frequenz Energy-as-a-Service GmbH
3
3
 
4
4
  """Directory for TOML configuration files."""
5
+
5
6
  from __future__ import annotations