jmcarp / flask-apispec

MIT License
655 stars 156 forks source link

0.10.0 TypeError: unhashable type: 'list' when docs.register #199

Open manycoding opened 4 years ago

manycoding commented 4 years ago

Full code to reproduce https://github.com/manycoding/address-parser/blob/master/api.py

I updated flask-apispec recently to 0.10.0 and started to get this error:

tests/test_api.py:4: in <module>
    from api import *
api.py:91: in <module>
    docs.register(r)
../../../.local/share/virtualenvs/address-parser-Md-fr1rx/lib/python3.8/site-packages/flask_apispec/extension.py:124: in register
    self._defer(self._register, target, endpoint, blueprint,
../../../.local/share/virtualenvs/address-parser-Md-fr1rx/lib/python3.8/site-packages/flask_apispec/extension.py:72: in _defer
    bound()
../../../.local/share/virtualenvs/address-parser-Md-fr1rx/lib/python3.8/site-packages/flask_apispec/extension.py:142: in _register
    paths = self.resource_converter.convert(
../../../.local/share/virtualenvs/address-parser-Md-fr1rx/lib/python3.8/site-packages/flask_apispec/apidoc.py:39: in convert
    return [self.get_path(rule, target, **kwargs) for rule in rules]
../../../.local/share/virtualenvs/address-parser-Md-fr1rx/lib/python3.8/site-packages/flask_apispec/apidoc.py:39: in <listcomp>
    return [self.get_path(rule, target, **kwargs) for rule in rules]
../../../.local/share/virtualenvs/address-parser-Md-fr1rx/lib/python3.8/site-packages/flask_apispec/apidoc.py:51: in get_path
    'operations': {
../../../.local/share/virtualenvs/address-parser-Md-fr1rx/lib/python3.8/site-packages/flask_apispec/apidoc.py:52: in <dictcomp>
    method.lower(): self.get_operation(rule, view, parent=parent)
../../../.local/share/virtualenvs/address-parser-Md-fr1rx/lib/python3.8/site-packages/flask_apispec/apidoc.py:66: in get_operation
    'parameters': self.get_parameters(rule, view, docs, parent),
../../../.local/share/virtualenvs/address-parser-Md-fr1rx/lib/python3.8/site-packages/flask_apispec/apidoc.py:99: in get_parameters
    extra_params += converter(schema, **options) if args else []
../../../.local/share/virtualenvs/address-parser-Md-fr1rx/lib/python3.8/site-packages/apispec/ext/marshmallow/openapi.py:171: in fields2parameters
    param = self.field2parameter(
../../../.local/share/virtualenvs/address-parser-Md-fr1rx/lib/python3.8/site-packages/apispec/ext/marshmallow/openapi.py:201: in field2parameter
    return self.property2parameter(
../../../.local/share/virtualenvs/address-parser-Md-fr1rx/lib/python3.8/site-packages/apispec/ext/marshmallow/openapi.py:226: in property2parameter
    openapi_default_in = __location_map__.get(default_in, default_in)
E   TypeError: unhashable type: 'list'

webargs ==6.1.0 marshmallow ==3.7.1