electric-barometer 0.1.0__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.
@@ -0,0 +1,28 @@
1
+ BSD 3-Clause License
2
+
3
+ Copyright (c) 2025, Kyle Corrie
4
+
5
+ Redistribution and use in source and binary forms, with or without
6
+ modification, are permitted provided that the following conditions are met:
7
+
8
+ 1. Redistributions of source code must retain the above copyright notice, this
9
+ list of conditions and the following disclaimer.
10
+
11
+ 2. Redistributions in binary form must reproduce the above copyright notice,
12
+ this list of conditions and the following disclaimer in the documentation
13
+ and/or other materials provided with the distribution.
14
+
15
+ 3. Neither the name of the copyright holder nor the names of its
16
+ contributors may be used to endorse or promote products derived from
17
+ this software without specific prior written permission.
18
+
19
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
23
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,200 @@
1
+ Metadata-Version: 2.4
2
+ Name: electric-barometer
3
+ Version: 0.1.0
4
+ Summary: Umbrella package for the Electric Barometer ecosystem (metrics, evaluation, adapters, and related tooling).
5
+ Author-email: "Kyle Corrie (Economistician)" <kcorrie@economistician.com>
6
+ License: BSD-3-Clause
7
+ Project-URL: Homepage, https://github.com/Economistician/electric-barometer
8
+ Project-URL: Repository, https://github.com/Economistician/electric-barometer
9
+ Project-URL: Issues, https://github.com/Economistician/electric-barometer/issues
10
+ Project-URL: Documentation, https://economistician.github.io/eb-docs/
11
+ Keywords: forecasting,operations,evaluation,metrics,time-series
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Intended Audience :: Science/Research
15
+ Classifier: License :: OSI Approved :: BSD License
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Operating System :: OS Independent
21
+ Requires-Python: >=3.10
22
+ Description-Content-Type: text/markdown
23
+ License-File: LICENSE
24
+ Requires-Dist: eb-metrics<0.2,>=0.1.1
25
+ Requires-Dist: eb-evaluation<0.2,>=0.1.1
26
+ Requires-Dist: eb-adapters<0.2,>=0.1.0
27
+ Provides-Extra: dev
28
+ Requires-Dist: pytest>=8.0; extra == "dev"
29
+ Requires-Dist: pytest-cov>=5.0; extra == "dev"
30
+ Provides-Extra: metrics
31
+ Requires-Dist: eb-metrics<0.2,>=0.1.1; extra == "metrics"
32
+ Provides-Extra: evaluation
33
+ Requires-Dist: eb-evaluation<0.2,>=0.1.1; extra == "evaluation"
34
+ Provides-Extra: adapters
35
+ Requires-Dist: eb-adapters<0.2,>=0.1.1; extra == "adapters"
36
+ Provides-Extra: sklearn
37
+ Requires-Dist: eb-metrics[sklearn]<0.2,>=0.1.1; extra == "sklearn"
38
+ Provides-Extra: tf
39
+ Requires-Dist: eb-metrics[tf]<0.2,>=0.1.1; extra == "tf"
40
+ Provides-Extra: all
41
+ Requires-Dist: electric-barometer[metrics]; extra == "all"
42
+ Requires-Dist: electric-barometer[evaluation]; extra == "all"
43
+ Requires-Dist: electric-barometer[adapters]; extra == "all"
44
+ Requires-Dist: electric-barometer[sklearn]; extra == "all"
45
+ Requires-Dist: electric-barometer[tf]; extra == "all"
46
+ Dynamic: license-file
47
+
48
+ # Electric Barometer
49
+
50
+ ![License: BSD-3-Clause](https://img.shields.io/badge/License-BSD_3--Clause-blue.svg)
51
+ ![Python Versions](https://img.shields.io/badge/Python-3.10%2B-blue)
52
+ ![Project Status](https://img.shields.io/badge/Status-Alpha-yellow)
53
+
54
+ **Electric Barometer** is a modular, cost-aware forecasting evaluation framework designed
55
+ for operational decision-making. It provides a structured way to evaluate, compare, and
56
+ select forecasts when error costs are asymmetric and operational consequences matter.
57
+
58
+ Rather than delivering a single monolithic library, Electric Barometer is intentionally
59
+ organized as a small ecosystem of focused packages, each with a clear responsibility.
60
+
61
+ This repository serves as the **umbrella distribution and conceptual entry point** for
62
+ the Electric Barometer ecosystem.
63
+
64
+ ---
65
+
66
+ ## The Electric Barometer Ecosystem
67
+
68
+ Electric Barometer is composed of several interoperable packages:
69
+
70
+ - **`eb-metrics`**
71
+ Defines individual forecast error and service metrics, including cost-asymmetric
72
+ measures such as Cost-Weighted Service Loss (CWSL), Forecast Readiness Score (FRS),
73
+ and related primitives.
74
+
75
+ - **`eb-evaluation`**
76
+ Provides DataFrame-first utilities for applying metrics across entities, groups,
77
+ hierarchies, and time windows. This layer handles evaluation, comparison, and
78
+ selection logic while delegating metric math to `eb-metrics`.
79
+
80
+ - **`eb-adapters`**
81
+ Normalizes interfaces for external forecasting and regression libraries so they can
82
+ be evaluated consistently. Adapters expose a common `.fit / .predict` contract for
83
+ heterogeneous models.
84
+
85
+ - **`eb-examples`**
86
+ Contains worked examples, notebooks, and practical demonstrations showing how the
87
+ Electric Barometer ecosystem is used end-to-end in real scenarios.
88
+
89
+ - **`eb-papers`**
90
+ The source of truth for conceptual definitions, theoretical foundations, and
91
+ methodological rationale behind Electric Barometer metrics and frameworks.
92
+
93
+ Each package is versioned, tested, and documented independently, but designed to work
94
+ together seamlessly.
95
+
96
+ ---
97
+
98
+ ## What This Repository Provides
99
+
100
+ This `electric-barometer` repository:
101
+
102
+ - Acts as the **canonical entry point** to the ecosystem
103
+ - Provides a single install surface for core Electric Barometer functionality
104
+ - Establishes the conceptual map of the project
105
+ - Ensures compatible dependency resolution across subpackages
106
+
107
+ It intentionally contains minimal implementation code.
108
+
109
+ ---
110
+
111
+ ## Installation
112
+
113
+ Install the Electric Barometer umbrella package via pip:
114
+
115
+ ```bash
116
+ pip install electric-barometer
117
+ ```
118
+
119
+ This installs the core dependencies required to work with Electric Barometer metrics.
120
+ Additional functionality is provided by installing the underlying packages directly
121
+ (e.g., `eb-evaluation`, `eb-adapters`) or via future optional extras.
122
+
123
+ For development:
124
+
125
+ ```bash
126
+ pip install -e .
127
+ ```
128
+
129
+ ---
130
+
131
+ ## Design Philosophy
132
+
133
+ Electric Barometer is built around a few core principles:
134
+
135
+ - **Separation of concerns**
136
+ Metric definitions, evaluation logic, and model interfaces live in separate packages.
137
+
138
+ - **Cost-aware evaluation**
139
+ Forecast accuracy is evaluated in terms of operational impact, not symmetric error
140
+ alone.
141
+
142
+ - **Operational realism**
143
+ Metrics and frameworks are designed for environments where underbuild and overbuild
144
+ have different consequences.
145
+
146
+ - **Composable tooling**
147
+ Users can adopt only the layers they need without committing to a monolith.
148
+
149
+ ---
150
+
151
+ ## Examples and Tutorials
152
+
153
+ Examples, notebooks, and applied workflows are maintained in the separate
154
+ **`eb-examples`** repository.
155
+
156
+ This repository intentionally avoids embedding example code to keep the core packages
157
+ lean and focused.
158
+
159
+ ---
160
+
161
+ ## Documentation
162
+
163
+ Unified documentation for the Electric Barometer ecosystem is available at:
164
+
165
+ https://economistician.github.io/eb-docs/
166
+
167
+ Documentation is generated directly from source code docstrings and kept consistent
168
+ across packages.
169
+
170
+ ---
171
+
172
+ ## Status
173
+
174
+ Electric Barometer is under active development.
175
+ Public APIs may evolve prior to the first stable release.
176
+
177
+ ---
178
+
179
+ ## Authorship and Stewardship
180
+
181
+ The Electric Barometer ecosystem is designed and maintained by
182
+ **Kyle Corrie** under the *Economistician* moniker.
183
+
184
+ The project reflects applied research and production experience in
185
+ forecasting, operations research, and cost-asymmetric decision systems
186
+ within large-scale operational environments.
187
+
188
+ For questions, collaboration, or research inquiries:
189
+
190
+ - GitHub: https://github.com/Economistician
191
+ - Contact: kcorrie@economistician.com
192
+
193
+ Conceptual foundations and formal methodology are documented in the
194
+ companion research repository **eb-papers**.
195
+
196
+ ---
197
+
198
+ ## License
199
+
200
+ This project is licensed under the BSD 3-Clause License.
@@ -0,0 +1,153 @@
1
+ # Electric Barometer
2
+
3
+ ![License: BSD-3-Clause](https://img.shields.io/badge/License-BSD_3--Clause-blue.svg)
4
+ ![Python Versions](https://img.shields.io/badge/Python-3.10%2B-blue)
5
+ ![Project Status](https://img.shields.io/badge/Status-Alpha-yellow)
6
+
7
+ **Electric Barometer** is a modular, cost-aware forecasting evaluation framework designed
8
+ for operational decision-making. It provides a structured way to evaluate, compare, and
9
+ select forecasts when error costs are asymmetric and operational consequences matter.
10
+
11
+ Rather than delivering a single monolithic library, Electric Barometer is intentionally
12
+ organized as a small ecosystem of focused packages, each with a clear responsibility.
13
+
14
+ This repository serves as the **umbrella distribution and conceptual entry point** for
15
+ the Electric Barometer ecosystem.
16
+
17
+ ---
18
+
19
+ ## The Electric Barometer Ecosystem
20
+
21
+ Electric Barometer is composed of several interoperable packages:
22
+
23
+ - **`eb-metrics`**
24
+ Defines individual forecast error and service metrics, including cost-asymmetric
25
+ measures such as Cost-Weighted Service Loss (CWSL), Forecast Readiness Score (FRS),
26
+ and related primitives.
27
+
28
+ - **`eb-evaluation`**
29
+ Provides DataFrame-first utilities for applying metrics across entities, groups,
30
+ hierarchies, and time windows. This layer handles evaluation, comparison, and
31
+ selection logic while delegating metric math to `eb-metrics`.
32
+
33
+ - **`eb-adapters`**
34
+ Normalizes interfaces for external forecasting and regression libraries so they can
35
+ be evaluated consistently. Adapters expose a common `.fit / .predict` contract for
36
+ heterogeneous models.
37
+
38
+ - **`eb-examples`**
39
+ Contains worked examples, notebooks, and practical demonstrations showing how the
40
+ Electric Barometer ecosystem is used end-to-end in real scenarios.
41
+
42
+ - **`eb-papers`**
43
+ The source of truth for conceptual definitions, theoretical foundations, and
44
+ methodological rationale behind Electric Barometer metrics and frameworks.
45
+
46
+ Each package is versioned, tested, and documented independently, but designed to work
47
+ together seamlessly.
48
+
49
+ ---
50
+
51
+ ## What This Repository Provides
52
+
53
+ This `electric-barometer` repository:
54
+
55
+ - Acts as the **canonical entry point** to the ecosystem
56
+ - Provides a single install surface for core Electric Barometer functionality
57
+ - Establishes the conceptual map of the project
58
+ - Ensures compatible dependency resolution across subpackages
59
+
60
+ It intentionally contains minimal implementation code.
61
+
62
+ ---
63
+
64
+ ## Installation
65
+
66
+ Install the Electric Barometer umbrella package via pip:
67
+
68
+ ```bash
69
+ pip install electric-barometer
70
+ ```
71
+
72
+ This installs the core dependencies required to work with Electric Barometer metrics.
73
+ Additional functionality is provided by installing the underlying packages directly
74
+ (e.g., `eb-evaluation`, `eb-adapters`) or via future optional extras.
75
+
76
+ For development:
77
+
78
+ ```bash
79
+ pip install -e .
80
+ ```
81
+
82
+ ---
83
+
84
+ ## Design Philosophy
85
+
86
+ Electric Barometer is built around a few core principles:
87
+
88
+ - **Separation of concerns**
89
+ Metric definitions, evaluation logic, and model interfaces live in separate packages.
90
+
91
+ - **Cost-aware evaluation**
92
+ Forecast accuracy is evaluated in terms of operational impact, not symmetric error
93
+ alone.
94
+
95
+ - **Operational realism**
96
+ Metrics and frameworks are designed for environments where underbuild and overbuild
97
+ have different consequences.
98
+
99
+ - **Composable tooling**
100
+ Users can adopt only the layers they need without committing to a monolith.
101
+
102
+ ---
103
+
104
+ ## Examples and Tutorials
105
+
106
+ Examples, notebooks, and applied workflows are maintained in the separate
107
+ **`eb-examples`** repository.
108
+
109
+ This repository intentionally avoids embedding example code to keep the core packages
110
+ lean and focused.
111
+
112
+ ---
113
+
114
+ ## Documentation
115
+
116
+ Unified documentation for the Electric Barometer ecosystem is available at:
117
+
118
+ https://economistician.github.io/eb-docs/
119
+
120
+ Documentation is generated directly from source code docstrings and kept consistent
121
+ across packages.
122
+
123
+ ---
124
+
125
+ ## Status
126
+
127
+ Electric Barometer is under active development.
128
+ Public APIs may evolve prior to the first stable release.
129
+
130
+ ---
131
+
132
+ ## Authorship and Stewardship
133
+
134
+ The Electric Barometer ecosystem is designed and maintained by
135
+ **Kyle Corrie** under the *Economistician* moniker.
136
+
137
+ The project reflects applied research and production experience in
138
+ forecasting, operations research, and cost-asymmetric decision systems
139
+ within large-scale operational environments.
140
+
141
+ For questions, collaboration, or research inquiries:
142
+
143
+ - GitHub: https://github.com/Economistician
144
+ - Contact: kcorrie@economistician.com
145
+
146
+ Conceptual foundations and formal methodology are documented in the
147
+ companion research repository **eb-papers**.
148
+
149
+ ---
150
+
151
+ ## License
152
+
153
+ This project is licensed under the BSD 3-Clause License.
@@ -0,0 +1,79 @@
1
+ [project]
2
+ name = "electric-barometer"
3
+ version = "0.1.0"
4
+ description = "Umbrella package for the Electric Barometer ecosystem (metrics, evaluation, adapters, and related tooling)."
5
+ readme = "README.md"
6
+ requires-python = ">=3.10"
7
+ license = { text = "BSD-3-Clause" }
8
+
9
+ authors = [
10
+ { name = "Kyle Corrie (Economistician)", email = "kcorrie@economistician.com" }
11
+ ]
12
+
13
+ # Keep installable even before all subpackages are published to PyPI.
14
+ dependencies = ["eb-metrics>=0.1.1,<0.2","eb-evaluation>=0.1.1,<0.2","eb-adapters>=0.1.0,<0.2"]
15
+
16
+ keywords = ["forecasting", "operations", "evaluation", "metrics", "time-series"]
17
+
18
+ classifiers = [
19
+ "Development Status :: 3 - Alpha",
20
+ "Intended Audience :: Developers",
21
+ "Intended Audience :: Science/Research",
22
+ "License :: OSI Approved :: BSD License",
23
+ "Programming Language :: Python :: 3",
24
+ "Programming Language :: Python :: 3.10",
25
+ "Programming Language :: Python :: 3.11",
26
+ "Programming Language :: Python :: 3.12",
27
+ "Operating System :: OS Independent",
28
+ ]
29
+
30
+ [project.urls]
31
+ Homepage = "https://github.com/Economistician/electric-barometer"
32
+ Repository = "https://github.com/Economistician/electric-barometer"
33
+ Issues = "https://github.com/Economistician/electric-barometer/issues"
34
+ Documentation = "https://economistician.github.io/eb-docs/"
35
+
36
+ [project.optional-dependencies]
37
+ dev = [
38
+ "pytest>=8.0",
39
+ "pytest-cov>=5.0",
40
+ ]
41
+
42
+ # Ecosystem extras (enable as packages become available on PyPI)
43
+ metrics = [
44
+ "eb-metrics>=0.1.1,<0.2",
45
+ ]
46
+ evaluation = [
47
+ "eb-evaluation>=0.1.1,<0.2",
48
+ ]
49
+ adapters = [
50
+ "eb-adapters>=0.1.1,<0.2",
51
+ ]
52
+
53
+ # Proxy extras to eb-metrics extras (already exist in eb-metrics)
54
+ sklearn = [
55
+ "eb-metrics[sklearn]>=0.1.1,<0.2",
56
+ ]
57
+ tf = [
58
+ "eb-metrics[tf]>=0.1.1,<0.2",
59
+ ]
60
+
61
+ # Convenience rollups
62
+ all = [
63
+ "electric-barometer[metrics]",
64
+ "electric-barometer[evaluation]",
65
+ "electric-barometer[adapters]",
66
+ "electric-barometer[sklearn]",
67
+ "electric-barometer[tf]",
68
+ ]
69
+
70
+ [build-system]
71
+ requires = ["setuptools>=64", "wheel"]
72
+ build-backend = "setuptools.build_meta"
73
+
74
+ [tool.setuptools.packages.find]
75
+ where = ["src"]
76
+
77
+ [tool.pytest.ini_options]
78
+ pythonpath = ["src"]
79
+ addopts = "-ra"
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,34 @@
1
+ from __future__ import annotations
2
+
3
+ """
4
+ electric-barometer
5
+ ==================
6
+
7
+ Umbrella package for the Electric Barometer ecosystem.
8
+
9
+ This distribution intentionally contains minimal runtime code. Its primary
10
+ purpose is to provide a stable installation and versioning surface for the
11
+ Electric Barometer framework by coordinating the following leaf packages:
12
+
13
+ - eb-metrics : Core asymmetric forecast metrics
14
+ - eb-evaluation : DataFrame-based evaluation and orchestration utilities
15
+ - eb-adapters : Forecast model adapter interfaces
16
+
17
+ End users are expected to interact primarily with the leaf packages directly.
18
+ """
19
+
20
+ from importlib.metadata import PackageNotFoundError, version
21
+
22
+
23
+ def _resolve_version() -> str:
24
+ """Resolve the installed version of the electric-barometer distribution."""
25
+ try:
26
+ return version("electric-barometer")
27
+ except PackageNotFoundError:
28
+ # Fallback for editable installs or source checkouts
29
+ return "0.0.0"
30
+
31
+
32
+ __version__ = _resolve_version()
33
+
34
+ __all__ = ["__version__"]
@@ -0,0 +1,200 @@
1
+ Metadata-Version: 2.4
2
+ Name: electric-barometer
3
+ Version: 0.1.0
4
+ Summary: Umbrella package for the Electric Barometer ecosystem (metrics, evaluation, adapters, and related tooling).
5
+ Author-email: "Kyle Corrie (Economistician)" <kcorrie@economistician.com>
6
+ License: BSD-3-Clause
7
+ Project-URL: Homepage, https://github.com/Economistician/electric-barometer
8
+ Project-URL: Repository, https://github.com/Economistician/electric-barometer
9
+ Project-URL: Issues, https://github.com/Economistician/electric-barometer/issues
10
+ Project-URL: Documentation, https://economistician.github.io/eb-docs/
11
+ Keywords: forecasting,operations,evaluation,metrics,time-series
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Intended Audience :: Science/Research
15
+ Classifier: License :: OSI Approved :: BSD License
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Operating System :: OS Independent
21
+ Requires-Python: >=3.10
22
+ Description-Content-Type: text/markdown
23
+ License-File: LICENSE
24
+ Requires-Dist: eb-metrics<0.2,>=0.1.1
25
+ Requires-Dist: eb-evaluation<0.2,>=0.1.1
26
+ Requires-Dist: eb-adapters<0.2,>=0.1.0
27
+ Provides-Extra: dev
28
+ Requires-Dist: pytest>=8.0; extra == "dev"
29
+ Requires-Dist: pytest-cov>=5.0; extra == "dev"
30
+ Provides-Extra: metrics
31
+ Requires-Dist: eb-metrics<0.2,>=0.1.1; extra == "metrics"
32
+ Provides-Extra: evaluation
33
+ Requires-Dist: eb-evaluation<0.2,>=0.1.1; extra == "evaluation"
34
+ Provides-Extra: adapters
35
+ Requires-Dist: eb-adapters<0.2,>=0.1.1; extra == "adapters"
36
+ Provides-Extra: sklearn
37
+ Requires-Dist: eb-metrics[sklearn]<0.2,>=0.1.1; extra == "sklearn"
38
+ Provides-Extra: tf
39
+ Requires-Dist: eb-metrics[tf]<0.2,>=0.1.1; extra == "tf"
40
+ Provides-Extra: all
41
+ Requires-Dist: electric-barometer[metrics]; extra == "all"
42
+ Requires-Dist: electric-barometer[evaluation]; extra == "all"
43
+ Requires-Dist: electric-barometer[adapters]; extra == "all"
44
+ Requires-Dist: electric-barometer[sklearn]; extra == "all"
45
+ Requires-Dist: electric-barometer[tf]; extra == "all"
46
+ Dynamic: license-file
47
+
48
+ # Electric Barometer
49
+
50
+ ![License: BSD-3-Clause](https://img.shields.io/badge/License-BSD_3--Clause-blue.svg)
51
+ ![Python Versions](https://img.shields.io/badge/Python-3.10%2B-blue)
52
+ ![Project Status](https://img.shields.io/badge/Status-Alpha-yellow)
53
+
54
+ **Electric Barometer** is a modular, cost-aware forecasting evaluation framework designed
55
+ for operational decision-making. It provides a structured way to evaluate, compare, and
56
+ select forecasts when error costs are asymmetric and operational consequences matter.
57
+
58
+ Rather than delivering a single monolithic library, Electric Barometer is intentionally
59
+ organized as a small ecosystem of focused packages, each with a clear responsibility.
60
+
61
+ This repository serves as the **umbrella distribution and conceptual entry point** for
62
+ the Electric Barometer ecosystem.
63
+
64
+ ---
65
+
66
+ ## The Electric Barometer Ecosystem
67
+
68
+ Electric Barometer is composed of several interoperable packages:
69
+
70
+ - **`eb-metrics`**
71
+ Defines individual forecast error and service metrics, including cost-asymmetric
72
+ measures such as Cost-Weighted Service Loss (CWSL), Forecast Readiness Score (FRS),
73
+ and related primitives.
74
+
75
+ - **`eb-evaluation`**
76
+ Provides DataFrame-first utilities for applying metrics across entities, groups,
77
+ hierarchies, and time windows. This layer handles evaluation, comparison, and
78
+ selection logic while delegating metric math to `eb-metrics`.
79
+
80
+ - **`eb-adapters`**
81
+ Normalizes interfaces for external forecasting and regression libraries so they can
82
+ be evaluated consistently. Adapters expose a common `.fit / .predict` contract for
83
+ heterogeneous models.
84
+
85
+ - **`eb-examples`**
86
+ Contains worked examples, notebooks, and practical demonstrations showing how the
87
+ Electric Barometer ecosystem is used end-to-end in real scenarios.
88
+
89
+ - **`eb-papers`**
90
+ The source of truth for conceptual definitions, theoretical foundations, and
91
+ methodological rationale behind Electric Barometer metrics and frameworks.
92
+
93
+ Each package is versioned, tested, and documented independently, but designed to work
94
+ together seamlessly.
95
+
96
+ ---
97
+
98
+ ## What This Repository Provides
99
+
100
+ This `electric-barometer` repository:
101
+
102
+ - Acts as the **canonical entry point** to the ecosystem
103
+ - Provides a single install surface for core Electric Barometer functionality
104
+ - Establishes the conceptual map of the project
105
+ - Ensures compatible dependency resolution across subpackages
106
+
107
+ It intentionally contains minimal implementation code.
108
+
109
+ ---
110
+
111
+ ## Installation
112
+
113
+ Install the Electric Barometer umbrella package via pip:
114
+
115
+ ```bash
116
+ pip install electric-barometer
117
+ ```
118
+
119
+ This installs the core dependencies required to work with Electric Barometer metrics.
120
+ Additional functionality is provided by installing the underlying packages directly
121
+ (e.g., `eb-evaluation`, `eb-adapters`) or via future optional extras.
122
+
123
+ For development:
124
+
125
+ ```bash
126
+ pip install -e .
127
+ ```
128
+
129
+ ---
130
+
131
+ ## Design Philosophy
132
+
133
+ Electric Barometer is built around a few core principles:
134
+
135
+ - **Separation of concerns**
136
+ Metric definitions, evaluation logic, and model interfaces live in separate packages.
137
+
138
+ - **Cost-aware evaluation**
139
+ Forecast accuracy is evaluated in terms of operational impact, not symmetric error
140
+ alone.
141
+
142
+ - **Operational realism**
143
+ Metrics and frameworks are designed for environments where underbuild and overbuild
144
+ have different consequences.
145
+
146
+ - **Composable tooling**
147
+ Users can adopt only the layers they need without committing to a monolith.
148
+
149
+ ---
150
+
151
+ ## Examples and Tutorials
152
+
153
+ Examples, notebooks, and applied workflows are maintained in the separate
154
+ **`eb-examples`** repository.
155
+
156
+ This repository intentionally avoids embedding example code to keep the core packages
157
+ lean and focused.
158
+
159
+ ---
160
+
161
+ ## Documentation
162
+
163
+ Unified documentation for the Electric Barometer ecosystem is available at:
164
+
165
+ https://economistician.github.io/eb-docs/
166
+
167
+ Documentation is generated directly from source code docstrings and kept consistent
168
+ across packages.
169
+
170
+ ---
171
+
172
+ ## Status
173
+
174
+ Electric Barometer is under active development.
175
+ Public APIs may evolve prior to the first stable release.
176
+
177
+ ---
178
+
179
+ ## Authorship and Stewardship
180
+
181
+ The Electric Barometer ecosystem is designed and maintained by
182
+ **Kyle Corrie** under the *Economistician* moniker.
183
+
184
+ The project reflects applied research and production experience in
185
+ forecasting, operations research, and cost-asymmetric decision systems
186
+ within large-scale operational environments.
187
+
188
+ For questions, collaboration, or research inquiries:
189
+
190
+ - GitHub: https://github.com/Economistician
191
+ - Contact: kcorrie@economistician.com
192
+
193
+ Conceptual foundations and formal methodology are documented in the
194
+ companion research repository **eb-papers**.
195
+
196
+ ---
197
+
198
+ ## License
199
+
200
+ This project is licensed under the BSD 3-Clause License.
@@ -0,0 +1,10 @@
1
+ LICENSE
2
+ README.md
3
+ pyproject.toml
4
+ src/electric_barometer/__init__.py
5
+ src/electric_barometer.egg-info/PKG-INFO
6
+ src/electric_barometer.egg-info/SOURCES.txt
7
+ src/electric_barometer.egg-info/dependency_links.txt
8
+ src/electric_barometer.egg-info/requires.txt
9
+ src/electric_barometer.egg-info/top_level.txt
10
+ tests/test_smoke_imports.py
@@ -0,0 +1,29 @@
1
+ eb-metrics<0.2,>=0.1.1
2
+ eb-evaluation<0.2,>=0.1.1
3
+ eb-adapters<0.2,>=0.1.0
4
+
5
+ [adapters]
6
+ eb-adapters<0.2,>=0.1.1
7
+
8
+ [all]
9
+ electric-barometer[metrics]
10
+ electric-barometer[evaluation]
11
+ electric-barometer[adapters]
12
+ electric-barometer[sklearn]
13
+ electric-barometer[tf]
14
+
15
+ [dev]
16
+ pytest>=8.0
17
+ pytest-cov>=5.0
18
+
19
+ [evaluation]
20
+ eb-evaluation<0.2,>=0.1.1
21
+
22
+ [metrics]
23
+ eb-metrics<0.2,>=0.1.1
24
+
25
+ [sklearn]
26
+ eb-metrics[sklearn]<0.2,>=0.1.1
27
+
28
+ [tf]
29
+ eb-metrics[tf]<0.2,>=0.1.1
@@ -0,0 +1 @@
1
+ electric_barometer
@@ -0,0 +1,16 @@
1
+ import importlib
2
+
3
+
4
+ def _can_import(name: str) -> bool:
5
+ return importlib.util.find_spec(name) is not None
6
+
7
+
8
+ def test_smoke_imports():
9
+ import electric_barometer # noqa: F401
10
+ import eb_metrics # noqa: F401
11
+
12
+ # Optional ecosystem packages (may not be installed yet)
13
+ if _can_import("eb_evaluation"):
14
+ import eb_evaluation # noqa: F401
15
+ if _can_import("eb_adapters"):
16
+ import eb_adapters # noqa: F401