From e432500506858caa9906ad60ce47a021dac5630f Mon Sep 17 00:00:00 2001 From: "Julian.Endres" Date: Thu, 24 Aug 2023 14:30:17 +0200 Subject: [PATCH 01/17] Move period information reading upwards The period information is needed to create the list of periodic values. Therefore the reading has to take place beforehand. --- src/oemof/tabular/datapackage/reading.py | 45 +++++++++++++----------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/src/oemof/tabular/datapackage/reading.py b/src/oemof/tabular/datapackage/reading.py index 02ff3c9b..debda9a2 100644 --- a/src/oemof/tabular/datapackage/reading.py +++ b/src/oemof/tabular/datapackage/reading.py @@ -377,6 +377,25 @@ def find(n, d): for flow in (typemap.get(FLOW_TYPE, HSN),) } + period_data = {} + if package.get_resource("periods"): + df_periods = pd.DataFrame.from_dict( + package.get_resource("periods").read(keyed=True) + ) + period_data["timeincrement"] = df_periods["increment"].values + period_data["timeindex"] = pd.DatetimeIndex(df_periods["timeindex"]) + period_data["periods"] = [ + pd.DatetimeIndex(df["timeindex"]) + for period, df in df_periods.groupby("periods") + ] + period_data["periods"] = [ + pd.DatetimeIndex( + i.values, freq=i.inferred_freq, name="timeindex" + ) + for i in period_data["periods"] + ] + + facades = {} for r in package.resources: if all( @@ -442,28 +461,12 @@ def find(n, d): # if no temporal provided as resource, take the first timeindex # from dict else: - # look for periods resource and if present, take as periods from it + # look for periods resource and if present, take periods from it if package.get_resource("periods"): - df_periods = pd.DataFrame.from_dict( - package.get_resource("periods").read(keyed=True) - ) - timeincrement = df_periods["increment"].values - timeindex = pd.DatetimeIndex(df_periods["timeindex"]) - periods = [ - pd.DatetimeIndex(df["timeindex"]) - for period, df in df_periods.groupby("periods") - ] - periods = [ - pd.DatetimeIndex( - i.values, freq=i.inferred_freq, name="timeindex" - ) - for i in periods - ] - es = cls( - timeindex=timeindex, - timeincrement=timeincrement, - periods=periods, + timeindex=period_data["timeindex"], + timeincrement=period_data["timeincrement"], + periods=period_data["periods"], infer_last_interval=False, ) @@ -483,7 +486,7 @@ def find(n, d): timeindex = pd.date_range( start=pd.to_datetime("today"), periods=1, freq="H" ) - es = cls() + es = cls(timeindex=timeindex) es.add( *chain( From 9fb6b00015057746d3c794764b9ad95b6ad6a93b Mon Sep 17 00:00:00 2001 From: "Julian.Endres" Date: Thu, 24 Aug 2023 14:32:50 +0200 Subject: [PATCH 02/17] Read periodic values and convert to full timeseries If a list length equals the number of periods it is converted to a timeseries of total timeindex length. The value will change corresponding to the periods. --- src/oemof/tabular/datapackage/reading.py | 44 ++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/src/oemof/tabular/datapackage/reading.py b/src/oemof/tabular/datapackage/reading.py index debda9a2..03030ffc 100644 --- a/src/oemof/tabular/datapackage/reading.py +++ b/src/oemof/tabular/datapackage/reading.py @@ -389,12 +389,43 @@ def find(n, d): for period, df in df_periods.groupby("periods") ] period_data["periods"] = [ - pd.DatetimeIndex( - i.values, freq=i.inferred_freq, name="timeindex" - ) + pd.DatetimeIndex(i.values, freq=i.inferred_freq, name="timeindex") for i in period_data["periods"] ] + def create_periodic_values(values, periods_index): + """ + Create periodic values from given values and period_data. + + Parameters + ---------- + values : list + List of values to be repeated. + periods_index : list + List containing periods datetimeindex. + + Returns + ------- + list + List of periodic values. + """ + # check if length of list equals number of periods + if len(values) == len(periods_index): + pass + else: + raise ValueError( + "Length of values does not0 equal number of periods." + ) + + # create timeseries with periodic values + periodic_values = pd.concat( + [ + pd.Series(repeat(values[i], len(period)), index=period) + for i, period in enumerate(periods_index) + ] + ) + + return periodic_values facades = {} for r in package.resources: @@ -424,6 +455,13 @@ def find(n, d): for f, v in facade.items(): if isinstance(v, Decimal): facade[f] = float(v) + # check if length of list equals number of periods + if isinstance(v, list): + if len(v) == len(period_data["periods"]): + # create timeseries with periodic values + facade[f] = create_periodic_values( + v, period_data["periods"] + ) read_facade( facade, facades, From 40643d932b43d9b413b25c40c39c5688acd08d5d Mon Sep 17 00:00:00 2001 From: "Julian.Endres" Date: Thu, 24 Aug 2023 14:39:57 +0200 Subject: [PATCH 03/17] Add check for multi-period approach --- src/oemof/tabular/datapackage/reading.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/oemof/tabular/datapackage/reading.py b/src/oemof/tabular/datapackage/reading.py index 03030ffc..91fbc29f 100644 --- a/src/oemof/tabular/datapackage/reading.py +++ b/src/oemof/tabular/datapackage/reading.py @@ -455,8 +455,9 @@ def create_periodic_values(values, periods_index): for f, v in facade.items(): if isinstance(v, Decimal): facade[f] = float(v) - # check if length of list equals number of periods - if isinstance(v, list): + # check if multi-period and value is list + if period_data and isinstance(v, list): + # check if length of list equals number of periods if len(v) == len(period_data["periods"]): # create timeseries with periodic values facade[f] = create_periodic_values( From 835124b92769e59f6f38112eb03ea64488bbed8f Mon Sep 17 00:00:00 2001 From: "Julian.Endres" Date: Fri, 25 Aug 2023 14:10:34 +0200 Subject: [PATCH 04/17] Add UserWarning when creating periodic values --- src/oemof/tabular/datapackage/reading.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/oemof/tabular/datapackage/reading.py b/src/oemof/tabular/datapackage/reading.py index 91fbc29f..d5c21718 100644 --- a/src/oemof/tabular/datapackage/reading.py +++ b/src/oemof/tabular/datapackage/reading.py @@ -463,6 +463,16 @@ def create_periodic_values(values, periods_index): facade[f] = create_periodic_values( v, period_data["periods"] ) + msg = ( + "\n" + f"The parameter '{f}' of a '{facade['type']}' " + "facade is converted into a periodic time " + "series.\nThis might not be possible for every" + " parameter and lead to ambiguous error " + "messages.\nPlease be aware, when using this " + "feature!" + ) + warnings.warn(msg, UserWarning) read_facade( facade, facades, From ca980a08fd51c64a450ed3f9f46663bf464a261d Mon Sep 17 00:00:00 2001 From: "Julian.Endres" Date: Thu, 28 Sep 2023 17:34:59 +0200 Subject: [PATCH 05/17] Change time to timeincrement --- src/oemof/tabular/datapackage/reading.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/oemof/tabular/datapackage/reading.py b/src/oemof/tabular/datapackage/reading.py index d5c21718..c7efb9c6 100644 --- a/src/oemof/tabular/datapackage/reading.py +++ b/src/oemof/tabular/datapackage/reading.py @@ -382,7 +382,7 @@ def find(n, d): df_periods = pd.DataFrame.from_dict( package.get_resource("periods").read(keyed=True) ) - period_data["timeincrement"] = df_periods["increment"].values + period_data["timeincrement"] = df_periods["timeincrement"].values period_data["timeindex"] = pd.DatetimeIndex(df_periods["timeindex"]) period_data["periods"] = [ pd.DatetimeIndex(df["timeindex"]) From 96f3ee0ade2795c4a68707443de2dd78f8ddfb4e Mon Sep 17 00:00:00 2001 From: "Julian.Endres" Date: Fri, 29 Sep 2023 11:41:21 +0200 Subject: [PATCH 06/17] Return values as list --- src/oemof/tabular/datapackage/reading.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/oemof/tabular/datapackage/reading.py b/src/oemof/tabular/datapackage/reading.py index c7efb9c6..5039b8cd 100644 --- a/src/oemof/tabular/datapackage/reading.py +++ b/src/oemof/tabular/datapackage/reading.py @@ -425,7 +425,7 @@ def create_periodic_values(values, periods_index): ] ) - return periodic_values + return periodic_values.tolist() facades = {} for r in package.resources: From 875e77062f28b9e478cdda7c4a750d94516cd56a Mon Sep 17 00:00:00 2001 From: "Julian.Endres" Date: Fri, 29 Sep 2023 11:42:07 +0200 Subject: [PATCH 07/17] Add special handling for investment parameters --- src/oemof/tabular/datapackage/reading.py | 43 ++++++++++++++++-------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/src/oemof/tabular/datapackage/reading.py b/src/oemof/tabular/datapackage/reading.py index 5039b8cd..df5efb65 100644 --- a/src/oemof/tabular/datapackage/reading.py +++ b/src/oemof/tabular/datapackage/reading.py @@ -459,20 +459,35 @@ def create_periodic_values(values, periods_index): if period_data and isinstance(v, list): # check if length of list equals number of periods if len(v) == len(period_data["periods"]): - # create timeseries with periodic values - facade[f] = create_periodic_values( - v, period_data["periods"] - ) - msg = ( - "\n" - f"The parameter '{f}' of a '{facade['type']}' " - "facade is converted into a periodic time " - "series.\nThis might not be possible for every" - " parameter and lead to ambiguous error " - "messages.\nPlease be aware, when using this " - "feature!" - ) - warnings.warn(msg, UserWarning) + if f in ["fixed_costs", "capacity_costs"]: + # special period parameters don't need to be + # converted into timeseries + facade[f] = v + msg = ( + "\n" + f"The parameter '{f}' of a '{facade['type']}' " + "facade is converted into a periodic list. " + "This might not be possible for every" + " parameter and lead to ambiguous error " + "messages.\nPlease be aware, when using this " + "feature!" + ) + warnings.warn(msg, UserWarning) + else: + # create timeseries with periodic values + facade[f] = create_periodic_values( + v, period_data["periods"] + ) + msg = ( + "\n" + f"The parameter '{f}' of a '{facade['type']}' " + "facade is converted into a periodic time " + "series.\nThis might not be possible for every" + " parameter and lead to ambiguous error " + "messages.\nPlease be aware, when using this " + "feature!" + ) + warnings.warn(msg, UserWarning) read_facade( facade, facades, From 801920397ccd0fd308ada7ce66961d6266a39932 Mon Sep 17 00:00:00 2001 From: "Julian.Endres" Date: Wed, 4 Oct 2023 15:23:06 +0200 Subject: [PATCH 08/17] Rename periods.csv column timeincrement --- .../datapackages/dispatch_multi_period/data/periods/periods.csv | 2 +- .../datapackages/dispatch_multi_period/datapackage.json | 2 +- .../tabular/examples/datapackages/foreignkeys/datapackage.json | 2 +- .../investment_multi_period/data/periods/periods.csv | 2 +- .../datapackages/investment_multi_period/datapackage.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/oemof/tabular/examples/datapackages/dispatch_multi_period/data/periods/periods.csv b/src/oemof/tabular/examples/datapackages/dispatch_multi_period/data/periods/periods.csv index 7fad6495..de9e323e 100644 --- a/src/oemof/tabular/examples/datapackages/dispatch_multi_period/data/periods/periods.csv +++ b/src/oemof/tabular/examples/datapackages/dispatch_multi_period/data/periods/periods.csv @@ -1,4 +1,4 @@ -timeindex,periods, increment +timeindex,periods, timeincrement 2011-01-01T00:00:00Z,0,1 2011-01-01T01:00:00Z,0,1 2011-01-01T02:00:00Z,0,1 diff --git a/src/oemof/tabular/examples/datapackages/dispatch_multi_period/datapackage.json b/src/oemof/tabular/examples/datapackages/dispatch_multi_period/datapackage.json index da7070f6..276d76a1 100644 --- a/src/oemof/tabular/examples/datapackages/dispatch_multi_period/datapackage.json +++ b/src/oemof/tabular/examples/datapackages/dispatch_multi_period/datapackage.json @@ -454,7 +454,7 @@ "format": "default" }, { - "name": "increment", + "name": "timeincrement", "type": "integer", "format": "default" } diff --git a/src/oemof/tabular/examples/datapackages/foreignkeys/datapackage.json b/src/oemof/tabular/examples/datapackages/foreignkeys/datapackage.json index 1b2028e6..4ccb1e77 100644 --- a/src/oemof/tabular/examples/datapackages/foreignkeys/datapackage.json +++ b/src/oemof/tabular/examples/datapackages/foreignkeys/datapackage.json @@ -183,4 +183,4 @@ } } ] -} +} \ No newline at end of file diff --git a/src/oemof/tabular/examples/datapackages/investment_multi_period/data/periods/periods.csv b/src/oemof/tabular/examples/datapackages/investment_multi_period/data/periods/periods.csv index 89e6bd93..19a108cf 100644 --- a/src/oemof/tabular/examples/datapackages/investment_multi_period/data/periods/periods.csv +++ b/src/oemof/tabular/examples/datapackages/investment_multi_period/data/periods/periods.csv @@ -1,4 +1,4 @@ -timeindex,periods, increment +timeindex,periods, timeincrement 2015-01-01T00:00:00Z,0,1 2015-01-01T01:00:00Z,0,1 2015-01-01T02:00:00Z,0,1 diff --git a/src/oemof/tabular/examples/datapackages/investment_multi_period/datapackage.json b/src/oemof/tabular/examples/datapackages/investment_multi_period/datapackage.json index 648d80b1..3c4bc6b1 100644 --- a/src/oemof/tabular/examples/datapackages/investment_multi_period/datapackage.json +++ b/src/oemof/tabular/examples/datapackages/investment_multi_period/datapackage.json @@ -661,7 +661,7 @@ "format": "default" }, { - "name": "increment", + "name": "timeincrement", "type": "integer", "format": "default" } From 16172bec1eae7f20878dd602860e038514f297b0 Mon Sep 17 00:00:00 2001 From: "Julian.Endres" Date: Wed, 4 Oct 2023 21:57:35 +0200 Subject: [PATCH 09/17] Reformat warning --- src/oemof/tabular/datapackage/reading.py | 26 +++++++++++------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/src/oemof/tabular/datapackage/reading.py b/src/oemof/tabular/datapackage/reading.py index df5efb65..9760fe6e 100644 --- a/src/oemof/tabular/datapackage/reading.py +++ b/src/oemof/tabular/datapackage/reading.py @@ -464,13 +464,12 @@ def create_periodic_values(values, periods_index): # converted into timeseries facade[f] = v msg = ( - "\n" - f"The parameter '{f}' of a '{facade['type']}' " - "facade is converted into a periodic list. " - "This might not be possible for every" - " parameter and lead to ambiguous error " - "messages.\nPlease be aware, when using this " - "feature!" + f"\nThe parameter '{f}' of a " + f"'{facade['type']}' facade is converted " + "into a periodic list. This might not be " + "possible for every parameter and lead to " + "ambiguous error messages.\nPlease be " + "aware, when using this feature!" ) warnings.warn(msg, UserWarning) else: @@ -479,13 +478,12 @@ def create_periodic_values(values, periods_index): v, period_data["periods"] ) msg = ( - "\n" - f"The parameter '{f}' of a '{facade['type']}' " - "facade is converted into a periodic time " - "series.\nThis might not be possible for every" - " parameter and lead to ambiguous error " - "messages.\nPlease be aware, when using this " - "feature!" + f"\nThe parameter '{f}' of a " + f"'{facade['type']}' facade is converted " + "into a periodic timeseries. This might " + "not be possible for every parameter and " + "lead to ambiguous error messages.\nPlease" + " be aware, when using this feature!" ) warnings.warn(msg, UserWarning) read_facade( From bde5a97dc5e2e18174e63a83d9b7415ca5f745fb Mon Sep 17 00:00:00 2001 From: "Julian.Endres" Date: Fri, 6 Oct 2023 12:16:36 +0200 Subject: [PATCH 10/17] Extend docstring for period values --- src/oemof/tabular/datapackage/reading.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/oemof/tabular/datapackage/reading.py b/src/oemof/tabular/datapackage/reading.py index 9760fe6e..6163fef1 100644 --- a/src/oemof/tabular/datapackage/reading.py +++ b/src/oemof/tabular/datapackage/reading.py @@ -396,6 +396,8 @@ def find(n, d): def create_periodic_values(values, periods_index): """ Create periodic values from given values and period_data. + The values are repeated for each period for the whole length e.g. + 8760 values for hourly data in one period. Parameters ---------- @@ -414,7 +416,7 @@ def create_periodic_values(values, periods_index): pass else: raise ValueError( - "Length of values does not0 equal number of periods." + "Length of values does not equal number of periods." ) # create timeseries with periodic values From 39ed7692c33626381f565589cb396b7a51e5441f Mon Sep 17 00:00:00 2001 From: "Julian.Endres" Date: Fri, 6 Oct 2023 13:07:09 +0200 Subject: [PATCH 11/17] Add yearly value conversion for fixed_costs --- src/oemof/tabular/datapackage/reading.py | 32 +++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/src/oemof/tabular/datapackage/reading.py b/src/oemof/tabular/datapackage/reading.py index 6163fef1..9d35e6c1 100644 --- a/src/oemof/tabular/datapackage/reading.py +++ b/src/oemof/tabular/datapackage/reading.py @@ -392,6 +392,7 @@ def find(n, d): pd.DatetimeIndex(i.values, freq=i.inferred_freq, name="timeindex") for i in period_data["periods"] ] + period_data["years"] = period_data["timeindex"].year.unique().values def create_periodic_values(values, periods_index): """ @@ -429,6 +430,18 @@ def create_periodic_values(values, periods_index): return periodic_values.tolist() + def create_yearly_values(values, years): + results = pd.Series() + for i in range(len(years) - 1): + diff = years[i + 1] - years[i] + period_results = pd.Series(repeat(values[i], diff)) + results = pd.concat([results, period_results]) + results = pd.concat([results, pd.Series(values[-1])]) + return results.tolist() + + + + facades = {} for r in package.resources: if all( @@ -461,7 +474,7 @@ def create_periodic_values(values, periods_index): if period_data and isinstance(v, list): # check if length of list equals number of periods if len(v) == len(period_data["periods"]): - if f in ["fixed_costs", "capacity_costs"]: + if f in ["capacity_costs"]: # special period parameters don't need to be # converted into timeseries facade[f] = v @@ -474,6 +487,23 @@ def create_periodic_values(values, periods_index): "aware, when using this feature!" ) warnings.warn(msg, UserWarning) + elif f in ["fixed_costs"]: + # special period parameter need to be + # converted into timeseries with value for each + # year + facade[f] = create_yearly_values( + v, period_data["years"] + ) + msg = ( + f"\nThe parameter '{f}' of a " + f"'{facade['type']}' facade is converted " + "into a yearly list. This might not be " + "possible for every parameter and lead to " + "ambiguous error messages.\nPlease be " + "aware, when using this feature!" + ) + warnings.warn(msg, UserWarning) + else: # create timeseries with periodic values facade[f] = create_periodic_values( From b26ba38e65c16a66d50011389d2b06e7847dc962 Mon Sep 17 00:00:00 2001 From: "Julian.Endres" Date: Wed, 11 Oct 2023 11:58:25 +0200 Subject: [PATCH 12/17] Remove false warning message --- src/oemof/tabular/datapackage/reading.py | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/oemof/tabular/datapackage/reading.py b/src/oemof/tabular/datapackage/reading.py index 9d35e6c1..7e481dda 100644 --- a/src/oemof/tabular/datapackage/reading.py +++ b/src/oemof/tabular/datapackage/reading.py @@ -478,15 +478,7 @@ def create_yearly_values(values, years): # special period parameters don't need to be # converted into timeseries facade[f] = v - msg = ( - f"\nThe parameter '{f}' of a " - f"'{facade['type']}' facade is converted " - "into a periodic list. This might not be " - "possible for every parameter and lead to " - "ambiguous error messages.\nPlease be " - "aware, when using this feature!" - ) - warnings.warn(msg, UserWarning) + continue elif f in ["fixed_costs"]: # special period parameter need to be # converted into timeseries with value for each From e80e8f5664696f78e0c97fe0abc0bfdd061c0152 Mon Sep 17 00:00:00 2001 From: "Julian.Endres" Date: Wed, 11 Oct 2023 11:59:49 +0200 Subject: [PATCH 13/17] Check for inequality --- src/oemof/tabular/datapackage/reading.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/oemof/tabular/datapackage/reading.py b/src/oemof/tabular/datapackage/reading.py index 7e481dda..77ea8a2d 100644 --- a/src/oemof/tabular/datapackage/reading.py +++ b/src/oemof/tabular/datapackage/reading.py @@ -413,9 +413,7 @@ def create_periodic_values(values, periods_index): List of periodic values. """ # check if length of list equals number of periods - if len(values) == len(periods_index): - pass - else: + if len(values) != len(periods_index): raise ValueError( "Length of values does not equal number of periods." ) From ec792237d681a29b0581710c8b904e523a682f5b Mon Sep 17 00:00:00 2001 From: "Julian.Endres" Date: Thu, 12 Oct 2023 17:57:40 +0200 Subject: [PATCH 14/17] Convert all value in list to float if decimal --- src/oemof/tabular/datapackage/reading.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/oemof/tabular/datapackage/reading.py b/src/oemof/tabular/datapackage/reading.py index 77ea8a2d..4699753b 100644 --- a/src/oemof/tabular/datapackage/reading.py +++ b/src/oemof/tabular/datapackage/reading.py @@ -437,9 +437,6 @@ def create_yearly_values(values, years): results = pd.concat([results, pd.Series(values[-1])]) return results.tolist() - - - facades = {} for r in package.resources: if all( @@ -475,7 +472,12 @@ def create_yearly_values(values, years): if f in ["capacity_costs"]: # special period parameters don't need to be # converted into timeseries - facade[f] = v + facade[f] = [ + float(vv) + if isinstance(vv, Decimal) + else vv + for vv in v + ] continue elif f in ["fixed_costs"]: # special period parameter need to be From f815548eed81ada1de4a345e87f44e0716d60f7b Mon Sep 17 00:00:00 2001 From: "Julian.Endres" Date: Mon, 16 Oct 2023 14:26:23 +0200 Subject: [PATCH 15/17] Use solph version >=0.5.1 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 111ebcbc..75452201 100644 --- a/setup.py +++ b/setup.py @@ -67,7 +67,7 @@ def read(*names, **kwargs): install_requires=[ "datapackage==1.5.1", "tableschema==1.7.4", # newer versions (v1.8.0 and up) fail! - "oemof.solph==0.5.1", + "oemof.solph>=0.5.1", "pandas>=0.22", "paramiko", "toml", From d3b59f0324c98acf6c0091c07d647be38a6b2488 Mon Sep 17 00:00:00 2001 From: "Julian.Endres" Date: Mon, 16 Oct 2023 15:56:31 +0200 Subject: [PATCH 16/17] Use solph version ==0.5.2dev0 --- setup.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 75452201..b88ee956 100644 --- a/setup.py +++ b/setup.py @@ -67,7 +67,8 @@ def read(*names, **kwargs): install_requires=[ "datapackage==1.5.1", "tableschema==1.7.4", # newer versions (v1.8.0 and up) fail! - "oemof.solph>=0.5.1", + # "oemof.solph>=0.5.1", + "oemof.solph==0.5.2dev0" "pandas>=0.22", "paramiko", "toml", From f8f0dbe2c565ddbf998d3b57c308fd0c1c6006c0 Mon Sep 17 00:00:00 2001 From: "Julian.Endres" Date: Mon, 16 Oct 2023 16:27:20 +0200 Subject: [PATCH 17/17] Fix typo --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index b88ee956..4f4c3bb0 100644 --- a/setup.py +++ b/setup.py @@ -68,7 +68,7 @@ def read(*names, **kwargs): "datapackage==1.5.1", "tableschema==1.7.4", # newer versions (v1.8.0 and up) fail! # "oemof.solph>=0.5.1", - "oemof.solph==0.5.2dev0" + "oemof.solph==0.5.2dev0", "pandas>=0.22", "paramiko", "toml",