RWTH-EBC / FiLiP

FIWARE Library for Python (FiLiP) to work with FIWARE API
BSD 3-Clause "New" or "Revised" License
23 stars 13 forks source link

Make unit model hashable #186

Open tstorek opened 1 year ago

tstorek commented 1 year ago

Is your feature request related to a problem? Please describe. Currently, the units model is not hashable although the content should be immutable and, hence, frozen. But due to the missing Config in the model the __hash__ function is not generated by pydantic.

Describe the solution you'd like I would like to add the following content to the model:

class Unit(BaseModel):
    ...

    class Config:
        extra = 'ignore'
        allow_population_by_field_name = True
        allow_mutation = False
        frozen = True

Describe alternatives you've considered Inherit, the Unit model and add a specific Config object. However, this may lead to inconssitency

Additional context Use case: I have a list ob sensors that also contains information about the unit. For mapping measurements to the sepcific sensors I regularly must loop throuth this list. Therefore, caching such lookup can be wuite useful. Caching though requires hashing of the Objects in the list that I qant to operate on.

djs0109 commented 1 year ago

Hello @tstorek , thanks for the detailed report, it makes sense to me. Can you describe a bit more what do you mean by "caching", and what kind of error you have received while trying to cach? It could be useful to other users, who later come into the same problem. But anyway, it is nice to hear from you! :)

tstorek commented 1 year ago

@djs0109 Python supports builtin caching of functions as long as all args are hashable. Using this minimized access time if the function call is identical with a former function call because the function reponse was already caluculated earlier. This is quite useful for filtering etc.