openenergyid 0.1.14__tar.gz → 0.1.15__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.
Potentially problematic release.
This version of openenergyid might be problematic. Click here for more details.
- {openenergyid-0.1.14 → openenergyid-0.1.15}/PKG-INFO +1 -1
- {openenergyid-0.1.14 → openenergyid-0.1.15}/openenergyid/__init__.py +1 -1
- {openenergyid-0.1.14 → openenergyid-0.1.15}/openenergyid/models.py +18 -6
- {openenergyid-0.1.14 → openenergyid-0.1.15}/.devcontainer/devcontainer.json +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/.github/workflows/python-publish.yml +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/.github/workflows/ruff.yml +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/.gitignore +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/.pre-commit-config.yaml +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/DEVELOPERS.md +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/LICENSE +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/README.md +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/data/capacity/capacity_output.json +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/data/capacity/power_sample.json +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/data/da_prices_be.json +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/data/dyntar/demo_dyntar_analysis.html +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/data/dyntar/sample.json +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/data/dyntar/sample_output.json +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/data/energiedelen/Optimaal_1.png +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/data/energiedelen/Optimaal_2.png +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/data/energiedelen/Relatief.png +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/data/energiedelen/Vast.png +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/data/energiedelen/sample_input.json +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/data/mvlr/sample_gas.json +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/data/mvlr/sample_solar.json +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/demo_capacity_analysis.ipynb +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/demo_dyntar_analysis.ipynb +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/demo_energiedelen.ipynb +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/demo_energyid_download.ipynb +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/demo_mvlr.ipynb +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/download_prices.ipynb +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/openenergyid/capacity/PowerAnalysis.py +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/openenergyid/capacity/__init__.py +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/openenergyid/capacity/main.py +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/openenergyid/capacity/models.py +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/openenergyid/const.py +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/openenergyid/dyntar/__init__.py +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/openenergyid/dyntar/const.py +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/openenergyid/dyntar/main.py +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/openenergyid/dyntar/models.py +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/openenergyid/energysharing/__init__.py +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/openenergyid/energysharing/const.py +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/openenergyid/energysharing/data_formatting.py +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/openenergyid/energysharing/main.py +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/openenergyid/energysharing/models.py +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/openenergyid/enums.py +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/openenergyid/mvlr/__init__.py +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/openenergyid/mvlr/helpers.py +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/openenergyid/mvlr/main.py +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/openenergyid/mvlr/models.py +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/openenergyid/mvlr/mvlr.py +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/poetry.lock +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/pyproject.toml +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/requirements-dev.txt +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/requirements.txt +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/tests/__init__.py +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/tests/data/mvlr/sample.dat +0 -0
- {openenergyid-0.1.14 → openenergyid-0.1.15}/tests/nb.py +0 -0
|
@@ -6,7 +6,7 @@ from typing import overload
|
|
|
6
6
|
from typing import Self
|
|
7
7
|
|
|
8
8
|
import pandas as pd
|
|
9
|
-
from pydantic import BaseModel
|
|
9
|
+
from pydantic import BaseModel, field_validator
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
class TimeSeriesBase(BaseModel):
|
|
@@ -47,7 +47,7 @@ class TimeSeriesBase(BaseModel):
|
|
|
47
47
|
|
|
48
48
|
@overload
|
|
49
49
|
@classmethod
|
|
50
|
-
def from_json(cls, path: str, **kwargs) -> Self:
|
|
50
|
+
def from_json(cls, *, path: str, **kwargs) -> Self:
|
|
51
51
|
"""Load from a JSON file."""
|
|
52
52
|
|
|
53
53
|
@classmethod
|
|
@@ -66,12 +66,18 @@ class TimeSeries(TimeSeriesBase):
|
|
|
66
66
|
"""Time series data with a single column."""
|
|
67
67
|
|
|
68
68
|
name: str | None = None
|
|
69
|
-
data: list[float]
|
|
69
|
+
data: list[float | None]
|
|
70
|
+
|
|
71
|
+
@field_validator("data")
|
|
72
|
+
@classmethod
|
|
73
|
+
def replace_nan_with_none(cls, data: list[float]) -> list[float | None]:
|
|
74
|
+
"""Replace NaN values with None."""
|
|
75
|
+
return [None if pd.isna(value) else value for value in data]
|
|
70
76
|
|
|
71
77
|
@classmethod
|
|
72
78
|
def from_pandas(cls, data: pd.Series) -> Self:
|
|
73
79
|
"""Create from a Pandas Series."""
|
|
74
|
-
return cls
|
|
80
|
+
return cls(name=str(data.name), data=data.tolist(), index=data.index.tolist())
|
|
75
81
|
|
|
76
82
|
def to_pandas(self, timezone: str = "UTC") -> pd.Series:
|
|
77
83
|
"""Convert to a Pandas Series."""
|
|
@@ -84,12 +90,18 @@ class TimeDataFrame(TimeSeriesBase):
|
|
|
84
90
|
"""Time series data with multiple columns."""
|
|
85
91
|
|
|
86
92
|
columns: list[str]
|
|
87
|
-
data: list[list[float]]
|
|
93
|
+
data: list[list[float | None]]
|
|
94
|
+
|
|
95
|
+
@field_validator("data")
|
|
96
|
+
@classmethod
|
|
97
|
+
def replace_nan_with_none(cls, data: list[list[float]]) -> list[list[float | None]]:
|
|
98
|
+
"""Replace NaN values with None."""
|
|
99
|
+
return [[None if pd.isna(value) else value for value in row] for row in data]
|
|
88
100
|
|
|
89
101
|
@classmethod
|
|
90
102
|
def from_pandas(cls, data: pd.DataFrame) -> Self:
|
|
91
103
|
"""Create from a Pandas DataFrame."""
|
|
92
|
-
return cls
|
|
104
|
+
return cls(
|
|
93
105
|
columns=data.columns.tolist(), data=data.values.tolist(), index=data.index.tolist()
|
|
94
106
|
)
|
|
95
107
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|