diff --git a/.gitignore b/.gitignore index f63add8..54d8aa3 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,6 @@ __pycache__/ /tests/_files/tabular_datapackage_hack_a_thon/data/ /tests/_files/tabular_datapackage_hack_a_thon/datapackage.json /tests/_files/tabular_datapackage_mininmal_example/ +/tests/_files/tsam/* +/examples/industry/collections/* +/examples/industry/datapackage/* diff --git a/data_adapter_oemof/adapters.py b/data_adapter_oemof/adapters.py index 9f719a8..4c1e7b7 100644 --- a/data_adapter_oemof/adapters.py +++ b/data_adapter_oemof/adapters.py @@ -10,6 +10,7 @@ from oemof.tabular import facades from oemof.tabular._facade import Facade from oemof_industry.mimo_converter import MIMO +from oemof_industry.emission_constraint import CO2EmissionLimit from data_adapter_oemof import calculations @@ -35,6 +36,7 @@ class Adapter: Field(name="name", type=str), Field(name="region", type=str), Field(name="year", type=int), + Field(name="full_load_time_max", type=float), ) output_parameters = (Field(name="max", type=float), Field(name="min", type=float)) input_parameters = () @@ -158,7 +160,10 @@ def get_data(self, key, field_type: Optional[Type] = None): f"Using existing timeseries column '{timeseries_key}'." ) return timeseries_key - logger.warning(f"Could not find timeseries entry for mapped key '{key}'") + logger.warning( + f"For Process {self.process_name}" + f"Could not find timeseries entry for mapped key '{key}'" + ) return None # 2 Use defaults @@ -213,11 +218,12 @@ def get_busses(self) -> dict: bus_dict = {} for bus in bus_occurrences_in_fields: # emission_bus # 1. Check for existing mappings - try: - bus_dict[bus] = self.bus_map[self.__class__.__name__][bus] - continue - except KeyError: - pass + if self.bus_map: + try: + bus_dict[bus] = self.bus_map[self.__class__.__name__][bus] + continue + except KeyError: + pass # TODO: Make use of Parameter [stuct.csv]? # Do we need parameter specific Bus structure? Maybe for multiple in/output? @@ -236,6 +242,11 @@ def get_busses(self) -> dict: busses = struct["inputs"] if bus == "to_bus": busses = struct["outputs"] + if ( + self.__class__.type == "storage" + and struct["inputs"] == struct["outputs"] + ): + busses = struct["outputs"] if len(busses) != 1: raise MappingError( f"Could not map {bus} to default bus - too many options" @@ -326,25 +337,68 @@ def default_pre_mapping_calculations(self): """ calculations.normalize_activity_bonds(self) + calculations.process_availability_constant_to_full_load_time_max(self) def default_post_mapping_calculations(self, mapped_defaults): """ Does default calculations# - I. Decommissioning of existing Capacities - II. Rounding lifetime down to integers + I. Decommissioning of existing Capacities (processes _0) and add + `expandable = True` if process is expandable (_1, _2, not _0) + II. Reformatting of amount in case amount is not a number + a) Multiply timeseries by the repeoctiv yearly amount + b) Analogous to decommissioning of capacities + III. Rounding lifetime down to integers Returns ------- """ + if mapped_defaults["type"] == "mimo": + parameter_name = f"flow_share_max_{mapped_defaults['primary']}" + elif len(self.structure["outputs"]) == 0: + parameter_name = "input_parameters" + else: + parameter_name = "output_parameters" + # I: if self.process_name[-1] == "0": mapped_defaults = calculations.decommission( - process_name=self.process_name, adapter_dict=mapped_defaults + process_name=self.process_name, + adapter_dict=mapped_defaults, + column="capacity", + change_parameter=parameter_name, ) + elif self.process_name[-1] == "1" or self.process_name[-1] == "2": + mapped_defaults["expandable"] = True + elif "x2x_other_biogas_treatment" in self.process_name: + mapped_defaults["expandable"] = True + logging.warning( + "Setting capacity cost of x2x_other_biogas_treatment to 0 and " + "life time to 20 as this is missing in the data.") + mapped_defaults["capacity_cost"] = 0 + mapped_defaults["lifetime"] = 20 # II: + if "amount" in mapped_defaults.keys(): + # a) + if "profile" in mapped_defaults.keys(): + self.timeseries = calculations.adapt_profile_with_yearly_value( + profile=self.timeseries, + value=mapped_defaults["amount"] + ) + mapped_defaults["amount"] = 1 + + # b) + else: + mapped_defaults = calculations.decommission( + process_name=self.process_name, + adapter_dict=mapped_defaults, + column="amount", + change_parameter=parameter_name, + ) + + # III: if "lifetime" in mapped_defaults.keys(): mapped_defaults = calculations.floor_lifetime(mapped_defaults) @@ -420,6 +474,53 @@ def get_default_parameters( if self.get("carrier") == "carrier": defaults["carrier"] = self.get_busses()["bus"] + if self.get("amount") == None: + amount = 9999999999999 + logger.warning( + f"Adding parameter 'amount' with value {amount} to commodity " + f"{self.process_name}. \n " + f"This is beneficial if your commodity is functioning as " + f"shortage or unlimited import/source. " + f"Otherwise please add 'amount' to your commodity!" + ) + defaults["amount"] = amount + + return defaults + + +class CommodityGHGAdapter(CommodityAdapter): + """ + CommodityGHGAdapter + """ + + type = "commodity_ghg" + facade = facades.CommodityGHG + + def get_busses(self) -> dict: + bus_list = self.structure["outputs"] + bus_dict = {} + counter = 0 + for bus in bus_list: + if not bus.startswith("emi"): + bus_dict["bus"] = bus + elif bus.startswith("emi"): + bus_dict[f"emission_bus_{counter}"] = bus + counter += 1 + return bus_dict + + def get_default_parameters(self) -> dict: + defaults = super().get_default_parameters() + for key, value in self.data.items(): + if key.startswith("ef"): + # adapt to the naming convention in oemof.tabular commodityGHG facade: emission_factor_ + target_label = None + emission_bus_labels = [key for item, key in defaults.items() if item.startswith("emission_bus")] + for label in emission_bus_labels: + if label in key: + target_label = label + if target_label == None: + raise ValueError(f"Emission factor of {self.process_name} is named {key} but None of the emission buses matches: {emission_bus_labels}.") + defaults[f"emission_factor_{target_label}"] = value return defaults @@ -433,6 +534,44 @@ class ConversionAdapter(Adapter): facade = facades.Conversion +class ConversionGHGAdapter(Adapter): + """ + ConversionGHGAdapter + """ + + type = "conversion_ghg" + facade = facades.ConversionGHG + + def get_busses(self) -> dict: + def get_bus_from_struct(bus_list: list, bus_key: str) -> dict: + bus_dict = {} + counter = 0 + for bus in bus_list: + if not bus.startswith("emi"): + bus_dict[f"{bus_key}"] = bus + elif bus.startswith("emi"): + bus_dict[f"emission_bus_{counter}"] = bus + counter += 1 + return bus_dict + + return_bus_dict = get_bus_from_struct( + self.structure["inputs"], bus_key="from_bus" + ) | get_bus_from_struct(self.structure["outputs"], bus_key="to_bus") + + # check that from_bus and to_bus is defined + for key in ["from_bus", "to_bus"]: + if return_bus_dict.get(key) is None: + raise KeyError(f"{self.process_name} is missing {key}.") + return return_bus_dict + + def get_default_parameters(self) -> dict: + defaults = super().get_default_parameters() + for key, value in self.data.items(): + if key.startswith("ef"): + defaults[key.replace("ef", "emission_factor")] = value + return defaults + + class LoadAdapter(Adapter): """ LoadAdapter @@ -474,6 +613,44 @@ class VolatileAdapter(Adapter): facade = facades.Volatile +class EmissionConstraintAdapter(Adapter): + """ + EmissionConstraintAdapter + """ + + type = "co2_emission_limit" + facade = CO2EmissionLimit # oemof.industry facade - might be moved to oemof.tabular + extra_fields = Adapter.extra_fields + ( + Field(name="commodities", type=float), + ) + + def get_default_parameters(self) -> dict: + defaults = super().get_default_parameters() + del defaults["region"] + del defaults["name"] + del defaults["year"] + # reduce co2 limit by share of steel industry + defaults["co2_limit"] = [limit * self.data["steel_emission_share"] for + limit in defaults["co2_limit"]] + + # categorize commodities + commodities = {"co2_commodities": [], "ch4_commodities": [], + "n2o_commodities": [], "negative_co2_commodities": []} + inputs = self.structure["inputs"] + for i in inputs: + if "neg" in i and "co2" in i: + commodities["negative_co2_commodities"].append(i) + elif "co2" in i: + commodities["co2_commodities"].append(i) + elif "ch4" in i: + commodities["ch4_commodities"].append(i) + elif "n2o" in i: + commodities["n2o_commodities"].append(i) + # replace quotes with # to make a json.loads easier later + defaults["commodities"] = json.dumps(commodities).replace('"', "#") + return defaults + + class MIMOAdapter(Adapter): """ MIMOAdapter @@ -485,25 +662,19 @@ class MIMOAdapter(Adapter): Field(name="name", type=str), Field(name="region", type=str), Field(name="year", type=int), + Field(name="full_load_time_max", type=float), Field(name="groups", type=dict), + Field(name="lifetime", type=float), Field(name="capacity_cost", type=float), Field(name="capacity", type=float), Field(name="expandable", type=bool), Field(name="activity_bound_min", type=float), Field(name="activity_bound_max", type=float), Field(name="activity_bound_fix", type=float), + Field(name="primary", type=str), ) output_parameters = () - def default_pre_mapping_calculations(self): - """ - Mimo adapter specific pre calculations - Returns - ------- - - """ - pass - def get_default_parameters(self) -> dict: defaults = super().get_default_parameters() defaults["groups"] = self.get_groups() @@ -512,10 +683,13 @@ def get_default_parameters(self) -> dict: "emissions_factor_", "conversion_factor_", "flow_share_", + "ef_", ) for key, value in self.data.items(): for keyword in keywords: if key.startswith(keyword): + if key.startswith("ef"): + key = key.replace("ef", "emission_factor") defaults[key] = value return defaults @@ -524,6 +698,8 @@ def get_bus_from_struct(bus_list: list, prefix: str) -> dict: buses = {} counter = 0 for bus_group in bus_list: + if prefix == "to_bus_" and counter == 0: + buses["primary"] = bus_group if isinstance(bus_group, str): buses[f"{prefix}{counter}"] = bus_group counter += 1 diff --git a/data_adapter_oemof/build_datapackage.py b/data_adapter_oemof/build_datapackage.py index 28c65bf..4d7d0e3 100644 --- a/data_adapter_oemof/build_datapackage.py +++ b/data_adapter_oemof/build_datapackage.py @@ -1,4 +1,5 @@ import dataclasses +import logging import os import warnings from typing import Optional, Type @@ -11,10 +12,12 @@ from data_adapter_oemof.adapters import FACADE_ADAPTERS from data_adapter_oemof.adapters import Adapter as FacadeAdapter -from data_adapter_oemof.calculations import handle_nans +from data_adapter_oemof.calculations import handle_nans, reduce_data_frame from data_adapter_oemof.settings import BUS_MAP, PARAMETER_MAP, PROCESS_ADAPTER_MAP from data_adapter_oemof.utils import convert_mixed_types_to_same_length +logger = logging.getLogger() + # Define a function to aggregate differing values into a list def _listify_to_periodic(group_df) -> pd.Series: @@ -77,7 +80,6 @@ def _listify_to_periodic(group_df) -> pd.Series: unique_values[col] = group_df[col].iat[0][0] else: unique_values[col] = group_df[col].iat[0] - unique_values["name"] = "_".join(group_df.name) unique_values.drop("year") return unique_values @@ -95,6 +97,7 @@ class DataPackage: periods: pd.DataFrame() location_to_save_to: str = None tsa_parameters: pd.DataFrame = None + constraint_parameters: pd.DataFrame = None @staticmethod def __split_timeseries_into_years(parametrized_sequences): @@ -247,12 +250,22 @@ def save_datapackage_to_csv( sequences_path = os.path.join(location_to_save_to, "data", "sequences") periods_path = os.path.join(location_to_save_to, "data", "periods") tsam_path = os.path.join(location_to_save_to, "data", "tsam") + constraint_path = os.path.join(location_to_save_to, "data", "constraints") os.makedirs(elements_path, exist_ok=True) os.makedirs(sequences_path, exist_ok=True) os.makedirs(periods_path, exist_ok=True) os.makedirs(tsam_path, exist_ok=True) + + if self.constraint_parameters is not None: + os.makedirs(constraint_path, exist_ok=True) + self.constraint_parameters.to_csv( + os.path.join(constraint_path, "emission_constraint.csv"), + index=False, + sep=";", + ) + if not self.periods.empty: self.periods.to_csv( os.path.join( @@ -295,6 +308,12 @@ def save_datapackage_to_csv( field_names = [field["name"] for field in resource["schema"]["fields"]] resource["dialect"] = {"delimiter": ";"} if resource["name"] in self.foreign_keys.keys(): + # drop "primary", see mimo converter of oemof.industry for more information + self.foreign_keys[resource["name"]] = [ + item for item in self.foreign_keys[resource["name"]] if + item["fields"] != "primary" + ] + # update schema resource["schema"].update( {"foreignKeys": self.foreign_keys[resource["name"]]} ) @@ -450,6 +469,7 @@ def build_datapackage( parameter_map: Optional[dict] = PARAMETER_MAP, bus_map: Optional[dict] = BUS_MAP, location_to_save_to: str = None, + debug=False, ): """ Creating a Datapackage from the oemof_data_adapter that fits oemof.tabular Datapackages. @@ -473,6 +493,9 @@ def build_datapackage( ------- DataPackage + units : dict + keys: process names, values: dict containing parameters for + optimization as keys and units as values. """ def _reduce_lists(x): @@ -484,9 +507,12 @@ def _reduce_lists(x): parametrized_elements = {"bus": []} parametrized_sequences = {} foreign_keys = {} + constraint_parameters = None + units = {} # Iterate Elements for process_name, struct in adapter.structure.processes.items(): process_data = adapter.get_process(process_name) + units[process_name] = process_data.units timeseries = process_data.timeseries if isinstance(timeseries.columns, pd.MultiIndex): timeseries.columns = ( @@ -495,6 +521,9 @@ def _reduce_lists(x): + _reduce_lists(timeseries.columns.get_level_values(1)) ) facade_adapter_name: str = process_adapter_map[process_name] + logger.info( + f"Adaptering process {process_name} into adapter {facade_adapter_name}" + ) facade_adapter: Type[FacadeAdapter] = FACADE_ADAPTERS[facade_adapter_name] component_adapter: Optional[FacadeAdapter] = None components = [] @@ -527,9 +556,12 @@ def _reduce_lists(x): component_adapter, components ) - parametrized_elements[process_name] = pd.DataFrame(components) - if not timeseries.empty: - parametrized_sequences.update({process_name: timeseries}) + if "constraint" in process_name: + constraint_parameters = pd.DataFrame(components) + else: + parametrized_elements[process_name] = pd.DataFrame(components) + if not timeseries.empty: + parametrized_sequences.update({process_name: timeseries}) # Create Bus Element from all unique `busses` found in elements parametrized_elements["bus"] = pd.DataFrame( { @@ -540,6 +572,12 @@ def _reduce_lists(x): ) periods = cls.get_periods_from_parametrized_sequences(parametrized_sequences) + if debug: + periods = reduce_data_frame(data_frame=periods) + for key, value in parametrized_sequences.items(): + df_short = reduce_data_frame(data_frame=value) + parametrized_sequences.update({key: df_short}) + return cls( parametrized_elements=parametrized_elements, parametrized_sequences=parametrized_sequences, @@ -547,4 +585,5 @@ def _reduce_lists(x): foreign_keys=foreign_keys, periods=periods, location_to_save_to=location_to_save_to, - ) + constraint_parameters=constraint_parameters, + ), units diff --git a/data_adapter_oemof/calculations.py b/data_adapter_oemof/calculations.py index c190b60..3b3e7d3 100644 --- a/data_adapter_oemof/calculations.py +++ b/data_adapter_oemof/calculations.py @@ -1,6 +1,7 @@ import collections import logging import warnings +import json import numpy as np import pandas as pd @@ -44,7 +45,9 @@ def get_capacity_cost(overnight_cost, fixed_cost, lifetime, wacc): return annuity(overnight_cost, lifetime, wacc) + fixed_cost -def decommission(process_name, adapter_dict: dict) -> dict: +def decommission( + process_name, adapter_dict: dict, column: str = "capacity", max_column: str = "max", change_parameter: str = "output_parameters", +) -> dict: """ Takes adapter dictionary from adapters.py with mapped values. @@ -74,38 +77,86 @@ def decommission(process_name, adapter_dict: dict) -> dict: ------- """ - capacity_column = "capacity" - max_column = "max" # check if capacity column is there and if it has to be decommissioned - if capacity_column not in adapter_dict.keys(): + if column not in adapter_dict.keys(): logging.info( - f"Capacity missing for decommissioning " f"of Process `{process_name}`" + f"{column} missing for decommissioning " f"of Process `{process_name}`" ) return adapter_dict - if not isinstance(adapter_dict[capacity_column], list): + if not isinstance(adapter_dict[column], list): logging.info( - f"No capacity fading out that can be decommissioned" + f"No {column} fading out that can be decommissioned" f" for Process `{process_name}`." ) return adapter_dict # I: - if max_column not in adapter_dict["output_parameters"].keys(): - adapter_dict["output_parameters"][max_column] = adapter_dict[ - capacity_column - ] / np.max(adapter_dict[capacity_column]) - # II: + if change_parameter not in ["input_parameters", "output_parameters"]: + # this occurs e.g. for flow_share_max of mimo + # still max might be set in parameters + parameter = "output_parameters" else: - adapter_dict["output_parameters"][max_column] = multiply_two_lists( - adapter_dict["output_parameters"][max_column], adapter_dict[capacity_column] - ) / np.max(adapter_dict[capacity_column]) + parameter = change_parameter + if max_column not in adapter_dict[parameter].keys(): + max = list(adapter_dict[column] / np.nanmax(adapter_dict[column])) - adapter_dict[capacity_column] = np.max(adapter_dict[capacity_column]) + # II: + else: + max = list(multiply_two_lists( + adapter_dict[parameter][max_column], + adapter_dict[column] + ) / np.nanmax(adapter_dict[column])) + if change_parameter != parameter: + # drop max output_parameters, as max_column is saved in `change_parameter` + del adapter_dict[parameter][max_column] + + if change_parameter != parameter: + # e.g. flow_share_max_ + adapter_dict[change_parameter] = max + else: + # max must be extended to time series over all time steps of each + # period as output_parameters are not extended in oemof.tabular + column_name = [f"max_timeseries_{process_name}"] + timeseries = pd.DataFrame(columns=column_name) + for y in adapter_dict["year"]: + ts = pd.DataFrame(data=[1 for i in range(8760)], + columns=column_name, + index=pd.date_range(f"1/1/{y}", periods=8760, + freq="h"), + dtype="float64") + timeseries = ts.copy() if timeseries.empty else pd.concat( + [timeseries, ts]) + max_time_series = adapt_profile_with_yearly_value(profile=timeseries, + value=max) + + max_time_series = reduce_data_frame(max_time_series) + + adapter_dict[change_parameter][max_column] = list(max_time_series[column_name[0]].values) + adapter_dict[change_parameter] = json.dumps(adapter_dict[change_parameter]) + + # set `column` value to maximum value + adapter_dict[column] = np.nanmax(adapter_dict[column]) return adapter_dict +def adapt_profile_with_yearly_value(profile, value): + + # Map amount to years + years = sorted(profile.index.year.unique()) + values_mapped_to_years = dict(zip(years, value)) + + profile["value"] = profile.index.year.map(values_mapped_to_years) + + # Multiply profile with value + col_name = profile.columns[0] + profile["adjusted_ts"] = (profile[col_name] * profile["value"]) + profile.drop(columns=[col_name, "value"], inplace=True) + profile.rename(columns={"adjusted_ts": col_name}, inplace=True) + + return profile + def normalize_activity_bonds(adapter): """ Normalizes activity bonds in order to be used as min/max values @@ -137,6 +188,15 @@ def normalize_activity_bonds(adapter): return adapter +def process_availability_constant_to_full_load_time_max(adapter): + """ Calculate full load time max from availability constant.""" + if "availability_constant" in adapter.data.keys(): + availability_constant = adapter.data["availability_constant"] + if availability_constant > 1: # assumption: then the unit is % + availability_constant = availability_constant / 100 + adapter.data["full_load_time_max"] = 8760 * availability_constant + + def floor_lifetime(mapped_defaults): """ @@ -317,3 +377,15 @@ def find_and_replace_irrelevant_data(group_df: pd.DataFrame) -> pd.DataFrame: group_df = handle_min_max(group_df) return find_and_replace_irrelevant_data(group_df) + + +def reduce_data_frame(data_frame, steps=23): + """reduces `df` to less time steps per period""" + df = data_frame.copy() + df["ind"] = df.index + df["ind"] = df["ind"].apply( + lambda + x: True if x.month == 1 and x.day == 1 and x.hour <= steps else False + ) + df_reduced = df.loc[df["ind"] == 1].drop(columns=["ind"]) + return df_reduced diff --git a/data_adapter_oemof/settings.py b/data_adapter_oemof/settings.py index aea3add..3f93fa2 100644 --- a/data_adapter_oemof/settings.py +++ b/data_adapter_oemof/settings.py @@ -1,3 +1,4 @@ +import logging import os import pathlib from pathlib import Path @@ -36,3 +37,45 @@ Path(__file__).parent / "mappings" / "PROCESS_ADAPTER_MAP.yaml" ) BUS_MAP = load_yaml(Path(__file__).parent / "mappings" / "BUS_MAP.yaml") + + +class CustomFormatter(logging.Formatter): + """Logging colored formatter, adapted from https://stackoverflow.com/a/56944256/3638629""" + + grey = "\x1b[38;21m" + blue = "\x1b[38;5;39m" + yellow = "\x1b[38;5;226m" + red = "\x1b[38;5;196m" + bold_red = "\x1b[31;1m" + reset = "\x1b[0m" + green = "'\x1b[38;5;82m'" + + def __init__(self, fmt): + super().__init__() + self.fmt = fmt + self.FORMATS = { + logging.DEBUG: self.grey + self.fmt + self.reset, + logging.INFO: self.green + self.fmt + self.reset, + logging.WARNING: self.yellow + self.fmt + self.reset, + logging.ERROR: self.red + self.fmt + self.reset, + logging.CRITICAL: self.bold_red + self.fmt + self.reset, + } + + def format(self, record): + log_fmt = self.FORMATS.get(record.levelno) + formatter = logging.Formatter(log_fmt) + return formatter.format(record) + + +logger = logging.getLogger() +logger.setLevel(logging.INFO) + +console_handler = logging.StreamHandler() +console_handler.setLevel(logging.INFO) + +formatter = CustomFormatter("%(levelname)s: %(message)s") +console_handler.setFormatter(formatter) + +logger.addHandler(console_handler) + +# Initialize logging configuration diff --git a/examples/industry/collections/.gitkeep b/examples/industry/collections/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/examples/industry/data_adapter_industry.py b/examples/industry/data_adapter_industry.py index 356c3f6..39b3f9d 100644 --- a/examples/industry/data_adapter_industry.py +++ b/examples/industry/data_adapter_industry.py @@ -1,10 +1,11 @@ +import logging import pathlib import pandas as pd from data_adapter.databus import download_collection # noqa from data_adapter.preprocessing import Adapter # noqa: E402 from data_adapter.structure import Structure # noqa: E402 -from oemof.solph import Model +from oemof.solph import Model, processing from oemof.solph._energy_system import EnergySystem from oemof.solph.buses import Bus from oemof.tabular.datapackage import building # noqa F401 @@ -12,23 +13,51 @@ deserialize_constraints, deserialize_energy_system, ) -from oemof.tabular.facades import Commodity, Conversion, Excess, Load, Volatile +from oemof.tabular.facades import ( + Commodity, + Conversion, + Excess, + Load, + Volatile, + Storage, + ConversionGHG, + CommodityGHG, +) from oemof_industry.mimo_converter import MIMO from data_adapter_oemof.build_datapackage import DataPackage # noqa: E402 +logger = logging.getLogger() + EnergySystem.from_datapackage = classmethod(deserialize_energy_system) Model.add_constraints_from_datapackage = deserialize_constraints -# -# Download Collection -# Due to Nan values in "ind_scalar" type column datapackage.json must be adjusted after download + +DEBUG = True # set to False for full run. DEBUG reduces to 5 time steps per period + +""" +Download Collection + +Some datasets must be adjusted due to wrong formatting in comments + - x2x_import_hydrogen_renewable + - x2x_p2gas_aec_1 + - x2x_p2gas_pemec_1 + - x2x_x2gas_mpyr_1 + + +Also adjust Modelstructure: + Delete lines: + - helper sinks in HelperO1 + - red marked lines in ProcessO1 (not yet uploaded or deleted data) +""" # from data_adapter.databus import download_collection +# # download_collection( -# "https://databus.openenergyplatform.org/felixmaur/collections/steel_industry_test/" -# ) +# "https://databus.openenergyplatform.org/felixmaur/collections/steel_industry_test/" +# ) +logger.info("Reading Structure") structure = Structure( "SEDOS_Modellstruktur", process_sheet="Processes_O1", @@ -41,7 +70,9 @@ structure=structure, ) -# create dicitonary with all found in and outputs +logger.info("Building Adapter Map") + +# create dictionary with all found in- and outputs process_adapter_map = pd.concat( [ pd.read_excel( @@ -59,9 +90,8 @@ ] ).to_dict(orient="dict")["facade adapter (oemof)"] - parameter_map = { - "DEFAULT": {}, + "DEFAULT": {"interest_rate": "wacc"}, "StorageAdapter": { "capacity_potential": "expansion_limit", "capacity": "installed_capacity", @@ -69,23 +99,213 @@ "inflow_conversion_factor": "input_ratio", "outflow_conversion_factor": "output_ratio", }, - "MIMOAdapter": { - "capacity_cost": "cost_fix_capacity_w", - "capacity": "capacity_w_resid", - "expandable": "capacity_w_abs_new_max", + "CommodityAdapter": {}, + "x2x_import_biogas": {"amount": "capacity_w_inst_0", "marginal_cost": "cost_var_e"}, + "x2x_import_coal": {"amount": "capacity_w_inst_0", "marginal_cost": "cost_var_e"}, + "x2x_import_hydrogen_renewable": { + "amount": "capacity_w_inst_0", + "marginal_cost": "cost_var_e", + }, + "x2x_other_biogas_treatment": {"marginal_cost": "cost_var_e"}, + "ind_source_steel_scrap_iron": {"amount": "capacity_w_inst_0"}, + "ind_steel_sinter_0": {"capacity": "capacity_w_inst_0"}, + "ind_steel_coke_plant_0": {"capacity": "capacity_e_inst_0"}, + "ind_steel_blafu_0": {"capacity": "capacity_w_inst_0"}, + "ind_steel_oxyfu_0": {"capacity": "capacity_w_inst_0"}, + "ind_steel_casting_0": {"capacity": "capacity_w_inst_0"}, + "ind_steel_elefu_0": {"capacity": "capacity_w_inst_0"}, + "x2x_delivery_methane_pipeline_0": { + "capacity": "capacity_p_max", + "marginal_cost": "cost_var_p", + }, + "x2x_x2gas_sr_syngas_0": { + "capacity": "capacity_p_inst", + "capacity_cost": "cost_inv_p", + "fixed_costs": "cost_fix_p", + }, + "ind_steel_coke_plant_1": { + "capacity_potential": "capacity_e_abs_new_max", + "capacity_cost": "cost_inv_e", + "fixed_costs": "cost_fix_e", + "marginal_cost": "cost_var_e", + }, + "ind_steel_sinter_1": { + "capacity_potential": "capacity_w_abs_new_max", + "capacity_cost": "cost_inv_w", + "fixed_costs": "cost_fix_w", + "marginal_cost": "cost_var_w", + }, + "ind_steel_blafu_1": { + "capacity_potential": "capacity_w_abs_new_max", + "capacity_cost": "cost_inv_w", + "fixed_costs": "cost_fix_w", + "marginal_cost": "cost_var_w", + }, + "ind_steel_blafu_cc_1": { + "capacity_potential": "capacity_w_abs_new_max", + "capacity_cost": "cost_inv_w", + "fixed_costs": "cost_fix_w", + "marginal_cost": "cost_var_w", + }, + "ind_steel_oxyfu_1": { + "capacity_potential": "capacity_w_abs_new_max", + "capacity_cost": "cost_inv_w", + "fixed_costs": "cost_fix_w", + "marginal_cost": "cost_var_w", + # "max":"availability_constant" + }, + "ind_steel_casting_1": { + "capacity_potential": "capacity_w_abs_new_max", + "capacity_cost": "cost_inv_w", + "fixed_costs": "cost_fix_w", + "marginal_cost": "cost_var_w", + # "max":"availability_constant" + }, + "ind_steel_elefu_1": { + "capacity_potential": "capacity_w_abs_new_max", + "capacity_cost": "cost_inv_w", + "fixed_costs": "cost_fix_w", + "marginal_cost": "cost_var_w", + # "max":"availability_constant" + }, + "ind_steel_dirred_1": { + "capacity_potential": "capacity_w_abs_new_max", + "capacity_cost": "cost_inv_w", + "fixed_costs": "cost_fix_w", + "marginal_cost": "cost_var_w", + # "max":"availability_constant" + }, + "ind_steel_sponge_1": { + "capacity_potential": "capacity_w_abs_new_max", + "capacity_cost": "cost_inv_w", + "fixed_costs": "cost_fix_w", + "marginal_cost": "cost_var_w", + # "max":"availability_constant" + }, + "ind_steel_pellet_1": { + "capacity_potential": "capacity_w_abs_new_max", + "capacity_cost": "cost_inv_w", + "fixed_costs": "cost_fix_w", + "marginal_cost": "cost_var_w", + # "max":"availability_constant" + }, + "ind_steel_hyddri_1": { + "capacity_potential": "capacity_w_abs_new_max", + "capacity_cost": "cost_inv_w", + "fixed_costs": "cost_fix_w", + "marginal_cost": "cost_var_w", + # "max":"availability_constant" + }, + "x2x_delivery_hydrogen_pipeline_retrofit_1": { + "capacity_potential": "capacity_p_max", + "capacity_cost": "cost_inv_p", + "fixed_costs": "cost_fix_p", + "marginal_cost": "cost_var_p", + }, + "x2x_delivery_hydrogen_pipeline_new_1": { + "capacity_cost": "cost_inv_p", + "fixed_costs": "cost_fix_p", + }, + "x2x_g2p_pemfc_ls_1": { + "capacity_cost": "cost_inv_p", + "fixed_costs": "cost_fix_p", + }, + "x2x_g2p_sofc_ls_1": { + "capacity_cost": "cost_inv_p", + "fixed_costs": "cost_fix_p", + }, + "x2x_other_dac_ht_1": { + "marginal_cost": "cost_var_w", + "capacity_cost": "cost_inv_w", + "fixed_costs": "cost_fix_w", + }, + "x2x_other_dac_lt_1": { + "capacity_cost": "cost_inv_w", + "fixed_costs": "cost_fix_w", + }, + "x2x_p2gas_aec_1": { + "capacity_cost": "cost_inv_w", + "fixed_costs": "cost_fix_w", + }, + "x2x_p2gas_pemec_1": { + "capacity_cost": "cost_inv_w", + "fixed_costs": "cost_fix_w", + }, + "x2x_p2gas_biom_1": { + "capacity_cost": "cost_inv_w", + "fixed_costs": "cost_fix_w", + }, + "x2x_p2gas_sabm_1": { + "capacity_cost": "cost_inv_w", + "fixed_costs": "cost_fix_w", + }, + "x2x_p2gas_soec_1": { + "capacity_cost": "cost_inv_w", + "fixed_costs": "cost_fix_w", + }, + "x2x_x2gas_mpyr_1": { + "capacity_cost": "cost_inv_p", + "fixed_costs": "cost_fix_p", + "marginal_cost": "cost_var_e", + }, + "x2x_x2gas_sr_syngas_1": { + "capacity_cost": "cost_inv_p", + "fixed_costs": "cost_fix_p", + }, + "x2x_storage_hydrogen_lohc_1": { + "efficiency": "efficiency_sto_in", + "fixed_costs": "cost_fix_w", + "loss_rate": "sto_self_discharge", + "storage_capacity_cost": "cost_inv_e", + "fixed_costs": "cost_fix_p", + "marginal_cost": "cost_var_e", + }, + "x2x_storage_hydrogen_new_1": { + "efficiency": "efficiency_sto_in", + "loss_rate": "sto_self_discharge", + "storage_capacity_cost": "cost_inv_e", + "fixed_costs": "cost_fix_w", + "fixed_costs": "cost_fix_p", + "marginal_cost": "cost_var_e", + "capacity_capacity_potential": "capacity_e_max", + }, + "x2x_storage_hydrogen_retrofit_1": { + "efficiency": "efficiency_sto_in", + "fixed_costs": "cost_fix_p", + "loss_rate": "sto_self_discharge", + "storage_capacity_cost": "cost_inv_e", + "fixed_costs": "cost_fix_p", + "marginal_cost": "cost_var_e", + "capacity_capacity_potential": "capacity_e_max", + "storage_capacity": "capacity_e_inst", + }, + "x2x_storage_methane_0": { + "efficiency": "efficiency_sto_in", + "fixed_costs": "cost_fix_p", + "loss_rate": "sto_self_discharge", + "storage_capacity_cost": "cost_inv_e", + "fixed_costs": "cost_fix_p", + "marginal_cost": "cost_var_e", + "capacity_capacity_potential": "capacity_e_max", + "storage_capacity": "capacity_e_inst", + }, + "helper_sink_exo_steel": { + "profile": "demand_timeseries_fixed", + "amount": "demand_annual", }, - "modex_tech_wind_turbine_onshore": {"profile": "onshore"}, } - +logger.info("Building datapackage...") dp = DataPackage.build_datapackage( adapter=adapter, process_adapter_map=process_adapter_map, parameter_map=parameter_map, + debug=DEBUG, # set DEBUG to False for full run. DEBUG reduces to 5 time steps per period ) datapackage_path = pathlib.Path(__file__).parent / "datapackage" dp.save_datapackage_to_csv(str(datapackage_path)) +logger.info("Building EnergySystem") es = EnergySystem.from_datapackage( path="datapackage/datapackage.json", typemap={ @@ -96,8 +316,18 @@ "load": Load, "volatile": Volatile, "mimo": MIMO, + "storage": Storage, + "conversion_ghg": ConversionGHG, + "commodity_ghg": CommodityGHG, }, ) +logger.info("Building Model...") m = Model(es) -m.solve() +logger.info("Solving Model...") +m.solve(solver="cbc") +logger.warning(m.solver_results["Solver"][0]["Termination condition"]) +print(m.solver_results["Solver"][0]["Termination condition"]) +logger.info("Reding Results") +results = processing.results(m) +logger.info("Writing Results and Goodbye :)") diff --git a/examples/industry/datapackage/.gitkeep b/examples/industry/datapackage/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/examples/industry/structures/SEDOS_Modellstruktur_sh_test.xlsx b/examples/industry/structures/SEDOS_Modellstruktur_sh_test.xlsx new file mode 100755 index 0000000..c3d8367 Binary files /dev/null and b/examples/industry/structures/SEDOS_Modellstruktur_sh_test.xlsx differ diff --git a/poetry.lock b/poetry.lock index e201d35..6529c9f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -32,38 +32,38 @@ tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "p [[package]] name = "bcrypt" -version = "4.1.3" +version = "4.2.0" description = "Modern password hashing for your software and your servers" optional = false python-versions = ">=3.7" files = [ - {file = "bcrypt-4.1.3-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:48429c83292b57bf4af6ab75809f8f4daf52aa5d480632e53707805cc1ce9b74"}, - {file = "bcrypt-4.1.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a8bea4c152b91fd8319fef4c6a790da5c07840421c2b785084989bf8bbb7455"}, - {file = "bcrypt-4.1.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d3b317050a9a711a5c7214bf04e28333cf528e0ed0ec9a4e55ba628d0f07c1a"}, - {file = "bcrypt-4.1.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:094fd31e08c2b102a14880ee5b3d09913ecf334cd604af27e1013c76831f7b05"}, - {file = "bcrypt-4.1.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:4fb253d65da30d9269e0a6f4b0de32bd657a0208a6f4e43d3e645774fb5457f3"}, - {file = "bcrypt-4.1.3-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:193bb49eeeb9c1e2db9ba65d09dc6384edd5608d9d672b4125e9320af9153a15"}, - {file = "bcrypt-4.1.3-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:8cbb119267068c2581ae38790e0d1fbae65d0725247a930fc9900c285d95725d"}, - {file = "bcrypt-4.1.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:6cac78a8d42f9d120b3987f82252bdbeb7e6e900a5e1ba37f6be6fe4e3848286"}, - {file = "bcrypt-4.1.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:01746eb2c4299dd0ae1670234bf77704f581dd72cc180f444bfe74eb80495b64"}, - {file = "bcrypt-4.1.3-cp37-abi3-win32.whl", hash = "sha256:037c5bf7c196a63dcce75545c8874610c600809d5d82c305dd327cd4969995bf"}, - {file = "bcrypt-4.1.3-cp37-abi3-win_amd64.whl", hash = "sha256:8a893d192dfb7c8e883c4576813bf18bb9d59e2cfd88b68b725990f033f1b978"}, - {file = "bcrypt-4.1.3-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:0d4cf6ef1525f79255ef048b3489602868c47aea61f375377f0d00514fe4a78c"}, - {file = "bcrypt-4.1.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5698ce5292a4e4b9e5861f7e53b1d89242ad39d54c3da451a93cac17b61921a"}, - {file = "bcrypt-4.1.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec3c2e1ca3e5c4b9edb94290b356d082b721f3f50758bce7cce11d8a7c89ce84"}, - {file = "bcrypt-4.1.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:3a5be252fef513363fe281bafc596c31b552cf81d04c5085bc5dac29670faa08"}, - {file = "bcrypt-4.1.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:5f7cd3399fbc4ec290378b541b0cf3d4398e4737a65d0f938c7c0f9d5e686611"}, - {file = "bcrypt-4.1.3-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:c4c8d9b3e97209dd7111bf726e79f638ad9224b4691d1c7cfefa571a09b1b2d6"}, - {file = "bcrypt-4.1.3-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:31adb9cbb8737a581a843e13df22ffb7c84638342de3708a98d5c986770f2834"}, - {file = "bcrypt-4.1.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:551b320396e1d05e49cc18dd77d970accd52b322441628aca04801bbd1d52a73"}, - {file = "bcrypt-4.1.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6717543d2c110a155e6821ce5670c1f512f602eabb77dba95717ca76af79867d"}, - {file = "bcrypt-4.1.3-cp39-abi3-win32.whl", hash = "sha256:6004f5229b50f8493c49232b8e75726b568535fd300e5039e255d919fc3a07f2"}, - {file = "bcrypt-4.1.3-cp39-abi3-win_amd64.whl", hash = "sha256:2505b54afb074627111b5a8dc9b6ae69d0f01fea65c2fcaea403448c503d3991"}, - {file = "bcrypt-4.1.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:cb9c707c10bddaf9e5ba7cdb769f3e889e60b7d4fea22834b261f51ca2b89fed"}, - {file = "bcrypt-4.1.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9f8ea645eb94fb6e7bea0cf4ba121c07a3a182ac52876493870033141aa687bc"}, - {file = "bcrypt-4.1.3-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:f44a97780677e7ac0ca393bd7982b19dbbd8d7228c1afe10b128fd9550eef5f1"}, - {file = "bcrypt-4.1.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d84702adb8f2798d813b17d8187d27076cca3cd52fe3686bb07a9083930ce650"}, - {file = "bcrypt-4.1.3.tar.gz", hash = "sha256:2ee15dd749f5952fe3f0430d0ff6b74082e159c50332a1413d51b5689cf06623"}, + {file = "bcrypt-4.2.0-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:096a15d26ed6ce37a14c1ac1e48119660f21b24cba457f160a4b830f3fe6b5cb"}, + {file = "bcrypt-4.2.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c02d944ca89d9b1922ceb8a46460dd17df1ba37ab66feac4870f6862a1533c00"}, + {file = "bcrypt-4.2.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d84cf6d877918620b687b8fd1bf7781d11e8a0998f576c7aa939776b512b98d"}, + {file = "bcrypt-4.2.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:1bb429fedbe0249465cdd85a58e8376f31bb315e484f16e68ca4c786dcc04291"}, + {file = "bcrypt-4.2.0-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:655ea221910bcac76ea08aaa76df427ef8625f92e55a8ee44fbf7753dbabb328"}, + {file = "bcrypt-4.2.0-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:1ee38e858bf5d0287c39b7a1fc59eec64bbf880c7d504d3a06a96c16e14058e7"}, + {file = "bcrypt-4.2.0-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:0da52759f7f30e83f1e30a888d9163a81353ef224d82dc58eb5bb52efcabc399"}, + {file = "bcrypt-4.2.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:3698393a1b1f1fd5714524193849d0c6d524d33523acca37cd28f02899285060"}, + {file = "bcrypt-4.2.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:762a2c5fb35f89606a9fde5e51392dad0cd1ab7ae64149a8b935fe8d79dd5ed7"}, + {file = "bcrypt-4.2.0-cp37-abi3-win32.whl", hash = "sha256:5a1e8aa9b28ae28020a3ac4b053117fb51c57a010b9f969603ed885f23841458"}, + {file = "bcrypt-4.2.0-cp37-abi3-win_amd64.whl", hash = "sha256:8f6ede91359e5df88d1f5c1ef47428a4420136f3ce97763e31b86dd8280fbdf5"}, + {file = "bcrypt-4.2.0-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:c52aac18ea1f4a4f65963ea4f9530c306b56ccd0c6f8c8da0c06976e34a6e841"}, + {file = "bcrypt-4.2.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3bbbfb2734f0e4f37c5136130405332640a1e46e6b23e000eeff2ba8d005da68"}, + {file = "bcrypt-4.2.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3413bd60460f76097ee2e0a493ccebe4a7601918219c02f503984f0a7ee0aebe"}, + {file = "bcrypt-4.2.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:8d7bb9c42801035e61c109c345a28ed7e84426ae4865511eb82e913df18f58c2"}, + {file = "bcrypt-4.2.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3d3a6d28cb2305b43feac298774b997e372e56c7c7afd90a12b3dc49b189151c"}, + {file = "bcrypt-4.2.0-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:9c1c4ad86351339c5f320ca372dfba6cb6beb25e8efc659bedd918d921956bae"}, + {file = "bcrypt-4.2.0-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:27fe0f57bb5573104b5a6de5e4153c60814c711b29364c10a75a54bb6d7ff48d"}, + {file = "bcrypt-4.2.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:8ac68872c82f1add6a20bd489870c71b00ebacd2e9134a8aa3f98a0052ab4b0e"}, + {file = "bcrypt-4.2.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:cb2a8ec2bc07d3553ccebf0746bbf3d19426d1c6d1adbd4fa48925f66af7b9e8"}, + {file = "bcrypt-4.2.0-cp39-abi3-win32.whl", hash = "sha256:77800b7147c9dc905db1cba26abe31e504d8247ac73580b4aa179f98e6608f34"}, + {file = "bcrypt-4.2.0-cp39-abi3-win_amd64.whl", hash = "sha256:61ed14326ee023917ecd093ee6ef422a72f3aec6f07e21ea5f10622b735538a9"}, + {file = "bcrypt-4.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:39e1d30c7233cfc54f5c3f2c825156fe044efdd3e0b9d309512cc514a263ec2a"}, + {file = "bcrypt-4.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f4f4acf526fcd1c34e7ce851147deedd4e26e6402369304220250598b26448db"}, + {file = "bcrypt-4.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:1ff39b78a52cf03fdf902635e4c81e544714861ba3f0efc56558979dd4f09170"}, + {file = "bcrypt-4.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:373db9abe198e8e2c70d12b479464e0d5092cc122b20ec504097b5f2297ed184"}, + {file = "bcrypt-4.2.0.tar.gz", hash = "sha256:cf69eaf5185fd58f268f805b505ce31f9b9fc2d64b376642164e9244540c1221"}, ] [package.extras] @@ -183,13 +183,13 @@ files = [ [[package]] name = "certifi" -version = "2024.6.2" +version = "2024.7.4" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.6.2-py3-none-any.whl", hash = "sha256:ddc6c8ce995e6987e7faf5e3f1b02b302836a0e5d98ece18392cb1a36c72ad56"}, - {file = "certifi-2024.6.2.tar.gz", hash = "sha256:3cd43f1c6fa7dedc5899d69d3ad0398fd018ad1a17fba83ddaf78aa46c747516"}, + {file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"}, + {file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"}, ] [[package]] @@ -463,43 +463,38 @@ toml = ["tomli"] [[package]] name = "cryptography" -version = "42.0.8" +version = "43.0.0" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:81d8a521705787afe7a18d5bfb47ea9d9cc068206270aad0b96a725022e18d2e"}, - {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:961e61cefdcb06e0c6d7e3a1b22ebe8b996eb2bf50614e89384be54c48c6b63d"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3ec3672626e1b9e55afd0df6d774ff0e953452886e06e0f1eb7eb0c832e8902"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e599b53fd95357d92304510fb7bda8523ed1f79ca98dce2f43c115950aa78801"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5226d5d21ab681f432a9c1cf8b658c0cb02533eece706b155e5fbd8a0cdd3949"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6b7c4f03ce01afd3b76cf69a5455caa9cfa3de8c8f493e0d3ab7d20611c8dae9"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:2346b911eb349ab547076f47f2e035fc8ff2c02380a7cbbf8d87114fa0f1c583"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad803773e9df0b92e0a817d22fd8a3675493f690b96130a5e24f1b8fabbea9c7"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2f66d9cd9147ee495a8374a45ca445819f8929a3efcd2e3df6428e46c3cbb10b"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d45b940883a03e19e944456a558b67a41160e367a719833c53de6911cabba2b7"}, - {file = "cryptography-42.0.8-cp37-abi3-win32.whl", hash = "sha256:a0c5b2b0585b6af82d7e385f55a8bc568abff8923af147ee3c07bd8b42cda8b2"}, - {file = "cryptography-42.0.8-cp37-abi3-win_amd64.whl", hash = "sha256:57080dee41209e556a9a4ce60d229244f7a66ef52750f813bfbe18959770cfba"}, - {file = "cryptography-42.0.8-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:dea567d1b0e8bc5764b9443858b673b734100c2871dc93163f58c46a97a83d28"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4783183f7cb757b73b2ae9aed6599b96338eb957233c58ca8f49a49cc32fd5e"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0608251135d0e03111152e41f0cc2392d1e74e35703960d4190b2e0f4ca9c70"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:dc0fdf6787f37b1c6b08e6dfc892d9d068b5bdb671198c72072828b80bd5fe4c"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:9c0c1716c8447ee7dbf08d6db2e5c41c688544c61074b54fc4564196f55c25a7"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fff12c88a672ab9c9c1cf7b0c80e3ad9e2ebd9d828d955c126be4fd3e5578c9e"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cafb92b2bc622cd1aa6a1dce4b93307792633f4c5fe1f46c6b97cf67073ec961"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:31f721658a29331f895a5a54e7e82075554ccfb8b163a18719d342f5ffe5ecb1"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b297f90c5723d04bcc8265fc2a0f86d4ea2e0f7ab4b6994459548d3a6b992a14"}, - {file = "cryptography-42.0.8-cp39-abi3-win32.whl", hash = "sha256:2f88d197e66c65be5e42cd72e5c18afbfae3f741742070e3019ac8f4ac57262c"}, - {file = "cryptography-42.0.8-cp39-abi3-win_amd64.whl", hash = "sha256:fa76fbb7596cc5839320000cdd5d0955313696d9511debab7ee7278fc8b5c84a"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ba4f0a211697362e89ad822e667d8d340b4d8d55fae72cdd619389fb5912eefe"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:81884c4d096c272f00aeb1f11cf62ccd39763581645b0812e99a91505fa48e0c"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c9bb2ae11bfbab395bdd072985abde58ea9860ed84e59dbc0463a5d0159f5b71"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7016f837e15b0a1c119d27ecd89b3515f01f90a8615ed5e9427e30d9cdbfed3d"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5a94eccb2a81a309806027e1670a358b99b8fe8bfe9f8d329f27d72c094dde8c"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dec9b018df185f08483f294cae6ccac29e7a6e0678996587363dc352dc65c842"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:343728aac38decfdeecf55ecab3264b015be68fc2816ca800db649607aeee648"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:013629ae70b40af70c9a7a5db40abe5d9054e6f4380e50ce769947b73bf3caad"}, - {file = "cryptography-42.0.8.tar.gz", hash = "sha256:8d09d05439ce7baa8e9e95b07ec5b6c886f548deb7e0f69ef25f64b3bce842f2"}, + {file = "cryptography-43.0.0-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:64c3f16e2a4fc51c0d06af28441881f98c5d91009b8caaff40cf3548089e9c74"}, + {file = "cryptography-43.0.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3dcdedae5c7710b9f97ac6bba7e1052b95c7083c9d0e9df96e02a1932e777895"}, + {file = "cryptography-43.0.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d9a1eca329405219b605fac09ecfc09ac09e595d6def650a437523fcd08dd22"}, + {file = "cryptography-43.0.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ea9e57f8ea880eeea38ab5abf9fbe39f923544d7884228ec67d666abd60f5a47"}, + {file = "cryptography-43.0.0-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:9a8d6802e0825767476f62aafed40532bd435e8a5f7d23bd8b4f5fd04cc80ecf"}, + {file = "cryptography-43.0.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:cc70b4b581f28d0a254d006f26949245e3657d40d8857066c2ae22a61222ef55"}, + {file = "cryptography-43.0.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:4a997df8c1c2aae1e1e5ac49c2e4f610ad037fc5a3aadc7b64e39dea42249431"}, + {file = "cryptography-43.0.0-cp37-abi3-win32.whl", hash = "sha256:6e2b11c55d260d03a8cf29ac9b5e0608d35f08077d8c087be96287f43af3ccdc"}, + {file = "cryptography-43.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:31e44a986ceccec3d0498e16f3d27b2ee5fdf69ce2ab89b52eaad1d2f33d8778"}, + {file = "cryptography-43.0.0-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:7b3f5fe74a5ca32d4d0f302ffe6680fcc5c28f8ef0dc0ae8f40c0f3a1b4fca66"}, + {file = "cryptography-43.0.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac1955ce000cb29ab40def14fd1bbfa7af2017cca696ee696925615cafd0dce5"}, + {file = "cryptography-43.0.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:299d3da8e00b7e2b54bb02ef58d73cd5f55fb31f33ebbf33bd00d9aa6807df7e"}, + {file = "cryptography-43.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ee0c405832ade84d4de74b9029bedb7b31200600fa524d218fc29bfa371e97f5"}, + {file = "cryptography-43.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:cb013933d4c127349b3948aa8aaf2f12c0353ad0eccd715ca789c8a0f671646f"}, + {file = "cryptography-43.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:fdcb265de28585de5b859ae13e3846a8e805268a823a12a4da2597f1f5afc9f0"}, + {file = "cryptography-43.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:2905ccf93a8a2a416f3ec01b1a7911c3fe4073ef35640e7ee5296754e30b762b"}, + {file = "cryptography-43.0.0-cp39-abi3-win32.whl", hash = "sha256:47ca71115e545954e6c1d207dd13461ab81f4eccfcb1345eac874828b5e3eaaf"}, + {file = "cryptography-43.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:0663585d02f76929792470451a5ba64424acc3cd5227b03921dab0e2f27b1709"}, + {file = "cryptography-43.0.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2c6d112bf61c5ef44042c253e4859b3cbbb50df2f78fa8fae6747a7814484a70"}, + {file = "cryptography-43.0.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:844b6d608374e7d08f4f6e6f9f7b951f9256db41421917dfb2d003dde4cd6b66"}, + {file = "cryptography-43.0.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:51956cf8730665e2bdf8ddb8da0056f699c1a5715648c1b0144670c1ba00b48f"}, + {file = "cryptography-43.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:aae4d918f6b180a8ab8bf6511a419473d107df4dbb4225c7b48c5c9602c38c7f"}, + {file = "cryptography-43.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:232ce02943a579095a339ac4b390fbbe97f5b5d5d107f8a08260ea2768be8cc2"}, + {file = "cryptography-43.0.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:5bcb8a5620008a8034d39bce21dc3e23735dfdb6a33a06974739bfa04f853947"}, + {file = "cryptography-43.0.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:08a24a7070b2b6804c1940ff0f910ff728932a9d0e80e7814234269f9d46d069"}, + {file = "cryptography-43.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:e9c5266c432a1e23738d178e51c2c7a5e2ddf790f248be939448c0ba2021f9d1"}, + {file = "cryptography-43.0.0.tar.gz", hash = "sha256:b88075ada2d51aa9f18283532c9f60e72170041bba88d7f37e49cbb10275299e"}, ] [package.dependencies] @@ -512,12 +507,12 @@ nox = ["nox"] pep8test = ["check-sdist", "click", "mypy", "ruff"] sdist = ["build"] ssh = ["bcrypt (>=3.1.5)"] -test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] +test = ["certifi", "cryptography-vectors (==43.0.0)", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] test-randomorder = ["pytest-randomly"] [[package]] name = "data-adapter" -version = "0.22.0" +version = "0.21.0" description = "Provides general functionality for other data adapters" optional = false python-versions = ">=3.8.1,<4.0.0" @@ -536,8 +531,8 @@ units = "^0.7" [package.source] type = "git" url = "https://git@github.com/sedos-project/data_adapter" -reference = "main" -resolved_reference = "6c2dc303b9f4fb5d79a38f856e50950ee6df100a" +reference = "dev" +resolved_reference = "661818f3bfd8cd5bca822fd794b183a40b638640" [[package]] name = "datapackage" @@ -603,13 +598,13 @@ files = [ [[package]] name = "exceptiongroup" -version = "1.2.1" +version = "1.2.2" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.2.1-py3-none-any.whl", hash = "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad"}, - {file = "exceptiongroup-1.2.1.tar.gz", hash = "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16"}, + {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, + {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, ] [package.extras] @@ -764,52 +759,62 @@ test = ["objgraph", "psutil"] [[package]] name = "highspy" -version = "1.7.1" +version = "1.7.2" description = "A thin set of pybind11 wrappers to HiGHS" optional = false python-versions = ">=3.8" files = [ - {file = "highspy-1.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc9f0d970859451777f02438dd7235f0b70ba222cc7707d81218060949c18769"}, - {file = "highspy-1.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:bc050142a8c1070f3c2f228082e3c2ec9b245de06bd3283219161a46e056021e"}, - {file = "highspy-1.7.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:78286d334e3108e4d59adaa519609676d06c0d57883da968308792836ca6c598"}, - {file = "highspy-1.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7bcffc0945c51ec5752afd2876e71c7186427fdcf5e014773aa457b8c9450d0"}, - {file = "highspy-1.7.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6ada0f5bb3a7cfde3b4299d74e9289e3a1243dbc1c1f67fe5ebde3fff3642a2f"}, - {file = "highspy-1.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:224d1bb36206f45f5611998dad197e9dd90c0e92269ba6212949f7485b6976a7"}, - {file = "highspy-1.7.1-cp310-cp310-win32.whl", hash = "sha256:8cf067e0fab24eb850ace73462b03177c5d669af638314c659c41ae6eb445007"}, - {file = "highspy-1.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:995ed5debea798e57260875a1958e251cf35260cbf184d346511c90ca5a7e2d8"}, - {file = "highspy-1.7.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b921c73c26ec835f0c0ade3174fe8012e4025ec67def9fb431723f83939f35ca"}, - {file = "highspy-1.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:036cd07eb3f2632f92a238df2f13e61987fda40487388ddf1675a372d9fc246d"}, - {file = "highspy-1.7.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a067cb356cc606094b1ff02250afa804bc5a845065c797ce3ff2ebc35a6da13a"}, - {file = "highspy-1.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0145fbd90e2ddf0d2d961b7c3cab12917e305faca81c91ee7ad7927991eedba"}, - {file = "highspy-1.7.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:3a4c3ff18ecec1b1c8a352f0c0eb0bdf538aa7345f8c16260d8a9b1e3377cc2c"}, - {file = "highspy-1.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:89e49a47671c3caeaea95c72a4564e5284529a60d12d56c167d1f8df97944642"}, - {file = "highspy-1.7.1-cp311-cp311-win32.whl", hash = "sha256:14c1b4381d451f605c6b13ce0cfce93bda79acffdd9c9fbf22b27df09751a1a0"}, - {file = "highspy-1.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:efadfb6559e16f2e9b7e967156501c074c7acaec0afafa29ac6d4d6e7ac82119"}, - {file = "highspy-1.7.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:8074f49f4b9bc18f91bf1ad4519a16b691ec0ff5a568015a3b71ac0ee6367078"}, - {file = "highspy-1.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8df11a1c5604552233ec796fd23697e64c0ae6796e11003d83f2fbf978275a00"}, - {file = "highspy-1.7.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d6222985213eecc8aad7958a8939c05f072c68a5caa59c83713df29e2581ce0"}, - {file = "highspy-1.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3a3d10031d41102675c85b38f42252eb4691e350bc140b75dbab75ff717f041"}, - {file = "highspy-1.7.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:096a244825c1e930f1cbe1bbf8c3e2d158dfd45cdf51ae0e77b5fcb52ec1fc7d"}, - {file = "highspy-1.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4ede828865db9afb6868250c4e42cdf32133a3a29a3ebd6acaaafd3e19bf1"}, - {file = "highspy-1.7.1-cp312-cp312-win32.whl", hash = "sha256:1367f34c56fa9f4d3de6cb1d46a2d271a3680c0e9883d4dd779526c8cf568ae4"}, - {file = "highspy-1.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:a4692c7c2d4d298473ffc3a3b4e80da1edeb1a4b1d172858262bee759faa3b1d"}, - {file = "highspy-1.7.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2fa9bc9b2e8f648a269f0a6a17ef7525d1dd2dc6d2d33af727b79ae253eede2a"}, - {file = "highspy-1.7.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8b83e98d276e9616565395b439693625dc7ff0e0f717166a2d1d71dedb7b5986"}, - {file = "highspy-1.7.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c7a3edc391227f03d20cccc29e4cf588a7bc7b5538e691a583e65de8058b02f"}, - {file = "highspy-1.7.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:243c99f6290a289dbd9ba7988feac726da8326d6ea90889289f2ca583c16ffb6"}, - {file = "highspy-1.7.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:8d6c0e8293129a8e1d8841a12b8ef16caa8f979e3769f471a55ae76eaa2c248a"}, - {file = "highspy-1.7.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a574eaa19261e2c3dc1dddb507e50626f63b17d48cac3b2b86cd054cdf6385bc"}, - {file = "highspy-1.7.1-cp38-cp38-win32.whl", hash = "sha256:81efbc1e8764a916d8784de7bbeaf5ac9cf284caad822028096a61824a035f2a"}, - {file = "highspy-1.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:265d21b3e72bce08716d114ffa91e9eaadfff086fc4b8e00dc3297a0165990dd"}, - {file = "highspy-1.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d0dbb4a41392720f798afba402dd90e763061085b2499cd8f41fb857db35632c"}, - {file = "highspy-1.7.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5363a165615601fa929791e4c629cbd961486ed5767d17406b6a81e8348cf7ff"}, - {file = "highspy-1.7.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7ecac3b629e0fd56a332a2470562ea05a11f10fef5b9ab2dae05d24ef84bfa8"}, - {file = "highspy-1.7.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8994f8fd79bf01879b7654747758fb7c28a361e5831d2d189f80d0b4b0403ba"}, - {file = "highspy-1.7.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:2ae8679ff66301ed9f8fec70d4bef3ae9639bdc12f3aee34f49d2225e98bdf92"}, - {file = "highspy-1.7.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7926185a1fb0b2a54a438fa3af846b75e2abc9a48bd2dc9edc25a95ef3c5bf7d"}, - {file = "highspy-1.7.1-cp39-cp39-win32.whl", hash = "sha256:2e544078ffc9e0bde5234cf1e2fe2f218edd38f30c63fddd7c9725e77a6f51ff"}, - {file = "highspy-1.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:638ed6e6e048d67f0f2b8bee8c72e9f866f67a13a3a4aa71e97d7958244b9b0c"}, - {file = "highspy-1.7.1.tar.gz", hash = "sha256:8bb9108d81eef5935d72d50773e237b69b7a7368e0f45a7b778d556b9667e281"}, + {file = "highspy-1.7.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:467124b1e01aeddff8b6d0aa7a56e51eef943ebb28d3e46dcbdd1e32b77384ec"}, + {file = "highspy-1.7.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:584590ec4d9948a6f1ef8a1ce51761e1c9c00241054c12cbc0e8a43f0f5183c6"}, + {file = "highspy-1.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c642da4035b6c33618bca73f01627fce94e07c1e741b46798dddddaa88cf376"}, + {file = "highspy-1.7.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5bebb73f80c47e3215547abb1ebf8e520ae5f7f24e5420ad270ad901f0725041"}, + {file = "highspy-1.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f0bfad2a4ebb37944bb1ed883f0fbdb733d98141fdf4902fee0f75b0160a6c0"}, + {file = "highspy-1.7.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c64ede6b8e567eec0d14d12ea67114af855b4c380881d848becfb91cb01c844d"}, + {file = "highspy-1.7.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0c2ee6f7b74a6a1508fceb7d40acf8097d81c5b75059628ea00715723d382110"}, + {file = "highspy-1.7.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f9acabd04d16c5586753a9d6ce03c6f57b47f094fe3ef3b34185656181ed8685"}, + {file = "highspy-1.7.2-cp310-cp310-win32.whl", hash = "sha256:8625e193766192d4cfdc543548dc6cacf92ac09c86e2fcc7e48342f4909a9668"}, + {file = "highspy-1.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:e4d17d0c9bbbe15654a44b0369e5f1ee95f36935b71d54d4bdf70bedcc1b256e"}, + {file = "highspy-1.7.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:eb2fb87f2cd72765fa281acc2fb10e0bacb5f5e7c3336bb267b917b5bffc30fc"}, + {file = "highspy-1.7.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cd96ff70cb9ba186129597e521a7afcaa2bbb285273ffa5417edfcc43d58a566"}, + {file = "highspy-1.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1152035fd6c861cb578115b976d03c38e4e0e2f87227ac93b4af12fb582ad971"}, + {file = "highspy-1.7.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4cb5b7067cd3cfc191920b33428395080d51892435cd507542ae75f7a2ae0853"}, + {file = "highspy-1.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ad5ef7ddfd6fd879dc9b6ac02a9eecd13fe2b0581cd03985e5faa89f43b24ac"}, + {file = "highspy-1.7.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eb039878156f6b521f383a42b53e615521af430f0ae55e12d825b1368e1eaa47"}, + {file = "highspy-1.7.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:afd27cf82c922a2add4b940a7900a9e74a2b66556446c39abfe2d854cfcf59d1"}, + {file = "highspy-1.7.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:81de7b020255e40aafd28387f7642b3b6ea844e9cb42845a045a05411c7a055a"}, + {file = "highspy-1.7.2-cp311-cp311-win32.whl", hash = "sha256:d7d1c11f8c68ab537023f487585b1a4f447c5c03603feb2c5f76e77914c388ac"}, + {file = "highspy-1.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:fafa076bad795c45d7f055f859b762c4a72abd872ecd9710e1d3c1202a9123ad"}, + {file = "highspy-1.7.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:659f240736ae923fd35acd8ea0e86dc4165e8aec8e72c191642ec546476c1130"}, + {file = "highspy-1.7.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1b466011f4091051f156a13b46ac569316cc2cddff0c2881ee456c765c535519"}, + {file = "highspy-1.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e574cb5ddb6dffbcae0db61ae1ebb7754191e6f42a822010b81e3599d1001df"}, + {file = "highspy-1.7.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fa831a9a4fb286fe90bcba7c8a663923a47c14a318bdd30a6b96707f9a3f7496"}, + {file = "highspy-1.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71364d2136b0c31116684af47c63ba8bd2ca6da9320a4fadb69a0f57606bbdf7"}, + {file = "highspy-1.7.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b46b73ce68c9a98c36584348a31263f6deef84d8138cac872439b383cc17293e"}, + {file = "highspy-1.7.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a075da0c7d5b269f720691f0d743013540eea35bf22419e23bd32b343d4dda27"}, + {file = "highspy-1.7.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:98b2f01ec21764f233293eaae2ee637884ec009e6db608c46a446433c60d5e31"}, + {file = "highspy-1.7.2-cp312-cp312-win32.whl", hash = "sha256:ba78467db9e4693a384644b221deecf5f0243d150540d65fcb33534103486490"}, + {file = "highspy-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:47886d7794b3fa3fb12e5722d96989ef920a9a9460de66f4868632c8e723a07d"}, + {file = "highspy-1.7.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:22e31ee5d3854024d075697fcfac88394b90d0afe25b84e4283d3964d0cd991b"}, + {file = "highspy-1.7.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fe9b2291b01ff13e14a2720e436cf807b28d7a9d33d27861e7f26ced001bceec"}, + {file = "highspy-1.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2d86c87a997de23001c687c8b3bff265b0f9edb1403657f5bb895d2525f0e78"}, + {file = "highspy-1.7.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5c0b5d913ae2e509e10991596caa3b09670e18aa6b55aab324e00884561f44d4"}, + {file = "highspy-1.7.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf7973ba66d659728fadf7168f8d6a3560bef4333a504abfbc8cdb9ea51afd98"}, + {file = "highspy-1.7.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:3e361e98ddd757c0393677a9a52de6349abfbe79ff5d2132088a3d02c6c735d9"}, + {file = "highspy-1.7.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:69ea90d97effbc27eeb2e20488c7c510f7d12813d929a8ca3fd0a7c9832564ab"}, + {file = "highspy-1.7.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0af568e0e61934e748c2b1057fb48f7fc3bfef6d6e6f159c616dd0ececb223a7"}, + {file = "highspy-1.7.2-cp38-cp38-win32.whl", hash = "sha256:20e86e18203d96f6c2b9d358b14e0178a7f83ac8ec6e806255d3f80710839bea"}, + {file = "highspy-1.7.2-cp38-cp38-win_amd64.whl", hash = "sha256:0ac5990c90cc615a2a45143d2321d74a7857db2e79aa9ba3606461da99fb5c8b"}, + {file = "highspy-1.7.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2d8199c8bd0528bfaec85d441c25c570adf2334be5a75d6d6839190db2e14f83"}, + {file = "highspy-1.7.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d0a6d8b4fa17161c5b5941a49a9dab9b8569a3e6c28b2e28eaad3265fd8d7430"}, + {file = "highspy-1.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9e10640542c41852d135172c87ced5e2664bbf12d5396a6f761ec8e62bc11ea6"}, + {file = "highspy-1.7.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:64f99988d0c641843079c410883f606023ae4055e8e6158427cd4dc1e23227ff"}, + {file = "highspy-1.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb8a2919e958e07fd82e6d6f273374030f5232b09e2924c6d3f50e773bfa0a80"}, + {file = "highspy-1.7.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:72fdc8dd3bb5e0d34b8594a851b0cad299b31eef40a50a180b3260494d86b09e"}, + {file = "highspy-1.7.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:b008ccdfbb73fde912ed1dd605e27a122a81e0c472c338fa3b3fa24996e5379f"}, + {file = "highspy-1.7.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3675f3242ddd11b107bde3345779ac9eb8dd9a940337b43ce8127836b592feef"}, + {file = "highspy-1.7.2-cp39-cp39-win32.whl", hash = "sha256:b496a5d337508847737836ada6d930b404d921a119132cd1d14df47a4b488db7"}, + {file = "highspy-1.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:e7d3883c697103c8c39d808976a00b85d68f869b97bae6d48b7b03811dfbb925"}, + {file = "highspy-1.7.2.tar.gz", hash = "sha256:7987b2a3f013254a1845bceb4597087da4070f7887c0084024649486321ae213"}, ] [package.dependencies] @@ -820,13 +825,13 @@ test = ["numpy", "pytest"] [[package]] name = "identify" -version = "2.5.36" +version = "2.6.0" description = "File identification library for Python" optional = false python-versions = ">=3.8" files = [ - {file = "identify-2.5.36-py2.py3-none-any.whl", hash = "sha256:37d93f380f4de590500d9dba7db359d0d3da95ffe7f9de1753faa159e71e7dfa"}, - {file = "identify-2.5.36.tar.gz", hash = "sha256:e5e00f54165f9047fbebeb4a560f9acfb8af4c88232be60a488e9b68d122745d"}, + {file = "identify-2.6.0-py2.py3-none-any.whl", hash = "sha256:e79ae4406387a9d300332b5fd366d8994f1525e8414984e1a59e058b2eda2dd0"}, + {file = "identify-2.6.0.tar.gz", hash = "sha256:cb171c685bdc31bcc4c1734698736a7d5b6c8bf2e0c15117f4d469c8640ae5cf"}, ] [package.extras] @@ -1403,13 +1408,13 @@ dev = ["pytest", "sphinx", "sphinx-rtd-theme"] [[package]] name = "openpyxl" -version = "3.1.4" +version = "3.1.5" description = "A Python library to read/write Excel 2010 xlsx/xlsm files" optional = false python-versions = ">=3.8" files = [ - {file = "openpyxl-3.1.4-py2.py3-none-any.whl", hash = "sha256:ec17f6483f2b8f7c88c57e5e5d3b0de0e3fb9ac70edc084d28e864f5b33bbefd"}, - {file = "openpyxl-3.1.4.tar.gz", hash = "sha256:8d2c8adf5d20d6ce8f9bca381df86b534835e974ed0156dacefa76f68c1d69fb"}, + {file = "openpyxl-3.1.5-py2.py3-none-any.whl", hash = "sha256:5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2"}, + {file = "openpyxl-3.1.5.tar.gz", hash = "sha256:cf0e3cf56142039133628b5acffe8ef0c12bc902d2aadd3e0fe5878dc08d1050"}, ] [package.dependencies] @@ -2026,32 +2031,32 @@ crt = ["botocore[crt] (>=1.20.29,<2.0a.0)"] [[package]] name = "scikit-learn" -version = "1.5.0" +version = "1.5.1" description = "A set of python modules for machine learning and data mining" optional = false python-versions = ">=3.9" files = [ - {file = "scikit_learn-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:12e40ac48555e6b551f0a0a5743cc94cc5a765c9513fe708e01f0aa001da2801"}, - {file = "scikit_learn-1.5.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:f405c4dae288f5f6553b10c4ac9ea7754d5180ec11e296464adb5d6ac68b6ef5"}, - {file = "scikit_learn-1.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df8ccabbf583315f13160a4bb06037bde99ea7d8211a69787a6b7c5d4ebb6fc3"}, - {file = "scikit_learn-1.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c75ea812cd83b1385bbfa94ae971f0d80adb338a9523f6bbcb5e0b0381151d4"}, - {file = "scikit_learn-1.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:a90c5da84829a0b9b4bf00daf62754b2be741e66b5946911f5bdfaa869fcedd6"}, - {file = "scikit_learn-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2a65af2d8a6cce4e163a7951a4cfbfa7fceb2d5c013a4b593686c7f16445cf9d"}, - {file = "scikit_learn-1.5.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:4c0c56c3005f2ec1db3787aeaabefa96256580678cec783986836fc64f8ff622"}, - {file = "scikit_learn-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f77547165c00625551e5c250cefa3f03f2fc92c5e18668abd90bfc4be2e0bff"}, - {file = "scikit_learn-1.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:118a8d229a41158c9f90093e46b3737120a165181a1b58c03461447aa4657415"}, - {file = "scikit_learn-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:a03b09f9f7f09ffe8c5efffe2e9de1196c696d811be6798ad5eddf323c6f4d40"}, - {file = "scikit_learn-1.5.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:460806030c666addee1f074788b3978329a5bfdc9b7d63e7aad3f6d45c67a210"}, - {file = "scikit_learn-1.5.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:1b94d6440603752b27842eda97f6395f570941857456c606eb1d638efdb38184"}, - {file = "scikit_learn-1.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d82c2e573f0f2f2f0be897e7a31fcf4e73869247738ab8c3ce7245549af58ab8"}, - {file = "scikit_learn-1.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3a10e1d9e834e84d05e468ec501a356226338778769317ee0b84043c0d8fb06"}, - {file = "scikit_learn-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:855fc5fa8ed9e4f08291203af3d3e5fbdc4737bd617a371559aaa2088166046e"}, - {file = "scikit_learn-1.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:40fb7d4a9a2db07e6e0cae4dc7bdbb8fada17043bac24104d8165e10e4cff1a2"}, - {file = "scikit_learn-1.5.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:47132440050b1c5beb95f8ba0b2402bbd9057ce96ec0ba86f2f445dd4f34df67"}, - {file = "scikit_learn-1.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:174beb56e3e881c90424e21f576fa69c4ffcf5174632a79ab4461c4c960315ac"}, - {file = "scikit_learn-1.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:261fe334ca48f09ed64b8fae13f9b46cc43ac5f580c4a605cbb0a517456c8f71"}, - {file = "scikit_learn-1.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:057b991ac64b3e75c9c04b5f9395eaf19a6179244c089afdebaad98264bff37c"}, - {file = "scikit_learn-1.5.0.tar.gz", hash = "sha256:789e3db01c750ed6d496fa2db7d50637857b451e57bcae863bff707c1247bef7"}, + {file = "scikit_learn-1.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:781586c414f8cc58e71da4f3d7af311e0505a683e112f2f62919e3019abd3745"}, + {file = "scikit_learn-1.5.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:f5b213bc29cc30a89a3130393b0e39c847a15d769d6e59539cd86b75d276b1a7"}, + {file = "scikit_learn-1.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ff4ba34c2abff5ec59c803ed1d97d61b036f659a17f55be102679e88f926fac"}, + {file = "scikit_learn-1.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:161808750c267b77b4a9603cf9c93579c7a74ba8486b1336034c2f1579546d21"}, + {file = "scikit_learn-1.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:10e49170691514a94bb2e03787aa921b82dbc507a4ea1f20fd95557862c98dc1"}, + {file = "scikit_learn-1.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:154297ee43c0b83af12464adeab378dee2d0a700ccd03979e2b821e7dd7cc1c2"}, + {file = "scikit_learn-1.5.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:b5e865e9bd59396220de49cb4a57b17016256637c61b4c5cc81aaf16bc123bbe"}, + {file = "scikit_learn-1.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:909144d50f367a513cee6090873ae582dba019cb3fca063b38054fa42704c3a4"}, + {file = "scikit_learn-1.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:689b6f74b2c880276e365fe84fe4f1befd6a774f016339c65655eaff12e10cbf"}, + {file = "scikit_learn-1.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:9a07f90846313a7639af6a019d849ff72baadfa4c74c778821ae0fad07b7275b"}, + {file = "scikit_learn-1.5.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5944ce1faada31c55fb2ba20a5346b88e36811aab504ccafb9f0339e9f780395"}, + {file = "scikit_learn-1.5.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:0828673c5b520e879f2af6a9e99eee0eefea69a2188be1ca68a6121b809055c1"}, + {file = "scikit_learn-1.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:508907e5f81390e16d754e8815f7497e52139162fd69c4fdbd2dfa5d6cc88915"}, + {file = "scikit_learn-1.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97625f217c5c0c5d0505fa2af28ae424bd37949bb2f16ace3ff5f2f81fb4498b"}, + {file = "scikit_learn-1.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:da3f404e9e284d2b0a157e1b56b6566a34eb2798205cba35a211df3296ab7a74"}, + {file = "scikit_learn-1.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:88e0672c7ac21eb149d409c74cc29f1d611d5158175846e7a9c2427bd12b3956"}, + {file = "scikit_learn-1.5.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:7b073a27797a283187a4ef4ee149959defc350b46cbf63a84d8514fe16b69855"}, + {file = "scikit_learn-1.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b59e3e62d2be870e5c74af4e793293753565c7383ae82943b83383fdcf5cc5c1"}, + {file = "scikit_learn-1.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bd8d3a19d4bd6dc5a7d4f358c8c3a60934dc058f363c34c0ac1e9e12a31421d"}, + {file = "scikit_learn-1.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:5f57428de0c900a98389c4a433d4a3cf89de979b3aa24d1c1d251802aa15e44d"}, + {file = "scikit_learn-1.5.1.tar.gz", hash = "sha256:0ea5d40c0e3951df445721927448755d3fe1d80833b0b7308ebff5d2a45e6414"}, ] [package.dependencies] @@ -2062,8 +2067,8 @@ threadpoolctl = ">=3.1.0" [package.extras] benchmark = ["matplotlib (>=3.3.4)", "memory_profiler (>=0.57.0)", "pandas (>=1.1.5)"] -build = ["cython (>=3.0.10)", "meson-python (>=0.15.0)", "numpy (>=1.19.5)", "scipy (>=1.6.0)"] -docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.3.4)", "memory_profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "polars (>=0.20.23)", "pooch (>=1.6.0)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)", "sphinx (>=6.0.0)", "sphinx-copybutton (>=0.5.2)", "sphinx-gallery (>=0.15.0)", "sphinx-prompt (>=1.3.0)", "sphinxext-opengraph (>=0.4.2)"] +build = ["cython (>=3.0.10)", "meson-python (>=0.16.0)", "numpy (>=1.19.5)", "scipy (>=1.6.0)"] +docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.3.4)", "memory_profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "polars (>=0.20.23)", "pooch (>=1.6.0)", "pydata-sphinx-theme (>=0.15.3)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)", "sphinx (>=7.3.7)", "sphinx-copybutton (>=0.5.2)", "sphinx-design (>=0.5.0)", "sphinx-gallery (>=0.16.0)", "sphinx-prompt (>=1.4.0)", "sphinx-remove-toctrees (>=1.0.0.post1)", "sphinxcontrib-sass (>=0.3.4)", "sphinxext-opengraph (>=0.9.1)"] examples = ["matplotlib (>=3.3.4)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)"] install = ["joblib (>=1.2.0)", "numpy (>=1.19.5)", "scipy (>=1.6.0)", "threadpoolctl (>=3.1.0)"] maintenance = ["conda-lock (==2.5.6)"] @@ -2521,15 +2526,18 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "validators" -version = "0.28.3" +version = "0.33.0" description = "Python Data Validation for Humans™" optional = false python-versions = ">=3.8" files = [ - {file = "validators-0.28.3-py3-none-any.whl", hash = "sha256:53cafa854f13850156259d9cc479b864ee901f6a96e6b109e6fc33f98f37d99f"}, - {file = "validators-0.28.3.tar.gz", hash = "sha256:c6c79840bcde9ba77b19f6218f7738188115e27830cbaff43264bc4ed24c429d"}, + {file = "validators-0.33.0-py3-none-any.whl", hash = "sha256:134b586a98894f8139865953899fc2daeb3d0c35569552c5518f089ae43ed075"}, + {file = "validators-0.33.0.tar.gz", hash = "sha256:535867e9617f0100e676a1257ba1e206b9bfd847ddc171e4d44811f07ff0bfbf"}, ] +[package.extras] +crypto-eth-addresses = ["eth-hash[pycryptodome] (>=0.7.0)"] + [[package]] name = "virtualenv" version = "20.26.3" @@ -2572,4 +2580,4 @@ docs = [] [metadata] lock-version = "2.0" python-versions = ">=3.10,<3.11" -content-hash = "c20e8c1b158f2417d6e37b7708a4fea2a222fa1f3545062c651d0e9b685dd27c" +content-hash = "fb6e2ecd10b63c067be3d7d8b63bfc062be95479af3f6f4ebf515f710fd1627e" diff --git a/pyproject.toml b/pyproject.toml index fdf574a..ccdd083 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,8 @@ authors = [ "Sarah Berendes ", "Julian Endres ", "Felix Maurer ", - "Hendrik Huyskens " + "Hendrik Huyskens ", + "Sabine Haas " ] [tool.poetry.group.dev.dependencies] @@ -20,8 +21,8 @@ build-backend = "poetry.core.masonry.api" [tool.poetry.dependencies] python = ">=3.10,<3.11" data_adapter = { git = "https://git@github.com/sedos-project/data_adapter", branch = "main"} -oemof-tabular = { git = "https://git@github.com/oemof/oemof-tabular", branch = "dev"} -oemof-industry = { git = "https://github.com/sedos-project/oemof.industry.git", branch = "main"} +oemof-tabular = { git = "https://git@github.com/oemof/oemof-tabular", branch = "feature/multi-period-results"} +oemof-industry = { git = "https://github.com/sedos-project/oemof.industry.git", branch = "feature/multi_period_emi_constraint"} boto3 = "1.26.125" # fix boto3 to fasten up dependency resolution python-dotenv = "^0.21.0" tsam = "^2.3.1"