msrest-for-python icon indicating copy to clipboard operation
msrest-for-python copied to clipboard

Serialize np.float64 as float

Open mzat-msft opened this issue 2 years ago • 2 comments

On my machine np.float64 are the same as float, so I would expect that they are serialized in the same way. However, this is not the case as the logic in https://github.com/Azure/msrest-for-python/blob/af41991f17445e4cb26d39c247f091ddfd7027b9/msrest/serialization.py#L944 infer the type of the object's attribute using type rather than isinstance.

Do you think it makes sense to treat classes that are subclasses of basic types as basic types in the serialization process?

Here is a minimal working example of what I'm referring to. Note that np-float is cast to a str instead of a float.

import msrest.serialization
import numpy as np


class ModelWithNpFloat(msrest.serialization.Model):
    _attribute_map = {
        "state": {"key": "state", "type": "object"},
    }

    def __init__(self, state):
        self.state = state


model = ModelWithNpFloat(state={'np-float': np.float64(100)})
print(model.serialize())  # {'state': {'np-float': '100.0'}}

mzat-msft avatar Nov 16 '22 09:11 mzat-msft