From 8b511d97f0b900e17532b4e6006e585f67580d22 Mon Sep 17 00:00:00 2001 From: FelixMau Date: Wed, 22 Nov 2023 13:12:37 +0100 Subject: [PATCH 01/27] Seperatly adressing changes in #61 --- tests/test_build_datapackage.py | 135 +++++++++++++------------------- 1 file changed, 56 insertions(+), 79 deletions(-) diff --git a/tests/test_build_datapackage.py b/tests/test_build_datapackage.py index a259a34..2490c2d 100644 --- a/tests/test_build_datapackage.py +++ b/tests/test_build_datapackage.py @@ -1,9 +1,5 @@ -import json - -import collections import os from unittest import mock - import pandas import pandas as pd import pytest @@ -17,21 +13,44 @@ path_default = PATH_TEST_FILES / "_files" -Mock = collections.namedtuple( - typename="Mock", - field_names=["mock_adapter", "process_adapter_map", "parameter_map"], -) +def test_refactor_timeseries(): + timeseries = pandas.DataFrame( + { + "timeindex_start": ["01:00:00", "01:00:00", "09:00:00"], + "timeindex_stop": ["03:00:00", "03:00:00", "10:00:00"], + "timeindex_resolution": ["P0DT01H00M00S", "P0DT01H00M00S", "P0DT01H00M00S"], + "region": ["BB", "HH", "HH"], + "onshore": [[1, 2, 3], [4, 5, 6], [33, 34]], + "offshore": [[7, 8, 9], [10, 11, 12], [35, 36]], + } + ) -def define_mock(): + refactored_ts = refactor_timeseries(timeseries) + expected_df = pandas.DataFrame( + { + "offshore_BB": [7.0, 8, 9, None, None], + "offshore_HH": [10.0, 11, 12, 35, 36], + "onshore_BB": [1.0, 2, 3, None, None], + "onshore_HH": [4.0, 5, 6, 33, 34], + }, + index=pandas.DatetimeIndex( + ["01:00:00", "02:00:00", "03:00:00", "09:00:00", "10:00:00"] + ), + ) + expected_df = expected_df.sort_index(axis=1) + refactored_ts = refactored_ts.sort_index(axis=1) + pandas.testing.assert_frame_equal(expected_df, refactored_ts) + + +def test_build_datapackage(): """ - Defines a Mock to be used in tests + Test build Datapackage with mocking Adapter Returns - Mock tuple with mappers ------- - """ + # Define different return values for get_process based on the structure def mock_get_process(process_name): """ Adding side effects and .scalar and .timeseries @@ -166,7 +185,9 @@ def mock_get_process(process_name): } mock_adapter.get_process.side_effect = mock_get_process - + # Call the method with the mock adapter + test_path = os.path.join(path_default, "build_datapackage_test") + goal_path = os.path.join(path_default, "build_datapackage_goal") process_adapter_map = { "modex_tech_generator_gas": "ExtractionTurbineAdapter", "modex_tech_storage_battery": "StorageAdapter", @@ -184,51 +205,6 @@ def mock_get_process(process_name): }, "modex_tech_wind_turbine_onshore": {"profile": "onshore"}, } - return Mock(mock_adapter, process_adapter_map, parameter_map) - - -def test_refactor_timeseries(): - timeseries = pandas.DataFrame( - { - "timeindex_start": ["01:00:00", "01:00:00", "09:00:00"], - "timeindex_stop": ["03:00:00", "03:00:00", "10:00:00"], - "timeindex_resolution": ["P0DT01H00M00S", "P0DT01H00M00S", "P0DT01H00M00S"], - "region": ["BB", "HH", "HH"], - "onshore": [[1, 2, 3], [4, 5, 6], [33, 34]], - "offshore": [[7, 8, 9], [10, 11, 12], [35, 36]], - } - ) - - refactored_ts = refactor_timeseries(timeseries) - expected_df = pandas.DataFrame( - { - "offshore_BB": [7.0, 8, 9, None, None], - "offshore_HH": [10.0, 11, 12, 35, 36], - "onshore_BB": [1.0, 2, 3, None, None], - "onshore_HH": [4.0, 5, 6, 33, 34], - }, - index=pandas.DatetimeIndex( - ["01:00:00", "02:00:00", "03:00:00", "09:00:00", "10:00:00"] - ), - ) - expected_df = expected_df.sort_index(axis=1) - refactored_ts = refactored_ts.sort_index(axis=1) - pandas.testing.assert_frame_equal(expected_df, refactored_ts) - - -def test_build_datapackage(): - """ - Test build Datapackage with mocking Adapter - Returns - ------- - """ - # Call the method with the mock adapter - test_path = os.path.join(path_default, "build_datapackage_test") - goal_path = os.path.join(path_default, "build_datapackage_goal") - # Define different return values for get_process based on the structure - - mock = define_mock() - result = DataPackage.build_datapackage( adapter=mock.mock_adapter, process_adapter_map=mock.process_adapter_map, @@ -365,29 +341,30 @@ def test_period_csv_creation(): sequence_goal.index.name = "timeindex" pd.testing.assert_frame_equal(sequence_goal, sequence_created) +def test_tsam_integration(): + # Setup Directory to read timeseries from + dir = os.path.join(path_default, "tabular_datapackage_hack_a_thon", "data", "sequences") + load_dir = os.path.join(dir, "modex_tech_load_load_sequence.csv") + utility_dir = os.path.join(dir, "modex_tech_photovoltaics_utility_sequence.csv") + onshore_dir = os.path.join(dir, "modex_tech_wind_turbine_onshore_sequence.csv") + + load = pd.read_csv(load_dir, sep=";", index_col=0) + utility= pd.read_csv(utility_dir, sep=";", index_col=0) + onshore= pd.read_csv(onshore_dir, sep=";", index_col=0) + + load_aggregation = tsam.TimeSeriesAggregation(load, + noTypicalPeriods = 3, + hoursPerPeriod = 24, + segmentation = True, + noSegments = 8, + representationMethod = "distributionAndMinMaxRepresentation", + distributionPeriodWise = False, + clusterMethod = 'hierarchical' + ) + load_type_periods = load_aggregation.createTypicalPeriods() + -def test_tsam(): - """ - Tests if tsam aggregation is run successfully using mock - Returns - ------- - """ - # Read tsam config: - with open(os.path.join(path_default, "tsam_config.json"), "r") as f: - config = json.load(f) - # Call the method with the mock adapter - test_path = os.path.join(path_default, "tsam_integration") - # goal_path = os.path.join(path_default, "build_datapackage_goal") - # Define different return values for get_process based on the structure - mock = define_mock() - result = DataPackage.build_datapackage( - adapter=mock.mock_adapter, - process_adapter_map=mock.process_adapter_map, - parameter_map=mock.parameter_map, - path_to_datapackage=test_path - ) - result.time_series_aggregation(tsam_config=config) From 620993c07f57dd8aee94e08304e01b00a5d18635 Mon Sep 17 00:00:00 2001 From: FelixMau Date: Tue, 28 Nov 2023 15:32:27 +0100 Subject: [PATCH 02/27] Rewrite Test --- tests/test_build_datapackage.py | 28 +++++++--------------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/tests/test_build_datapackage.py b/tests/test_build_datapackage.py index 2490c2d..ee4467f 100644 --- a/tests/test_build_datapackage.py +++ b/tests/test_build_datapackage.py @@ -341,27 +341,13 @@ def test_period_csv_creation(): sequence_goal.index.name = "timeindex" pd.testing.assert_frame_equal(sequence_goal, sequence_created) -def test_tsam_integration(): - # Setup Directory to read timeseries from - dir = os.path.join(path_default, "tabular_datapackage_hack_a_thon", "data", "sequences") - load_dir = os.path.join(dir, "modex_tech_load_load_sequence.csv") - utility_dir = os.path.join(dir, "modex_tech_photovoltaics_utility_sequence.csv") - onshore_dir = os.path.join(dir, "modex_tech_wind_turbine_onshore_sequence.csv") - - load = pd.read_csv(load_dir, sep=";", index_col=0) - utility= pd.read_csv(utility_dir, sep=";", index_col=0) - onshore= pd.read_csv(onshore_dir, sep=";", index_col=0) - - load_aggregation = tsam.TimeSeriesAggregation(load, - noTypicalPeriods = 3, - hoursPerPeriod = 24, - segmentation = True, - noSegments = 8, - representationMethod = "distributionAndMinMaxRepresentation", - distributionPeriodWise = False, - clusterMethod = 'hierarchical' - ) - load_type_periods = load_aggregation.createTypicalPeriods() +def test_tsam(): + """ + Uses Mock to create datapackage and then applies timeseries aggregation to it. + Returns + ------- + + """ From 46a1b8ea4cd4c5ef89f8cd449afc8d366538c53a Mon Sep 17 00:00:00 2001 From: FelixMau Date: Wed, 22 Nov 2023 13:12:37 +0100 Subject: [PATCH 03/27] Mocking & aggregation Mocking a dataadapter into tsam test Concatting Sequences into one dataframe and then adding periods. Afterwards grouping periods --- data_adapter_oemof/build_datapackage.py | 37 ++++- tests/_files/{ => tsam}/tsam_config.json | 0 tests/test_build_datapackage.py | 178 ++++++++++++++++++++++- 3 files changed, 213 insertions(+), 2 deletions(-) rename tests/_files/{ => tsam}/tsam_config.json (100%) diff --git a/data_adapter_oemof/build_datapackage.py b/data_adapter_oemof/build_datapackage.py index bbffe8b..b4fe1be 100644 --- a/data_adapter_oemof/build_datapackage.py +++ b/data_adapter_oemof/build_datapackage.py @@ -4,6 +4,7 @@ from typing import Optional import pandas as pd +import tsam.timeseriesaggregation from data_adapter import core from data_adapter.preprocessing import Adapter from datapackage import Package @@ -12,6 +13,27 @@ from data_adapter_oemof.mappings import Mapper from data_adapter_oemof.settings import BUS_MAP, PARAMETER_MAP, PROCESS_ADAPTER_MAP +def append_to_columnnames(df_dictionary: dict): + """ + Appends the `key` to all column names for all Dataframes in dictionary. + . is used as seperator + Then concats all dataframes + Parameters + ---------- + df_dictionary: Dictionary of Dataframes + + Returns + concat pd.Dataframe + ------- + + """ + renamed_df = [] + for key, df in df_dictionary.items(): + df.columns = list(map(lambda c: c+"."+key, df.columns)) + renamed_df.append(df) + return pd.concat(renamed_df) + + def refactor_timeseries(timeseries: pd.DataFrame): """ @@ -409,8 +431,21 @@ def time_series_aggregation(self, tsam_config: str, destination: str = None): ------- """ + # Refactor sequences into one Dataframe self.save_datapackage_to_csv(destination=destination) - df = pd.concat(self.parametrized_sequences.values()) + sequences = append_to_columnnames(self.parametrized_sequences) + sequences.index = self.periods.index + df = pd.concat([self.periods, sequences], axis=1) + + # Group sequences by Periods + for period, period_sequence in df.groupby(by="periods"): + period_sequence.drop(["periods", "timeincrement"], axis=1, inplace=True) + aggregation = tsam.timeseriesaggregation.TimeSeriesAggregation( + period_sequence, + **tsam_config + ) + type_periods = aggregation.createTypicalPeriods() + @classmethod def build_datapackage( cls, diff --git a/tests/_files/tsam_config.json b/tests/_files/tsam/tsam_config.json similarity index 100% rename from tests/_files/tsam_config.json rename to tests/_files/tsam/tsam_config.json diff --git a/tests/test_build_datapackage.py b/tests/test_build_datapackage.py index ee4467f..755f64b 100644 --- a/tests/test_build_datapackage.py +++ b/tests/test_build_datapackage.py @@ -4,6 +4,7 @@ import pandas as pd import pytest import tsam.timeseriesaggregation as tsam +import json from data_adapter.databus import download_collection from data_adapter.preprocessing import Adapter from pandas import Timestamp @@ -206,7 +207,7 @@ def mock_get_process(process_name): "modex_tech_wind_turbine_onshore": {"profile": "onshore"}, } result = DataPackage.build_datapackage( - adapter=mock.mock_adapter, + adapter= mock_adapter, process_adapter_map=mock.process_adapter_map, parameter_map=mock.parameter_map, ) @@ -349,6 +350,181 @@ def test_tsam(): """ + tsam_folder = os.path.join(path_default, "tsam") + + # Define Test mock - same as above + def mock_get_process(process_name): + """ + Adding side effects and .scalar and .timeseries + Parameters + ---------- + process_name + + Returns + ------- + mocked function .get_process for Adapter + + """ + if process_name == "modex_tech_storage_battery": + process_mock = mock.Mock() + process_mock.scalars = pd.DataFrame( + { + "region": {0: "BB", 1: "BB", 2: "BB"}, + "year": {0: 2016, 1: 2030, 2: 2050}, + "capacity": {0: 17.8, 1: 17.8, 2: 17.8}, + "invest_relation_output_capacity": {0: 3.3, 1: 3.3, 2: 3.3}, + "tech": { + 0: "storage_battery", + 1: "storage_battery", + 2: "storage_battery", + }, + "carrier": { + 0: "Lithium", + 1: "Lithium", + 2: "Lithium", + }, + "fixed_costs": {0: 1, 1: 2, 2: 3}, + } + ) + process_mock.timeseries = pd.DataFrame() + return process_mock + elif process_name == "modex_tech_generator_gas": + process_mock = mock.Mock() + + process_mock.scalars = pd.DataFrame( + { + "region": {0: "BB", 1: "BB", 2: "BB"}, + "year": {0: 2016, 1: 2030, 2: 2050}, + "installed_capacity": { + 0: 330.2, + 1: 330.2, + 2: 330.2, + }, + "emission_factor": { + 0: 0.2, + 1: 0.2, + 2: 0.2, + }, # Todo: not implemented in any Facade yet?! + "fuel_costs": {0: 25.9, 1: 25.9, 2: 49.36}, + "tech": { + 0: "generator_gas", + 1: "generator_gas", + 2: "generator_gas", + }, + "carrier": { + 0: "gas", + 1: "gas", + 2: "gas", + }, + "condensing_efficiency": { + 0: 0.16, + 1: 0.3, + 2: 0.5, + }, + "electric_efficiency": {0: 0.35, 1: 0.35, 2: 0.4}, + "thermal_efficiency": {0: 0.5, 1: 0.5, 2: 0.45}, + } + ) + + process_mock.timeseries = pd.DataFrame() + return process_mock + elif process_name == "modex_tech_wind_turbine_onshore": + process_mock = mock.Mock() + process_mock.scalars = pd.DataFrame( + { + "region": {0: "BB", 1: "BB", 2: "BB"}, + "year": {0: 2016, 1: 2030, 2: 2050}, + "installed_capacity": { + 0: 5700.03, + 1: 5700.03375, + 2: 5700.03375, + }, + "fixed_costs": {0: 23280.0, 1: 12600.0, 2: 11340.0}, + "lifetime": {0: 25.4, 1: 30.0, 2: 30.0}, + "wacc": {0: 0.07, 1: 0.07, 2: 0.07}, + "tech": { + 0: "wind_turbine_onshore", + 1: "wind_turbine_onshore", + 2: "wind_turbine_onshore", + }, + "carrier": { + 0: "wind", + 1: "wind", + 2: "wind", + }, + } + ) + process_mock.timeseries = pd.DataFrame( + { + "onshore_BB": { + "2016-01-01T00:00:00": 0.0516, + "2016-01-01T01:00:00": 0.051, + "2016-01-01T02:00:00": 0.0444, + "2030-01-01T00:00:00": 0.0526, + "2030-01-01T01:00:00": 0.051, + "2030-01-01T02:00:00": 0.0444, + "2050-01-01T00:00:00": 0.0536, + "2050-01-01T01:00:00": 0.051, + "2050-01-01T02:00:00": 0.0444, + }, + } + ) + return process_mock + + # Create a mock adapter object for testing + mock_adapter = mock.Mock(spec=Adapter) + # Mock the required methods and attributes of the Adapter + mock_adapter.get_structure.return_value = { + "modex_tech_storage_battery": { + "default": {"inputs": ["electricity"], "outputs": []} + }, + "modex_tech_generator_gas": { + "default": {"inputs": ["ch4"], "outputs": ["electricity"]}, + }, + "modex_tech_wind_turbine_onshore": { + "default": {"inputs": ["onshore"], "outputs": ["electricity"]} + }, + } + + mock_adapter.get_process.side_effect = mock_get_process + # Call the method with the mock adapter + process_adapter_map = { + "modex_tech_generator_gas": "ExtractionTurbineAdapter", + "modex_tech_storage_battery": "StorageAdapter", + "modex_tech_wind_turbine_onshore": "VolatileAdapter", + } + parameter_map = { + "DEFAULT": { + "marginal_cost": "variable_costs", + "fixed_cost": "fixed_costs", + "capacity_cost": "capital_costs", + }, + "ExtractionTurbineAdapter": { + "carrier_cost": "fuel_costs", + "capacity": "installed_capacity", + }, + "modex_tech_wind_turbine_onshore": {"profile": "onshore"}, + } + result = DataPackage.build_datapackage( + adapter= mock_adapter, + process_adapter_map=process_adapter_map, + parameter_map=parameter_map, + path_to_datapackage=tsam_folder + + ) + + ############################################################################# + # start tsam + ############################################################################# + + # read tsam config json + + with open(os.path.join(tsam_folder, "tsam_config.json"), "r") as f: + tsam_config = json.load(f) + + result.time_series_aggregation(tsam_config=tsam_config) + + From ea964e3f466afd82893db654d56c280da48df02b Mon Sep 17 00:00:00 2001 From: FelixMau Date: Wed, 29 Nov 2023 14:33:43 +0100 Subject: [PATCH 04/27] Adding in location to datapackage Integrating location in ssave functionality Integrating datapackage name as well to being able to rename it --- data_adapter_oemof/build_datapackage.py | 30 +++-- tests/test_build_datapackage.py | 161 +----------------------- 2 files changed, 27 insertions(+), 164 deletions(-) diff --git a/data_adapter_oemof/build_datapackage.py b/data_adapter_oemof/build_datapackage.py index 919e0da..65b01cf 100644 --- a/data_adapter_oemof/build_datapackage.py +++ b/data_adapter_oemof/build_datapackage.py @@ -167,6 +167,7 @@ class DataPackage: foreign_keys: dict # foreign keys for timeseries profiles adapter: Adapter periods: pd.DataFrame() + location_to_save_to: str = None @staticmethod def __split_timeseries_into_years(parametrized_sequences): @@ -275,7 +276,7 @@ def get_periods_from_parametrized_sequences( pass return pd.DataFrame() - def save_datapackage_to_csv(self, destination: str) -> None: + def save_datapackage_to_csv(self, location_to_save_to: str = None, datapackage_name: str = "datapackage.json") -> None: """ Saving the datapackage to a given destination in oemof.tabular readable format @@ -283,7 +284,7 @@ def save_datapackage_to_csv(self, destination: str) -> None: ---------- self: DataPackage DataPackage to save - destination: str + location_to_save_to: str String to where the datapackage save to. More convenient to use os.path. If last level of folder stucture does not exist, it will be created (as well as /elements and /sequences) @@ -293,10 +294,21 @@ def save_datapackage_to_csv(self, destination: str) -> None: None if the Datapackage has been saved correctly (no checks implemented) """ + + # check if datapackage already has defined its destination + if location_to_save_to: + pass + elif self.location_to_save_to: + location_to_save_to = self.location_to_save_to + else: + raise ValueError("Please state location_to_save_to either in datapackage or saving call") + + + # Check if filestructure is existent. Create folders if not: - elements_path = os.path.join(destination, "data", "elements") - sequences_path = os.path.join(destination, "data", "sequences") - periods_path = os.path.join(destination, "data", "periods") + elements_path = os.path.join(location_to_save_to, "data", "elements") + sequences_path = os.path.join(location_to_save_to, "data", "sequences") + periods_path = os.path.join(location_to_save_to, "data", "periods") os.makedirs(elements_path, exist_ok=True) os.makedirs(sequences_path, exist_ok=True) @@ -330,7 +342,7 @@ def save_datapackage_to_csv(self, destination: str) -> None: ) # From saved elements and keys create a Package - package = Package(base_path=destination) + package = Package(base_path=location_to_save_to) package.infer(pattern="**/*.csv") # Add foreign keys from self to Package @@ -357,7 +369,7 @@ def save_datapackage_to_csv(self, destination: str) -> None: ) # re-initialize Package with added foreign keys and save datapackage.json - Package(package.descriptor).save(os.path.join(destination, "datapackage.json")) + Package(package.descriptor).save(os.path.join(location_to_save_to, datapackage_name)) return None @@ -421,7 +433,7 @@ def time_series_aggregation(self, tsam_config: str, destination: str = None): """ # Refactor sequences into one Dataframe - self.save_datapackage_to_csv(destination=destination) + self.save_datapackage_to_csv(location_to_save_to=destination) sequences = append_to_columnnames(self.parametrized_sequences) sequences.index = self.periods.index df = pd.concat([self.periods, sequences], axis=1) @@ -443,6 +455,7 @@ def build_datapackage( process_adapter_map: Optional[dict] = PROCESS_ADAPTER_MAP, parameter_map: Optional[dict] = PARAMETER_MAP, bus_map: Optional[dict] = BUS_MAP, + location_to_save_to: str = None ): """ Creating a Datapackage from the oemof_data_adapter that fits oemof.tabular Datapackages. @@ -536,4 +549,5 @@ def build_datapackage( adapter=adapter, foreign_keys=foreign_keys, periods=periods, + location_to_save_to=location_to_save_to ) diff --git a/tests/test_build_datapackage.py b/tests/test_build_datapackage.py index aac14b2..7eea616 100644 --- a/tests/test_build_datapackage.py +++ b/tests/test_build_datapackage.py @@ -206,164 +206,13 @@ def test_tsam(): tsam_folder = os.path.join(path_default, "tsam") # Define Test mock - same as above - def mock_get_process(process_name): - """ - Adding side effects and .scalar and .timeseries - Parameters - ---------- - process_name - - Returns - ------- - mocked function .get_process for Adapter - - """ - if process_name == "modex_tech_storage_battery": - process_mock = mock.Mock() - process_mock.scalars = pd.DataFrame( - { - "region": {0: "BB", 1: "BB", 2: "BB"}, - "year": {0: 2016, 1: 2030, 2: 2050}, - "capacity": {0: 17.8, 1: 17.8, 2: 17.8}, - "invest_relation_output_capacity": {0: 3.3, 1: 3.3, 2: 3.3}, - "tech": { - 0: "storage_battery", - 1: "storage_battery", - 2: "storage_battery", - }, - "carrier": { - 0: "Lithium", - 1: "Lithium", - 2: "Lithium", - }, - "fixed_costs": {0: 1, 1: 2, 2: 3}, - } - ) - process_mock.timeseries = pd.DataFrame() - return process_mock - elif process_name == "modex_tech_generator_gas": - process_mock = mock.Mock() - - process_mock.scalars = pd.DataFrame( - { - "region": {0: "BB", 1: "BB", 2: "BB"}, - "year": {0: 2016, 1: 2030, 2: 2050}, - "installed_capacity": { - 0: 330.2, - 1: 330.2, - 2: 330.2, - }, - "emission_factor": { - 0: 0.2, - 1: 0.2, - 2: 0.2, - }, # Todo: not implemented in any Facade yet?! - "fuel_costs": {0: 25.9, 1: 25.9, 2: 49.36}, - "tech": { - 0: "generator_gas", - 1: "generator_gas", - 2: "generator_gas", - }, - "carrier": { - 0: "gas", - 1: "gas", - 2: "gas", - }, - "condensing_efficiency": { - 0: 0.16, - 1: 0.3, - 2: 0.5, - }, - "electric_efficiency": {0: 0.35, 1: 0.35, 2: 0.4}, - "thermal_efficiency": {0: 0.5, 1: 0.5, 2: 0.45}, - } - ) - - process_mock.timeseries = pd.DataFrame() - return process_mock - elif process_name == "modex_tech_wind_turbine_onshore": - process_mock = mock.Mock() - process_mock.scalars = pd.DataFrame( - { - "region": {0: "BB", 1: "BB", 2: "BB"}, - "year": {0: 2016, 1: 2030, 2: 2050}, - "installed_capacity": { - 0: 5700.03, - 1: 5700.03375, - 2: 5700.03375, - }, - "fixed_costs": {0: 23280.0, 1: 12600.0, 2: 11340.0}, - "lifetime": {0: 25.4, 1: 30.0, 2: 30.0}, - "wacc": {0: 0.07, 1: 0.07, 2: 0.07}, - "tech": { - 0: "wind_turbine_onshore", - 1: "wind_turbine_onshore", - 2: "wind_turbine_onshore", - }, - "carrier": { - 0: "wind", - 1: "wind", - 2: "wind", - }, - } - ) - process_mock.timeseries = pd.DataFrame( - { - "onshore_BB": { - "2016-01-01T00:00:00": 0.0516, - "2016-01-01T01:00:00": 0.051, - "2016-01-01T02:00:00": 0.0444, - "2030-01-01T00:00:00": 0.0526, - "2030-01-01T01:00:00": 0.051, - "2030-01-01T02:00:00": 0.0444, - "2050-01-01T00:00:00": 0.0536, - "2050-01-01T01:00:00": 0.051, - "2050-01-01T02:00:00": 0.0444, - }, - } - ) - return process_mock - - # Create a mock adapter object for testing - mock_adapter = mock.Mock(spec=Adapter) - # Mock the required methods and attributes of the Adapter - mock_adapter.get_structure.return_value = { - "modex_tech_storage_battery": { - "default": {"inputs": ["electricity"], "outputs": []} - }, - "modex_tech_generator_gas": { - "default": {"inputs": ["ch4"], "outputs": ["electricity"]}, - }, - "modex_tech_wind_turbine_onshore": { - "default": {"inputs": ["onshore"], "outputs": ["electricity"]} - }, - } + mock = define_mock() - mock_adapter.get_process.side_effect = mock_get_process - # Call the method with the mock adapter - process_adapter_map = { - "modex_tech_generator_gas": "ExtractionTurbineAdapter", - "modex_tech_storage_battery": "StorageAdapter", - "modex_tech_wind_turbine_onshore": "VolatileAdapter", - } - parameter_map = { - "DEFAULT": { - "marginal_cost": "variable_costs", - "fixed_cost": "fixed_costs", - "capacity_cost": "capital_costs", - }, - "ExtractionTurbineAdapter": { - "carrier_cost": "fuel_costs", - "capacity": "installed_capacity", - }, - "modex_tech_wind_turbine_onshore": {"profile": "onshore"}, - } result = DataPackage.build_datapackage( - adapter= mock_adapter, - process_adapter_map=process_adapter_map, - parameter_map=parameter_map, - path_to_datapackage=tsam_folder - + adapter=mock.mock_adapter, + process_adapter_map=mock.process_adapter_map, + parameter_map=mock.parameter_map, + d ) ############################################################################# From d2715746c3864293caf56f5ebabe57d7c420f3d3 Mon Sep 17 00:00:00 2001 From: FelixMau Date: Wed, 29 Nov 2023 14:52:04 +0100 Subject: [PATCH 05/27] Updating tsam config --- data_adapter_oemof/build_datapackage.py | 6 +++--- tests/_files/tsam/tsam_config.json | 6 +++--- tests/test_build_datapackage.py | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/data_adapter_oemof/build_datapackage.py b/data_adapter_oemof/build_datapackage.py index 65b01cf..18701d4 100644 --- a/data_adapter_oemof/build_datapackage.py +++ b/data_adapter_oemof/build_datapackage.py @@ -4,7 +4,7 @@ from typing import Optional import pandas as pd -import tsam.timeseriesaggregation +import tsam.timeseriesaggregation as tsam from data_adapter import core from data_adapter.preprocessing import Adapter from datapackage import Package @@ -31,7 +31,7 @@ def append_to_columnnames(df_dictionary: dict): for key, df in df_dictionary.items(): df.columns = list(map(lambda c: c+"."+key, df.columns)) renamed_df.append(df) - return pd.concat(renamed_df) + return pd.concat(renamed_df, axis=1) @@ -441,7 +441,7 @@ def time_series_aggregation(self, tsam_config: str, destination: str = None): # Group sequences by Periods for period, period_sequence in df.groupby(by="periods"): period_sequence.drop(["periods", "timeincrement"], axis=1, inplace=True) - aggregation = tsam.timeseriesaggregation.TimeSeriesAggregation( + aggregation = tsam.TimeSeriesAggregation( period_sequence, **tsam_config ) diff --git a/tests/_files/tsam/tsam_config.json b/tests/_files/tsam/tsam_config.json index 6200dc7..44d98bf 100644 --- a/tests/_files/tsam/tsam_config.json +++ b/tests/_files/tsam/tsam_config.json @@ -1,8 +1,8 @@ { - "noTypicalPeriods": 8, - "hoursPerPeriod": 24, + "noTypicalPeriods": 2, + "hoursPerPeriod": 1, "segmentation": true, - "noSegments": 8, + "noSegments": 2, "representationMethod": "distributionAndMinMaxRepresentation", "distributionPeriodWise": false, "clusterMethod": "hierarchical" diff --git a/tests/test_build_datapackage.py b/tests/test_build_datapackage.py index 7eea616..5e57119 100644 --- a/tests/test_build_datapackage.py +++ b/tests/test_build_datapackage.py @@ -212,7 +212,7 @@ def test_tsam(): adapter=mock.mock_adapter, process_adapter_map=mock.process_adapter_map, parameter_map=mock.parameter_map, - d + location_to_save_to=tsam_folder ) ############################################################################# From bdc05418cffcf12ae28ebb748c3d8c3dd5456ada Mon Sep 17 00:00:00 2001 From: FelixMau Date: Wed, 29 Nov 2023 16:02:16 +0100 Subject: [PATCH 06/27] Using Multiindex Instead of complicated string seperators just use multiindex (: Also removing unnecessary function --- data_adapter_oemof/build_datapackage.py | 32 +++++++------------------ 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/data_adapter_oemof/build_datapackage.py b/data_adapter_oemof/build_datapackage.py index 18701d4..62ecaa3 100644 --- a/data_adapter_oemof/build_datapackage.py +++ b/data_adapter_oemof/build_datapackage.py @@ -13,27 +13,6 @@ from data_adapter_oemof.mappings import Mapper from data_adapter_oemof.settings import BUS_MAP, PARAMETER_MAP, PROCESS_ADAPTER_MAP -def append_to_columnnames(df_dictionary: dict): - """ - Appends the `key` to all column names for all Dataframes in dictionary. - . is used as seperator - Then concats all dataframes - Parameters - ---------- - df_dictionary: Dictionary of Dataframes - - Returns - concat pd.Dataframe - ------- - - """ - renamed_df = [] - for key, df in df_dictionary.items(): - df.columns = list(map(lambda c: c+"."+key, df.columns)) - renamed_df.append(df) - return pd.concat(renamed_df, axis=1) - - def refactor_timeseries(timeseries: pd.DataFrame): """ @@ -434,18 +413,25 @@ def time_series_aggregation(self, tsam_config: str, destination: str = None): """ # Refactor sequences into one Dataframe self.save_datapackage_to_csv(location_to_save_to=destination) - sequences = append_to_columnnames(self.parametrized_sequences) + sequences = pd.concat(self.parametrized_sequences.values(), axis = 1, keys=self.parametrized_sequences.keys()) sequences.index = self.periods.index + self.periods.columns = pd.MultiIndex.from_product([["periods"], self.periods.columns]) df = pd.concat([self.periods, sequences], axis=1) # Group sequences by Periods + type_periods = [] for period, period_sequence in df.groupby(by="periods"): period_sequence.drop(["periods", "timeincrement"], axis=1, inplace=True) aggregation = tsam.TimeSeriesAggregation( period_sequence, **tsam_config ) - type_periods = aggregation.createTypicalPeriods() + type_periods.append(aggregation.createTypicalPeriods()) + number_of_periods = len(type_periods) + typical_periods_sequences = pd.concat(type_periods, ignore_index=True) + + for sequence_file_name in typical_periods_sequences.columns: + sequence_file_name.split(".") @classmethod From 73cf06e2c41aebc9c8bc51fd96f7748d493052e8 Mon Sep 17 00:00:00 2001 From: FelixMau Date: Wed, 29 Nov 2023 16:35:17 +0100 Subject: [PATCH 07/27] Write sequences to datapackage --- data_adapter_oemof/build_datapackage.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/data_adapter_oemof/build_datapackage.py b/data_adapter_oemof/build_datapackage.py index 62ecaa3..cf53b37 100644 --- a/data_adapter_oemof/build_datapackage.py +++ b/data_adapter_oemof/build_datapackage.py @@ -415,13 +415,12 @@ def time_series_aggregation(self, tsam_config: str, destination: str = None): self.save_datapackage_to_csv(location_to_save_to=destination) sequences = pd.concat(self.parametrized_sequences.values(), axis = 1, keys=self.parametrized_sequences.keys()) sequences.index = self.periods.index - self.periods.columns = pd.MultiIndex.from_product([["periods"], self.periods.columns]) - df = pd.concat([self.periods, sequences], axis=1) + sequences["periods"] = self.periods.periods # Group sequences by Periods type_periods = [] - for period, period_sequence in df.groupby(by="periods"): - period_sequence.drop(["periods", "timeincrement"], axis=1, inplace=True) + for period, period_sequence in sequences.groupby(by="periods"): + period_sequence.drop(["periods"], axis=1, inplace=True) aggregation = tsam.TimeSeriesAggregation( period_sequence, **tsam_config @@ -430,8 +429,10 @@ def time_series_aggregation(self, tsam_config: str, destination: str = None): number_of_periods = len(type_periods) typical_periods_sequences = pd.concat(type_periods, ignore_index=True) - for sequence_file_name in typical_periods_sequences.columns: - sequence_file_name.split(".") + for sequence_file_name in typical_periods_sequences.columns.get_level_values(level=0).unique(): + sequence = typical_periods_sequences.loc[:, typical_periods_sequences.columns.get_level_values(level=0)==sequence_file_name] + sequence.columns = sequence.columns.droplevel() + self.parametrized_sequences[sequence_file_name] = sequence @classmethod From c1925cb442ebb4403fa72590251a33e6b18db32a Mon Sep 17 00:00:00 2001 From: FelixMau Date: Wed, 29 Nov 2023 16:57:48 +0100 Subject: [PATCH 08/27] Write Periods and save --- data_adapter_oemof/build_datapackage.py | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/data_adapter_oemof/build_datapackage.py b/data_adapter_oemof/build_datapackage.py index cf53b37..b301595 100644 --- a/data_adapter_oemof/build_datapackage.py +++ b/data_adapter_oemof/build_datapackage.py @@ -255,7 +255,8 @@ def get_periods_from_parametrized_sequences( pass return pd.DataFrame() - def save_datapackage_to_csv(self, location_to_save_to: str = None, datapackage_name: str = "datapackage.json") -> None: + def save_datapackage_to_csv(self, location_to_save_to: str = None, datapackage_name: str = "datapackage.json", + tsam: bool = False) -> None: """ Saving the datapackage to a given destination in oemof.tabular readable format @@ -282,6 +283,8 @@ def save_datapackage_to_csv(self, location_to_save_to: str = None, datapackage_n else: raise ValueError("Please state location_to_save_to either in datapackage or saving call") + if tsam: + location_to_save_to = location_to_save_to+"_tsam" # Check if filestructure is existent. Create folders if not: @@ -418,21 +421,25 @@ def time_series_aggregation(self, tsam_config: str, destination: str = None): sequences["periods"] = self.periods.periods # Group sequences by Periods - type_periods = [] + tsam_aggregated_typical_periods = [] for period, period_sequence in sequences.groupby(by="periods"): + index_old = period_sequence["periods"].index period_sequence.drop(["periods"], axis=1, inplace=True) aggregation = tsam.TimeSeriesAggregation( period_sequence, **tsam_config ) - type_periods.append(aggregation.createTypicalPeriods()) - number_of_periods = len(type_periods) - typical_periods_sequences = pd.concat(type_periods, ignore_index=True) + aggregation = aggregation.createTypicalPeriods() + aggregation.index = index_old[:len(aggregation)] + tsam_aggregated_typical_periods.append(aggregation) + tsam_aggregated_typical_periods= pd.concat(tsam_aggregated_typical_periods, ignore_index=False) - for sequence_file_name in typical_periods_sequences.columns.get_level_values(level=0).unique(): - sequence = typical_periods_sequences.loc[:, typical_periods_sequences.columns.get_level_values(level=0)==sequence_file_name] + for sequence_file_name in tsam_aggregated_typical_periods.columns.get_level_values(level=0).unique(): + sequence = tsam_aggregated_typical_periods.loc[:, tsam_aggregated_typical_periods.columns.get_level_values(level=0)==sequence_file_name] sequence.columns = sequence.columns.droplevel() self.parametrized_sequences[sequence_file_name] = sequence + self.periods = self.get_periods_from_parametrized_sequences(self.parametrized_sequences) + self.save_datapackage_to_csv(tsam=True) @classmethod @@ -518,8 +525,8 @@ def build_datapackage( ) parametrized_elements[process_name] = pd.DataFrame(components) - - parametrized_sequences = {process_name: timeseries} + 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( { From 39a80a3d0a18d8ca143870817953a6d42e67c3db Mon Sep 17 00:00:00 2001 From: FelixMau Date: Wed, 29 Nov 2023 17:00:17 +0100 Subject: [PATCH 09/27] Linting --- data_adapter_oemof/build_datapackage.py | 56 +- .../build_datapackage_goal/datapackage.json | 1176 ++++++++--------- tests/_files/tsam/tsam_config.json | 8 +- tests/test_build_datapackage.py | 10 +- 4 files changed, 632 insertions(+), 618 deletions(-) diff --git a/data_adapter_oemof/build_datapackage.py b/data_adapter_oemof/build_datapackage.py index b301595..ece448c 100644 --- a/data_adapter_oemof/build_datapackage.py +++ b/data_adapter_oemof/build_datapackage.py @@ -255,8 +255,12 @@ def get_periods_from_parametrized_sequences( pass return pd.DataFrame() - def save_datapackage_to_csv(self, location_to_save_to: str = None, datapackage_name: str = "datapackage.json", - tsam: bool = False) -> None: + def save_datapackage_to_csv( + self, + location_to_save_to: str = None, + datapackage_name: str = "datapackage.json", + tsam: bool = False, + ) -> None: """ Saving the datapackage to a given destination in oemof.tabular readable format @@ -281,11 +285,12 @@ def save_datapackage_to_csv(self, location_to_save_to: str = None, datapackage_n elif self.location_to_save_to: location_to_save_to = self.location_to_save_to else: - raise ValueError("Please state location_to_save_to either in datapackage or saving call") + raise ValueError( + "Please state location_to_save_to either in datapackage or saving call" + ) if tsam: - location_to_save_to = location_to_save_to+"_tsam" - + location_to_save_to = location_to_save_to + "_tsam" # Check if filestructure is existent. Create folders if not: elements_path = os.path.join(location_to_save_to, "data", "elements") @@ -351,7 +356,9 @@ def save_datapackage_to_csv(self, location_to_save_to: str = None, datapackage_n ) # re-initialize Package with added foreign keys and save datapackage.json - Package(package.descriptor).save(os.path.join(location_to_save_to, datapackage_name)) + Package(package.descriptor).save( + os.path.join(location_to_save_to, datapackage_name) + ) return None @@ -400,7 +407,6 @@ def yearly_scalars_to_periodic_values(scalar_dataframe) -> None: ) return scalar_dataframe - def time_series_aggregation(self, tsam_config: str, destination: str = None): """ Aggregates time series in datapackage and saves the new datapackage with updated @@ -416,7 +422,11 @@ def time_series_aggregation(self, tsam_config: str, destination: str = None): """ # Refactor sequences into one Dataframe self.save_datapackage_to_csv(location_to_save_to=destination) - sequences = pd.concat(self.parametrized_sequences.values(), axis = 1, keys=self.parametrized_sequences.keys()) + sequences = pd.concat( + self.parametrized_sequences.values(), + axis=1, + keys=self.parametrized_sequences.keys(), + ) sequences.index = self.periods.index sequences["periods"] = self.periods.periods @@ -425,23 +435,29 @@ def time_series_aggregation(self, tsam_config: str, destination: str = None): for period, period_sequence in sequences.groupby(by="periods"): index_old = period_sequence["periods"].index period_sequence.drop(["periods"], axis=1, inplace=True) - aggregation = tsam.TimeSeriesAggregation( - period_sequence, - **tsam_config - ) + aggregation = tsam.TimeSeriesAggregation(period_sequence, **tsam_config) aggregation = aggregation.createTypicalPeriods() - aggregation.index = index_old[:len(aggregation)] + aggregation.index = index_old[: len(aggregation)] tsam_aggregated_typical_periods.append(aggregation) - tsam_aggregated_typical_periods= pd.concat(tsam_aggregated_typical_periods, ignore_index=False) + tsam_aggregated_typical_periods = pd.concat( + tsam_aggregated_typical_periods, ignore_index=False + ) - for sequence_file_name in tsam_aggregated_typical_periods.columns.get_level_values(level=0).unique(): - sequence = tsam_aggregated_typical_periods.loc[:, tsam_aggregated_typical_periods.columns.get_level_values(level=0)==sequence_file_name] + for ( + sequence_file_name + ) in tsam_aggregated_typical_periods.columns.get_level_values(level=0).unique(): + sequence = tsam_aggregated_typical_periods.loc[ + :, + tsam_aggregated_typical_periods.columns.get_level_values(level=0) + == sequence_file_name, + ] sequence.columns = sequence.columns.droplevel() self.parametrized_sequences[sequence_file_name] = sequence - self.periods = self.get_periods_from_parametrized_sequences(self.parametrized_sequences) + self.periods = self.get_periods_from_parametrized_sequences( + self.parametrized_sequences + ) self.save_datapackage_to_csv(tsam=True) - @classmethod def build_datapackage( cls, @@ -449,7 +465,7 @@ def build_datapackage( process_adapter_map: Optional[dict] = PROCESS_ADAPTER_MAP, parameter_map: Optional[dict] = PARAMETER_MAP, bus_map: Optional[dict] = BUS_MAP, - location_to_save_to: str = None + location_to_save_to: str = None, ): """ Creating a Datapackage from the oemof_data_adapter that fits oemof.tabular Datapackages. @@ -543,5 +559,5 @@ def build_datapackage( adapter=adapter, foreign_keys=foreign_keys, periods=periods, - location_to_save_to=location_to_save_to + location_to_save_to=location_to_save_to, ) diff --git a/tests/_files/build_datapackage_goal/datapackage.json b/tests/_files/build_datapackage_goal/datapackage.json index b0a9d9c..4f2b7ff 100644 --- a/tests/_files/build_datapackage_goal/datapackage.json +++ b/tests/_files/build_datapackage_goal/datapackage.json @@ -1,600 +1,600 @@ { - "profile": "tabular-data-package", - "resources": [ - { - "path": "data/sequences/modex_tech_Load_sequence.csv", - "profile": "tabular-data-resource", - "name": "modex_tech_Load_sequence", - "format": "csv", - "mediatype": "text/csv", - "encoding": "utf-8", - "schema": { - "fields": [ - { - "name": "timeindex", - "type": "string", - "format": "default" - }, - { - "name": "Load_BB", - "type": "number", - "format": "default" - } - ], - "missingValues": [ - "" - ], - "foreignKeys": [] - } - }, - { - "path": "data/sequences/modex_tech_storage_battery_sequence.csv", - "profile": "tabular-data-resource", - "name": "modex_tech_storage_battery_sequence", - "format": "csv", - "mediatype": "text/csv", - "encoding": "utf-8", - "schema": { - "fields": [ - { - "name": "timeindex", - "type": "string", - "format": "default" - } - ], - "missingValues": [ - "" - ], - "foreignKeys": [] + "profile": "tabular-data-package", + "resources": [ + { + "encoding": "utf-8", + "format": "csv", + "mediatype": "text/csv", + "name": "modex_tech_Load_sequence", + "path": "data/sequences/modex_tech_Load_sequence.csv", + "profile": "tabular-data-resource", + "schema": { + "fields": [ + { + "format": "default", + "name": "timeindex", + "type": "string" + }, + { + "format": "default", + "name": "Load_BB", + "type": "number" + } + ], + "foreignKeys": [], + "missingValues": [ + "" + ] + } + }, + { + "encoding": "utf-8", + "format": "csv", + "mediatype": "text/csv", + "name": "modex_tech_storage_battery_sequence", + "path": "data/sequences/modex_tech_storage_battery_sequence.csv", + "profile": "tabular-data-resource", + "schema": { + "fields": [ + { + "format": "default", + "name": "timeindex", + "type": "string" + } + ], + "foreignKeys": [], + "missingValues": [ + "" + ] + } + }, + { + "encoding": "utf-8", + "format": "csv", + "mediatype": "text/csv", + "name": "modex_tech_generator_gas_sequence", + "path": "data/sequences/modex_tech_generator_gas_sequence.csv", + "profile": "tabular-data-resource", + "schema": { + "fields": [ + { + "format": "default", + "name": "timeindex", + "type": "string" + } + ], + "foreignKeys": [], + "missingValues": [ + "" + ] + } + }, + { + "encoding": "utf-8", + "format": "csv", + "mediatype": "text/csv", + "name": "modex_tech_wind_turbine_onshore_sequence", + "path": "data/sequences/modex_tech_wind_turbine_onshore_sequence.csv", + "profile": "tabular-data-resource", + "schema": { + "fields": [ + { + "format": "default", + "name": "timeindex", + "type": "string" + }, + { + "format": "default", + "name": "onshore_BB", + "type": "number" + } + ], + "foreignKeys": [], + "missingValues": [ + "" + ] + } + }, + { + "encoding": "utf-8", + "format": "csv", + "mediatype": "text/csv", + "name": "modex_tech_photovoltaic_utility_sequence", + "path": "data/sequences/modex_tech_photovoltaic_utility_sequence.csv", + "profile": "tabular-data-resource", + "schema": { + "fields": [ + { + "format": "default", + "name": "timeindex", + "type": "string" + }, + { + "format": "default", + "name": "photovoltaic_BB", + "type": "number" + } + ], + "foreignKeys": [], + "missingValues": [ + "" + ] + } + }, + { + "encoding": "utf-8", + "format": "csv", + "mediatype": "text/csv", + "name": "periods", + "path": "data/periods/periods.csv", + "profile": "tabular-data-resource", + "schema": { + "fields": [ + { + "format": "default", + "name": "timeindex", + "type": "string" + }, + { + "format": "default", + "name": "periods", + "type": "integer" + }, + { + "format": "default", + "name": "timeincrement", + "type": "integer" + } + ], + "foreignKeys": [], + "missingValues": [ + "" + ] + } + }, + { + "encoding": "utf-8", + "format": "csv", + "mediatype": "text/csv", + "name": "bus", + "path": "data/elements/bus.csv", + "profile": "tabular-data-resource", + "schema": { + "fields": [ + { + "format": "default", + "name": "name", + "type": "string" + }, + { + "format": "default", + "name": "type", + "type": "string" + }, + { + "format": "default", + "name": "balanced", + "type": "boolean" + } + ], + "foreignKeys": [], + "missingValues": [ + "" + ], + "primaryKey": "name" + } + }, + { + "encoding": "utf-8", + "format": "csv", + "mediatype": "text/csv", + "name": "modex_tech_storage_battery", + "path": "data/elements/modex_tech_storage_battery.csv", + "profile": "tabular-data-resource", + "schema": { + "fields": [ + { + "format": "default", + "name": "type", + "type": "string" + }, + { + "format": "default", + "name": "carrier", + "type": "string" + }, + { + "format": "default", + "name": "tech", + "type": "string" + }, + { + "format": "default", + "name": "capacity", + "type": "number" + }, + { + "format": "default", + "name": "fixed_costs", + "type": "array" + }, + { + "format": "default", + "name": "name", + "type": "string" + }, + { + "format": "default", + "name": "region", + "type": "string" + }, + { + "format": "default", + "name": "year", + "type": "array" + }, + { + "format": "default", + "name": "invest_relation_output_capacity", + "type": "number" + }, + { + "format": "default", + "name": "bus", + "type": "string" + } + ], + "foreignKeys": [ + { + "fields": "bus", + "reference": { + "fields": "name", + "resource": "bus" } - }, - { - "path": "data/sequences/modex_tech_generator_gas_sequence.csv", - "profile": "tabular-data-resource", - "name": "modex_tech_generator_gas_sequence", - "format": "csv", - "mediatype": "text/csv", - "encoding": "utf-8", - "schema": { - "fields": [ - { - "name": "timeindex", - "type": "string", - "format": "default" - } - ], - "missingValues": [ - "" - ], - "foreignKeys": [] + } + ], + "missingValues": [ + "" + ], + "primaryKey": "name" + } + }, + { + "encoding": "utf-8", + "format": "csv", + "mediatype": "text/csv", + "name": "modex_tech_generator_gas", + "path": "data/elements/modex_tech_generator_gas.csv", + "profile": "tabular-data-resource", + "schema": { + "fields": [ + { + "format": "default", + "name": "type", + "type": "string" + }, + { + "format": "default", + "name": "carrier", + "type": "string" + }, + { + "format": "default", + "name": "tech", + "type": "string" + }, + { + "format": "default", + "name": "condensing_efficiency", + "type": "array" + }, + { + "format": "default", + "name": "electric_efficiency", + "type": "array" + }, + { + "format": "default", + "name": "thermal_efficiency", + "type": "array" + }, + { + "format": "default", + "name": "capacity", + "type": "number" + }, + { + "format": "default", + "name": "carrier_cost", + "type": "array" + }, + { + "format": "default", + "name": "name", + "type": "string" + }, + { + "format": "default", + "name": "region", + "type": "string" + }, + { + "format": "default", + "name": "year", + "type": "array" + }, + { + "format": "default", + "name": "electricity_bus", + "type": "string" + }, + { + "format": "default", + "name": "heat_bus", + "type": "string" + }, + { + "format": "default", + "name": "fuel_bus", + "type": "string" + } + ], + "foreignKeys": [ + { + "fields": "electricity_bus", + "reference": { + "fields": "name", + "resource": "bus" } - }, - { - "path": "data/sequences/modex_tech_wind_turbine_onshore_sequence.csv", - "profile": "tabular-data-resource", - "name": "modex_tech_wind_turbine_onshore_sequence", - "format": "csv", - "mediatype": "text/csv", - "encoding": "utf-8", - "schema": { - "fields": [ - { - "name": "timeindex", - "type": "string", - "format": "default" - }, - { - "name": "onshore_BB", - "type": "number", - "format": "default" - } - ], - "missingValues": [ - "" - ], - "foreignKeys": [] + }, + { + "fields": "heat_bus", + "reference": { + "fields": "name", + "resource": "bus" } - }, - { - "path": "data/sequences/modex_tech_photovoltaic_utility_sequence.csv", - "profile": "tabular-data-resource", - "name": "modex_tech_photovoltaic_utility_sequence", - "format": "csv", - "mediatype": "text/csv", - "encoding": "utf-8", - "schema": { - "fields": [ - { - "name": "timeindex", - "type": "string", - "format": "default" - }, - { - "name": "photovoltaic_BB", - "type": "number", - "format": "default" - } - ], - "missingValues": [ - "" - ], - "foreignKeys": [] + }, + { + "fields": "fuel_bus", + "reference": { + "fields": "name", + "resource": "bus" } - }, - { - "path": "data/periods/periods.csv", - "profile": "tabular-data-resource", - "name": "periods", - "format": "csv", - "mediatype": "text/csv", - "encoding": "utf-8", - "schema": { - "fields": [ - { - "name": "timeindex", - "type": "string", - "format": "default" - }, - { - "name": "periods", - "type": "integer", - "format": "default" - }, - { - "name": "timeincrement", - "type": "integer", - "format": "default" - } - ], - "missingValues": [ - "" - ], - "foreignKeys": [] - } - }, - { - "path": "data/elements/bus.csv", - "profile": "tabular-data-resource", + } + ], + "missingValues": [ + "" + ], + "primaryKey": "name" + } + }, + { + "encoding": "utf-8", + "format": "csv", + "mediatype": "text/csv", + "name": "modex_tech_photovoltaic_utility", + "path": "data/elements/modex_tech_photovoltaic_utility.csv", + "profile": "tabular-data-resource", + "schema": { + "fields": [ + { + "format": "default", + "name": "type", + "type": "string" + }, + { + "format": "default", + "name": "carrier", + "type": "string" + }, + { + "format": "default", + "name": "tech", + "type": "string" + }, + { + "format": "default", + "name": "profile", + "type": "string" + }, + { + "format": "default", + "name": "lifetime", + "type": "array" + }, + { + "format": "default", + "name": "fixed_costs", + "type": "array" + }, + { + "format": "default", + "name": "name", + "type": "string" + }, + { + "format": "default", + "name": "region", + "type": "string" + }, + { + "format": "default", + "name": "year", + "type": "array" + }, + { + "format": "default", "name": "bus", - "format": "csv", - "mediatype": "text/csv", - "encoding": "utf-8", - "schema": { - "fields": [ - { - "name": "name", - "type": "string", - "format": "default" - }, - { - "name": "type", - "type": "string", - "format": "default" - }, - { - "name": "balanced", - "type": "boolean", - "format": "default" - } - ], - "missingValues": [ - "" - ], - "foreignKeys": [], - "primaryKey": "name" + "type": "string" + } + ], + "foreignKeys": [ + { + "fields": "bus", + "reference": { + "fields": "name", + "resource": "bus" } - }, - { - "path": "data/elements/modex_tech_storage_battery.csv", - "profile": "tabular-data-resource", - "name": "modex_tech_storage_battery", - "format": "csv", - "mediatype": "text/csv", - "encoding": "utf-8", - "schema": { - "fields": [ - { - "name": "type", - "type": "string", - "format": "default" - }, - { - "name": "carrier", - "type": "string", - "format": "default" - }, - { - "name": "tech", - "type": "string", - "format": "default" - }, - { - "name": "capacity", - "type": "number", - "format": "default" - }, - { - "name": "fixed_costs", - "type": "array", - "format": "default" - }, - { - "name": "name", - "type": "string", - "format": "default" - }, - { - "name": "region", - "type": "string", - "format": "default" - }, - { - "name": "year", - "type": "array", - "format": "default" - }, - { - "name": "invest_relation_output_capacity", - "type": "number", - "format": "default" - }, - { - "name": "bus", - "type": "string", - "format": "default" - } - ], - "missingValues": [ - "" - ], - "foreignKeys": [ - { - "fields": "bus", - "reference": { - "fields": "name", - "resource": "bus" - } - } - ], - "primaryKey": "name" + }, + { + "fields": "profile", + "reference": { + "resource": "modex_tech_photovoltaic_utility_sequence" } - }, - { - "path": "data/elements/modex_tech_generator_gas.csv", - "profile": "tabular-data-resource", - "name": "modex_tech_generator_gas", - "format": "csv", - "mediatype": "text/csv", - "encoding": "utf-8", - "schema": { - "fields": [ - { - "name": "type", - "type": "string", - "format": "default" - }, - { - "name": "carrier", - "type": "string", - "format": "default" - }, - { - "name": "tech", - "type": "string", - "format": "default" - }, - { - "name": "condensing_efficiency", - "type": "array", - "format": "default" - }, - { - "name": "electric_efficiency", - "type": "array", - "format": "default" - }, - { - "name": "thermal_efficiency", - "type": "array", - "format": "default" - }, - { - "name": "capacity", - "type": "number", - "format": "default" - }, - { - "name": "carrier_cost", - "type": "array", - "format": "default" - }, - { - "name": "name", - "type": "string", - "format": "default" - }, - { - "name": "region", - "type": "string", - "format": "default" - }, - { - "name": "year", - "type": "array", - "format": "default" - }, - { - "name": "electricity_bus", - "type": "string", - "format": "default" - }, - { - "name": "heat_bus", - "type": "string", - "format": "default" - }, - { - "name": "fuel_bus", - "type": "string", - "format": "default" - } - ], - "missingValues": [ - "" - ], - "foreignKeys": [ - { - "fields": "electricity_bus", - "reference": { - "fields": "name", - "resource": "bus" - } - }, - { - "fields": "heat_bus", - "reference": { - "fields": "name", - "resource": "bus" - } - }, - { - "fields": "fuel_bus", - "reference": { - "fields": "name", - "resource": "bus" - } - } - ], - "primaryKey": "name" + } + ], + "missingValues": [ + "" + ], + "primaryKey": "name" + } + }, + { + "encoding": "utf-8", + "format": "csv", + "mediatype": "text/csv", + "name": "modex_tech_wind_turbine_onshore", + "path": "data/elements/modex_tech_wind_turbine_onshore.csv", + "profile": "tabular-data-resource", + "schema": { + "fields": [ + { + "format": "default", + "name": "type", + "type": "string" + }, + { + "format": "default", + "name": "carrier", + "type": "string" + }, + { + "format": "default", + "name": "tech", + "type": "string" + }, + { + "format": "default", + "name": "profile", + "type": "string" + }, + { + "format": "default", + "name": "lifetime", + "type": "array" + }, + { + "format": "default", + "name": "fixed_costs", + "type": "array" + }, + { + "format": "default", + "name": "name", + "type": "string" + }, + { + "format": "default", + "name": "region", + "type": "string" + }, + { + "format": "default", + "name": "year", + "type": "array" + }, + { + "format": "default", + "name": "bus", + "type": "string" + } + ], + "foreignKeys": [ + { + "fields": "bus", + "reference": { + "fields": "name", + "resource": "bus" } - }, - { - "path": "data/elements/modex_tech_photovoltaic_utility.csv", - "profile": "tabular-data-resource", - "name": "modex_tech_photovoltaic_utility", - "format": "csv", - "mediatype": "text/csv", - "encoding": "utf-8", - "schema": { - "fields": [ - { - "name": "type", - "type": "string", - "format": "default" - }, - { - "name": "carrier", - "type": "string", - "format": "default" - }, - { - "name": "tech", - "type": "string", - "format": "default" - }, - { - "name": "profile", - "type": "string", - "format": "default" - }, - { - "name": "lifetime", - "type": "array", - "format": "default" - }, - { - "name": "fixed_costs", - "type": "array", - "format": "default" - }, - { - "name": "name", - "type": "string", - "format": "default" - }, - { - "name": "region", - "type": "string", - "format": "default" - }, - { - "name": "year", - "type": "array", - "format": "default" - }, - { - "name": "bus", - "type": "string", - "format": "default" - } - ], - "missingValues": [ - "" - ], - "foreignKeys": [ - { - "fields": "bus", - "reference": { - "fields": "name", - "resource": "bus" - } - }, - { - "fields": "profile", - "reference": { - "resource": "modex_tech_photovoltaic_utility_sequence" - } - } - ], - "primaryKey": "name" + }, + { + "fields": "profile", + "reference": { + "resource": "modex_tech_wind_turbine_onshore_sequence" } - }, - { - "path": "data/elements/modex_tech_wind_turbine_onshore.csv", - "profile": "tabular-data-resource", - "name": "modex_tech_wind_turbine_onshore", - "format": "csv", - "mediatype": "text/csv", - "encoding": "utf-8", - "schema": { - "fields": [ - { - "name": "type", - "type": "string", - "format": "default" - }, - { - "name": "carrier", - "type": "string", - "format": "default" - }, - { - "name": "tech", - "type": "string", - "format": "default" - }, - { - "name": "profile", - "type": "string", - "format": "default" - }, - { - "name": "lifetime", - "type": "array", - "format": "default" - }, - { - "name": "fixed_costs", - "type": "array", - "format": "default" - }, - { - "name": "name", - "type": "string", - "format": "default" - }, - { - "name": "region", - "type": "string", - "format": "default" - }, - { - "name": "year", - "type": "array", - "format": "default" - }, - { - "name": "bus", - "type": "string", - "format": "default" - } - ], - "missingValues": [ - "" - ], - "foreignKeys": [ - { - "fields": "bus", - "reference": { - "fields": "name", - "resource": "bus" - } - }, - { - "fields": "profile", - "reference": { - "resource": "modex_tech_wind_turbine_onshore_sequence" - } - } - ], - "primaryKey": "name" + } + ], + "missingValues": [ + "" + ], + "primaryKey": "name" + } + }, + { + "encoding": "utf-8", + "format": "csv", + "mediatype": "text/csv", + "name": "modex_tech_Load", + "path": "data/elements/modex_tech_Load.csv", + "profile": "tabular-data-resource", + "schema": { + "fields": [ + { + "format": "default", + "name": "type", + "type": "string" + }, + { + "format": "default", + "name": "amount", + "type": "array" + }, + { + "format": "default", + "name": "profile", + "type": "string" + }, + { + "format": "default", + "name": "name", + "type": "string" + }, + { + "format": "default", + "name": "region", + "type": "string" + }, + { + "format": "default", + "name": "year", + "type": "array" + }, + { + "format": "default", + "name": "bus", + "type": "string" + } + ], + "foreignKeys": [ + { + "fields": "bus", + "reference": { + "fields": "name", + "resource": "bus" } - }, - { - "path": "data/elements/modex_tech_Load.csv", - "profile": "tabular-data-resource", - "name": "modex_tech_Load", - "format": "csv", - "mediatype": "text/csv", - "encoding": "utf-8", - "schema": { - "fields": [ - { - "name": "type", - "type": "string", - "format": "default" - }, - { - "name": "amount", - "type": "array", - "format": "default" - }, - { - "name": "profile", - "type": "string", - "format": "default" - }, - { - "name": "name", - "type": "string", - "format": "default" - }, - { - "name": "region", - "type": "string", - "format": "default" - }, - { - "name": "year", - "type": "array", - "format": "default" - }, - { - "name": "bus", - "type": "string", - "format": "default" - } - ], - "missingValues": [ - "" - ], - "foreignKeys": [ - { - "fields": "bus", - "reference": { - "fields": "name", - "resource": "bus" - } - }, - { - "fields": "profile", - "reference": { - "resource": "modex_tech_Load_sequence" - } - } - ], - "primaryKey": "name" + }, + { + "fields": "profile", + "reference": { + "resource": "modex_tech_Load_sequence" } - } - ] -} \ No newline at end of file + } + ], + "missingValues": [ + "" + ], + "primaryKey": "name" + } + } + ] +} diff --git a/tests/_files/tsam/tsam_config.json b/tests/_files/tsam/tsam_config.json index 44d98bf..48050cd 100644 --- a/tests/_files/tsam/tsam_config.json +++ b/tests/_files/tsam/tsam_config.json @@ -1,9 +1,9 @@ { - "noTypicalPeriods": 2, + "clusterMethod": "hierarchical", + "distributionPeriodWise": false, "hoursPerPeriod": 1, - "segmentation": true, "noSegments": 2, + "noTypicalPeriods": 2, "representationMethod": "distributionAndMinMaxRepresentation", - "distributionPeriodWise": false, - "clusterMethod": "hierarchical" + "segmentation": true } diff --git a/tests/test_build_datapackage.py b/tests/test_build_datapackage.py index 5e57119..02a0bd8 100644 --- a/tests/test_build_datapackage.py +++ b/tests/test_build_datapackage.py @@ -1,7 +1,5 @@ -import os -from unittest import mock -import tsam.timeseriesaggregation as tsam import json +import os import pandas as pd import pytest @@ -60,7 +58,7 @@ def test_build_datapackage(): mock = define_mock() result = DataPackage.build_datapackage( - adapter= mock.mock_adapter, + adapter=mock.mock_adapter, process_adapter_map=mock.process_adapter_map, parameter_map=mock.parameter_map, ) @@ -195,6 +193,7 @@ def test_period_csv_creation(): sequence_goal.index.name = "timeindex" pd.testing.assert_frame_equal(sequence_goal, sequence_created) + def test_tsam(): """ Uses Mock to create datapackage and then applies timeseries aggregation to it. @@ -212,7 +211,7 @@ def test_tsam(): adapter=mock.mock_adapter, process_adapter_map=mock.process_adapter_map, parameter_map=mock.parameter_map, - location_to_save_to=tsam_folder + location_to_save_to=tsam_folder, ) ############################################################################# @@ -225,4 +224,3 @@ def test_tsam(): tsam_config = json.load(f) result.time_series_aggregation(tsam_config=tsam_config) - From 9ae2d73e172a287512f78ea2defa9eb52c7b5307 Mon Sep 17 00:00:00 2001 From: FelixMau Date: Wed, 29 Nov 2023 17:05:52 +0100 Subject: [PATCH 10/27] Cleaning up a little --- data_adapter_oemof/build_datapackage.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_adapter_oemof/build_datapackage.py b/data_adapter_oemof/build_datapackage.py index ece448c..f6a9487 100644 --- a/data_adapter_oemof/build_datapackage.py +++ b/data_adapter_oemof/build_datapackage.py @@ -433,7 +433,7 @@ def time_series_aggregation(self, tsam_config: str, destination: str = None): # Group sequences by Periods tsam_aggregated_typical_periods = [] for period, period_sequence in sequences.groupby(by="periods"): - index_old = period_sequence["periods"].index + index_old = period_sequence.index period_sequence.drop(["periods"], axis=1, inplace=True) aggregation = tsam.TimeSeriesAggregation(period_sequence, **tsam_config) aggregation = aggregation.createTypicalPeriods() From 75198bb404364107131565422f9c5e3281177bb8 Mon Sep 17 00:00:00 2001 From: FelixMau Date: Wed, 29 Nov 2023 17:10:08 +0100 Subject: [PATCH 11/27] Writing Comments --- data_adapter_oemof/build_datapackage.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/data_adapter_oemof/build_datapackage.py b/data_adapter_oemof/build_datapackage.py index f6a9487..aaf00d7 100644 --- a/data_adapter_oemof/build_datapackage.py +++ b/data_adapter_oemof/build_datapackage.py @@ -433,29 +433,39 @@ def time_series_aggregation(self, tsam_config: str, destination: str = None): # Group sequences by Periods tsam_aggregated_typical_periods = [] for period, period_sequence in sequences.groupby(by="periods"): + # Saving the old Index to have it for later periods creation index_old = period_sequence.index + # Throw away data that might disturb aggregation period_sequence.drop(["periods"], axis=1, inplace=True) + # Aggregate aggregation = tsam.TimeSeriesAggregation(period_sequence, **tsam_config) aggregation = aggregation.createTypicalPeriods() + # Use old Index with as many as needed entries aggregation.index = index_old[: len(aggregation)] tsam_aggregated_typical_periods.append(aggregation) + # Aggregate split periods back together again tsam_aggregated_typical_periods = pd.concat( tsam_aggregated_typical_periods, ignore_index=False ) + # Rewrite the aggregated sequences to datapackage sequences for ( sequence_file_name ) in tsam_aggregated_typical_periods.columns.get_level_values(level=0).unique(): + # Get all sequences that belong in one sheet together sequence = tsam_aggregated_typical_periods.loc[ :, tsam_aggregated_typical_periods.columns.get_level_values(level=0) == sequence_file_name, ] + # Remove disturbing Multiindex again sequence.columns = sequence.columns.droplevel() self.parametrized_sequences[sequence_file_name] = sequence + # Recreate Periods self.periods = self.get_periods_from_parametrized_sequences( self.parametrized_sequences ) + # Save with newly introduced tsam trigger self.save_datapackage_to_csv(tsam=True) @classmethod From d3904b47f4e3b14392425551507984e37981b39b Mon Sep 17 00:00:00 2001 From: FelixMau Date: Thu, 30 Nov 2023 12:20:11 +0100 Subject: [PATCH 12/27] Performance & periodic tsam config --- data_adapter_oemof/build_datapackage.py | 26 +++++++++---------- tests/_files/tsam/tsam_config.json | 34 ++++++++++++++++++++----- 2 files changed, 40 insertions(+), 20 deletions(-) diff --git a/data_adapter_oemof/build_datapackage.py b/data_adapter_oemof/build_datapackage.py index aaf00d7..50594c4 100644 --- a/data_adapter_oemof/build_datapackage.py +++ b/data_adapter_oemof/build_datapackage.py @@ -246,8 +246,12 @@ def get_periods_from_parametrized_sequences( for process_name, sequence in parametrized_sequences.items(): if len(sequence) != 0: sequence = pd.DataFrame(index=pd.to_datetime(sequence.index)) - sequence["periods"] = sequence.groupby(sequence.index.year).ngroup() - # TODO timeincrement might be adjusted later to modify objective weighting + # create mapping to count up unique years + year_mapping = { + year: i for i, year in enumerate(sequence.index.year.unique()) + } + # Map unique years to sequence instead of using groupby + sequence["periods"] = sequence.index.year.map(year_mapping) sequence["timeincrement"] = 1 sequence.index.name = "timeindex" return sequence @@ -259,7 +263,6 @@ def save_datapackage_to_csv( self, location_to_save_to: str = None, datapackage_name: str = "datapackage.json", - tsam: bool = False, ) -> None: """ Saving the datapackage to a given destination in oemof.tabular readable format @@ -289,9 +292,6 @@ def save_datapackage_to_csv( "Please state location_to_save_to either in datapackage or saving call" ) - if tsam: - location_to_save_to = location_to_save_to + "_tsam" - # Check if filestructure is existent. Create folders if not: elements_path = os.path.join(location_to_save_to, "data", "elements") sequences_path = os.path.join(location_to_save_to, "data", "sequences") @@ -427,18 +427,18 @@ def time_series_aggregation(self, tsam_config: str, destination: str = None): axis=1, keys=self.parametrized_sequences.keys(), ) + # Setting sequence indices to be same as periods sequences.index = self.periods.index - sequences["periods"] = self.periods.periods - # Group sequences by Periods tsam_aggregated_typical_periods = [] - for period, period_sequence in sequences.groupby(by="periods"): + for period in pd.unique(self.periods["periods"]): # Saving the old Index to have it for later periods creation - index_old = period_sequence.index - # Throw away data that might disturb aggregation - period_sequence.drop(["periods"], axis=1, inplace=True) + index_old = self.periods.index[self.periods["periods"] == period] + period_sequence = sequences.loc[index_old] # Aggregate - aggregation = tsam.TimeSeriesAggregation(period_sequence, **tsam_config) + aggregation = tsam.TimeSeriesAggregation( + period_sequence, **tsam_config[str(period)] + ) aggregation = aggregation.createTypicalPeriods() # Use old Index with as many as needed entries aggregation.index = index_old[: len(aggregation)] diff --git a/tests/_files/tsam/tsam_config.json b/tests/_files/tsam/tsam_config.json index 48050cd..a4049c1 100644 --- a/tests/_files/tsam/tsam_config.json +++ b/tests/_files/tsam/tsam_config.json @@ -1,9 +1,29 @@ { - "clusterMethod": "hierarchical", - "distributionPeriodWise": false, - "hoursPerPeriod": 1, - "noSegments": 2, - "noTypicalPeriods": 2, - "representationMethod": "distributionAndMinMaxRepresentation", - "segmentation": true + "0": { + "clusterMethod": "hierarchical", + "distributionPeriodWise": false, + "hoursPerPeriod": 1, + "noSegments": 2, + "noTypicalPeriods": 2, + "representationMethod": "distributionAndMinMaxRepresentation", + "segmentation": true + }, + "1": { + "clusterMethod": "hierarchical", + "distributionPeriodWise": false, + "hoursPerPeriod": 1, + "noSegments": 2, + "noTypicalPeriods": 2, + "representationMethod": "distributionAndMinMaxRepresentation", + "segmentation": true + }, + "2": { + "clusterMethod": "hierarchical", + "distributionPeriodWise": false, + "hoursPerPeriod": 1, + "noSegments": 2, + "noTypicalPeriods": 2, + "representationMethod": "distributionAndMinMaxRepresentation", + "segmentation": true + } } From 74bd093f8b11ca575caee82469ead22497e30471 Mon Sep 17 00:00:00 2001 From: FelixMau Date: Thu, 30 Nov 2023 12:23:28 +0100 Subject: [PATCH 13/27] List for config instead of dict --- data_adapter_oemof/build_datapackage.py | 2 +- tests/_files/tsam/tsam_config.json | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/data_adapter_oemof/build_datapackage.py b/data_adapter_oemof/build_datapackage.py index 50594c4..5907578 100644 --- a/data_adapter_oemof/build_datapackage.py +++ b/data_adapter_oemof/build_datapackage.py @@ -437,7 +437,7 @@ def time_series_aggregation(self, tsam_config: str, destination: str = None): period_sequence = sequences.loc[index_old] # Aggregate aggregation = tsam.TimeSeriesAggregation( - period_sequence, **tsam_config[str(period)] + period_sequence, **tsam_config[period] ) aggregation = aggregation.createTypicalPeriods() # Use old Index with as many as needed entries diff --git a/tests/_files/tsam/tsam_config.json b/tests/_files/tsam/tsam_config.json index a4049c1..264377f 100644 --- a/tests/_files/tsam/tsam_config.json +++ b/tests/_files/tsam/tsam_config.json @@ -1,5 +1,5 @@ -{ - "0": { +[ + { "clusterMethod": "hierarchical", "distributionPeriodWise": false, "hoursPerPeriod": 1, @@ -8,7 +8,7 @@ "representationMethod": "distributionAndMinMaxRepresentation", "segmentation": true }, - "1": { + { "clusterMethod": "hierarchical", "distributionPeriodWise": false, "hoursPerPeriod": 1, @@ -17,7 +17,7 @@ "representationMethod": "distributionAndMinMaxRepresentation", "segmentation": true }, - "2": { + { "clusterMethod": "hierarchical", "distributionPeriodWise": false, "hoursPerPeriod": 1, @@ -26,4 +26,4 @@ "representationMethod": "distributionAndMinMaxRepresentation", "segmentation": true } -} +] From d981ae21fd3df3d677615965ba57fb7804df2a47 Mon Sep 17 00:00:00 2001 From: FelixMau Date: Thu, 30 Nov 2023 12:30:32 +0100 Subject: [PATCH 14/27] Adding tsa parameters to elements --- data_adapter_oemof/build_datapackage.py | 15 +++++++++++---- tests/test_build_datapackage.py | 2 +- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/data_adapter_oemof/build_datapackage.py b/data_adapter_oemof/build_datapackage.py index 5907578..6d2d244 100644 --- a/data_adapter_oemof/build_datapackage.py +++ b/data_adapter_oemof/build_datapackage.py @@ -407,7 +407,7 @@ def yearly_scalars_to_periodic_values(scalar_dataframe) -> None: ) return scalar_dataframe - def time_series_aggregation(self, tsam_config: str, destination: str = None): + def time_series_aggregation(self, tsam_config: str, location_to_save_to: str = None): """ Aggregates time series in datapackage and saves the new datapackage with updated (sequence)Resources as well as aggregated sequence resources. @@ -421,7 +421,6 @@ def time_series_aggregation(self, tsam_config: str, destination: str = None): """ # Refactor sequences into one Dataframe - self.save_datapackage_to_csv(location_to_save_to=destination) sequences = pd.concat( self.parametrized_sequences.values(), axis=1, @@ -431,6 +430,7 @@ def time_series_aggregation(self, tsam_config: str, destination: str = None): sequences.index = self.periods.index # Group sequences by Periods tsam_aggregated_typical_periods = [] + tsa_parameters=[] for period in pd.unique(self.periods["periods"]): # Saving the old Index to have it for later periods creation index_old = self.periods.index[self.periods["periods"] == period] @@ -439,6 +439,13 @@ def time_series_aggregation(self, tsam_config: str, destination: str = None): aggregation = tsam.TimeSeriesAggregation( period_sequence, **tsam_config[period] ) + tsa_parameters.append( + { + "timesteps_per_period": aggregation.hoursPerPeriod, + "order": aggregation.clusterOrder, + "timeindex": aggregation.timeIndex, + } + ) aggregation = aggregation.createTypicalPeriods() # Use old Index with as many as needed entries aggregation.index = index_old[: len(aggregation)] @@ -447,7 +454,7 @@ def time_series_aggregation(self, tsam_config: str, destination: str = None): tsam_aggregated_typical_periods = pd.concat( tsam_aggregated_typical_periods, ignore_index=False ) - + self.parametrized_elements["tsa_parameters"] = pd.DataFrame(tsa_parameters) # Rewrite the aggregated sequences to datapackage sequences for ( sequence_file_name @@ -466,7 +473,7 @@ def time_series_aggregation(self, tsam_config: str, destination: str = None): self.parametrized_sequences ) # Save with newly introduced tsam trigger - self.save_datapackage_to_csv(tsam=True) + self.save_datapackage_to_csv(location_to_save_to=location_to_save_to) @classmethod def build_datapackage( diff --git a/tests/test_build_datapackage.py b/tests/test_build_datapackage.py index 02a0bd8..ffd8657 100644 --- a/tests/test_build_datapackage.py +++ b/tests/test_build_datapackage.py @@ -223,4 +223,4 @@ def test_tsam(): with open(os.path.join(tsam_folder, "tsam_config.json"), "r") as f: tsam_config = json.load(f) - result.time_series_aggregation(tsam_config=tsam_config) + result.time_series_aggregation(tsam_config=tsam_config, location_to_save_to=tsam_folder+"_tsam") From 71d915dfcbe76cd9e20c36868f0f99eb1c32632f Mon Sep 17 00:00:00 2001 From: FelixMau Date: Thu, 30 Nov 2023 12:33:45 +0100 Subject: [PATCH 15/27] Linting --- data_adapter_oemof/build_datapackage.py | 6 ++++-- tests/test_build_datapackage.py | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/data_adapter_oemof/build_datapackage.py b/data_adapter_oemof/build_datapackage.py index 6d2d244..915e61f 100644 --- a/data_adapter_oemof/build_datapackage.py +++ b/data_adapter_oemof/build_datapackage.py @@ -407,7 +407,9 @@ def yearly_scalars_to_periodic_values(scalar_dataframe) -> None: ) return scalar_dataframe - def time_series_aggregation(self, tsam_config: str, location_to_save_to: str = None): + def time_series_aggregation( + self, tsam_config: str, location_to_save_to: str = None + ): """ Aggregates time series in datapackage and saves the new datapackage with updated (sequence)Resources as well as aggregated sequence resources. @@ -430,7 +432,7 @@ def time_series_aggregation(self, tsam_config: str, location_to_save_to: str = N sequences.index = self.periods.index # Group sequences by Periods tsam_aggregated_typical_periods = [] - tsa_parameters=[] + tsa_parameters = [] for period in pd.unique(self.periods["periods"]): # Saving the old Index to have it for later periods creation index_old = self.periods.index[self.periods["periods"] == period] diff --git a/tests/test_build_datapackage.py b/tests/test_build_datapackage.py index ffd8657..c5b2973 100644 --- a/tests/test_build_datapackage.py +++ b/tests/test_build_datapackage.py @@ -223,4 +223,6 @@ def test_tsam(): with open(os.path.join(tsam_folder, "tsam_config.json"), "r") as f: tsam_config = json.load(f) - result.time_series_aggregation(tsam_config=tsam_config, location_to_save_to=tsam_folder+"_tsam") + result.time_series_aggregation( + tsam_config=tsam_config, location_to_save_to=tsam_folder + "_tsam" + ) From 2e46bfdb17dfe9858752ca2366a96cfb21b637f1 Mon Sep 17 00:00:00 2001 From: FelixMau Date: Tue, 5 Dec 2023 11:51:13 +0100 Subject: [PATCH 16/27] tsam parameters to seperate folder --- data_adapter_oemof/build_datapackage.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/data_adapter_oemof/build_datapackage.py b/data_adapter_oemof/build_datapackage.py index 915e61f..718bfba 100644 --- a/data_adapter_oemof/build_datapackage.py +++ b/data_adapter_oemof/build_datapackage.py @@ -147,6 +147,7 @@ class DataPackage: adapter: Adapter periods: pd.DataFrame() location_to_save_to: str = None + tsa_parameters: pd.DataFrame = None @staticmethod def __split_timeseries_into_years(parametrized_sequences): @@ -296,10 +297,12 @@ def save_datapackage_to_csv( elements_path = os.path.join(location_to_save_to, "data", "elements") 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") 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 not self.periods.empty: self.periods.to_csv( @@ -310,6 +313,9 @@ def save_datapackage_to_csv( index=True, sep=";", ) + if "timeindex" in self.tsa_parameters: + self.tsa_parameters.drop("timeindex", inplace=True, axis=1) + self.tsa_parameters.to_csv(os.path.join(tsam_path, "tsa_parameters.csv"), sep= ";") # Save elements to elements folder named by keys + .csv for process_name, process_adapted_data in self.parametrized_elements.items(): @@ -456,7 +462,7 @@ def time_series_aggregation( tsam_aggregated_typical_periods = pd.concat( tsam_aggregated_typical_periods, ignore_index=False ) - self.parametrized_elements["tsa_parameters"] = pd.DataFrame(tsa_parameters) + self.tsa_parameters = pd.DataFrame(tsa_parameters) # Rewrite the aggregated sequences to datapackage sequences for ( sequence_file_name From 9b599f1fdb9991118358b66b4434dd625145b092 Mon Sep 17 00:00:00 2001 From: FelixMau Date: Tue, 5 Dec 2023 11:51:33 +0100 Subject: [PATCH 17/27] Litning --- data_adapter_oemof/build_datapackage.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/data_adapter_oemof/build_datapackage.py b/data_adapter_oemof/build_datapackage.py index 718bfba..791b423 100644 --- a/data_adapter_oemof/build_datapackage.py +++ b/data_adapter_oemof/build_datapackage.py @@ -315,7 +315,9 @@ def save_datapackage_to_csv( ) if "timeindex" in self.tsa_parameters: self.tsa_parameters.drop("timeindex", inplace=True, axis=1) - self.tsa_parameters.to_csv(os.path.join(tsam_path, "tsa_parameters.csv"), sep= ";") + self.tsa_parameters.to_csv( + os.path.join(tsam_path, "tsa_parameters.csv"), sep=";" + ) # Save elements to elements folder named by keys + .csv for process_name, process_adapted_data in self.parametrized_elements.items(): From f00b09d642300121eac1c6dbcc9f697c50f64b79 Mon Sep 17 00:00:00 2001 From: FelixMau Date: Tue, 5 Dec 2023 11:56:06 +0100 Subject: [PATCH 18/27] Adding result/goal draft --- tests/_files/tsam_goal/data/elements/bus.csv | 4 + .../data/elements/modex_tech_Load.csv | 2 + .../elements/modex_tech_generator_gas.csv | 2 + .../modex_tech_photovoltaic_utility.csv | 2 + .../elements/modex_tech_storage_battery.csv | 2 + .../modex_tech_wind_turbine_onshore.csv | 2 + .../_files/tsam_goal/data/periods/periods.csv | 7 + .../sequences/modex_tech_Load_sequence.csv | 7 + ...dex_tech_photovoltaic_utility_sequence.csv | 7 + ...dex_tech_wind_turbine_onshore_sequence.csv | 7 + .../tsam_goal/data/tsam/tsa_parameters.csv | 4 + tests/_files/tsam_goal/datapackage.json | 589 ++++++++++++++++++ tests/_files/tsam_goal/tsam_config.json | 29 + tests/test_build_datapackage.py | 2 +- 14 files changed, 665 insertions(+), 1 deletion(-) create mode 100644 tests/_files/tsam_goal/data/elements/bus.csv create mode 100644 tests/_files/tsam_goal/data/elements/modex_tech_Load.csv create mode 100644 tests/_files/tsam_goal/data/elements/modex_tech_generator_gas.csv create mode 100644 tests/_files/tsam_goal/data/elements/modex_tech_photovoltaic_utility.csv create mode 100644 tests/_files/tsam_goal/data/elements/modex_tech_storage_battery.csv create mode 100644 tests/_files/tsam_goal/data/elements/modex_tech_wind_turbine_onshore.csv create mode 100644 tests/_files/tsam_goal/data/periods/periods.csv create mode 100644 tests/_files/tsam_goal/data/sequences/modex_tech_Load_sequence.csv create mode 100644 tests/_files/tsam_goal/data/sequences/modex_tech_photovoltaic_utility_sequence.csv create mode 100644 tests/_files/tsam_goal/data/sequences/modex_tech_wind_turbine_onshore_sequence.csv create mode 100644 tests/_files/tsam_goal/data/tsam/tsa_parameters.csv create mode 100644 tests/_files/tsam_goal/datapackage.json create mode 100644 tests/_files/tsam_goal/tsam_config.json diff --git a/tests/_files/tsam_goal/data/elements/bus.csv b/tests/_files/tsam_goal/data/elements/bus.csv new file mode 100644 index 0000000..f7f51a1 --- /dev/null +++ b/tests/_files/tsam_goal/data/elements/bus.csv @@ -0,0 +1,4 @@ +name;type;balanced +electricity;bus;True +heat;bus;True +ch4;bus;True diff --git a/tests/_files/tsam_goal/data/elements/modex_tech_Load.csv b/tests/_files/tsam_goal/data/elements/modex_tech_Load.csv new file mode 100644 index 0000000..1ce1d8d --- /dev/null +++ b/tests/_files/tsam_goal/data/elements/modex_tech_Load.csv @@ -0,0 +1,2 @@ +type;amount;profile;name;region;year;bus +load;[1, 1, 2];Load_BB;BB_electricity_tech;BB;[2016, 2030, 2050];electricity diff --git a/tests/_files/tsam_goal/data/elements/modex_tech_generator_gas.csv b/tests/_files/tsam_goal/data/elements/modex_tech_generator_gas.csv new file mode 100644 index 0000000..67056b3 --- /dev/null +++ b/tests/_files/tsam_goal/data/elements/modex_tech_generator_gas.csv @@ -0,0 +1,2 @@ +type;carrier;tech;condensing_efficiency;electric_efficiency;thermal_efficiency;capacity;carrier_cost;name;region;year;electricity_bus;heat_bus;fuel_bus +extraction_turbine;gas;generator_gas;[0.16, 0.3, 0.5];[0.35, 0.35, 0.4];[0.5, 0.5, 0.45];330.2;[25.9, 25.9, 49.36];BB_gas_generator_gas;BB;[2016, 2030, 2050];electricity;heat;ch4 diff --git a/tests/_files/tsam_goal/data/elements/modex_tech_photovoltaic_utility.csv b/tests/_files/tsam_goal/data/elements/modex_tech_photovoltaic_utility.csv new file mode 100644 index 0000000..13844c1 --- /dev/null +++ b/tests/_files/tsam_goal/data/elements/modex_tech_photovoltaic_utility.csv @@ -0,0 +1,2 @@ +type;carrier;tech;profile;lifetime;fixed_costs;name;region;year;bus +volatile;solar;photovoltaic_utility;photovoltaic_BB;[25.4, 30.0, 30.0];[10280.0, 8600.0, 6340.0];BB_solar_photovoltaic_utility;BB;[2016, 2030, 2050];electricity diff --git a/tests/_files/tsam_goal/data/elements/modex_tech_storage_battery.csv b/tests/_files/tsam_goal/data/elements/modex_tech_storage_battery.csv new file mode 100644 index 0000000..bf889e3 --- /dev/null +++ b/tests/_files/tsam_goal/data/elements/modex_tech_storage_battery.csv @@ -0,0 +1,2 @@ +type;carrier;tech;capacity;fixed_costs;name;region;year;invest_relation_output_capacity;bus +storage;Lithium;storage_battery;17.8;[1, 2, 3];BB_Lithium_storage_battery;BB;[2016, 2030, 2050];3.3;electricity diff --git a/tests/_files/tsam_goal/data/elements/modex_tech_wind_turbine_onshore.csv b/tests/_files/tsam_goal/data/elements/modex_tech_wind_turbine_onshore.csv new file mode 100644 index 0000000..85cb5eb --- /dev/null +++ b/tests/_files/tsam_goal/data/elements/modex_tech_wind_turbine_onshore.csv @@ -0,0 +1,2 @@ +type;carrier;tech;profile;lifetime;fixed_costs;name;region;year;bus +volatile;wind;wind_turbine_onshore;onshore_BB;[25.4, 30.0, 30.0];[23280.0, 12600.0, 11340.0];BB_wind_wind_turbine_onshore;BB;[2016, 2030, 2050];electricity diff --git a/tests/_files/tsam_goal/data/periods/periods.csv b/tests/_files/tsam_goal/data/periods/periods.csv new file mode 100644 index 0000000..bdae324 --- /dev/null +++ b/tests/_files/tsam_goal/data/periods/periods.csv @@ -0,0 +1,7 @@ +timeindex;periods;timeincrement +2016-01-01 00:00:00;0;1 +2016-01-01 01:00:00;0;1 +2030-01-01 00:00:00;1;1 +2030-01-01 01:00:00;1;1 +2050-01-01 00:00:00;2;1 +2050-01-01 01:00:00;2;1 diff --git a/tests/_files/tsam_goal/data/sequences/modex_tech_Load_sequence.csv b/tests/_files/tsam_goal/data/sequences/modex_tech_Load_sequence.csv new file mode 100644 index 0000000..88c8a36 --- /dev/null +++ b/tests/_files/tsam_goal/data/sequences/modex_tech_Load_sequence.csv @@ -0,0 +1,7 @@ +timeindex;Load_BB +2016-01-01T00:00:00Z;1.0 +2016-01-01T01:00:00Z;1.16 +2030-01-01T00:00:00Z;1.0 +2030-01-01T01:00:00Z;1.3 +2050-01-01T00:00:00Z;1.0 +2050-01-01T01:00:00Z;1.5 diff --git a/tests/_files/tsam_goal/data/sequences/modex_tech_photovoltaic_utility_sequence.csv b/tests/_files/tsam_goal/data/sequences/modex_tech_photovoltaic_utility_sequence.csv new file mode 100644 index 0000000..bca4190 --- /dev/null +++ b/tests/_files/tsam_goal/data/sequences/modex_tech_photovoltaic_utility_sequence.csv @@ -0,0 +1,7 @@ +timeindex;photovoltaic_BB +2016-01-01T00:00:00Z;0.0 +2016-01-01T01:00:00Z;0.16 +2030-01-01T00:00:00Z;0.0 +2030-01-01T01:00:00Z;0.3 +2050-01-01T00:00:00Z;0.0 +2050-01-01T01:00:00Z;0.5 diff --git a/tests/_files/tsam_goal/data/sequences/modex_tech_wind_turbine_onshore_sequence.csv b/tests/_files/tsam_goal/data/sequences/modex_tech_wind_turbine_onshore_sequence.csv new file mode 100644 index 0000000..209c313 --- /dev/null +++ b/tests/_files/tsam_goal/data/sequences/modex_tech_wind_turbine_onshore_sequence.csv @@ -0,0 +1,7 @@ +timeindex;onshore_BB +2016-01-01T00:00:00Z;0.0513 +2016-01-01T01:00:00Z;0.0444 +2030-01-01T00:00:00Z;0.051800000000000006 +2030-01-01T01:00:00Z;0.0444 +2050-01-01T00:00:00Z;0.0523 +2050-01-01T01:00:00Z;0.0444 diff --git a/tests/_files/tsam_goal/data/tsam/tsa_parameters.csv b/tests/_files/tsam_goal/data/tsam/tsa_parameters.csv new file mode 100644 index 0000000..630adc8 --- /dev/null +++ b/tests/_files/tsam_goal/data/tsam/tsa_parameters.csv @@ -0,0 +1,4 @@ +;timesteps_per_period;order +0;1;[0 0 1] +1;1;[0 0 1] +2;1;[0 0 1] diff --git a/tests/_files/tsam_goal/datapackage.json b/tests/_files/tsam_goal/datapackage.json new file mode 100644 index 0000000..a1c3c50 --- /dev/null +++ b/tests/_files/tsam_goal/datapackage.json @@ -0,0 +1,589 @@ +{ + "profile": "tabular-data-package", + "resources": [ + { + "path": "data/sequences/modex_tech_Load_sequence.csv", + "profile": "tabular-data-resource", + "name": "modex_tech_Load_sequence", + "format": "csv", + "mediatype": "text/csv", + "encoding": "utf-8", + "schema": { + "fields": [ + { + "name": "timeindex", + "type": "datetime", + "format": "default" + }, + { + "name": "Load_BB", + "type": "number", + "format": "default" + } + ], + "missingValues": [ + "" + ], + "foreignKeys": [] + } + }, + { + "path": "data/sequences/modex_tech_wind_turbine_onshore_sequence.csv", + "profile": "tabular-data-resource", + "name": "modex_tech_wind_turbine_onshore_sequence", + "format": "csv", + "mediatype": "text/csv", + "encoding": "utf-8", + "schema": { + "fields": [ + { + "name": "timeindex", + "type": "datetime", + "format": "default" + }, + { + "name": "onshore_BB", + "type": "number", + "format": "default" + } + ], + "missingValues": [ + "" + ], + "foreignKeys": [] + } + }, + { + "path": "data/sequences/modex_tech_photovoltaic_utility_sequence.csv", + "profile": "tabular-data-resource", + "name": "modex_tech_photovoltaic_utility_sequence", + "format": "csv", + "mediatype": "text/csv", + "encoding": "utf-8", + "schema": { + "fields": [ + { + "name": "timeindex", + "type": "datetime", + "format": "default" + }, + { + "name": "photovoltaic_BB", + "type": "number", + "format": "default" + } + ], + "missingValues": [ + "" + ], + "foreignKeys": [] + } + }, + { + "path": "data/tsam/tsa_parameters.csv", + "profile": "tabular-data-resource", + "name": "tsa_parameters", + "format": "csv", + "mediatype": "text/csv", + "encoding": "utf-8", + "schema": { + "fields": [ + { + "name": "", + "type": "integer", + "format": "default" + }, + { + "name": "timesteps_per_period", + "type": "integer", + "format": "default" + }, + { + "name": "order", + "type": "string", + "format": "default" + } + ], + "missingValues": [ + "" + ], + "foreignKeys": [] + } + }, + { + "path": "data/periods/periods.csv", + "profile": "tabular-data-resource", + "name": "periods", + "format": "csv", + "mediatype": "text/csv", + "encoding": "utf-8", + "schema": { + "fields": [ + { + "name": "timeindex", + "type": "string", + "format": "default" + }, + { + "name": "periods", + "type": "integer", + "format": "default" + }, + { + "name": "timeincrement", + "type": "integer", + "format": "default" + } + ], + "missingValues": [ + "" + ], + "foreignKeys": [] + } + }, + { + "path": "data/elements/bus.csv", + "profile": "tabular-data-resource", + "name": "bus", + "format": "csv", + "mediatype": "text/csv", + "encoding": "utf-8", + "schema": { + "fields": [ + { + "name": "name", + "type": "string", + "format": "default" + }, + { + "name": "type", + "type": "string", + "format": "default" + }, + { + "name": "balanced", + "type": "boolean", + "format": "default" + } + ], + "missingValues": [ + "" + ], + "foreignKeys": [], + "primaryKey": "name" + } + }, + { + "path": "data/elements/modex_tech_storage_battery.csv", + "profile": "tabular-data-resource", + "name": "modex_tech_storage_battery", + "format": "csv", + "mediatype": "text/csv", + "encoding": "utf-8", + "schema": { + "fields": [ + { + "name": "type", + "type": "string", + "format": "default" + }, + { + "name": "carrier", + "type": "string", + "format": "default" + }, + { + "name": "tech", + "type": "string", + "format": "default" + }, + { + "name": "capacity", + "type": "number", + "format": "default" + }, + { + "name": "fixed_costs", + "type": "array", + "format": "default" + }, + { + "name": "name", + "type": "string", + "format": "default" + }, + { + "name": "region", + "type": "string", + "format": "default" + }, + { + "name": "year", + "type": "array", + "format": "default" + }, + { + "name": "invest_relation_output_capacity", + "type": "number", + "format": "default" + }, + { + "name": "bus", + "type": "string", + "format": "default" + } + ], + "missingValues": [ + "" + ], + "foreignKeys": [ + { + "fields": "bus", + "reference": { + "fields": "name", + "resource": "bus" + } + } + ], + "primaryKey": "name" + } + }, + { + "path": "data/elements/modex_tech_generator_gas.csv", + "profile": "tabular-data-resource", + "name": "modex_tech_generator_gas", + "format": "csv", + "mediatype": "text/csv", + "encoding": "utf-8", + "schema": { + "fields": [ + { + "name": "type", + "type": "string", + "format": "default" + }, + { + "name": "carrier", + "type": "string", + "format": "default" + }, + { + "name": "tech", + "type": "string", + "format": "default" + }, + { + "name": "condensing_efficiency", + "type": "array", + "format": "default" + }, + { + "name": "electric_efficiency", + "type": "array", + "format": "default" + }, + { + "name": "thermal_efficiency", + "type": "array", + "format": "default" + }, + { + "name": "capacity", + "type": "number", + "format": "default" + }, + { + "name": "carrier_cost", + "type": "array", + "format": "default" + }, + { + "name": "name", + "type": "string", + "format": "default" + }, + { + "name": "region", + "type": "string", + "format": "default" + }, + { + "name": "year", + "type": "array", + "format": "default" + }, + { + "name": "electricity_bus", + "type": "string", + "format": "default" + }, + { + "name": "heat_bus", + "type": "string", + "format": "default" + }, + { + "name": "fuel_bus", + "type": "string", + "format": "default" + } + ], + "missingValues": [ + "" + ], + "foreignKeys": [ + { + "fields": "electricity_bus", + "reference": { + "fields": "name", + "resource": "bus" + } + }, + { + "fields": "heat_bus", + "reference": { + "fields": "name", + "resource": "bus" + } + }, + { + "fields": "fuel_bus", + "reference": { + "fields": "name", + "resource": "bus" + } + } + ], + "primaryKey": "name" + } + }, + { + "path": "data/elements/modex_tech_photovoltaic_utility.csv", + "profile": "tabular-data-resource", + "name": "modex_tech_photovoltaic_utility", + "format": "csv", + "mediatype": "text/csv", + "encoding": "utf-8", + "schema": { + "fields": [ + { + "name": "type", + "type": "string", + "format": "default" + }, + { + "name": "carrier", + "type": "string", + "format": "default" + }, + { + "name": "tech", + "type": "string", + "format": "default" + }, + { + "name": "profile", + "type": "string", + "format": "default" + }, + { + "name": "lifetime", + "type": "array", + "format": "default" + }, + { + "name": "fixed_costs", + "type": "array", + "format": "default" + }, + { + "name": "name", + "type": "string", + "format": "default" + }, + { + "name": "region", + "type": "string", + "format": "default" + }, + { + "name": "year", + "type": "array", + "format": "default" + }, + { + "name": "bus", + "type": "string", + "format": "default" + } + ], + "missingValues": [ + "" + ], + "foreignKeys": [ + { + "fields": "bus", + "reference": { + "fields": "name", + "resource": "bus" + } + }, + { + "fields": "profile", + "reference": { + "resource": "modex_tech_photovoltaic_utility_sequence" + } + } + ], + "primaryKey": "name" + } + }, + { + "path": "data/elements/modex_tech_wind_turbine_onshore.csv", + "profile": "tabular-data-resource", + "name": "modex_tech_wind_turbine_onshore", + "format": "csv", + "mediatype": "text/csv", + "encoding": "utf-8", + "schema": { + "fields": [ + { + "name": "type", + "type": "string", + "format": "default" + }, + { + "name": "carrier", + "type": "string", + "format": "default" + }, + { + "name": "tech", + "type": "string", + "format": "default" + }, + { + "name": "profile", + "type": "string", + "format": "default" + }, + { + "name": "lifetime", + "type": "array", + "format": "default" + }, + { + "name": "fixed_costs", + "type": "array", + "format": "default" + }, + { + "name": "name", + "type": "string", + "format": "default" + }, + { + "name": "region", + "type": "string", + "format": "default" + }, + { + "name": "year", + "type": "array", + "format": "default" + }, + { + "name": "bus", + "type": "string", + "format": "default" + } + ], + "missingValues": [ + "" + ], + "foreignKeys": [ + { + "fields": "bus", + "reference": { + "fields": "name", + "resource": "bus" + } + }, + { + "fields": "profile", + "reference": { + "resource": "modex_tech_wind_turbine_onshore_sequence" + } + } + ], + "primaryKey": "name" + } + }, + { + "path": "data/elements/modex_tech_Load.csv", + "profile": "tabular-data-resource", + "name": "modex_tech_Load", + "format": "csv", + "mediatype": "text/csv", + "encoding": "utf-8", + "schema": { + "fields": [ + { + "name": "type", + "type": "string", + "format": "default" + }, + { + "name": "amount", + "type": "array", + "format": "default" + }, + { + "name": "profile", + "type": "string", + "format": "default" + }, + { + "name": "name", + "type": "string", + "format": "default" + }, + { + "name": "region", + "type": "string", + "format": "default" + }, + { + "name": "year", + "type": "array", + "format": "default" + }, + { + "name": "bus", + "type": "string", + "format": "default" + } + ], + "missingValues": [ + "" + ], + "foreignKeys": [ + { + "fields": "bus", + "reference": { + "fields": "name", + "resource": "bus" + } + }, + { + "fields": "profile", + "reference": { + "resource": "modex_tech_Load_sequence" + } + } + ], + "primaryKey": "name" + } + } + ] +} \ No newline at end of file diff --git a/tests/_files/tsam_goal/tsam_config.json b/tests/_files/tsam_goal/tsam_config.json new file mode 100644 index 0000000..264377f --- /dev/null +++ b/tests/_files/tsam_goal/tsam_config.json @@ -0,0 +1,29 @@ +[ + { + "clusterMethod": "hierarchical", + "distributionPeriodWise": false, + "hoursPerPeriod": 1, + "noSegments": 2, + "noTypicalPeriods": 2, + "representationMethod": "distributionAndMinMaxRepresentation", + "segmentation": true + }, + { + "clusterMethod": "hierarchical", + "distributionPeriodWise": false, + "hoursPerPeriod": 1, + "noSegments": 2, + "noTypicalPeriods": 2, + "representationMethod": "distributionAndMinMaxRepresentation", + "segmentation": true + }, + { + "clusterMethod": "hierarchical", + "distributionPeriodWise": false, + "hoursPerPeriod": 1, + "noSegments": 2, + "noTypicalPeriods": 2, + "representationMethod": "distributionAndMinMaxRepresentation", + "segmentation": true + } +] diff --git a/tests/test_build_datapackage.py b/tests/test_build_datapackage.py index c5b2973..5f8f6cf 100644 --- a/tests/test_build_datapackage.py +++ b/tests/test_build_datapackage.py @@ -224,5 +224,5 @@ def test_tsam(): tsam_config = json.load(f) result.time_series_aggregation( - tsam_config=tsam_config, location_to_save_to=tsam_folder + "_tsam" + tsam_config=tsam_config, location_to_save_to=tsam_folder ) From e5d517a71baf5a459b88c9b121c4ce31cc72be9c Mon Sep 17 00:00:00 2001 From: FelixMau Date: Wed, 6 Dec 2023 12:32:02 +0100 Subject: [PATCH 19/27] indexing parameters, adding tsam to poetry --- data_adapter_oemof/build_datapackage.py | 6 +- poetry.lock | 276 ++++++++++-------- pyproject.toml | 1 + .../tsam_goal/data/tsam/tsa_parameters.csv | 2 +- 4 files changed, 165 insertions(+), 120 deletions(-) diff --git a/data_adapter_oemof/build_datapackage.py b/data_adapter_oemof/build_datapackage.py index 791b423..1d9ece8 100644 --- a/data_adapter_oemof/build_datapackage.py +++ b/data_adapter_oemof/build_datapackage.py @@ -464,7 +464,11 @@ def time_series_aggregation( tsam_aggregated_typical_periods = pd.concat( tsam_aggregated_typical_periods, ignore_index=False ) - self.tsa_parameters = pd.DataFrame(tsa_parameters) + tsa_parameters = pd.DataFrame(tsa_parameters) + tsa_parameters.index = list(pd.unique(self.periods["periods"])) + tsa_parameters.index.name = "periods" + self.tsa_parameters = tsa_parameters + # Rewrite the aggregated sequences to datapackage sequences for ( sequence_file_name diff --git a/poetry.lock b/poetry.lock index ca5d512..b5fc577 100644 --- a/poetry.lock +++ b/poetry.lock @@ -31,32 +31,28 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte [[package]] name = "bcrypt" -version = "4.0.1" +version = "4.1.1" description = "Modern password hashing for your software and your servers" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "bcrypt-4.0.1-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:b1023030aec778185a6c16cf70f359cbb6e0c289fd564a7cfa29e727a1c38f8f"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:08d2947c490093a11416df18043c27abe3921558d2c03e2076ccb28a116cb6d0"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0eaa47d4661c326bfc9d08d16debbc4edf78778e6aaba29c1bc7ce67214d4410"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae88eca3024bb34bb3430f964beab71226e761f51b912de5133470b649d82344"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:a522427293d77e1c29e303fc282e2d71864579527a04ddcfda6d4f8396c6c36a"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:fbdaec13c5105f0c4e5c52614d04f0bca5f5af007910daa8b6b12095edaa67b3"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:ca3204d00d3cb2dfed07f2d74a25f12fc12f73e606fcaa6975d1f7ae69cacbb2"}, - {file = "bcrypt-4.0.1-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:089098effa1bc35dc055366740a067a2fc76987e8ec75349eb9484061c54f535"}, - {file = "bcrypt-4.0.1-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:e9a51bbfe7e9802b5f3508687758b564069ba937748ad7b9e890086290d2f79e"}, - {file = "bcrypt-4.0.1-cp36-abi3-win32.whl", hash = "sha256:2caffdae059e06ac23fce178d31b4a702f2a3264c20bfb5ff541b338194d8fab"}, - {file = "bcrypt-4.0.1-cp36-abi3-win_amd64.whl", hash = "sha256:8a68f4341daf7522fe8d73874de8906f3a339048ba406be6ddc1b3ccb16fc0d9"}, - {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf4fa8b2ca74381bb5442c089350f09a3f17797829d958fad058d6e44d9eb83c"}, - {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:67a97e1c405b24f19d08890e7ae0c4f7ce1e56a712a016746c8b2d7732d65d4b"}, - {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b3b85202d95dd568efcb35b53936c5e3b3600c7cdcc6115ba461df3a8e89f38d"}, - {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cbb03eec97496166b704ed663a53680ab57c5084b2fc98ef23291987b525cb7d"}, - {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:5ad4d32a28b80c5fa6671ccfb43676e8c1cc232887759d1cd7b6f56ea4355215"}, - {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b57adba8a1444faf784394de3436233728a1ecaeb6e07e8c22c8848f179b893c"}, - {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:705b2cea8a9ed3d55b4491887ceadb0106acf7c6387699fca771af56b1cdeeda"}, - {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:2b3ac11cf45161628f1f3733263e63194f22664bf4d0c0f3ab34099c02134665"}, - {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3100851841186c25f127731b9fa11909ab7b1df6fc4b9f8353f4f1fd952fbf71"}, - {file = "bcrypt-4.0.1.tar.gz", hash = "sha256:27d375903ac8261cfe4047f6709d16f7d18d39b1ec92aaf72af989552a650ebd"}, + {file = "bcrypt-4.1.1-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:196008d91201bbb1aa4e666fee5e610face25d532e433a560cabb33bfdff958b"}, + {file = "bcrypt-4.1.1-cp37-abi3-macosx_13_0_universal2.whl", hash = "sha256:2e197534c884336f9020c1f3a8efbaab0aa96fc798068cb2da9c671818b7fbb0"}, + {file = "bcrypt-4.1.1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d573885b637815a7f3a3cd5f87724d7d0822da64b0ab0aa7f7c78bae534e86dc"}, + {file = "bcrypt-4.1.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bab33473f973e8058d1b2df8d6e095d237c49fbf7a02b527541a86a5d1dc4444"}, + {file = "bcrypt-4.1.1-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:fb931cd004a7ad36a89789caf18a54c20287ec1cd62161265344b9c4554fdb2e"}, + {file = "bcrypt-4.1.1-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:12f40f78dcba4aa7d1354d35acf45fae9488862a4fb695c7eeda5ace6aae273f"}, + {file = "bcrypt-4.1.1-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:2ade10e8613a3b8446214846d3ddbd56cfe9205a7d64742f0b75458c868f7492"}, + {file = "bcrypt-4.1.1-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f33b385c3e80b5a26b3a5e148e6165f873c1c202423570fdf45fe34e00e5f3e5"}, + {file = "bcrypt-4.1.1-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:755b9d27abcab678e0b8fb4d0abdebeea1f68dd1183b3f518bad8d31fa77d8be"}, + {file = "bcrypt-4.1.1-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a7a7b8a87e51e5e8ca85b9fdaf3a5dc7aaf123365a09be7a27883d54b9a0c403"}, + {file = "bcrypt-4.1.1-cp37-abi3-win32.whl", hash = "sha256:3d6c4e0d6963c52f8142cdea428e875042e7ce8c84812d8e5507bd1e42534e07"}, + {file = "bcrypt-4.1.1-cp37-abi3-win_amd64.whl", hash = "sha256:14d41933510717f98aac63378b7956bbe548986e435df173c841d7f2bd0b2de7"}, + {file = "bcrypt-4.1.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:24c2ebd287b5b11016f31d506ca1052d068c3f9dc817160628504690376ff050"}, + {file = "bcrypt-4.1.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:476aa8e8aca554260159d4c7a97d6be529c8e177dbc1d443cb6b471e24e82c74"}, + {file = "bcrypt-4.1.1-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:12611c4b0a8b1c461646228344784a1089bc0c49975680a2f54f516e71e9b79e"}, + {file = "bcrypt-4.1.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c6450538a0fc32fb7ce4c6d511448c54c4ff7640b2ed81badf9898dcb9e5b737"}, + {file = "bcrypt-4.1.1.tar.gz", hash = "sha256:df37f5418d4f1cdcff845f60e747a015389fa4e63703c918330865e06ad80007"}, ] [package.extras] @@ -456,34 +452,34 @@ toml = ["tomli"] [[package]] name = "cryptography" -version = "41.0.5" +version = "41.0.7" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-41.0.5-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:da6a0ff8f1016ccc7477e6339e1d50ce5f59b88905585f77193ebd5068f1e797"}, - {file = "cryptography-41.0.5-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:b948e09fe5fb18517d99994184854ebd50b57248736fd4c720ad540560174ec5"}, - {file = "cryptography-41.0.5-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d38e6031e113b7421db1de0c1b1f7739564a88f1684c6b89234fbf6c11b75147"}, - {file = "cryptography-41.0.5-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e270c04f4d9b5671ebcc792b3ba5d4488bf7c42c3c241a3748e2599776f29696"}, - {file = "cryptography-41.0.5-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ec3b055ff8f1dce8e6ef28f626e0972981475173d7973d63f271b29c8a2897da"}, - {file = "cryptography-41.0.5-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:7d208c21e47940369accfc9e85f0de7693d9a5d843c2509b3846b2db170dfd20"}, - {file = "cryptography-41.0.5-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:8254962e6ba1f4d2090c44daf50a547cd5f0bf446dc658a8e5f8156cae0d8548"}, - {file = "cryptography-41.0.5-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:a48e74dad1fb349f3dc1d449ed88e0017d792997a7ad2ec9587ed17405667e6d"}, - {file = "cryptography-41.0.5-cp37-abi3-win32.whl", hash = "sha256:d3977f0e276f6f5bf245c403156673db103283266601405376f075c849a0b936"}, - {file = "cryptography-41.0.5-cp37-abi3-win_amd64.whl", hash = "sha256:73801ac9736741f220e20435f84ecec75ed70eda90f781a148f1bad546963d81"}, - {file = "cryptography-41.0.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3be3ca726e1572517d2bef99a818378bbcf7d7799d5372a46c79c29eb8d166c1"}, - {file = "cryptography-41.0.5-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:e886098619d3815e0ad5790c973afeee2c0e6e04b4da90b88e6bd06e2a0b1b72"}, - {file = "cryptography-41.0.5-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:573eb7128cbca75f9157dcde974781209463ce56b5804983e11a1c462f0f4e88"}, - {file = "cryptography-41.0.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0c327cac00f082013c7c9fb6c46b7cc9fa3c288ca702c74773968173bda421bf"}, - {file = "cryptography-41.0.5-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:227ec057cd32a41c6651701abc0328135e472ed450f47c2766f23267b792a88e"}, - {file = "cryptography-41.0.5-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:22892cc830d8b2c89ea60148227631bb96a7da0c1b722f2aac8824b1b7c0b6b8"}, - {file = "cryptography-41.0.5-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:5a70187954ba7292c7876734183e810b728b4f3965fbe571421cb2434d279179"}, - {file = "cryptography-41.0.5-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:88417bff20162f635f24f849ab182b092697922088b477a7abd6664ddd82291d"}, - {file = "cryptography-41.0.5-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c707f7afd813478e2019ae32a7c49cd932dd60ab2d2a93e796f68236b7e1fbf1"}, - {file = "cryptography-41.0.5-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:580afc7b7216deeb87a098ef0674d6ee34ab55993140838b14c9b83312b37b86"}, - {file = "cryptography-41.0.5-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:fba1e91467c65fe64a82c689dc6cf58151158993b13eb7a7f3f4b7f395636723"}, - {file = "cryptography-41.0.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0d2a6a598847c46e3e321a7aef8af1436f11c27f1254933746304ff014664d84"}, - {file = "cryptography-41.0.5.tar.gz", hash = "sha256:392cb88b597247177172e02da6b7a63deeff1937fa6fec3bbf902ebd75d97ec7"}, + {file = "cryptography-41.0.7-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:3c78451b78313fa81607fa1b3f1ae0a5ddd8014c38a02d9db0616133987b9cdf"}, + {file = "cryptography-41.0.7-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:928258ba5d6f8ae644e764d0f996d61a8777559f72dfeb2eea7e2fe0ad6e782d"}, + {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a1b41bc97f1ad230a41657d9155113c7521953869ae57ac39ac7f1bb471469a"}, + {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:841df4caa01008bad253bce2a6f7b47f86dc9f08df4b433c404def869f590a15"}, + {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5429ec739a29df2e29e15d082f1d9ad683701f0ec7709ca479b3ff2708dae65a"}, + {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:43f2552a2378b44869fe8827aa19e69512e3245a219104438692385b0ee119d1"}, + {file = "cryptography-41.0.7-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:af03b32695b24d85a75d40e1ba39ffe7db7ffcb099fe507b39fd41a565f1b157"}, + {file = "cryptography-41.0.7-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:49f0805fc0b2ac8d4882dd52f4a3b935b210935d500b6b805f321addc8177406"}, + {file = "cryptography-41.0.7-cp37-abi3-win32.whl", hash = "sha256:f983596065a18a2183e7f79ab3fd4c475205b839e02cbc0efbbf9666c4b3083d"}, + {file = "cryptography-41.0.7-cp37-abi3-win_amd64.whl", hash = "sha256:90452ba79b8788fa380dfb587cca692976ef4e757b194b093d845e8d99f612f2"}, + {file = "cryptography-41.0.7-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:079b85658ea2f59c4f43b70f8119a52414cdb7be34da5d019a77bf96d473b960"}, + {file = "cryptography-41.0.7-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:b640981bf64a3e978a56167594a0e97db71c89a479da8e175d8bb5be5178c003"}, + {file = "cryptography-41.0.7-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e3114da6d7f95d2dee7d3f4eec16dacff819740bbab931aff8648cb13c5ff5e7"}, + {file = "cryptography-41.0.7-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d5ec85080cce7b0513cfd233914eb8b7bbd0633f1d1703aa28d1dd5a72f678ec"}, + {file = "cryptography-41.0.7-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7a698cb1dac82c35fcf8fe3417a3aaba97de16a01ac914b89a0889d364d2f6be"}, + {file = "cryptography-41.0.7-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:37a138589b12069efb424220bf78eac59ca68b95696fc622b6ccc1c0a197204a"}, + {file = "cryptography-41.0.7-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:68a2dec79deebc5d26d617bfdf6e8aab065a4f34934b22d3b5010df3ba36612c"}, + {file = "cryptography-41.0.7-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:09616eeaef406f99046553b8a40fbf8b1e70795a91885ba4c96a70793de5504a"}, + {file = "cryptography-41.0.7-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:48a0476626da912a44cc078f9893f292f0b3e4c739caf289268168d8f4702a39"}, + {file = "cryptography-41.0.7-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c7f3201ec47d5207841402594f1d7950879ef890c0c495052fa62f58283fde1a"}, + {file = "cryptography-41.0.7-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c5ca78485a255e03c32b513f8c2bc39fedb7f5c5f8535545bdc223a03b24f248"}, + {file = "cryptography-41.0.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:d6c391c021ab1f7a82da5d8d0b3cee2f4b2c455ec86c8aebbc84837a631ff309"}, + {file = "cryptography-41.0.7.tar.gz", hash = "sha256:13f93ce9bea8016c253b34afc6bd6a75993e5c40672ed5405a9c832f0d4a00bc"}, ] [package.dependencies] @@ -501,7 +497,7 @@ test-randomorder = ["pytest-randomly"] [[package]] name = "data-adapter" -version = "0.13.1" +version = "0.16.0" description = "Provides general functionality for other data adapters" optional = false python-versions = ">=3.8.1,<4.0.0" @@ -510,7 +506,7 @@ develop = false [package.dependencies] frictionless = "^4.40.8" -pandas = "^1.5.2" +pandas = ">=1.5.2" python-dotenv = "^0.21.0" requests = "^2.28.1" sparqlwrapper = "^2.0.0" @@ -520,7 +516,7 @@ sqlalchemy = "^1.4.46" type = "git" url = "https://git@github.com/sedos-project/data_adapter" reference = "main" -resolved_reference = "f71ca73d1104d956b81d06069a6730bca4e352fb" +resolved_reference = "8803d77c04688a23c6e4f70545646a0c419d47a5" [[package]] name = "datapackage" @@ -849,13 +845,13 @@ license = ["ukkonen"] [[package]] name = "idna" -version = "3.4" +version = "3.6" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.5" files = [ - {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, - {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, + {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, + {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, ] [[package]] @@ -1401,38 +1397,36 @@ files = [ [[package]] name = "pandas" -version = "1.5.3" +version = "2.0.3" description = "Powerful data structures for data analysis, time series, and statistics" optional = false python-versions = ">=3.8" files = [ - {file = "pandas-1.5.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3749077d86e3a2f0ed51367f30bf5b82e131cc0f14260c4d3e499186fccc4406"}, - {file = "pandas-1.5.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:972d8a45395f2a2d26733eb8d0f629b2f90bebe8e8eddbb8829b180c09639572"}, - {file = "pandas-1.5.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:50869a35cbb0f2e0cd5ec04b191e7b12ed688874bd05dd777c19b28cbea90996"}, - {file = "pandas-1.5.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3ac844a0fe00bfaeb2c9b51ab1424e5c8744f89860b138434a363b1f620f354"}, - {file = "pandas-1.5.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a0a56cef15fd1586726dace5616db75ebcfec9179a3a55e78f72c5639fa2a23"}, - {file = "pandas-1.5.3-cp310-cp310-win_amd64.whl", hash = "sha256:478ff646ca42b20376e4ed3fa2e8d7341e8a63105586efe54fa2508ee087f328"}, - {file = "pandas-1.5.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6973549c01ca91ec96199e940495219c887ea815b2083722821f1d7abfa2b4dc"}, - {file = "pandas-1.5.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c39a8da13cede5adcd3be1182883aea1c925476f4e84b2807a46e2775306305d"}, - {file = "pandas-1.5.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f76d097d12c82a535fda9dfe5e8dd4127952b45fea9b0276cb30cca5ea313fbc"}, - {file = "pandas-1.5.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e474390e60ed609cec869b0da796ad94f420bb057d86784191eefc62b65819ae"}, - {file = "pandas-1.5.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f2b952406a1588ad4cad5b3f55f520e82e902388a6d5a4a91baa8d38d23c7f6"}, - {file = "pandas-1.5.3-cp311-cp311-win_amd64.whl", hash = "sha256:bc4c368f42b551bf72fac35c5128963a171b40dce866fb066540eeaf46faa003"}, - {file = "pandas-1.5.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:14e45300521902689a81f3f41386dc86f19b8ba8dd5ac5a3c7010ef8d2932813"}, - {file = "pandas-1.5.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9842b6f4b8479e41968eced654487258ed81df7d1c9b7b870ceea24ed9459b31"}, - {file = "pandas-1.5.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:26d9c71772c7afb9d5046e6e9cf42d83dd147b5cf5bcb9d97252077118543792"}, - {file = "pandas-1.5.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fbcb19d6fceb9e946b3e23258757c7b225ba450990d9ed63ccceeb8cae609f7"}, - {file = "pandas-1.5.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:565fa34a5434d38e9d250af3c12ff931abaf88050551d9fbcdfafca50d62babf"}, - {file = "pandas-1.5.3-cp38-cp38-win32.whl", hash = "sha256:87bd9c03da1ac870a6d2c8902a0e1fd4267ca00f13bc494c9e5a9020920e1d51"}, - {file = "pandas-1.5.3-cp38-cp38-win_amd64.whl", hash = "sha256:41179ce559943d83a9b4bbacb736b04c928b095b5f25dd2b7389eda08f46f373"}, - {file = "pandas-1.5.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c74a62747864ed568f5a82a49a23a8d7fe171d0c69038b38cedf0976831296fa"}, - {file = "pandas-1.5.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c4c00e0b0597c8e4f59e8d461f797e5d70b4d025880516a8261b2817c47759ee"}, - {file = "pandas-1.5.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a50d9a4336a9621cab7b8eb3fb11adb82de58f9b91d84c2cd526576b881a0c5a"}, - {file = "pandas-1.5.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd05f7783b3274aa206a1af06f0ceed3f9b412cf665b7247eacd83be41cf7bf0"}, - {file = "pandas-1.5.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f69c4029613de47816b1bb30ff5ac778686688751a5e9c99ad8c7031f6508e5"}, - {file = "pandas-1.5.3-cp39-cp39-win32.whl", hash = "sha256:7cec0bee9f294e5de5bbfc14d0573f65526071029d036b753ee6507d2a21480a"}, - {file = "pandas-1.5.3-cp39-cp39-win_amd64.whl", hash = "sha256:dfd681c5dc216037e0b0a2c821f5ed99ba9f03ebcf119c7dac0e9a7b960b9ec9"}, - {file = "pandas-1.5.3.tar.gz", hash = "sha256:74a3fd7e5a7ec052f183273dc7b0acd3a863edf7520f5d3a1765c04ffdb3b0b1"}, + {file = "pandas-2.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e4c7c9f27a4185304c7caf96dc7d91bc60bc162221152de697c98eb0b2648dd8"}, + {file = "pandas-2.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f167beed68918d62bffb6ec64f2e1d8a7d297a038f86d4aed056b9493fca407f"}, + {file = "pandas-2.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce0c6f76a0f1ba361551f3e6dceaff06bde7514a374aa43e33b588ec10420183"}, + {file = "pandas-2.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba619e410a21d8c387a1ea6e8a0e49bb42216474436245718d7f2e88a2f8d7c0"}, + {file = "pandas-2.0.3-cp310-cp310-win32.whl", hash = "sha256:3ef285093b4fe5058eefd756100a367f27029913760773c8bf1d2d8bebe5d210"}, + {file = "pandas-2.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:9ee1a69328d5c36c98d8e74db06f4ad518a1840e8ccb94a4ba86920986bb617e"}, + {file = "pandas-2.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b084b91d8d66ab19f5bb3256cbd5ea661848338301940e17f4492b2ce0801fe8"}, + {file = "pandas-2.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:37673e3bdf1551b95bf5d4ce372b37770f9529743d2498032439371fc7b7eb26"}, + {file = "pandas-2.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9cb1e14fdb546396b7e1b923ffaeeac24e4cedd14266c3497216dd4448e4f2d"}, + {file = "pandas-2.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9cd88488cceb7635aebb84809d087468eb33551097d600c6dad13602029c2df"}, + {file = "pandas-2.0.3-cp311-cp311-win32.whl", hash = "sha256:694888a81198786f0e164ee3a581df7d505024fbb1f15202fc7db88a71d84ebd"}, + {file = "pandas-2.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:6a21ab5c89dcbd57f78d0ae16630b090eec626360085a4148693def5452d8a6b"}, + {file = "pandas-2.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4da0d45e7f34c069fe4d522359df7d23badf83abc1d1cef398895822d11061"}, + {file = "pandas-2.0.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:32fca2ee1b0d93dd71d979726b12b61faa06aeb93cf77468776287f41ff8fdc5"}, + {file = "pandas-2.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:258d3624b3ae734490e4d63c430256e716f488c4fcb7c8e9bde2d3aa46c29089"}, + {file = "pandas-2.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eae3dc34fa1aa7772dd3fc60270d13ced7346fcbcfee017d3132ec625e23bb0"}, + {file = "pandas-2.0.3-cp38-cp38-win32.whl", hash = "sha256:f3421a7afb1a43f7e38e82e844e2bca9a6d793d66c1a7f9f0ff39a795bbc5e02"}, + {file = "pandas-2.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:69d7f3884c95da3a31ef82b7618af5710dba95bb885ffab339aad925c3e8ce78"}, + {file = "pandas-2.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5247fb1ba347c1261cbbf0fcfba4a3121fbb4029d95d9ef4dc45406620b25c8b"}, + {file = "pandas-2.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:81af086f4543c9d8bb128328b5d32e9986e0c84d3ee673a2ac6fb57fd14f755e"}, + {file = "pandas-2.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1994c789bf12a7c5098277fb43836ce090f1073858c10f9220998ac74f37c69b"}, + {file = "pandas-2.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ec591c48e29226bcbb316e0c1e9423622bc7a4eaf1ef7c3c9fa1a3981f89641"}, + {file = "pandas-2.0.3-cp39-cp39-win32.whl", hash = "sha256:04dbdbaf2e4d46ca8da896e1805bc04eb85caa9a82e259e8eed00254d5e0c682"}, + {file = "pandas-2.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:1168574b036cd8b93abc746171c9b4f1b83467438a5e45909fed645cf8692dbc"}, + {file = "pandas-2.0.3.tar.gz", hash = "sha256:c02f372a88e0d17f36d3093a644c73cfc1788e876a7c4bcb4020a77512e2043c"}, ] [package.dependencies] @@ -1440,11 +1434,32 @@ numpy = [ {version = ">=1.20.3", markers = "python_version < \"3.10\""}, {version = ">=1.21.0", markers = "python_version >= \"3.10\""}, ] -python-dateutil = ">=2.8.1" +python-dateutil = ">=2.8.2" pytz = ">=2020.1" +tzdata = ">=2022.1" [package.extras] -test = ["hypothesis (>=5.5.3)", "pytest (>=6.0)", "pytest-xdist (>=1.31)"] +all = ["PyQt5 (>=5.15.1)", "SQLAlchemy (>=1.4.16)", "beautifulsoup4 (>=4.9.3)", "bottleneck (>=1.3.2)", "brotlipy (>=0.7.0)", "fastparquet (>=0.6.3)", "fsspec (>=2021.07.0)", "gcsfs (>=2021.07.0)", "html5lib (>=1.1)", "hypothesis (>=6.34.2)", "jinja2 (>=3.0.0)", "lxml (>=4.6.3)", "matplotlib (>=3.6.1)", "numba (>=0.53.1)", "numexpr (>=2.7.3)", "odfpy (>=1.4.1)", "openpyxl (>=3.0.7)", "pandas-gbq (>=0.15.0)", "psycopg2 (>=2.8.6)", "pyarrow (>=7.0.0)", "pymysql (>=1.0.2)", "pyreadstat (>=1.1.2)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)", "python-snappy (>=0.6.0)", "pyxlsb (>=1.0.8)", "qtpy (>=2.2.0)", "s3fs (>=2021.08.0)", "scipy (>=1.7.1)", "tables (>=3.6.1)", "tabulate (>=0.8.9)", "xarray (>=0.21.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=1.4.3)", "zstandard (>=0.15.2)"] +aws = ["s3fs (>=2021.08.0)"] +clipboard = ["PyQt5 (>=5.15.1)", "qtpy (>=2.2.0)"] +compression = ["brotlipy (>=0.7.0)", "python-snappy (>=0.6.0)", "zstandard (>=0.15.2)"] +computation = ["scipy (>=1.7.1)", "xarray (>=0.21.0)"] +excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.0.7)", "pyxlsb (>=1.0.8)", "xlrd (>=2.0.1)", "xlsxwriter (>=1.4.3)"] +feather = ["pyarrow (>=7.0.0)"] +fss = ["fsspec (>=2021.07.0)"] +gcp = ["gcsfs (>=2021.07.0)", "pandas-gbq (>=0.15.0)"] +hdf5 = ["tables (>=3.6.1)"] +html = ["beautifulsoup4 (>=4.9.3)", "html5lib (>=1.1)", "lxml (>=4.6.3)"] +mysql = ["SQLAlchemy (>=1.4.16)", "pymysql (>=1.0.2)"] +output-formatting = ["jinja2 (>=3.0.0)", "tabulate (>=0.8.9)"] +parquet = ["pyarrow (>=7.0.0)"] +performance = ["bottleneck (>=1.3.2)", "numba (>=0.53.1)", "numexpr (>=2.7.1)"] +plot = ["matplotlib (>=3.6.1)"] +postgresql = ["SQLAlchemy (>=1.4.16)", "psycopg2 (>=2.8.6)"] +spss = ["pyreadstat (>=1.1.2)"] +sql-other = ["SQLAlchemy (>=1.4.16)"] +test = ["hypothesis (>=6.34.2)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)"] +xml = ["lxml (>=4.6.3)"] [[package]] name = "paramiko" @@ -1506,13 +1521,13 @@ xpath = ["lxml (>=4.4.0)"] [[package]] name = "platformdirs" -version = "3.11.0" +version = "4.1.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "platformdirs-3.11.0-py3-none-any.whl", hash = "sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e"}, - {file = "platformdirs-3.11.0.tar.gz", hash = "sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3"}, + {file = "platformdirs-4.1.0-py3-none-any.whl", hash = "sha256:11c8f37bcca40db96d8144522d925583bdb7a31f7b0e37e3ed4318400a8e2380"}, + {file = "platformdirs-4.1.0.tar.gz", hash = "sha256:906d548203468492d432bcb294d4bc2fff751bf84971fbb2c10918cc206ee420"}, ] [package.extras] @@ -1598,13 +1613,13 @@ files = [ [[package]] name = "pygments" -version = "2.17.1" +version = "2.17.2" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.7" files = [ - {file = "pygments-2.17.1-py3-none-any.whl", hash = "sha256:1b37f1b1e1bff2af52ecaf28cc601e2ef7077000b227a0675da25aef85784bc4"}, - {file = "pygments-2.17.1.tar.gz", hash = "sha256:e45a0e74bf9c530f564ca81b8952343be986a29f6afe7f5ad95c5f06b7bdf5e8"}, + {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"}, + {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"}, ] [package.extras] @@ -1639,35 +1654,49 @@ tests = ["hypothesis (>=3.27.0)", "pytest (>=3.2.1,!=3.3.0)"] [[package]] name = "pyomo" -version = "6.6.2" +version = "6.7.0" description = "Pyomo: Python Optimization Modeling Objects" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "Pyomo-6.6.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:a6bf4c8e8560b03a23fee783ea425c01abfe7b17544a8011fed5da09e9253615"}, - {file = "Pyomo-6.6.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8508e8cf654ada06675da2ae4291935f0ba1c8bd44285d133b1bc2e2ce0350f1"}, - {file = "Pyomo-6.6.2-cp310-cp310-win_amd64.whl", hash = "sha256:c866666093c055a9956dabee42b876e9533eba8703d892d73945620b252e333c"}, - {file = "Pyomo-6.6.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:cd2e262b5d2e754b47c2f376c7ff0f48dff74f2fdad08b995db0b1539553c64d"}, - {file = "Pyomo-6.6.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95fe255dd402af84e1294dc22437a2c292ef708f04974da0aa56eb10065178f1"}, - {file = "Pyomo-6.6.2-cp311-cp311-win_amd64.whl", hash = "sha256:6a2463b38bbe1f8e50584ba87659ec425e420236070b078b707849fac7fb6b02"}, - {file = "Pyomo-6.6.2-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:cdd2bc12a0e536d3cc5a5535efaf8af8499d12e790b564e46897d68092e335b3"}, - {file = "Pyomo-6.6.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e3fe82aaabb7f5aa0ab60f4fb05ba038dee014f9dfc10657d1b6cd0e5910f90"}, - {file = "Pyomo-6.6.2-cp37-cp37m-win_amd64.whl", hash = "sha256:067c2f533bb0f05b673f95caa38f6b6d3d2f774a3b97aca280b1350a1516857f"}, - {file = "Pyomo-6.6.2-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:f26cb95531580fb4932cad04962aca854bc7bd3832c77f66ef7c502891c59b6f"}, - {file = "Pyomo-6.6.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c94e2a711f59ac81bd576955529944b286a3fd87cdfe95011534966746af289"}, - {file = "Pyomo-6.6.2-cp38-cp38-win_amd64.whl", hash = "sha256:47402204e99df3fefd6ee584b45cfca4b00f60a1dce20208340449b152b308a2"}, - {file = "Pyomo-6.6.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:9a739bc8add47c1a6275746d272c6e664d0240923a9b6fd58800173e3f513a12"}, - {file = "Pyomo-6.6.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:867d6351718e8d0e14b5144a83a964348fd0d16dd5d19db429296349f17755c9"}, - {file = "Pyomo-6.6.2-cp39-cp39-win_amd64.whl", hash = "sha256:e22380fe8615b8e29cc4e01dd3b08ce9575867242fe4fb974589dfd93f00926b"}, - {file = "Pyomo-6.6.2.tar.gz", hash = "sha256:c8ad55213ff8b1a2c4e469110db8079722d5a6f364c6c46a42e2f750fc9e4d26"}, + {file = "Pyomo-6.7.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f5220325bb650e9517977068e48d73ad2533bc4eb96994622dcf89b608448c46"}, + {file = "Pyomo-6.7.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9001a237284e077d8515461fd78ccacf32e5d145afc6e02f95aee64376783545"}, + {file = "Pyomo-6.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c58d597b3fe4f4796155d1a99705415c821331afb21a8e164593954a0382151a"}, + {file = "Pyomo-6.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f670cd5ce5b19ba13f8c051ca84a05ef7931c65db92ee573181d9e53258e4e8"}, + {file = "Pyomo-6.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:f11a1cc382f320f122f9bc3af47c1e1a650090775f679cfb1649af6670f3a730"}, + {file = "Pyomo-6.7.0-cp310-cp310-win_arm64.whl", hash = "sha256:f3b1d921fc8883e2b82b892c43509c8e9b871559f05ce8ab12101c2ea84efb03"}, + {file = "Pyomo-6.7.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6220a923934c7b549af04fefe4adf68b38bd8364e4943311b4dab33136a8998b"}, + {file = "Pyomo-6.7.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:273648340589c5e06063166690ba2124ab6fa3f4b6522a97a5666b9112c6284b"}, + {file = "Pyomo-6.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de9ebe6fa3ce46b3f17e188e88c19ec9d6313a0f30e3ae8e87027cbee2d9bc27"}, + {file = "Pyomo-6.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fafb25a8509db466905e5f2d39897739cf54eef23c124171a5b4f2c9d197e8bc"}, + {file = "Pyomo-6.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:19dea19aee85ba713b0b9176ef7b35c9ac791661d736b721391a5da4443b6e55"}, + {file = "Pyomo-6.7.0-cp311-cp311-win_arm64.whl", hash = "sha256:3cfa11778788617cecc119fedbb4a1e823b5ec8ff0851d04c3ee422b52bc1dec"}, + {file = "Pyomo-6.7.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:0ecde12e9a5f3834f9d14171a22e2f7e1b716fbd0a20addcb12f96321835e0e3"}, + {file = "Pyomo-6.7.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f3b9e9e787609f3f9f825177223829c2372c210e4148a15a3dfa47f1f383c61e"}, + {file = "Pyomo-6.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92c9a26a4de790d9b63484eac99325881fe4c272f74dcc7ade03fc43060764f8"}, + {file = "Pyomo-6.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:12d8d78df6fe44d02b5f715908537887ba1eee5a674b03ab97311637b3387622"}, + {file = "Pyomo-6.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:16a59e7a34cfaf04f1265b3b7ce4c9d6ebde637906aa7c60a14f99f6c59f3188"}, + {file = "Pyomo-6.7.0-cp312-cp312-win_arm64.whl", hash = "sha256:028e703eeeaa245e1dab870a64a1b505f25e657dcac3c8d654c2f39c260c65e5"}, + {file = "Pyomo-6.7.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:677d7ba1189b735aecd27a7f475941194b5ac45d7230aa1e9f76d9091537e647"}, + {file = "Pyomo-6.7.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9e419df08979910ebdeb184e4cd86568d9b4737518ebf593d5d1e282f45bf575"}, + {file = "Pyomo-6.7.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c6f37bbeceaa128c3aa288b169f37f27f1050b47a6fc27dfd70c3846ee315c8"}, + {file = "Pyomo-6.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85841099a068329cddd401f5e6cd5a5cd951a6b2f450ae990d8bea5bf0d8626e"}, + {file = "Pyomo-6.7.0-cp38-cp38-win_amd64.whl", hash = "sha256:95b66bfd8212b4b03a6f6573b54f17bfd4b36bacb4548e8b7204eda2032b1c34"}, + {file = "Pyomo-6.7.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d69d1bea311c23d745d82e0926ff6508d53880de89028f1c1648a929fbb9ea81"}, + {file = "Pyomo-6.7.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8f1256766d9a2937b1ed46dfddf29f43f40a2b55980d1e1dcb31cb616a7d9da3"}, + {file = "Pyomo-6.7.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b44140344b0df548810b176acd509d940ec78c5b99e189f36d5d737ce829165a"}, + {file = "Pyomo-6.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90a17fa2758f6ae9bea8c1cdc9d8ea78bf69f75658dcddd20d6a71ee70a13c1a"}, + {file = "Pyomo-6.7.0-cp39-cp39-win_amd64.whl", hash = "sha256:d247ea9978ef72c6acf778f78a84e836fb9fec8e394f75fbe9c00bba62faf2be"}, + {file = "Pyomo-6.7.0-cp39-cp39-win_arm64.whl", hash = "sha256:b8885756c31b87886d3b5a14369b034169da7bf310d3ac7c96e7bdd78e59aa65"}, + {file = "Pyomo-6.7.0.tar.gz", hash = "sha256:a245ec609ef2fd907269f0b8e0923f74d5bf868b2ec0e62bf2a30b3f253bd17b"}, ] [package.dependencies] ply = "*" [package.extras] -docs = ["Sphinx (>2)", "numpy", "scipy", "sphinx-copybutton", "sphinx-rtd-theme (>0.5)", "sphinxcontrib-jsmath", "sphinxcontrib-napoleon"] -optional = ["casadi", "dill", "ipython", "matplotlib (!=3.6.1)", "networkx", "numdifftools", "numpy", "openpyxl", "pandas", "pint", "plotly", "python-louvain", "pywin32", "pyyaml", "scipy", "seaborn", "sympy", "xlrd", "z3-solver"] +docs = ["Sphinx (>4)", "numpy", "scipy", "sphinx-copybutton", "sphinx-rtd-theme (>0.5)", "sphinxcontrib-jsmath", "sphinxcontrib-napoleon"] +optional = ["casadi", "dill", "ipython", "matplotlib (!=3.6.1)", "networkx", "networkx (<3.2)", "numdifftools", "numpy", "openpyxl", "pandas", "pint", "plotly", "python-louvain", "pywin32", "pyyaml", "scipy", "seaborn", "sympy", "xlrd", "z3-solver"] tests = ["coverage", "parameterized", "pybind11", "pytest", "pytest-parallel"] [[package]] @@ -2087,13 +2116,13 @@ test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeo [[package]] name = "setuptools" -version = "69.0.0" +version = "69.0.2" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.0.0-py3-none-any.whl", hash = "sha256:eb03b43f23910c5fd0909cb677ad017cd9531f493d27f8b3f5316ff1fb07390e"}, - {file = "setuptools-69.0.0.tar.gz", hash = "sha256:4c65d4f7891e5b046e9146913b87098144de2ca2128fbc10135b8556a6ddd946"}, + {file = "setuptools-69.0.2-py3-none-any.whl", hash = "sha256:1e8fdff6797d3865f37397be788a4e3cba233608e9b509382a2777d25ebde7f2"}, + {file = "setuptools-69.0.2.tar.gz", hash = "sha256:735896e78a4742605974de002ac60562d286fa8051a7e2299445e8e8fbb01aa6"}, ] [package.extras] @@ -2461,6 +2490,17 @@ files = [ {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"}, ] +[[package]] +name = "tzdata" +version = "2023.3" +description = "Provider of IANA time zone data" +optional = false +python-versions = ">=2" +files = [ + {file = "tzdata-2023.3-py2.py3-none-any.whl", hash = "sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda"}, + {file = "tzdata-2023.3.tar.gz", hash = "sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a"}, +] + [[package]] name = "unicodecsv" version = "0.14.1" @@ -2511,19 +2551,19 @@ tooling-extras = ["pyaml (>=23.7.0)", "pypandoc-binary (>=1.11)", "pytest (>=7.4 [[package]] name = "virtualenv" -version = "20.24.6" +version = "20.25.0" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.7" files = [ - {file = "virtualenv-20.24.6-py3-none-any.whl", hash = "sha256:520d056652454c5098a00c0f073611ccbea4c79089331f60bf9d7ba247bb7381"}, - {file = "virtualenv-20.24.6.tar.gz", hash = "sha256:02ece4f56fbf939dbbc33c0715159951d6bf14aaf5457b092e4548e1382455af"}, + {file = "virtualenv-20.25.0-py3-none-any.whl", hash = "sha256:4238949c5ffe6876362d9c0180fc6c3a824a7b12b80604eeb8085f2ed7460de3"}, + {file = "virtualenv-20.25.0.tar.gz", hash = "sha256:bf51c0d9c7dd63ea8e44086fa1e4fb1093a31e963b86959257378aef020e1f1b"}, ] [package.dependencies] distlib = ">=0.3.7,<1" filelock = ">=3.12.2,<4" -platformdirs = ">=3.9.1,<4" +platformdirs = ">=3.9.1,<5" [package.extras] docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] @@ -2551,4 +2591,4 @@ docs = [] [metadata] lock-version = "2.0" python-versions = ">=3.8.1,<3.11" -content-hash = "6b24598aba37699cbf336f0e6ee56e05c7861b29bbbd84272644347be6b31e12" +content-hash = "57a5871465752a43aec75a0eb24d027251c28016e24e07877c3b2f7cd48c3540" diff --git a/pyproject.toml b/pyproject.toml index f09be8a..2009a41 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,6 +21,7 @@ data_adapter = { git = "https://git@github.com/sedos-project/data_adapter", bran oemof-tabular = { git = "https://git@github.com/oemof/oemof-tabular", tag = "v0.0.4.dev0"} boto3 = "1.26.125" # fix boto3 to fasten up dependency resolution python-dotenv = "^0.21.0" +tsam = "^2.3.1" [tool.poetry.dev-dependencies] black = "20.8b1" diff --git a/tests/_files/tsam_goal/data/tsam/tsa_parameters.csv b/tests/_files/tsam_goal/data/tsam/tsa_parameters.csv index 630adc8..94a3158 100644 --- a/tests/_files/tsam_goal/data/tsam/tsa_parameters.csv +++ b/tests/_files/tsam_goal/data/tsam/tsa_parameters.csv @@ -1,4 +1,4 @@ -;timesteps_per_period;order +periods;timesteps_per_period;order 0;1;[0 0 1] 1;1;[0 0 1] 2;1;[0 0 1] From 55ba472efed2afe570e14db3a7c45836f8ffc26c Mon Sep 17 00:00:00 2001 From: FelixMau Date: Wed, 6 Dec 2023 12:33:37 +0100 Subject: [PATCH 20/27] Finalizing test --- tests/test_build_datapackage.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test_build_datapackage.py b/tests/test_build_datapackage.py index 5f8f6cf..28fe044 100644 --- a/tests/test_build_datapackage.py +++ b/tests/test_build_datapackage.py @@ -226,3 +226,4 @@ def test_tsam(): result.time_series_aggregation( tsam_config=tsam_config, location_to_save_to=tsam_folder ) + check_if_csv_dirs_equal(tsam_folder, os.path.join(tsam_folder, "..", "tsam_goal")) From 669f9320ab482413b5267a74562a30e85bfeec5d Mon Sep 17 00:00:00 2001 From: FelixMau Date: Tue, 19 Dec 2023 14:38:31 +0100 Subject: [PATCH 21/27] tsa Parameters might be None --- data_adapter_oemof/build_datapackage.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/data_adapter_oemof/build_datapackage.py b/data_adapter_oemof/build_datapackage.py index 1d9ece8..e2c8628 100644 --- a/data_adapter_oemof/build_datapackage.py +++ b/data_adapter_oemof/build_datapackage.py @@ -313,11 +313,12 @@ def save_datapackage_to_csv( index=True, sep=";", ) - if "timeindex" in self.tsa_parameters: - self.tsa_parameters.drop("timeindex", inplace=True, axis=1) - self.tsa_parameters.to_csv( - os.path.join(tsam_path, "tsa_parameters.csv"), sep=";" - ) + if self.tsa_parameters: + if "timeindex" in self.tsa_parameters: + self.tsa_parameters.drop("timeindex", inplace=True, axis=1) + self.tsa_parameters.to_csv( + os.path.join(tsam_path, "tsa_parameters.csv"), sep=";" + ) # Save elements to elements folder named by keys + .csv for process_name, process_adapted_data in self.parametrized_elements.items(): From 3ec063becf74bd497f2ff5e4683ca9c672fb2c13 Mon Sep 17 00:00:00 2001 From: "Julian.Endres" Date: Fri, 12 Jan 2024 13:31:18 +0100 Subject: [PATCH 22/27] Black&Isort --- data_adapter_oemof/build_datapackage.py | 1 - tests/test_build_datapackage.py | 1 - 2 files changed, 2 deletions(-) diff --git a/data_adapter_oemof/build_datapackage.py b/data_adapter_oemof/build_datapackage.py index 42eab66..ade1c48 100644 --- a/data_adapter_oemof/build_datapackage.py +++ b/data_adapter_oemof/build_datapackage.py @@ -4,7 +4,6 @@ from typing import Optional import pandas as pd - import tsam.timeseriesaggregation as tsam from data_adapter import core from data_adapter.preprocessing import Adapter diff --git a/tests/test_build_datapackage.py b/tests/test_build_datapackage.py index 4f19a79..80264b2 100644 --- a/tests/test_build_datapackage.py +++ b/tests/test_build_datapackage.py @@ -14,7 +14,6 @@ path_default = PATH_TEST_FILES / "_files" - def test_refactor_timeseries(): timeseries = pd.DataFrame( { From 6438ba233c9d521337b4082e6541833ffa837d3b Mon Sep 17 00:00:00 2001 From: "Julian.Endres" Date: Fri, 12 Jan 2024 14:13:59 +0100 Subject: [PATCH 23/27] Fix tsa_paramter check --- data_adapter_oemof/build_datapackage.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_adapter_oemof/build_datapackage.py b/data_adapter_oemof/build_datapackage.py index ade1c48..1c699d7 100644 --- a/data_adapter_oemof/build_datapackage.py +++ b/data_adapter_oemof/build_datapackage.py @@ -252,7 +252,7 @@ def save_datapackage_to_csv( index=True, sep=";", ) - if self.tsa_parameters: + if self.tsa_parameters is not None: if "timeindex" in self.tsa_parameters: self.tsa_parameters.drop("timeindex", inplace=True, axis=1) self.tsa_parameters.to_csv( From 303ab1b31634de25366a29a31751416036ec6c46 Mon Sep 17 00:00:00 2001 From: "Julian.Endres" Date: Fri, 12 Jan 2024 14:14:41 +0100 Subject: [PATCH 24/27] Remove unused import --- data_adapter_oemof/build_datapackage.py | 1 - 1 file changed, 1 deletion(-) diff --git a/data_adapter_oemof/build_datapackage.py b/data_adapter_oemof/build_datapackage.py index 1c699d7..3f1ba33 100644 --- a/data_adapter_oemof/build_datapackage.py +++ b/data_adapter_oemof/build_datapackage.py @@ -5,7 +5,6 @@ import pandas as pd import tsam.timeseriesaggregation as tsam -from data_adapter import core from data_adapter.preprocessing import Adapter from datapackage import Package From f90d3f2ff4bad371c9cfb543fa6644a44f9a03fa Mon Sep 17 00:00:00 2001 From: "Julian.Endres" Date: Fri, 12 Jan 2024 14:22:25 +0100 Subject: [PATCH 25/27] Remove legacy test --- tests/test_build_datapackage.py | 29 ----------------------------- 1 file changed, 29 deletions(-) diff --git a/tests/test_build_datapackage.py b/tests/test_build_datapackage.py index 8b533ad..3024260 100644 --- a/tests/test_build_datapackage.py +++ b/tests/test_build_datapackage.py @@ -18,35 +18,6 @@ path_default = PATH_TEST_FILES / "_files" -def test_refactor_timeseries(): - timeseries = pd.DataFrame( - { - "timeindex_start": ["01:00:00", "01:00:00", "09:00:00"], - "timeindex_stop": ["03:00:00", "03:00:00", "10:00:00"], - "timeindex_resolution": ["P0DT01H00M00S", "P0DT01H00M00S", "P0DT01H00M00S"], - "region": ["BB", "HH", "HH"], - "onshore": [[1, 2, 3], [4, 5, 6], [33, 34]], - "offshore": [[7, 8, 9], [10, 11, 12], [35, 36]], - } - ) - - refactored_ts = refactor_timeseries(timeseries) - expected_df = pd.DataFrame( - { - "offshore_BB": [7.0, 8, 9, None, None], - "offshore_HH": [10.0, 11, 12, 35, 36], - "onshore_BB": [1.0, 2, 3, None, None], - "onshore_HH": [4.0, 5, 6, 33, 34], - }, - index=pd.DatetimeIndex( - ["01:00:00", "02:00:00", "03:00:00", "09:00:00", "10:00:00"] - ), - ) - expected_df = expected_df.sort_index(axis=1) - refactored_ts = refactored_ts.sort_index(axis=1) - pd.testing.assert_frame_equal(expected_df, refactored_ts) - - def test_build_datapackage(): """ Test build Datapackage with mocking Adapter From 6465c8e65d78483da850fa26d26fb92e879add41 Mon Sep 17 00:00:00 2001 From: "Julian.Endres" Date: Fri, 12 Jan 2024 14:24:13 +0100 Subject: [PATCH 26/27] Update poetry lock --- poetry.lock | 849 +++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 613 insertions(+), 236 deletions(-) diff --git a/poetry.lock b/poetry.lock index b94dca2..82bb97e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,9 +1,10 @@ -# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.4.0 and should not be changed by hand. [[package]] name = "appdirs" version = "1.4.4" description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "dev" optional = false python-versions = "*" files = [ @@ -13,26 +14,29 @@ files = [ [[package]] name = "attrs" -version = "23.1.0" +version = "23.2.0" description = "Classes Without Boilerplate" +category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"}, - {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"}, + {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, + {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, ] [package.extras] cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] -dev = ["attrs[docs,tests]", "pre-commit"] +dev = ["attrs[tests]", "pre-commit"] docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] tests = ["attrs[tests-no-zope]", "zope-interface"] -tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] +tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] [[package]] name = "bcrypt" version = "4.1.2" description = "Modern password hashing for your software and your servers" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -73,6 +77,7 @@ typecheck = ["mypy"] name = "black" version = "20.8b1" description = "The uncompromising code formatter." +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -97,6 +102,7 @@ d = ["aiohttp (>=3.3.2)", "aiohttp-cors"] name = "blinker" version = "1.7.0" description = "Fast, simple object-to-object and broadcast signaling" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -108,6 +114,7 @@ files = [ name = "boto3" version = "1.26.125" description = "The AWS SDK for Python" +category = "main" optional = false python-versions = ">= 3.7" files = [ @@ -127,6 +134,7 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] name = "botocore" version = "1.29.165" description = "Low-level, data-driven core of boto 3." +category = "main" optional = false python-versions = ">= 3.7" files = [ @@ -146,6 +154,7 @@ crt = ["awscrt (==0.16.9)"] name = "cchardet" version = "2.1.7" description = "cChardet is high speed universal character encoding detector." +category = "main" optional = false python-versions = "*" files = [ @@ -184,6 +193,7 @@ files = [ name = "certifi" version = "2023.11.17" description = "Python package for providing Mozilla's CA Bundle." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -195,6 +205,7 @@ files = [ name = "cffi" version = "1.16.0" description = "Foreign Function Interface for Python calling C code." +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -259,6 +270,7 @@ pycparser = "*" name = "cfgv" version = "3.4.0" description = "Validate configuration and produce human readable error messages." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -270,6 +282,7 @@ files = [ name = "chardet" version = "5.2.0" description = "Universal encoding detector for Python 3" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -281,6 +294,7 @@ files = [ name = "charset-normalizer" version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -380,6 +394,7 @@ files = [ name = "click" version = "7.1.2" description = "Composable command line interface toolkit" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -391,6 +406,7 @@ files = [ name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -402,6 +418,7 @@ files = [ name = "coverage" version = "6.5.0" description = "Code coverage measurement for Python" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -464,6 +481,7 @@ toml = ["tomli"] name = "cryptography" version = "41.0.7" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -509,6 +527,7 @@ test-randomorder = ["pytest-randomly"] name = "data-adapter" version = "0.18.0" description = "Provides general functionality for other data adapters" +category = "main" optional = false python-versions = ">=3.8.1,<4.0.0" files = [] @@ -533,6 +552,7 @@ resolved_reference = "b4da027442be1e321e0d29adc37fc41bb96d9d50" name = "datapackage" version = "1.5.1" description = "Utilities to work with Data Packages as defined on specs.frictionlessdata.io" +category = "main" optional = false python-versions = "*" files = [ @@ -558,6 +578,7 @@ develop = ["pylama", "tox"] name = "dill" version = "0.3.7" description = "serialize all of Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -572,6 +593,7 @@ graph = ["objgraph (>=1.7.2)"] name = "distlib" version = "0.3.8" description = "Distribution utilities" +category = "dev" optional = false python-versions = "*" files = [ @@ -583,6 +605,7 @@ files = [ name = "et-xmlfile" version = "1.1.0" description = "An implementation of lxml.xmlfile for the standard library" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -594,6 +617,7 @@ files = [ name = "exceptiongroup" version = "1.2.0" description = "Backport of PEP 654 (exception groups)" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -608,6 +632,7 @@ test = ["pytest (>=6)"] name = "filelock" version = "3.13.1" description = "A platform independent file lock." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -624,6 +649,7 @@ typing = ["typing-extensions (>=4.8)"] name = "flake8" version = "4.0.1" description = "the modular source code checker: pep8 pyflakes and co" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -640,6 +666,7 @@ pyflakes = ">=2.4.0,<2.5.0" name = "frictionless" version = "4.40.11" description = "Data management framework for Python that provides functionality to describe, extract, validate, and transform tabular data" +category = "main" optional = false python-versions = "*" files = [ @@ -682,79 +709,172 @@ sql = ["sqlalchemy (<2.0)"] [[package]] name = "greenlet" -version = "3.0.2" +version = "3.0.3" description = "Lightweight in-process concurrent programming" +category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "greenlet-3.0.2-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9acd8fd67c248b8537953cb3af8787c18a87c33d4dcf6830e410ee1f95a63fd4"}, - {file = "greenlet-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:339c0272a62fac7e602e4e6ec32a64ff9abadc638b72f17f6713556ed011d493"}, - {file = "greenlet-3.0.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:38878744926cec29b5cc3654ef47f3003f14bfbba7230e3c8492393fe29cc28b"}, - {file = "greenlet-3.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b3f0497db77cfd034f829678b28267eeeeaf2fc21b3f5041600f7617139e6773"}, - {file = "greenlet-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed1a8a08de7f68506a38f9a2ddb26bbd1480689e66d788fcd4b5f77e2d9ecfcc"}, - {file = "greenlet-3.0.2-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:89a6f6ddcbef4000cda7e205c4c20d319488ff03db961d72d4e73519d2465309"}, - {file = "greenlet-3.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c1f647fe5b94b51488b314c82fdda10a8756d650cee8d3cd29f657c6031bdf73"}, - {file = "greenlet-3.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9560c580c896030ff9c311c603aaf2282234643c90d1dec738a1d93e3e53cd51"}, - {file = "greenlet-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:2e9c5423046eec21f6651268cb674dfba97280701e04ef23d312776377313206"}, - {file = "greenlet-3.0.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1fd25dfc5879a82103b3d9e43fa952e3026c221996ff4d32a9c72052544835d"}, - {file = "greenlet-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cecfdc950dd25f25d6582952e58521bca749cf3eeb7a9bad69237024308c8196"}, - {file = "greenlet-3.0.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:edf7a1daba1f7c54326291a8cde58da86ab115b78c91d502be8744f0aa8e3ffa"}, - {file = "greenlet-3.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4cf532bf3c58a862196b06947b1b5cc55503884f9b63bf18582a75228d9950e"}, - {file = "greenlet-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e79fb5a9fb2d0bd3b6573784f5e5adabc0b0566ad3180a028af99523ce8f6138"}, - {file = "greenlet-3.0.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:006c1028ac0cfcc4e772980cfe73f5476041c8c91d15d64f52482fc571149d46"}, - {file = "greenlet-3.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fefd5eb2c0b1adffdf2802ff7df45bfe65988b15f6b972706a0e55d451bffaea"}, - {file = "greenlet-3.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0c0fdb8142742ee68e97c106eb81e7d3e883cc739d9c5f2b28bc38a7bafeb6d1"}, - {file = "greenlet-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:8f8d14a0a4e8c670fbce633d8b9a1ee175673a695475acd838e372966845f764"}, - {file = "greenlet-3.0.2-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:654b84c9527182036747938b81938f1d03fb8321377510bc1854a9370418ab66"}, - {file = "greenlet-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd5bc4fde0842ff2b9cf33382ad0b4db91c2582db836793d58d174c569637144"}, - {file = "greenlet-3.0.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c27b142a9080bdd5869a2fa7ebf407b3c0b24bd812db925de90e9afe3c417fd6"}, - {file = "greenlet-3.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0df7eed98ea23b20e9db64d46eb05671ba33147df9405330695bcd81a73bb0c9"}, - {file = "greenlet-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb5d60805057d8948065338be6320d35e26b0a72f45db392eb32b70dd6dc9227"}, - {file = "greenlet-3.0.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e0e28f5233d64c693382f66d47c362b72089ebf8ac77df7e12ac705c9fa1163d"}, - {file = "greenlet-3.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3e4bfa752b3688d74ab1186e2159779ff4867644d2b1ebf16db14281f0445377"}, - {file = "greenlet-3.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c42bb589e6e9f9d8bdd79f02f044dff020d30c1afa6e84c0b56d1ce8a324553c"}, - {file = "greenlet-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:b2cedf279ca38ef3f4ed0d013a6a84a7fc3d9495a716b84a5fc5ff448965f251"}, - {file = "greenlet-3.0.2-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:6d65bec56a7bc352bcf11b275b838df618651109074d455a772d3afe25390b7d"}, - {file = "greenlet-3.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0acadbc3f72cb0ee85070e8d36bd2a4673d2abd10731ee73c10222cf2dd4713c"}, - {file = "greenlet-3.0.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:14b5d999aefe9ffd2049ad19079f733c3aaa426190ffecadb1d5feacef8fe397"}, - {file = "greenlet-3.0.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f27aa32466993c92d326df982c4acccd9530fe354e938d9e9deada563e71ce76"}, - {file = "greenlet-3.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f34a765c5170c0673eb747213a0275ecc749ab3652bdbec324621ed5b2edaef"}, - {file = "greenlet-3.0.2-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:520fcb53a39ef90f5021c77606952dbbc1da75d77114d69b8d7bded4a8e1a813"}, - {file = "greenlet-3.0.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d1fceb5351ab1601903e714c3028b37f6ea722be6873f46e349a960156c05650"}, - {file = "greenlet-3.0.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7363756cc439a503505b67983237d1cc19139b66488263eb19f5719a32597836"}, - {file = "greenlet-3.0.2-cp37-cp37m-win32.whl", hash = "sha256:d5547b462b8099b84746461e882a3eb8a6e3f80be46cb6afb8524eeb191d1a30"}, - {file = "greenlet-3.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:950e21562818f9c771989b5b65f990e76f4ac27af66e1bb34634ae67886ede2a"}, - {file = "greenlet-3.0.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:d64643317e76b4b41fdba659e7eca29634e5739b8bc394eda3a9127f697ed4b0"}, - {file = "greenlet-3.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f9ea7c2c9795549653b6f7569f6bc75d2c7d1f6b2854eb8ce0bc6ec3cb2dd88"}, - {file = "greenlet-3.0.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db4233358d3438369051a2f290f1311a360d25c49f255a6c5d10b5bcb3aa2b49"}, - {file = "greenlet-3.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ed9bf77b41798e8417657245b9f3649314218a4a17aefb02bb3992862df32495"}, - {file = "greenlet-3.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4d0df07a38e41a10dfb62c6fc75ede196572b580f48ee49b9282c65639f3965"}, - {file = "greenlet-3.0.2-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:10d247260db20887ae8857c0cbc750b9170f0b067dd7d38fb68a3f2334393bd3"}, - {file = "greenlet-3.0.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a37ae53cca36823597fd5f65341b6f7bac2dd69ecd6ca01334bb795460ab150b"}, - {file = "greenlet-3.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:80d068e4b6e2499847d916ef64176811ead6bf210a610859220d537d935ec6fd"}, - {file = "greenlet-3.0.2-cp38-cp38-win32.whl", hash = "sha256:b1405614692ac986490d10d3e1a05e9734f473750d4bee3cf7d1286ef7af7da6"}, - {file = "greenlet-3.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:8756a94ed8f293450b0e91119eca2a36332deba69feb2f9ca410d35e74eae1e4"}, - {file = "greenlet-3.0.2-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:2c93cd03acb1499ee4de675e1a4ed8eaaa7227f7949dc55b37182047b006a7aa"}, - {file = "greenlet-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1dac09e3c0b78265d2e6d3cbac2d7c48bd1aa4b04a8ffeda3adde9f1688df2c3"}, - {file = "greenlet-3.0.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2ee59c4627c8c4bb3e15949fbcd499abd6b7f4ad9e0bfcb62c65c5e2cabe0ec4"}, - {file = "greenlet-3.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18fe39d70d482b22f0014e84947c5aaa7211fb8e13dc4cc1c43ed2aa1db06d9a"}, - {file = "greenlet-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e84bef3cfb6b6bfe258c98c519811c240dbc5b33a523a14933a252e486797c90"}, - {file = "greenlet-3.0.2-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:aecea0442975741e7d69daff9b13c83caff8c13eeb17485afa65f6360a045765"}, - {file = "greenlet-3.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f260e6c2337871a52161824058923df2bbddb38bc11a5cbe71f3474d877c5bd9"}, - {file = "greenlet-3.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:fc14dd9554f88c9c1fe04771589ae24db76cd56c8f1104e4381b383d6b71aff8"}, - {file = "greenlet-3.0.2-cp39-cp39-win32.whl", hash = "sha256:bfcecc984d60b20ffe30173b03bfe9ba6cb671b0be1e95c3e2056d4fe7006590"}, - {file = "greenlet-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:c235131bf59d2546bb3ebaa8d436126267392f2e51b85ff45ac60f3a26549af0"}, - {file = "greenlet-3.0.2.tar.gz", hash = "sha256:1c1129bc47266d83444c85a8e990ae22688cf05fb20d7951fd2866007c2ba9bc"}, + {file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405"}, + {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f"}, + {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb"}, + {file = "greenlet-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9"}, + {file = "greenlet-3.0.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22"}, + {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3"}, + {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d"}, + {file = "greenlet-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728"}, + {file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf"}, + {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305"}, + {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6"}, + {file = "greenlet-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2"}, + {file = "greenlet-3.0.3-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41"}, + {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7"}, + {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6"}, + {file = "greenlet-3.0.3-cp37-cp37m-win32.whl", hash = "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d"}, + {file = "greenlet-3.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67"}, + {file = "greenlet-3.0.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4"}, + {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5"}, + {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da"}, + {file = "greenlet-3.0.3-cp38-cp38-win32.whl", hash = "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3"}, + {file = "greenlet-3.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf"}, + {file = "greenlet-3.0.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b"}, + {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6"}, + {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113"}, + {file = "greenlet-3.0.3-cp39-cp39-win32.whl", hash = "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e"}, + {file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"}, + {file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"}, ] [package.extras] -docs = ["Sphinx"] +docs = ["Sphinx", "furo"] test = ["objgraph", "psutil"] +[[package]] +name = "highspy" +version = "1.5.3" +description = "Python interface to HiGHS" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "highspy-1.5.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:278d96770c66f8b0e527fbe24109a612db1c96eee1d868e8080e7f5268160d28"}, + {file = "highspy-1.5.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:bfe04d4fa59118d07693ffdf72576b18ec95958370b366695262b4e455aa8241"}, + {file = "highspy-1.5.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e94a09150c8a57fcb0192124547d085177a74218d316717ab636afc55b3d381d"}, + {file = "highspy-1.5.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6995cc6b46c13855237fc0f3d6c32e993dba9ef9f26f13adb1da2c6d982a7c35"}, + {file = "highspy-1.5.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f7da5ea075ff798c1ba5958730bfc224231d2609f5a19f5a0d5fb402387173f"}, + {file = "highspy-1.5.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8c1c1b42a6ae70a066ff712eabc1bd271fc567bfb18f0c1c8abe8641889abfea"}, + {file = "highspy-1.5.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d557087be8815466ccad6d562f344199f8c1007f6ff04c3562b3143ae34b268"}, + {file = "highspy-1.5.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:119f224fabdba5b86085fd53f1e498743f127ec46a99880b6ae9adc5da57dd35"}, + {file = "highspy-1.5.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:24a875d5428919d4459fb43c461b36d48b8161b25a658905c60a15a808c15208"}, + {file = "highspy-1.5.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:384135fa90661376f387f26555cf6d63b922d87189d1427ee14d405d022ecf9f"}, + {file = "highspy-1.5.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:cb5a6a5f89d86af63ad7a9af7956a3df8b060835b48481d8040e63a40bf3bf21"}, + {file = "highspy-1.5.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ba14016987dd6391d52fa660c1e13d48a3aec25444a5811b044a257c34e44144"}, + {file = "highspy-1.5.3-cp310-cp310-win_amd64.whl", hash = "sha256:25774188310e56ef353f7da7c4381daf1edfc4628c64f5d34fd78ecc7dbb6dbc"}, + {file = "highspy-1.5.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0764944ec48a62ad286ad0d1d2240679bec12e551f89fed9ca3c66f845f3621f"}, + {file = "highspy-1.5.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3c8f07394118c9c433a5baa18c82c74da3b00ffac9c7cb2d7dc6ab8799861a43"}, + {file = "highspy-1.5.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:86820f34394fc602fe388d4625a2d6b1a16de2e9391217a73423a0c9b9fe88bf"}, + {file = "highspy-1.5.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93fe5720296f0e6a6f850f87407b0018d55cdee5be98bc1f01d34414022cffd8"}, + {file = "highspy-1.5.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f878edcd2e8bb5e01f01fcd43d9da2a1965f155a11059f3d8069ee5223120dd0"}, + {file = "highspy-1.5.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da9c7106e0b0de8c76741083d19b9f1cded4007ba2113b0f3b7370262e7afd0b"}, + {file = "highspy-1.5.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c1cc0e198361bb591b772c46dc0e943c8cb08c391f9a80914ac1aa3e7bf34579"}, + {file = "highspy-1.5.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4e3bcf107825448a73409bcc8e487531e222c8fd535da754783f3752953fbaee"}, + {file = "highspy-1.5.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:405fda488d1b4b8622c021561761532a9479f8e5cda8788b8a26c3fa960eea7e"}, + {file = "highspy-1.5.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:fdc99a0c35d0129e7b240e1ece0be83de8ed7fd7a667882082bab6b3e0bf3870"}, + {file = "highspy-1.5.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:553cd0a8dcb0bcf2d212535a5cbebb31e6323042705bd16da3599a5fb83abfee"}, + {file = "highspy-1.5.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0682f3a468f790053142da3ac9ae9f9e218455816bae56a2ceb0aa13166a8159"}, + {file = "highspy-1.5.3-cp311-cp311-win_amd64.whl", hash = "sha256:bd84925c18e5d087dca20599c275c707dbe4b0efe24dbc6f05959c72b492cec8"}, + {file = "highspy-1.5.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:27ed722ac9c611ac842121b6f25fa368e59a77cdb61ac4d809d4814e476a99db"}, + {file = "highspy-1.5.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fa2908e81b2917011da91df8d561b509bc0fb78dd99373b22307d2ea4af5bc44"}, + {file = "highspy-1.5.3-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:77b1a44cda1bc24e7d6abde51f86a70ecbc7f0ddd7c1805470b544e0d74855f2"}, + {file = "highspy-1.5.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44ad5540e5020675002a28ec54c74199675f0ce24b151930118cd55f6620dde1"}, + {file = "highspy-1.5.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80318bd948b42a7bd059576b92aa4bc0071b08f545fc4cfd77cdaa2c817ce0b2"}, + {file = "highspy-1.5.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5210b1ad8778214fb701065354df154b6d490fc885261c24fe7dcdc09f2c5c61"}, + {file = "highspy-1.5.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d0d0a9eee479c6af579bbf1d155138a46090372a7be458a193efd76b5e355fd9"}, + {file = "highspy-1.5.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b9e20c45c5471d2b3622689f0ba7c8ee545a8233622368577a4d96deee1ca458"}, + {file = "highspy-1.5.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:ea54afcef3978d8412463d90319439da48f97aae27ec6934e3f5925224f8a862"}, + {file = "highspy-1.5.3-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:91dd2844475bd387bd8988085f1a8ae1bc7b0c4464b9371176b666e1a235da5f"}, + {file = "highspy-1.5.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:11297cc896961ddb83b7bbaa40a706cf531b7d29c4d28c45d85032b92ce39f27"}, + {file = "highspy-1.5.3-cp37-cp37m-win_amd64.whl", hash = "sha256:6945caab340e37e08d9c151576135b69a2bbf3bf6bfabf0f758f711a93e20905"}, + {file = "highspy-1.5.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6da1ecc88cbee5a1473f25644600471cfc9c978404ef462fb8b4c6d2d98df305"}, + {file = "highspy-1.5.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3c4b56dee60cc96e76da255b97bb5287a3454aee12deb9323aea7a4751708ad6"}, + {file = "highspy-1.5.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:336b77165868a11954829ce9d5c3c13c5a585c24a730a67aee5745f8872b5a84"}, + {file = "highspy-1.5.3-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9dba2472914662516773171ea015af3f5d995a07f976375d47db7ea4819c4ef6"}, + {file = "highspy-1.5.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:002bf3a6e11e1d038c87522d311dce714882a080a230ff192ed579f8acfe9da2"}, + {file = "highspy-1.5.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b391a8bb36e07c7ec55a746f56676f381597a5ef31fd0be06589b7f4008dea89"}, + {file = "highspy-1.5.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e0c204cd191d8052ba377e4cf8674525cbf6dfa5903969907eb1f7e7347f8af"}, + {file = "highspy-1.5.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8f481fb2b31b99cb6fb81e88e449fc0ebb22751614a96ce9d169de7e669a8e90"}, + {file = "highspy-1.5.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:78a8f179d12e59839688a758e70b245067c848f1580fa464f5a95f3d7bee56ff"}, + {file = "highspy-1.5.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:1ed80950f983dcb64fbf21d67db4a4abcf5eedf11f390a65d1e537814d0c196a"}, + {file = "highspy-1.5.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:0097d733f8ba622bc2c07a59bea051fdd398943473647a4b5b61af17c9846d49"}, + {file = "highspy-1.5.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:258ad298b655244558285d2f14aaf652cc25d04a6a4794221fee183653239621"}, + {file = "highspy-1.5.3-cp38-cp38-win_amd64.whl", hash = "sha256:c7fc1311070481aade0de38d51bfad4b7eec8897ee597691717f97b84fc3a2cd"}, + {file = "highspy-1.5.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:63e45eff30abfcccbae96ba1f464e30d67837fb44b4e61950ce2ea5c34f95061"}, + {file = "highspy-1.5.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2ad13f130926c547efdaf1a49cdc4cf81d8774073a131ca8ece34c5315b1c4c0"}, + {file = "highspy-1.5.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cd380584d0ed9a110914753697cb5c850c883d021bdb156f4afb949b7571933"}, + {file = "highspy-1.5.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a0b2277341b3869514ed4231fd5fccc4f0153029e75345122c2b93d064f547c"}, + {file = "highspy-1.5.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02b32b8217ed20f3a85caa66129085dd6c0172241a5d954d8ee34f42c0f03c68"}, + {file = "highspy-1.5.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6fd447ffaf0140f27c15897988b109d8a5e0867d325f4023dd131e8b2a8a8300"}, + {file = "highspy-1.5.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e644409abb65995a38f736223c44c00d50e11ddd92a6fcfdbf8da16f9d10972d"}, + {file = "highspy-1.5.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:398cfdb5cb2598c0d8a3d3ceb45a150e02a88770cd1c91dc7349ce585810f8df"}, + {file = "highspy-1.5.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:fa8d6527cb6edc98f5bcf978621b8ee72e620cab85ddca9f271bdfca4af05af9"}, + {file = "highspy-1.5.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:11e05ee06f9a8f7a48db619dd2849edfd8bf0c6939dfb8ec696d7335ada5403c"}, + {file = "highspy-1.5.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:381fec14b83111c00eb82673e202d28d6cde25ba4988dd0ac347b2f7ff0114a3"}, + {file = "highspy-1.5.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:84c546a4c20f2483e3126c18085bbadb7b825386325ab330cde1e04c75a14d58"}, + {file = "highspy-1.5.3-cp39-cp39-win_amd64.whl", hash = "sha256:a9d0486e3f84a54a0638220e0612358686685a3785ee452d1fb244e358dbc428"}, + {file = "highspy-1.5.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bdacc1944ee8fa432eabd1f00cbc72d8102fe509543fbea93d2a07e32f2354d1"}, + {file = "highspy-1.5.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f872b2703405cdfae0ea95325a5d9776b268910cd60ff3dcff5b4d6bda53e291"}, + {file = "highspy-1.5.3-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:63f2eb7c7f71bffe0154d064adb3525de121a90e94181325cf6fdf03c7c749bf"}, + {file = "highspy-1.5.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03594aa039358a7ace6044b4f9a80535c78a2ece16f3bc67abaa650e0a3da205"}, + {file = "highspy-1.5.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ec0816df13e07d11ef0e018d0faf765da1b4659dce125bd3b23ca5dd0ce5cc65"}, + {file = "highspy-1.5.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:393278eb92b3fd98b591b02944b29003f2cfda0d68cbe2824bfa1b48854a897c"}, + {file = "highspy-1.5.3-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:691754dffc0aa229228356b4b6999cd8d135ad609cd0ea664f2d4e56b626118a"}, + {file = "highspy-1.5.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:120d445a83693f29dce0ecebff0869c5c62527bffe0c48ababa0cc557eab0db8"}, + {file = "highspy-1.5.3-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:269951eceee9d74d53e7420730158de94ae6eb936d474b66cda5ff4c4eee65fd"}, + {file = "highspy-1.5.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af0865150282cf43aed70d8903ce2540e720d81cecfe9b1bcf8af592a700af19"}, + {file = "highspy-1.5.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:9a300e55498e8999326d32e560ef17246e9e72c75bf5107a01cc004a7d4d905b"}, + {file = "highspy-1.5.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:87cdade0dfee2ddf09cb593c679a4a7cd8bb8652874269e9671cc306b3bbf983"}, + {file = "highspy-1.5.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:d8606fa0f8f349acdd299e1da3c1d9c6a6c76f9d2a53800a9e5d6976f64f65e1"}, + {file = "highspy-1.5.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:118dc9186dc073cb745de13af1548e1631569cda1258015293c180c6d293c3a8"}, + {file = "highspy-1.5.3-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65bef176259d07ebe27ef500f1898d698e760fbf4390c9e855921bd658dcfb2d"}, + {file = "highspy-1.5.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51d9714332f31ce073a7de23fab88d6aee9ff97e0f9cf2e86a496c76f3a87ec6"}, + {file = "highspy-1.5.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:672ede763e9c3b04f167d4743b79dec13fb285ba373f24f1bbd4c59eea467016"}, +] + [[package]] name = "identify" version = "2.5.33" description = "File identification library for Python" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -769,6 +889,7 @@ license = ["ukkonen"] name = "idna" version = "3.6" description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -780,6 +901,7 @@ files = [ name = "ijson" version = "3.2.3" description = "Iterative JSON parser with standard Python iterator interfaces" +category = "main" optional = false python-versions = "*" files = [ @@ -867,6 +989,7 @@ files = [ name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -878,6 +1001,7 @@ files = [ name = "isodate" version = "0.6.1" description = "An ISO 8601 date/time/duration parser and formatter" +category = "main" optional = false python-versions = "*" files = [ @@ -892,6 +1016,7 @@ six = "*" name = "isort" version = "5.13.2" description = "A Python utility / library to sort Python imports." +category = "dev" optional = false python-versions = ">=3.8.0" files = [ @@ -904,13 +1029,14 @@ colors = ["colorama (>=0.4.6)"] [[package]] name = "jinja2" -version = "3.1.2" +version = "3.1.3" description = "A very fast and expressive template engine." +category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, - {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, + {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"}, + {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"}, ] [package.dependencies] @@ -923,6 +1049,7 @@ i18n = ["Babel (>=2.7)"] name = "jmespath" version = "1.0.1" description = "JSON Matching Expressions" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -930,10 +1057,23 @@ files = [ {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"}, ] +[[package]] +name = "joblib" +version = "1.3.2" +description = "Lightweight pipelining with Python functions" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "joblib-1.3.2-py3-none-any.whl", hash = "sha256:ef4331c65f239985f3f2220ecc87db222f08fd22097a3dd5698f693875f8cbb9"}, + {file = "joblib-1.3.2.tar.gz", hash = "sha256:92f865e621e17784e7955080b6d042489e3b8e294949cc44c6eac304f59772b1"}, +] + [[package]] name = "jsonlines" version = "4.0.0" description = "Library with helpers for the jsonlines file format" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -948,6 +1088,7 @@ attrs = ">=19.2.0" name = "jsonpointer" version = "1.14" description = "Identify specific nodes in a JSON document (RFC 6901)" +category = "main" optional = false python-versions = "*" files = [ @@ -959,6 +1100,7 @@ files = [ name = "jsonschema" version = "2.6.0" description = "An implementation of JSON Schema validation for Python" +category = "main" optional = false python-versions = "*" files = [ @@ -973,6 +1115,7 @@ format = ["rfc3987", "strict-rfc3339", "webcolors"] name = "linear-tsv" version = "1.1.0" description = "Line-oriented, tab-separated value format" +category = "main" optional = false python-versions = "*" files = [ @@ -989,6 +1132,7 @@ develop = ["tox"] name = "markdown-it-py" version = "3.0.0" description = "Python port of markdown-it. Markdown parsing, done right!" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1013,6 +1157,7 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] name = "marko" version = "2.0.2" description = "A markdown parser with high extensibility." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1028,6 +1173,7 @@ toc = ["python-slugify"] name = "markupsafe" version = "2.1.3" description = "Safely add untrusted strings to HTML/XML markup." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1087,6 +1233,7 @@ files = [ name = "mccabe" version = "0.6.1" description = "McCabe checker, plugin for flake8" +category = "dev" optional = false python-versions = "*" files = [ @@ -1098,6 +1245,7 @@ files = [ name = "mdurl" version = "0.1.2" description = "Markdown URL utilities" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1109,6 +1257,7 @@ files = [ name = "mypy-extensions" version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -1120,6 +1269,7 @@ files = [ name = "networkx" version = "3.2.1" description = "Python package for creating and manipulating graphs and networks" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -1138,6 +1288,7 @@ test = ["pytest (>=7.2)", "pytest-cov (>=4.0)"] name = "nodeenv" version = "1.8.0" description = "Node.js virtual environment builder" +category = "dev" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" files = [ @@ -1150,53 +1301,55 @@ setuptools = "*" [[package]] name = "numpy" -version = "1.26.2" +version = "1.26.3" description = "Fundamental package for array computing in Python" +category = "main" optional = false python-versions = ">=3.9" files = [ - {file = "numpy-1.26.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3703fc9258a4a122d17043e57b35e5ef1c5a5837c3db8be396c82e04c1cf9b0f"}, - {file = "numpy-1.26.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cc392fdcbd21d4be6ae1bb4475a03ce3b025cd49a9be5345d76d7585aea69440"}, - {file = "numpy-1.26.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36340109af8da8805d8851ef1d74761b3b88e81a9bd80b290bbfed61bd2b4f75"}, - {file = "numpy-1.26.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bcc008217145b3d77abd3e4d5ef586e3bdfba8fe17940769f8aa09b99e856c00"}, - {file = "numpy-1.26.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3ced40d4e9e18242f70dd02d739e44698df3dcb010d31f495ff00a31ef6014fe"}, - {file = "numpy-1.26.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b272d4cecc32c9e19911891446b72e986157e6a1809b7b56518b4f3755267523"}, - {file = "numpy-1.26.2-cp310-cp310-win32.whl", hash = "sha256:22f8fc02fdbc829e7a8c578dd8d2e15a9074b630d4da29cda483337e300e3ee9"}, - {file = "numpy-1.26.2-cp310-cp310-win_amd64.whl", hash = "sha256:26c9d33f8e8b846d5a65dd068c14e04018d05533b348d9eaeef6c1bd787f9919"}, - {file = "numpy-1.26.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b96e7b9c624ef3ae2ae0e04fa9b460f6b9f17ad8b4bec6d7756510f1f6c0c841"}, - {file = "numpy-1.26.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:aa18428111fb9a591d7a9cc1b48150097ba6a7e8299fb56bdf574df650e7d1f1"}, - {file = "numpy-1.26.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06fa1ed84aa60ea6ef9f91ba57b5ed963c3729534e6e54055fc151fad0423f0a"}, - {file = "numpy-1.26.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96ca5482c3dbdd051bcd1fce8034603d6ebfc125a7bd59f55b40d8f5d246832b"}, - {file = "numpy-1.26.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:854ab91a2906ef29dc3925a064fcd365c7b4da743f84b123002f6139bcb3f8a7"}, - {file = "numpy-1.26.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f43740ab089277d403aa07567be138fc2a89d4d9892d113b76153e0e412409f8"}, - {file = "numpy-1.26.2-cp311-cp311-win32.whl", hash = "sha256:a2bbc29fcb1771cd7b7425f98b05307776a6baf43035d3b80c4b0f29e9545186"}, - {file = "numpy-1.26.2-cp311-cp311-win_amd64.whl", hash = "sha256:2b3fca8a5b00184828d12b073af4d0fc5fdd94b1632c2477526f6bd7842d700d"}, - {file = "numpy-1.26.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a4cd6ed4a339c21f1d1b0fdf13426cb3b284555c27ac2f156dfdaaa7e16bfab0"}, - {file = "numpy-1.26.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5d5244aabd6ed7f312268b9247be47343a654ebea52a60f002dc70c769048e75"}, - {file = "numpy-1.26.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a3cdb4d9c70e6b8c0814239ead47da00934666f668426fc6e94cce869e13fd7"}, - {file = "numpy-1.26.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa317b2325f7aa0a9471663e6093c210cb2ae9c0ad824732b307d2c51983d5b6"}, - {file = "numpy-1.26.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:174a8880739c16c925799c018f3f55b8130c1f7c8e75ab0a6fa9d41cab092fd6"}, - {file = "numpy-1.26.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f79b231bf5c16b1f39c7f4875e1ded36abee1591e98742b05d8a0fb55d8a3eec"}, - {file = "numpy-1.26.2-cp312-cp312-win32.whl", hash = "sha256:4a06263321dfd3598cacb252f51e521a8cb4b6df471bb12a7ee5cbab20ea9167"}, - {file = "numpy-1.26.2-cp312-cp312-win_amd64.whl", hash = "sha256:b04f5dc6b3efdaab541f7857351aac359e6ae3c126e2edb376929bd3b7f92d7e"}, - {file = "numpy-1.26.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4eb8df4bf8d3d90d091e0146f6c28492b0be84da3e409ebef54349f71ed271ef"}, - {file = "numpy-1.26.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1a13860fdcd95de7cf58bd6f8bc5a5ef81c0b0625eb2c9a783948847abbef2c2"}, - {file = "numpy-1.26.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64308ebc366a8ed63fd0bf426b6a9468060962f1a4339ab1074c228fa6ade8e3"}, - {file = "numpy-1.26.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baf8aab04a2c0e859da118f0b38617e5ee65d75b83795055fb66c0d5e9e9b818"}, - {file = "numpy-1.26.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d73a3abcac238250091b11caef9ad12413dab01669511779bc9b29261dd50210"}, - {file = "numpy-1.26.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b361d369fc7e5e1714cf827b731ca32bff8d411212fccd29ad98ad622449cc36"}, - {file = "numpy-1.26.2-cp39-cp39-win32.whl", hash = "sha256:bd3f0091e845164a20bd5a326860c840fe2af79fa12e0469a12768a3ec578d80"}, - {file = "numpy-1.26.2-cp39-cp39-win_amd64.whl", hash = "sha256:2beef57fb031dcc0dc8fa4fe297a742027b954949cabb52a2a376c144e5e6060"}, - {file = "numpy-1.26.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:1cc3d5029a30fb5f06704ad6b23b35e11309491c999838c31f124fee32107c79"}, - {file = "numpy-1.26.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94cc3c222bb9fb5a12e334d0479b97bb2df446fbe622b470928f5284ffca3f8d"}, - {file = "numpy-1.26.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe6b44fb8fcdf7eda4ef4461b97b3f63c466b27ab151bec2366db8b197387841"}, - {file = "numpy-1.26.2.tar.gz", hash = "sha256:f65738447676ab5777f11e6bbbdb8ce11b785e105f690bc45966574816b6d3ea"}, + {file = "numpy-1.26.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:806dd64230dbbfaca8a27faa64e2f414bf1c6622ab78cc4264f7f5f028fee3bf"}, + {file = "numpy-1.26.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02f98011ba4ab17f46f80f7f8f1c291ee7d855fcef0a5a98db80767a468c85cd"}, + {file = "numpy-1.26.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d45b3ec2faed4baca41c76617fcdcfa4f684ff7a151ce6fc78ad3b6e85af0a6"}, + {file = "numpy-1.26.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bdd2b45bf079d9ad90377048e2747a0c82351989a2165821f0c96831b4a2a54b"}, + {file = "numpy-1.26.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:211ddd1e94817ed2d175b60b6374120244a4dd2287f4ece45d49228b4d529178"}, + {file = "numpy-1.26.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1240f767f69d7c4c8a29adde2310b871153df9b26b5cb2b54a561ac85146485"}, + {file = "numpy-1.26.3-cp310-cp310-win32.whl", hash = "sha256:21a9484e75ad018974a2fdaa216524d64ed4212e418e0a551a2d83403b0531d3"}, + {file = "numpy-1.26.3-cp310-cp310-win_amd64.whl", hash = "sha256:9e1591f6ae98bcfac2a4bbf9221c0b92ab49762228f38287f6eeb5f3f55905ce"}, + {file = "numpy-1.26.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b831295e5472954104ecb46cd98c08b98b49c69fdb7040483aff799a755a7374"}, + {file = "numpy-1.26.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9e87562b91f68dd8b1c39149d0323b42e0082db7ddb8e934ab4c292094d575d6"}, + {file = "numpy-1.26.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c66d6fec467e8c0f975818c1796d25c53521124b7cfb760114be0abad53a0a2"}, + {file = "numpy-1.26.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f25e2811a9c932e43943a2615e65fc487a0b6b49218899e62e426e7f0a57eeda"}, + {file = "numpy-1.26.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:af36e0aa45e25c9f57bf684b1175e59ea05d9a7d3e8e87b7ae1a1da246f2767e"}, + {file = "numpy-1.26.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:51c7f1b344f302067b02e0f5b5d2daa9ed4a721cf49f070280ac202738ea7f00"}, + {file = "numpy-1.26.3-cp311-cp311-win32.whl", hash = "sha256:7ca4f24341df071877849eb2034948459ce3a07915c2734f1abb4018d9c49d7b"}, + {file = "numpy-1.26.3-cp311-cp311-win_amd64.whl", hash = "sha256:39763aee6dfdd4878032361b30b2b12593fb445ddb66bbac802e2113eb8a6ac4"}, + {file = "numpy-1.26.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a7081fd19a6d573e1a05e600c82a1c421011db7935ed0d5c483e9dd96b99cf13"}, + {file = "numpy-1.26.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12c70ac274b32bc00c7f61b515126c9205323703abb99cd41836e8125ea0043e"}, + {file = "numpy-1.26.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f784e13e598e9594750b2ef6729bcd5a47f6cfe4a12cca13def35e06d8163e3"}, + {file = "numpy-1.26.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f24750ef94d56ce6e33e4019a8a4d68cfdb1ef661a52cdaee628a56d2437419"}, + {file = "numpy-1.26.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:77810ef29e0fb1d289d225cabb9ee6cf4d11978a00bb99f7f8ec2132a84e0166"}, + {file = "numpy-1.26.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8ed07a90f5450d99dad60d3799f9c03c6566709bd53b497eb9ccad9a55867f36"}, + {file = "numpy-1.26.3-cp312-cp312-win32.whl", hash = "sha256:f73497e8c38295aaa4741bdfa4fda1a5aedda5473074369eca10626835445511"}, + {file = "numpy-1.26.3-cp312-cp312-win_amd64.whl", hash = "sha256:da4b0c6c699a0ad73c810736303f7fbae483bcb012e38d7eb06a5e3b432c981b"}, + {file = "numpy-1.26.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1666f634cb3c80ccbd77ec97bc17337718f56d6658acf5d3b906ca03e90ce87f"}, + {file = "numpy-1.26.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:18c3319a7d39b2c6a9e3bb75aab2304ab79a811ac0168a671a62e6346c29b03f"}, + {file = "numpy-1.26.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b7e807d6888da0db6e7e75838444d62495e2b588b99e90dd80c3459594e857b"}, + {file = "numpy-1.26.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4d362e17bcb0011738c2d83e0a65ea8ce627057b2fdda37678f4374a382a137"}, + {file = "numpy-1.26.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b8c275f0ae90069496068c714387b4a0eba5d531aace269559ff2b43655edd58"}, + {file = "numpy-1.26.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:cc0743f0302b94f397a4a65a660d4cd24267439eb16493fb3caad2e4389bccbb"}, + {file = "numpy-1.26.3-cp39-cp39-win32.whl", hash = "sha256:9bc6d1a7f8cedd519c4b7b1156d98e051b726bf160715b769106661d567b3f03"}, + {file = "numpy-1.26.3-cp39-cp39-win_amd64.whl", hash = "sha256:867e3644e208c8922a3be26fc6bbf112a035f50f0a86497f98f228c50c607bb2"}, + {file = "numpy-1.26.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3c67423b3703f8fbd90f5adaa37f85b5794d3366948efe9a5190a5f3a83fc34e"}, + {file = "numpy-1.26.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46f47ee566d98849323f01b349d58f2557f02167ee301e5e28809a8c0e27a2d0"}, + {file = "numpy-1.26.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a8474703bffc65ca15853d5fd4d06b18138ae90c17c8d12169968e998e448bb5"}, + {file = "numpy-1.26.3.tar.gz", hash = "sha256:697df43e2b6310ecc9d95f05d5ef20eacc09c7c4ecc9da3f235d39e71b7da1e4"}, ] [[package]] name = "oemof-network" version = "0.5.0a5" description = "The network/graph submodules of oemof." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1217,6 +1370,7 @@ dev = ["pytest"] name = "oemof-solph" version = "0.5.2.dev0" description = "A model generator for energy system modelling and optimisation." +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1243,6 +1397,7 @@ examples = ["matplotlib"] name = "oemof.tabular" version = "0.0.5dev" description = "" +category = "main" optional = false python-versions = ">=3.9, <3.11" files = [] @@ -1273,6 +1428,7 @@ resolved_reference = "9f68961dabcbb2d39a972fafebaa4f1b52406ce7" name = "oemof-tools" version = "0.4.3" description = "Tiny tools of the oemof project." +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1287,6 +1443,7 @@ dev = ["pytest", "sphinx", "sphinx-rtd-theme"] name = "openpyxl" version = "3.1.2" description = "A Python library to read/write Excel 2010 xlsx/xlsm files" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1301,6 +1458,7 @@ et-xmlfile = "*" name = "packaging" version = "23.2" description = "Core utilities for Python packages" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1312,6 +1470,7 @@ files = [ name = "pandas" version = "2.1.4" description = "Powerful data structures for data analysis, time series, and statistics" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -1376,6 +1535,7 @@ xml = ["lxml (>=4.8.0)"] name = "paramiko" version = "3.4.0" description = "SSH2 protocol library" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1397,6 +1557,7 @@ invoke = ["invoke (>=2.0)"] name = "pathspec" version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1408,6 +1569,7 @@ files = [ name = "petl" version = "1.7.14" description = "A Python package for extracting, transforming and loading tables of data." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -1434,6 +1596,7 @@ xpath = ["lxml (>=4.4.0)"] name = "platformdirs" version = "4.1.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1449,6 +1612,7 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-co name = "pluggy" version = "1.3.0" description = "plugin and hook calling mechanisms for python" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1464,6 +1628,7 @@ testing = ["pytest", "pytest-benchmark"] name = "ply" version = "3.11" description = "Python Lex & Yacc" +category = "main" optional = false python-versions = "*" files = [ @@ -1475,6 +1640,7 @@ files = [ name = "pre-commit" version = "2.21.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1493,6 +1659,7 @@ virtualenv = ">=20.10.0" name = "pycodestyle" version = "2.8.0" description = "Python style guide checker" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -1504,6 +1671,7 @@ files = [ name = "pycparser" version = "2.21" description = "C parser in Python" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -1515,6 +1683,7 @@ files = [ name = "pyflakes" version = "2.4.0" description = "passive checker of Python programs" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -1526,6 +1695,7 @@ files = [ name = "pygments" version = "2.17.2" description = "Pygments is a syntax highlighting package written in Python." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1541,6 +1711,7 @@ windows-terminal = ["colorama (>=0.4.6)"] name = "pynacl" version = "1.5.0" description = "Python binding to the Networking and Cryptography (NaCl) library" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1567,6 +1738,7 @@ tests = ["hypothesis (>=3.27.0)", "pytest (>=3.2.1,!=3.3.0)"] name = "pyomo" version = "6.7.0" description = "Pyomo: Python Optimization Modeling Objects" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1614,6 +1786,7 @@ tests = ["coverage", "parameterized", "pybind11", "pytest", "pytest-parallel"] name = "pyparsing" version = "3.1.1" description = "pyparsing module - Classes and methods to define and execute parsing grammars" +category = "main" optional = false python-versions = ">=3.6.8" files = [ @@ -1626,13 +1799,14 @@ diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "pytest" -version = "7.4.3" +version = "7.4.4" description = "pytest: simple powerful testing with Python" +category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "pytest-7.4.3-py3-none-any.whl", hash = "sha256:0d009c083ea859a71b76adf7c1d502e4bc170b80a8ef002da5806527b9591fac"}, - {file = "pytest-7.4.3.tar.gz", hash = "sha256:d989d136982de4e3b29dabcc838ad581c64e8ed52c11fbe86ddebd9da0818cd5"}, + {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, + {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, ] [package.dependencies] @@ -1650,6 +1824,7 @@ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "no name = "python-dateutil" version = "2.8.2" description = "Extensions to the standard Python datetime module" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -1664,6 +1839,7 @@ six = ">=1.5" name = "python-dotenv" version = "0.21.1" description = "Read key-value pairs from a .env file and set them as environment variables" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1678,6 +1854,7 @@ cli = ["click (>=5.0)"] name = "python-slugify" version = "8.0.1" description = "A Python slugify application that also handles Unicode" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1695,6 +1872,7 @@ unidecode = ["Unidecode (>=1.1.1)"] name = "pytz" version = "2023.3.post1" description = "World timezone definitions, modern and historical" +category = "main" optional = false python-versions = "*" files = [ @@ -1706,6 +1884,7 @@ files = [ name = "pyyaml" version = "6.0.1" description = "YAML parser and emitter for Python" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1755,6 +1934,7 @@ files = [ name = "rdflib" version = "7.0.0" description = "RDFLib is a Python library for working with RDF, a simple yet powerful language for representing information." +category = "main" optional = false python-versions = ">=3.8.1,<4.0.0" files = [ @@ -1774,105 +1954,112 @@ networkx = ["networkx (>=2.0.0,<3.0.0)"] [[package]] name = "regex" -version = "2023.10.3" +version = "2023.12.25" description = "Alternative regular expression module, to replace re." +category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "regex-2023.10.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4c34d4f73ea738223a094d8e0ffd6d2c1a1b4c175da34d6b0de3d8d69bee6bcc"}, - {file = "regex-2023.10.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a8f4e49fc3ce020f65411432183e6775f24e02dff617281094ba6ab079ef0915"}, - {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4cd1bccf99d3ef1ab6ba835308ad85be040e6a11b0977ef7ea8c8005f01a3c29"}, - {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:81dce2ddc9f6e8f543d94b05d56e70d03a0774d32f6cca53e978dc01e4fc75b8"}, - {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c6b4d23c04831e3ab61717a707a5d763b300213db49ca680edf8bf13ab5d91b"}, - {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c15ad0aee158a15e17e0495e1e18741573d04eb6da06d8b84af726cfc1ed02ee"}, - {file = "regex-2023.10.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6239d4e2e0b52c8bd38c51b760cd870069f0bdf99700a62cd509d7a031749a55"}, - {file = "regex-2023.10.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4a8bf76e3182797c6b1afa5b822d1d5802ff30284abe4599e1247be4fd6b03be"}, - {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d9c727bbcf0065cbb20f39d2b4f932f8fa1631c3e01fcedc979bd4f51fe051c5"}, - {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:3ccf2716add72f80714b9a63899b67fa711b654be3fcdd34fa391d2d274ce767"}, - {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:107ac60d1bfdc3edb53be75e2a52aff7481b92817cfdddd9b4519ccf0e54a6ff"}, - {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:00ba3c9818e33f1fa974693fb55d24cdc8ebafcb2e4207680669d8f8d7cca79a"}, - {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f0a47efb1dbef13af9c9a54a94a0b814902e547b7f21acb29434504d18f36e3a"}, - {file = "regex-2023.10.3-cp310-cp310-win32.whl", hash = "sha256:36362386b813fa6c9146da6149a001b7bd063dabc4d49522a1f7aa65b725c7ec"}, - {file = "regex-2023.10.3-cp310-cp310-win_amd64.whl", hash = "sha256:c65a3b5330b54103e7d21cac3f6bf3900d46f6d50138d73343d9e5b2900b2353"}, - {file = "regex-2023.10.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:90a79bce019c442604662d17bf69df99090e24cdc6ad95b18b6725c2988a490e"}, - {file = "regex-2023.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c7964c2183c3e6cce3f497e3a9f49d182e969f2dc3aeeadfa18945ff7bdd7051"}, - {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ef80829117a8061f974b2fda8ec799717242353bff55f8a29411794d635d964"}, - {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5addc9d0209a9afca5fc070f93b726bf7003bd63a427f65ef797a931782e7edc"}, - {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c148bec483cc4b421562b4bcedb8e28a3b84fcc8f0aa4418e10898f3c2c0eb9b"}, - {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d1f21af4c1539051049796a0f50aa342f9a27cde57318f2fc41ed50b0dbc4ac"}, - {file = "regex-2023.10.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0b9ac09853b2a3e0d0082104036579809679e7715671cfbf89d83c1cb2a30f58"}, - {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ebedc192abbc7fd13c5ee800e83a6df252bec691eb2c4bedc9f8b2e2903f5e2a"}, - {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d8a993c0a0ffd5f2d3bda23d0cd75e7086736f8f8268de8a82fbc4bd0ac6791e"}, - {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:be6b7b8d42d3090b6c80793524fa66c57ad7ee3fe9722b258aec6d0672543fd0"}, - {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4023e2efc35a30e66e938de5aef42b520c20e7eda7bb5fb12c35e5d09a4c43f6"}, - {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0d47840dc05e0ba04fe2e26f15126de7c755496d5a8aae4a08bda4dd8d646c54"}, - {file = "regex-2023.10.3-cp311-cp311-win32.whl", hash = "sha256:9145f092b5d1977ec8c0ab46e7b3381b2fd069957b9862a43bd383e5c01d18c2"}, - {file = "regex-2023.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:b6104f9a46bd8743e4f738afef69b153c4b8b592d35ae46db07fc28ae3d5fb7c"}, - {file = "regex-2023.10.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:bff507ae210371d4b1fe316d03433ac099f184d570a1a611e541923f78f05037"}, - {file = "regex-2023.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:be5e22bbb67924dea15039c3282fa4cc6cdfbe0cbbd1c0515f9223186fc2ec5f"}, - {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a992f702c9be9c72fa46f01ca6e18d131906a7180950958f766c2aa294d4b41"}, - {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7434a61b158be563c1362d9071358f8ab91b8d928728cd2882af060481244c9e"}, - {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2169b2dcabf4e608416f7f9468737583ce5f0a6e8677c4efbf795ce81109d7c"}, - {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9e908ef5889cda4de038892b9accc36d33d72fb3e12c747e2799a0e806ec841"}, - {file = "regex-2023.10.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12bd4bc2c632742c7ce20db48e0d99afdc05e03f0b4c1af90542e05b809a03d9"}, - {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bc72c231f5449d86d6c7d9cc7cd819b6eb30134bb770b8cfdc0765e48ef9c420"}, - {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bce8814b076f0ce5766dc87d5a056b0e9437b8e0cd351b9a6c4e1134a7dfbda9"}, - {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:ba7cd6dc4d585ea544c1412019921570ebd8a597fabf475acc4528210d7c4a6f"}, - {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b0c7d2f698e83f15228ba41c135501cfe7d5740181d5903e250e47f617eb4292"}, - {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5a8f91c64f390ecee09ff793319f30a0f32492e99f5dc1c72bc361f23ccd0a9a"}, - {file = "regex-2023.10.3-cp312-cp312-win32.whl", hash = "sha256:ad08a69728ff3c79866d729b095872afe1e0557251da4abb2c5faff15a91d19a"}, - {file = "regex-2023.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:39cdf8d141d6d44e8d5a12a8569d5a227f645c87df4f92179bd06e2e2705e76b"}, - {file = "regex-2023.10.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4a3ee019a9befe84fa3e917a2dd378807e423d013377a884c1970a3c2792d293"}, - {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76066d7ff61ba6bf3cb5efe2428fc82aac91802844c022d849a1f0f53820502d"}, - {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfe50b61bab1b1ec260fa7cd91106fa9fece57e6beba05630afe27c71259c59b"}, - {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fd88f373cb71e6b59b7fa597e47e518282455c2734fd4306a05ca219a1991b0"}, - {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3ab05a182c7937fb374f7e946f04fb23a0c0699c0450e9fb02ef567412d2fa3"}, - {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dac37cf08fcf2094159922edc7a2784cfcc5c70f8354469f79ed085f0328ebdf"}, - {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e54ddd0bb8fb626aa1f9ba7b36629564544954fff9669b15da3610c22b9a0991"}, - {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:3367007ad1951fde612bf65b0dffc8fd681a4ab98ac86957d16491400d661302"}, - {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:16f8740eb6dbacc7113e3097b0a36065a02e37b47c936b551805d40340fb9971"}, - {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:f4f2ca6df64cbdd27f27b34f35adb640b5d2d77264228554e68deda54456eb11"}, - {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:39807cbcbe406efca2a233884e169d056c35aa7e9f343d4e78665246a332f597"}, - {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7eece6fbd3eae4a92d7c748ae825cbc1ee41a89bb1c3db05b5578ed3cfcfd7cb"}, - {file = "regex-2023.10.3-cp37-cp37m-win32.whl", hash = "sha256:ce615c92d90df8373d9e13acddd154152645c0dc060871abf6bd43809673d20a"}, - {file = "regex-2023.10.3-cp37-cp37m-win_amd64.whl", hash = "sha256:0f649fa32fe734c4abdfd4edbb8381c74abf5f34bc0b3271ce687b23729299ed"}, - {file = "regex-2023.10.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9b98b7681a9437262947f41c7fac567c7e1f6eddd94b0483596d320092004533"}, - {file = "regex-2023.10.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:91dc1d531f80c862441d7b66c4505cd6ea9d312f01fb2f4654f40c6fdf5cc37a"}, - {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82fcc1f1cc3ff1ab8a57ba619b149b907072e750815c5ba63e7aa2e1163384a4"}, - {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7979b834ec7a33aafae34a90aad9f914c41fd6eaa8474e66953f3f6f7cbd4368"}, - {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef71561f82a89af6cfcbee47f0fabfdb6e63788a9258e913955d89fdd96902ab"}, - {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd829712de97753367153ed84f2de752b86cd1f7a88b55a3a775eb52eafe8a94"}, - {file = "regex-2023.10.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00e871d83a45eee2f8688d7e6849609c2ca2a04a6d48fba3dff4deef35d14f07"}, - {file = "regex-2023.10.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:706e7b739fdd17cb89e1fbf712d9dc21311fc2333f6d435eac2d4ee81985098c"}, - {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cc3f1c053b73f20c7ad88b0d1d23be7e7b3901229ce89f5000a8399746a6e039"}, - {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6f85739e80d13644b981a88f529d79c5bdf646b460ba190bffcaf6d57b2a9863"}, - {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:741ba2f511cc9626b7561a440f87d658aabb3d6b744a86a3c025f866b4d19e7f"}, - {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e77c90ab5997e85901da85131fd36acd0ed2221368199b65f0d11bca44549711"}, - {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:979c24cbefaf2420c4e377ecd1f165ea08cc3d1fbb44bdc51bccbbf7c66a2cb4"}, - {file = "regex-2023.10.3-cp38-cp38-win32.whl", hash = "sha256:58837f9d221744d4c92d2cf7201c6acd19623b50c643b56992cbd2b745485d3d"}, - {file = "regex-2023.10.3-cp38-cp38-win_amd64.whl", hash = "sha256:c55853684fe08d4897c37dfc5faeff70607a5f1806c8be148f1695be4a63414b"}, - {file = "regex-2023.10.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2c54e23836650bdf2c18222c87f6f840d4943944146ca479858404fedeb9f9af"}, - {file = "regex-2023.10.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:69c0771ca5653c7d4b65203cbfc5e66db9375f1078689459fe196fe08b7b4930"}, - {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ac965a998e1388e6ff2e9781f499ad1eaa41e962a40d11c7823c9952c77123e"}, - {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c0e8fae5b27caa34177bdfa5a960c46ff2f78ee2d45c6db15ae3f64ecadde14"}, - {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6c56c3d47da04f921b73ff9415fbaa939f684d47293f071aa9cbb13c94afc17d"}, - {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ef1e014eed78ab650bef9a6a9cbe50b052c0aebe553fb2881e0453717573f52"}, - {file = "regex-2023.10.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d29338556a59423d9ff7b6eb0cb89ead2b0875e08fe522f3e068b955c3e7b59b"}, - {file = "regex-2023.10.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9c6d0ced3c06d0f183b73d3c5920727268d2201aa0fe6d55c60d68c792ff3588"}, - {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:994645a46c6a740ee8ce8df7911d4aee458d9b1bc5639bc968226763d07f00fa"}, - {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:66e2fe786ef28da2b28e222c89502b2af984858091675044d93cb50e6f46d7af"}, - {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:11175910f62b2b8c055f2b089e0fedd694fe2be3941b3e2633653bc51064c528"}, - {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:06e9abc0e4c9ab4779c74ad99c3fc10d3967d03114449acc2c2762ad4472b8ca"}, - {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:fb02e4257376ae25c6dd95a5aec377f9b18c09be6ebdefa7ad209b9137b73d48"}, - {file = "regex-2023.10.3-cp39-cp39-win32.whl", hash = "sha256:3b2c3502603fab52d7619b882c25a6850b766ebd1b18de3df23b2f939360e1bd"}, - {file = "regex-2023.10.3-cp39-cp39-win_amd64.whl", hash = "sha256:adbccd17dcaff65704c856bd29951c58a1bd4b2b0f8ad6b826dbd543fe740988"}, - {file = "regex-2023.10.3.tar.gz", hash = "sha256:3fef4f844d2290ee0ba57addcec17eec9e3df73f10a2748485dfd6a3a188cc0f"}, + {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0694219a1d54336fd0445ea382d49d36882415c0134ee1e8332afd1529f0baa5"}, + {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b014333bd0217ad3d54c143de9d4b9a3ca1c5a29a6d0d554952ea071cff0f1f8"}, + {file = "regex-2023.12.25-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d865984b3f71f6d0af64d0d88f5733521698f6c16f445bb09ce746c92c97c586"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e0eabac536b4cc7f57a5f3d095bfa557860ab912f25965e08fe1545e2ed8b4c"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c25a8ad70e716f96e13a637802813f65d8a6760ef48672aa3502f4c24ea8b400"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9b6d73353f777630626f403b0652055ebfe8ff142a44ec2cf18ae470395766e"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9cc99d6946d750eb75827cb53c4371b8b0fe89c733a94b1573c9dd16ea6c9e4"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88d1f7bef20c721359d8675f7d9f8e414ec5003d8f642fdfd8087777ff7f94b5"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cb3fe77aec8f1995611f966d0c656fdce398317f850d0e6e7aebdfe61f40e1cd"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7aa47c2e9ea33a4a2a05f40fcd3ea36d73853a2aae7b4feab6fc85f8bf2c9704"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:df26481f0c7a3f8739fecb3e81bc9da3fcfae34d6c094563b9d4670b047312e1"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c40281f7d70baf6e0db0c2f7472b31609f5bc2748fe7275ea65a0b4601d9b392"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:d94a1db462d5690ebf6ae86d11c5e420042b9898af5dcf278bd97d6bda065423"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ba1b30765a55acf15dce3f364e4928b80858fa8f979ad41f862358939bdd1f2f"}, + {file = "regex-2023.12.25-cp310-cp310-win32.whl", hash = "sha256:150c39f5b964e4d7dba46a7962a088fbc91f06e606f023ce57bb347a3b2d4630"}, + {file = "regex-2023.12.25-cp310-cp310-win_amd64.whl", hash = "sha256:09da66917262d9481c719599116c7dc0c321ffcec4b1f510c4f8a066f8768105"}, + {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1b9d811f72210fa9306aeb88385b8f8bcef0dfbf3873410413c00aa94c56c2b6"}, + {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d902a43085a308cef32c0d3aea962524b725403fd9373dea18110904003bac97"}, + {file = "regex-2023.12.25-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d166eafc19f4718df38887b2bbe1467a4f74a9830e8605089ea7a30dd4da8887"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7ad32824b7f02bb3c9f80306d405a1d9b7bb89362d68b3c5a9be53836caebdb"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:636ba0a77de609d6510235b7f0e77ec494d2657108f777e8765efc060094c98c"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fda75704357805eb953a3ee15a2b240694a9a514548cd49b3c5124b4e2ad01b"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f72cbae7f6b01591f90814250e636065850c5926751af02bb48da94dfced7baa"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db2a0b1857f18b11e3b0e54ddfefc96af46b0896fb678c85f63fb8c37518b3e7"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7502534e55c7c36c0978c91ba6f61703faf7ce733715ca48f499d3dbbd7657e0"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e8c7e08bb566de4faaf11984af13f6bcf6a08f327b13631d41d62592681d24fe"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:283fc8eed679758de38fe493b7d7d84a198b558942b03f017b1f94dda8efae80"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:f44dd4d68697559d007462b0a3a1d9acd61d97072b71f6d1968daef26bc744bd"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:67d3ccfc590e5e7197750fcb3a2915b416a53e2de847a728cfa60141054123d4"}, + {file = "regex-2023.12.25-cp311-cp311-win32.whl", hash = "sha256:68191f80a9bad283432385961d9efe09d783bcd36ed35a60fb1ff3f1ec2efe87"}, + {file = "regex-2023.12.25-cp311-cp311-win_amd64.whl", hash = "sha256:7d2af3f6b8419661a0c421584cfe8aaec1c0e435ce7e47ee2a97e344b98f794f"}, + {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8a0ccf52bb37d1a700375a6b395bff5dd15c50acb745f7db30415bae3c2b0715"}, + {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c3c4a78615b7762740531c27cf46e2f388d8d727d0c0c739e72048beb26c8a9d"}, + {file = "regex-2023.12.25-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ad83e7545b4ab69216cef4cc47e344d19622e28aabec61574b20257c65466d6a"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7a635871143661feccce3979e1727c4e094f2bdfd3ec4b90dfd4f16f571a87a"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d498eea3f581fbe1b34b59c697512a8baef88212f92e4c7830fcc1499f5b45a5"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:43f7cd5754d02a56ae4ebb91b33461dc67be8e3e0153f593c509e21d219c5060"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51f4b32f793812714fd5307222a7f77e739b9bc566dc94a18126aba3b92b98a3"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba99d8077424501b9616b43a2d208095746fb1284fc5ba490139651f971d39d9"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4bfc2b16e3ba8850e0e262467275dd4d62f0d045e0e9eda2bc65078c0110a11f"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8c2c19dae8a3eb0ea45a8448356ed561be843b13cbc34b840922ddf565498c1c"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:60080bb3d8617d96f0fb7e19796384cc2467447ef1c491694850ebd3670bc457"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b77e27b79448e34c2c51c09836033056a0547aa360c45eeeb67803da7b0eedaf"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:518440c991f514331f4850a63560321f833979d145d7d81186dbe2f19e27ae3d"}, + {file = "regex-2023.12.25-cp312-cp312-win32.whl", hash = "sha256:e2610e9406d3b0073636a3a2e80db05a02f0c3169b5632022b4e81c0364bcda5"}, + {file = "regex-2023.12.25-cp312-cp312-win_amd64.whl", hash = "sha256:cc37b9aeebab425f11f27e5e9e6cf580be7206c6582a64467a14dda211abc232"}, + {file = "regex-2023.12.25-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:da695d75ac97cb1cd725adac136d25ca687da4536154cdc2815f576e4da11c69"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d126361607b33c4eb7b36debc173bf25d7805847346dd4d99b5499e1fef52bc7"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4719bb05094d7d8563a450cf8738d2e1061420f79cfcc1fa7f0a44744c4d8f73"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5dd58946bce44b53b06d94aa95560d0b243eb2fe64227cba50017a8d8b3cd3e2"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22a86d9fff2009302c440b9d799ef2fe322416d2d58fc124b926aa89365ec482"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2aae8101919e8aa05ecfe6322b278f41ce2994c4a430303c4cd163fef746e04f"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e692296c4cc2873967771345a876bcfc1c547e8dd695c6b89342488b0ea55cd8"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:263ef5cc10979837f243950637fffb06e8daed7f1ac1e39d5910fd29929e489a"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d6f7e255e5fa94642a0724e35406e6cb7001c09d476ab5fce002f652b36d0c39"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:88ad44e220e22b63b0f8f81f007e8abbb92874d8ced66f32571ef8beb0643b2b"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:3a17d3ede18f9cedcbe23d2daa8a2cd6f59fe2bf082c567e43083bba3fb00347"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d15b274f9e15b1a0b7a45d2ac86d1f634d983ca40d6b886721626c47a400bf39"}, + {file = "regex-2023.12.25-cp37-cp37m-win32.whl", hash = "sha256:ed19b3a05ae0c97dd8f75a5d8f21f7723a8c33bbc555da6bbe1f96c470139d3c"}, + {file = "regex-2023.12.25-cp37-cp37m-win_amd64.whl", hash = "sha256:a6d1047952c0b8104a1d371f88f4ab62e6275567d4458c1e26e9627ad489b445"}, + {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b43523d7bc2abd757119dbfb38af91b5735eea45537ec6ec3a5ec3f9562a1c53"}, + {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:efb2d82f33b2212898f1659fb1c2e9ac30493ac41e4d53123da374c3b5541e64"}, + {file = "regex-2023.12.25-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b7fca9205b59c1a3d5031f7e64ed627a1074730a51c2a80e97653e3e9fa0d415"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086dd15e9435b393ae06f96ab69ab2d333f5d65cbe65ca5a3ef0ec9564dfe770"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e81469f7d01efed9b53740aedd26085f20d49da65f9c1f41e822a33992cb1590"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:34e4af5b27232f68042aa40a91c3b9bb4da0eeb31b7632e0091afc4310afe6cb"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9852b76ab558e45b20bf1893b59af64a28bd3820b0c2efc80e0a70a4a3ea51c1"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff100b203092af77d1a5a7abe085b3506b7eaaf9abf65b73b7d6905b6cb76988"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cc038b2d8b1470364b1888a98fd22d616fba2b6309c5b5f181ad4483e0017861"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:094ba386bb5c01e54e14434d4caabf6583334090865b23ef58e0424a6286d3dc"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5cd05d0f57846d8ba4b71d9c00f6f37d6b97d5e5ef8b3c3840426a475c8f70f4"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:9aa1a67bbf0f957bbe096375887b2505f5d8ae16bf04488e8b0f334c36e31360"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:98a2636994f943b871786c9e82bfe7883ecdaba2ef5df54e1450fa9869d1f756"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:37f8e93a81fc5e5bd8db7e10e62dc64261bcd88f8d7e6640aaebe9bc180d9ce2"}, + {file = "regex-2023.12.25-cp38-cp38-win32.whl", hash = "sha256:d78bd484930c1da2b9679290a41cdb25cc127d783768a0369d6b449e72f88beb"}, + {file = "regex-2023.12.25-cp38-cp38-win_amd64.whl", hash = "sha256:b521dcecebc5b978b447f0f69b5b7f3840eac454862270406a39837ffae4e697"}, + {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f7bc09bc9c29ebead055bcba136a67378f03d66bf359e87d0f7c759d6d4ffa31"}, + {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e14b73607d6231f3cc4622809c196b540a6a44e903bcfad940779c80dffa7be7"}, + {file = "regex-2023.12.25-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9eda5f7a50141291beda3edd00abc2d4a5b16c29c92daf8d5bd76934150f3edc"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc6bb9aa69aacf0f6032c307da718f61a40cf970849e471254e0e91c56ffca95"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:298dc6354d414bc921581be85695d18912bea163a8b23cac9a2562bbcd5088b1"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f4e475a80ecbd15896a976aa0b386c5525d0ed34d5c600b6d3ebac0a67c7ddf"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:531ac6cf22b53e0696f8e1d56ce2396311254eb806111ddd3922c9d937151dae"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22f3470f7524b6da61e2020672df2f3063676aff444db1daa283c2ea4ed259d6"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:89723d2112697feaa320c9d351e5f5e7b841e83f8b143dba8e2d2b5f04e10923"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0ecf44ddf9171cd7566ef1768047f6e66975788258b1c6c6ca78098b95cf9a3d"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:905466ad1702ed4acfd67a902af50b8db1feeb9781436372261808df7a2a7bca"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:4558410b7a5607a645e9804a3e9dd509af12fb72b9825b13791a37cd417d73a5"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:7e316026cc1095f2a3e8cc012822c99f413b702eaa2ca5408a513609488cb62f"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3b1de218d5375cd6ac4b5493e0b9f3df2be331e86520f23382f216c137913d20"}, + {file = "regex-2023.12.25-cp39-cp39-win32.whl", hash = "sha256:11a963f8e25ab5c61348d090bf1b07f1953929c13bd2309a0662e9ff680763c9"}, + {file = "regex-2023.12.25-cp39-cp39-win_amd64.whl", hash = "sha256:e693e233ac92ba83a87024e1d32b5f9ab15ca55ddd916d878146f4e3406b5c91"}, + {file = "regex-2023.12.25.tar.gz", hash = "sha256:29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5"}, ] [[package]] name = "requests" version = "2.31.0" description = "Python HTTP for Humans." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1894,6 +2081,7 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "rfc3986" version = "2.0.0" description = "Validating URI References per RFC 3986" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1908,6 +2096,7 @@ idna2008 = ["idna"] name = "rich" version = "13.7.0" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -1926,6 +2115,7 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"] name = "s3transfer" version = "0.6.2" description = "An Amazon S3 Transfer Manager" +category = "main" optional = false python-versions = ">= 3.7" files = [ @@ -1939,15 +2129,107 @@ botocore = ">=1.12.36,<2.0a.0" [package.extras] crt = ["botocore[crt] (>=1.20.29,<2.0a.0)"] +[[package]] +name = "scikit-learn" +version = "1.3.2" +description = "A set of python modules for machine learning and data mining" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "scikit-learn-1.3.2.tar.gz", hash = "sha256:a2f54c76accc15a34bfb9066e6c7a56c1e7235dda5762b990792330b52ccfb05"}, + {file = "scikit_learn-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e326c0eb5cf4d6ba40f93776a20e9a7a69524c4db0757e7ce24ba222471ee8a1"}, + {file = "scikit_learn-1.3.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:535805c2a01ccb40ca4ab7d081d771aea67e535153e35a1fd99418fcedd1648a"}, + {file = "scikit_learn-1.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1215e5e58e9880b554b01187b8c9390bf4dc4692eedeaf542d3273f4785e342c"}, + {file = "scikit_learn-1.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ee107923a623b9f517754ea2f69ea3b62fc898a3641766cb7deb2f2ce450161"}, + {file = "scikit_learn-1.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:35a22e8015048c628ad099da9df5ab3004cdbf81edc75b396fd0cff8699ac58c"}, + {file = "scikit_learn-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6fb6bc98f234fda43163ddbe36df8bcde1d13ee176c6dc9b92bb7d3fc842eb66"}, + {file = "scikit_learn-1.3.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:18424efee518a1cde7b0b53a422cde2f6625197de6af36da0b57ec502f126157"}, + {file = "scikit_learn-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3271552a5eb16f208a6f7f617b8cc6d1f137b52c8a1ef8edf547db0259b2c9fb"}, + {file = "scikit_learn-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc4144a5004a676d5022b798d9e573b05139e77f271253a4703eed295bde0433"}, + {file = "scikit_learn-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:67f37d708f042a9b8d59551cf94d30431e01374e00dc2645fa186059c6c5d78b"}, + {file = "scikit_learn-1.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:8db94cd8a2e038b37a80a04df8783e09caac77cbe052146432e67800e430c028"}, + {file = "scikit_learn-1.3.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:61a6efd384258789aa89415a410dcdb39a50e19d3d8410bd29be365bcdd512d5"}, + {file = "scikit_learn-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb06f8dce3f5ddc5dee1715a9b9f19f20d295bed8e3cd4fa51e1d050347de525"}, + {file = "scikit_learn-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b2de18d86f630d68fe1f87af690d451388bb186480afc719e5f770590c2ef6c"}, + {file = "scikit_learn-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:0402638c9a7c219ee52c94cbebc8fcb5eb9fe9c773717965c1f4185588ad3107"}, + {file = "scikit_learn-1.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a19f90f95ba93c1a7f7924906d0576a84da7f3b2282ac3bfb7a08a32801add93"}, + {file = "scikit_learn-1.3.2-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:b8692e395a03a60cd927125eef3a8e3424d86dde9b2370d544f0ea35f78a8073"}, + {file = "scikit_learn-1.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15e1e94cc23d04d39da797ee34236ce2375ddea158b10bee3c343647d615581d"}, + {file = "scikit_learn-1.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:785a2213086b7b1abf037aeadbbd6d67159feb3e30263434139c98425e3dcfcf"}, + {file = "scikit_learn-1.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:64381066f8aa63c2710e6b56edc9f0894cc7bf59bd71b8ce5613a4559b6145e0"}, + {file = "scikit_learn-1.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6c43290337f7a4b969d207e620658372ba3c1ffb611f8bc2b6f031dc5c6d1d03"}, + {file = "scikit_learn-1.3.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:dc9002fc200bed597d5d34e90c752b74df516d592db162f756cc52836b38fe0e"}, + {file = "scikit_learn-1.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d08ada33e955c54355d909b9c06a4789a729977f165b8bae6f225ff0a60ec4a"}, + {file = "scikit_learn-1.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:763f0ae4b79b0ff9cca0bf3716bcc9915bdacff3cebea15ec79652d1cc4fa5c9"}, + {file = "scikit_learn-1.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:ed932ea780517b00dae7431e031faae6b49b20eb6950918eb83bd043237950e0"}, +] + +[package.dependencies] +joblib = ">=1.1.1" +numpy = ">=1.17.3,<2.0" +scipy = ">=1.5.0" +threadpoolctl = ">=2.0.0" + +[package.extras] +benchmark = ["matplotlib (>=3.1.3)", "memory-profiler (>=0.57.0)", "pandas (>=1.0.5)"] +docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.1.3)", "memory-profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.0.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.16.2)", "seaborn (>=0.9.0)", "sphinx (>=6.0.0)", "sphinx-copybutton (>=0.5.2)", "sphinx-gallery (>=0.10.1)", "sphinx-prompt (>=1.3.0)", "sphinxext-opengraph (>=0.4.2)"] +examples = ["matplotlib (>=3.1.3)", "pandas (>=1.0.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.16.2)", "seaborn (>=0.9.0)"] +tests = ["black (>=23.3.0)", "matplotlib (>=3.1.3)", "mypy (>=1.3)", "numpydoc (>=1.2.0)", "pandas (>=1.0.5)", "pooch (>=1.6.0)", "pyamg (>=4.0.0)", "pytest (>=7.1.2)", "pytest-cov (>=2.9.0)", "ruff (>=0.0.272)", "scikit-image (>=0.16.2)"] + +[[package]] +name = "scipy" +version = "1.11.4" +description = "Fundamental algorithms for scientific computing in Python" +category = "main" +optional = false +python-versions = ">=3.9" +files = [ + {file = "scipy-1.11.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc9a714581f561af0848e6b69947fda0614915f072dfd14142ed1bfe1b806710"}, + {file = "scipy-1.11.4-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:cf00bd2b1b0211888d4dc75656c0412213a8b25e80d73898083f402b50f47e41"}, + {file = "scipy-1.11.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9999c008ccf00e8fbcce1236f85ade5c569d13144f77a1946bef8863e8f6eb4"}, + {file = "scipy-1.11.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:933baf588daa8dc9a92c20a0be32f56d43faf3d1a60ab11b3f08c356430f6e56"}, + {file = "scipy-1.11.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8fce70f39076a5aa62e92e69a7f62349f9574d8405c0a5de6ed3ef72de07f446"}, + {file = "scipy-1.11.4-cp310-cp310-win_amd64.whl", hash = "sha256:6550466fbeec7453d7465e74d4f4b19f905642c89a7525571ee91dd7adabb5a3"}, + {file = "scipy-1.11.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f313b39a7e94f296025e3cffc2c567618174c0b1dde173960cf23808f9fae4be"}, + {file = "scipy-1.11.4-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:1b7c3dca977f30a739e0409fb001056484661cb2541a01aba0bb0029f7b68db8"}, + {file = "scipy-1.11.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00150c5eae7b610c32589dda259eacc7c4f1665aedf25d921907f4d08a951b1c"}, + {file = "scipy-1.11.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:530f9ad26440e85766509dbf78edcfe13ffd0ab7fec2560ee5c36ff74d6269ff"}, + {file = "scipy-1.11.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5e347b14fe01003d3b78e196e84bd3f48ffe4c8a7b8a1afbcb8f5505cb710993"}, + {file = "scipy-1.11.4-cp311-cp311-win_amd64.whl", hash = "sha256:acf8ed278cc03f5aff035e69cb511741e0418681d25fbbb86ca65429c4f4d9cd"}, + {file = "scipy-1.11.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:028eccd22e654b3ea01ee63705681ee79933652b2d8f873e7949898dda6d11b6"}, + {file = "scipy-1.11.4-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:2c6ff6ef9cc27f9b3db93a6f8b38f97387e6e0591600369a297a50a8e96e835d"}, + {file = "scipy-1.11.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b030c6674b9230d37c5c60ab456e2cf12f6784596d15ce8da9365e70896effc4"}, + {file = "scipy-1.11.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad669df80528aeca5f557712102538f4f37e503f0c5b9541655016dd0932ca79"}, + {file = "scipy-1.11.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ce7fff2e23ab2cc81ff452a9444c215c28e6305f396b2ba88343a567feec9660"}, + {file = "scipy-1.11.4-cp312-cp312-win_amd64.whl", hash = "sha256:36750b7733d960d7994888f0d148d31ea3017ac15eef664194b4ef68d36a4a97"}, + {file = "scipy-1.11.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6e619aba2df228a9b34718efb023966da781e89dd3d21637b27f2e54db0410d7"}, + {file = "scipy-1.11.4-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:f3cd9e7b3c2c1ec26364856f9fbe78695fe631150f94cd1c22228456404cf1ec"}, + {file = "scipy-1.11.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d10e45a6c50211fe256da61a11c34927c68f277e03138777bdebedd933712fea"}, + {file = "scipy-1.11.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91af76a68eeae0064887a48e25c4e616fa519fa0d38602eda7e0f97d65d57937"}, + {file = "scipy-1.11.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6df1468153a31cf55ed5ed39647279beb9cfb5d3f84369453b49e4b8502394fd"}, + {file = "scipy-1.11.4-cp39-cp39-win_amd64.whl", hash = "sha256:ee410e6de8f88fd5cf6eadd73c135020bfbbbdfcd0f6162c36a7638a1ea8cc65"}, + {file = "scipy-1.11.4.tar.gz", hash = "sha256:90a2b78e7f5733b9de748f589f09225013685f9b218275257f8a8168ededaeaa"}, +] + +[package.dependencies] +numpy = ">=1.21.6,<1.28.0" + +[package.extras] +dev = ["click", "cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy", "pycodestyle", "pydevtool", "rich-click", "ruff", "types-psutil", "typing_extensions"] +doc = ["jupytext", "matplotlib (>2)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-design (>=0.2.0)"] +test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] + [[package]] name = "setuptools" -version = "69.0.2" +version = "69.0.3" description = "Easily download, build, install, upgrade, and uninstall Python packages" +category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.0.2-py3-none-any.whl", hash = "sha256:1e8fdff6797d3865f37397be788a4e3cba233608e9b509382a2777d25ebde7f2"}, - {file = "setuptools-69.0.2.tar.gz", hash = "sha256:735896e78a4742605974de002ac60562d286fa8051a7e2299445e8e8fbb01aa6"}, + {file = "setuptools-69.0.3-py3-none-any.whl", hash = "sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05"}, + {file = "setuptools-69.0.3.tar.gz", hash = "sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78"}, ] [package.extras] @@ -1959,6 +2241,7 @@ testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jar name = "shellingham" version = "1.5.4" description = "Tool to Detect Surrounding Shell" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1970,6 +2253,7 @@ files = [ name = "simpleeval" version = "0.9.13" description = "A simple, safe single expression evaluator library." +category = "main" optional = false python-versions = "*" files = [ @@ -1981,6 +2265,7 @@ files = [ name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -1992,6 +2277,7 @@ files = [ name = "sparqlwrapper" version = "2.0.0" description = "SPARQL Endpoint interface to Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2010,44 +2296,66 @@ pandas = ["pandas (>=1.3.5)"] [[package]] name = "sqlalchemy" -version = "1.4.50" +version = "1.4.51" description = "Database Abstraction Library" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ - {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d00665725063692c42badfd521d0c4392e83c6c826795d38eb88fb108e5660e5"}, - {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85292ff52ddf85a39367057c3d7968a12ee1fb84565331a36a8fead346f08796"}, - {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d0fed0f791d78e7767c2db28d34068649dfeea027b83ed18c45a423f741425cb"}, - {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db4db3c08ffbb18582f856545f058a7a5e4ab6f17f75795ca90b3c38ee0a8ba4"}, - {file = "SQLAlchemy-1.4.50-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14b0cacdc8a4759a1e1bd47dc3ee3f5db997129eb091330beda1da5a0e9e5bd7"}, - {file = "SQLAlchemy-1.4.50-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1fb9cb60e0f33040e4f4681e6658a7eb03b5cb4643284172f91410d8c493dace"}, - {file = "SQLAlchemy-1.4.50-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4cb501d585aa74a0f86d0ea6263b9c5e1d1463f8f9071392477fd401bd3c7cc"}, - {file = "SQLAlchemy-1.4.50-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a7a66297e46f85a04d68981917c75723e377d2e0599d15fbe7a56abed5e2d75"}, - {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1db0221cb26d66294f4ca18c533e427211673ab86c1fbaca8d6d9ff78654293"}, - {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7dbe6369677a2bea68fe9812c6e4bbca06ebfa4b5cde257b2b0bf208709131"}, - {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a9bddb60566dc45c57fd0a5e14dd2d9e5f106d2241e0a2dc0c1da144f9444516"}, - {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82dd4131d88395df7c318eeeef367ec768c2a6fe5bd69423f7720c4edb79473c"}, - {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:273505fcad22e58cc67329cefab2e436006fc68e3c5423056ee0513e6523268a"}, - {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3257a6e09626d32b28a0c5b4f1a97bced585e319cfa90b417f9ab0f6145c33c"}, - {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d69738d582e3a24125f0c246ed8d712b03bd21e148268421e4a4d09c34f521a5"}, - {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34e1c5d9cd3e6bf3d1ce56971c62a40c06bfc02861728f368dcfec8aeedb2814"}, - {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1fcee5a2c859eecb4ed179edac5ffbc7c84ab09a5420219078ccc6edda45436"}, - {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fbaf6643a604aa17e7a7afd74f665f9db882df5c297bdd86c38368f2c471f37d"}, - {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2e70e0673d7d12fa6cd363453a0d22dac0d9978500aa6b46aa96e22690a55eab"}, - {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b881ac07d15fb3e4f68c5a67aa5cdaf9eb8f09eb5545aaf4b0a5f5f4659be18"}, - {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f6997da81114daef9203d30aabfa6b218a577fc2bd797c795c9c88c9eb78d49"}, - {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bdb77e1789e7596b77fd48d99ec1d2108c3349abd20227eea0d48d3f8cf398d9"}, - {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:128a948bd40780667114b0297e2cc6d657b71effa942e0a368d8cc24293febb3"}, - {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2d526aeea1bd6a442abc7c9b4b00386fd70253b80d54a0930c0a216230a35be"}, - {file = "SQLAlchemy-1.4.50.tar.gz", hash = "sha256:3b97ddf509fc21e10b09403b5219b06c5b558b27fc2453150274fa4e70707dbf"}, + {file = "SQLAlchemy-1.4.51-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:1a09d5bd1a40d76ad90e5570530e082ddc000e1d92de495746f6257dc08f166b"}, + {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2be4e6294c53f2ec8ea36486b56390e3bcaa052bf3a9a47005687ccf376745d1"}, + {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ca484ca11c65e05639ffe80f20d45e6be81fbec7683d6c9a15cd421e6e8b340"}, + {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0535d5b57d014d06ceeaeffd816bb3a6e2dddeb670222570b8c4953e2d2ea678"}, + {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af55cc207865d641a57f7044e98b08b09220da3d1b13a46f26487cc2f898a072"}, + {file = "SQLAlchemy-1.4.51-cp310-cp310-win32.whl", hash = "sha256:7af40425ac535cbda129d9915edcaa002afe35d84609fd3b9d6a8c46732e02ee"}, + {file = "SQLAlchemy-1.4.51-cp310-cp310-win_amd64.whl", hash = "sha256:8d1d7d63e5d2f4e92a39ae1e897a5d551720179bb8d1254883e7113d3826d43c"}, + {file = "SQLAlchemy-1.4.51-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:eaeeb2464019765bc4340214fca1143081d49972864773f3f1e95dba5c7edc7d"}, + {file = "SQLAlchemy-1.4.51-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7deeae5071930abb3669b5185abb6c33ddfd2398f87660fafdb9e6a5fb0f3f2f"}, + {file = "SQLAlchemy-1.4.51-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0892e7ac8bc76da499ad3ee8de8da4d7905a3110b952e2a35a940dab1ffa550e"}, + {file = "SQLAlchemy-1.4.51-cp311-cp311-win32.whl", hash = "sha256:50e074aea505f4427151c286955ea025f51752fa42f9939749336672e0674c81"}, + {file = "SQLAlchemy-1.4.51-cp311-cp311-win_amd64.whl", hash = "sha256:3b0cd89a7bd03f57ae58263d0f828a072d1b440c8c2949f38f3b446148321171"}, + {file = "SQLAlchemy-1.4.51-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a33cb3f095e7d776ec76e79d92d83117438b6153510770fcd57b9c96f9ef623d"}, + {file = "SQLAlchemy-1.4.51-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6cacc0b2dd7d22a918a9642fc89840a5d3cee18a0e1fe41080b1141b23b10916"}, + {file = "SQLAlchemy-1.4.51-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:245c67c88e63f1523e9216cad6ba3107dea2d3ee19adc359597a628afcabfbcb"}, + {file = "SQLAlchemy-1.4.51-cp312-cp312-win32.whl", hash = "sha256:8e702e7489f39375601c7ea5a0bef207256828a2bc5986c65cb15cd0cf097a87"}, + {file = "SQLAlchemy-1.4.51-cp312-cp312-win_amd64.whl", hash = "sha256:0525c4905b4b52d8ccc3c203c9d7ab2a80329ffa077d4bacf31aefda7604dc65"}, + {file = "SQLAlchemy-1.4.51-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:1980e6eb6c9be49ea8f89889989127daafc43f0b1b6843d71efab1514973cca0"}, + {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ec7a0ed9b32afdf337172678a4a0e6419775ba4e649b66f49415615fa47efbd"}, + {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:352df882088a55293f621328ec33b6ffca936ad7f23013b22520542e1ab6ad1b"}, + {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:86a22143a4001f53bf58027b044da1fb10d67b62a785fc1390b5c7f089d9838c"}, + {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c37bc677690fd33932182b85d37433845de612962ed080c3e4d92f758d1bd894"}, + {file = "SQLAlchemy-1.4.51-cp36-cp36m-win32.whl", hash = "sha256:d0a83afab5e062abffcdcbcc74f9d3ba37b2385294dd0927ad65fc6ebe04e054"}, + {file = "SQLAlchemy-1.4.51-cp36-cp36m-win_amd64.whl", hash = "sha256:a61184c7289146c8cff06b6b41807c6994c6d437278e72cf00ff7fe1c7a263d1"}, + {file = "SQLAlchemy-1.4.51-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:3f0ef620ecbab46e81035cf3dedfb412a7da35340500ba470f9ce43a1e6c423b"}, + {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c55040d8ea65414de7c47f1a23823cd9f3fad0dc93e6b6b728fee81230f817b"}, + {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ef80328e3fee2be0a1abe3fe9445d3a2e52a1282ba342d0dab6edf1fef4707"}, + {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade"}, + {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8f2df79a46e130235bc5e1bbef4de0583fb19d481eaa0bffa76e8347ea45ec6"}, + {file = "SQLAlchemy-1.4.51-cp37-cp37m-win32.whl", hash = "sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3"}, + {file = "SQLAlchemy-1.4.51-cp37-cp37m-win_amd64.whl", hash = "sha256:5e180fff133d21a800c4f050733d59340f40d42364fcb9d14f6a67764bdc48d2"}, + {file = "SQLAlchemy-1.4.51-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:7d8139ca0b9f93890ab899da678816518af74312bb8cd71fb721436a93a93298"}, + {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb18549b770351b54e1ab5da37d22bc530b8bfe2ee31e22b9ebe650640d2ef12"}, + {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55e699466106d09f028ab78d3c2e1f621b5ef2c8694598242259e4515715da7c"}, + {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2ad16880ccd971ac8e570550fbdef1385e094b022d6fc85ef3ce7df400dddad3"}, + {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b97fd5bb6b7c1a64b7ac0632f7ce389b8ab362e7bd5f60654c2a418496be5d7f"}, + {file = "SQLAlchemy-1.4.51-cp38-cp38-win32.whl", hash = "sha256:cecb66492440ae8592797dd705a0cbaa6abe0555f4fa6c5f40b078bd2740fc6b"}, + {file = "SQLAlchemy-1.4.51-cp38-cp38-win_amd64.whl", hash = "sha256:39b02b645632c5fe46b8dd30755682f629ffbb62ff317ecc14c998c21b2896ff"}, + {file = "SQLAlchemy-1.4.51-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:b03850c290c765b87102959ea53299dc9addf76ca08a06ea98383348ae205c99"}, + {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e646b19f47d655261b22df9976e572f588185279970efba3d45c377127d35349"}, + {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3cf56cc36d42908495760b223ca9c2c0f9f0002b4eddc994b24db5fcb86a9e4"}, + {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0d661cff58c91726c601cc0ee626bf167b20cc4d7941c93c5f3ac28dc34ddbea"}, + {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3823dda635988e6744d4417e13f2e2b5fe76c4bf29dd67e95f98717e1b094cad"}, + {file = "SQLAlchemy-1.4.51-cp39-cp39-win32.whl", hash = "sha256:b00cf0471888823b7a9f722c6c41eb6985cf34f077edcf62695ac4bed6ec01ee"}, + {file = "SQLAlchemy-1.4.51-cp39-cp39-win_amd64.whl", hash = "sha256:a055ba17f4675aadcda3005df2e28a86feb731fdcc865e1f6b4f209ed1225cba"}, + {file = "SQLAlchemy-1.4.51.tar.gz", hash = "sha256:e7908c2025eb18394e32d65dd02d2e37e17d733cdbe7d78231c2b6d7eb20cdb9"}, ] [package.dependencies] -greenlet = {version = "!=0.4.17", markers = "python_version >= \"3\" and (platform_machine == \"win32\" or platform_machine == \"WIN32\" or platform_machine == \"AMD64\" or platform_machine == \"amd64\" or platform_machine == \"x86_64\" or platform_machine == \"ppc64le\" or platform_machine == \"aarch64\")"} +greenlet = {version = "!=0.4.17", markers = "python_version >= \"3\" and platform_machine == \"aarch64\" or python_version >= \"3\" and platform_machine == \"ppc64le\" or python_version >= \"3\" and platform_machine == \"x86_64\" or python_version >= \"3\" and platform_machine == \"amd64\" or python_version >= \"3\" and platform_machine == \"AMD64\" or python_version >= \"3\" and platform_machine == \"win32\" or python_version >= \"3\" and platform_machine == \"WIN32\""} [package.extras] aiomysql = ["aiomysql (>=0.2.0)", "greenlet (!=0.4.17)"] -aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing-extensions (!=3.10.0.1)"] +aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"] asyncio = ["greenlet (!=0.4.17)"] asyncmy = ["asyncmy (>=0.2.3,!=0.2.4)", "greenlet (!=0.4.17)"] mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2)"] @@ -2057,19 +2365,20 @@ mssql-pyodbc = ["pyodbc"] mypy = ["mypy (>=0.910)", "sqlalchemy2-stubs"] mysql = ["mysqlclient (>=1.4.0)", "mysqlclient (>=1.4.0,<2)"] mysql-connector = ["mysql-connector-python"] -oracle = ["cx-oracle (>=7)", "cx-oracle (>=7,<8)"] +oracle = ["cx_oracle (>=7)", "cx_oracle (>=7,<8)"] postgresql = ["psycopg2 (>=2.7)"] postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"] postgresql-pg8000 = ["pg8000 (>=1.16.6,!=1.29.0)"] postgresql-psycopg2binary = ["psycopg2-binary"] postgresql-psycopg2cffi = ["psycopg2cffi"] pymysql = ["pymysql", "pymysql (<1)"] -sqlcipher = ["sqlcipher3-binary"] +sqlcipher = ["sqlcipher3_binary"] [[package]] name = "stringcase" version = "1.2.0" description = "String case converter." +category = "main" optional = false python-versions = "*" files = [ @@ -2080,6 +2389,7 @@ files = [ name = "tableschema" version = "1.7.4" description = "A utility library for working with Table Schema in Python" +category = "main" optional = false python-versions = "*" files = [ @@ -2105,6 +2415,7 @@ develop = ["mock", "pylama", "pytest", "pytest-cov", "tox"] name = "tabulate" version = "0.9.0" description = "Pretty-print tabular data" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2119,6 +2430,7 @@ widechars = ["wcwidth"] name = "tabulator" version = "1.53.5" description = "Consistent interface for stream reading and writing tabular data (csv/xls/json/etc)" +category = "main" optional = false python-versions = "*" files = [ @@ -2151,6 +2463,7 @@ ods = ["ezodf (>=0.3)", "lxml (>=3.0)"] name = "text-unidecode" version = "1.3" description = "The most basic Text::Unidecode port" +category = "main" optional = false python-versions = "*" files = [ @@ -2158,10 +2471,23 @@ files = [ {file = "text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8"}, ] +[[package]] +name = "threadpoolctl" +version = "3.2.0" +description = "threadpoolctl" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "threadpoolctl-3.2.0-py3-none-any.whl", hash = "sha256:2b7818516e423bdaebb97c723f86a7c6b0a83d3f3b0970328d66f4d9104dc032"}, + {file = "threadpoolctl-3.2.0.tar.gz", hash = "sha256:c96a0ba3bdddeaca37dc4cc7344aafad41cdb8c313f74fdfe387a867bba93355"}, +] + [[package]] name = "toml" version = "0.10.2" description = "Python Library for Tom's Obvious, Minimal Language" +category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -2173,6 +2499,7 @@ files = [ name = "tomli" version = "2.0.1" description = "A lil' TOML parser" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2180,10 +2507,52 @@ files = [ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] +[[package]] +name = "tqdm" +version = "4.66.1" +description = "Fast, Extensible Progress Meter" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tqdm-4.66.1-py3-none-any.whl", hash = "sha256:d302b3c5b53d47bce91fea46679d9c3c6508cf6332229aa1e7d8653723793386"}, + {file = "tqdm-4.66.1.tar.gz", hash = "sha256:d88e651f9db8d8551a62556d3cff9e3034274ca5d66e93197cf2490e2dcb69c7"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[package.extras] +dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"] +notebook = ["ipywidgets (>=6)"] +slack = ["slack-sdk"] +telegram = ["requests"] + +[[package]] +name = "tsam" +version = "2.3.1" +description = "Time series aggregation module (tsam) to create typical periods" +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "tsam-2.3.1.tar.gz", hash = "sha256:ce75db4e18f3110c08bd78325ae368b2259688ad93f5bf0b72813ff6e0aa6503"}, +] + +[package.dependencies] +highspy = "*" +networkx = "*" +numpy = ">=1.11.0" +pandas = ">=0.18.1" +pyomo = ">=6.4.3" +scikit-learn = ">=0.0" +tqdm = "*" + [[package]] name = "typed-ast" version = "1.5.5" description = "a fork of Python 2 and 3 ast modules with type comment support" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2234,6 +2603,7 @@ files = [ name = "typer" version = "0.9.0" description = "Typer, build great CLIs. Easy to code. Based on Python type hints." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2258,6 +2628,7 @@ test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6. name = "typing-extensions" version = "4.9.0" description = "Backported and Experimental Type Hints for Python 3.8+" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2267,19 +2638,21 @@ files = [ [[package]] name = "tzdata" -version = "2023.3" +version = "2023.4" description = "Provider of IANA time zone data" +category = "main" optional = false python-versions = ">=2" files = [ - {file = "tzdata-2023.3-py2.py3-none-any.whl", hash = "sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda"}, - {file = "tzdata-2023.3.tar.gz", hash = "sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a"}, + {file = "tzdata-2023.4-py2.py3-none-any.whl", hash = "sha256:aa3ace4329eeacda5b7beb7ea08ece826c28d761cda36e747cfbf97996d39bf3"}, + {file = "tzdata-2023.4.tar.gz", hash = "sha256:dd54c94f294765522c77399649b4fefd95522479a664a0cec87f41bebc6148c9"}, ] [[package]] name = "unicodecsv" version = "0.14.1" description = "Python2's stdlib csv module is nice, but it doesn't support unicode. This module is a drop-in replacement which *does*." +category = "main" optional = false python-versions = "*" files = [ @@ -2290,6 +2663,7 @@ files = [ name = "urllib3" version = "1.26.18" description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ @@ -2306,6 +2680,7 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] name = "validators" version = "0.22.0" description = "Python Data Validation for Humans™" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2328,6 +2703,7 @@ tooling-extras = ["pyaml (>=23.7.0)", "pypandoc-binary (>=1.11)", "pytest (>=7.4 name = "virtualenv" version = "20.25.0" description = "Virtual Python Environment builder" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2348,6 +2724,7 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess name = "xlrd" version = "2.0.1" description = "Library for developers to extract data from Microsoft Excel (tm) .xls spreadsheet files" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ @@ -2365,5 +2742,5 @@ docs = [] [metadata] lock-version = "2.0" -python-versions = ">=3.9.1,<3.11" -content-hash = "ea139fdbfe7c9b5a96fd23ef9c398f835b49e7af2bd7fb26c4f55fd6d76f8abc" +python-versions = ">=3.10,<3.11" +content-hash = "88da75ff439defce8a61b56b586692af2a37023ac0e7262a2c375af101f418a7" From 4fb390a823366126e56f49a64cb3c132709953d5 Mon Sep 17 00:00:00 2001 From: "Julian.Endres" Date: Fri, 12 Jan 2024 16:48:10 +0100 Subject: [PATCH 27/27] Ignore dtype in test --- tests/test_build_datapackage.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_build_datapackage.py b/tests/test_build_datapackage.py index 3024260..4e6789a 100644 --- a/tests/test_build_datapackage.py +++ b/tests/test_build_datapackage.py @@ -176,7 +176,7 @@ def test_period_csv_creation(): } ) sequence_goal.index.name = "timeindex" - pd.testing.assert_frame_equal(sequence_goal, sequence_created) + pd.testing.assert_frame_equal(sequence_goal, sequence_created, check_dtype=False) def test_tsam():