From 9b16bba2c8c454229edb7c5e2eba873320481c99 Mon Sep 17 00:00:00 2001 From: Neal Kruis Date: Thu, 19 Dec 2024 10:39:08 -0700 Subject: [PATCH 1/9] WIP. Refactor to use inheritance rather than separate model classes. --- chiller/chiller.py | 592 +++++++---- chiller/conditions.py | 25 +- chiller/fluid_properties.py | 6 +- chiller/models/ashrae_90_1.py | 217 ++-- chiller/models/base_model.py | 38 - chiller/models/energyplus_eir.py | 154 +-- chiller/models/energyplus_reformulated.py | 52 +- chiller/psychrometrics.py | 130 +++ examples/baseline_chillers.py | 9 +- examples/generate.py | 22 +- poetry.lock | 1096 +++++++++++---------- pyproject.toml | 5 +- 12 files changed, 1385 insertions(+), 961 deletions(-) delete mode 100644 chiller/models/base_model.py create mode 100644 chiller/psychrometrics.py diff --git a/chiller/chiller.py b/chiller/chiller.py index 815e14f..653b6e1 100644 --- a/chiller/chiller.py +++ b/chiller/chiller.py @@ -1,11 +1,13 @@ -from chiller.fluid_properties import FluidState +from enum import Enum + +from .fluid_properties import LiquidState +from .psychrometrics import PsychrometricState from .conditions import ( - AHRI_550_590_WATER_COOLED_CONDITIONS, + AHRI_550_590_LIQUID_COOLED_CONDITIONS, AHRI_550_590_WATER_COOLED_CONDENSER_OUTLET, - AHRI_550_590_WATER_COOLED_EVAPORATOR_INLET, + AHRI_550_590_EVAPORATOR_INLET, OperatingConditions, ) -from .models.energyplus_eir import EnergyPlusEIR from koozie import fr_u from numpy import linspace import uuid @@ -13,13 +15,50 @@ from random import Random +class CondenserType(Enum): + LIQUID = 1 + AIR = 2 + EVAPORATIVE = 3 + + +condenser_type_text = { + CondenserType.LIQUID: "liquid-cooled", + CondenserType.AIR: "air-cooled", + CondenserType.EVAPORATIVE: "evaporatively-cooled", +} + + +class CompressorType(Enum): + UNKNOWN = 0 + CENTRIFUGAL = 1 + POSITIVE_DISPLACEMENT = 2 + SCREW = 3 + SCROLL = 4 + + +compressor_type_map = { + CompressorType.UNKNOWN: None, + CompressorType.CENTRIFUGAL: "CENTRIFUGAL", + CompressorType.POSITIVE_DISPLACEMENT: "SCROLL", + CompressorType.SCREW: "SCREW", + CompressorType.SCROLL: "SCROLL", +} + +compressor_type_text = { + CompressorType.UNKNOWN: "", + CompressorType.CENTRIFUGAL: "centrifugal", + CompressorType.POSITIVE_DISPLACEMENT: "positive displacement", + CompressorType.SCREW: "screw", + CompressorType.SCROLL: "scroll", +} + + class ChillerMetadata: def __init__( self, description="", data_source="https://github.com/bigladder/chiller", notes="", - compressor_type="", has_hot_gas_bypass_installed=False, uuid_seed=None, data_version=1, @@ -28,7 +67,6 @@ def __init__( self.description = description self.data_source = data_source self.notes = notes - self.compressor_type = compressor_type self.has_hot_gas_bypass_installed = has_hot_gas_bypass_installed self.uuid_seed = uuid_seed self.data_version = data_version @@ -37,100 +75,70 @@ def __init__( class Chiller: def __init__( self, - model=None, rated_net_evaporator_capacity=fr_u(100.0, "ton_ref"), rated_cop=2.0, cycling_degradation_coefficient=0.0, standby_power=0.0, rated_net_condenser_capacity=None, number_of_compressor_speeds=None, - minimum_evaporator_leaving_temperature=fr_u(39.0, "°F"), - maximum_evaporator_leaving_temperature=fr_u(60.0, "°F"), - minimum_condenser_entering_temperature=fr_u(55.0, "°F"), - maximum_condenser_entering_temperature=fr_u(104.0, "°F"), - metadata=None, - **kwargs, + evaporator_leaving_temperature_range=( + fr_u(39.0, "°F"), # fr_u(36.0, "°F"), + fr_u(60.0, "°F"), # fr_u(70.0, "°F"), + ), # AHRI 550/590 2023 Table 5 + condenser_entering_temperature_range=None, + condenser_type=CondenserType.LIQUID, + compressor_type=CompressorType.UNKNOWN, ): - self.kwargs = kwargs - - if model is None: - self.model = EnergyPlusEIR() - else: - self.model = model - self.number_of_compressor_speeds = number_of_compressor_speeds self.rated_net_condenser_capacity = rated_net_condenser_capacity self.rated_net_evaporator_capacity = rated_net_evaporator_capacity self.rated_cop = rated_cop self.cycling_degradation_coefficient = cycling_degradation_coefficient self.standby_power = standby_power - self.minimum_evaporator_leaving_temperature = ( - minimum_evaporator_leaving_temperature - ) - self.maximum_evaporator_leaving_temperature = ( - maximum_evaporator_leaving_temperature - ) - self.minimum_condenser_entering_temperature = ( - minimum_condenser_entering_temperature - ) - self.maximum_condenser_entering_temperature = ( - maximum_condenser_entering_temperature - ) - if metadata is None: - self.metadata = ChillerMetadata() - else: - self.metadata = metadata + self.condenser_type = condenser_type + self.compressor_type = compressor_type - self.model.set_system(self) + self.evaporator_leaving_temperature_range = evaporator_leaving_temperature_range + self.condenser_entering_temperature_range = condenser_entering_temperature_range self.set_rated_evaporator_volumetric_flow_rate() self.set_rated_condenser_volumetric_flow_rate() - def net_evaporator_capacity(self, conditions=None): - if conditions == None: - conditions = AHRI_550_590_WATER_COOLED_CONDITIONS - return self.model.net_evaporator_capacity(conditions) + self.metadata = ChillerMetadata() + + # TODO: Apply pressure corrections per 550/590 Appendix C - def input_power(self, conditions=None): - if conditions == None: - conditions = AHRI_550_590_WATER_COOLED_CONDITIONS - return self.model.input_power(conditions) + def net_evaporator_capacity(self, conditions): + raise NotImplementedError() - def net_condenser_capacity(self, conditions=None): - if conditions == None: - conditions = AHRI_550_590_WATER_COOLED_CONDITIONS - return self.model.net_condenser_capacity(conditions) + def input_power(self, conditions): + raise NotImplementedError() - def oil_cooler_heat(self, conditions=None): - if conditions == None: - conditions = AHRI_550_590_WATER_COOLED_CONDITIONS - return self.model.oil_cooler_heat(conditions) + def net_condenser_capacity(self, conditions): + raise NotImplementedError() - def auxiliary_heat(self, conditions=None): - if conditions == None: - conditions = AHRI_550_590_WATER_COOLED_CONDITIONS - return self.model.auxiliary_heat(conditions) + def oil_cooler_heat(self, conditions): + raise NotImplementedError() + + def auxiliary_heat(self, conditions): + raise NotImplementedError() def cop(self, conditions=None): + if conditions is None: + conditions = self.get_default_conditions() return self.net_evaporator_capacity(conditions) / self.input_power(conditions) - def condenser_liquid_leaving_state(self, conditions=None): - if conditions == None: - conditions = AHRI_550_590_WATER_COOLED_CONDITIONS - return conditions.condenser_inlet.add_heat( - self.net_condenser_capacity(conditions) - ) + def condenser_liquid_leaving_state(self, conditions): + raise NotImplementedError() - def evaporator_liquid_entering_state(self, conditions=None): - if conditions == None: - conditions = AHRI_550_590_WATER_COOLED_CONDITIONS + def evaporator_liquid_entering_state(self, conditions): return conditions.evaporator_outlet.add_heat( self.net_evaporator_capacity(conditions) ) - def space_loss_heat(self, conditions=None): + def space_loss_heat(self, conditions): return ( self.input_power(conditions) + self.net_evaporator_capacity(conditions) ) - ( @@ -140,34 +148,19 @@ def space_loss_heat(self, conditions=None): ) def set_rated_evaporator_volumetric_flow_rate(self): - delta_T = ( - AHRI_550_590_WATER_COOLED_EVAPORATOR_INLET.T - - AHRI_550_590_WATER_COOLED_CONDITIONS.evaporator_outlet.T - ) - m_dot = self.rated_net_evaporator_capacity / ( - AHRI_550_590_WATER_COOLED_CONDITIONS.evaporator_outlet.get_cp() * delta_T - ) - AHRI_550_590_WATER_COOLED_CONDITIONS.evaporator_outlet.set_m_dot(m_dot) - AHRI_550_590_WATER_COOLED_EVAPORATOR_INLET.set_m_dot(m_dot) - self.rated_evaporator_volumetric_flow_rate = ( - AHRI_550_590_WATER_COOLED_CONDITIONS.evaporator_outlet.V_dot - ) + raise NotImplementedError() def set_rated_condenser_volumetric_flow_rate(self): - delta_T = ( - AHRI_550_590_WATER_COOLED_CONDENSER_OUTLET.T - - AHRI_550_590_WATER_COOLED_CONDITIONS.condenser_inlet.T - ) - m_dot = self.rated_net_condenser_capacity / ( - AHRI_550_590_WATER_COOLED_CONDITIONS.condenser_inlet.get_cp() * delta_T - ) - AHRI_550_590_WATER_COOLED_CONDITIONS.condenser_inlet.set_m_dot(m_dot) - AHRI_550_590_WATER_COOLED_CONDENSER_OUTLET.set_m_dot(m_dot) - self.rated_condenser_volumetric_flow_rate = ( - AHRI_550_590_WATER_COOLED_CONDITIONS.condenser_inlet.V_dot - ) + raise NotImplementedError() + + def get_default_conditions(self): + if self.condenser_type == CondenserType.LIQUID: + return AHRI_550_590_LIQUID_COOLED_CONDITIONS - def generate_205_representation(self): + def generate_205_representation( + self, + capacity_range: tuple[float | None, float | None] = (None, None), + ) -> dict: # Metadata timestamp = datetime.datetime.now().isoformat("T", "minutes") rnd = Random() @@ -192,92 +185,21 @@ def generate_205_representation(self): "product_information": { "liquid_data_source": "CoolProp", "hot_gas_bypass_installed": self.metadata.has_hot_gas_bypass_installed, + "compressor_type": self.compressor_type.name, } } - if self.metadata.compressor_type is not None: - representation_description["product_information"][ - "compressor_type" - ] = self.metadata.compressor_type + performance_map_cooling = self.make_performance_map() - # Create conditions - evaporator_liquid_volumetric_flow_rates = [ - self.rated_evaporator_volumetric_flow_rate - ] - evaporator_liquid_leaving_temperatures = linspace( - self.minimum_evaporator_leaving_temperature, - self.maximum_evaporator_leaving_temperature, - 4, - ).tolist() - condenser_liquid_volumetric_flow_rates = [ - self.rated_condenser_volumetric_flow_rate - ] - condenser_liquid_entering_temperatures = linspace( - self.minimum_condenser_entering_temperature, - self.maximum_condenser_entering_temperature, - 4, - ).tolist() - compressor_sequence_numbers = list( - range(1, self.number_of_compressor_speeds + 1) - ) - - grid_variables = { - "evaporator_liquid_volumetric_flow_rate": evaporator_liquid_volumetric_flow_rates, - "evaporator_liquid_leaving_temperature": evaporator_liquid_leaving_temperatures, - "condenser_liquid_volumetric_flow_rate": condenser_liquid_volumetric_flow_rates, - "condenser_liquid_entering_temperature": condenser_liquid_entering_temperatures, - "compressor_sequence_number": compressor_sequence_numbers, - } - - input_powers = [] - net_evaporator_capacities = [] - net_condenser_capacities = [] - oil_cooler_heats = [] - auxiliary_heats = [] - operation_states = [] - - for v_evap in evaporator_liquid_volumetric_flow_rates: - for t_evap in evaporator_liquid_leaving_temperatures: - for v_cond in condenser_liquid_volumetric_flow_rates: - for t_cond in condenser_liquid_entering_temperatures: - for speed in [ - self.number_of_compressor_speeds - n - for n in compressor_sequence_numbers - ]: - conditions = OperatingConditions( - evaporator_outlet=FluidState( - temperature=t_evap, volumetric_flow_rate=v_evap - ), - condenser_inlet=FluidState( - temperature=t_cond, volumetric_flow_rate=v_cond - ), - compressor_speed=speed, - ) - - input_powers.append(self.input_power(conditions)) - net_evaporator_capacities.append( - self.net_evaporator_capacity(conditions) - ) - net_condenser_capacities.append( - self.net_condenser_capacity(conditions) - ) - oil_cooler_heats.append(self.oil_cooler_heat(conditions)) - auxiliary_heats.append(self.auxiliary_heat(conditions)) - operation_states.append("NORMAL") - - performance_map_cooling = { - "grid_variables": grid_variables, - "lookup_variables": { - "input_power": input_powers, - "net_evaporator_capacity": net_evaporator_capacities, - "net_condenser_capacity": net_condenser_capacities, - "oil_cooler_heat": oil_cooler_heats, - "auxiliary_heat": auxiliary_heats, - "operation_state": operation_states, - }, - } + evaporator_liquid_volumetric_flow_rates = performance_map_cooling[ + "grid_variables" + ]["evaporator_liquid_volumetric_flow_rate"] + evaporator_liquid_leaving_temperatures = performance_map_cooling[ + "grid_variables" + ]["evaporator_liquid_leaving_temperature"] performance = { + "condesner_type": self.condenser_type.name, "evaporator_liquid_type": { # TODO: Make consistent with model "liquid_components": [ { @@ -287,17 +209,7 @@ def generate_205_representation(self): ], "concentration_type": "BY_VOLUME", }, - "condenser_liquid_type": { # TODO: Make consistent with model - "liquid_components": [ - { - "liquid_constituent": "WATER", - "concentration": 1.0, - } - ], - "concentration_type": "BY_VOLUME", - }, "evaporator_fouling_factor": 0.0, - "condenser_fouling_factor": 0.0, "compressor_speed_control_type": "CONTINUOUS", "cycling_degradation_coefficient": self.cycling_degradation_coefficient, "performance_map_cooling": performance_map_cooling, @@ -322,7 +234,26 @@ def generate_205_representation(self): ), }, }, - "performance_map_condenser_liquid_pressure_differential": { + } + + if self.condenser_type == CondenserType.LIQUID: + condenser_liquid_volumetric_flow_rates = performance_map_cooling[ + "grid_variables" + ]["condenser_liquid_volumetric_flow_rate"] + condenser_liquid_entering_temperatures = performance_map_cooling[ + "grid_variables" + ]["condenser_liquid_entering_temperature"] + performance["condenser_liquid_type"] = { # TODO: Make consistent with model + "liquid_components": [ + { + "liquid_constituent": "WATER", + "concentration": 1.0, + } + ], + "concentration_type": "BY_VOLUME", + } + performance["condenser_fouling_factor"] = 0.0 + performance["performance_map_condenser_liquid_pressure_differential"] = { "grid_variables": { "condenser_liquid_volumetric_flow_rate": condenser_liquid_volumetric_flow_rates, "condenser_liquid_entering_temperature": condenser_liquid_entering_temperatures, @@ -334,30 +265,24 @@ def generate_205_representation(self): * len(condenser_liquid_entering_temperatures) ), }, - }, - } + } # Scaling - if ( - self.model.minimum_scaled_rated_capacity is not None - or self.model.maximum_scaled_rated_capacity is not None - ): + if capacity_range[0] is not None or capacity_range[1] is not None: scaling = {} - if self.model.minimum_scaled_rated_capacity is None: + if capacity_range[0] is None: scaling["minimum"] = 1.0 - elif self.model.minimum_scaled_rated_capacity > 0.0: + elif capacity_range[0] > 0.0: scaling["minimum"] = ( - self.model.minimum_scaled_rated_capacity - / self.rated_net_evaporator_capacity + capacity_range[0] / self.rated_net_evaporator_capacity ) - if self.model.maximum_scaled_rated_capacity is None: + if capacity_range[1] is None: scaling["maximum"] = 1.0 - elif self.model.maximum_scaled_rated_capacity != float("inf"): + elif capacity_range[1] != float("inf"): scaling["maximum"] = ( - self.model.maximum_scaled_rated_capacity - / self.rated_net_evaporator_capacity + capacity_range[1] / self.rated_net_evaporator_capacity ) performance["scaling"] = scaling @@ -368,4 +293,275 @@ def generate_205_representation(self): "performance": performance, } - return self.model.fixup_205_representation(representation) + return representation + + def make_performance_map(self): + raise NotImplementedError() + + +class LiquidCooledChiller(Chiller): + DEFAULT_CONDENSER_TEMPERATURE_RANGE = ( + fr_u(55.0, "degF"), + fr_u(104.0, "degF"), + ) # (fr_u(55.0, "degF"), fr_u(115.0, "degF")) # AHRI 550/590 2023 Table 5 + + def __init__( + self, + rated_net_evaporator_capacity=fr_u(100, "ton_ref"), + rated_cop=2, + cycling_degradation_coefficient=0, + standby_power=0, + rated_net_condenser_capacity=None, + number_of_compressor_speeds=None, + condenser_entering_temperature_range=DEFAULT_CONDENSER_TEMPERATURE_RANGE, + compressor_type=CompressorType.UNKNOWN, + ): + super().__init__( + rated_net_evaporator_capacity=rated_net_evaporator_capacity, + rated_cop=rated_cop, + cycling_degradation_coefficient=cycling_degradation_coefficient, + standby_power=standby_power, + rated_net_condenser_capacity=rated_net_condenser_capacity, + number_of_compressor_speeds=number_of_compressor_speeds, + condenser_entering_temperature_range=condenser_entering_temperature_range, + condenser_type=CondenserType.LIQUID, + compressor_type=compressor_type, + ) + + def net_evaporator_capacity(self, conditions=AHRI_550_590_LIQUID_COOLED_CONDITIONS): + raise NotImplementedError() + + def input_power(self, conditions=AHRI_550_590_LIQUID_COOLED_CONDITIONS): + raise NotImplementedError() + + def net_condenser_capacity(self, conditions=AHRI_550_590_LIQUID_COOLED_CONDITIONS): + raise NotImplementedError() + + def oil_cooler_heat(self, conditions=AHRI_550_590_LIQUID_COOLED_CONDITIONS): + raise NotImplementedError() + + def auxiliary_heat(self, conditions=AHRI_550_590_LIQUID_COOLED_CONDITIONS): + raise NotImplementedError() + + def condenser_liquid_leaving_state( + self, conditions=AHRI_550_590_LIQUID_COOLED_CONDITIONS + ): + return conditions.condenser_inlet.add_heat( + self.net_condenser_capacity(conditions) + ) + + def evaporator_liquid_entering_state( + self, conditions=AHRI_550_590_LIQUID_COOLED_CONDITIONS + ): + return super().evaporator_liquid_entering_state(conditions) + + def space_loss_heat(self, conditions=AHRI_550_590_LIQUID_COOLED_CONDITIONS): + return super().space_loss_heat(conditions) + + def set_rated_evaporator_volumetric_flow_rate(self): + delta_T = ( + AHRI_550_590_EVAPORATOR_INLET.T + - AHRI_550_590_LIQUID_COOLED_CONDITIONS.evaporator_outlet.T + ) + m_dot = self.rated_net_evaporator_capacity / ( + AHRI_550_590_LIQUID_COOLED_CONDITIONS.evaporator_outlet.get_cp() * delta_T + ) + AHRI_550_590_LIQUID_COOLED_CONDITIONS.evaporator_outlet.set_m_dot(m_dot) + AHRI_550_590_EVAPORATOR_INLET.set_m_dot(m_dot) + self.rated_evaporator_volumetric_flow_rate = ( + AHRI_550_590_LIQUID_COOLED_CONDITIONS.evaporator_outlet.V_dot + ) + + def set_rated_condenser_volumetric_flow_rate(self): + delta_T = ( + AHRI_550_590_WATER_COOLED_CONDENSER_OUTLET.T + - AHRI_550_590_LIQUID_COOLED_CONDITIONS.condenser_inlet.T + ) + m_dot = self.rated_net_condenser_capacity / ( + AHRI_550_590_LIQUID_COOLED_CONDITIONS.condenser_inlet.get_cp() * delta_T + ) + AHRI_550_590_LIQUID_COOLED_CONDITIONS.condenser_inlet.set_m_dot(m_dot) + AHRI_550_590_WATER_COOLED_CONDENSER_OUTLET.set_m_dot(m_dot) + self.rated_condenser_volumetric_flow_rate = ( + AHRI_550_590_LIQUID_COOLED_CONDITIONS.condenser_inlet.V_dot + ) + + def make_performance_map(self) -> dict: + # Create conditions + evaporator_liquid_volumetric_flow_rates = [ + self.rated_evaporator_volumetric_flow_rate + ] + evaporator_liquid_leaving_temperatures = linspace( + self.evaporator_leaving_temperature_range[0], + self.evaporator_leaving_temperature_range[1], + 4, + ).tolist() + compressor_sequence_numbers = list( + range(1, self.number_of_compressor_speeds + 1) + ) + + condenser_liquid_volumetric_flow_rates = [ + self.rated_condenser_volumetric_flow_rate + ] + condenser_liquid_entering_temperatures = linspace( + self.condenser_entering_temperature_range[0], + self.condenser_entering_temperature_range[1], + 4, + ).tolist() + grid_variables = { + "evaporator_liquid_volumetric_flow_rate": evaporator_liquid_volumetric_flow_rates, + "evaporator_liquid_leaving_temperature": evaporator_liquid_leaving_temperatures, + "condenser_liquid_volumetric_flow_rate": condenser_liquid_volumetric_flow_rates, + "condenser_liquid_entering_temperature": condenser_liquid_entering_temperatures, + "compressor_sequence_number": compressor_sequence_numbers, + } + + input_powers = [] + net_evaporator_capacities = [] + net_condenser_capacities = [] + oil_cooler_heats = [] + auxiliary_heats = [] + operation_states = [] + + for v_evap in evaporator_liquid_volumetric_flow_rates: + for t_evap in evaporator_liquid_leaving_temperatures: + for v_cond in condenser_liquid_volumetric_flow_rates: + for t_cond in condenser_liquid_entering_temperatures: + for speed in [ + self.number_of_compressor_speeds - n + for n in compressor_sequence_numbers + ]: + conditions = OperatingConditions( + evaporator_outlet=LiquidState( + temperature=t_evap, volumetric_flow_rate=v_evap + ), + condenser_inlet=LiquidState( + temperature=t_cond, volumetric_flow_rate=v_cond + ), + compressor_speed=speed, + ) + + input_powers.append(self.input_power(conditions)) + net_evaporator_capacities.append( + self.net_evaporator_capacity(conditions) + ) + net_condenser_capacities.append( + self.net_condenser_capacity(conditions) + ) + oil_cooler_heats.append(self.oil_cooler_heat(conditions)) + auxiliary_heats.append(self.auxiliary_heat(conditions)) + operation_states.append("NORMAL") + lookup_variables = { + "input_power": input_powers, + "net_evaporator_capacity": net_evaporator_capacities, + "net_condenser_capacity": net_condenser_capacities, + "oil_cooler_heat": oil_cooler_heats, + "auxiliary_heat": auxiliary_heats, + "operation_state": operation_states, + } + + return { + "grid_variables": grid_variables, + "lookup_variables": lookup_variables, + } + + +class AirCooledChiller(Chiller): + DEFAULT_CONDENSER_TEMPERATURE_RANGE = ( + fr_u(55.0, "degF"), + fr_u(104.0, "degF"), + ) # (fr_u(55.0, "degF"), fr_u(115.0, "degF")) # AHRI 550/590 2023 Table 5 + + def make_performance_map(self) -> dict: + # Create conditions + evaporator_liquid_volumetric_flow_rates = [ + self.rated_evaporator_volumetric_flow_rate + ] + evaporator_liquid_leaving_temperatures = linspace( + self.evaporator_leaving_temperature_range[0], + self.evaporator_leaving_temperature_range[1], + 4, + ).tolist() + compressor_sequence_numbers = list( + range(1, self.number_of_compressor_speeds + 1) + ) + + condenser_air_entering_drybulb_temperatures = [ + self.rated_condenser_volumetric_flow_rate + ] + condenser_air_entering_relative_humidities = [0.4] + ambient_pressures = [fr_u(1.0, "atm")] + grid_variables = { + "evaporator_liquid_volumetric_flow_rate": evaporator_liquid_volumetric_flow_rates, + "evaporator_liquid_leaving_temperature": evaporator_liquid_leaving_temperatures, + "condenser_air_entering_drybulb_temperature": condenser_air_entering_drybulb_temperatures, + "condenser_air_entering_relative_humidity": condenser_air_entering_relative_humidities, + "ambient_pressure": ambient_pressures, + "compressor_sequence_number": compressor_sequence_numbers, + } + + input_powers = [] + net_evaporator_capacities = [] + net_condenser_capacities = [] + oil_cooler_heats = [] + auxiliary_heats = [] + operation_states = [] + condenser_air_volumetric_flow_rates = [] + evaporation_rates = [] + + for v_evap in evaporator_liquid_volumetric_flow_rates: + for t_evap in evaporator_liquid_leaving_temperatures: + for t_cond in condenser_air_entering_drybulb_temperatures: + for rh_cond in condenser_air_entering_relative_humidities: + for p_cond in ambient_pressures: + for speed in [ + self.number_of_compressor_speeds - n + for n in compressor_sequence_numbers + ]: + conditions = OperatingConditions( + evaporator_outlet=LiquidState( + temperature=t_evap, + volumetric_flow_rate=v_evap, + ), + condenser_inlet=PsychrometricState( + temperature=t_cond, + relative_humidity=rh_cond, + ambient_pressure=p_cond, + ), + compressor_speed=speed, + ) + + input_powers.append(self.input_power(conditions)) + net_evaporator_capacities.append( + self.net_evaporator_capacity(conditions) + ) + net_condenser_capacities.append( + self.net_condenser_capacity(conditions) + ) + condenser_air_volumetric_flow_rates.append( + self.condenser_air_volumetric_flow_rates(conditions) + ) + oil_cooler_heats.append( + self.oil_cooler_heat(conditions) + ) + evaporation_rates.append( + self.evaporation_rate(conditions) + ) + auxiliary_heats.append(self.auxiliary_heat(conditions)) + operation_states.append("NORMAL") + + lookup_variables = { + "input_power": input_powers, + "net_evaporator_capacity": net_evaporator_capacities, + "net_condenser_capacity": net_condenser_capacities, + "condenser_air_volumetric_flow_rate": condenser_air_volumetric_flow_rates, + "oil_cooler_heat": oil_cooler_heats, + "evaporation_rate": evaporation_rates, + "auxiliary_heat": auxiliary_heats, + "operation_state": operation_states, + } + + return { + "grid_variables": grid_variables, + "lookup_variables": lookup_variables, + } diff --git a/chiller/conditions.py b/chiller/conditions.py index 01f0aaa..b2be00b 100644 --- a/chiller/conditions.py +++ b/chiller/conditions.py @@ -1,19 +1,30 @@ -from .fluid_properties import FluidState +from .fluid_properties import LiquidState +from .psychrometrics import PsychrometricState from koozie import fr_u class OperatingConditions: - def __init__(self, condenser_inlet, evaporator_outlet, compressor_speed=0): + def __init__( + self, + condenser_inlet: LiquidState | PsychrometricState, + evaporator_outlet, + compressor_speed=0, + ): self.condenser_inlet = condenser_inlet self.evaporator_outlet = evaporator_outlet self.compressor_speed = compressor_speed -AHRI_550_590_WATER_COOLED_CONDITIONS = OperatingConditions( - condenser_inlet=FluidState(fr_u(85.0, "°F")), - evaporator_outlet=FluidState(fr_u(44.0, "°F")), +AHRI_550_590_LIQUID_COOLED_CONDITIONS = OperatingConditions( + condenser_inlet=LiquidState(fr_u(85.0, "°F")), + evaporator_outlet=LiquidState(fr_u(44.0, "°F")), ) -AHRI_550_590_WATER_COOLED_CONDENSER_OUTLET = FluidState(fr_u(94.3, "°F")) +AHRI_550_590_AIR_COOLED_CONDITIONS = OperatingConditions( + condenser_inlet=PsychrometricState(fr_u(95.0, "°F"), wetbulb=fr_u(75.0, "°F")), + evaporator_outlet=LiquidState(fr_u(44.0, "°F")), +) + +AHRI_550_590_WATER_COOLED_CONDENSER_OUTLET = LiquidState(fr_u(94.3, "°F")) -AHRI_550_590_WATER_COOLED_EVAPORATOR_INLET = FluidState(fr_u(54.0, "°F")) +AHRI_550_590_EVAPORATOR_INLET = LiquidState(fr_u(54.0, "°F")) diff --git a/chiller/fluid_properties.py b/chiller/fluid_properties.py index cb48bb9..817a4df 100644 --- a/chiller/fluid_properties.py +++ b/chiller/fluid_properties.py @@ -3,7 +3,7 @@ from koozie import fr_u -class FluidState: +class LiquidState: def __init__( self, temperature, @@ -58,7 +58,9 @@ def set_m_dot(self, mass_flow_rate): self.V_dot_set = True def add_heat(self, heat): - return FluidState(temperature=self.T + heat / self.c, mass_flow_rate=self.m_dot) + return LiquidState( + temperature=self.T + heat / self.c, mass_flow_rate=self.m_dot + ) def get_heat(self, other_state): '''returns the amount of heat difference between this state and "other state"''' diff --git a/chiller/models/ashrae_90_1.py b/chiller/models/ashrae_90_1.py index 2f17d79..607944a 100644 --- a/chiller/models/ashrae_90_1.py +++ b/chiller/models/ashrae_90_1.py @@ -4,32 +4,22 @@ from enum import Enum from koozie import to_u +from ..chiller import ( + CompressorType, + CondenserType, +) -class CondenserType(Enum): - LIQUID_COOLED = 1 - AIR_COOLED = 2 - -condenser_type_text = { - CondenserType.LIQUID_COOLED: "liquid-cooled", - CondenserType.AIR_COOLED: "air-cooled", -} - - -class CompressorType(Enum): - UNKNOWN = 0 - CENTRIFUGAL = 1 - POSITIVE_DISPLACEMENT = 2 - SCREW = 3 - SCROLL = 4 +class CompliancePathType(Enum): + ECB_A = 1 + ECB_B = 2 + PRM = 3 -compressor_type_map = { - CompressorType.UNKNOWN: None, - CompressorType.CENTRIFUGAL: "CENTRIFUGAL", - CompressorType.POSITIVE_DISPLACEMENT: "SCROLL", - CompressorType.SCREW: "SCREW", - CompressorType.SCROLL: "SCROLL", +compliance_path_text = { + CompliancePathType.ECB_A: "Energy Cost Budget (ECB) Path A", + CompliancePathType.ECB_B: "Energy Cost Budget (ECB) Path B", + CompliancePathType.PRM: "Performance Rating Method (PRM)", } compressor_type_text = { @@ -40,17 +30,10 @@ class CompressorType(Enum): CompressorType.SCROLL: "scroll", } - -class CompliancePathType(Enum): - ECB_A = 1 - ECB_B = 2 - PRM = 3 - - -compliance_path_text = { - CompliancePathType.ECB_A: "Energy Cost Budget (ECB) Path A", - CompliancePathType.ECB_B: "Energy Cost Budget (ECB) Path B", - CompliancePathType.PRM: "Performance Rating Method (PRM)", +condenser_type_text = { + CondenserType.LIQUID: "liquid-cooled", + CondenserType.AIR: "air-cooled", + CondenserType.EVAPORATIVE: "evaporatively-cooled", } @@ -93,133 +76,135 @@ def print_constructor(self): ) -class ASHRAE90_1(EnergyPlusEIR): +class ASHRAE90_1BaselineChiller(EnergyPlusEIR): - chiller_curve_sets = [ + chiller_curve_sets: list[ChillerCurveSet] = [ # fmt: off - ChillerCurveSet('A',CompliancePathType.ECB_A,CondenserType.AIR_COOLED,CompressorType.UNKNOWN,0.0,527528.0,2.960018222222222,4.015074222222222,[0.686206, 0.057562, -0.001835, 0.01381, -0.000338, -0.000247],[0.825618, -0.025861, 0.001396, -0.002728, 0.000381, -0.000373],[0.087789, 0.185696, 1.561411, -0.832304]), - ChillerCurveSet('B',CompliancePathType.ECB_A,CondenserType.AIR_COOLED,CompressorType.UNKNOWN,527528.0,float('inf'),2.960018222222222,4.102995555555555,[0.794185, 0.060199, -0.002016, 0.006203, -0.000229, -0.000183],[0.807832, -0.029452, 0.001431, -0.002832, 0.000399, -0.000278],[0.118081, 0.107477, 1.570838, -0.794051]), - ChillerCurveSet('C',CompliancePathType.ECB_A,CondenserType.LIQUID_COOLED,CompressorType.POSITIVE_DISPLACEMENT,0.0,263764.0,4.689137777777779,5.861422222222224,[0.838337, 0.057024, -0.002117, 0.000793, -0.000175, 2e-05],[0.83688, -0.032383, 0.001568, -0.002806, 0.000544, -0.000407],[0.24373, 0.165972, 0.586099, 0.0]), - ChillerCurveSet('D',CompliancePathType.ECB_A,CondenserType.LIQUID_COOLED,CompressorType.POSITIVE_DISPLACEMENT,263764.0,527528.0,4.88451851851852,6.280095238095239,[0.86184, 0.057837, -0.00217, -0.001391, -0.000136, 4e-05],[0.74092, -0.030144, 0.001479, 0.00385, 0.000416, -0.000404],[0.208982, 0.224001, 0.561479, 0.0]), - ChillerCurveSet('E',CompliancePathType.ECB_A,CondenserType.LIQUID_COOLED,CompressorType.POSITIVE_DISPLACEMENT,527528.0,1055056.0,5.328565656565657,6.512691358024693,[0.800066, 0.035377, -0.001482, 0.006462, -0.000227, 0.000187],[0.620834, -0.023642, 0.0013, 0.013555, 0.000189, -0.000425],[0.246644, 0.184576, 0.566463, 0.0]), - ChillerCurveSet('F',CompliancePathType.ECB_A,CondenserType.LIQUID_COOLED,CompressorType.POSITIVE_DISPLACEMENT,1055056.0,2110112.0,5.765333333333335,6.763179487179488,[0.863175, 0.023955, -0.001135, 0.004955, -0.000197, 0.000268],[0.636828, -0.029245, 0.001397, 0.018817, 8e-06, -0.000332],[0.244926, 0.21889, 0.532972, 0.0]), - ChillerCurveSet('G',CompliancePathType.ECB_A,CondenserType.LIQUID_COOLED,CompressorType.POSITIVE_DISPLACEMENT,2110112.0,float('inf'),6.280095238095239,7.033706666666668,[0.830804, 0.01631, -0.000949, 0.008707, -0.000263, 0.000377],[0.544967, -0.030491, 0.001395, 0.027852, -0.000187, -0.000314],[0.264371, 0.263302, 0.47169, 0.0]), - ChillerCurveSet('H',CompliancePathType.ECB_A,CondenserType.LIQUID_COOLED,CompressorType.CENTRIFUGAL,0.0,1055056.0,5.765333333333335,6.39427878787879,[0.83742, 0.038528, -0.002167, 0.004185, -0.000322, 0.000806],[0.447243, -0.033785, 0.000724, 0.040274, -0.000577, 0.000305],[0.304206, 0.073866, 0.621457, 0.0]), - ChillerCurveSet('I',CompliancePathType.ECB_A,CondenserType.LIQUID_COOLED,CompressorType.CENTRIFUGAL,1055056.0,1406741.3333333335,6.280095238095239,6.763179487179488,[1.207878, 0.026951, -0.001148, -0.020576, 0.000202, 0.000479],[0.647193, -0.024484, 0.000426, 0.028764, -0.000421, 7.7e-05],[0.276961, 0.101749, 0.621383, 0.0]), - ChillerCurveSet('J',CompliancePathType.ECB_A,CondenserType.LIQUID_COOLED,CompressorType.CENTRIFUGAL,1406741.3333333335,float('inf'),6.280095238095239,7.033706666666668,[0.896806, 0.056739, -0.002544, -0.005536, -0.000105, 0.00047],[0.489242, -0.028851, 0.000973, 0.035835, -0.000477, 9.6e-05],[0.290891, 0.059366, 0.649421, 0.0]), - ChillerCurveSet('K',CompliancePathType.ECB_B,CondenserType.AIR_COOLED,CompressorType.UNKNOWN,0.0,527528.0,2.8427897777777775,4.6305235555555555,[0.709195, 0.059566, -0.001968, 0.010899, -0.000284, -0.000222],[0.891872, -0.029821, 0.001459, -0.006929, 0.000453, -0.000303],[0.036849, 0.100792, 1.614142, -0.748013]), - ChillerCurveSet('L',CompliancePathType.ECB_B,CondenserType.AIR_COOLED,CompressorType.UNKNOWN,527528.0,float('inf'),2.8427897777777775,4.7184448888888895,[0.879844, 0.060415, -0.001994, 0.000937, -0.000156, -0.000155],[0.711589, -0.02952, 0.00139, 0.001554, 0.000353, -0.000272],[0.095711, 0.009903, 1.543396, -0.646737]), - ChillerCurveSet('M',CompliancePathType.ECB_B,CondenserType.LIQUID_COOLED,CompressorType.POSITIVE_DISPLACEMENT,0.0,263764.0,4.508786324786326,7.033706666666668,[0.835803, 0.057057, -0.002119, 0.000903, -0.000176, 1.9e-05],[0.844064, -0.032504, 0.001571, -0.003076, 0.000545, -0.000402],[0.1072, 0.182611, 0.705182, 0.0]), - ChillerCurveSet('N',CompliancePathType.ECB_B,CondenserType.LIQUID_COOLED,CompressorType.POSITIVE_DISPLACEMENT,263764.0,527528.0,4.689137777777779,7.177251700680273,[0.85071, 0.056037, -0.002077, -0.000147, -0.000153, 2.3e-05],[0.797371, -0.031361, 0.001514, 0.000419, 0.000473, -0.000398],[0.183811, -0.044417, 0.85566, 0.0]), - ChillerCurveSet('O',CompliancePathType.ECB_B,CondenserType.LIQUID_COOLED,CompressorType.POSITIVE_DISPLACEMENT,527528.0,1055056.0,5.1718431372549025,7.992848484848486,[0.822519, 0.038968, -0.001588, 0.004048, -0.000188, 0.000164],[0.617871, -0.02011, 0.001175, 0.013623, 0.000172, -0.000439],[0.090936, 0.207812, 0.696735, 0.0]), - ChillerCurveSet('P',CompliancePathType.ECB_B,CondenserType.LIQUID_COOLED,CompressorType.POSITIVE_DISPLACEMENT,1055056.0,2110112.0,5.6269653333333345,8.577691056910572,[0.877218, 0.028393, -0.001257, 0.003217, -0.000174, 0.000232],[0.656763, -0.027891, 0.001343, 0.016627, 5.6e-05, -0.000348],[0.103665, 0.148024, 0.744887, 0.0]), - ChillerCurveSet('Q',CompliancePathType.ECB_B,CondenserType.LIQUID_COOLED,CompressorType.POSITIVE_DISPLACEMENT,2110112.0,float('inf'),6.011715099715102,9.254877192982459,[0.831828, 0.015657, -0.000928, 0.009067, -0.000272, 0.000376],[0.553694, -0.030347, 0.001412, 0.026568, -0.000153, -0.000325],[0.061706, 0.261711, 0.677017, 0.0]), - ChillerCurveSet('R',CompliancePathType.ECB_B,CondenserType.LIQUID_COOLED,CompressorType.CENTRIFUGAL,0.0,527528.0,5.0602206235012,7.992848484848486,[0.972517, 0.040861, -0.001781, -0.008217, 1.3e-05, 0.000328],[0.62736, -0.028989, 0.001027, 0.027958, -0.00035, 2e-06],[0.072183, 0.10865, 0.818174, 0.0]), - ChillerCurveSet('S',CompliancePathType.ECB_B,CondenserType.LIQUID_COOLED,CompressorType.CENTRIFUGAL,527528.0,1055056.0,5.538351706036747,8.792133333333336,[0.971699, 0.036192, -0.001858, -0.005224, -0.000134, 0.000709],[0.526475, -0.030843, 0.000735, 0.035532, -0.00051, 0.000216],[0.064979, 0.151829, 0.779131, 0.0]), - ChillerCurveSet('T',CompliancePathType.ECB_B,CondenserType.LIQUID_COOLED,CompressorType.CENTRIFUGAL,1055056.0,1406741.3333333335,5.910677871148461,9.017572649572651,[1.023337, 0.033378, -0.001742, -0.005438, -0.000153, 0.000633],[0.54781, -0.02947, 0.000842, 0.032888, -0.000423, 4.8e-05],[0.082812, 0.152816, 0.764822, 0.0]), - ChillerCurveSet('U',CompliancePathType.ECB_B,CondenserType.LIQUID_COOLED,CompressorType.CENTRIFUGAL,1406741.3333333335,float('inf'),6.011715099715102,9.254877192982459,[0.95358, 0.05301, -0.002387, -0.007165, -0.000104, 0.00051],[0.569569, -0.0247, 0.000727, 0.030569, -0.000409, 8.7e-05],[0.058583, 0.205486, 0.736345, 0.0]), - ChillerCurveSet('V',CompliancePathType.PRM,CondenserType.LIQUID_COOLED,CompressorType.POSITIVE_DISPLACEMENT,0.0,527528.0,4.450023197941711,5.200138005815961,[0.840898, 0.059263, -0.002225, 0.000735, -0.000188, 2e-05],[0.817024, -0.034213, 0.001638, -0.00259, 0.000566, -0.000389],[0.276037, 0.253577, 0.466353, 0.0]), - ChillerCurveSet('X',CompliancePathType.PRM,CondenserType.LIQUID_COOLED,CompressorType.POSITIVE_DISPLACEMENT,527528.0,1055056.0,4.899489179901552,5.600084925690022,[0.850133, 0.050234, -0.001951, 0.000606, -0.000161, 0.000118],[0.627193, -0.015646, 0.001067, 0.00827, 0.000331, -0.000515],[0.250801, 0.345915, 0.399138, 0.0]), - ChillerCurveSet('Y',CompliancePathType.PRM,CondenserType.LIQUID_COOLED,CompressorType.POSITIVE_DISPLACEMENT,1055056.0,float('inf'),5.499379723742508,6.149420061782364,[0.87313, 0.033599, -0.001391, 0.000961, -0.000114, 0.000178],[0.664854, -0.029016, 0.001339, 0.017823, 8e-06, -0.000318],[0.320097, 0.074356, 0.602938, 0.0]), - ChillerCurveSet('Z',CompliancePathType.PRM,CondenserType.LIQUID_COOLED,CompressorType.CENTRIFUGAL,0.0,527528.0,4.999791488958393,5.249818380852864,[0.97331, 0.040996, -0.001782, -0.00834, 1.6e-05, 0.000327],[0.628525, -0.028798, 0.001019, 0.027867, -0.000349, 2e-06],[0.281669, 0.202762, 0.515409, 0.0]), - ChillerCurveSet('AA',CompliancePathType.PRM,CondenserType.LIQUID_COOLED,CompressorType.CENTRIFUGAL,527528.0,1055056.0,5.549713323865131,5.899770731980094,[0.909633, 0.03546, -0.001881, -0.001808, -0.000158, 0.000648],[0.46433, -0.033834, 0.000731, 0.040345, -0.000592, 0.000277],[0.339494, 0.04909, 0.611582, 0.0]), - ChillerCurveSet('AB',CompliancePathType.PRM,CondenserType.LIQUID_COOLED,CompressorType.CENTRIFUGAL,1055056.0,float('inf'),6.099294716152158,6.400097057931454,[0.988289, 0.031128, -0.00155, -0.003349, -0.000147, 0.000503],[0.563967, -0.034331, 0.001015, 0.033941, -0.000432, -2.5e-05],[0.309752, 0.153649, 0.536462, 0.0]) + ChillerCurveSet('A',CompliancePathType.ECB_A,CondenserType.AIR,CompressorType.UNKNOWN,0.0,527528.0,2.960018222222222,4.015074222222222,[0.686206, 0.057562, -0.001835, 0.01381, -0.000338, -0.000247],[0.825618, -0.025861, 0.001396, -0.002728, 0.000381, -0.000373],[0.087789, 0.185696, 1.561411, -0.832304]), + ChillerCurveSet('B',CompliancePathType.ECB_A,CondenserType.AIR,CompressorType.UNKNOWN,527528.0,float('inf'),2.960018222222222,4.102995555555555,[0.794185, 0.060199, -0.002016, 0.006203, -0.000229, -0.000183],[0.807832, -0.029452, 0.001431, -0.002832, 0.000399, -0.000278],[0.118081, 0.107477, 1.570838, -0.794051]), + ChillerCurveSet('C',CompliancePathType.ECB_A,CondenserType.LIQUID,CompressorType.POSITIVE_DISPLACEMENT,0.0,263764.0,4.689137777777779,5.861422222222224,[0.838337, 0.057024, -0.002117, 0.000793, -0.000175, 2e-05],[0.83688, -0.032383, 0.001568, -0.002806, 0.000544, -0.000407],[0.24373, 0.165972, 0.586099, 0.0]), + ChillerCurveSet('D',CompliancePathType.ECB_A,CondenserType.LIQUID,CompressorType.POSITIVE_DISPLACEMENT,263764.0,527528.0,4.88451851851852,6.280095238095239,[0.86184, 0.057837, -0.00217, -0.001391, -0.000136, 4e-05],[0.74092, -0.030144, 0.001479, 0.00385, 0.000416, -0.000404],[0.208982, 0.224001, 0.561479, 0.0]), + ChillerCurveSet('E',CompliancePathType.ECB_A,CondenserType.LIQUID,CompressorType.POSITIVE_DISPLACEMENT,527528.0,1055056.0,5.328565656565657,6.512691358024693,[0.800066, 0.035377, -0.001482, 0.006462, -0.000227, 0.000187],[0.620834, -0.023642, 0.0013, 0.013555, 0.000189, -0.000425],[0.246644, 0.184576, 0.566463, 0.0]), + ChillerCurveSet('F',CompliancePathType.ECB_A,CondenserType.LIQUID,CompressorType.POSITIVE_DISPLACEMENT,1055056.0,2110112.0,5.765333333333335,6.763179487179488,[0.863175, 0.023955, -0.001135, 0.004955, -0.000197, 0.000268],[0.636828, -0.029245, 0.001397, 0.018817, 8e-06, -0.000332],[0.244926, 0.21889, 0.532972, 0.0]), + ChillerCurveSet('G',CompliancePathType.ECB_A,CondenserType.LIQUID,CompressorType.POSITIVE_DISPLACEMENT,2110112.0,float('inf'),6.280095238095239,7.033706666666668,[0.830804, 0.01631, -0.000949, 0.008707, -0.000263, 0.000377],[0.544967, -0.030491, 0.001395, 0.027852, -0.000187, -0.000314],[0.264371, 0.263302, 0.47169, 0.0]), + ChillerCurveSet('H',CompliancePathType.ECB_A,CondenserType.LIQUID,CompressorType.CENTRIFUGAL,0.0,1055056.0,5.765333333333335,6.39427878787879,[0.83742, 0.038528, -0.002167, 0.004185, -0.000322, 0.000806],[0.447243, -0.033785, 0.000724, 0.040274, -0.000577, 0.000305],[0.304206, 0.073866, 0.621457, 0.0]), + ChillerCurveSet('I',CompliancePathType.ECB_A,CondenserType.LIQUID,CompressorType.CENTRIFUGAL,1055056.0,1406741.3333333335,6.280095238095239,6.763179487179488,[1.207878, 0.026951, -0.001148, -0.020576, 0.000202, 0.000479],[0.647193, -0.024484, 0.000426, 0.028764, -0.000421, 7.7e-05],[0.276961, 0.101749, 0.621383, 0.0]), + ChillerCurveSet('J',CompliancePathType.ECB_A,CondenserType.LIQUID,CompressorType.CENTRIFUGAL,1406741.3333333335,float('inf'),6.280095238095239,7.033706666666668,[0.896806, 0.056739, -0.002544, -0.005536, -0.000105, 0.00047],[0.489242, -0.028851, 0.000973, 0.035835, -0.000477, 9.6e-05],[0.290891, 0.059366, 0.649421, 0.0]), + ChillerCurveSet('K',CompliancePathType.ECB_B,CondenserType.AIR,CompressorType.UNKNOWN,0.0,527528.0,2.8427897777777775,4.6305235555555555,[0.709195, 0.059566, -0.001968, 0.010899, -0.000284, -0.000222],[0.891872, -0.029821, 0.001459, -0.006929, 0.000453, -0.000303],[0.036849, 0.100792, 1.614142, -0.748013]), + ChillerCurveSet('L',CompliancePathType.ECB_B,CondenserType.AIR,CompressorType.UNKNOWN,527528.0,float('inf'),2.8427897777777775,4.7184448888888895,[0.879844, 0.060415, -0.001994, 0.000937, -0.000156, -0.000155],[0.711589, -0.02952, 0.00139, 0.001554, 0.000353, -0.000272],[0.095711, 0.009903, 1.543396, -0.646737]), + ChillerCurveSet('M',CompliancePathType.ECB_B,CondenserType.LIQUID,CompressorType.POSITIVE_DISPLACEMENT,0.0,263764.0,4.508786324786326,7.033706666666668,[0.835803, 0.057057, -0.002119, 0.000903, -0.000176, 1.9e-05],[0.844064, -0.032504, 0.001571, -0.003076, 0.000545, -0.000402],[0.1072, 0.182611, 0.705182, 0.0]), + ChillerCurveSet('N',CompliancePathType.ECB_B,CondenserType.LIQUID,CompressorType.POSITIVE_DISPLACEMENT,263764.0,527528.0,4.689137777777779,7.177251700680273,[0.85071, 0.056037, -0.002077, -0.000147, -0.000153, 2.3e-05],[0.797371, -0.031361, 0.001514, 0.000419, 0.000473, -0.000398],[0.183811, -0.044417, 0.85566, 0.0]), + ChillerCurveSet('O',CompliancePathType.ECB_B,CondenserType.LIQUID,CompressorType.POSITIVE_DISPLACEMENT,527528.0,1055056.0,5.1718431372549025,7.992848484848486,[0.822519, 0.038968, -0.001588, 0.004048, -0.000188, 0.000164],[0.617871, -0.02011, 0.001175, 0.013623, 0.000172, -0.000439],[0.090936, 0.207812, 0.696735, 0.0]), + ChillerCurveSet('P',CompliancePathType.ECB_B,CondenserType.LIQUID,CompressorType.POSITIVE_DISPLACEMENT,1055056.0,2110112.0,5.6269653333333345,8.577691056910572,[0.877218, 0.028393, -0.001257, 0.003217, -0.000174, 0.000232],[0.656763, -0.027891, 0.001343, 0.016627, 5.6e-05, -0.000348],[0.103665, 0.148024, 0.744887, 0.0]), + ChillerCurveSet('Q',CompliancePathType.ECB_B,CondenserType.LIQUID,CompressorType.POSITIVE_DISPLACEMENT,2110112.0,float('inf'),6.011715099715102,9.254877192982459,[0.831828, 0.015657, -0.000928, 0.009067, -0.000272, 0.000376],[0.553694, -0.030347, 0.001412, 0.026568, -0.000153, -0.000325],[0.061706, 0.261711, 0.677017, 0.0]), + ChillerCurveSet('R',CompliancePathType.ECB_B,CondenserType.LIQUID,CompressorType.CENTRIFUGAL,0.0,527528.0,5.0602206235012,7.992848484848486,[0.972517, 0.040861, -0.001781, -0.008217, 1.3e-05, 0.000328],[0.62736, -0.028989, 0.001027, 0.027958, -0.00035, 2e-06],[0.072183, 0.10865, 0.818174, 0.0]), + ChillerCurveSet('S',CompliancePathType.ECB_B,CondenserType.LIQUID,CompressorType.CENTRIFUGAL,527528.0,1055056.0,5.538351706036747,8.792133333333336,[0.971699, 0.036192, -0.001858, -0.005224, -0.000134, 0.000709],[0.526475, -0.030843, 0.000735, 0.035532, -0.00051, 0.000216],[0.064979, 0.151829, 0.779131, 0.0]), + ChillerCurveSet('T',CompliancePathType.ECB_B,CondenserType.LIQUID,CompressorType.CENTRIFUGAL,1055056.0,1406741.3333333335,5.910677871148461,9.017572649572651,[1.023337, 0.033378, -0.001742, -0.005438, -0.000153, 0.000633],[0.54781, -0.02947, 0.000842, 0.032888, -0.000423, 4.8e-05],[0.082812, 0.152816, 0.764822, 0.0]), + ChillerCurveSet('U',CompliancePathType.ECB_B,CondenserType.LIQUID,CompressorType.CENTRIFUGAL,1406741.3333333335,float('inf'),6.011715099715102,9.254877192982459,[0.95358, 0.05301, -0.002387, -0.007165, -0.000104, 0.00051],[0.569569, -0.0247, 0.000727, 0.030569, -0.000409, 8.7e-05],[0.058583, 0.205486, 0.736345, 0.0]), + ChillerCurveSet('V',CompliancePathType.PRM,CondenserType.LIQUID,CompressorType.POSITIVE_DISPLACEMENT,0.0,527528.0,4.450023197941711,5.200138005815961,[0.840898, 0.059263, -0.002225, 0.000735, -0.000188, 2e-05],[0.817024, -0.034213, 0.001638, -0.00259, 0.000566, -0.000389],[0.276037, 0.253577, 0.466353, 0.0]), + ChillerCurveSet('X',CompliancePathType.PRM,CondenserType.LIQUID,CompressorType.POSITIVE_DISPLACEMENT,527528.0,1055056.0,4.899489179901552,5.600084925690022,[0.850133, 0.050234, -0.001951, 0.000606, -0.000161, 0.000118],[0.627193, -0.015646, 0.001067, 0.00827, 0.000331, -0.000515],[0.250801, 0.345915, 0.399138, 0.0]), + ChillerCurveSet('Y',CompliancePathType.PRM,CondenserType.LIQUID,CompressorType.POSITIVE_DISPLACEMENT,1055056.0,float('inf'),5.499379723742508,6.149420061782364,[0.87313, 0.033599, -0.001391, 0.000961, -0.000114, 0.000178],[0.664854, -0.029016, 0.001339, 0.017823, 8e-06, -0.000318],[0.320097, 0.074356, 0.602938, 0.0]), + ChillerCurveSet('Z',CompliancePathType.PRM,CondenserType.LIQUID,CompressorType.CENTRIFUGAL,0.0,527528.0,4.999791488958393,5.249818380852864,[0.97331, 0.040996, -0.001782, -0.00834, 1.6e-05, 0.000327],[0.628525, -0.028798, 0.001019, 0.027867, -0.000349, 2e-06],[0.281669, 0.202762, 0.515409, 0.0]), + ChillerCurveSet('AA',CompliancePathType.PRM,CondenserType.LIQUID,CompressorType.CENTRIFUGAL,527528.0,1055056.0,5.549713323865131,5.899770731980094,[0.909633, 0.03546, -0.001881, -0.001808, -0.000158, 0.000648],[0.46433, -0.033834, 0.000731, 0.040345, -0.000592, 0.000277],[0.339494, 0.04909, 0.611582, 0.0]), + ChillerCurveSet('AB',CompliancePathType.PRM,CondenserType.LIQUID,CompressorType.CENTRIFUGAL,1055056.0,float('inf'),6.099294716152158,6.400097057931454,[0.988289, 0.031128, -0.00155, -0.003349, -0.000147, 0.000503],[0.563967, -0.034331, 0.001015, 0.033941, -0.000432, -2.5e-05],[0.309752, 0.153649, 0.536462, 0.0]) # fmt: on ] - def __init__(self): - super().__init__() - self.required_kwargs += ["path_type", "condenser_type", "compressor_type"] + def __init__( + self, + rated_net_evaporator_capacity, + rated_cop, + condenser_type: CondenserType, + compressor_type: CompressorType, + path_type, + ): - def set_system(self, system): - # set kwarg variables - self.path_type = system.kwargs["path_type"] - self.condenser_type = system.kwargs["condenser_type"] - self.compressor_type = system.kwargs["compressor_type"] + self.path_type = path_type # match curve set - matches_found = [] + matches_found: list[ChillerCurveSet] = [] for curve_set in self.chiller_curve_sets: if curve_set.path_type == self.path_type: - if curve_set.condenser_type == self.condenser_type: + if curve_set.condenser_type == condenser_type: if (curve_set.compressor_type == CompressorType.CENTRIFUGAL) == ( - self.compressor_type == CompressorType.CENTRIFUGAL + compressor_type == CompressorType.CENTRIFUGAL ): if ( - system.rated_net_evaporator_capacity - > curve_set.minimum_capacity + rated_net_evaporator_capacity > curve_set.minimum_capacity ) and ( - system.rated_net_evaporator_capacity - <= curve_set.maximum_capacity + rated_net_evaporator_capacity <= curve_set.maximum_capacity ): matches_found.append(curve_set) - search_criteria_text = f"'path_type'={self.path_type}, 'condenser_type'={self.condenser_type}, 'compressor_type'={self.compressor_type}, 'rated_net_evaporator_capacity'={system.rated_net_evaporator_capacity}" + search_criteria_text = f"'path_type'={self.path_type}, 'condenser_type'={condenser_type}, 'compressor_type'={compressor_type}, 'rated_net_evaporator_capacity'={rated_net_evaporator_capacity}" if len(matches_found) == 0: - raise Exception( + raise RuntimeError( f"Unable to find matching curve-set for {search_criteria_text}" ) elif len(matches_found) > 1: - raise Exception( + raise RuntimeError( f"Multiple matching curve-sets found for {search_criteria_text}" ) else: self.curve_set = matches_found[0] - # set baseclass kwargs - system.kwargs["eir_temperature_coefficients"] = ( - self.curve_set.eir_temperature_coefficients - ) - system.kwargs["eir_part_load_ratio_coefficients"] = ( - self.curve_set.eir_part_load_ratio_coefficients + # scaling + self.capacity_range = ( + self.curve_set.minimum_capacity, + self.curve_set.maximum_capacity, ) - system.kwargs["capacity_temperature_coefficients"] = ( - self.curve_set.capacity_temperature_coefficients + + super().__init__( + rated_net_evaporator_capacity=rated_net_evaporator_capacity, + rated_cop=rated_cop, + condenser_type=condenser_type, + eir_temperature_coefficients=self.curve_set.eir_temperature_coefficients, + eir_part_load_ratio_coefficients=self.curve_set.eir_part_load_ratio_coefficients, + capacity_temperature_coefficients=self.curve_set.capacity_temperature_coefficients, + minimum_part_load_ratio=0.25, + minimum_unloading_ratio=0.25, ) - system.kwargs["minimum_part_load_ratio"] = 0.25 - system.kwargs["minimum_unloading_ratio"] = 0.25 - # scaling - self.minimum_scaled_rated_capacity = self.curve_set.minimum_capacity - self.maximum_scaled_rated_capacity = self.curve_set.maximum_capacity + self.compressor_type = compressor_type + def __hash__(self): + return hash( + ( + self.curve_set.set_name, + self.rated_net_evaporator_capacity, + self.rated_cop, + ) + ) + + def generate_205_representation(self, capacity_range=None): + if capacity_range is None: + capacity_range = self.capacity_range # set metadata - system.metadata.notes = f"Based on ASHRAE 90.1-2019 Addendum 'bd' curve set '{self.curve_set.set_name}' for {compliance_path_text[self.curve_set.path_type]}" - system.metadata.compressor_type = compressor_type_map[self.compressor_type] + standard_reference = "ASHRAE 90.1-2022 Appendix J curve set" + self.metadata.notes = f"Based on {standard_reference} '{self.curve_set.set_name}' for {compliance_path_text[self.curve_set.path_type]}" compressor_text = compressor_type_text[self.compressor_type] condenser_text = condenser_type_text[self.condenser_type] type_text = f"{condenser_text}" if compressor_text is not None: type_text += f", {compressor_text} compressor" type_text += f" chiller" - if self.maximum_scaled_rated_capacity == float("inf"): - size_description = ( - f"{to_u(self.minimum_scaled_rated_capacity,'ton_ref'):.1f}+" - ) + if self.capacity_range[1] == float("inf"): + size_description = f"{to_u(self.capacity_range[0],'ton_ref'):.1f}+" else: - size_description = f"{to_u(self.minimum_scaled_rated_capacity,'ton_ref'):.1f}-{to_u(self.maximum_scaled_rated_capacity,'ton_ref'):.1f}" - system.metadata.description = f"ASHRAE 90.1-2019 Addendum 'bd' curve set '{self.curve_set.set_name}': {size_description} ton, {system.rated_cop:.2f} COP, {self.curve_set.iplv:.2f} IPLV {type_text}" + size_description = f"{to_u(self.capacity_range[0],'ton_ref'):.1f}-{to_u(self.capacity_range[1],'ton_ref'):.1f}" + self.metadata.description = f"{standard_reference} '{self.curve_set.set_name}': {size_description} ton, {self.rated_cop:.2f} COP, {self.curve_set.iplv:.2f} IPLV {type_text}" unique_characteristics = ( - system.rated_net_evaporator_capacity, - system.rated_cop, - system.cycling_degradation_coefficient, - system.standby_power, + self.rated_net_evaporator_capacity, + self.rated_cop, + self.cycling_degradation_coefficient, + self.standby_power, self.path_type, self.compressor_type, self.condenser_type, ) - system.metadata.uuid_seed = sha256( + self.metadata.uuid_seed = sha256( f"{unique_characteristics}".encode() ).hexdigest() - return super().set_system(system) - - def __hash__(self): - return hash( - ( - self.curve_set.set_name, - self.system.rated_net_evaporator_capacity, - self.system.rated_cop, - ) - ) + return super().generate_205_representation(capacity_range) diff --git a/chiller/models/base_model.py b/chiller/models/base_model.py deleted file mode 100644 index 5bce9e9..0000000 --- a/chiller/models/base_model.py +++ /dev/null @@ -1,38 +0,0 @@ -class ChillerModel: - def __init__(self): - self.system = None - self.allowed_kwargs = {} - self.required_kwargs = [] - self.maximum_scaled_rated_capacity = None - self.minimum_scaled_rated_capacity = None - - def set_system(self, system): - self.system = system - for kwarg in system.kwargs: - if kwarg not in self.allowed_kwargs and kwarg not in self.required_kwargs: - raise Exception(f"Unrecognized key word argument: {kwarg}") - for kwarg in self.required_kwargs: - if kwarg not in system.kwargs: - raise Exception(f"Required key word argument not provided: {kwarg}") - # Apply defaults - for kwarg in self.allowed_kwargs: - if kwarg not in system.kwargs: - system.kwargs[kwarg] = self.allowed_kwargs[kwarg] - - def net_evaporator_capacity(self, conditions): - raise NotImplementedError() - - def input_power(self, conditions): - raise NotImplementedError - - def net_condenser_capacity(self, conditions): - raise NotImplementedError() - - def oil_cooler_heat(self, conditions): - raise NotImplementedError() - - def auxiliary_heat(self, conditions): - raise NotImplementedError() - - def fixup_205_representation(self, representation): - return representation diff --git a/chiller/models/energyplus_eir.py b/chiller/models/energyplus_eir.py index 10bf2b1..c1dcb8e 100644 --- a/chiller/models/energyplus_eir.py +++ b/chiller/models/energyplus_eir.py @@ -1,44 +1,34 @@ -from .base_model import ChillerModel +from typing import Type + +from koozie import to_u, fr_u + +from ..chiller import Chiller, LiquidCooledChiller, CondenserType, AirCooledChiller from ..util import calc_biquad, calc_cubic -from koozie import to_u - - -class EnergyPlusEIR(ChillerModel): - def __init__(self): - super().__init__() - self.required_kwargs += [ - "eir_temperature_coefficients", - "eir_part_load_ratio_coefficients", - "capacity_temperature_coefficients", - "minimum_part_load_ratio", - "minimum_unloading_ratio", - ] - self.allowed_kwargs.update( - { - "oil_cooler_fraction": 0.0, - "auxiliary_fraction": 0.0, - "space_gain_fraction": 0.0, - } - ) - def set_system(self, system): - super().set_system(system) - # set kwarg variables - self.capacity_temperature_coefficients = self.system.kwargs[ - "capacity_temperature_coefficients" - ] - self.eir_temperature_coefficients = self.system.kwargs[ - "eir_temperature_coefficients" - ] - self.eir_part_load_ratio_coefficients = self.system.kwargs[ - "eir_part_load_ratio_coefficients" - ] - self.minimum_part_load_ratio = self.system.kwargs["minimum_part_load_ratio"] - self.minimum_unloading_ratio = self.system.kwargs["minimum_unloading_ratio"] - - self.oil_cooler_fraction = self.system.kwargs["oil_cooler_fraction"] - self.auxiliary_fraction = self.system.kwargs["auxiliary_fraction"] - self.space_gain_fraction = self.system.kwargs["space_gain_fraction"] + +class EnergyPlusEIR(Chiller): + def __init__( + self, + rated_net_evaporator_capacity, + rated_cop, + condenser_type: CondenserType, + eir_temperature_coefficients, + eir_part_load_ratio_coefficients, + capacity_temperature_coefficients, + minimum_part_load_ratio, + minimum_unloading_ratio, + oil_cooler_fraction=0.0, + auxiliary_fraction=0.0, + space_gain_fraction=0.0, + ) -> None: + self.capacity_temperature_coefficients = capacity_temperature_coefficients + self.eir_temperature_coefficients = eir_temperature_coefficients + self.eir_part_load_ratio_coefficients = eir_part_load_ratio_coefficients + self.minimum_part_load_ratio = minimum_part_load_ratio + self.minimum_unloading_ratio = minimum_unloading_ratio + self.oil_cooler_fraction = oil_cooler_fraction + self.auxiliary_fraction = auxiliary_fraction + self.space_gain_fraction = space_gain_fraction # Check for sum of fractions > 1.0 self.loss_fraction_sum = ( @@ -48,33 +38,44 @@ def set_system(self, system): ) if self.loss_fraction_sum > 1.0001: - raise Exception( + raise RuntimeError( f"Sum of 'oil_cooler_fraction' ({self.oil_cooler_fraction}), 'auxiliary_fraction' ({self.auxiliary_fraction}), and 'space_gain_fraction' ({self.space_gain_fraction}) is greater than 1.0 ({self.loss_fraction_sum})" ) if self.minimum_unloading_ratio < self.minimum_part_load_ratio: - raise Exception( + raise RuntimeError( f"'minimum_unloading_ratio' ({self.minimum_unloading_ratio}) must be greater than 'minimum_part_load_ratio' ({self.minimum_part_load_ratio})" ) - if self.system.number_of_compressor_speeds is None: - if self.minimum_unloading_ratio > self.minimum_part_load_ratio: - self.system.number_of_compressor_speeds = 5 - else: - self.system.number_of_compressor_speeds = 4 - if self.system.rated_net_condenser_capacity is None: - energy_balance = self.system.rated_net_evaporator_capacity * ( - 1.0 / self.system.rated_cop + 1.0 - ) - self.system.rated_net_condenser_capacity = energy_balance * ( - 1.0 - self.loss_fraction_sum - ) + energy_balance = rated_net_evaporator_capacity * (1.0 / rated_cop + 1.0) + rated_net_condenser_capacity = energy_balance * (1.0 - self.loss_fraction_sum) - self.system.metadata.has_hot_gas_bypass_installed = ( + if self.minimum_unloading_ratio > self.minimum_part_load_ratio: + number_of_compressor_speeds = 5 + else: + number_of_compressor_speeds = 4 + + self.has_hot_gas_bypass_installed = ( self.minimum_part_load_ratio < self.minimum_unloading_ratio ) - def net_evaporator_capacity(self, conditions): + self.chiller_type: Type[Chiller] + if condenser_type == CondenserType.LIQUID: + self.chiller_type = LiquidCooledChiller + else: + self.chiller_type = AirCooledChiller + super().__init__( + rated_net_evaporator_capacity=rated_net_evaporator_capacity, + rated_cop=rated_cop, + condenser_type=condenser_type, + rated_net_condenser_capacity=rated_net_condenser_capacity, + number_of_compressor_speeds=number_of_compressor_speeds, + condenser_entering_temperature_range=self.chiller_type.DEFAULT_CONDENSER_TEMPERATURE_RANGE, + ) + + def net_evaporator_capacity(self, conditions=None): + if conditions is None: + conditions = self.get_default_conditions() coeffs = self.capacity_temperature_coefficients capacity_temperature_multiplier = calc_biquad( coeffs, @@ -82,12 +83,14 @@ def net_evaporator_capacity(self, conditions): to_u(conditions.condenser_inlet.T, "°C"), ) return ( - self.system.rated_net_evaporator_capacity + self.rated_net_evaporator_capacity * capacity_temperature_multiplier * self.part_load_ratio(conditions) ) - def input_power(self, conditions): + def input_power(self, conditions=None): + if conditions is None: + conditions = self.get_default_conditions() cap = self.net_evaporator_capacity(conditions) coeffs = self.eir_temperature_coefficients eir_temperature_multplier = calc_biquad( @@ -104,32 +107,38 @@ def input_power(self, conditions): self.eir_part_load_ratio_coefficients, effective_plr ) eir = ( - eir_temperature_multplier - * eir_part_load_ratio_multiplier - / self.system.rated_cop + eir_temperature_multplier * eir_part_load_ratio_multiplier / self.rated_cop ) return eir * cap / self.part_load_ratio(conditions) - def net_condenser_capacity(self, conditions): + def net_condenser_capacity(self, conditions=None): + if conditions is None: + conditions = self.get_default_conditions() return ( self.input_power(conditions) + self.net_evaporator_capacity(conditions) ) * (1.0 - self.loss_fraction_sum) - def oil_cooler_heat(self, conditions): + def oil_cooler_heat(self, conditions=None): + if conditions is None: + conditions = self.get_default_conditions() return ( self.input_power(conditions) + self.net_evaporator_capacity(conditions) ) * self.oil_cooler_fraction - def auxiliary_heat(self, conditions): + def auxiliary_heat(self, conditions=None): + if conditions is None: + conditions = self.get_default_conditions() return ( self.input_power(conditions) + self.net_evaporator_capacity(conditions) ) * self.auxiliary_fraction - def part_load_ratio(self, conditions): + def part_load_ratio(self, conditions=None): + if conditions is None: + conditions = self.get_default_conditions() if self.minimum_part_load_ratio < self.minimum_unloading_ratio: - minimum_speed = self.system.number_of_compressor_speeds - 2 + minimum_speed = self.number_of_compressor_speeds - 2 else: - minimum_speed = self.system.number_of_compressor_speeds - 1 + minimum_speed = self.number_of_compressor_speeds - 1 if conditions.compressor_speed > minimum_speed: # Unloading / false loading / hot gas bypass return self.minimum_part_load_ratio @@ -141,7 +150,14 @@ def part_load_ratio(self, conditions): / minimum_speed ) - def generate_energyplus_idf(self, output_path, indent=2): + def set_rated_evaporator_volumetric_flow_rate(self): + if self.condenser_type == CondenserType.LIQUID: + LiquidCooledChiller.set_rated_evaporator_volumetric_flow_rate(self) + + def set_rated_condenser_volumetric_flow_rate(self): + if self.condenser_type == CondenserType.LIQUID: + LiquidCooledChiller.set_rated_condenser_volumetric_flow_rate(self) - with open(output_path, "w") as file: - file.write() + def make_performance_map(self): + if self.condenser_type == CondenserType.LIQUID: + return LiquidCooledChiller.make_performance_map(self) diff --git a/chiller/models/energyplus_reformulated.py b/chiller/models/energyplus_reformulated.py index fb08858..e9ff834 100644 --- a/chiller/models/energyplus_reformulated.py +++ b/chiller/models/energyplus_reformulated.py @@ -1,18 +1,46 @@ -from chiller.fluid_properties import FluidState +from ..fluid_properties import LiquidState from .energyplus_eir import EnergyPlusEIR +from ..chiller import CondenserType from ..util import calc_biquad, calc_bicubic from koozie import to_u from scipy import optimize class EnergyPlusReformulatedEIR(EnergyPlusEIR): - def __init__(self): - super().__init__() + def __init__( + self, + rated_net_evaporator_capacity, + rated_cop, + condenser_type: CondenserType, + eir_temperature_coefficients, + eir_part_load_ratio_coefficients, + capacity_temperature_coefficients, + minimum_part_load_ratio, + minimum_unloading_ratio, + oil_cooler_fraction=0.0, + auxiliary_fraction=0.0, + space_gain_fraction=0.0, + ) -> None: + super().__init__( + rated_net_evaporator_capacity, + rated_cop, + condenser_type, + eir_temperature_coefficients, + eir_part_load_ratio_coefficients, + capacity_temperature_coefficients, + minimum_part_load_ratio, + minimum_unloading_ratio, + oil_cooler_fraction, + auxiliary_fraction, + space_gain_fraction, + ) self.condenser_leaving_temperature = None - def net_evaporator_capacity(self, conditions): - guess_capacity = ( - self.system.rated_net_evaporator_capacity * self.part_load_ratio(conditions) + def net_evaporator_capacity(self, conditions=None): + if conditions is None: + conditions = self.get_default_conditions() + guess_capacity = self.rated_net_evaporator_capacity * self.part_load_ratio( + conditions ) guess_condenser_leaving_temperature = conditions.condenser_inlet.add_heat( guess_capacity @@ -26,7 +54,9 @@ def net_evaporator_capacity(self, conditions): conditions, self.condenser_leaving_temperature ) - def input_power(self, conditions): + def input_power(self, conditions=None): + if conditions is None: + conditions = self.get_default_conditions() evaporator_capacity = self.net_evaporator_capacity(conditions) return self.calculate_input_power( conditions, self.condenser_leaving_temperature, evaporator_capacity @@ -39,7 +69,7 @@ def calculate_evaporator_capacity(self, conditions, condenser_leaving_temperatur to_u(condenser_leaving_temperature, "°C"), ) return ( - self.system.rated_net_evaporator_capacity + self.rated_net_evaporator_capacity * capacity_temperature_multiplier * self.part_load_ratio(conditions) ) @@ -54,7 +84,7 @@ def calculate_condenser_capacity(self, conditions, condenser_leaving_temperature return evaporator_capacity + power def calculate_condenser_heat_added(self, conditions, condenser_leaving_temperature): - condenser_leaving_state = FluidState( + condenser_leaving_state = LiquidState( temperature=condenser_leaving_temperature, mass_flow_rate=conditions.condenser_inlet.m_dot, ) @@ -79,8 +109,6 @@ def calculate_input_power( effective_plr, ) eir = ( - eir_temperature_multiplier - * eir_part_load_ratio_multiplier - / self.system.rated_cop + eir_temperature_multiplier * eir_part_load_ratio_multiplier / self.rated_cop ) return eir * evaporator_capacity / self.part_load_ratio(conditions) diff --git a/chiller/psychrometrics.py b/chiller/psychrometrics.py new file mode 100644 index 0000000..72a1c3d --- /dev/null +++ b/chiller/psychrometrics.py @@ -0,0 +1,130 @@ +from koozie import fr_u, to_u + +import sys +import psychrolib + +psychrolib.SetUnitSystem(psychrolib.SI) + + +class PsychrometricState: + def __init__(self, drybulb, pressure=fr_u(1.0, "atm"), **kwargs): + self.db = drybulb + self.db_C = to_u(self.db, "°C") + self.p = pressure + self._wb = -999.0 + self._rho = -999.0 + self._h = -999.0 + self._rh = -999.0 + self._hr = -999.0 + self.wb_set = False + self.rh_set = False + self.hr_set = False + self.dp_set = False + self.h_set = False + self.rho_set = False + self.C_p = fr_u(1.006, "kJ/kg/K") + if len(kwargs) > 1: + raise RuntimeError( + f"{PsychrometricState.__name__} can only be initialized with a single key word argument, but received {len(kwargs)}: {kwargs}" + ) + if "wetbulb" in kwargs: + self.wb = kwargs["wetbulb"] + elif "humidity_ratio" in kwargs: + self.hr = kwargs["humidity_ratio"] + elif "relative_humidity" in kwargs: + self.rh = kwargs["relative_humidity"] + elif "enthalpy" in kwargs: + self.h = kwargs["enthalpy"] + else: + raise RuntimeError( + f"{PsychrometricState.__name__}: Unknown or missing key word argument {kwargs}." + ) + + @property + def wb(self): + if self.wb_set: + return self._wb + raise RuntimeError("Wetbulb not set") + + @wb.setter + def wb(self, wb): + self._wb = wb + self.wb_C = to_u(self._wb, "°C") + self.wb_set = True + + def get_wb_C(self): + if self.wb_set: + return self.wb_C + else: + raise RuntimeError("Wetbulb not set") + + @property + def hr(self): + if self.hr_set: + return self._hr + else: + self.hr = psychrolib.GetHumRatioFromTWetBulb( + self.db_C, self.get_wb_C(), self.p + ) + return self._hr + + @hr.setter + def hr(self, hr): + self._hr = hr + if not self.wb_set: + self.wb = fr_u( + psychrolib.GetTWetBulbFromHumRatio(self.db_C, self._hr, self.p), + "°C", + ) + + self.hr_set = True + + @property + def rh(self): + if self.rh_set: + return self._rh + else: + self.rh = psychrolib.GetHumRatioFromTWetBulb( + self.db_C, self.get_wb_C(), self.p + ) + return self._rh + + @rh.setter + def rh(self, rh): + self._rh = rh + if not self.wb_set: + self.wb = fr_u( + psychrolib.GetTWetBulbFromRelHum(self.db_C, self._rh, self.p), "°C" + ) + self.rh_set = True + + @property + def h(self): + if self.h_set: + return self._h + else: + self.h = psychrolib.GetMoistAirEnthalpy(self.db_C, self.hr) + return self._h + + @h.setter + def h(self, h): + self._h = h + if not self.hr_set: + self.hr = psychrolib.GetHumRatioFromEnthalpyAndTDryBulb(self._h, self.db_C) + self.h_set = True + + @property + def rho(self): + if self.rho_set: + return self._rho + else: + self.rho = psychrolib.GetMoistAirDensity(self.db_C, self.hr, self.p) + return self._rho + + @rho.setter + def rho(self, rho): + self._rho = rho + self.rho_set = True + + +STANDARD_CONDITIONS = PsychrometricState(drybulb=fr_u(70.0, "°F"), humidity_ratio=0.0) diff --git a/examples/baseline_chillers.py b/examples/baseline_chillers.py index 9988a62..70db0b9 100644 --- a/examples/baseline_chillers.py +++ b/examples/baseline_chillers.py @@ -1,5 +1,5 @@ from chiller import Chiller -from chiller.models.ashrae_90_1 import ASHRAE90_1, CondenserType +from chiller.models.ashrae_90_1 import ASHRAE90_1BaselineChiller, CondenserType from hashlib import sha256 from koozie import fr_u @@ -37,14 +37,13 @@ """ -for chiller in ASHRAE90_1.chiller_curve_sets: - if chiller.condenser_type == CondenserType.LIQUID_COOLED: +for chiller in ASHRAE90_1BaselineChiller.chiller_curve_sets: + if chiller.condenser_type == CondenserType.LIQUID: if chiller.maximum_capacity == float("inf"): size = chiller.minimum_capacity + fr_u(50.0, "ton_ref") else: size = (chiller.minimum_capacity + chiller.maximum_capacity) * 0.5 - new_chiller = Chiller( - model=ASHRAE90_1(), + new_chiller = ASHRAE90_1BaselineChiller( rated_net_evaporator_capacity=size, rated_cop=chiller.cop, path_type=chiller.path_type, diff --git a/examples/generate.py b/examples/generate.py index 61b0526..6f334f4 100644 --- a/examples/generate.py +++ b/examples/generate.py @@ -8,7 +8,7 @@ import json from chiller.models.ashrae_90_1 import ( - ASHRAE90_1, + ASHRAE90_1BaselineChiller, CompliancePathType, CompressorType, CondenserType, @@ -17,7 +17,7 @@ # From Large Office Reference Building size_tons = 40.0 cop = 5.5 -chiller_type = "Liquid-cooled" +condenser_type = CondenserType.LIQUID subtype = " " minimum_part_load_ratio = 0.1 minimum_unloading_ratio = 0.2 @@ -51,10 +51,10 @@ ] -my_chiller = Chiller( - model=EnergyPlusReformulatedEIR(), +my_chiller = EnergyPlusReformulatedEIR( rated_net_evaporator_capacity=fr_u(size_tons, "ton_ref"), rated_cop=cop, + condenser_type=condenser_type, minimum_part_load_ratio=minimum_part_load_ratio, minimum_unloading_ratio=minimum_unloading_ratio, capacity_temperature_coefficients=capacity_temperature_coefficients, @@ -69,7 +69,7 @@ # assert abs(my_chiller.cop() - my_chiller.rated_cop) < 0.05 my_chiller.metadata.description = ( - f"{size_tons:.1f} ton, {cop:.2f} COP {chiller_type}{subtype}Chiller" + f"{size_tons:.1f} ton, {cop:.2f} COP {condenser_type.name}{subtype}Chiller" ) representation = my_chiller.generate_205_representation() @@ -88,13 +88,12 @@ # For Large Office ASHRAE 90.1 Building -new_chiller = Chiller( - model=ASHRAE90_1(), +new_chiller = ASHRAE90_1BaselineChiller( rated_net_evaporator_capacity=999070.745, rated_cop=5.33, path_type=CompliancePathType.PRM, compressor_type=CompressorType.POSITIVE_DISPLACEMENT, - condenser_type=CondenserType.LIQUID_COOLED, + condenser_type=CondenserType.LIQUID, ) representation = new_chiller.generate_205_representation() @@ -110,18 +109,17 @@ with open(f"{output_directory_path}/{file_name}.json", "w") as file: json.dump(representation, file, indent=4) -new_chiller2 = Chiller( - model=ASHRAE90_1(), +new_chiller2 = ASHRAE90_1BaselineChiller( rated_net_evaporator_capacity=999070.745, rated_cop=5.33, + condenser_type=CondenserType.LIQUID, + compressor_type=CompressorType.POSITIVE_DISPLACEMENT, cycling_degradation_coefficient=0.25, standby_power=500.0, space_gain_fraction=0.02, oil_cooler_fraction=0.01, auxiliary_fraction=0.01, path_type=CompliancePathType.PRM, - compressor_type=CompressorType.POSITIVE_DISPLACEMENT, - condenser_type=CondenserType.LIQUID_COOLED, ) representation = new_chiller2.generate_205_representation() diff --git a/poetry.lock b/poetry.lock index 744f856..0192a68 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,10 +1,15 @@ +# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. + [[package]] name = "astroid" version = "2.15.8" description = "An abstract syntax tree for Python with inference support." -category = "dev" optional = false python-versions = ">=3.7.2" +files = [ + {file = "astroid-2.15.8-py3-none-any.whl", hash = "sha256:1aa149fc5c6589e3d0ece885b4491acd80af4f087baafa3fb5203b113e68cd3c"}, + {file = "astroid-2.15.8.tar.gz", hash = "sha256:6c107453dffee9055899705de3c9ead36e74119cee151e5a9aaf7f0b0e020a6a"}, +] [package.dependencies] lazy-object-proxy = ">=1.4.0" @@ -18,32 +23,83 @@ wrapt = [ name = "atomicwrites" version = "1.4.1" description = "Atomic file writes." -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"}, +] [[package]] name = "attrs" -version = "23.1.0" +version = "24.3.0" description = "Classes Without Boilerplate" -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "attrs-24.3.0-py3-none-any.whl", hash = "sha256:ac96cd038792094f438ad1f6ff80837353805ac950cd2aa0e0625ef19850c308"}, + {file = "attrs-24.3.0.tar.gz", hash = "sha256:8f5c07333d543103541ba7be0e2ce16eeee8130cb0b3f9238ab904ce1e85baff"}, +] [package.extras] -cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] -dev = ["attrs[docs,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]"] +benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] [[package]] name = "cbor2" -version = "5.5.1" +version = "5.6.5" description = "CBOR (de)serializer with extensive tag support" -category = "dev" optional = false python-versions = ">=3.8" +files = [ + {file = "cbor2-5.6.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e16c4a87fc999b4926f5c8f6c696b0d251b4745bc40f6c5aee51d69b30b15ca2"}, + {file = "cbor2-5.6.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:87026fc838370d69f23ed8572939bd71cea2b3f6c8f8bb8283f573374b4d7f33"}, + {file = "cbor2-5.6.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a88f029522aec5425fc2f941b3df90da7688b6756bd3f0472ab886d21208acbd"}, + {file = "cbor2-5.6.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9d15b638539b68aa5d5eacc56099b4543a38b2d2c896055dccf7e83d24b7955"}, + {file = "cbor2-5.6.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:47261f54a024839ec649b950013c4de5b5f521afe592a2688eebbe22430df1dc"}, + {file = "cbor2-5.6.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:559dcf0d897260a9e95e7b43556a62253e84550b77147a1ad4d2c389a2a30192"}, + {file = "cbor2-5.6.5-cp310-cp310-win_amd64.whl", hash = "sha256:5b856fda4c50c5bc73ed3664e64211fa4f015970ed7a15a4d6361bd48462feaf"}, + {file = "cbor2-5.6.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:863e0983989d56d5071270790e7ed8ddbda88c9e5288efdb759aba2efee670bc"}, + {file = "cbor2-5.6.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5cff06464b8f4ca6eb9abcba67bda8f8334a058abc01005c8e616728c387ad32"}, + {file = "cbor2-5.6.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4c7dbcdc59ea7f5a745d3e30ee5e6b6ff5ce7ac244aa3de6786391b10027bb3"}, + {file = "cbor2-5.6.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34cf5ab0dc310c3d0196caa6ae062dc09f6c242e2544bea01691fe60c0230596"}, + {file = "cbor2-5.6.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6797b824b26a30794f2b169c0575301ca9b74ae99064e71d16e6ba0c9057de51"}, + {file = "cbor2-5.6.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:73b9647eed1493097db6aad61e03d8f1252080ee041a1755de18000dd2c05f37"}, + {file = "cbor2-5.6.5-cp311-cp311-win_amd64.whl", hash = "sha256:6e14a1bf6269d25e02ef1d4008e0ce8880aa271d7c6b4c329dba48645764f60e"}, + {file = "cbor2-5.6.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e25c2aebc9db99af7190e2261168cdde8ed3d639ca06868e4f477cf3a228a8e9"}, + {file = "cbor2-5.6.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fde21ac1cf29336a31615a2c469a9cb03cf0add3ae480672d4d38cda467d07fc"}, + {file = "cbor2-5.6.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a8947c102cac79d049eadbd5e2ffb8189952890df7cbc3ee262bbc2f95b011a9"}, + {file = "cbor2-5.6.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38886c41bebcd7dca57739439455bce759f1e4c551b511f618b8e9c1295b431b"}, + {file = "cbor2-5.6.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ae2b49226224e92851c333b91d83292ec62eba53a19c68a79890ce35f1230d70"}, + {file = "cbor2-5.6.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f2764804ffb6553283fc4afb10a280715905a4cea4d6dc7c90d3e89c4a93bc8d"}, + {file = "cbor2-5.6.5-cp312-cp312-win_amd64.whl", hash = "sha256:a3ac50485cf67dfaab170a3e7b527630e93cb0a6af8cdaa403054215dff93adf"}, + {file = "cbor2-5.6.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f0d0a9c5aabd48ecb17acf56004a7542a0b8d8212be52f3102b8218284bd881e"}, + {file = "cbor2-5.6.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:61ceb77e6aa25c11c814d4fe8ec9e3bac0094a1f5bd8a2a8c95694596ea01e08"}, + {file = "cbor2-5.6.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97a7e409b864fecf68b2ace8978eb5df1738799a333ec3ea2b9597bfcdd6d7d2"}, + {file = "cbor2-5.6.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f6d69f38f7d788b04c09ef2b06747536624b452b3c8b371ab78ad43b0296fab"}, + {file = "cbor2-5.6.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f91e6d74fa6917df31f8757fdd0e154203b0dd0609ec53eb957016a2b474896a"}, + {file = "cbor2-5.6.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5ce13a27ef8fddf643fc17a753fe34aa72b251d03c23da6a560c005dc171085b"}, + {file = "cbor2-5.6.5-cp313-cp313-win_amd64.whl", hash = "sha256:54c72a3207bb2d4480c2c39dad12d7971ce0853a99e3f9b8d559ce6eac84f66f"}, + {file = "cbor2-5.6.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4586a4f65546243096e56a3f18f29d60752ee9204722377021b3119a03ed99ff"}, + {file = "cbor2-5.6.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3d1a18b3a58dcd9b40ab55c726160d4a6b74868f2a35b71f9e726268b46dc6a2"}, + {file = "cbor2-5.6.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a83b76367d1c3e69facbcb8cdf65ed6948678e72f433137b41d27458aa2a40cb"}, + {file = "cbor2-5.6.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90bfa36944caccec963e6ab7e01e64e31cc6664535dc06e6295ee3937c999cbb"}, + {file = "cbor2-5.6.5-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:37096663a5a1c46a776aea44906cbe5fa3952f29f50f349179c00525d321c862"}, + {file = "cbor2-5.6.5-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:93676af02bd9a0b4a62c17c5b20f8e9c37b5019b1a24db70a2ee6cb770423568"}, + {file = "cbor2-5.6.5-cp38-cp38-win_amd64.whl", hash = "sha256:8f747b7a9aaa58881a0c5b4cd4a9b8fb27eca984ed261a769b61de1f6b5bd1e6"}, + {file = "cbor2-5.6.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:94885903105eec66d7efb55f4ce9884fdc5a4d51f3bd75b6fedc68c5c251511b"}, + {file = "cbor2-5.6.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fe11c2eb518c882cfbeed456e7a552e544893c17db66fe5d3230dbeaca6b615c"}, + {file = "cbor2-5.6.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:66dd25dd919cddb0b36f97f9ccfa51947882f064729e65e6bef17c28535dc459"}, + {file = "cbor2-5.6.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa61a02995f3a996c03884cf1a0b5733f88cbfd7fa0e34944bf678d4227ee712"}, + {file = "cbor2-5.6.5-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:824f202b556fc204e2e9a67d6d6d624e150fbd791278ccfee24e68caec578afd"}, + {file = "cbor2-5.6.5-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7488aec919f8408f9987a3a32760bd385d8628b23a35477917aa3923ff6ad45f"}, + {file = "cbor2-5.6.5-cp39-cp39-win_amd64.whl", hash = "sha256:a34ee99e86b17444ecbe96d54d909dd1a20e2da9f814ae91b8b71cf1ee2a95e4"}, + {file = "cbor2-5.6.5-py3-none-any.whl", hash = "sha256:3038523b8fc7de312bb9cdcbbbd599987e64307c4db357cd2030c472a6c7d468"}, + {file = "cbor2-5.6.5.tar.gz", hash = "sha256:b682820677ee1dbba45f7da11898d2720f92e06be36acec290867d5ebf3d7e09"}, +] [package.extras] benchmarks = ["pytest-benchmark (==4.0.0)"] @@ -54,198 +110,452 @@ test = ["coverage (>=7)", "hypothesis", "pytest"] name = "click" version = "8.1.7" description = "Composable command line interface toolkit" -category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "cloudpickle" -version = "3.0.0" +version = "3.1.0" description = "Pickler class to extend the standard pickle.Pickler functionality" -category = "dev" optional = false python-versions = ">=3.8" +files = [ + {file = "cloudpickle-3.1.0-py3-none-any.whl", hash = "sha256:fe11acda67f61aaaec473e3afe030feb131d78a43461b718185363384f1ba12e"}, + {file = "cloudpickle-3.1.0.tar.gz", hash = "sha256:81a929b6e3c7335c863c771d673d105f02efdb89dfaba0c90495d1c64796601b"}, +] [[package]] 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 = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] [[package]] name = "coolprop" version = "6.6.0" description = "Open-source thermodynamic and transport properties database" -category = "main" optional = false python-versions = "*" +files = [ + {file = "CoolProp-6.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e628b334548f5eaf7d7508b673d3a1bcf61c8691c0d020057eb0c9f842e8b702"}, + {file = "CoolProp-6.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8245dd194a8f0946d03f6d0bd62e143c7cb3dbf0c10c49879a888cb275e8038f"}, + {file = "CoolProp-6.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f79733ae173f095670d94d7faf2ecbbea21da76775c803fc3332e0ed22e2ef66"}, + {file = "CoolProp-6.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18e401b2e7fa3fd03dcfdd3e2d8c782656d359031a51add7ebe4c5545a0b098a"}, + {file = "CoolProp-6.6.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d23642e904377984b6d6bacb428890bb89bd8a78a0496b8559b698ca2e001f23"}, + {file = "CoolProp-6.6.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d32580510054c4ba5c14d9dc0eeda77b5c0dc263b0cc153de7dff9b9de77e28b"}, + {file = "CoolProp-6.6.0-cp310-cp310-win32.whl", hash = "sha256:1febe6ebdb340635bf6c1bb58678fe7edb93c9698e605c3975e1c4749646ee34"}, + {file = "CoolProp-6.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:0bb213ea8d9f509ae0d4c0009dffbda2f52f370eac3b4576c974188f1cd3ced1"}, + {file = "CoolProp-6.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cfe23e785e27ac4d12e0b13708a8bdc087caee8133fa0840509efaaf1ad311ba"}, + {file = "CoolProp-6.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f374a948bc42babdf644f912958c79effa8ccc4f3f461a0f822715dcdf819c6b"}, + {file = "CoolProp-6.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b43e70dfd9825a4de138ce76365978e24532711fb2f4781dacf2b92b96985ed"}, + {file = "CoolProp-6.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c46edd2dad3b99402ad2bff227a53182e0aba954847cac12686e78abd37ae1d"}, + {file = "CoolProp-6.6.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b83370f50f85cf80ad6c010175b99d6ed7485e647ab70ca85772fecebdcfce86"}, + {file = "CoolProp-6.6.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9bf37b539640e787250075e9042590f89bf83a1859c62d1695d2269d95fe7cff"}, + {file = "CoolProp-6.6.0-cp311-cp311-win32.whl", hash = "sha256:7b72406779cb17b4197d8bfbb90601f60a5ebb44b8c0c5882e8353021163783a"}, + {file = "CoolProp-6.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:b22c30a23603ce3df88a18a445fad14f93fd9757720f43d3b8041549e93c4b93"}, + {file = "CoolProp-6.6.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:2f738c22f4c81d7bc91567fe101502c5106cefc98a9afe884be72cf6908b3b7f"}, + {file = "CoolProp-6.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e2ef2de94f51ec8f095fe772cdb22593245feeb7df76d3616eb19c5da1d4ac7f"}, + {file = "CoolProp-6.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f3de22cfbdb31e9a2f19aefb8074c25c57abba7ba6302eb331694e7bcc4b11"}, + {file = "CoolProp-6.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50f3339c3d590d2c86f9f2c055b9423001653344958000b8dcf7655710a5adee"}, + {file = "CoolProp-6.6.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c556df424dcf93ce2e4b41f1f52537b94050ddf595df67eb7a76a1dd0d92263e"}, + {file = "CoolProp-6.6.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:75dd59ea068a6385977815b0572dd824f8cb932a97432737392e3aba11782210"}, + {file = "CoolProp-6.6.0-cp312-cp312-win32.whl", hash = "sha256:bfc5729c00376c00b33538d4685f4243ea43e69d618f2edd31729003a0fb1440"}, + {file = "CoolProp-6.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:809a8572515009a42386ce7381f7d11fd5c785657637cb402f722edf266a6fb3"}, + {file = "CoolProp-6.6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:6c11811e6730dda4c69fc3765e57697ee9390d9266fc7d0e3a40bfc841783b6c"}, + {file = "CoolProp-6.6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:addd2a7ae804e5bce85bdd3747fbea6c654fdb10b88212845b894c936a5162c9"}, + {file = "CoolProp-6.6.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f90c573ea9ebaffd85613322e8d8e1574268a4e12eca685742afbf5487cf3e37"}, + {file = "CoolProp-6.6.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:483babcc2cf2b3ce7761b3e8639e49700ff73828270956937b4e99451ad04476"}, + {file = "CoolProp-6.6.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:936bc62c1b33d6322b1b589f824284552e5654abc2c86d91313a952fca378fc9"}, + {file = "CoolProp-6.6.0-cp36-cp36m-win32.whl", hash = "sha256:efd4ec19f566aee8b119b2f9c6c91969e131baef0e2315fb1d66bd4b56edc1d5"}, + {file = "CoolProp-6.6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:19cf50201ec36037ef402749bf67bd47eb6f68809c61ce4259d6703898876355"}, + {file = "CoolProp-6.6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:60ff433382c801a8d473be57903adbd9957549adff189598ad65e8040626218b"}, + {file = "CoolProp-6.6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57b7e46d3d60962afe2deec068b042e4257e579b2a0d710202d2c2b2186eb2b3"}, + {file = "CoolProp-6.6.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1f4fe22c62fbc269d1aeee705a7dec23066a683b5615789020974504b76a520"}, + {file = "CoolProp-6.6.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c80fec6127bf9e18174609a4f117ec591e47a04e87e31f271e7d6e2daa4a81b7"}, + {file = "CoolProp-6.6.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e40acd6124d217881717fdd3218ef57d832cd010b22f40637d0f2330fdd0c330"}, + {file = "CoolProp-6.6.0-cp37-cp37m-win32.whl", hash = "sha256:8ba5530b8ca15d0715f86b397e0dc5b1dcc993bcc59175c5e54e27a9bbf4842e"}, + {file = "CoolProp-6.6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:60ff22a0969dd6a163ef29fd62f62c72e00bfc80731f4c10b2c89e409a294de9"}, + {file = "CoolProp-6.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7b79982edf62364a4c710ef6804a6b2946696bd95a789e2616dcee741a80f7b1"}, + {file = "CoolProp-6.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c9c081df57cda0e156e78c40fde9d83fd3f1aa262ed74dc70a2ea8fdb816ac70"}, + {file = "CoolProp-6.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15f781be1e761002e95d3de3ac7a02a8ed81adbaa9915ec9942a0575c2cde15d"}, + {file = "CoolProp-6.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25a1117d8229a8d612a3a9ca18a3d994bc2e134de52bf9efb05530219ae19339"}, + {file = "CoolProp-6.6.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:fbe7d8ec427e30a0e95716a77406da4fd7d1299e84f00cca228fa2f7a5ae4ec6"}, + {file = "CoolProp-6.6.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:96065c6c3f17b9b9eeec9620369ffab3047de747c2967db9598f20b56d0cdf2c"}, + {file = "CoolProp-6.6.0-cp38-cp38-win32.whl", hash = "sha256:d02d8ddf1e7af355a334323cc649a391b8c457993631665242d700875b6f7887"}, + {file = "CoolProp-6.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:10b4fd508dc85e2045cf02f5a8ba55c6c5ac9d4ebefbe7940dbc33fe4b392127"}, + {file = "CoolProp-6.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:647102f943d449294e67a89c6f23cf8e59c3763880cc2c7642de21dca2c53631"}, + {file = "CoolProp-6.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b0df572addaf43679f986d76a3cdbe4d4cbd6f4ffe89f1d63be3bd8be38c9212"}, + {file = "CoolProp-6.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c41db6c9172d0ae79e2b3b74aab0e63edeabab999c9dd6a3ca8a0df63f8bfc0"}, + {file = "CoolProp-6.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a994a909a8950170e55a5dce831e2b7b5b6f7cb66a3b49f1afdb04e43b35f42"}, + {file = "CoolProp-6.6.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:09437ff654af822caf8c904bb2882844a1d7ddffa19c9c9c4c3ef9e9a0f50be1"}, + {file = "CoolProp-6.6.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9aa70af252e973f8e1e87cd6ab41b94aa4d563906c57b41c170a9d3cae854797"}, + {file = "CoolProp-6.6.0-cp39-cp39-win32.whl", hash = "sha256:dff965f4e44d3af623a02c8bd55f9887daf21990a3f3f1f4bfc46e462106b9fd"}, + {file = "CoolProp-6.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:bb0ace860286cf2f9346e98a07bc8fc4ca55cf17ee0b1972a5b72a8bfb2716ac"}, + {file = "CoolProp-6.6.0.tar.gz", hash = "sha256:cf6fad704b3ae00f4df309cfd1e2ee48d155886b569a73f2cc38a57eda463082"}, +] [[package]] name = "dill" -version = "0.3.7" +version = "0.3.9" description = "serialize all of Python" -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "dill-0.3.9-py3-none-any.whl", hash = "sha256:468dff3b89520b474c0397703366b7b95eebe6303f108adf9b19da1f702be87a"}, + {file = "dill-0.3.9.tar.gz", hash = "sha256:81aa267dddf68cbfe8029c42ca9ec6a4ab3b22371d1c450abc54422577b4512c"}, +] [package.extras] graph = ["objgraph (>=1.7.2)"] +profile = ["gprof2dot (>=2022.7.29)"] [[package]] name = "doit" version = "0.33.1" description = "doit - Automation Tool" -category = "dev" optional = false python-versions = ">=3.5" +files = [ + {file = "doit-0.33.1-py3-none-any.whl", hash = "sha256:211fc0de3fd9ee31e5c4ccb36bc1a4054b5c4a4a44f915ca413896155b684bfa"}, + {file = "doit-0.33.1.tar.gz", hash = "sha256:37c3b35c2151647b968b2af24481112b2f813c30f695366db0639d529190a143"}, +] [package.dependencies] cloudpickle = "*" macfsevents = {version = "*", markers = "sys_platform == \"darwin\""} pyinotify = {version = "*", markers = "sys_platform == \"linux\""} +[[package]] +name = "flexcache" +version = "0.3" +description = "Saves and loads to the cache a transformed versions of a source object." +optional = false +python-versions = ">=3.9" +files = [ + {file = "flexcache-0.3-py3-none-any.whl", hash = "sha256:d43c9fea82336af6e0115e308d9d33a185390b8346a017564611f1466dcd2e32"}, + {file = "flexcache-0.3.tar.gz", hash = "sha256:18743bd5a0621bfe2cf8d519e4c3bfdf57a269c15d1ced3fb4b64e0ff4600656"}, +] + +[package.dependencies] +typing-extensions = "*" + +[package.extras] +test = ["pytest", "pytest-cov", "pytest-mpl", "pytest-subtests"] + +[[package]] +name = "flexparser" +version = "0.4" +description = "Parsing made fun ... using typing." +optional = false +python-versions = ">=3.9" +files = [ + {file = "flexparser-0.4-py3-none-any.whl", hash = "sha256:3738b456192dcb3e15620f324c447721023c0293f6af9955b481e91d00179846"}, + {file = "flexparser-0.4.tar.gz", hash = "sha256:266d98905595be2ccc5da964fe0a2c3526fbbffdc45b65b3146d75db992ef6b2"}, +] + +[package.dependencies] +typing-extensions = "*" + +[package.extras] +test = ["pytest", "pytest-cov", "pytest-mpl", "pytest-subtests"] + [[package]] name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] [[package]] name = "isort" -version = "5.12.0" +version = "5.13.2" description = "A Python utility / library to sort Python imports." -category = "dev" optional = false python-versions = ">=3.8.0" +files = [ + {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"}, + {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"}, +] [package.extras] -colors = ["colorama (>=0.4.3)"] -pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib"] -plugins = ["setuptools"] -requirements-deprecated-finder = ["pip-api", "pipreqs"] +colors = ["colorama (>=0.4.6)"] [[package]] name = "koozie" -version = "1.1.0" +version = "0.0.0" description = "A light-weight wrapper around pint for unit conversions." -category = "main" optional = false -python-versions = ">=3.7,<4.0" +python-versions = "^3.10" +files = [] +develop = true [package.dependencies] -click = ">=8.1.3,<9.0.0" -pint = ">=0.18,<0.19" +click = "^8.1.3" +pint = "^0.24" + +[package.source] +type = "directory" +url = "../koozie" [[package]] name = "lazy-object-proxy" -version = "1.9.0" +version = "1.10.0" description = "A fast and thorough lazy object proxy." -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "lazy-object-proxy-1.10.0.tar.gz", hash = "sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab7004cf2e59f7c2e4345604a3e6ea0d92ac44e1c2375527d56492014e690c3"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc0d2fc424e54c70c4bc06787e4072c4f3b1aa2f897dfdc34ce1013cf3ceef05"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e2adb09778797da09d2b5ebdbceebf7dd32e2c96f79da9052b2e87b6ea495895"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1f711e2c6dcd4edd372cf5dec5c5a30d23bba06ee012093267b3376c079ec83"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-win32.whl", hash = "sha256:76a095cfe6045c7d0ca77db9934e8f7b71b14645f0094ffcd842349ada5c5fb9"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:b4f87d4ed9064b2628da63830986c3d2dca7501e6018347798313fcf028e2fd4"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75fc59fc450050b1b3c203c35020bc41bd2695ed692a392924c6ce180c6f1dc9"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:782e2c9b2aab1708ffb07d4bf377d12901d7a1d99e5e410d648d892f8967ab1f"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-win32.whl", hash = "sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:e271058822765ad5e3bca7f05f2ace0de58a3f4e62045a8c90a0dfd2f8ad8cc6"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:952c81d415b9b80ea261d2372d2a4a2332a3890c2b83e0535f263ddfe43f0d43"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80b39d3a151309efc8cc48675918891b865bdf742a8616a337cb0090791a0de9"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e221060b701e2aa2ea991542900dd13907a5c90fa80e199dbf5a03359019e7a3"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92f09ff65ecff3108e56526f9e2481b8116c0b9e1425325e13245abfd79bdb1b"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-win32.whl", hash = "sha256:3ad54b9ddbe20ae9f7c1b29e52f123120772b06dbb18ec6be9101369d63a4074"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:127a789c75151db6af398b8972178afe6bda7d6f68730c057fbbc2e96b08d282"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4ed0518a14dd26092614412936920ad081a424bdcb54cc13349a8e2c6d106a"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ad9e6ed739285919aa9661a5bbed0aaf410aa60231373c5579c6b4801bd883c"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc0a92c02fa1ca1e84fc60fa258458e5bf89d90a1ddaeb8ed9cc3147f417255"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0aefc7591920bbd360d57ea03c995cebc204b424524a5bd78406f6e1b8b2a5d8"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5faf03a7d8942bb4476e3b62fd0f4cf94eaf4618e304a19865abf89a35c0bbee"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-win32.whl", hash = "sha256:e333e2324307a7b5d86adfa835bb500ee70bfcd1447384a822e96495796b0ca4"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:cb73507defd385b7705c599a94474b1d5222a508e502553ef94114a143ec6696"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:366c32fe5355ef5fc8a232c5436f4cc66e9d3e8967c01fb2e6302fd6627e3d94"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2297f08f08a2bb0d32a4265e98a006643cd7233fb7983032bd61ac7a02956b3b"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18dd842b49456aaa9a7cf535b04ca4571a302ff72ed8740d06b5adcd41fe0757"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:217138197c170a2a74ca0e05bddcd5f1796c735c37d0eee33e43259b192aa424"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a3a87cf1e133e5b1994144c12ca4aa3d9698517fe1e2ca82977781b16955658"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-win32.whl", hash = "sha256:30b339b2a743c5288405aa79a69e706a06e02958eab31859f7f3c04980853b70"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:a899b10e17743683b293a729d3a11f2f399e8a90c73b089e29f5d0fe3509f0dd"}, + {file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"}, +] [[package]] name = "macfsevents" version = "0.8.4" description = "Thread-based interface to file system observation primitives." -category = "dev" optional = false python-versions = "*" +files = [ + {file = "MacFSEvents-0.8.4.tar.gz", hash = "sha256:bf7283f1d517764ccdc8195b21631dbbac1c506b920bf9a8ea2956b3127651cb"}, +] [[package]] name = "mccabe" version = "0.7.0" description = "McCabe checker, plugin for flake8" -category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, + {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, +] [[package]] name = "numpy" -version = "1.26.2" +version = "2.2.0" description = "Fundamental package for array computing in Python" -category = "main" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" +files = [ + {file = "numpy-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1e25507d85da11ff5066269d0bd25d06e0a0f2e908415534f3e603d2a78e4ffa"}, + {file = "numpy-2.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a62eb442011776e4036af5c8b1a00b706c5bc02dc15eb5344b0c750428c94219"}, + {file = "numpy-2.2.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:b606b1aaf802e6468c2608c65ff7ece53eae1a6874b3765f69b8ceb20c5fa78e"}, + {file = "numpy-2.2.0-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:36b2b43146f646642b425dd2027730f99bac962618ec2052932157e213a040e9"}, + {file = "numpy-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fe8f3583e0607ad4e43a954e35c1748b553bfe9fdac8635c02058023277d1b3"}, + {file = "numpy-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:122fd2fcfafdefc889c64ad99c228d5a1f9692c3a83f56c292618a59aa60ae83"}, + {file = "numpy-2.2.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3f2f5cddeaa4424a0a118924b988746db6ffa8565e5829b1841a8a3bd73eb59a"}, + {file = "numpy-2.2.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7fe4bb0695fe986a9e4deec3b6857003b4cfe5c5e4aac0b95f6a658c14635e31"}, + {file = "numpy-2.2.0-cp310-cp310-win32.whl", hash = "sha256:b30042fe92dbd79f1ba7f6898fada10bdaad1847c44f2dff9a16147e00a93661"}, + {file = "numpy-2.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:54dc1d6d66f8d37843ed281773c7174f03bf7ad826523f73435deb88ba60d2d4"}, + {file = "numpy-2.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9874bc2ff574c40ab7a5cbb7464bf9b045d617e36754a7bc93f933d52bd9ffc6"}, + {file = "numpy-2.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0da8495970f6b101ddd0c38ace92edea30e7e12b9a926b57f5fabb1ecc25bb90"}, + {file = "numpy-2.2.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0557eebc699c1c34cccdd8c3778c9294e8196df27d713706895edc6f57d29608"}, + {file = "numpy-2.2.0-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:3579eaeb5e07f3ded59298ce22b65f877a86ba8e9fe701f5576c99bb17c283da"}, + {file = "numpy-2.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40deb10198bbaa531509aad0cd2f9fadb26c8b94070831e2208e7df543562b74"}, + {file = "numpy-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2aed8fcf8abc3020d6a9ccb31dbc9e7d7819c56a348cc88fd44be269b37427e"}, + {file = "numpy-2.2.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a222d764352c773aa5ebde02dd84dba3279c81c6db2e482d62a3fa54e5ece69b"}, + {file = "numpy-2.2.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4e58666988605e251d42c2818c7d3d8991555381be26399303053b58a5bbf30d"}, + {file = "numpy-2.2.0-cp311-cp311-win32.whl", hash = "sha256:4723a50e1523e1de4fccd1b9a6dcea750c2102461e9a02b2ac55ffeae09a4410"}, + {file = "numpy-2.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:16757cf28621e43e252c560d25b15f18a2f11da94fea344bf26c599b9cf54b73"}, + {file = "numpy-2.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cff210198bb4cae3f3c100444c5eaa573a823f05c253e7188e1362a5555235b3"}, + {file = "numpy-2.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:58b92a5828bd4d9aa0952492b7de803135038de47343b2aa3cc23f3b71a3dc4e"}, + {file = "numpy-2.2.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:ebe5e59545401fbb1b24da76f006ab19734ae71e703cdb4a8b347e84a0cece67"}, + {file = "numpy-2.2.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:e2b8cd48a9942ed3f85b95ca4105c45758438c7ed28fff1e4ce3e57c3b589d8e"}, + {file = "numpy-2.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57fcc997ffc0bef234b8875a54d4058afa92b0b0c4223fc1f62f24b3b5e86038"}, + {file = "numpy-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85ad7d11b309bd132d74397fcf2920933c9d1dc865487128f5c03d580f2c3d03"}, + {file = "numpy-2.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cb24cca1968b21355cc6f3da1a20cd1cebd8a023e3c5b09b432444617949085a"}, + {file = "numpy-2.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0798b138c291d792f8ea40fe3768610f3c7dd2574389e37c3f26573757c8f7ef"}, + {file = "numpy-2.2.0-cp312-cp312-win32.whl", hash = "sha256:afe8fb968743d40435c3827632fd36c5fbde633b0423da7692e426529b1759b1"}, + {file = "numpy-2.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:3a4199f519e57d517ebd48cb76b36c82da0360781c6a0353e64c0cac30ecaad3"}, + {file = "numpy-2.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f8c8b141ef9699ae777c6278b52c706b653bf15d135d302754f6b2e90eb30367"}, + {file = "numpy-2.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0f0986e917aca18f7a567b812ef7ca9391288e2acb7a4308aa9d265bd724bdae"}, + {file = "numpy-2.2.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:1c92113619f7b272838b8d6702a7f8ebe5edea0df48166c47929611d0b4dea69"}, + {file = "numpy-2.2.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:5a145e956b374e72ad1dff82779177d4a3c62bc8248f41b80cb5122e68f22d13"}, + {file = "numpy-2.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18142b497d70a34b01642b9feabb70156311b326fdddd875a9981f34a369b671"}, + {file = "numpy-2.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7d41d1612c1a82b64697e894b75db6758d4f21c3ec069d841e60ebe54b5b571"}, + {file = "numpy-2.2.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a98f6f20465e7618c83252c02041517bd2f7ea29be5378f09667a8f654a5918d"}, + {file = "numpy-2.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e09d40edfdb4e260cb1567d8ae770ccf3b8b7e9f0d9b5c2a9992696b30ce2742"}, + {file = "numpy-2.2.0-cp313-cp313-win32.whl", hash = "sha256:3905a5fffcc23e597ee4d9fb3fcd209bd658c352657548db7316e810ca80458e"}, + {file = "numpy-2.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:a184288538e6ad699cbe6b24859206e38ce5fba28f3bcfa51c90d0502c1582b2"}, + {file = "numpy-2.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:7832f9e8eb00be32f15fdfb9a981d6955ea9adc8574c521d48710171b6c55e95"}, + {file = "numpy-2.2.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f0dd071b95bbca244f4cb7f70b77d2ff3aaaba7fa16dc41f58d14854a6204e6c"}, + {file = "numpy-2.2.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:b0b227dcff8cdc3efbce66d4e50891f04d0a387cce282fe1e66199146a6a8fca"}, + {file = "numpy-2.2.0-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:6ab153263a7c5ccaf6dfe7e53447b74f77789f28ecb278c3b5d49db7ece10d6d"}, + {file = "numpy-2.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e500aba968a48e9019e42c0c199b7ec0696a97fa69037bea163b55398e390529"}, + {file = "numpy-2.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:440cfb3db4c5029775803794f8638fbdbf71ec702caf32735f53b008e1eaece3"}, + {file = "numpy-2.2.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a55dc7a7f0b6198b07ec0cd445fbb98b05234e8b00c5ac4874a63372ba98d4ab"}, + {file = "numpy-2.2.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4bddbaa30d78c86329b26bd6aaaea06b1e47444da99eddac7bf1e2fab717bd72"}, + {file = "numpy-2.2.0-cp313-cp313t-win32.whl", hash = "sha256:30bf971c12e4365153afb31fc73f441d4da157153f3400b82db32d04de1e4066"}, + {file = "numpy-2.2.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d35717333b39d1b6bb8433fa758a55f1081543de527171543a2b710551d40881"}, + {file = "numpy-2.2.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e12c6c1ce84628c52d6367863773f7c8c8241be554e8b79686e91a43f1733773"}, + {file = "numpy-2.2.0-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:b6207dc8fb3c8cb5668e885cef9ec7f70189bec4e276f0ff70d5aa078d32c88e"}, + {file = "numpy-2.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a50aeff71d0f97b6450d33940c7181b08be1441c6c193e678211bff11aa725e7"}, + {file = "numpy-2.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:df12a1f99b99f569a7c2ae59aa2d31724e8d835fc7f33e14f4792e3071d11221"}, + {file = "numpy-2.2.0.tar.gz", hash = "sha256:140dd80ff8981a583a60980be1a655068f8adebf7a45a06a6858c873fcdcd4a0"}, +] [[package]] name = "packaging" -version = "23.2" +version = "24.2" description = "Core utilities for Python packages" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, + {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, +] [[package]] name = "pint" -version = "0.18" +version = "0.24.4" description = "Physical quantities module" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" +files = [ + {file = "Pint-0.24.4-py3-none-any.whl", hash = "sha256:aa54926c8772159fcf65f82cc0d34de6768c151b32ad1deb0331291c38fe7659"}, + {file = "pint-0.24.4.tar.gz", hash = "sha256:35275439b574837a6cd3020a5a4a73645eb125ce4152a73a2f126bf164b91b80"}, +] [package.dependencies] -packaging = "*" +flexcache = ">=0.3" +flexparser = ">=0.4" +platformdirs = ">=2.1.0" +typing-extensions = ">=4.0.0" [package.extras] -numpy = ["numpy (>=1.17)"] -test = ["pytest", "pytest-cov", "pytest-mpl", "pytest-subtests"] -uncertainties = ["uncertainties (>=3.0)"] +babel = ["babel (<=2.8)"] +bench = ["pytest", "pytest-codspeed"] +dask = ["dask"] +mip = ["mip (>=1.13)"] +numpy = ["numpy (>=1.23)"] +pandas = ["pint-pandas (>=0.3)"] +test = ["pytest", "pytest-benchmark", "pytest-cov", "pytest-mpl", "pytest-subtests"] +testbase = ["pytest", "pytest-benchmark", "pytest-cov", "pytest-subtests"] +uncertainties = ["uncertainties (>=3.1.6)"] +xarray = ["xarray"] [[package]] 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" +version = "4.3.6" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" +files = [ + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, +] [package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] [[package]] name = "pluggy" -version = "1.3.0" +version = "1.5.0" description = "plugin and hook calling mechanisms for python" -category = "dev" optional = false python-versions = ">=3.8" +files = [ + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, +] [package.extras] dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] +[[package]] +name = "psychrolib" +version = "2.5.0" +description = "Library of psychrometric functions to calculate thermodynamic properties of air" +optional = false +python-versions = ">=3.6" +files = [ + {file = "PsychroLib-2.5.0.zip", hash = "sha256:b93a609ff691563b0087939252b34c24580af310a4ff140533b5532b80d5ffff"}, +] + [[package]] name = "py" version = "1.11.0" description = "library with cross-python path, ini-parsing, io, code, log facilities" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, + {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, +] [[package]] name = "pyinotify" version = "0.9.6" description = "Linux filesystem events monitoring" -category = "dev" optional = false python-versions = "*" +files = [ + {file = "pyinotify-0.9.6.tar.gz", hash = "sha256:9c998a5d7606ca835065cdabc013ae6c66eb9ea76a00a1e3bc6e0cfe2b4f71f4"}, +] [[package]] name = "pylint" version = "2.17.7" description = "python code static checker" -category = "dev" optional = false python-versions = ">=3.7.2" +files = [ + {file = "pylint-2.17.7-py3-none-any.whl", hash = "sha256:27a8d4c7ddc8c2f8c18aa0050148f89ffc09838142193fdbe98f172781a3ff87"}, + {file = "pylint-2.17.7.tar.gz", hash = "sha256:f4fcac7ae74cfe36bc8451e931d8438e4a476c20314b1101c458ad0f05191fad"}, +] [package.dependencies] astroid = ">=2.15.8,<=2.17.0-dev0" @@ -259,7 +569,6 @@ mccabe = ">=0.6,<0.8" platformdirs = ">=2.2.0" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} tomlkit = ">=0.10.1" -typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} [package.extras] spelling = ["pyenchant (>=3.2,<4.0)"] @@ -269,9 +578,12 @@ testutils = ["gitpython (>3)"] name = "pytest" version = "6.2.5" description = "pytest: simple powerful testing with Python" -category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"}, + {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"}, +] [package.dependencies] atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} @@ -288,481 +600,265 @@ testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xm [[package]] name = "pyyaml" -version = "6.0.1" +version = "6.0.2" description = "YAML parser and emitter for Python" -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" +files = [ + {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, + {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, + {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, + {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, + {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, + {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, + {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, + {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, + {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, + {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, + {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, + {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, + {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, +] [[package]] name = "scipy" -version = "1.11.4" +version = "1.14.1" description = "Fundamental algorithms for scientific computing in Python" -category = "main" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" +files = [ + {file = "scipy-1.14.1-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:b28d2ca4add7ac16ae8bb6632a3c86e4b9e4d52d3e34267f6e1b0c1f8d87e389"}, + {file = "scipy-1.14.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:d0d2821003174de06b69e58cef2316a6622b60ee613121199cb2852a873f8cf3"}, + {file = "scipy-1.14.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:8bddf15838ba768bb5f5083c1ea012d64c9a444e16192762bd858f1e126196d0"}, + {file = "scipy-1.14.1-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:97c5dddd5932bd2a1a31c927ba5e1463a53b87ca96b5c9bdf5dfd6096e27efc3"}, + {file = "scipy-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ff0a7e01e422c15739ecd64432743cf7aae2b03f3084288f399affcefe5222d"}, + {file = "scipy-1.14.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e32dced201274bf96899e6491d9ba3e9a5f6b336708656466ad0522d8528f69"}, + {file = "scipy-1.14.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8426251ad1e4ad903a4514712d2fa8fdd5382c978010d1c6f5f37ef286a713ad"}, + {file = "scipy-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:a49f6ed96f83966f576b33a44257d869756df6cf1ef4934f59dd58b25e0327e5"}, + {file = "scipy-1.14.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:2da0469a4ef0ecd3693761acbdc20f2fdeafb69e6819cc081308cc978153c675"}, + {file = "scipy-1.14.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:c0ee987efa6737242745f347835da2cc5bb9f1b42996a4d97d5c7ff7928cb6f2"}, + {file = "scipy-1.14.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3a1b111fac6baec1c1d92f27e76511c9e7218f1695d61b59e05e0fe04dc59617"}, + {file = "scipy-1.14.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:8475230e55549ab3f207bff11ebfc91c805dc3463ef62eda3ccf593254524ce8"}, + {file = "scipy-1.14.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:278266012eb69f4a720827bdd2dc54b2271c97d84255b2faaa8f161a158c3b37"}, + {file = "scipy-1.14.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fef8c87f8abfb884dac04e97824b61299880c43f4ce675dd2cbeadd3c9b466d2"}, + {file = "scipy-1.14.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b05d43735bb2f07d689f56f7b474788a13ed8adc484a85aa65c0fd931cf9ccd2"}, + {file = "scipy-1.14.1-cp311-cp311-win_amd64.whl", hash = "sha256:716e389b694c4bb564b4fc0c51bc84d381735e0d39d3f26ec1af2556ec6aad94"}, + {file = "scipy-1.14.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:631f07b3734d34aced009aaf6fedfd0eb3498a97e581c3b1e5f14a04164a456d"}, + {file = "scipy-1.14.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:af29a935803cc707ab2ed7791c44288a682f9c8107bc00f0eccc4f92c08d6e07"}, + {file = "scipy-1.14.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:2843f2d527d9eebec9a43e6b406fb7266f3af25a751aa91d62ff416f54170bc5"}, + {file = "scipy-1.14.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:eb58ca0abd96911932f688528977858681a59d61a7ce908ffd355957f7025cfc"}, + {file = "scipy-1.14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30ac8812c1d2aab7131a79ba62933a2a76f582d5dbbc695192453dae67ad6310"}, + {file = "scipy-1.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f9ea80f2e65bdaa0b7627fb00cbeb2daf163caa015e59b7516395fe3bd1e066"}, + {file = "scipy-1.14.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:edaf02b82cd7639db00dbff629995ef185c8df4c3ffa71a5562a595765a06ce1"}, + {file = "scipy-1.14.1-cp312-cp312-win_amd64.whl", hash = "sha256:2ff38e22128e6c03ff73b6bb0f85f897d2362f8c052e3b8ad00532198fbdae3f"}, + {file = "scipy-1.14.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1729560c906963fc8389f6aac023739ff3983e727b1a4d87696b7bf108316a79"}, + {file = "scipy-1.14.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:4079b90df244709e675cdc8b93bfd8a395d59af40b72e339c2287c91860deb8e"}, + {file = "scipy-1.14.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:e0cf28db0f24a38b2a0ca33a85a54852586e43cf6fd876365c86e0657cfe7d73"}, + {file = "scipy-1.14.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:0c2f95de3b04e26f5f3ad5bb05e74ba7f68b837133a4492414b3afd79dfe540e"}, + {file = "scipy-1.14.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b99722ea48b7ea25e8e015e8341ae74624f72e5f21fc2abd45f3a93266de4c5d"}, + {file = "scipy-1.14.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5149e3fd2d686e42144a093b206aef01932a0059c2a33ddfa67f5f035bdfe13e"}, + {file = "scipy-1.14.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e4f5a7c49323533f9103d4dacf4e4f07078f360743dec7f7596949149efeec06"}, + {file = "scipy-1.14.1-cp313-cp313-win_amd64.whl", hash = "sha256:baff393942b550823bfce952bb62270ee17504d02a1801d7fd0719534dfb9c84"}, + {file = "scipy-1.14.1.tar.gz", hash = "sha256:5a275584e726026a5699459aa72f828a610821006228e841b94275c4a7c08417"}, +] [package.dependencies] -numpy = ">=1.21.6,<1.28.0" +numpy = ">=1.23.5,<2.3" [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"] +dev = ["cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy (==1.10.0)", "pycodestyle", "pydevtool", "rich-click", "ruff (>=0.0.292)", "types-psutil", "typing_extensions"] +doc = ["jupyterlite-pyodide-kernel", "jupyterlite-sphinx (>=0.13.1)", "jupytext", "matplotlib (>=3.5)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (>=0.15.2)", "sphinx (>=5.0.0,<=7.3.7)", "sphinx-design (>=0.4.0)"] +test = ["Cython", "array-api-strict (>=2.0)", "asv", "gmpy2", "hypothesis (>=6.30)", "meson", "mpmath", "ninja", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] [[package]] name = "toml" version = "0.10.2" description = "Python Library for Tom's Obvious, Minimal Language" -category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, + {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, +] [[package]] name = "tomli" -version = "2.0.1" +version = "2.2.1" description = "A lil' TOML parser" -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, + {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"}, + {file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"}, + {file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"}, + {file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"}, + {file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"}, + {file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"}, + {file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"}, + {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, + {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, +] [[package]] name = "tomlkit" -version = "0.12.3" +version = "0.13.2" description = "Style preserving TOML library" -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "tomlkit-0.13.2-py3-none-any.whl", hash = "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde"}, + {file = "tomlkit-0.13.2.tar.gz", hash = "sha256:fff5fe59a87295b278abd31bec92c15d9bc4a06885ab12bcea52c71119392e79"}, +] [[package]] name = "typing-extensions" -version = "4.8.0" +version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" -category = "dev" optional = false python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, +] [[package]] name = "wrapt" -version = "1.16.0" +version = "1.17.0" description = "Module for decorators, wrappers and monkey patching." -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" +files = [ + {file = "wrapt-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2a0c23b8319848426f305f9cb0c98a6e32ee68a36264f45948ccf8e7d2b941f8"}, + {file = "wrapt-1.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1ca5f060e205f72bec57faae5bd817a1560fcfc4af03f414b08fa29106b7e2d"}, + {file = "wrapt-1.17.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e185ec6060e301a7e5f8461c86fb3640a7beb1a0f0208ffde7a65ec4074931df"}, + {file = "wrapt-1.17.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb90765dd91aed05b53cd7a87bd7f5c188fcd95960914bae0d32c5e7f899719d"}, + {file = "wrapt-1.17.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:879591c2b5ab0a7184258274c42a126b74a2c3d5a329df16d69f9cee07bba6ea"}, + {file = "wrapt-1.17.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fce6fee67c318fdfb7f285c29a82d84782ae2579c0e1b385b7f36c6e8074fffb"}, + {file = "wrapt-1.17.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0698d3a86f68abc894d537887b9bbf84d29bcfbc759e23f4644be27acf6da301"}, + {file = "wrapt-1.17.0-cp310-cp310-win32.whl", hash = "sha256:69d093792dc34a9c4c8a70e4973a3361c7a7578e9cd86961b2bbf38ca71e4e22"}, + {file = "wrapt-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:f28b29dc158ca5d6ac396c8e0a2ef45c4e97bb7e65522bfc04c989e6fe814575"}, + {file = "wrapt-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:74bf625b1b4caaa7bad51d9003f8b07a468a704e0644a700e936c357c17dd45a"}, + {file = "wrapt-1.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f2a28eb35cf99d5f5bd12f5dd44a0f41d206db226535b37b0c60e9da162c3ed"}, + {file = "wrapt-1.17.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:81b1289e99cf4bad07c23393ab447e5e96db0ab50974a280f7954b071d41b489"}, + {file = "wrapt-1.17.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f2939cd4a2a52ca32bc0b359015718472d7f6de870760342e7ba295be9ebaf9"}, + {file = "wrapt-1.17.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6a9653131bda68a1f029c52157fd81e11f07d485df55410401f745007bd6d339"}, + {file = "wrapt-1.17.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4e4b4385363de9052dac1a67bfb535c376f3d19c238b5f36bddc95efae15e12d"}, + {file = "wrapt-1.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bdf62d25234290db1837875d4dceb2151e4ea7f9fff2ed41c0fde23ed542eb5b"}, + {file = "wrapt-1.17.0-cp311-cp311-win32.whl", hash = "sha256:5d8fd17635b262448ab8f99230fe4dac991af1dabdbb92f7a70a6afac8a7e346"}, + {file = "wrapt-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:92a3d214d5e53cb1db8b015f30d544bc9d3f7179a05feb8f16df713cecc2620a"}, + {file = "wrapt-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:89fc28495896097622c3fc238915c79365dd0ede02f9a82ce436b13bd0ab7569"}, + {file = "wrapt-1.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:875d240fdbdbe9e11f9831901fb8719da0bd4e6131f83aa9f69b96d18fae7504"}, + {file = "wrapt-1.17.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5ed16d95fd142e9c72b6c10b06514ad30e846a0d0917ab406186541fe68b451"}, + {file = "wrapt-1.17.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18b956061b8db634120b58f668592a772e87e2e78bc1f6a906cfcaa0cc7991c1"}, + {file = "wrapt-1.17.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:daba396199399ccabafbfc509037ac635a6bc18510ad1add8fd16d4739cdd106"}, + {file = "wrapt-1.17.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4d63f4d446e10ad19ed01188d6c1e1bb134cde8c18b0aa2acfd973d41fcc5ada"}, + {file = "wrapt-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8a5e7cc39a45fc430af1aefc4d77ee6bad72c5bcdb1322cfde852c15192b8bd4"}, + {file = "wrapt-1.17.0-cp312-cp312-win32.whl", hash = "sha256:0a0a1a1ec28b641f2a3a2c35cbe86c00051c04fffcfcc577ffcdd707df3f8635"}, + {file = "wrapt-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:3c34f6896a01b84bab196f7119770fd8466c8ae3dfa73c59c0bb281e7b588ce7"}, + {file = "wrapt-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:714c12485aa52efbc0fc0ade1e9ab3a70343db82627f90f2ecbc898fdf0bb181"}, + {file = "wrapt-1.17.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da427d311782324a376cacb47c1a4adc43f99fd9d996ffc1b3e8529c4074d393"}, + {file = "wrapt-1.17.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba1739fb38441a27a676f4de4123d3e858e494fac05868b7a281c0a383c098f4"}, + {file = "wrapt-1.17.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e711fc1acc7468463bc084d1b68561e40d1eaa135d8c509a65dd534403d83d7b"}, + {file = "wrapt-1.17.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:140ea00c87fafc42739bd74a94a5a9003f8e72c27c47cd4f61d8e05e6dec8721"}, + {file = "wrapt-1.17.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:73a96fd11d2b2e77d623a7f26e004cc31f131a365add1ce1ce9a19e55a1eef90"}, + {file = "wrapt-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0b48554952f0f387984da81ccfa73b62e52817a4386d070c75e4db7d43a28c4a"}, + {file = "wrapt-1.17.0-cp313-cp313-win32.whl", hash = "sha256:498fec8da10e3e62edd1e7368f4b24aa362ac0ad931e678332d1b209aec93045"}, + {file = "wrapt-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:fd136bb85f4568fffca995bd3c8d52080b1e5b225dbf1c2b17b66b4c5fa02838"}, + {file = "wrapt-1.17.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:17fcf043d0b4724858f25b8826c36e08f9fb2e475410bece0ec44a22d533da9b"}, + {file = "wrapt-1.17.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4a557d97f12813dc5e18dad9fa765ae44ddd56a672bb5de4825527c847d6379"}, + {file = "wrapt-1.17.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0229b247b0fc7dee0d36176cbb79dbaf2a9eb7ecc50ec3121f40ef443155fb1d"}, + {file = "wrapt-1.17.0-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8425cfce27b8b20c9b89d77fb50e368d8306a90bf2b6eef2cdf5cd5083adf83f"}, + {file = "wrapt-1.17.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9c900108df470060174108012de06d45f514aa4ec21a191e7ab42988ff42a86c"}, + {file = "wrapt-1.17.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:4e547b447073fc0dbfcbff15154c1be8823d10dab4ad401bdb1575e3fdedff1b"}, + {file = "wrapt-1.17.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:914f66f3b6fc7b915d46c1cc424bc2441841083de01b90f9e81109c9759e43ab"}, + {file = "wrapt-1.17.0-cp313-cp313t-win32.whl", hash = "sha256:a4192b45dff127c7d69b3bdfb4d3e47b64179a0b9900b6351859f3001397dabf"}, + {file = "wrapt-1.17.0-cp313-cp313t-win_amd64.whl", hash = "sha256:4f643df3d4419ea3f856c5c3f40fec1d65ea2e89ec812c83f7767c8730f9827a"}, + {file = "wrapt-1.17.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:69c40d4655e078ede067a7095544bcec5a963566e17503e75a3a3e0fe2803b13"}, + {file = "wrapt-1.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f495b6754358979379f84534f8dd7a43ff8cff2558dcdea4a148a6e713a758f"}, + {file = "wrapt-1.17.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:baa7ef4e0886a6f482e00d1d5bcd37c201b383f1d314643dfb0367169f94f04c"}, + {file = "wrapt-1.17.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8fc931382e56627ec4acb01e09ce66e5c03c384ca52606111cee50d931a342d"}, + {file = "wrapt-1.17.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:8f8909cdb9f1b237786c09a810e24ee5e15ef17019f7cecb207ce205b9b5fcce"}, + {file = "wrapt-1.17.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ad47b095f0bdc5585bced35bd088cbfe4177236c7df9984b3cc46b391cc60627"}, + {file = "wrapt-1.17.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:948a9bd0fb2c5120457b07e59c8d7210cbc8703243225dbd78f4dfc13c8d2d1f"}, + {file = "wrapt-1.17.0-cp38-cp38-win32.whl", hash = "sha256:5ae271862b2142f4bc687bdbfcc942e2473a89999a54231aa1c2c676e28f29ea"}, + {file = "wrapt-1.17.0-cp38-cp38-win_amd64.whl", hash = "sha256:f335579a1b485c834849e9075191c9898e0731af45705c2ebf70e0cd5d58beed"}, + {file = "wrapt-1.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d751300b94e35b6016d4b1e7d0e7bbc3b5e1751e2405ef908316c2a9024008a1"}, + {file = "wrapt-1.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7264cbb4a18dc4acfd73b63e4bcfec9c9802614572025bdd44d0721983fc1d9c"}, + {file = "wrapt-1.17.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33539c6f5b96cf0b1105a0ff4cf5db9332e773bb521cc804a90e58dc49b10578"}, + {file = "wrapt-1.17.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c30970bdee1cad6a8da2044febd824ef6dc4cc0b19e39af3085c763fdec7de33"}, + {file = "wrapt-1.17.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:bc7f729a72b16ee21795a943f85c6244971724819819a41ddbaeb691b2dd85ad"}, + {file = "wrapt-1.17.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:6ff02a91c4fc9b6a94e1c9c20f62ea06a7e375f42fe57587f004d1078ac86ca9"}, + {file = "wrapt-1.17.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2dfb7cff84e72e7bf975b06b4989477873dcf160b2fd89959c629535df53d4e0"}, + {file = "wrapt-1.17.0-cp39-cp39-win32.whl", hash = "sha256:2399408ac33ffd5b200480ee858baa58d77dd30e0dd0cab6a8a9547135f30a88"}, + {file = "wrapt-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:4f763a29ee6a20c529496a20a7bcb16a73de27f5da6a843249c7047daf135977"}, + {file = "wrapt-1.17.0-py3-none-any.whl", hash = "sha256:d2c63b93548eda58abf5188e505ffed0229bf675f7c3090f8e36ad55b8cbc371"}, + {file = "wrapt-1.17.0.tar.gz", hash = "sha256:16187aa2317c731170a88ef35e8937ae0f533c402872c1ee5e6d079fcf320801"}, +] [metadata] -lock-version = "1.1" -python-versions = "^3.9" -content-hash = "3acb2f646974c9eed8bde491f9dc5ff668178ff146a21bd4814ce7c352d7f724" - -[metadata.files] -astroid = [ - {file = "astroid-2.15.8-py3-none-any.whl", hash = "sha256:1aa149fc5c6589e3d0ece885b4491acd80af4f087baafa3fb5203b113e68cd3c"}, - {file = "astroid-2.15.8.tar.gz", hash = "sha256:6c107453dffee9055899705de3c9ead36e74119cee151e5a9aaf7f0b0e020a6a"}, -] -atomicwrites = [ - {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"}, -] -attrs = [ - {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"}, - {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"}, -] -cbor2 = [ - {file = "cbor2-5.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:37ba4f719384bd4ea317e92a8763ea343e205f3112c8241778fd9dbc64ae1498"}, - {file = "cbor2-5.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:425ae919120b9d05b4794b3e5faf6584fc47a9d61db059d4f00ce16ae93a3f63"}, - {file = "cbor2-5.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c511ff6356d6f4292ced856d5048a24ee61a85634816f29dadf1f089e8cb4f9"}, - {file = "cbor2-5.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6ab54a9282dd99a3a70d0f64706d3b3592e7920564a93101caa74dec322346c"}, - {file = "cbor2-5.5.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:39d94852dd61bda5b3d2bfe74e7b194a7199937d270f90099beec3e7584f0c9b"}, - {file = "cbor2-5.5.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:65532ba929beebe1c63317ad00c79d4936b60a5c29a3c329d2aa7df4e72ad907"}, - {file = "cbor2-5.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:1206180f66a9ad23e692cf457610c877f186ad303a1264b6c5335015b7bee83e"}, - {file = "cbor2-5.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:42155a20be46312fad2ceb85a408e2d90da059c2d36a65e0b99abca57c5357fd"}, - {file = "cbor2-5.5.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6f3827ae14c009df9b37790f1da5cd1f9d64f7ffec472a49ebf865c0af6b77e9"}, - {file = "cbor2-5.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4bfa417dbb8b4581ad3c2312469899518596551cfb0fe5bdaf8a6921cff69d7e"}, - {file = "cbor2-5.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3317e7dfb4f3180be90bcd853204558d89f119b624c2168153b53dea305e79d"}, - {file = "cbor2-5.5.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a5770bdf4340de55679efe6c38fc6d64529fda547e7a85eb0217a82717a8235"}, - {file = "cbor2-5.5.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b5d53826ad0c92fcb004b2a475896610b51e0ca010f6c37d762aae44ab0807b2"}, - {file = "cbor2-5.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:dc77cac985f7f7a20f2d8b1957d1e79393d7df823f61c7c6173d3a0011c1d770"}, - {file = "cbor2-5.5.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9e45d5aa8e484b4bf57240d8e7949389f1c9d4073758abb30954386321b55c9d"}, - {file = "cbor2-5.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:93b949a66bec40dd0ca87a6d026136fea2cf1660120f921199a47ac8027af253"}, - {file = "cbor2-5.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93d601ca92d917f769370a5e6c3ead62dca6451b2b603915e4fcf300083b9fcd"}, - {file = "cbor2-5.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a11876abd50b9f70d114fcdbb0b5a3249ccd7d321465f0350028fd6d2317e114"}, - {file = "cbor2-5.5.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fd77c558decdba2a2a7a463e6346d53781d2163bacf205f77b999f561ba4ac73"}, - {file = "cbor2-5.5.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efb81920d80410b8e80a4a6a8b06ec9b766be0ae7f3029af8ae4b30914edcfa3"}, - {file = "cbor2-5.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:4bb35f3b1ebd4b7b37628f0cd5c839f3008dec669194a2a4a33d91bab7f8663b"}, - {file = "cbor2-5.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f41e4a439f642954ed728dc18915098b5f2ebec7029eaebe52c06c52b6a9a63a"}, - {file = "cbor2-5.5.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4eae4d56314f22920a28bf7affefdfc918646877ce3b16220dc6cf38a584aa41"}, - {file = "cbor2-5.5.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:559a0c1ec8dcedd6142b81727403e0f5a2e8f4c18e8bb3c548107ec39af4e9cb"}, - {file = "cbor2-5.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:537da7bfee97ee44a11b300c034c18e674af6a5dc4718a6fba141037f099c7ec"}, - {file = "cbor2-5.5.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5c99fd8bbc6bbf3bf4d6b2996594ae633b778b27b0531559487950762c4e1e3f"}, - {file = "cbor2-5.5.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4ee46e6dbc8e2cf302a022fec513d57dba65e9d5ec495bcd1ad97a5dbdbab249"}, - {file = "cbor2-5.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:67e2be461320197495fff55f250b111d4125a0a2d02e6256e41f8598adc3ad3f"}, - {file = "cbor2-5.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4384a56afef0b908b61c8ea3cca3e257a316427ace3411308f51ee301b23adf9"}, - {file = "cbor2-5.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8cc64acc606b7f2a4b673a1d6cde5a9cb1860a6ce27b353e269c9535efbd62c"}, - {file = "cbor2-5.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50019fea3cb07fa9b2b53772a52b4243e87de232591570c4c272b3ebdb419493"}, - {file = "cbor2-5.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a18be0af9241883bc67a036c1f33e3f9956d31337ccd412194bf759bc1095e03"}, - {file = "cbor2-5.5.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:60e7e0073291096605de27de3ce006148cf9a095199160439555f14f93d044d5"}, - {file = "cbor2-5.5.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:41f7501338228b27dac88c1197928cf8985f6fc775f59be89c6fdaddb4e69658"}, - {file = "cbor2-5.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:c85ab7697252af2240e939707c935ea18081ccb580d4b5b9a94b04148ab2c32b"}, - {file = "cbor2-5.5.1-py3-none-any.whl", hash = "sha256:dca639c8ff81b9f0c92faf97324adfdbfb5c2a5bb97f249606c6f5b94c77cc0d"}, - {file = "cbor2-5.5.1.tar.gz", hash = "sha256:f9e192f461a9f8f6082df28c035b006d153904213dc8640bed8a72d72bbc9475"}, -] -click = [ - {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, - {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, -] -cloudpickle = [ - {file = "cloudpickle-3.0.0-py3-none-any.whl", hash = "sha256:246ee7d0c295602a036e86369c77fecda4ab17b506496730f2f576d9016fd9c7"}, - {file = "cloudpickle-3.0.0.tar.gz", hash = "sha256:996d9a482c6fb4f33c1a35335cf8afd065d2a56e973270364840712d9131a882"}, -] -colorama = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] -coolprop = [ - {file = "CoolProp-6.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e628b334548f5eaf7d7508b673d3a1bcf61c8691c0d020057eb0c9f842e8b702"}, - {file = "CoolProp-6.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8245dd194a8f0946d03f6d0bd62e143c7cb3dbf0c10c49879a888cb275e8038f"}, - {file = "CoolProp-6.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f79733ae173f095670d94d7faf2ecbbea21da76775c803fc3332e0ed22e2ef66"}, - {file = "CoolProp-6.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18e401b2e7fa3fd03dcfdd3e2d8c782656d359031a51add7ebe4c5545a0b098a"}, - {file = "CoolProp-6.6.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d23642e904377984b6d6bacb428890bb89bd8a78a0496b8559b698ca2e001f23"}, - {file = "CoolProp-6.6.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d32580510054c4ba5c14d9dc0eeda77b5c0dc263b0cc153de7dff9b9de77e28b"}, - {file = "CoolProp-6.6.0-cp310-cp310-win32.whl", hash = "sha256:1febe6ebdb340635bf6c1bb58678fe7edb93c9698e605c3975e1c4749646ee34"}, - {file = "CoolProp-6.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:0bb213ea8d9f509ae0d4c0009dffbda2f52f370eac3b4576c974188f1cd3ced1"}, - {file = "CoolProp-6.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cfe23e785e27ac4d12e0b13708a8bdc087caee8133fa0840509efaaf1ad311ba"}, - {file = "CoolProp-6.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f374a948bc42babdf644f912958c79effa8ccc4f3f461a0f822715dcdf819c6b"}, - {file = "CoolProp-6.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b43e70dfd9825a4de138ce76365978e24532711fb2f4781dacf2b92b96985ed"}, - {file = "CoolProp-6.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c46edd2dad3b99402ad2bff227a53182e0aba954847cac12686e78abd37ae1d"}, - {file = "CoolProp-6.6.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b83370f50f85cf80ad6c010175b99d6ed7485e647ab70ca85772fecebdcfce86"}, - {file = "CoolProp-6.6.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9bf37b539640e787250075e9042590f89bf83a1859c62d1695d2269d95fe7cff"}, - {file = "CoolProp-6.6.0-cp311-cp311-win32.whl", hash = "sha256:7b72406779cb17b4197d8bfbb90601f60a5ebb44b8c0c5882e8353021163783a"}, - {file = "CoolProp-6.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:b22c30a23603ce3df88a18a445fad14f93fd9757720f43d3b8041549e93c4b93"}, - {file = "CoolProp-6.6.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:2f738c22f4c81d7bc91567fe101502c5106cefc98a9afe884be72cf6908b3b7f"}, - {file = "CoolProp-6.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e2ef2de94f51ec8f095fe772cdb22593245feeb7df76d3616eb19c5da1d4ac7f"}, - {file = "CoolProp-6.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f3de22cfbdb31e9a2f19aefb8074c25c57abba7ba6302eb331694e7bcc4b11"}, - {file = "CoolProp-6.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50f3339c3d590d2c86f9f2c055b9423001653344958000b8dcf7655710a5adee"}, - {file = "CoolProp-6.6.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c556df424dcf93ce2e4b41f1f52537b94050ddf595df67eb7a76a1dd0d92263e"}, - {file = "CoolProp-6.6.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:75dd59ea068a6385977815b0572dd824f8cb932a97432737392e3aba11782210"}, - {file = "CoolProp-6.6.0-cp312-cp312-win32.whl", hash = "sha256:bfc5729c00376c00b33538d4685f4243ea43e69d618f2edd31729003a0fb1440"}, - {file = "CoolProp-6.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:809a8572515009a42386ce7381f7d11fd5c785657637cb402f722edf266a6fb3"}, - {file = "CoolProp-6.6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:6c11811e6730dda4c69fc3765e57697ee9390d9266fc7d0e3a40bfc841783b6c"}, - {file = "CoolProp-6.6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:addd2a7ae804e5bce85bdd3747fbea6c654fdb10b88212845b894c936a5162c9"}, - {file = "CoolProp-6.6.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f90c573ea9ebaffd85613322e8d8e1574268a4e12eca685742afbf5487cf3e37"}, - {file = "CoolProp-6.6.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:483babcc2cf2b3ce7761b3e8639e49700ff73828270956937b4e99451ad04476"}, - {file = "CoolProp-6.6.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:936bc62c1b33d6322b1b589f824284552e5654abc2c86d91313a952fca378fc9"}, - {file = "CoolProp-6.6.0-cp36-cp36m-win32.whl", hash = "sha256:efd4ec19f566aee8b119b2f9c6c91969e131baef0e2315fb1d66bd4b56edc1d5"}, - {file = "CoolProp-6.6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:19cf50201ec36037ef402749bf67bd47eb6f68809c61ce4259d6703898876355"}, - {file = "CoolProp-6.6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:60ff433382c801a8d473be57903adbd9957549adff189598ad65e8040626218b"}, - {file = "CoolProp-6.6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57b7e46d3d60962afe2deec068b042e4257e579b2a0d710202d2c2b2186eb2b3"}, - {file = "CoolProp-6.6.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1f4fe22c62fbc269d1aeee705a7dec23066a683b5615789020974504b76a520"}, - {file = "CoolProp-6.6.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c80fec6127bf9e18174609a4f117ec591e47a04e87e31f271e7d6e2daa4a81b7"}, - {file = "CoolProp-6.6.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e40acd6124d217881717fdd3218ef57d832cd010b22f40637d0f2330fdd0c330"}, - {file = "CoolProp-6.6.0-cp37-cp37m-win32.whl", hash = "sha256:8ba5530b8ca15d0715f86b397e0dc5b1dcc993bcc59175c5e54e27a9bbf4842e"}, - {file = "CoolProp-6.6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:60ff22a0969dd6a163ef29fd62f62c72e00bfc80731f4c10b2c89e409a294de9"}, - {file = "CoolProp-6.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7b79982edf62364a4c710ef6804a6b2946696bd95a789e2616dcee741a80f7b1"}, - {file = "CoolProp-6.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c9c081df57cda0e156e78c40fde9d83fd3f1aa262ed74dc70a2ea8fdb816ac70"}, - {file = "CoolProp-6.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15f781be1e761002e95d3de3ac7a02a8ed81adbaa9915ec9942a0575c2cde15d"}, - {file = "CoolProp-6.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25a1117d8229a8d612a3a9ca18a3d994bc2e134de52bf9efb05530219ae19339"}, - {file = "CoolProp-6.6.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:fbe7d8ec427e30a0e95716a77406da4fd7d1299e84f00cca228fa2f7a5ae4ec6"}, - {file = "CoolProp-6.6.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:96065c6c3f17b9b9eeec9620369ffab3047de747c2967db9598f20b56d0cdf2c"}, - {file = "CoolProp-6.6.0-cp38-cp38-win32.whl", hash = "sha256:d02d8ddf1e7af355a334323cc649a391b8c457993631665242d700875b6f7887"}, - {file = "CoolProp-6.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:10b4fd508dc85e2045cf02f5a8ba55c6c5ac9d4ebefbe7940dbc33fe4b392127"}, - {file = "CoolProp-6.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:647102f943d449294e67a89c6f23cf8e59c3763880cc2c7642de21dca2c53631"}, - {file = "CoolProp-6.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b0df572addaf43679f986d76a3cdbe4d4cbd6f4ffe89f1d63be3bd8be38c9212"}, - {file = "CoolProp-6.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c41db6c9172d0ae79e2b3b74aab0e63edeabab999c9dd6a3ca8a0df63f8bfc0"}, - {file = "CoolProp-6.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a994a909a8950170e55a5dce831e2b7b5b6f7cb66a3b49f1afdb04e43b35f42"}, - {file = "CoolProp-6.6.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:09437ff654af822caf8c904bb2882844a1d7ddffa19c9c9c4c3ef9e9a0f50be1"}, - {file = "CoolProp-6.6.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9aa70af252e973f8e1e87cd6ab41b94aa4d563906c57b41c170a9d3cae854797"}, - {file = "CoolProp-6.6.0-cp39-cp39-win32.whl", hash = "sha256:dff965f4e44d3af623a02c8bd55f9887daf21990a3f3f1f4bfc46e462106b9fd"}, - {file = "CoolProp-6.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:bb0ace860286cf2f9346e98a07bc8fc4ca55cf17ee0b1972a5b72a8bfb2716ac"}, - {file = "CoolProp-6.6.0.tar.gz", hash = "sha256:cf6fad704b3ae00f4df309cfd1e2ee48d155886b569a73f2cc38a57eda463082"}, -] -dill = [ - {file = "dill-0.3.7-py3-none-any.whl", hash = "sha256:76b122c08ef4ce2eedcd4d1abd8e641114bfc6c2867f49f3c41facf65bf19f5e"}, - {file = "dill-0.3.7.tar.gz", hash = "sha256:cc1c8b182eb3013e24bd475ff2e9295af86c1a38eb1aff128dac8962a9ce3c03"}, -] -doit = [ - {file = "doit-0.33.1-py3-none-any.whl", hash = "sha256:211fc0de3fd9ee31e5c4ccb36bc1a4054b5c4a4a44f915ca413896155b684bfa"}, - {file = "doit-0.33.1.tar.gz", hash = "sha256:37c3b35c2151647b968b2af24481112b2f813c30f695366db0639d529190a143"}, -] -iniconfig = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, -] -isort = [ - {file = "isort-5.12.0-py3-none-any.whl", hash = "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6"}, - {file = "isort-5.12.0.tar.gz", hash = "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504"}, -] -koozie = [ - {file = "koozie-1.1.0-py3-none-any.whl", hash = "sha256:a35c0a3763cd51addbdca10b5374f74d10af4300acf79185ee795b5a414c67dc"}, - {file = "koozie-1.1.0.tar.gz", hash = "sha256:5813bf992196d4dc1f9ace9a972a1ca70b59f21833fabb368a8765d32c3e5a51"}, -] -lazy-object-proxy = [ - {file = "lazy-object-proxy-1.9.0.tar.gz", hash = "sha256:659fb5809fa4629b8a1ac5106f669cfc7bef26fbb389dda53b3e010d1ac4ebae"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b40387277b0ed2d0602b8293b94d7257e17d1479e257b4de114ea11a8cb7f2d7"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8c6cfb338b133fbdbc5cfaa10fe3c6aeea827db80c978dbd13bc9dd8526b7d4"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:721532711daa7db0d8b779b0bb0318fa87af1c10d7fe5e52ef30f8eff254d0cd"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:66a3de4a3ec06cd8af3f61b8e1ec67614fbb7c995d02fa224813cb7afefee701"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1aa3de4088c89a1b69f8ec0dcc169aa725b0ff017899ac568fe44ddc1396df46"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-win32.whl", hash = "sha256:f0705c376533ed2a9e5e97aacdbfe04cecd71e0aa84c7c0595d02ef93b6e4455"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:ea806fd4c37bf7e7ad82537b0757999264d5f70c45468447bb2b91afdbe73a6e"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:946d27deaff6cf8452ed0dba83ba38839a87f4f7a9732e8f9fd4107b21e6ff07"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79a31b086e7e68b24b99b23d57723ef7e2c6d81ed21007b6281ebcd1688acb0a"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f699ac1c768270c9e384e4cbd268d6e67aebcfae6cd623b4d7c3bfde5a35db59"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bfb38f9ffb53b942f2b5954e0f610f1e721ccebe9cce9025a38c8ccf4a5183a4"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:189bbd5d41ae7a498397287c408617fe5c48633e7755287b21d741f7db2706a9"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-win32.whl", hash = "sha256:81fc4d08b062b535d95c9ea70dbe8a335c45c04029878e62d744bdced5141586"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:f2457189d8257dd41ae9b434ba33298aec198e30adf2dcdaaa3a28b9994f6adb"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d9e25ef10a39e8afe59a5c348a4dbf29b4868ab76269f81ce1674494e2565a6e"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cbf9b082426036e19c6924a9ce90c740a9861e2bdc27a4834fd0a910742ac1e8"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f5fa4a61ce2438267163891961cfd5e32ec97a2c444e5b842d574251ade27d2"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8fa02eaab317b1e9e03f69aab1f91e120e7899b392c4fc19807a8278a07a97e8"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e7c21c95cae3c05c14aafffe2865bbd5e377cfc1348c4f7751d9dc9a48ca4bda"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win32.whl", hash = "sha256:f12ad7126ae0c98d601a7ee504c1122bcef553d1d5e0c3bfa77b16b3968d2734"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:edd20c5a55acb67c7ed471fa2b5fb66cb17f61430b7a6b9c3b4a1e40293b1671"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d0daa332786cf3bb49e10dc6a17a52f6a8f9601b4cf5c295a4f85854d61de63"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cd077f3d04a58e83d04b20e334f678c2b0ff9879b9375ed107d5d07ff160171"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:660c94ea760b3ce47d1855a30984c78327500493d396eac4dfd8bd82041b22be"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:212774e4dfa851e74d393a2370871e174d7ff0ebc980907723bb67d25c8a7c30"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f0117049dd1d5635bbff65444496c90e0baa48ea405125c088e93d9cf4525b11"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-win32.whl", hash = "sha256:0a891e4e41b54fd5b8313b96399f8b0e173bbbfc03c7631f01efbe29bb0bcf82"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:9990d8e71b9f6488e91ad25f322898c136b008d87bf852ff65391b004da5e17b"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9e7551208b2aded9c1447453ee366f1c4070602b3d932ace044715d89666899b"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f83ac4d83ef0ab017683d715ed356e30dd48a93746309c8f3517e1287523ef4"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7322c3d6f1766d4ef1e51a465f47955f1e8123caee67dd641e67d539a534d006"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:18b78ec83edbbeb69efdc0e9c1cb41a3b1b1ed11ddd8ded602464c3fc6020494"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:09763491ce220c0299688940f8dc2c5d05fd1f45af1e42e636b2e8b2303e4382"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-win32.whl", hash = "sha256:9090d8e53235aa280fc9239a86ae3ea8ac58eff66a705fa6aa2ec4968b95c821"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:db1c1722726f47e10e0b5fdbf15ac3b8adb58c091d12b3ab713965795036985f"}, -] -macfsevents = [ - {file = "MacFSEvents-0.8.4.tar.gz", hash = "sha256:bf7283f1d517764ccdc8195b21631dbbac1c506b920bf9a8ea2956b3127651cb"}, -] -mccabe = [ - {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, - {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, -] -numpy = [ - {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"}, -] -packaging = [ - {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, - {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, -] -pint = [ - {file = "Pint-0.18-py2.py3-none-any.whl", hash = "sha256:4b37f3c470639ea6f96b0026c3364bde30631fa737092bdaf18ad3f4f76f252f"}, - {file = "Pint-0.18.tar.gz", hash = "sha256:8c4bce884c269051feb7abc69dbfd18403c0c764abc83da132e8a7222f8ba801"}, -] -platformdirs = [ - {file = "platformdirs-4.1.0-py3-none-any.whl", hash = "sha256:11c8f37bcca40db96d8144522d925583bdb7a31f7b0e37e3ed4318400a8e2380"}, - {file = "platformdirs-4.1.0.tar.gz", hash = "sha256:906d548203468492d432bcb294d4bc2fff751bf84971fbb2c10918cc206ee420"}, -] -pluggy = [ - {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"}, - {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"}, -] -py = [ - {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, - {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, -] -pyinotify = [ - {file = "pyinotify-0.9.6.tar.gz", hash = "sha256:9c998a5d7606ca835065cdabc013ae6c66eb9ea76a00a1e3bc6e0cfe2b4f71f4"}, -] -pylint = [ - {file = "pylint-2.17.7-py3-none-any.whl", hash = "sha256:27a8d4c7ddc8c2f8c18aa0050148f89ffc09838142193fdbe98f172781a3ff87"}, - {file = "pylint-2.17.7.tar.gz", hash = "sha256:f4fcac7ae74cfe36bc8451e931d8438e4a476c20314b1101c458ad0f05191fad"}, -] -pytest = [ - {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"}, - {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"}, -] -pyyaml = [ - {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, - {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, - {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, - {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, - {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, - {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, - {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, - {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, - {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, - {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, - {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, - {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, - {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, - {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, - {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, - {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, - {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, - {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, - {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, - {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, -] -scipy = [ - {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"}, -] -toml = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, -] -tomli = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, -] -tomlkit = [ - {file = "tomlkit-0.12.3-py3-none-any.whl", hash = "sha256:b0a645a9156dc7cb5d3a1f0d4bab66db287fcb8e0430bdd4664a095ea16414ba"}, - {file = "tomlkit-0.12.3.tar.gz", hash = "sha256:75baf5012d06501f07bee5bf8e801b9f343e7aac5a92581f20f80ce632e6b5a4"}, -] -typing-extensions = [ - {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"}, - {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"}, -] -wrapt = [ - {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, - {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, - {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, - {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, - {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, - {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, - {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, - {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, - {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, - {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, - {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, - {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, - {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, - {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, - {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, - {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, - {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, - {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, -] +lock-version = "2.0" +python-versions = "^3.10" +content-hash = "8df5b2cb55fdb32da7b79ef0e06f64fb84d06885fb1a637e8fee52dd58242e39" diff --git a/pyproject.toml b/pyproject.toml index 1cec788..6ce11a8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,10 +5,11 @@ description = "" authors = ["Big Ladder Software"] [tool.poetry.dependencies] -python = "^3.9" -koozie = "^1.1.0" +python = "^3.10" +koozie = {path = "../koozie", develop = true} #"^1.2.3" CoolProp = "^6.6.0" scipy = "^1.11.4" +PsychroLib = "^2.5.0" [tool.poetry.dev-dependencies] pytest = "^6.2.2" From 4d6c50e62ebc073bbdd4d1f8d71e95100d766f45 Mon Sep 17 00:00:00 2001 From: Neal Kruis Date: Thu, 19 Dec 2024 10:47:21 -0700 Subject: [PATCH 2/9] Add changes missed in last commit. --- chiller/chiller.py | 26 ++------------------------ 1 file changed, 2 insertions(+), 24 deletions(-) diff --git a/chiller/chiller.py b/chiller/chiller.py index 653b6e1..4b22fcf 100644 --- a/chiller/chiller.py +++ b/chiller/chiller.py @@ -21,13 +21,6 @@ class CondenserType(Enum): EVAPORATIVE = 3 -condenser_type_text = { - CondenserType.LIQUID: "liquid-cooled", - CondenserType.AIR: "air-cooled", - CondenserType.EVAPORATIVE: "evaporatively-cooled", -} - - class CompressorType(Enum): UNKNOWN = 0 CENTRIFUGAL = 1 @@ -36,23 +29,6 @@ class CompressorType(Enum): SCROLL = 4 -compressor_type_map = { - CompressorType.UNKNOWN: None, - CompressorType.CENTRIFUGAL: "CENTRIFUGAL", - CompressorType.POSITIVE_DISPLACEMENT: "SCROLL", - CompressorType.SCREW: "SCREW", - CompressorType.SCROLL: "SCROLL", -} - -compressor_type_text = { - CompressorType.UNKNOWN: "", - CompressorType.CENTRIFUGAL: "centrifugal", - CompressorType.POSITIVE_DISPLACEMENT: "positive displacement", - CompressorType.SCREW: "screw", - CompressorType.SCROLL: "scroll", -} - - class ChillerMetadata: def __init__( self, @@ -73,6 +49,8 @@ def __init__( class Chiller: + DEFAULT_CONDENSER_TEMPERATURE_RANGE: tuple[float, float] + def __init__( self, rated_net_evaporator_capacity=fr_u(100.0, "ton_ref"), From ed2ff0ff41558b198a9b5e683fdbb52aae1beea1 Mon Sep 17 00:00:00 2001 From: Neal Kruis Date: Thu, 19 Dec 2024 12:26:25 -0700 Subject: [PATCH 3/9] Update data versions and range assumptions. --- chiller/chiller.py | 19 ++++++++++--------- examples/baseline_chillers.py | 2 +- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/chiller/chiller.py b/chiller/chiller.py index 4b22fcf..c812245 100644 --- a/chiller/chiller.py +++ b/chiller/chiller.py @@ -60,8 +60,8 @@ def __init__( rated_net_condenser_capacity=None, number_of_compressor_speeds=None, evaporator_leaving_temperature_range=( - fr_u(39.0, "°F"), # fr_u(36.0, "°F"), - fr_u(60.0, "°F"), # fr_u(70.0, "°F"), + fr_u(36.0, "°F"), + fr_u(70.0, "°F"), ), # AHRI 550/590 2023 Table 5 condenser_entering_temperature_range=None, condenser_type=CondenserType.LIQUID, @@ -86,8 +86,6 @@ def __init__( self.metadata = ChillerMetadata() - # TODO: Apply pressure corrections per 550/590 Appendix C - def net_evaporator_capacity(self, conditions): raise NotImplementedError() @@ -150,7 +148,7 @@ def generate_205_representation( metadata = { "data_model": "ASHRAE_205", "schema": "RS0001", - "schema_version": "2.0.0", + "schema_version": "3.0.0", "description": self.metadata.description, "id": unique_id, "data_timestamp": f"{timestamp}Z", @@ -280,8 +278,8 @@ def make_performance_map(self): class LiquidCooledChiller(Chiller): DEFAULT_CONDENSER_TEMPERATURE_RANGE = ( fr_u(55.0, "degF"), - fr_u(104.0, "degF"), - ) # (fr_u(55.0, "degF"), fr_u(115.0, "degF")) # AHRI 550/590 2023 Table 5 + fr_u(115.0, "degF"), + ) # AHRI 550/590 2023 Table 5 def __init__( self, @@ -445,10 +443,13 @@ def make_performance_map(self) -> dict: class AirCooledChiller(Chiller): + + # TODO: Apply pressure corrections per 550/590 Appendix C + DEFAULT_CONDENSER_TEMPERATURE_RANGE = ( fr_u(55.0, "degF"), - fr_u(104.0, "degF"), - ) # (fr_u(55.0, "degF"), fr_u(115.0, "degF")) # AHRI 550/590 2023 Table 5 + fr_u(125.6, "degF"), + ) # AHRI 550/590 2023 Table 5 def make_performance_map(self) -> dict: # Create conditions diff --git a/examples/baseline_chillers.py b/examples/baseline_chillers.py index 70db0b9..ea2e346 100644 --- a/examples/baseline_chillers.py +++ b/examples/baseline_chillers.py @@ -60,7 +60,7 @@ < 0.01 * size ) - new_chiller.metadata.data_version = 2 # TODO: Update when necessary + new_chiller.metadata.data_version = 3 # TODO: Update when necessary unique_characteristics = ( chiller.set_name, new_chiller.rated_net_evaporator_capacity, From fc4a933e485e10eff56bad5176fe99dd48f1253b Mon Sep 17 00:00:00 2001 From: Neal Kruis Date: Fri, 20 Dec 2024 15:40:31 -0700 Subject: [PATCH 4/9] Finish air-cooled example generation. --- chiller/chiller.py | 299 ++++++++++++++-------- chiller/conditions.py | 13 +- chiller/fluid_properties.py | 269 ++++++++++++++++--- chiller/models/ashrae_90_1.py | 19 +- chiller/models/energyplus_eir.py | 63 ++++- chiller/models/energyplus_reformulated.py | 4 +- chiller/psychrometrics.py | 130 ---------- examples/baseline_chillers.py | 71 +++-- 8 files changed, 533 insertions(+), 335 deletions(-) delete mode 100644 chiller/psychrometrics.py diff --git a/chiller/chiller.py b/chiller/chiller.py index c812245..dab2eaf 100644 --- a/chiller/chiller.py +++ b/chiller/chiller.py @@ -1,20 +1,28 @@ from enum import Enum +import uuid +import datetime +from random import Random +from copy import deepcopy +from typing import NamedTuple + +from numpy import linspace + +from koozie import fr_u -from .fluid_properties import LiquidState -from .psychrometrics import PsychrometricState +from .fluid_properties import LiquidState, PsychrometricState from .conditions import ( AHRI_550_590_LIQUID_COOLED_CONDITIONS, - AHRI_550_590_WATER_COOLED_CONDENSER_OUTLET, + AHRI_550_590_LIQUID_COOLED_CONDENSER_OUTLET, + AHRI_550_590_AIR_COOLED_CONDITIONS, AHRI_550_590_EVAPORATOR_INLET, OperatingConditions, ) -from koozie import fr_u -from numpy import linspace -import uuid -import datetime -from random import Random +class FloatRange(NamedTuple): + min: float|None + max: float|None + class CondenserType(Enum): LIQUID = 1 AIR = 2 @@ -29,6 +37,15 @@ class CompressorType(Enum): SCROLL = 4 +compressor_type_map = { + CompressorType.UNKNOWN: None, + CompressorType.CENTRIFUGAL: "CENTRIFUGAL", + CompressorType.POSITIVE_DISPLACEMENT: "SCROLL", + CompressorType.SCREW: "SCREW", + CompressorType.SCROLL: "SCROLL", +} + + class ChillerMetadata: def __init__( self, @@ -49,7 +66,8 @@ def __init__( class Chiller: - DEFAULT_CONDENSER_TEMPERATURE_RANGE: tuple[float, float] + DEFAULT_CONDENSER_TEMPERATURE_RANGE: FloatRange + rated_operating_conditions: OperatingConditions def __init__( self, @@ -59,7 +77,7 @@ def __init__( standby_power=0.0, rated_net_condenser_capacity=None, number_of_compressor_speeds=None, - evaporator_leaving_temperature_range=( + evaporator_leaving_temperature_range=FloatRange( fr_u(36.0, "°F"), fr_u(70.0, "°F"), ), # AHRI 550/590 2023 Table 5 @@ -81,8 +99,9 @@ def __init__( self.evaporator_leaving_temperature_range = evaporator_leaving_temperature_range self.condenser_entering_temperature_range = condenser_entering_temperature_range + self.rated_evaporator_inlet_state = deepcopy(AHRI_550_590_EVAPORATOR_INLET) + self.set_rated_evaporator_volumetric_flow_rate() - self.set_rated_condenser_volumetric_flow_rate() self.metadata = ChillerMetadata() @@ -124,18 +143,25 @@ def space_loss_heat(self, conditions): ) def set_rated_evaporator_volumetric_flow_rate(self): - raise NotImplementedError() - - def set_rated_condenser_volumetric_flow_rate(self): - raise NotImplementedError() + delta_T = ( + self.rated_evaporator_inlet_state.T + - self.rated_operating_conditions.evaporator_outlet.T + ) + m_dot = self.rated_net_evaporator_capacity / ( + self.rated_operating_conditions.evaporator_outlet.cp * delta_T + ) + self.rated_operating_conditions.evaporator_outlet.m_dot = m_dot + self.rated_evaporator_inlet_state.m_dot = m_dot def get_default_conditions(self): if self.condenser_type == CondenserType.LIQUID: return AHRI_550_590_LIQUID_COOLED_CONDITIONS + else: + return AHRI_550_590_AIR_COOLED_CONDITIONS def generate_205_representation( self, - capacity_range: tuple[float | None, float | None] = (None, None), + capacity_range: FloatRange = FloatRange(None, None), ) -> dict: # Metadata timestamp = datetime.datetime.now().isoformat("T", "minutes") @@ -161,10 +187,14 @@ def generate_205_representation( "product_information": { "liquid_data_source": "CoolProp", "hot_gas_bypass_installed": self.metadata.has_hot_gas_bypass_installed, - "compressor_type": self.compressor_type.name, } } + if self.compressor_type != CompressorType.UNKNOWN: + representation_description["product_information"]["compressor_type"] = ( + compressor_type_map[self.compressor_type] + ) + performance_map_cooling = self.make_performance_map() evaporator_liquid_volumetric_flow_rates = performance_map_cooling[ @@ -175,7 +205,8 @@ def generate_205_representation( ]["evaporator_liquid_leaving_temperature"] performance = { - "condesner_type": self.condenser_type.name, + "compressor_speed_control_type": "CONTINUOUS", + "cycling_degradation_coefficient": self.cycling_degradation_coefficient, "evaporator_liquid_type": { # TODO: Make consistent with model "liquid_components": [ { @@ -186,17 +217,6 @@ def generate_205_representation( "concentration_type": "BY_VOLUME", }, "evaporator_fouling_factor": 0.0, - "compressor_speed_control_type": "CONTINUOUS", - "cycling_degradation_coefficient": self.cycling_degradation_coefficient, - "performance_map_cooling": performance_map_cooling, - "performance_map_standby": { - "grid_variables": { - "environment_dry_bulb_temperature": [fr_u(20.0, "°C")], - }, - "lookup_variables": { - "input_power": [self.standby_power], - }, - }, "performance_map_evaporator_liquid_pressure_differential": { "grid_variables": { "evaporator_liquid_volumetric_flow_rate": evaporator_liquid_volumetric_flow_rates, @@ -210,6 +230,7 @@ def generate_205_representation( ), }, }, + "condenser_type": self.condenser_type.name, } if self.condenser_type == CondenserType.LIQUID: @@ -219,46 +240,66 @@ def generate_205_representation( condenser_liquid_entering_temperatures = performance_map_cooling[ "grid_variables" ]["condenser_liquid_entering_temperature"] - performance["condenser_liquid_type"] = { # TODO: Make consistent with model - "liquid_components": [ - { - "liquid_constituent": "WATER", - "concentration": 1.0, - } - ], - "concentration_type": "BY_VOLUME", - } - performance["condenser_fouling_factor"] = 0.0 - performance["performance_map_condenser_liquid_pressure_differential"] = { - "grid_variables": { - "condenser_liquid_volumetric_flow_rate": condenser_liquid_volumetric_flow_rates, - "condenser_liquid_entering_temperature": condenser_liquid_entering_temperatures, - }, - "lookup_variables": { - "condenser_liquid_differential_pressure": [fr_u(15.0, "kPa")] - * ( - len(condenser_liquid_volumetric_flow_rates) - * len(condenser_liquid_entering_temperatures) - ), + performance.update( + { + "condenser_liquid_type": { # TODO: Make consistent with model + "liquid_components": [ + { + "liquid_constituent": "WATER", + "concentration": 1.0, + } + ], + "concentration_type": "BY_VOLUME", + }, + "condenser_fouling_factor": 0.0, + "performance_map_condenser_liquid_pressure_differential": { + "grid_variables": { + "condenser_liquid_volumetric_flow_rate": condenser_liquid_volumetric_flow_rates, + "condenser_liquid_entering_temperature": condenser_liquid_entering_temperatures, + }, + "lookup_variables": { + "condenser_liquid_differential_pressure": [ + fr_u(15.0, "kPa") + ] + * ( + len(condenser_liquid_volumetric_flow_rates) + * len(condenser_liquid_entering_temperatures) + ), + }, + }, + } + ) + + performance.update( + { + "performance_map_cooling": performance_map_cooling, + "performance_map_standby": { + "grid_variables": { + "environment_dry_bulb_temperature": [fr_u(20.0, "°C")], + }, + "lookup_variables": { + "input_power": [self.standby_power], + }, }, } + ) # Scaling - if capacity_range[0] is not None or capacity_range[1] is not None: + if capacity_range.min is not None or capacity_range.max is not None: scaling = {} - if capacity_range[0] is None: + if capacity_range.min is None: scaling["minimum"] = 1.0 - elif capacity_range[0] > 0.0: + elif capacity_range.min > 0.0: scaling["minimum"] = ( - capacity_range[0] / self.rated_net_evaporator_capacity + capacity_range.min / self.rated_net_evaporator_capacity ) - if capacity_range[1] is None: + if capacity_range.max is None: scaling["maximum"] = 1.0 - elif capacity_range[1] != float("inf"): + elif capacity_range.max != float("inf"): scaling["maximum"] = ( - capacity_range[1] / self.rated_net_evaporator_capacity + capacity_range.max / self.rated_net_evaporator_capacity ) performance["scaling"] = scaling @@ -276,7 +317,7 @@ def make_performance_map(self): class LiquidCooledChiller(Chiller): - DEFAULT_CONDENSER_TEMPERATURE_RANGE = ( + DEFAULT_CONDENSER_TEMPERATURE_RANGE = FloatRange( fr_u(55.0, "degF"), fr_u(115.0, "degF"), ) # AHRI 550/590 2023 Table 5 @@ -303,73 +344,66 @@ def __init__( condenser_type=CondenserType.LIQUID, compressor_type=compressor_type, ) + self.rated_operating_conditions = deepcopy( + AHRI_550_590_LIQUID_COOLED_CONDITIONS + ) + self.rated_condenser_outlet_state = deepcopy( + AHRI_550_590_LIQUID_COOLED_CONDENSER_OUTLET + ) - def net_evaporator_capacity(self, conditions=AHRI_550_590_LIQUID_COOLED_CONDITIONS): + self.set_rated_condenser_volumetric_flow_rate() + + def net_evaporator_capacity(self, conditions): raise NotImplementedError() - def input_power(self, conditions=AHRI_550_590_LIQUID_COOLED_CONDITIONS): + def input_power(self, conditions): raise NotImplementedError() - def net_condenser_capacity(self, conditions=AHRI_550_590_LIQUID_COOLED_CONDITIONS): + def net_condenser_capacity(self, conditions): raise NotImplementedError() - def oil_cooler_heat(self, conditions=AHRI_550_590_LIQUID_COOLED_CONDITIONS): + def oil_cooler_heat(self, conditions): raise NotImplementedError() - def auxiliary_heat(self, conditions=AHRI_550_590_LIQUID_COOLED_CONDITIONS): + def auxiliary_heat(self, conditions): raise NotImplementedError() - def condenser_liquid_leaving_state( - self, conditions=AHRI_550_590_LIQUID_COOLED_CONDITIONS - ): + def condenser_liquid_leaving_state(self, conditions=None): + if conditions is None: + conditions = self.rated_operating_conditions return conditions.condenser_inlet.add_heat( self.net_condenser_capacity(conditions) ) - def evaporator_liquid_entering_state( - self, conditions=AHRI_550_590_LIQUID_COOLED_CONDITIONS - ): + def evaporator_liquid_entering_state(self, conditions=None): + if conditions is None: + conditions = self.rated_operating_conditions return super().evaporator_liquid_entering_state(conditions) - def space_loss_heat(self, conditions=AHRI_550_590_LIQUID_COOLED_CONDITIONS): + def space_loss_heat(self, conditions=None): + if conditions is None: + conditions = self.rated_operating_conditions return super().space_loss_heat(conditions) - def set_rated_evaporator_volumetric_flow_rate(self): - delta_T = ( - AHRI_550_590_EVAPORATOR_INLET.T - - AHRI_550_590_LIQUID_COOLED_CONDITIONS.evaporator_outlet.T - ) - m_dot = self.rated_net_evaporator_capacity / ( - AHRI_550_590_LIQUID_COOLED_CONDITIONS.evaporator_outlet.get_cp() * delta_T - ) - AHRI_550_590_LIQUID_COOLED_CONDITIONS.evaporator_outlet.set_m_dot(m_dot) - AHRI_550_590_EVAPORATOR_INLET.set_m_dot(m_dot) - self.rated_evaporator_volumetric_flow_rate = ( - AHRI_550_590_LIQUID_COOLED_CONDITIONS.evaporator_outlet.V_dot - ) - def set_rated_condenser_volumetric_flow_rate(self): delta_T = ( - AHRI_550_590_WATER_COOLED_CONDENSER_OUTLET.T - - AHRI_550_590_LIQUID_COOLED_CONDITIONS.condenser_inlet.T + self.rated_condenser_outlet_state.T + - self.rated_operating_conditions.condenser_inlet.T ) m_dot = self.rated_net_condenser_capacity / ( - AHRI_550_590_LIQUID_COOLED_CONDITIONS.condenser_inlet.get_cp() * delta_T - ) - AHRI_550_590_LIQUID_COOLED_CONDITIONS.condenser_inlet.set_m_dot(m_dot) - AHRI_550_590_WATER_COOLED_CONDENSER_OUTLET.set_m_dot(m_dot) - self.rated_condenser_volumetric_flow_rate = ( - AHRI_550_590_LIQUID_COOLED_CONDITIONS.condenser_inlet.V_dot + self.rated_operating_conditions.condenser_inlet.cp * delta_T ) + self.rated_operating_conditions.condenser_inlet.m_dot = m_dot + self.rated_condenser_outlet_state.m_dot = m_dot def make_performance_map(self) -> dict: # Create conditions evaporator_liquid_volumetric_flow_rates = [ - self.rated_evaporator_volumetric_flow_rate + self.rated_operating_conditions.evaporator_outlet.V_dot ] evaporator_liquid_leaving_temperatures = linspace( - self.evaporator_leaving_temperature_range[0], - self.evaporator_leaving_temperature_range[1], + self.evaporator_leaving_temperature_range.min, + self.evaporator_leaving_temperature_range.max, 4, ).tolist() compressor_sequence_numbers = list( @@ -377,11 +411,11 @@ def make_performance_map(self) -> dict: ) condenser_liquid_volumetric_flow_rates = [ - self.rated_condenser_volumetric_flow_rate + self.rated_operating_conditions.condenser_inlet.V_dot ] condenser_liquid_entering_temperatures = linspace( - self.condenser_entering_temperature_range[0], - self.condenser_entering_temperature_range[1], + self.condenser_entering_temperature_range.min, + self.condenser_entering_temperature_range.max, 4, ).tolist() grid_variables = { @@ -446,28 +480,77 @@ class AirCooledChiller(Chiller): # TODO: Apply pressure corrections per 550/590 Appendix C - DEFAULT_CONDENSER_TEMPERATURE_RANGE = ( + DEFAULT_CONDENSER_TEMPERATURE_RANGE = FloatRange( fr_u(55.0, "degF"), fr_u(125.6, "degF"), ) # AHRI 550/590 2023 Table 5 + def __init__( + self, + rated_net_evaporator_capacity=fr_u(100, "ton_ref"), + rated_cop=2, + cycling_degradation_coefficient=0, + standby_power=0, + rated_net_condenser_capacity=None, + number_of_compressor_speeds=None, + evaporator_leaving_temperature_range=FloatRange(fr_u(36, "°F"), fr_u(70, "°F")), + condenser_entering_temperature_range=None, + compressor_type=CompressorType.UNKNOWN, + ): + super().__init__( + rated_net_evaporator_capacity, + rated_cop, + cycling_degradation_coefficient, + standby_power, + rated_net_condenser_capacity, + number_of_compressor_speeds, + evaporator_leaving_temperature_range, + condenser_entering_temperature_range, + CondenserType.AIR, + compressor_type, + ) + + self.rated_operating_conditions = deepcopy(AHRI_550_590_AIR_COOLED_CONDITIONS) + + def condenser_air_volumetric_flow_rate( + self, conditions: OperatingConditions | None = None + ) -> float: + if conditions is None: + conditions = self.rated_operating_conditions + speed = conditions.compressor_speed + rated_conditions_at_speed = OperatingConditions( + condenser_inlet=self.rated_operating_conditions.condenser_inlet, + evaporator_outlet=self.rated_operating_conditions.evaporator_outlet, + compressor_speed=speed, + ) + return fr_u(900, "cfm/ton_ref") * self.net_evaporator_capacity( + rated_conditions_at_speed + ) + + def evaporation_rate(self, conditions: OperatingConditions | None = None) -> float: + if conditions is None: + conditions = self.rated_operating_conditions + return 0.0 + def make_performance_map(self) -> dict: # Create conditions evaporator_liquid_volumetric_flow_rates = [ - self.rated_evaporator_volumetric_flow_rate + self.rated_operating_conditions.evaporator_outlet.V_dot ] evaporator_liquid_leaving_temperatures = linspace( - self.evaporator_leaving_temperature_range[0], - self.evaporator_leaving_temperature_range[1], + self.evaporator_leaving_temperature_range.min, + self.evaporator_leaving_temperature_range.max, 4, ).tolist() compressor_sequence_numbers = list( range(1, self.number_of_compressor_speeds + 1) ) - condenser_air_entering_drybulb_temperatures = [ - self.rated_condenser_volumetric_flow_rate - ] + condenser_air_entering_drybulb_temperatures = linspace( + self.condenser_entering_temperature_range.min, + self.condenser_entering_temperature_range.max, + 4, + ).tolist() condenser_air_entering_relative_humidities = [0.4] ambient_pressures = [fr_u(1.0, "atm")] grid_variables = { @@ -503,9 +586,9 @@ def make_performance_map(self) -> dict: volumetric_flow_rate=v_evap, ), condenser_inlet=PsychrometricState( - temperature=t_cond, + drybulb=t_cond, relative_humidity=rh_cond, - ambient_pressure=p_cond, + pressure=p_cond, ), compressor_speed=speed, ) @@ -518,7 +601,7 @@ def make_performance_map(self) -> dict: self.net_condenser_capacity(conditions) ) condenser_air_volumetric_flow_rates.append( - self.condenser_air_volumetric_flow_rates(conditions) + self.condenser_air_volumetric_flow_rate(conditions) ) oil_cooler_heats.append( self.oil_cooler_heat(conditions) diff --git a/chiller/conditions.py b/chiller/conditions.py index b2be00b..2884ce4 100644 --- a/chiller/conditions.py +++ b/chiller/conditions.py @@ -1,14 +1,13 @@ -from .fluid_properties import LiquidState -from .psychrometrics import PsychrometricState from koozie import fr_u +from .fluid_properties import LiquidState, PsychrometricState class OperatingConditions: def __init__( self, condenser_inlet: LiquidState | PsychrometricState, - evaporator_outlet, - compressor_speed=0, + evaporator_outlet: LiquidState, + compressor_speed: int = 0, ): self.condenser_inlet = condenser_inlet self.evaporator_outlet = evaporator_outlet @@ -25,6 +24,8 @@ def __init__( evaporator_outlet=LiquidState(fr_u(44.0, "°F")), ) -AHRI_550_590_WATER_COOLED_CONDENSER_OUTLET = LiquidState(fr_u(94.3, "°F")) +AHRI_550_590_LIQUID_COOLED_CONDENSER_OUTLET = LiquidState(fr_u(94.3, "°F")) -AHRI_550_590_EVAPORATOR_INLET = LiquidState(fr_u(54.0, "°F")) +AHRI_550_590_EVAPORATOR_INLET = LiquidState( + fr_u(54.0, "°F") +) # TODO: This isn't treated as a constant diff --git a/chiller/fluid_properties.py b/chiller/fluid_properties.py index 817a4df..9e96f22 100644 --- a/chiller/fluid_properties.py +++ b/chiller/fluid_properties.py @@ -1,67 +1,262 @@ -from re import S import CoolProp.CoolProp as CP -from koozie import fr_u +import psychrolib +from koozie import fr_u, to_u -class LiquidState: +psychrolib.SetUnitSystem(psychrolib.SI) + + +class FluidState: def __init__( self, - temperature, - pressure=fr_u(1.0, "atm"), + temperature: float, + pressure: float = fr_u(1.0, "atm"), volumetric_flow_rate=None, mass_flow_rate=None, - fluid_name="Water", ): - self.fluid_name = fluid_name self.T = temperature self.p = pressure + self._rho = -999.0 + self._cp = -999.0 + self._V_dot = -999.0 + self._m_dot = -999.0 self.rho_set = False self.cp_set = False - self.V_dot_set = False + self._flow_rate_set = False + self.c = 0.0 if mass_flow_rate is not None and volumetric_flow_rate is not None: - raise Exception( + raise RuntimeError( f"Cannot set both 'volumetric_flow_rate' and 'mass_flow_rate'." ) - if volumetric_flow_rate is None: - self.V_dot = None - else: - self.set_V_dot(volumetric_flow_rate) + if volumetric_flow_rate is not None: + self.V_dot = volumetric_flow_rate return - if mass_flow_rate is None: - self.m_dot = None - else: - self.set_m_dot(mass_flow_rate) + if mass_flow_rate is not None: + self.m_dot = mass_flow_rate return - def get_rho(self): + @property + def m_dot(self): + if self._flow_rate_set: + return self._m_dot + raise RuntimeError("m_dot not set") + + @m_dot.setter + def m_dot(self, mass_flow_rate): + self._m_dot = mass_flow_rate + self._flow_rate_set = True + self._V_dot = self.m_dot / self.rho + self.c = self.m_dot * self.cp + + @property + def V_dot(self): + if self._flow_rate_set: + return self._V_dot + raise RuntimeError("V_dot not set") + + @V_dot.setter + def V_dot(self, volumetric_flow_rate): + self.m_dot = volumetric_flow_rate * self.rho + + @property + def rho(self): + raise NotImplementedError() + + @rho.setter + def rho(self, rho): + self._rho = rho + self.rho_set = True + + @property + def cp(self): + raise NotImplementedError() + + @cp.setter + def cp(self, cp): + self._cp = cp + self.cp_set = True + + def get_heat(self, other_state: type["FluidState"]): + '''returns the amount of heat difference between this state and "other state"''' + return self.c * self.T - other_state.c * other_state.T + + +class LiquidState(FluidState): + def __init__( + self, + temperature, + pressure=fr_u(1.0, "atm"), + volumetric_flow_rate=None, + mass_flow_rate=None, + fluid_name="Water", + ): + self.fluid_name = fluid_name + super().__init__( + temperature, + pressure, + volumetric_flow_rate, + mass_flow_rate, + ) + + @property + def rho(self): if not self.rho_set: self.rho = CP.PropsSI("D", "P", self.p, "T", self.T, self.fluid_name) - self.rho_set = True - return self.rho + return self._rho - def get_cp(self): + @rho.setter + def rho(self, rho): + self._rho = rho + self.rho_set = True + + @property + def cp(self): if not self.cp_set: self.cp = CP.PropsSI("C", "P", self.p, "T", self.T, self.fluid_name) - self.cp_set = True - return self.cp - - def set_V_dot(self, volumetric_flow_rate): - self.V_dot = volumetric_flow_rate - self.m_dot = self.V_dot * self.get_rho() - self.c = self.m_dot * self.get_cp() - self.V_dot_set = True + return self._cp - def set_m_dot(self, mass_flow_rate): - self.m_dot = mass_flow_rate - self.V_dot = self.m_dot / self.get_rho() - self.c = self.m_dot * self.get_cp() - self.V_dot_set = True + @cp.setter + def cp(self, cp): + self._cp = cp + self.cp_set = True def add_heat(self, heat): return LiquidState( temperature=self.T + heat / self.c, mass_flow_rate=self.m_dot ) - def get_heat(self, other_state): - '''returns the amount of heat difference between this state and "other state"''' - return self.c * self.T - other_state.c * other_state.T + +class PsychrometricState(FluidState): + def __init__( + self, + drybulb, + pressure=fr_u(1.0, "atm"), + volumetric_flow_rate=None, + mass_flow_rate=None, + **kwargs, + ): + super().__init__( + drybulb, + pressure, + volumetric_flow_rate, + mass_flow_rate, + ) + self.db_C = to_u(self.T, "°C") + self._wb = -999.0 + self._h = -999.0 + self._rh = -999.0 + self._hr = -999.0 + self.wb_set = False + self.rh_set = False + self.hr_set = False + self.dp_set = False + self.h_set = False + self.rho_set = False + if len(kwargs) > 1: + raise RuntimeError( + f"{PsychrometricState.__name__} can only be initialized with a single key word argument, but received {len(kwargs)}: {kwargs}" + ) + if "wetbulb" in kwargs: + self.wb = kwargs["wetbulb"] + elif "humidity_ratio" in kwargs: + self.hr = kwargs["humidity_ratio"] + elif "relative_humidity" in kwargs: + self.rh = kwargs["relative_humidity"] + elif "enthalpy" in kwargs: + self.h = kwargs["enthalpy"] + else: + raise RuntimeError( + f"{PsychrometricState.__name__}: Unknown or missing key word argument {kwargs}." + ) + + @property + def cp(self): + if not self.cp_set: + self.cp = fr_u(1.006, "kJ/kg/K") + return self._cp + + @cp.setter + def cp(self, cp): + self._cp = cp + self.cp_set = True + + @property + def wb(self): + if self.wb_set: + return self._wb + raise RuntimeError("Wetbulb not set") + + @wb.setter + def wb(self, wb): + self._wb = wb + self.wb_C = to_u(self._wb, "°C") + self.wb_set = True + + def get_wb_C(self): + if self.wb_set: + return self.wb_C + else: + raise RuntimeError("Wetbulb not set") + + @property + def hr(self): + if not self.hr_set: + self.hr = psychrolib.GetHumRatioFromTWetBulb( + self.db_C, self.get_wb_C(), self.p + ) + return self._hr + + @hr.setter + def hr(self, hr): + self._hr = hr + if not self.wb_set: + self.wb = fr_u( + psychrolib.GetTWetBulbFromHumRatio(self.db_C, self._hr, self.p), + "°C", + ) + + self.hr_set = True + + @property + def rh(self): + if not self.rh_set: + self.rh = psychrolib.GetHumRatioFromTWetBulb( + self.db_C, self.get_wb_C(), self.p + ) + return self._rh + + @rh.setter + def rh(self, rh): + self._rh = rh + if not self.wb_set: + self.wb = fr_u( + psychrolib.GetTWetBulbFromRelHum(self.db_C, self._rh, self.p), "°C" + ) + self.rh_set = True + + @property + def h(self): + if not self.h_set: + self.h = psychrolib.GetMoistAirEnthalpy(self.db_C, self.hr) + return self._h + + @h.setter + def h(self, h): + self._h = h + if not self.hr_set: + self.hr = psychrolib.GetHumRatioFromEnthalpyAndTDryBulb(self._h, self.db_C) + self.h_set = True + + @property + def rho(self): + if not self.rho_set: + self.rho = psychrolib.GetMoistAirDensity(self.db_C, self.hr, self.p) + return self._rho + + @rho.setter + def rho(self, rho): + self._rho = rho + self.rho_set = True + + +STANDARD_CONDITIONS = PsychrometricState(drybulb=fr_u(70.0, "°F"), humidity_ratio=0.0) diff --git a/chiller/models/ashrae_90_1.py b/chiller/models/ashrae_90_1.py index 607944a..4caf198 100644 --- a/chiller/models/ashrae_90_1.py +++ b/chiller/models/ashrae_90_1.py @@ -7,6 +7,7 @@ from ..chiller import ( CompressorType, CondenserType, + FloatRange ) @@ -117,6 +118,11 @@ def __init__( condenser_type: CondenserType, compressor_type: CompressorType, path_type, + cycling_degradation_coefficient=0.0, + standby_power=0.0, + space_gain_fraction=0.0, + oil_cooler_fraction=0.0, + auxiliary_fraction=0.0, ): self.path_type = path_type @@ -150,7 +156,7 @@ def __init__( self.curve_set = matches_found[0] # scaling - self.capacity_range = ( + self.capacity_range = FloatRange( self.curve_set.minimum_capacity, self.curve_set.maximum_capacity, ) @@ -164,6 +170,11 @@ def __init__( capacity_temperature_coefficients=self.curve_set.capacity_temperature_coefficients, minimum_part_load_ratio=0.25, minimum_unloading_ratio=0.25, + cycling_degradation_coefficient=cycling_degradation_coefficient, + standby_power=standby_power, + space_gain_fraction=space_gain_fraction, + oil_cooler_fraction=oil_cooler_fraction, + auxiliary_fraction=auxiliary_fraction, ) self.compressor_type = compressor_type @@ -189,10 +200,10 @@ def generate_205_representation(self, capacity_range=None): if compressor_text is not None: type_text += f", {compressor_text} compressor" type_text += f" chiller" - if self.capacity_range[1] == float("inf"): - size_description = f"{to_u(self.capacity_range[0],'ton_ref'):.1f}+" + if self.capacity_range.max == float("inf"): + size_description = f"{to_u(self.capacity_range.min,'ton_ref'):.1f}+" else: - size_description = f"{to_u(self.capacity_range[0],'ton_ref'):.1f}-{to_u(self.capacity_range[1],'ton_ref'):.1f}" + size_description = f"{to_u(self.capacity_range.min,'ton_ref'):.1f}-{to_u(self.capacity_range.max,'ton_ref'):.1f}" self.metadata.description = f"{standard_reference} '{self.curve_set.set_name}': {size_description} ton, {self.rated_cop:.2f} COP, {self.curve_set.iplv:.2f} IPLV {type_text}" unique_characteristics = ( self.rated_net_evaporator_capacity, diff --git a/chiller/models/energyplus_eir.py b/chiller/models/energyplus_eir.py index c1dcb8e..7fabd05 100644 --- a/chiller/models/energyplus_eir.py +++ b/chiller/models/energyplus_eir.py @@ -1,8 +1,18 @@ from typing import Type +from copy import deepcopy from koozie import to_u, fr_u -from ..chiller import Chiller, LiquidCooledChiller, CondenserType, AirCooledChiller +from ..chiller import ( + Chiller, + LiquidCooledChiller, + CondenserType, + AirCooledChiller, + AHRI_550_590_AIR_COOLED_CONDITIONS, + AHRI_550_590_LIQUID_COOLED_CONDITIONS, + AHRI_550_590_LIQUID_COOLED_CONDENSER_OUTLET, + OperatingConditions, +) from ..util import calc_biquad, calc_cubic @@ -17,9 +27,11 @@ def __init__( capacity_temperature_coefficients, minimum_part_load_ratio, minimum_unloading_ratio, + cycling_degradation_coefficient=0.0, + standby_power=0.0, + space_gain_fraction=0.0, oil_cooler_fraction=0.0, auxiliary_fraction=0.0, - space_gain_fraction=0.0, ) -> None: self.capacity_temperature_coefficients = capacity_temperature_coefficients self.eir_temperature_coefficients = eir_temperature_coefficients @@ -62,8 +74,15 @@ def __init__( self.chiller_type: Type[Chiller] if condenser_type == CondenserType.LIQUID: self.chiller_type = LiquidCooledChiller + self.rated_operating_conditions = deepcopy( + AHRI_550_590_LIQUID_COOLED_CONDITIONS + ) else: self.chiller_type = AirCooledChiller + self.rated_operating_conditions = deepcopy( + AHRI_550_590_AIR_COOLED_CONDITIONS + ) + super().__init__( rated_net_evaporator_capacity=rated_net_evaporator_capacity, rated_cop=rated_cop, @@ -71,11 +90,19 @@ def __init__( rated_net_condenser_capacity=rated_net_condenser_capacity, number_of_compressor_speeds=number_of_compressor_speeds, condenser_entering_temperature_range=self.chiller_type.DEFAULT_CONDENSER_TEMPERATURE_RANGE, + cycling_degradation_coefficient=cycling_degradation_coefficient, + standby_power=standby_power ) + if condenser_type == CondenserType.LIQUID: + self.rated_condenser_outlet_state = ( + AHRI_550_590_LIQUID_COOLED_CONDENSER_OUTLET + ) + self.set_rated_condenser_volumetric_flow_rate() + def net_evaporator_capacity(self, conditions=None): if conditions is None: - conditions = self.get_default_conditions() + conditions = self.rated_operating_conditions coeffs = self.capacity_temperature_coefficients capacity_temperature_multiplier = calc_biquad( coeffs, @@ -90,7 +117,7 @@ def net_evaporator_capacity(self, conditions=None): def input_power(self, conditions=None): if conditions is None: - conditions = self.get_default_conditions() + conditions = self.rated_operating_conditions cap = self.net_evaporator_capacity(conditions) coeffs = self.eir_temperature_coefficients eir_temperature_multplier = calc_biquad( @@ -113,28 +140,28 @@ def input_power(self, conditions=None): def net_condenser_capacity(self, conditions=None): if conditions is None: - conditions = self.get_default_conditions() + conditions = self.rated_operating_conditions return ( self.input_power(conditions) + self.net_evaporator_capacity(conditions) ) * (1.0 - self.loss_fraction_sum) def oil_cooler_heat(self, conditions=None): if conditions is None: - conditions = self.get_default_conditions() + conditions = self.rated_operating_conditions return ( self.input_power(conditions) + self.net_evaporator_capacity(conditions) ) * self.oil_cooler_fraction def auxiliary_heat(self, conditions=None): if conditions is None: - conditions = self.get_default_conditions() + conditions = self.rated_operating_conditions return ( self.input_power(conditions) + self.net_evaporator_capacity(conditions) ) * self.auxiliary_fraction def part_load_ratio(self, conditions=None): if conditions is None: - conditions = self.get_default_conditions() + conditions = self.rated_operating_conditions if self.minimum_part_load_ratio < self.minimum_unloading_ratio: minimum_speed = self.number_of_compressor_speeds - 2 else: @@ -150,14 +177,26 @@ def part_load_ratio(self, conditions=None): / minimum_speed ) + def condenser_air_volumetric_flow_rate( + self, conditions: OperatingConditions | None = None + ) -> float: + if self.condenser_type != CondenserType.LIQUID: + return AirCooledChiller.condenser_air_volumetric_flow_rate(self, conditions) + else: + raise RuntimeError(f"Function not provided for this type of condenser.") + + def evaporation_rate(self, conditions: OperatingConditions | None = None) -> float: + if self.condenser_type != CondenserType.LIQUID: + return AirCooledChiller.evaporation_rate(self, conditions) + else: + raise RuntimeError(f"Function not provided for this type of condenser.") + def set_rated_evaporator_volumetric_flow_rate(self): - if self.condenser_type == CondenserType.LIQUID: - LiquidCooledChiller.set_rated_evaporator_volumetric_flow_rate(self) + self.chiller_type.set_rated_evaporator_volumetric_flow_rate(self) def set_rated_condenser_volumetric_flow_rate(self): if self.condenser_type == CondenserType.LIQUID: LiquidCooledChiller.set_rated_condenser_volumetric_flow_rate(self) def make_performance_map(self): - if self.condenser_type == CondenserType.LIQUID: - return LiquidCooledChiller.make_performance_map(self) + return self.chiller_type.make_performance_map(self) diff --git a/chiller/models/energyplus_reformulated.py b/chiller/models/energyplus_reformulated.py index e9ff834..0a183a7 100644 --- a/chiller/models/energyplus_reformulated.py +++ b/chiller/models/energyplus_reformulated.py @@ -38,7 +38,7 @@ def __init__( def net_evaporator_capacity(self, conditions=None): if conditions is None: - conditions = self.get_default_conditions() + conditions = self.rated_operating_conditions guess_capacity = self.rated_net_evaporator_capacity * self.part_load_ratio( conditions ) @@ -56,7 +56,7 @@ def net_evaporator_capacity(self, conditions=None): def input_power(self, conditions=None): if conditions is None: - conditions = self.get_default_conditions() + conditions = self.rated_operating_conditions evaporator_capacity = self.net_evaporator_capacity(conditions) return self.calculate_input_power( conditions, self.condenser_leaving_temperature, evaporator_capacity diff --git a/chiller/psychrometrics.py b/chiller/psychrometrics.py deleted file mode 100644 index 72a1c3d..0000000 --- a/chiller/psychrometrics.py +++ /dev/null @@ -1,130 +0,0 @@ -from koozie import fr_u, to_u - -import sys -import psychrolib - -psychrolib.SetUnitSystem(psychrolib.SI) - - -class PsychrometricState: - def __init__(self, drybulb, pressure=fr_u(1.0, "atm"), **kwargs): - self.db = drybulb - self.db_C = to_u(self.db, "°C") - self.p = pressure - self._wb = -999.0 - self._rho = -999.0 - self._h = -999.0 - self._rh = -999.0 - self._hr = -999.0 - self.wb_set = False - self.rh_set = False - self.hr_set = False - self.dp_set = False - self.h_set = False - self.rho_set = False - self.C_p = fr_u(1.006, "kJ/kg/K") - if len(kwargs) > 1: - raise RuntimeError( - f"{PsychrometricState.__name__} can only be initialized with a single key word argument, but received {len(kwargs)}: {kwargs}" - ) - if "wetbulb" in kwargs: - self.wb = kwargs["wetbulb"] - elif "humidity_ratio" in kwargs: - self.hr = kwargs["humidity_ratio"] - elif "relative_humidity" in kwargs: - self.rh = kwargs["relative_humidity"] - elif "enthalpy" in kwargs: - self.h = kwargs["enthalpy"] - else: - raise RuntimeError( - f"{PsychrometricState.__name__}: Unknown or missing key word argument {kwargs}." - ) - - @property - def wb(self): - if self.wb_set: - return self._wb - raise RuntimeError("Wetbulb not set") - - @wb.setter - def wb(self, wb): - self._wb = wb - self.wb_C = to_u(self._wb, "°C") - self.wb_set = True - - def get_wb_C(self): - if self.wb_set: - return self.wb_C - else: - raise RuntimeError("Wetbulb not set") - - @property - def hr(self): - if self.hr_set: - return self._hr - else: - self.hr = psychrolib.GetHumRatioFromTWetBulb( - self.db_C, self.get_wb_C(), self.p - ) - return self._hr - - @hr.setter - def hr(self, hr): - self._hr = hr - if not self.wb_set: - self.wb = fr_u( - psychrolib.GetTWetBulbFromHumRatio(self.db_C, self._hr, self.p), - "°C", - ) - - self.hr_set = True - - @property - def rh(self): - if self.rh_set: - return self._rh - else: - self.rh = psychrolib.GetHumRatioFromTWetBulb( - self.db_C, self.get_wb_C(), self.p - ) - return self._rh - - @rh.setter - def rh(self, rh): - self._rh = rh - if not self.wb_set: - self.wb = fr_u( - psychrolib.GetTWetBulbFromRelHum(self.db_C, self._rh, self.p), "°C" - ) - self.rh_set = True - - @property - def h(self): - if self.h_set: - return self._h - else: - self.h = psychrolib.GetMoistAirEnthalpy(self.db_C, self.hr) - return self._h - - @h.setter - def h(self, h): - self._h = h - if not self.hr_set: - self.hr = psychrolib.GetHumRatioFromEnthalpyAndTDryBulb(self._h, self.db_C) - self.h_set = True - - @property - def rho(self): - if self.rho_set: - return self._rho - else: - self.rho = psychrolib.GetMoistAirDensity(self.db_C, self.hr, self.p) - return self._rho - - @rho.setter - def rho(self, rho): - self._rho = rho - self.rho_set = True - - -STANDARD_CONDITIONS = PsychrometricState(drybulb=fr_u(70.0, "°F"), humidity_ratio=0.0) diff --git a/examples/baseline_chillers.py b/examples/baseline_chillers.py index ea2e346..e4a3115 100644 --- a/examples/baseline_chillers.py +++ b/examples/baseline_chillers.py @@ -38,47 +38,46 @@ for chiller in ASHRAE90_1BaselineChiller.chiller_curve_sets: - if chiller.condenser_type == CondenserType.LIQUID: - if chiller.maximum_capacity == float("inf"): - size = chiller.minimum_capacity + fr_u(50.0, "ton_ref") - else: - size = (chiller.minimum_capacity + chiller.maximum_capacity) * 0.5 - new_chiller = ASHRAE90_1BaselineChiller( - rated_net_evaporator_capacity=size, - rated_cop=chiller.cop, - path_type=chiller.path_type, - condenser_type=chiller.condenser_type, - compressor_type=chiller.compressor_type, - ) + if chiller.maximum_capacity == float("inf"): + size = chiller.minimum_capacity + fr_u(50.0, "ton_ref") + else: + size = (chiller.minimum_capacity + chiller.maximum_capacity) * 0.5 + new_chiller = ASHRAE90_1BaselineChiller( + rated_net_evaporator_capacity=size, + rated_cop=chiller.cop, + path_type=chiller.path_type, + condenser_type=chiller.condenser_type, + compressor_type=chiller.compressor_type, + ) - assert abs(new_chiller.cop() - new_chiller.rated_cop) < 0.05 - assert ( - abs( - new_chiller.net_evaporator_capacity() - - new_chiller.rated_net_evaporator_capacity - ) - < 0.01 * size + assert abs(new_chiller.cop() - new_chiller.rated_cop) < 0.05 + assert ( + abs( + new_chiller.net_evaporator_capacity() + - new_chiller.rated_net_evaporator_capacity ) + < 0.01 * size + ) - new_chiller.metadata.data_version = 3 # TODO: Update when necessary - unique_characteristics = ( - chiller.set_name, - new_chiller.rated_net_evaporator_capacity, - ) - new_chiller.metadata.uuid_seed = sha256( - f"{unique_characteristics}".encode() - ).hexdigest() + new_chiller.metadata.data_version = 3 # TODO: Update when necessary + unique_characteristics = ( + chiller.set_name, + new_chiller.rated_net_evaporator_capacity, + ) + new_chiller.metadata.uuid_seed = sha256( + f"{unique_characteristics}".encode() + ).hexdigest() - representation = new_chiller.generate_205_representation() + representation = new_chiller.generate_205_representation() - output_directory_path = "output" - file_name = f"ASHRAE90-1-2019-bd-Curve-Set-{chiller.set_name}.RS0001.a205" + output_directory_path = "output" + file_name = f"ASHRAE90-1-2022-AppJ-Curve-Set-{chiller.set_name}.RS0001.a205" - # with open(f"{output_directory_path}/{file_name}.yaml", "w") as file: - # yaml.dump(representation, file, sort_keys=False) + # with open(f"{output_directory_path}/{file_name}.yaml", "w") as file: + # yaml.dump(representation, file, sort_keys=False) - # with open(f"{output_directory_path}/{file_name}.cbor", "wb") as file: - # cbor2.dump(representation, file) + # with open(f"{output_directory_path}/{file_name}.cbor", "wb") as file: + # cbor2.dump(representation, file) - with open(f"{output_directory_path}/{file_name}.json", "w") as file: - json.dump(representation, file, indent=4) + with open(f"{output_directory_path}/{file_name}.json", "w") as file: + json.dump(representation, file, indent=4) From fa2c447a969fdc8598c0fb4ff10ffebaef486513 Mon Sep 17 00:00:00 2001 From: Neal Kruis Date: Fri, 20 Dec 2024 17:40:37 -0700 Subject: [PATCH 5/9] Update koozie. --- poetry.lock | 20 +++++++++----------- pyproject.toml | 2 +- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/poetry.lock b/poetry.lock index 0192a68..6fa0f87 100644 --- a/poetry.lock +++ b/poetry.lock @@ -298,20 +298,18 @@ colors = ["colorama (>=0.4.6)"] [[package]] name = "koozie" -version = "0.0.0" +version = "1.2.4" description = "A light-weight wrapper around pint for unit conversions." optional = false -python-versions = "^3.10" -files = [] -develop = true +python-versions = "<4.0,>=3.10" +files = [ + {file = "koozie-1.2.4-py3-none-any.whl", hash = "sha256:9996206c7ef67d09ad7e4a66271e1e60217a2d97e65431bd3d5ef2d3c3623e25"}, + {file = "koozie-1.2.4.tar.gz", hash = "sha256:53c7f67263e3040b6ed62fcf600ad747f8deb858b08195ad22c77c6746b8e290"}, +] [package.dependencies] -click = "^8.1.3" -pint = "^0.24" - -[package.source] -type = "directory" -url = "../koozie" +click = ">=8.1.3,<9.0.0" +pint = ">=0.24,<0.25" [[package]] name = "lazy-object-proxy" @@ -861,4 +859,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "8df5b2cb55fdb32da7b79ef0e06f64fb84d06885fb1a637e8fee52dd58242e39" +content-hash = "f6f983094dd1ad090f60b0d485b67b8dcd7fb9391e9157b7bbe14fcf98ef2e70" diff --git a/pyproject.toml b/pyproject.toml index 6ce11a8..519d045 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ authors = ["Big Ladder Software"] [tool.poetry.dependencies] python = "^3.10" -koozie = {path = "../koozie", develop = true} #"^1.2.3" +koozie = "^1.2.4" CoolProp = "^6.6.0" scipy = "^1.11.4" PsychroLib = "^2.5.0" From ed97aa09a16d055a0fac213a1ee5d0b4090d58ce Mon Sep 17 00:00:00 2001 From: Neal Kruis Date: Fri, 20 Dec 2024 17:44:38 -0700 Subject: [PATCH 6/9] Update CI python versions. --- .github/workflows/setup_and_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/setup_and_test.yml b/.github/workflows/setup_and_test.yml index f278c51..8998074 100644 --- a/.github/workflows/setup_and_test.yml +++ b/.github/workflows/setup_and_test.yml @@ -13,7 +13,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] - python-version: ["3.9", "3.10", "3.11", "3.12"] + python-version: ["3.10", "3.11", "3.12", "3.13"] defaults: run: shell: bash From 5fb62ad1f9d0f8acb19ffd74fe87cb7bedb96798 Mon Sep 17 00:00:00 2001 From: Neal Kruis Date: Mon, 30 Dec 2024 13:16:32 -0700 Subject: [PATCH 7/9] Update doit. --- poetry.lock | 202 +++++++++++++++++++++++++++---------------------- pyproject.toml | 2 +- 2 files changed, 114 insertions(+), 90 deletions(-) diff --git a/poetry.lock b/poetry.lock index 6fa0f87..0af52a0 100644 --- a/poetry.lock +++ b/poetry.lock @@ -108,13 +108,13 @@ test = ["coverage (>=7)", "hypothesis", "pytest"] [[package]] name = "click" -version = "8.1.7" +version = "8.1.8" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" files = [ - {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, - {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, + {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, + {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, ] [package.dependencies] @@ -223,19 +223,21 @@ profile = ["gprof2dot (>=2022.7.29)"] [[package]] name = "doit" -version = "0.33.1" +version = "0.36.0" description = "doit - Automation Tool" optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" files = [ - {file = "doit-0.33.1-py3-none-any.whl", hash = "sha256:211fc0de3fd9ee31e5c4ccb36bc1a4054b5c4a4a44f915ca413896155b684bfa"}, - {file = "doit-0.33.1.tar.gz", hash = "sha256:37c3b35c2151647b968b2af24481112b2f813c30f695366db0639d529190a143"}, + {file = "doit-0.36.0-py3-none-any.whl", hash = "sha256:ebc285f6666871b5300091c26eafdff3de968a6bd60ea35dd1e3fc6f2e32479a"}, + {file = "doit-0.36.0.tar.gz", hash = "sha256:71d07ccc9514cb22fe59d98999577665eaab57e16f644d04336ae0b4bae234bc"}, ] [package.dependencies] cloudpickle = "*" -macfsevents = {version = "*", markers = "sys_platform == \"darwin\""} -pyinotify = {version = "*", markers = "sys_platform == \"linux\""} +importlib-metadata = ">=4.4" + +[package.extras] +toml = ["tomli"] [[package]] name = "flexcache" @@ -271,6 +273,29 @@ typing-extensions = "*" [package.extras] test = ["pytest", "pytest-cov", "pytest-mpl", "pytest-subtests"] +[[package]] +name = "importlib-metadata" +version = "8.5.0" +description = "Read metadata from Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "importlib_metadata-8.5.0-py3-none-any.whl", hash = "sha256:45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b"}, + {file = "importlib_metadata-8.5.0.tar.gz", hash = "sha256:71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7"}, +] + +[package.dependencies] +zipp = ">=3.20" + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] +perf = ["ipython"] +test = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] +type = ["pytest-mypy"] + [[package]] name = "iniconfig" version = "2.0.0" @@ -298,13 +323,13 @@ colors = ["colorama (>=0.4.6)"] [[package]] name = "koozie" -version = "1.2.4" +version = "1.3.0" description = "A light-weight wrapper around pint for unit conversions." optional = false python-versions = "<4.0,>=3.10" files = [ - {file = "koozie-1.2.4-py3-none-any.whl", hash = "sha256:9996206c7ef67d09ad7e4a66271e1e60217a2d97e65431bd3d5ef2d3c3623e25"}, - {file = "koozie-1.2.4.tar.gz", hash = "sha256:53c7f67263e3040b6ed62fcf600ad747f8deb858b08195ad22c77c6746b8e290"}, + {file = "koozie-1.3.0-py3-none-any.whl", hash = "sha256:2e0217f5a12a33a51ec755f21461f3926430f5b2426e53d38fc679554806dded"}, + {file = "koozie-1.3.0.tar.gz", hash = "sha256:cd9b749482b7769a7b9c2c4965a48f4c1d23d8b9ecd8ae5b18f708f9822b7e92"}, ] [package.dependencies] @@ -357,16 +382,6 @@ files = [ {file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"}, ] -[[package]] -name = "macfsevents" -version = "0.8.4" -description = "Thread-based interface to file system observation primitives." -optional = false -python-versions = "*" -files = [ - {file = "MacFSEvents-0.8.4.tar.gz", hash = "sha256:bf7283f1d517764ccdc8195b21631dbbac1c506b920bf9a8ea2956b3127651cb"}, -] - [[package]] name = "mccabe" version = "0.7.0" @@ -380,66 +395,66 @@ files = [ [[package]] name = "numpy" -version = "2.2.0" +version = "2.2.1" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.10" files = [ - {file = "numpy-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1e25507d85da11ff5066269d0bd25d06e0a0f2e908415534f3e603d2a78e4ffa"}, - {file = "numpy-2.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a62eb442011776e4036af5c8b1a00b706c5bc02dc15eb5344b0c750428c94219"}, - {file = "numpy-2.2.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:b606b1aaf802e6468c2608c65ff7ece53eae1a6874b3765f69b8ceb20c5fa78e"}, - {file = "numpy-2.2.0-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:36b2b43146f646642b425dd2027730f99bac962618ec2052932157e213a040e9"}, - {file = "numpy-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fe8f3583e0607ad4e43a954e35c1748b553bfe9fdac8635c02058023277d1b3"}, - {file = "numpy-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:122fd2fcfafdefc889c64ad99c228d5a1f9692c3a83f56c292618a59aa60ae83"}, - {file = "numpy-2.2.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3f2f5cddeaa4424a0a118924b988746db6ffa8565e5829b1841a8a3bd73eb59a"}, - {file = "numpy-2.2.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7fe4bb0695fe986a9e4deec3b6857003b4cfe5c5e4aac0b95f6a658c14635e31"}, - {file = "numpy-2.2.0-cp310-cp310-win32.whl", hash = "sha256:b30042fe92dbd79f1ba7f6898fada10bdaad1847c44f2dff9a16147e00a93661"}, - {file = "numpy-2.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:54dc1d6d66f8d37843ed281773c7174f03bf7ad826523f73435deb88ba60d2d4"}, - {file = "numpy-2.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9874bc2ff574c40ab7a5cbb7464bf9b045d617e36754a7bc93f933d52bd9ffc6"}, - {file = "numpy-2.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0da8495970f6b101ddd0c38ace92edea30e7e12b9a926b57f5fabb1ecc25bb90"}, - {file = "numpy-2.2.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0557eebc699c1c34cccdd8c3778c9294e8196df27d713706895edc6f57d29608"}, - {file = "numpy-2.2.0-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:3579eaeb5e07f3ded59298ce22b65f877a86ba8e9fe701f5576c99bb17c283da"}, - {file = "numpy-2.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40deb10198bbaa531509aad0cd2f9fadb26c8b94070831e2208e7df543562b74"}, - {file = "numpy-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2aed8fcf8abc3020d6a9ccb31dbc9e7d7819c56a348cc88fd44be269b37427e"}, - {file = "numpy-2.2.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a222d764352c773aa5ebde02dd84dba3279c81c6db2e482d62a3fa54e5ece69b"}, - {file = "numpy-2.2.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4e58666988605e251d42c2818c7d3d8991555381be26399303053b58a5bbf30d"}, - {file = "numpy-2.2.0-cp311-cp311-win32.whl", hash = "sha256:4723a50e1523e1de4fccd1b9a6dcea750c2102461e9a02b2ac55ffeae09a4410"}, - {file = "numpy-2.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:16757cf28621e43e252c560d25b15f18a2f11da94fea344bf26c599b9cf54b73"}, - {file = "numpy-2.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cff210198bb4cae3f3c100444c5eaa573a823f05c253e7188e1362a5555235b3"}, - {file = "numpy-2.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:58b92a5828bd4d9aa0952492b7de803135038de47343b2aa3cc23f3b71a3dc4e"}, - {file = "numpy-2.2.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:ebe5e59545401fbb1b24da76f006ab19734ae71e703cdb4a8b347e84a0cece67"}, - {file = "numpy-2.2.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:e2b8cd48a9942ed3f85b95ca4105c45758438c7ed28fff1e4ce3e57c3b589d8e"}, - {file = "numpy-2.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57fcc997ffc0bef234b8875a54d4058afa92b0b0c4223fc1f62f24b3b5e86038"}, - {file = "numpy-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85ad7d11b309bd132d74397fcf2920933c9d1dc865487128f5c03d580f2c3d03"}, - {file = "numpy-2.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cb24cca1968b21355cc6f3da1a20cd1cebd8a023e3c5b09b432444617949085a"}, - {file = "numpy-2.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0798b138c291d792f8ea40fe3768610f3c7dd2574389e37c3f26573757c8f7ef"}, - {file = "numpy-2.2.0-cp312-cp312-win32.whl", hash = "sha256:afe8fb968743d40435c3827632fd36c5fbde633b0423da7692e426529b1759b1"}, - {file = "numpy-2.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:3a4199f519e57d517ebd48cb76b36c82da0360781c6a0353e64c0cac30ecaad3"}, - {file = "numpy-2.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f8c8b141ef9699ae777c6278b52c706b653bf15d135d302754f6b2e90eb30367"}, - {file = "numpy-2.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0f0986e917aca18f7a567b812ef7ca9391288e2acb7a4308aa9d265bd724bdae"}, - {file = "numpy-2.2.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:1c92113619f7b272838b8d6702a7f8ebe5edea0df48166c47929611d0b4dea69"}, - {file = "numpy-2.2.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:5a145e956b374e72ad1dff82779177d4a3c62bc8248f41b80cb5122e68f22d13"}, - {file = "numpy-2.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18142b497d70a34b01642b9feabb70156311b326fdddd875a9981f34a369b671"}, - {file = "numpy-2.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7d41d1612c1a82b64697e894b75db6758d4f21c3ec069d841e60ebe54b5b571"}, - {file = "numpy-2.2.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a98f6f20465e7618c83252c02041517bd2f7ea29be5378f09667a8f654a5918d"}, - {file = "numpy-2.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e09d40edfdb4e260cb1567d8ae770ccf3b8b7e9f0d9b5c2a9992696b30ce2742"}, - {file = "numpy-2.2.0-cp313-cp313-win32.whl", hash = "sha256:3905a5fffcc23e597ee4d9fb3fcd209bd658c352657548db7316e810ca80458e"}, - {file = "numpy-2.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:a184288538e6ad699cbe6b24859206e38ce5fba28f3bcfa51c90d0502c1582b2"}, - {file = "numpy-2.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:7832f9e8eb00be32f15fdfb9a981d6955ea9adc8574c521d48710171b6c55e95"}, - {file = "numpy-2.2.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f0dd071b95bbca244f4cb7f70b77d2ff3aaaba7fa16dc41f58d14854a6204e6c"}, - {file = "numpy-2.2.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:b0b227dcff8cdc3efbce66d4e50891f04d0a387cce282fe1e66199146a6a8fca"}, - {file = "numpy-2.2.0-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:6ab153263a7c5ccaf6dfe7e53447b74f77789f28ecb278c3b5d49db7ece10d6d"}, - {file = "numpy-2.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e500aba968a48e9019e42c0c199b7ec0696a97fa69037bea163b55398e390529"}, - {file = "numpy-2.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:440cfb3db4c5029775803794f8638fbdbf71ec702caf32735f53b008e1eaece3"}, - {file = "numpy-2.2.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a55dc7a7f0b6198b07ec0cd445fbb98b05234e8b00c5ac4874a63372ba98d4ab"}, - {file = "numpy-2.2.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4bddbaa30d78c86329b26bd6aaaea06b1e47444da99eddac7bf1e2fab717bd72"}, - {file = "numpy-2.2.0-cp313-cp313t-win32.whl", hash = "sha256:30bf971c12e4365153afb31fc73f441d4da157153f3400b82db32d04de1e4066"}, - {file = "numpy-2.2.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d35717333b39d1b6bb8433fa758a55f1081543de527171543a2b710551d40881"}, - {file = "numpy-2.2.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e12c6c1ce84628c52d6367863773f7c8c8241be554e8b79686e91a43f1733773"}, - {file = "numpy-2.2.0-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:b6207dc8fb3c8cb5668e885cef9ec7f70189bec4e276f0ff70d5aa078d32c88e"}, - {file = "numpy-2.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a50aeff71d0f97b6450d33940c7181b08be1441c6c193e678211bff11aa725e7"}, - {file = "numpy-2.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:df12a1f99b99f569a7c2ae59aa2d31724e8d835fc7f33e14f4792e3071d11221"}, - {file = "numpy-2.2.0.tar.gz", hash = "sha256:140dd80ff8981a583a60980be1a655068f8adebf7a45a06a6858c873fcdcd4a0"}, + {file = "numpy-2.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5edb4e4caf751c1518e6a26a83501fda79bff41cc59dac48d70e6d65d4ec4440"}, + {file = "numpy-2.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:aa3017c40d513ccac9621a2364f939d39e550c542eb2a894b4c8da92b38896ab"}, + {file = "numpy-2.2.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:61048b4a49b1c93fe13426e04e04fdf5a03f456616f6e98c7576144677598675"}, + {file = "numpy-2.2.1-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:7671dc19c7019103ca44e8d94917eba8534c76133523ca8406822efdd19c9308"}, + {file = "numpy-2.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4250888bcb96617e00bfa28ac24850a83c9f3a16db471eca2ee1f1714df0f957"}, + {file = "numpy-2.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7746f235c47abc72b102d3bce9977714c2444bdfaea7888d241b4c4bb6a78bf"}, + {file = "numpy-2.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:059e6a747ae84fce488c3ee397cee7e5f905fd1bda5fb18c66bc41807ff119b2"}, + {file = "numpy-2.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f62aa6ee4eb43b024b0e5a01cf65a0bb078ef8c395e8713c6e8a12a697144528"}, + {file = "numpy-2.2.1-cp310-cp310-win32.whl", hash = "sha256:48fd472630715e1c1c89bf1feab55c29098cb403cc184b4859f9c86d4fcb6a95"}, + {file = "numpy-2.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:b541032178a718c165a49638d28272b771053f628382d5e9d1c93df23ff58dbf"}, + {file = "numpy-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:40f9e544c1c56ba8f1cf7686a8c9b5bb249e665d40d626a23899ba6d5d9e1484"}, + {file = "numpy-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f9b57eaa3b0cd8db52049ed0330747b0364e899e8a606a624813452b8203d5f7"}, + {file = "numpy-2.2.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:bc8a37ad5b22c08e2dbd27df2b3ef7e5c0864235805b1e718a235bcb200cf1cb"}, + {file = "numpy-2.2.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:9036d6365d13b6cbe8f27a0eaf73ddcc070cae584e5ff94bb45e3e9d729feab5"}, + {file = "numpy-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:51faf345324db860b515d3f364eaa93d0e0551a88d6218a7d61286554d190d73"}, + {file = "numpy-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38efc1e56b73cc9b182fe55e56e63b044dd26a72128fd2fbd502f75555d92591"}, + {file = "numpy-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:31b89fa67a8042e96715c68e071a1200c4e172f93b0fbe01a14c0ff3ff820fc8"}, + {file = "numpy-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4c86e2a209199ead7ee0af65e1d9992d1dce7e1f63c4b9a616500f93820658d0"}, + {file = "numpy-2.2.1-cp311-cp311-win32.whl", hash = "sha256:b34d87e8a3090ea626003f87f9392b3929a7bbf4104a05b6667348b6bd4bf1cd"}, + {file = "numpy-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:360137f8fb1b753c5cde3ac388597ad680eccbbbb3865ab65efea062c4a1fd16"}, + {file = "numpy-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:694f9e921a0c8f252980e85bce61ebbd07ed2b7d4fa72d0e4246f2f8aa6642ab"}, + {file = "numpy-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3683a8d166f2692664262fd4900f207791d005fb088d7fdb973cc8d663626faa"}, + {file = "numpy-2.2.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:780077d95eafc2ccc3ced969db22377b3864e5b9a0ea5eb347cc93b3ea900315"}, + {file = "numpy-2.2.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:55ba24ebe208344aa7a00e4482f65742969a039c2acfcb910bc6fcd776eb4355"}, + {file = "numpy-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b1d07b53b78bf84a96898c1bc139ad7f10fda7423f5fd158fd0f47ec5e01ac7"}, + {file = "numpy-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5062dc1a4e32a10dc2b8b13cedd58988261416e811c1dc4dbdea4f57eea61b0d"}, + {file = "numpy-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:fce4f615f8ca31b2e61aa0eb5865a21e14f5629515c9151850aa936c02a1ee51"}, + {file = "numpy-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:67d4cda6fa6ffa073b08c8372aa5fa767ceb10c9a0587c707505a6d426f4e046"}, + {file = "numpy-2.2.1-cp312-cp312-win32.whl", hash = "sha256:32cb94448be47c500d2c7a95f93e2f21a01f1fd05dd2beea1ccd049bb6001cd2"}, + {file = "numpy-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:ba5511d8f31c033a5fcbda22dd5c813630af98c70b2661f2d2c654ae3cdfcfc8"}, + {file = "numpy-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f1d09e520217618e76396377c81fba6f290d5f926f50c35f3a5f72b01a0da780"}, + {file = "numpy-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3ecc47cd7f6ea0336042be87d9e7da378e5c7e9b3c8ad0f7c966f714fc10d821"}, + {file = "numpy-2.2.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:f419290bc8968a46c4933158c91a0012b7a99bb2e465d5ef5293879742f8797e"}, + {file = "numpy-2.2.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:5b6c390bfaef8c45a260554888966618328d30e72173697e5cabe6b285fb2348"}, + {file = "numpy-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:526fc406ab991a340744aad7e25251dd47a6720a685fa3331e5c59fef5282a59"}, + {file = "numpy-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f74e6fdeb9a265624ec3a3918430205dff1df7e95a230779746a6af78bc615af"}, + {file = "numpy-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:53c09385ff0b72ba79d8715683c1168c12e0b6e84fb0372e97553d1ea91efe51"}, + {file = "numpy-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f3eac17d9ec51be534685ba877b6ab5edc3ab7ec95c8f163e5d7b39859524716"}, + {file = "numpy-2.2.1-cp313-cp313-win32.whl", hash = "sha256:9ad014faa93dbb52c80d8f4d3dcf855865c876c9660cb9bd7553843dd03a4b1e"}, + {file = "numpy-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:164a829b6aacf79ca47ba4814b130c4020b202522a93d7bff2202bfb33b61c60"}, + {file = "numpy-2.2.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4dfda918a13cc4f81e9118dea249e192ab167a0bb1966272d5503e39234d694e"}, + {file = "numpy-2.2.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:733585f9f4b62e9b3528dd1070ec4f52b8acf64215b60a845fa13ebd73cd0712"}, + {file = "numpy-2.2.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:89b16a18e7bba224ce5114db863e7029803c179979e1af6ad6a6b11f70545008"}, + {file = "numpy-2.2.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:676f4eebf6b2d430300f1f4f4c2461685f8269f94c89698d832cdf9277f30b84"}, + {file = "numpy-2.2.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27f5cdf9f493b35f7e41e8368e7d7b4bbafaf9660cba53fb21d2cd174ec09631"}, + {file = "numpy-2.2.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c1ad395cf254c4fbb5b2132fee391f361a6e8c1adbd28f2cd8e79308a615fe9d"}, + {file = "numpy-2.2.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:08ef779aed40dbc52729d6ffe7dd51df85796a702afbf68a4f4e41fafdc8bda5"}, + {file = "numpy-2.2.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:26c9c4382b19fcfbbed3238a14abf7ff223890ea1936b8890f058e7ba35e8d71"}, + {file = "numpy-2.2.1-cp313-cp313t-win32.whl", hash = "sha256:93cf4e045bae74c90ca833cba583c14b62cb4ba2cba0abd2b141ab52548247e2"}, + {file = "numpy-2.2.1-cp313-cp313t-win_amd64.whl", hash = "sha256:bff7d8ec20f5f42607599f9994770fa65d76edca264a87b5e4ea5629bce12268"}, + {file = "numpy-2.2.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7ba9cc93a91d86365a5d270dee221fdc04fb68d7478e6bf6af650de78a8339e3"}, + {file = "numpy-2.2.1-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:3d03883435a19794e41f147612a77a8f56d4e52822337844fff3d4040a142964"}, + {file = "numpy-2.2.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4511d9e6071452b944207c8ce46ad2f897307910b402ea5fa975da32e0102800"}, + {file = "numpy-2.2.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5c5cc0cbabe9452038ed984d05ac87910f89370b9242371bd9079cb4af61811e"}, + {file = "numpy-2.2.1.tar.gz", hash = "sha256:45681fd7128c8ad1c379f0ca0776a8b0c6583d2f69889ddac01559dfe4390918"}, ] [[package]] @@ -534,16 +549,6 @@ files = [ {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, ] -[[package]] -name = "pyinotify" -version = "0.9.6" -description = "Linux filesystem events monitoring" -optional = false -python-versions = "*" -files = [ - {file = "pyinotify-0.9.6.tar.gz", hash = "sha256:9c998a5d7606ca835065cdabc013ae6c66eb9ea76a00a1e3bc6e0cfe2b4f71f4"}, -] - [[package]] name = "pylint" version = "2.17.7" @@ -856,7 +861,26 @@ files = [ {file = "wrapt-1.17.0.tar.gz", hash = "sha256:16187aa2317c731170a88ef35e8937ae0f533c402872c1ee5e6d079fcf320801"}, ] +[[package]] +name = "zipp" +version = "3.21.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +optional = false +python-versions = ">=3.9" +files = [ + {file = "zipp-3.21.0-py3-none-any.whl", hash = "sha256:ac1bbe05fd2991f160ebce24ffbac5f6d11d83dc90891255885223d42b3cd931"}, + {file = "zipp-3.21.0.tar.gz", hash = "sha256:2c9958f6430a2040341a52eb608ed6dd93ef4392e02ffe219417c1b28b5dd1f4"}, +] + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] +type = ["pytest-mypy"] + [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "f6f983094dd1ad090f60b0d485b67b8dcd7fb9391e9157b7bbe14fcf98ef2e70" +content-hash = "e978578c5a7991a63e49b425caabae8587db0142ba28cc647774c5e9958817c4" diff --git a/pyproject.toml b/pyproject.toml index 519d045..49e46e4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,7 +14,7 @@ PsychroLib = "^2.5.0" [tool.poetry.dev-dependencies] pytest = "^6.2.2" pylint = "^2.7.2" -doit = "^0.33.1" +doit = ">0.33" pyyaml = "^6.0" cbor2 = "^5.4.3" From a6496a19876533e8a70e3d9c44194914aa10f3cf Mon Sep 17 00:00:00 2001 From: Neal Kruis Date: Mon, 30 Dec 2024 15:07:56 -0700 Subject: [PATCH 8/9] Separate example tasks. --- dodo.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/dodo.py b/dodo.py index 3118fd0..45c9670 100644 --- a/dodo.py +++ b/dodo.py @@ -2,12 +2,14 @@ OUTPUT_PATH = "output" + def task_examples(): - '''Run examples''' - return { - 'actions': [ - (create_folder, [OUTPUT_PATH]), - 'python examples/generate.py', - 'python examples/baseline_chillers.py'], - 'clean': True - } + """Run examples""" + create_folder(OUTPUT_PATH) + for example in ["generate", "baseline_chillers"]: + yield { + "name": example, + "actions": [f"python examples/{example}.py"], + "file_dep": [f"examples/{example}.py"], + "clean": True, + } From f3bd40ce9f1ed29e7b4dff97bc5db661cd0c25d2 Mon Sep 17 00:00:00 2001 From: Neal Kruis Date: Mon, 30 Dec 2024 15:13:55 -0700 Subject: [PATCH 9/9] Use test CoolProp. --- poetry.lock | 139 ++++++++++++++++++++++++++++--------------------- pyproject.toml | 7 ++- 2 files changed, 87 insertions(+), 59 deletions(-) diff --git a/poetry.lock b/poetry.lock index 0af52a0..09a914c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -144,67 +144,90 @@ files = [ [[package]] name = "coolprop" -version = "6.6.0" +version = "6.6.1.post1" description = "Open-source thermodynamic and transport properties database" optional = false python-versions = "*" files = [ - {file = "CoolProp-6.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e628b334548f5eaf7d7508b673d3a1bcf61c8691c0d020057eb0c9f842e8b702"}, - {file = "CoolProp-6.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8245dd194a8f0946d03f6d0bd62e143c7cb3dbf0c10c49879a888cb275e8038f"}, - {file = "CoolProp-6.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f79733ae173f095670d94d7faf2ecbbea21da76775c803fc3332e0ed22e2ef66"}, - {file = "CoolProp-6.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18e401b2e7fa3fd03dcfdd3e2d8c782656d359031a51add7ebe4c5545a0b098a"}, - {file = "CoolProp-6.6.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d23642e904377984b6d6bacb428890bb89bd8a78a0496b8559b698ca2e001f23"}, - {file = "CoolProp-6.6.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d32580510054c4ba5c14d9dc0eeda77b5c0dc263b0cc153de7dff9b9de77e28b"}, - {file = "CoolProp-6.6.0-cp310-cp310-win32.whl", hash = "sha256:1febe6ebdb340635bf6c1bb58678fe7edb93c9698e605c3975e1c4749646ee34"}, - {file = "CoolProp-6.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:0bb213ea8d9f509ae0d4c0009dffbda2f52f370eac3b4576c974188f1cd3ced1"}, - {file = "CoolProp-6.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cfe23e785e27ac4d12e0b13708a8bdc087caee8133fa0840509efaaf1ad311ba"}, - {file = "CoolProp-6.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f374a948bc42babdf644f912958c79effa8ccc4f3f461a0f822715dcdf819c6b"}, - {file = "CoolProp-6.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b43e70dfd9825a4de138ce76365978e24532711fb2f4781dacf2b92b96985ed"}, - {file = "CoolProp-6.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c46edd2dad3b99402ad2bff227a53182e0aba954847cac12686e78abd37ae1d"}, - {file = "CoolProp-6.6.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b83370f50f85cf80ad6c010175b99d6ed7485e647ab70ca85772fecebdcfce86"}, - {file = "CoolProp-6.6.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9bf37b539640e787250075e9042590f89bf83a1859c62d1695d2269d95fe7cff"}, - {file = "CoolProp-6.6.0-cp311-cp311-win32.whl", hash = "sha256:7b72406779cb17b4197d8bfbb90601f60a5ebb44b8c0c5882e8353021163783a"}, - {file = "CoolProp-6.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:b22c30a23603ce3df88a18a445fad14f93fd9757720f43d3b8041549e93c4b93"}, - {file = "CoolProp-6.6.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:2f738c22f4c81d7bc91567fe101502c5106cefc98a9afe884be72cf6908b3b7f"}, - {file = "CoolProp-6.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e2ef2de94f51ec8f095fe772cdb22593245feeb7df76d3616eb19c5da1d4ac7f"}, - {file = "CoolProp-6.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f3de22cfbdb31e9a2f19aefb8074c25c57abba7ba6302eb331694e7bcc4b11"}, - {file = "CoolProp-6.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50f3339c3d590d2c86f9f2c055b9423001653344958000b8dcf7655710a5adee"}, - {file = "CoolProp-6.6.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c556df424dcf93ce2e4b41f1f52537b94050ddf595df67eb7a76a1dd0d92263e"}, - {file = "CoolProp-6.6.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:75dd59ea068a6385977815b0572dd824f8cb932a97432737392e3aba11782210"}, - {file = "CoolProp-6.6.0-cp312-cp312-win32.whl", hash = "sha256:bfc5729c00376c00b33538d4685f4243ea43e69d618f2edd31729003a0fb1440"}, - {file = "CoolProp-6.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:809a8572515009a42386ce7381f7d11fd5c785657637cb402f722edf266a6fb3"}, - {file = "CoolProp-6.6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:6c11811e6730dda4c69fc3765e57697ee9390d9266fc7d0e3a40bfc841783b6c"}, - {file = "CoolProp-6.6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:addd2a7ae804e5bce85bdd3747fbea6c654fdb10b88212845b894c936a5162c9"}, - {file = "CoolProp-6.6.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f90c573ea9ebaffd85613322e8d8e1574268a4e12eca685742afbf5487cf3e37"}, - {file = "CoolProp-6.6.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:483babcc2cf2b3ce7761b3e8639e49700ff73828270956937b4e99451ad04476"}, - {file = "CoolProp-6.6.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:936bc62c1b33d6322b1b589f824284552e5654abc2c86d91313a952fca378fc9"}, - {file = "CoolProp-6.6.0-cp36-cp36m-win32.whl", hash = "sha256:efd4ec19f566aee8b119b2f9c6c91969e131baef0e2315fb1d66bd4b56edc1d5"}, - {file = "CoolProp-6.6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:19cf50201ec36037ef402749bf67bd47eb6f68809c61ce4259d6703898876355"}, - {file = "CoolProp-6.6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:60ff433382c801a8d473be57903adbd9957549adff189598ad65e8040626218b"}, - {file = "CoolProp-6.6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57b7e46d3d60962afe2deec068b042e4257e579b2a0d710202d2c2b2186eb2b3"}, - {file = "CoolProp-6.6.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1f4fe22c62fbc269d1aeee705a7dec23066a683b5615789020974504b76a520"}, - {file = "CoolProp-6.6.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c80fec6127bf9e18174609a4f117ec591e47a04e87e31f271e7d6e2daa4a81b7"}, - {file = "CoolProp-6.6.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e40acd6124d217881717fdd3218ef57d832cd010b22f40637d0f2330fdd0c330"}, - {file = "CoolProp-6.6.0-cp37-cp37m-win32.whl", hash = "sha256:8ba5530b8ca15d0715f86b397e0dc5b1dcc993bcc59175c5e54e27a9bbf4842e"}, - {file = "CoolProp-6.6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:60ff22a0969dd6a163ef29fd62f62c72e00bfc80731f4c10b2c89e409a294de9"}, - {file = "CoolProp-6.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7b79982edf62364a4c710ef6804a6b2946696bd95a789e2616dcee741a80f7b1"}, - {file = "CoolProp-6.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c9c081df57cda0e156e78c40fde9d83fd3f1aa262ed74dc70a2ea8fdb816ac70"}, - {file = "CoolProp-6.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15f781be1e761002e95d3de3ac7a02a8ed81adbaa9915ec9942a0575c2cde15d"}, - {file = "CoolProp-6.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25a1117d8229a8d612a3a9ca18a3d994bc2e134de52bf9efb05530219ae19339"}, - {file = "CoolProp-6.6.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:fbe7d8ec427e30a0e95716a77406da4fd7d1299e84f00cca228fa2f7a5ae4ec6"}, - {file = "CoolProp-6.6.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:96065c6c3f17b9b9eeec9620369ffab3047de747c2967db9598f20b56d0cdf2c"}, - {file = "CoolProp-6.6.0-cp38-cp38-win32.whl", hash = "sha256:d02d8ddf1e7af355a334323cc649a391b8c457993631665242d700875b6f7887"}, - {file = "CoolProp-6.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:10b4fd508dc85e2045cf02f5a8ba55c6c5ac9d4ebefbe7940dbc33fe4b392127"}, - {file = "CoolProp-6.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:647102f943d449294e67a89c6f23cf8e59c3763880cc2c7642de21dca2c53631"}, - {file = "CoolProp-6.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b0df572addaf43679f986d76a3cdbe4d4cbd6f4ffe89f1d63be3bd8be38c9212"}, - {file = "CoolProp-6.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c41db6c9172d0ae79e2b3b74aab0e63edeabab999c9dd6a3ca8a0df63f8bfc0"}, - {file = "CoolProp-6.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a994a909a8950170e55a5dce831e2b7b5b6f7cb66a3b49f1afdb04e43b35f42"}, - {file = "CoolProp-6.6.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:09437ff654af822caf8c904bb2882844a1d7ddffa19c9c9c4c3ef9e9a0f50be1"}, - {file = "CoolProp-6.6.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9aa70af252e973f8e1e87cd6ab41b94aa4d563906c57b41c170a9d3cae854797"}, - {file = "CoolProp-6.6.0-cp39-cp39-win32.whl", hash = "sha256:dff965f4e44d3af623a02c8bd55f9887daf21990a3f3f1f4bfc46e462106b9fd"}, - {file = "CoolProp-6.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:bb0ace860286cf2f9346e98a07bc8fc4ca55cf17ee0b1972a5b72a8bfb2716ac"}, - {file = "CoolProp-6.6.0.tar.gz", hash = "sha256:cf6fad704b3ae00f4df309cfd1e2ee48d155886b569a73f2cc38a57eda463082"}, -] + {file = "CoolProp-6.6.1.post1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d6c500a41865e16d8027c5c2025acd3522f13d08ba32a40673c0c8d344ae5226"}, + {file = "CoolProp-6.6.1.post1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2797d450d14162de0cc900c0167b9a17fe91bb982e71e9c9768e7b0f069570be"}, + {file = "CoolProp-6.6.1.post1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de5bf2be7bf7b435f9a66ecbb5bbeb9c41246433b606ad4e7937e539a7dcdad8"}, + {file = "CoolProp-6.6.1.post1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d9d99703409c8c221b648585fbb4cec0161a4aa070463eba9d9897ca984b359"}, + {file = "CoolProp-6.6.1.post1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:264cf65e409178618ee3e61b7b11f35533dc210fd4b1d4ebbaf895d46b610b95"}, + {file = "CoolProp-6.6.1.post1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e66b18f5b1cd14a587f7caf47519fec8f76b77cbec19936a074de817ab70c73b"}, + {file = "CoolProp-6.6.1.post1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c80e0dae5d7060b4a0539e94692c394a0a1ab82d5513dd10118a3adc1607d304"}, + {file = "CoolProp-6.6.1.post1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1eea83aca15190ff2cbe9cf261937bd51718b9d7dc009811467d2623171e6b58"}, + {file = "CoolProp-6.6.1.post1-cp310-cp310-win32.whl", hash = "sha256:15404e31488bf65afe6dbbc95dda856260ab50946a409f366ae72081a08bc616"}, + {file = "CoolProp-6.6.1.post1-cp310-cp310-win_amd64.whl", hash = "sha256:a1e42986445526971376fab31db87b14be9c7f090a43ae8e58c2f41df3b640f2"}, + {file = "CoolProp-6.6.1.post1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f30a287df0b03a0feb9ea7bdc6791e0f25d11132e7c6fb195378932685864503"}, + {file = "CoolProp-6.6.1.post1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6f7ef25bba8862cf1713ca776c6381f4e25fb3289ae9e046134f36b9758cef31"}, + {file = "CoolProp-6.6.1.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40a21eb13097b259e73aa526c1b0b8f7612c585650230d7b73c2e8a18b742fdd"}, + {file = "CoolProp-6.6.1.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc7f90aa864fdfcdf1585485d9ec75a837d07d60d78199294e6df52c32ca35ea"}, + {file = "CoolProp-6.6.1.post1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4851065a3881c4eb02aee86e036676c354139449bca6b3063924bfb61f971e7"}, + {file = "CoolProp-6.6.1.post1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8fc2379425f4181461996095313095f29bd9e753fc93157f674ead1dbfebd154"}, + {file = "CoolProp-6.6.1.post1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cf1b848ff68770378dc63f487b9d10e7c9fd93bd7c0e71f470c6a90dc427ea11"}, + {file = "CoolProp-6.6.1.post1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c2db5e853c883c8c97be5b16aea2c45333df41fd3981723c9b2eafdd87dea194"}, + {file = "CoolProp-6.6.1.post1-cp311-cp311-win32.whl", hash = "sha256:8b8cd2d23b86e237ea3db836df19dc0c54432d14ba830dd70d982b76c15494a4"}, + {file = "CoolProp-6.6.1.post1-cp311-cp311-win_amd64.whl", hash = "sha256:b603fb84aa5ebd79e9b5935cbd174ee110b69d7de662888fb7bb2e446a29532a"}, + {file = "CoolProp-6.6.1.post1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ac670d9046396b4d4c101473c129a7ec8759638db8ab3eb51dee015ceaf5c188"}, + {file = "CoolProp-6.6.1.post1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fdfb39c75055f061893200fd73b21d1af08ebe661c7e6d01660e4cd22fd59b31"}, + {file = "CoolProp-6.6.1.post1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:51a532252143176109dcb94f9a1bd8dc0b7bdf0a9623c5ab4e41f7040e500bab"}, + {file = "CoolProp-6.6.1.post1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40586d4c22471ce4ea076e950db630cba51e0329f91feef728c4a5b9c9072383"}, + {file = "CoolProp-6.6.1.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f1abca61fdfea21915cc5610d6fa46d74fe3c12e4319dac79054f590bffca27"}, + {file = "CoolProp-6.6.1.post1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:72761597e6d945534b59f4a4fcdec519e96bdc5911836bef813a0d93a28cf70d"}, + {file = "CoolProp-6.6.1.post1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:700ded8d5797089fce10dc5233bd0cb737487c3b06836e564c8c78d19a3e8eaf"}, + {file = "CoolProp-6.6.1.post1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:90ddf3dd21288f1b24cedd8aca8d73622f882bede21172c8038cf4996037b552"}, + {file = "CoolProp-6.6.1.post1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1506ffaf612b768c0866e841052fc382e612c4d18a9a11dafab0af81ceeba334"}, + {file = "CoolProp-6.6.1.post1-cp312-cp312-win32.whl", hash = "sha256:97ca588cbd1dbd1d57dfd3b041f85c4e72178fe20cbdb9a8ecc2c83c6dcdd3f0"}, + {file = "CoolProp-6.6.1.post1-cp312-cp312-win_amd64.whl", hash = "sha256:5f443f7cef1fb17c48e197c3ee2c4782185e3da48a1ae9d3dca1ceaa989f2c28"}, + {file = "CoolProp-6.6.1.post1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0741fe1eff61246d35761bf5e609d2931564db9fa5bb8743c5a24507f6c2215f"}, + {file = "CoolProp-6.6.1.post1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6d61ee672232e24d974a88ae998af6525c1dd75fd920a1c94cdd2c8c13c3c920"}, + {file = "CoolProp-6.6.1.post1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7aa3f581e9134dab3df055414f011ae71f1546faa01ecfeebfecdbed08981557"}, + {file = "CoolProp-6.6.1.post1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:149d78088e9ebeb6d2e597b77981151aff11ab745393bff6e63c0cdc64ec7f24"}, + {file = "CoolProp-6.6.1.post1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f18b731f9135bda7fa7e945dd6a73e966186367800c756ddf0d00afcf6a997bd"}, + {file = "CoolProp-6.6.1.post1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ff7117b53f5370128a7ab1ba891d3ca6a0157ce37587d805a94e3628ba5026da"}, + {file = "CoolProp-6.6.1.post1-cp313-cp313-win32.whl", hash = "sha256:93be09db30e5a8ef2bdc00e9f34e53252038ea75875a89d6ebbe7c6b81c745d3"}, + {file = "CoolProp-6.6.1.post1-cp313-cp313-win_amd64.whl", hash = "sha256:8c4eb0f5a969c4bfcabb71116dcf5e84eecf68f4f29dcb3cee2070114906d448"}, + {file = "CoolProp-6.6.1.post1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:3045f7e066edfa3d09868f19cec6fc3076a5f822fea06751a1738143ac101f58"}, + {file = "CoolProp-6.6.1.post1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbd4fce8abf156e6ab4eaddca666ae5d8dc34131066e96b5b824c65b170b5b63"}, + {file = "CoolProp-6.6.1.post1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1de999d8ed93fdf3826602f178d0deb45c2b51ece88ce14ce4ce1c22030cc8e"}, + {file = "CoolProp-6.6.1.post1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:cbdf333c2997f2941eb40fcbfe69073bc76ddd9d05a77cb57d4743cd17013525"}, + {file = "CoolProp-6.6.1.post1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:f5a5e564e7627567d6de6ef459b225c0980aa1997c891a1cb3aa6c1c23dadddd"}, + {file = "CoolProp-6.6.1.post1-cp36-cp36m-win32.whl", hash = "sha256:05c7bf3a40f086d5f5b3f58c6596bf79f4ccd0e50c6f6ab707a3b7c85f30e3e2"}, + {file = "CoolProp-6.6.1.post1-cp36-cp36m-win_amd64.whl", hash = "sha256:d295cbb4f153a13bac2c10a133ab302b217ce6dcf3cf91664476995987ded339"}, + {file = "CoolProp-6.6.1.post1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f295e6bf5b53ff9749f7f2ed995e8c5f6d6c1e16861422c4395074b4d30f105f"}, + {file = "CoolProp-6.6.1.post1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8f2c7e53a4d71efd00fd8acc63acc06eabf379da6e8b581c4cb698690521531"}, + {file = "CoolProp-6.6.1.post1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a613b4a05eff78c5d79ffdf5650326d355467ef76d823b9f807851f7647943"}, + {file = "CoolProp-6.6.1.post1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:242245454aea6c12b9e1bec72f7217c2ed56cb62ed763b7cdc2793962e35a001"}, + {file = "CoolProp-6.6.1.post1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1ef5f4df9c1e68149126e6e6a461484f87d51064df972a11fc36668879974d2b"}, + {file = "CoolProp-6.6.1.post1-cp37-cp37m-win32.whl", hash = "sha256:197c06b2cbdcf6e4990a6bddc1e1c82064096dafd5b2805a6c4eeaf625e4e55a"}, + {file = "CoolProp-6.6.1.post1-cp37-cp37m-win_amd64.whl", hash = "sha256:10a42c455e9011f08f4debba4fb69b451ebff910b80c2be6cd9daf6f6a3a3e98"}, + {file = "CoolProp-6.6.1.post1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:53938eff8ef384a1fbb20dc01112acbb9ffb6eac2310d416f9b77c4fa64b220d"}, + {file = "CoolProp-6.6.1.post1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:284b7302c4978d6cac94cff5c3cb4cd3dce96ca7a6d7800ae8ce2a99fb89202a"}, + {file = "CoolProp-6.6.1.post1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:876d1254e2cb6ddc82cdf22e0e77027061e1bd049b15a509ed1d89d4d31a2757"}, + {file = "CoolProp-6.6.1.post1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8da4a13812007b4825430403a36e95ca5dde6265c865469cc2d45ae7c1c1a4fa"}, + {file = "CoolProp-6.6.1.post1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:efa31d0d43e9ad966593fa3f5cfc87912a05af4db442d22255e6078d728c8c5d"}, + {file = "CoolProp-6.6.1.post1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:062b9e53c17bff4b9e7cf394bf2266d440bd12a4afab76dec3d129d7cc2798de"}, + {file = "CoolProp-6.6.1.post1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:fc2686e07523836c6c310147b68257e853689ab92fb9c62c70717f4ed6efc5e5"}, + {file = "CoolProp-6.6.1.post1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:4efee06bf04eb4c11eae890159e64b3361de0eca53aaf328a6601d4333f3cf57"}, + {file = "CoolProp-6.6.1.post1-cp38-cp38-win32.whl", hash = "sha256:997e6cb8fbfd63ca44ad77e4e770bb2eef42fc95e529dafa0a859864e849e5db"}, + {file = "CoolProp-6.6.1.post1-cp38-cp38-win_amd64.whl", hash = "sha256:0d3f52d503af96ba94b096dbac10a4330272ba00838ea920c389b2c1af124efb"}, + {file = "CoolProp-6.6.1.post1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f773e1c71a70f29b191d74e6f20dcad70735696cecd8a87268c6b6c658b85062"}, + {file = "CoolProp-6.6.1.post1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d95bcdfb36dccba76bfd2e256af0c813f1b66d435470692b5154567920b49257"}, + {file = "CoolProp-6.6.1.post1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4bec88d64db514b62d67e92a15e9a401e5613e1b2aa6d7c63b6a2b1077deaed3"}, + {file = "CoolProp-6.6.1.post1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68741071480d7ee9d886ad8cf454731b31784b20829e31f0b2550bba4c25735e"}, + {file = "CoolProp-6.6.1.post1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b727bc34133eeef435b1ceea991e5130f03cfadc21c3fe4a636de433f0b34d28"}, + {file = "CoolProp-6.6.1.post1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1503506a2bac95dd78f3484d7741afb2548d4649e0305ead0eba57c16110fa9c"}, + {file = "CoolProp-6.6.1.post1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:9a2683b4729e2ae3cf82b0e15bdef1eef23998099c532b600b5817de604e15b1"}, + {file = "CoolProp-6.6.1.post1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ba0d0874bab3f735616a75d6a6045e2f079a295a54cd39f602492d4c09f92ac9"}, + {file = "CoolProp-6.6.1.post1-cp39-cp39-win32.whl", hash = "sha256:5b6f7df57a20c64129245aa7d4a385664de861d52c785b2f8060b54ddf0b55a6"}, + {file = "CoolProp-6.6.1.post1-cp39-cp39-win_amd64.whl", hash = "sha256:853885c6c43311ba39d0802866c86f9c414586cca45fda1868742a11c503af99"}, +] + +[package.source] +type = "legacy" +url = "https://test.pypi.org/simple" +reference = "test-pypi" [[package]] name = "dill" @@ -883,4 +906,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "e978578c5a7991a63e49b425caabae8587db0142ba28cc647774c5e9958817c4" +content-hash = "03cd665bdf2f3a9d8e2fae69c78c71d09d979a9171895770f5705797abde0508" diff --git a/pyproject.toml b/pyproject.toml index 49e46e4..33c6157 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,10 +4,15 @@ version = "0.1.0" description = "" authors = ["Big Ladder Software"] +[[tool.poetry.source]] +name = "test-pypi" +url = "https://test.pypi.org/simple/" +priority = "explicit" + [tool.poetry.dependencies] python = "^3.10" koozie = "^1.2.4" -CoolProp = "^6.6.0" +CoolProp = {version="6.6.1.post1", source = "test-pypi"} #"^6.6.0" scipy = "^1.11.4" PsychroLib = "^2.5.0"