frequenz-cs-reporting 0.4.1__tar.gz → 0.4.2__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 (67) hide show
  1. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/Dockerfile +5 -1
  2. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/PKG-INFO +7 -7
  3. frequenz_cs_reporting-0.4.2/RELEASE_NOTES.md +13 -0
  4. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/pyproject.toml +8 -8
  5. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz_cs_reporting.egg-info/PKG-INFO +7 -7
  6. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz_cs_reporting.egg-info/requires.txt +6 -6
  7. frequenz_cs_reporting-0.4.2/src/frequenz_cs_reporting.egg-info/scm_version.json +8 -0
  8. frequenz_cs_reporting-0.4.1/RELEASE_NOTES.md +0 -28
  9. frequenz_cs_reporting-0.4.1/src/frequenz_cs_reporting.egg-info/scm_version.json +0 -8
  10. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/.streamlit/config.toml +0 -0
  11. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/LICENSE +0 -0
  12. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/MANIFEST.in +0 -0
  13. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/README.md +0 -0
  14. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/app.py +0 -0
  15. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/setup.cfg +0 -0
  16. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/__init__.py +0 -0
  17. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/app_pages/__init__.py +0 -0
  18. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/app_pages/home.py +0 -0
  19. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/app_pages/reporting.py +0 -0
  20. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/app_pages/solar.py +0 -0
  21. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/assets/__init__.py +0 -0
  22. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/assets/neustrom_background.png +0 -0
  23. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/assets/neustrom_logo.png +0 -0
  24. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/components/__init__.py +0 -0
  25. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/components/inputs.py +0 -0
  26. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/components/plot_charts.py +0 -0
  27. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/components/sidebar_inputs.py +0 -0
  28. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/components/tables.py +0 -0
  29. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/components/ui.py +0 -0
  30. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/conftest.py +0 -0
  31. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/constants.py +0 -0
  32. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/py.typed +0 -0
  33. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/rep_cs_core/__init__.py +0 -0
  34. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/rep_cs_core/config.py +0 -0
  35. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/rep_cs_core/page_spec.py +0 -0
  36. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/services/__init__.py +0 -0
  37. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/services/client_factory.py +0 -0
  38. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/services/data_service.py +0 -0
  39. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/services/solar_workflow.py +0 -0
  40. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/styles/dashboard.css +0 -0
  41. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/styles/home.css +0 -0
  42. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/styles/kpi.css +0 -0
  43. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/styles/plot_card.css +0 -0
  44. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/templates/dashboard_section_divider.html +0 -0
  45. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/templates/home_feature_grid.html +0 -0
  46. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/templates/home_feature_item.html +0 -0
  47. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/templates/home_footer.html +0 -0
  48. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/templates/home_hero.html +0 -0
  49. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/templates/home_logo.html +0 -0
  50. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/templates/home_stat_item.html +0 -0
  51. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/templates/home_stats.html +0 -0
  52. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/ui_resources.py +0 -0
  53. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/utils/__init__.py +0 -0
  54. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/utils/env.py +0 -0
  55. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/utils/time.py +0 -0
  56. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/views/__init__.py +0 -0
  57. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/views/dashboard.py +0 -0
  58. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/views/metric_renderers.py +0 -0
  59. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/views/plot_renderers.py +0 -0
  60. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/views/sections.py +0 -0
  61. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/views/solar_results.py +0 -0
  62. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz/cs_reporting/views/table_renderers.py +0 -0
  63. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz_cs_reporting.egg-info/SOURCES.txt +0 -0
  64. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz_cs_reporting.egg-info/dependency_links.txt +0 -0
  65. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz_cs_reporting.egg-info/scm_file_list.json +0 -0
  66. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/src/frequenz_cs_reporting.egg-info/top_level.txt +0 -0
  67. {frequenz_cs_reporting-0.4.1 → frequenz_cs_reporting-0.4.2}/toml_directory/__init__.py +0 -0
@@ -29,4 +29,8 @@ RUN pip install --no-cache-dir \
29
29
  "marshmallow-dataclass>=8.7.1,<9" \
30
30
  "plotly>=6.0.0,<6.4.0" \
31
31
  "kaleido>=0.2.1,<1.2.0" \
