dlubal-software / RSTAB_Python_Client

Python client (or high-level functions) for RSTAB 9 using Web Services, SOAP, and WSDL
MIT License
9 stars 4 forks source link

BUG: TypeError: unsupported operand type(s) for +: 'EnumMeta' and 'str' for MemberLoad #19

Closed and-ratajski closed 1 year ago

and-ratajski commented 1 year ago

Describe the bug When defining a MemberLoad setting a _load_direction_ parameter via MemberLoadDirection enum a TypeError gets raised.

To Reproduce Define a MemberLoad with a MemberLoadDirection enum for _load_direction_ parameter, e.g.:

MemberLoad(n+1, 2, str(k+3), MemberLoadDirection.LOAD_DIRECTION_GLOBAL_Z_OR_USER_DEFINED_W_TRUE, 3500)

and try to recalculate it so the deleteEmptyAttributes function gets called.

Expected behavior You can define a MemberLoadDirection enum as _load_direction_ parameter.

Screenshots Possible bug: https://github.com/Dlubal-Software/RSTAB_Python_Client/blob/e90adcbd3f97b18d6a3b29b2f8b3c1e66152dfb5/RSTAB/initModel.py#L239-L254

Desktop (please complete the following information):

Additional context Possible solution:

    for i in it:
        if isinstance(i, str) or isinstance(i, int) or isinstance(i, float) or isinstance(i, bool) or isinstance(i, Enum):
            continue
        if len(i) > 2:
            i = deleteEmptyAttributes(i)
        elif i[1] is None or i[1] == "":
            delattr(obj, i[0])
        elif isinstance(i[1], str) or isinstance(i[1], int) or isinstance(i[1], float) or isinstance(i[1], bool) or isinstance(i[1], Enum):
            pass
        else:
            if isinstance(i, tuple):
                i = list(i)
                i[1] = deleteEmptyAttributes(i[1])
                i = tuple(i)
            else:
                i[1] = deleteEmptyAttributes(i[1])

Testing script: RSTAB_error_eg.py.zip

and-ratajski commented 1 year ago

For proper enum values it turns out to work. No action needed.