Fix unbound method call for JSONEncoder (#17970)
* Fix unbound method call for JSONEncoder The way it is currently it will lead to unbound method error ```python In [1]: import json In [2]: json.JSONEncoder.default('object_here') --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-2-872fdacfda50> in <module>() ----> 1 json.JSONEncoder.default('object_here') TypeError: unbound method default() must be called with JSONEncoder instance as first argument (got str instance instead) ``` But what is really wanted is to let the json module to raise the "is not serializable error" which demands a bounded instance of `JSONEncoder()` ```python In [3]: json.JSONEncoder().default('object_here') --------------------------------------------------------------------------- TypeError: 'object_here' is not JSON serializable ``` BTW: I think it would try to call `.to_json` of object before raising as it is a common pattern. * Calling JSONEncoder bounded `default` method using super()
This commit is contained in:
parent
20aedf90e7
commit
b06fb2022c
1 changed files with 1 additions and 1 deletions
|
@ -67,7 +67,7 @@ class AnsibleJSONEncoder(json.JSONEncoder):
|
||||||
if isinstance(o, HostVars):
|
if isinstance(o, HostVars):
|
||||||
return dict(o)
|
return dict(o)
|
||||||
else:
|
else:
|
||||||
return json.JSONEncoder.default(o)
|
return super(AnsibleJSONEncoder, self).default(o)
|
||||||
|
|
||||||
def to_yaml(a, *args, **kw):
|
def to_yaml(a, *args, **kw):
|
||||||
'''Make verbose, human readable yaml'''
|
'''Make verbose, human readable yaml'''
|
||||||
|
|
Loading…
Reference in a new issue