32
- "marshmallow>=4.1.0,<5"
32
+ "marshmallow>=4.1.0,<5" \
33
+ "grpcio>=1.81.1,<2"
34
+
35
+ # Prefer packages installed in Deepnote's venv over Deepnote's toolkit server libs.
36
+ ENV PYTHONPATH="/root/venv/lib/python3.12/site-packages:${PYTHONPATH}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: frequenz-cs-reporting
3
- Version: 0.4.1
3
+ Version: 0.4.2
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,7 +38,7 @@ 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.9.0; extra == "dev-flake8"
41
+ Requires-Dist: pydoclint==0.9.1; extra == "dev-flake8"
42
42
  Requires-Dist: pydocstyle==6.3.0; extra == "dev-flake8"
43
43
  Provides-Extra: dev-formatting
44
44
  Requires-Dist: black==26.5.1; extra == "dev-formatting"
@@ -50,18 +50,18 @@ 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
- Requires-Dist: mkdocs-material==9.7.6; extra == "dev-mkdocs"
54
- Requires-Dist: mkdocstrings[python]==1.0.4; extra == "dev-mkdocs"
53
+ Requires-Dist: mkdocs-material==9.7.7; extra == "dev-mkdocs"
54
+ Requires-Dist: mkdocstrings[python]==1.0.6; extra == "dev-mkdocs"
55
55
  Requires-Dist: mkdocstrings-python==2.0.5; extra == "dev-mkdocs"
56
56
  Requires-Dist: frequenz-repo-config[lib]==0.18.0; extra == "dev-mkdocs"
57
57
  Provides-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"
58
+ Requires-Dist: mypy==2.3.0; extra == "dev-mypy"
59
+ Requires-Dist: types-Markdown==3.10.2.20260712; 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
- Requires-Dist: nox==2026.4.10; extra == "dev-noxfile"
64
+ Requires-Dist: nox==2026.7.11; extra == "dev-noxfile"
65
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"
@@ -0,0 +1,13 @@
1
+ # Frequenz CS Reporting Library Release Notes
2
+
3
+ ## Summary
4
+
5
+
6
+ ## Upgrading
7
+
8
+ - Update dockerfile to have grpcio.
9
+
10
+ ## New Features
11
+
12
+
13
+ ## Bug Fixes
@@ -3,8 +3,8 @@
3
3
 
4
4
  [build-system]
5
5
  requires = [
6
- "setuptools == 82.0.1",
7
- "setuptools_scm[toml] == 10.2.0",
6
+ "setuptools == 83.0.0",
7
+ "setuptools_scm[toml] == 10.2.1",
8
8
  "frequenz-repo-config[lib] == 0.18.0",
9
9
  ]
10
10
  build-backend = "setuptools.build_meta"
@@ -54,7 +54,7 @@ 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.9.0",
57
+ "pydoclint == 0.9.1",
58
58
  "pydocstyle == 6.3.0",
59
59
  ]
60
60
  dev-formatting = ["black == 26.5.1", "isort == 8.0.1"]
@@ -65,21 +65,21 @@ dev-mkdocs = [
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
- "mkdocs-material == 9.7.6",
69
- "mkdocstrings[python] == 1.0.4",
68
+ "mkdocs-material == 9.7.7",
69
+ "mkdocstrings[python] == 1.0.6",
70
70
  "mkdocstrings-python == 2.0.5",
71
71
  "frequenz-repo-config[lib] == 0.18.0",
72
72
  ]
73
73
  dev-mypy = [
74
- "mypy == 2.1.0",
75
- "types-Markdown == 3.10.2.20260518",
74
+ "mypy == 2.3.0",
75
+ "types-Markdown == 3.10.2.20260712",
76
76
  "types-pytz",
77
77
  "pandas-stubs",
78
78
  # For checking the noxfile, docs/ script, and tests
79
79
  "frequenz-cs-reporting[dev-mkdocs,dev-noxfile,dev-pytest]",
80
80
  ]
81
81
  dev-noxfile = [
82
- "nox == 2026.4.10",
82
+ "nox == 2026.7.11",
83
83
  "frequenz-repo-config[lib] == 0.18.0",
84
84
  ]
