Skip to content

Commit

Permalink
update loading/dumping of battery models
Browse files Browse the repository at this point in the history
  • Loading branch information
ahalev committed Apr 5, 2023
1 parent 48ce922 commit 91dc011
Showing 1 changed file with 19 additions and 3 deletions.
22 changes: 19 additions & 3 deletions src/pymgrid/modules/battery/transition_models/transition_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,13 +80,29 @@ def transition(self, external_energy_change, efficiency, **kwargs):
else:
return external_energy_change * efficiency

def __repr__(self):
def new_kwargs(self):
params = inspect.signature(self.__init__).parameters
params = {k: v for k, v in params.items() if k not in ('args', 'kwargs')}
formatted_params = ', '.join([f'{p}={getattr(self, p)}' for p in params])
params = {k: getattr(self, k) for k in params.keys() if k not in ('args', 'kwargs')}
return params

def __repr__(self):
params = self.new_kwargs()
formatted_params = ', '.join([f'{p}={v}' for p, v in params.items()])
return f'{self.__class__.__name__}({formatted_params})'

def __eq__(self, other):
if type(self) != type(other):
return NotImplemented
return repr(self) == repr(other)

@classmethod
def to_yaml(cls, dumper, data):
return dumper.represent_mapping(cls.yaml_tag, data.new_kwargs(), flow_style=cls.yaml_flow_style)

@classmethod
def from_yaml(cls, loader, node):
mapping = loader.construct_mapping(node, deep=True)
if mapping:
return cls(**mapping)
else:
return cls()

0 comments on commit 91dc011

Please sign in to comment.