Merge pull request #1738 from abikouo/fix_resource_field
fix issue when trying to build ResourceField with argument name 'self'
This commit is contained in:
commit
c66a39108b
@ -298,7 +298,7 @@ class ResourceInstance(object):
|
||||
|
||||
def __deserialize(self, field):
|
||||
if isinstance(field, dict):
|
||||
return ResourceField(**{
|
||||
return ResourceField(params={
|
||||
k: self.__deserialize(v) for k, v in field.items()
|
||||
})
|
||||
elif isinstance(field, (list, tuple)):
|
||||
@ -359,8 +359,8 @@ class ResourceField(object):
|
||||
attributes to be accessed with '.' notation
|
||||
"""
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
self.__dict__.update(kwargs)
|
||||
def __init__(self, params):
|
||||
self.__dict__.update(**params)
|
||||
|
||||
def __repr__(self):
|
||||
return pformat(self.__dict__)
|
||||
|
||||
@ -558,6 +558,12 @@ class TestDynamicClientSerialization(unittest.TestCase):
|
||||
"""`ResourceField` is a special type which overwrites `__getattr__` method to return `None`
|
||||
when a non-existent attribute was accessed. which means it can pass any `hasattr(...)` tests.
|
||||
"""
|
||||
res = ResourceField(foo='bar')
|
||||
params = {
|
||||
"foo": "bar",
|
||||
"self": True
|
||||
}
|
||||
res = ResourceField(params=params)
|
||||
self.assertEqual(res["foo"], params["foo"])
|
||||
self.assertEqual(res["self"], params["self"])
|
||||
# method will return original object when it doesn't know how to proceed
|
||||
self.assertEqual(self.client.serialize_body(res), res)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user