85
85
  dev-pylint = [
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: frequenz-cs-reporting
3
- Version: 0.4.1
3
+ Version: 0.4.2
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,7 +38,7 @@ 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.9.0; extra == "dev-flake8"
41
+ Requires-Dist: pydoclint==0.9.1; extra == "dev-flake8"
42
42
  Requires-Dist: pydocstyle==6.3.0; extra == "dev-flake8"
43
43
  Provides-Extra: dev-formatting
44
44
  Requires-Dist: black==26.5.1; extra == "dev-formatting"
@@ -50,18 +50,18 @@ 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
- Requires-Dist: mkdocs-material==9.7.6; extra == "dev-mkdocs"
54
- Requires-Dist: mkdocstrings[python]==1.0.4; extra == "dev-mkdocs"
53
+ Requires-Dist: mkdocs-material==9.7.7; extra == "dev-mkdocs"
54
+ Requires-Dist: mkdocstrings[python]==1.0.6; extra == "dev-mkdocs"
55
55
  Requires-Dist: mkdocstrings-python==2.0.5; extra == "dev-mkdocs"
56
56
  Requires-Dist: frequenz-repo-config[lib]==0.18.0; extra == "dev-mkdocs"
57
57
  Provides-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"
58
+ Requires-Dist: mypy==2.3.0; extra == "dev-mypy"
59
+ Requires-Dist: types-Markdown==3.10.2.20260712; 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
- Requires-Dist: nox==2026.4.10; extra == "dev-noxfile"
64
+ Requires-Dist: nox==2026.7.11; extra == "dev-noxfile"
65
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"
@@ -21,7 +21,7 @@ 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.9.0
24
+ pydoclint==0.9.1
25
25
  pydocstyle==6.3.0
26
26
 
27
27
  [dev-formatting]
@@ -35,20 +35,20 @@ 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
- mkdocs-material==9.7.6
39
- mkdocstrings[python]==1.0.4
38
+ mkdocs-material==9.7.7
39
+ mkdocstrings[python]==1.0.6
40
40
  mkdocstrings-python==2.0.5
41
41
  frequenz-repo-config[lib]==0.18.0
42
42
 
43
43
  [dev-mypy]
44
- mypy==2.1.0
45
- types-Markdown==3.10.2.20260518
44
+ mypy==2.3.0
45
+ types-Markdown==3.10.2.20260712
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
- nox==2026.4.10
51
+ nox==2026.7.11
52
52
  frequenz-repo-config[lib]==0.18.0
53
53
 
54
54
  [dev-pylint]
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "0.4.2",
3
+ "distance": 0,
4
+ "node": "g961f18cd7b218235c1e9d85e021e877c3a3f1b04",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-08-04"
8
+ }
@@ -1,28 +0,0 @@
1
- # Frequenz CS Reporting Library Release Notes
2
-
3
- ## Summary
4
-
5
- - Update reporting to work with the latest `frequenz-lib-notebooks` and
6
- `frequenz-gridpool` APIs, including Assets API-backed microgrid configuration
7
- loading, meter display names, day-ahead prices, and the battery-usecase
8
- overview plot.
9
-
10
- ## Upgrading
11
-
12
- - Set `ASSETS_API_URL` in addition to `REPORTING_API_URL`, `API_KEY`, and
13
- `API_SECRET`. The reporting dashboard now uses the Assets API to merge
14
- microgrid configuration data and fetch component display names.
15
- - Set `ENTSOE_API_KEY` to show day-ahead prices in the reporting overview plot.
16
- If it is not configured, the dashboard still renders without the price trace.
17
-
18
- ## New Features
19
-
20
- - Load microgrid configuration through `frequenz.gridpool.load_configs()` with
21
- local TOML defaults and Assets API data.
22
- - Use Assets API component display names when creating the reporting energy report dataframe.
23
- - Add day-ahead prices to the reporting overview data and render them on a secondary axis in the battery-usecase overview plot.
24
- - Replace the generic overview time-series plot with
25
- `plot_time_series_battery_usecase()` using the psc visualization
26
- flow from `frequenz-lib-notebooks`.
27
-
28
- ## Bug Fixes
@@ -1,8 +0,0 @@
1
- {
2
- "tag": "0.4.1",
3
- "distance": 0,
4
- "node": "gfb917306b0530fb8846ac34cfb6c54262caa84b0",
5
- "dirty": false,
6
- "branch": "HEAD",
7
- "node_date": "2026-07-31"
8
- }