python-bindings icon indicating copy to clipboard operation
python-bindings copied to clipboard

Improve errors from `convert` function

Open BenjaminRodenberg opened this issue 2 years ago • 1 comments

The error return by the convert function is not helpful at the moment. I stumbled over this when I organized my participant names in an Enum

class ParticipantNames(Enum):
    MASS_LEFT = "Mass-Left"
    MASS_RIGHT = "Mass-Right"

One has to pass, for example, ParticipantNames.MASS_LEFT.value to the API. But I forgot the .values part, which led to an errors similar to

>>> precice.Interface(1,2,3,4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "cyprecice/cyprecice.pyx", line 87, in cyprecice.Interface.__cinit__
  File "cyprecice/cyprecice.pyx", line 24, in cyprecice.convert
TypeError: Could not convert.

I think it would be good to tell the user which type was received from the API and which types are supported here. If I would have known that I provided a <enum 'ParticipantNames'> instead of a <class 'str'> this would have helped me a lot debugging.

BenjaminRodenberg avatar Mar 13 '23 14:03 BenjaminRodenberg

Another point where this problem shows up: If you provide the path to the configuration file not as a string, but as a pathlib.Path (which I think is actually the preferrable way of doing things). I now have to convert a pathlib.Path to a str before handing it over to the python API.

BenjaminRodenberg avatar Mar 14 '23 15:03 BenjaminRodenberg