unifhy-org / unifhy

A Unified Framework for Hydrology
https://unifhy-org.github.io/unifhy
BSD 3-Clause "New" or "Revised" License
11 stars 5 forks source link

Revise API for component parameters, constants, and states #39

Closed ThibHlln closed 3 years ago

ThibHlln commented 3 years ago

In Component definition (relevant for contributors):

Old API

class MyComponent(...):

    _constants_info = {
        'constant_name': {
            'units': 'm2'
        }
    }

    def run(..., constant_name=1., **kwargs):
        ...

New API

class MyComponent(...):

    _constants_info = {
        'constant_name': {
            'units': 'm2',
            'default_value': 1.
        }
    }

    def run(..., constant_name, **kwargs):
        ...
class MyComponent(...):

    _states_info = {
        'state_name': {
            'units': 'kg m-2',
            'divisions': (7, 'constant_name')
        }
    }
    _constants_info = {
        'constant_name': {
            'units': '1',
            'default_value': 10
        }
    }

In Component implementation (relevant for contributors):

In Component instantiation (relevant for users):

Old API

parameters = {
    'parameter_name': 1.
}

New API

parameters = {
    'parameter_name_1': [1., 'm'],
    'parameter_name_2': cf.Data(1., 'm'),
    'parameter_name_3': (numpy.ones((3, 2), 'm'),
    'parameter_name_4': cf.Data(numpy.ones((3, 2), 'm'),
    'parameter_name_5': cf.Field(...)
}