Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Support Pandas 2 #673

Merged
merged 18 commits into from Jun 13, 2023
Merged
Show file tree
Hide file tree
Changes from 15 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions documentation/changelog.rst
Expand Up @@ -25,6 +25,7 @@ Infrastructure / Support
* The setting FLEXMEASURES_PLUGINS can be set as environment variable now (as a comma-separated list) [see `PR #660 <https://www.github.com/FlexMeasures/flexmeasures/pull/660>`_]
* Packaging was modernized to stop calling setup.py directly [see `PR #671 <https://www.github.com/FlexMeasures/flexmeasures/pull/671>`_]
* Remove API versions 1.0, 1.1, 1.2, 1.3 and 2.0, while allowing hosts to switch between ``HTTP status 410 (Gone)`` and ``HTTP status 404 (Not Found)`` responses [see `PR #667 <https://www.github.com/FlexMeasures/flexmeasures/pull/667>`_]
* Support Pandas 2 [see `PR #673 <https://www.github.com/FlexMeasures/flexmeasures/pull/673>`_]
* Add code documentation from package structure and docstrings to official docs [see `PR #698 <https://www.github.com/FlexMeasures/flexmeasures/pull/698>`_]

.. warning:: The setting `FLEXMEASURES_PLUGIN_PATHS` has been deprecated since v0.7. It has now been sunset. Please replace it with :ref:`plugin-config`.
Expand Down
2 changes: 1 addition & 1 deletion documentation/plugin/customisation.rst
Expand Up @@ -42,7 +42,7 @@ The following minimal example gives you an idea of some meta information you can
"""
return pd.Series(
self.sensor.get_attribute("capacity_in_mw"),
index=pd.date_range(self.start, self.end, freq=self.resolution, closed="left"),
index=pd.date_range(self.start, self.end, freq=self.resolution, inclusive="left"),
)
def deserialize_config(self):
Expand Down
3 changes: 2 additions & 1 deletion flexmeasures/data/models/planning/linear_optimization.py
Expand Up @@ -74,7 +74,8 @@ def device_scheduler( # noqa C901

# Check if commitments have the same time window and resolution as the constraints
start = device_constraints[0].index.to_pydatetime()[0]
resolution = pd.to_timedelta(device_constraints[0].index.freq)
# Workaround for https://github.com/pandas-dev/pandas/issues/53643. Was: resolution = pd.to_timedelta(device_constraints[0].index.freq)
resolution = pd.to_timedelta(device_constraints[0].index.freq).to_pytimedelta()
end = device_constraints[0].index.to_pydatetime()[-1] + resolution
if len(commitment_quantities) != 0:
start_c = commitment_quantities[0].index.to_pydatetime()[0]
Expand Down
6 changes: 3 additions & 3 deletions flexmeasures/data/models/planning/tests/test_solver.py
Expand Up @@ -566,15 +566,15 @@ def compute_schedule(flex_model):

# test for soc_minima
# check that the local minimum constraint is respected
assert soc_schedule2.loc[datetime(2015, 1, 2, 7)] >= 3.5
assert soc_schedule2.loc["2015-01-02T08:00:00+01:00"] >= 3.5

# test for soc_maxima
# check that the local maximum constraint is respected
assert soc_schedule2.loc[datetime(2015, 1, 2, 14)] <= 1.0
assert soc_schedule2.loc["2015-01-02T15:00:00+01:00"] <= 1.0

# test for soc_targets
# check that the SOC target (at 19 pm, local time) is met
assert soc_schedule2.loc[datetime(2015, 1, 2, 18)] == 2.0
assert soc_schedule2.loc["2015-01-02T19:00:00+01:00"] == 2.0


@pytest.mark.parametrize(
Expand Down
2 changes: 1 addition & 1 deletion flexmeasures/data/models/time_series.py
Expand Up @@ -711,7 +711,7 @@ def search(
# todo: compute median of collective belief instead of median of first belief (update expected test results accordingly)
# todo: move to timely-beliefs: select mean/median belief
if (
bdf.lineage.number_of_sources == 1
bdf.lineage.number_of_sources <= 1
and bdf.lineage.probabilistic_depth == 1
):
# Fast track, no need to loop over beliefs
Expand Down
4 changes: 2 additions & 2 deletions requirements/app.in
Expand Up @@ -29,8 +29,8 @@ redis >4.5, <5
tldextract
pyomo>=5.6
tabulate
timetomodel>=0.7.1
timely-beliefs[forecast]>=1.18
timetomodel>=0.7.3
timely-beliefs[forecast]>=1.20.1
python-dotenv
# a backport, not needed in Python3.8
importlib_metadata
Expand Down
4 changes: 2 additions & 2 deletions requirements/app.txt
Expand Up @@ -314,9 +314,9 @@ tabulate==0.9.0
# via -r requirements/app.in
threadpoolctl==3.1.0
# via scikit-learn
timely-beliefs[forecast]==1.19.0
timely-beliefs[forecast]==1.20.1
# via -r requirements/app.in
timetomodel==0.7.2
timetomodel==0.7.3
# via -r requirements/app.in
tldextract==3.4.0
# via -r requirements/app.in
Expand Down