<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>TypeError: 'in <string>' requires string as left operand, not dict // Werkzeug Debugger</title>
<link rel="stylesheet" href="?__debugger__=yes&cmd=resource&f=style.css" type="text/css">
<!-- We need to make sure this has a favicon so that the debugger does
not by accident trigger a request to /favicon.ico which might
change the application state. -->
<link rel="shortcut icon" href="?__debugger__=yes&cmd=resource&f=console.png">
<script src="?__debugger__=yes&cmd=resource&f=jquery.js"></script>
<script src="?__debugger__=yes&cmd=resource&f=debugger.js"></script>
<script type="text/javascript">
var TRACEBACK = 140413129039264,
CONSOLE_MODE = false,
EVALEX = true,
EVALEX_TRUSTED = false,
SECRET = "sD6itptZZvKivP7pvVpH";
</script>
</head>
<body style="background-color: #fff">
<div class="debugger">
<h1>TypeError</h1>
<div class="detail">
<p class="errormsg">TypeError: 'in <string>' requires string as left operand, not dict</p>
</div>
<h2 class="traceback">Traceback <em>(most recent call last)</em></h2>
<div class="traceback">
<ul>
<li>
<div class="frame" id="frame-140413103141048">
<h4>File
<cite class="filename">"/usr/local/lib/python3.5/dist-packages/flask_restx/model.py"</cite>,
line <em class="line">104</em>,
in <code class="function">validate</code></h4>
<div class="source ">
<pre class="line before"><span class="ws"> </span>return model</pre>
<pre class="line before"><span class="ws"></span> </pre>
<pre
class="line before"><span class="ws"> </span>def validate(self, data, resolver=None, format_checker=None):</pre>
<pre
class="line before"><span class="ws"> </span>validator = Draft4Validator(self.__schema__, resolver=resolver, format_checker=format_checker)</pre>
<pre class="line before"><span class="ws"> </span>try:</pre>
<pre class="line current"><span class="ws"> </span>validator.validate(data)</pre>
<pre class="line after"><span class="ws"> </span>except ValidationError:</pre>
<pre
class="line after"><span class="ws"> </span>abort(HTTPStatus.BAD_REQUEST, message='Input payload validation failed',</pre>
<pre
class="line after"><span class="ws"> </span>errors=dict(self.format_error(e) for e in validator.iter_errors(data)))</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws"> </span>def format_error(self, error):</pre>
</div>
</div>
<li>
<div class="frame" id="frame-140413103141720">
<h4>File
<cite class="filename">"/usr/local/lib/python3.5/dist-packages/jsonschema/validators.py"</cite>,
line <em class="line">353</em>,
in <code class="function">validate</code></h4>
<div class="source ">
<pre
class="line before"><span class="ws"> </span>error.schema_path.appendleft(schema_path)</pre>
<pre class="line before"><span class="ws"> </span>yield error</pre>
<pre class="line before"><span class="ws"></span> </pre>
<pre
class="line before"><span class="ws"> </span>def validate(self, *args, **kwargs):</pre>
<pre
class="line before"><span class="ws"> </span>for error in self.iter_errors(*args, **kwargs):</pre>
<pre class="line current"><span class="ws"> </span>raise error</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre
class="line after"><span class="ws"> </span>def is_type(self, instance, type):</pre>
<pre class="line after"><span class="ws"> </span>try:</pre>
<pre
class="line after"><span class="ws"> </span>return self.TYPE_CHECKER.is_type(instance, type)</pre>
<pre
class="line after"><span class="ws"> </span>except exceptions.UndefinedTypeCheck:</pre>
</div>
</div>
<li>
<div class="exc-divider">During handling of the above exception, another exception occurred:</div>
<li>
<div class="frame" id="frame-140413129039096">
<h4>File <cite class="filename">"/usr/local/lib/python3.5/dist-packages/flask/app.py"</cite>,
line <em class="line">2463</em>,
in <code class="function">__call__</code></h4>
<div class="source ">
<pre class="line before"><span class="ws"></span> </pre>
<pre
class="line before"><span class="ws"> </span>def __call__(self, environ, start_response):</pre>
<pre
class="line before"><span class="ws"> </span>"""The WSGI server calls the Flask application object as the</pre>
<pre
class="line before"><span class="ws"> </span>WSGI application. This calls :meth:`wsgi_app` which can be</pre>
<pre
class="line before"><span class="ws"> </span>wrapped to applying middleware."""</pre>
<pre
class="line current"><span class="ws"> </span>return self.wsgi_app(environ, start_response)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws"> </span>def __repr__(self):</pre>
<pre
class="line after"><span class="ws"> </span>return "<%s %r>" % (self.__class__.__name__, self.name)</pre>
</div>
</div>
<li>
<div class="frame" id="frame-140413129038928">
<h4>File <cite class="filename">"/usr/local/lib/python3.5/dist-packages/flask/app.py"</cite>,
line <em class="line">2449</em>,
in <code class="function">wsgi_app</code></h4>
<div class="source ">
<pre class="line before"><span class="ws"> </span>try:</pre>
<pre class="line before"><span class="ws"> </span>ctx.push()</pre>
<pre
class="line before"><span class="ws"> </span>response = self.full_dispatch_request()</pre>
<pre class="line before"><span class="ws"> </span>except Exception as e:</pre>
<pre class="line before"><span class="ws"> </span>error = e</pre>
<pre
class="line current"><span class="ws"> </span>response = self.handle_exception(e)</pre>
<pre class="line after"><span class="ws"> </span>except: # noqa: B001</pre>
<pre
class="line after"><span class="ws"> </span>error = sys.exc_info()[1]</pre>
<pre class="line after"><span class="ws"> </span>raise</pre>
<pre
class="line after"><span class="ws"> </span>return response(environ, start_response)</pre>
<pre class="line after"><span class="ws"> </span>finally:</pre>
</div>
</div>
<li>
<div class="frame" id="frame-140413129039320">
<h4>File
<cite class="filename">"/usr/local/lib/python3.5/dist-packages/flask_restx/api.py"</cite>,
line <em class="line">599</em>,
in <code class="function">error_router</code></h4>
<div class="source ">
<pre class="line before"><span class="ws"> </span>'''</pre>
<pre class="line before"><span class="ws"> </span>if self._has_fr_route():</pre>
<pre class="line before"><span class="ws"> </span>try:</pre>
<pre
class="line before"><span class="ws"> </span>return self.handle_error(e)</pre>
<pre class="line before"><span class="ws"> </span>except Exception as f:</pre>
<pre
class="line current"><span class="ws"> </span>return original_handler(f)</pre>
<pre class="line after"><span class="ws"> </span>return original_handler(e)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws"> </span>def handle_error(self, e):</pre>
<pre class="line after"><span class="ws"> </span>'''</pre>
<pre
class="line after"><span class="ws"> </span>Error handler for the API transforms a raised exception into a Flask response,</pre>
</div>
</div>
<li>
<div class="frame" id="frame-140413129038816">
<h4>File <cite class="filename">"/usr/local/lib/python3.5/dist-packages/flask/app.py"</cite>,
line <em class="line">1866</em>,
in <code class="function">handle_exception</code></h4>
<div class="source ">
<pre
class="line before"><span class="ws"> </span># if we want to repropagate the exception, we can attempt to</pre>
<pre
class="line before"><span class="ws"> </span># raise it with the whole traceback in case we can do that</pre>
<pre
class="line before"><span class="ws"> </span># (the function was actually called from the except part)</pre>
<pre
class="line before"><span class="ws"> </span># otherwise, we just raise the error again</pre>
<pre class="line before"><span class="ws"> </span>if exc_value is e:</pre>
<pre
class="line current"><span class="ws"> </span>reraise(exc_type, exc_value, tb)</pre>
<pre class="line after"><span class="ws"> </span>else:</pre>
<pre class="line after"><span class="ws"> </span>raise e</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre
class="line after"><span class="ws"> </span>self.log_exception((exc_type, exc_value, tb))</pre>
<pre
class="line after"><span class="ws"> </span>server_error = InternalServerError()</pre>
</div>
</div>
<li>
<div class="frame" id="frame-140413129039432">
<h4>File
<cite class="filename">"/usr/local/lib/python3.5/dist-packages/flask/_compat.py"</cite>,
line <em class="line">39</em>,
in <code class="function">reraise</code></h4>
<div class="source ">
<pre
class="line before"><span class="ws"> </span>import collections.abc as collections_abc</pre>
<pre class="line before"><span class="ws"></span> </pre>
<pre class="line before"><span class="ws"> </span>def reraise(tp, value, tb=None):</pre>
<pre
class="line before"><span class="ws"> </span>if value.__traceback__ is not tb:</pre>
<pre
class="line before"><span class="ws"> </span>raise value.with_traceback(tb)</pre>
<pre class="line current"><span class="ws"> </span>raise value</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws"> </span>implements_to_string = _identity</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws"></span>else:</pre>
<pre class="line after"><span class="ws"> </span>iterkeys = lambda d: d.iterkeys()</pre>
</div>
</div>
<li>
<div class="frame" id="frame-140413129039208">
<h4>File
<cite class="filename">"/usr/local/lib/python3.5/dist-packages/flask_restx/api.py"</cite>,
line <em class="line">597</em>,
in <code class="function">error_router</code></h4>
<div class="source ">
<pre
class="line before"><span class="ws"> </span>:param function original_handler: the original Flask error handler for the app</pre>
<pre
class="line before"><span class="ws"> </span>:param Exception e: the exception raised while handling the request</pre>
<pre class="line before"><span class="ws"> </span>'''</pre>
<pre class="line before"><span class="ws"> </span>if self._has_fr_route():</pre>
<pre class="line before"><span class="ws"> </span>try:</pre>
<pre
class="line current"><span class="ws"> </span>return self.handle_error(e)</pre>
<pre class="line after"><span class="ws"> </span>except Exception as f:</pre>
<pre
class="line after"><span class="ws"> </span>return original_handler(f)</pre>
<pre class="line after"><span class="ws"> </span>return original_handler(e)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws"> </span>def handle_error(self, e):</pre>
</div>
</div>
<li>
<div class="frame" id="frame-140413129039488">
<h4>File <cite class="filename">"/usr/local/lib/python3.5/dist-packages/flask/app.py"</cite>,
line <em class="line">2446</em>,
in <code class="function">wsgi_app</code></h4>
<div class="source ">
<pre
class="line before"><span class="ws"> </span>ctx = self.request_context(environ)</pre>
<pre class="line before"><span class="ws"> </span>error = None</pre>
<pre class="line before"><span class="ws"> </span>try:</pre>
<pre class="line before"><span class="ws"> </span>try:</pre>
<pre class="line before"><span class="ws"> </span>ctx.push()</pre>
<pre
class="line current"><span class="ws"> </span>response = self.full_dispatch_request()</pre>
<pre class="line after"><span class="ws"> </span>except Exception as e:</pre>
<pre class="line after"><span class="ws"> </span>error = e</pre>
<pre
class="line after"><span class="ws"> </span>response = self.handle_exception(e)</pre>
<pre class="line after"><span class="ws"> </span>except: # noqa: B001</pre>
<pre
class="line after"><span class="ws"> </span>error = sys.exc_info()[1]</pre>
</div>
</div>
<li>
<div class="frame" id="frame-140413129039600">
<h4>File <cite class="filename">"/usr/local/lib/python3.5/dist-packages/flask/app.py"</cite>,
line <em class="line">1951</em>,
in <code class="function">full_dispatch_request</code></h4>
<div class="source ">
<pre
class="line before"><span class="ws"> </span>request_started.send(self)</pre>
<pre
class="line before"><span class="ws"> </span>rv = self.preprocess_request()</pre>
<pre class="line before"><span class="ws"> </span>if rv is None:</pre>
<pre
class="line before"><span class="ws"> </span>rv = self.dispatch_request()</pre>
<pre class="line before"><span class="ws"> </span>except Exception as e:</pre>
<pre
class="line current"><span class="ws"> </span>rv = self.handle_user_exception(e)</pre>
<pre
class="line after"><span class="ws"> </span>return self.finalize_request(rv)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre
class="line after"><span class="ws"> </span>def finalize_request(self, rv, from_error_handler=False):</pre>
<pre
class="line after"><span class="ws"> </span>"""Given the return value from a view function this finalizes</pre>
<pre
class="line after"><span class="ws"> </span>the request by converting it into a response and invoking the</pre>
</div>
</div>
<li>
<div class="frame" id="frame-140413129039656">
<h4>File
<cite class="filename">"/usr/local/lib/python3.5/dist-packages/flask_restx/api.py"</cite>,
line <em class="line">599</em>,
in <code class="function">error_router</code></h4>
<div class="source ">
<pre class="line before"><span class="ws"> </span>'''</pre>
<pre class="line before"><span class="ws"> </span>if self._has_fr_route():</pre>
<pre class="line before"><span class="ws"> </span>try:</pre>
<pre
class="line before"><span class="ws"> </span>return self.handle_error(e)</pre>
<pre class="line before"><span class="ws"> </span>except Exception as f:</pre>
<pre
class="line current"><span class="ws"> </span>return original_handler(f)</pre>
<pre class="line after"><span class="ws"> </span>return original_handler(e)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws"> </span>def handle_error(self, e):</pre>
<pre class="line after"><span class="ws"> </span>'''</pre>
<pre
class="line after"><span class="ws"> </span>Error handler for the API transforms a raised exception into a Flask response,</pre>
</div>
</div>
<li>
<div class="frame" id="frame-140413129039544">
<h4>File <cite class="filename">"/usr/local/lib/python3.5/dist-packages/flask/app.py"</cite>,
line <em class="line">1820</em>,
in <code class="function">handle_user_exception</code></h4>
<div class="source ">
<pre
class="line before"><span class="ws"> </span>return self.handle_http_exception(e)</pre>
<pre class="line before"><span class="ws"></span> </pre>
<pre
class="line before"><span class="ws"> </span>handler = self._find_error_handler(e)</pre>
<pre class="line before"><span class="ws"></span> </pre>
<pre class="line before"><span class="ws"> </span>if handler is None:</pre>
<pre
class="line current"><span class="ws"> </span>reraise(exc_type, exc_value, tb)</pre>
<pre class="line after"><span class="ws"> </span>return handler(e)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws"> </span>def handle_exception(self, e):</pre>
<pre
class="line after"><span class="ws"> </span>"""Handle an exception that did not have an error handler</pre>
<pre
class="line after"><span class="ws"> </span>associated with it, or that was raised from an error handler.</pre>
</div>
</div>
<li>
<div class="frame" id="frame-140413129039768">
<h4>File
<cite class="filename">"/usr/local/lib/python3.5/dist-packages/flask/_compat.py"</cite>,
line <em class="line">39</em>,
in <code class="function">reraise</code></h4>
<div class="source ">
<pre
class="line before"><span class="ws"> </span>import collections.abc as collections_abc</pre>
<pre class="line before"><span class="ws"></span> </pre>
<pre class="line before"><span class="ws"> </span>def reraise(tp, value, tb=None):</pre>
<pre
class="line before"><span class="ws"> </span>if value.__traceback__ is not tb:</pre>
<pre
class="line before"><span class="ws"> </span>raise value.with_traceback(tb)</pre>
<pre class="line current"><span class="ws"> </span>raise value</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws"> </span>implements_to_string = _identity</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws"></span>else:</pre>
<pre class="line after"><span class="ws"> </span>iterkeys = lambda d: d.iterkeys()</pre>
</div>
</div>
<li>
<div class="frame" id="frame-140413129038872">
<h4>File
<cite class="filename">"/usr/local/lib/python3.5/dist-packages/flask_restx/api.py"</cite>,
line <em class="line">597</em>,
in <code class="function">error_router</code></h4>
<div class="source ">
<pre
class="line before"><span class="ws"> </span>:param function original_handler: the original Flask error handler for the app</pre>
<pre
class="line before"><span class="ws"> </span>:param Exception e: the exception raised while handling the request</pre>
<pre class="line before"><span class="ws"> </span>'''</pre>
<pre class="line before"><span class="ws"> </span>if self._has_fr_route():</pre>
<pre class="line before"><span class="ws"> </span>try:</pre>
<pre
class="line current"><span class="ws"> </span>return self.handle_error(e)</pre>
<pre class="line after"><span class="ws"> </span>except Exception as f:</pre>
<pre
class="line after"><span class="ws"> </span>return original_handler(f)</pre>
<pre class="line after"><span class="ws"> </span>return original_handler(e)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws"> </span>def handle_error(self, e):</pre>
</div>
</div>
<li>
<div class="frame" id="frame-140413129039824">
<h4>File <cite class="filename">"/usr/local/lib/python3.5/dist-packages/flask/app.py"</cite>,
line <em class="line">1949</em>,
in <code class="function">full_dispatch_request</code></h4>
<div class="source ">
<pre
class="line before"><span class="ws"> </span>self.try_trigger_before_first_request_functions()</pre>
<pre class="line before"><span class="ws"> </span>try:</pre>
<pre
class="line before"><span class="ws"> </span>request_started.send(self)</pre>
<pre
class="line before"><span class="ws"> </span>rv = self.preprocess_request()</pre>
<pre class="line before"><span class="ws"> </span>if rv is None:</pre>
<pre
class="line current"><span class="ws"> </span>rv = self.dispatch_request()</pre>
<pre class="line after"><span class="ws"> </span>except Exception as e:</pre>
<pre
class="line after"><span class="ws"> </span>rv = self.handle_user_exception(e)</pre>
<pre
class="line after"><span class="ws"> </span>return self.finalize_request(rv)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre
class="line after"><span class="ws"> </span>def finalize_request(self, rv, from_error_handler=False):</pre>
</div>
</div>
<li>
<div class="frame" id="frame-140413129039376">
<h4>File <cite class="filename">"/usr/local/lib/python3.5/dist-packages/flask/app.py"</cite>,
line <em class="line">1935</em>,
in <code class="function">dispatch_request</code></h4>
<div class="source ">
<pre
class="line before"><span class="ws"> </span>getattr(rule, "provide_automatic_options", False)</pre>
<pre
class="line before"><span class="ws"> </span>and req.method == "OPTIONS"</pre>
<pre class="line before"><span class="ws"> </span>):</pre>
<pre
class="line before"><span class="ws"> </span>return self.make_default_options_response()</pre>
<pre
class="line before"><span class="ws"> </span># otherwise dispatch to the handler for that endpoint</pre>
<pre
class="line current"><span class="ws"> </span>return self.view_functions[rule.endpoint](**req.view_args)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws"> </span>def full_dispatch_request(self):</pre>
<pre
class="line after"><span class="ws"> </span>"""Dispatches the request and on top of that performs request</pre>
<pre
class="line after"><span class="ws"> </span>pre and postprocessing as well as HTTP exception catching and</pre>
<pre class="line after"><span class="ws"> </span>error handling.</pre>
</div>
</div>
<li>
<div class="frame" id="frame-140413129039712">
<h4>File
<cite class="filename">"/usr/local/lib/python3.5/dist-packages/flask_restx/api.py"</cite>,
line <em class="line">339</em>,
in <code class="function">wrapper</code></h4>
<div class="source ">
<pre class="line before"><span class="ws"></span> </pre>
<pre
class="line before"><span class="ws"> </span>:param resource: The resource as a flask view function</pre>
<pre class="line before"><span class="ws"> </span>'''</pre>
<pre class="line before"><span class="ws"> </span>@wraps(resource)</pre>
<pre class="line before"><span class="ws"> </span>def wrapper(*args, **kwargs):</pre>
<pre
class="line current"><span class="ws"> </span>resp = resource(*args, **kwargs)</pre>
<pre
class="line after"><span class="ws"> </span>if isinstance(resp, BaseResponse):</pre>
<pre class="line after"><span class="ws"> </span>return resp</pre>
<pre
class="line after"><span class="ws"> </span>data, code, headers = unpack(resp)</pre>
<pre
class="line after"><span class="ws"> </span>return self.make_response(data, code, headers=headers)</pre>
<pre class="line after"><span class="ws"> </span>return wrapper</pre>
</div>
</div>
<li>
<div class="frame" id="frame-140413129038760">
<h4>File <cite class="filename">"/usr/local/lib/python3.5/dist-packages/flask/views.py"</cite>,
line <em class="line">89</em>,
in <code class="function">view</code></h4>
<div class="source ">
<pre class="line before"><span class="ws"> </span>constructor of the class.</pre>
<pre class="line before"><span class="ws"> </span>"""</pre>
<pre class="line before"><span class="ws"></span> </pre>
<pre class="line before"><span class="ws"> </span>def view(*args, **kwargs):</pre>
<pre
class="line before"><span class="ws"> </span>self = view.view_class(*class_args, **class_kwargs)</pre>
<pre
class="line current"><span class="ws"> </span>return self.dispatch_request(*args, **kwargs)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws"> </span>if cls.decorators:</pre>
<pre class="line after"><span class="ws"> </span>view.__name__ = name</pre>
<pre
class="line after"><span class="ws"> </span>view.__module__ = cls.__module__</pre>
<pre
class="line after"><span class="ws"> </span>for decorator in cls.decorators:</pre>
</div>
</div>
<li>
<div class="frame" id="frame-140413103140992">
<h4>File
<cite class="filename">"/usr/local/lib/python3.5/dist-packages/flask_restx/resource.py"</cite>,
line <em class="line">42</em>,
in <code class="function">dispatch_request</code></h4>
<div class="source ">
<pre
class="line before"><span class="ws"> </span>assert meth is not None, 'Unimplemented method %r' % request.method</pre>
<pre class="line before"><span class="ws"></span> </pre>
<pre
class="line before"><span class="ws"> </span>for decorator in self.method_decorators:</pre>
<pre class="line before"><span class="ws"> </span>meth = decorator(meth)</pre>
<pre class="line before"><span class="ws"></span> </pre>
<pre class="line current"><span class="ws"> </span>self.validate_payload(meth)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws"> </span>resp = meth(*args, **kwargs)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre
class="line after"><span class="ws"> </span>if isinstance(resp, BaseResponse):</pre>
<pre class="line after"><span class="ws"> </span>return resp</pre>
</div>
</div>
<li>
<div class="frame" id="frame-140413103141104">
<h4>File
<cite class="filename">"/usr/local/lib/python3.5/dist-packages/flask_restx/resource.py"</cite>,
line <em class="line">88</em>,
in <code class="function">validate_payload</code></h4>
<div class="source ">
<pre
class="line before"><span class="ws"> </span># TODO: handle third party handlers</pre>
<pre
class="line before"><span class="ws"> </span>if isinstance(expect, list) and len(expect) == 1:</pre>
<pre
class="line before"><span class="ws"> </span>if isinstance(expect[0], ModelBase):</pre>
<pre
class="line before"><span class="ws"> </span>self.__validate_payload(expect[0], collection=True)</pre>
<pre
class="line before"><span class="ws"> </span>if isinstance(expect, ModelBase):</pre>
<pre
class="line current"><span class="ws"> </span>self.__validate_payload(expect, collection=False)</pre>
</div>
</div>
<li>
<div class="frame" id="frame-140413103141160">
<h4>File
<cite class="filename">"/usr/local/lib/python3.5/dist-packages/flask_restx/resource.py"</cite>,
line <em class="line">73</em>,
in <code class="function">__validate_payload</code></h4>
<div class="source ">
<pre class="line before"><span class="ws"> </span>if collection:</pre>
<pre
class="line before"><span class="ws"> </span>data = data if isinstance(data, list) else [data]</pre>
<pre class="line before"><span class="ws"> </span>for obj in data:</pre>
<pre
class="line before"><span class="ws"> </span>expect.validate(obj, self.api.refresolver, self.api.format_checker)</pre>
<pre class="line before"><span class="ws"> </span>else:</pre>
<pre
class="line current"><span class="ws"> </span>expect.validate(data, self.api.refresolver, self.api.format_checker)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws"> </span>def validate_payload(self, func):</pre>
<pre
class="line after"><span class="ws"> </span>'''Perform a payload validation on expected model if necessary'''</pre>
<pre
class="line after"><span class="ws"> </span>if getattr(func, '__apidoc__', False) is not False:</pre>
<pre class="line after"><span class="ws"> </span>doc = func.__apidoc__</pre>
</div>
</div>
<li>
<div class="frame" id="frame-140413103141216">
<h4>File
<cite class="filename">"/usr/local/lib/python3.5/dist-packages/flask_restx/model.py"</cite>,
line <em class="line">107</em>,
in <code class="function">validate</code></h4>
<div class="source ">
<pre
class="line before"><span class="ws"> </span>validator = Draft4Validator(self.__schema__, resolver=resolver, format_checker=format_checker)</pre>
<pre class="line before"><span class="ws"> </span>try:</pre>
<pre class="line before"><span class="ws"> </span>validator.validate(data)</pre>
<pre class="line before"><span class="ws"> </span>except ValidationError:</pre>
<pre
class="line before"><span class="ws"> </span>abort(HTTPStatus.BAD_REQUEST, message='Input payload validation failed',</pre>
<pre
class="line current"><span class="ws"> </span>errors=dict(self.format_error(e) for e in validator.iter_errors(data)))</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws"> </span>def format_error(self, error):</pre>
<pre class="line after"><span class="ws"> </span>path = list(error.path)</pre>
<pre
class="line after"><span class="ws"> </span>if error.validator == 'required':</pre>
<pre
class="line after"><span class="ws"> </span>name = RE_REQUIRED.match(error.message).group('name')</pre>
</div>
</div>
<li>
<div class="frame" id="frame-140413103141272">
<h4>File
<cite class="filename">"/usr/local/lib/python3.5/dist-packages/flask_restx/model.py"</cite>,
line <em class="line">107</em>,
in <code class="function"><genexpr></code></h4>
<div class="source ">
<pre
class="line before"><span class="ws"> </span>validator = Draft4Validator(self.__schema__, resolver=resolver, format_checker=format_checker)</pre>
<pre class="line before"><span class="ws"> </span>try:</pre>
<pre class="line before"><span class="ws"> </span>validator.validate(data)</pre>
<pre class="line before"><span class="ws"> </span>except ValidationError:</pre>
<pre
class="line before"><span class="ws"> </span>abort(HTTPStatus.BAD_REQUEST, message='Input payload validation failed',</pre>
<pre
class="line current"><span class="ws"> </span>errors=dict(self.format_error(e) for e in validator.iter_errors(data)))</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws"> </span>def format_error(self, error):</pre>
<pre class="line after"><span class="ws"> </span>path = list(error.path)</pre>
<pre
class="line after"><span class="ws"> </span>if error.validator == 'required':</pre>
<pre
class="line after"><span class="ws"> </span>name = RE_REQUIRED.match(error.message).group('name')</pre>
</div>
</div>
<li>
<div class="frame" id="frame-140413103141328">
<h4>File
<cite class="filename">"/usr/local/lib/python3.5/dist-packages/jsonschema/validators.py"</cite>,
line <em class="line">328</em>,
in <code class="function">iter_errors</code></h4>
<div class="source ">
<pre
class="line before"><span class="ws"> </span>validator = self.VALIDATORS.get(k)</pre>
<pre
class="line before"><span class="ws"> </span>if validator is None:</pre>
<pre class="line before"><span class="ws"> </span>continue</pre>
<pre class="line before"><span class="ws"></span> </pre>
<pre
class="line before"><span class="ws"> </span>errors = validator(self, v, instance, _schema) or ()</pre>
<pre
class="line current"><span class="ws"> </span>for error in errors:</pre>
<pre
class="line after"><span class="ws"> </span># set details if not already set by the called fn</pre>
<pre class="line after"><span class="ws"> </span>error._set(</pre>
<pre
class="line after"><span class="ws"> </span>validator=k,</pre>
<pre
class="line after"><span class="ws"> </span>validator_value=v,</pre>
<pre
class="line after"><span class="ws"> </span>instance=instance,</pre>
</div>
</div>
<li>
<div class="frame" id="frame-140413103141384">
<h4>File
<cite class="filename">"/usr/local/lib/python3.5/dist-packages/jsonschema/_validators.py"</cite>,
line <em class="line">286</em>,
in <code class="function">properties</code></h4>
<div class="source ">
<pre class="line before"><span class="ws"> </span>if property in instance:</pre>
<pre
class="line before"><span class="ws"> </span>for error in validator.descend(</pre>
<pre class="line before"><span class="ws"> </span>instance[property],</pre>
<pre class="line before"><span class="ws"> </span>subschema,</pre>
<pre class="line before"><span class="ws"> </span>path=property,</pre>
<pre
class="line current"><span class="ws"> </span>schema_path=property,</pre>
<pre class="line after"><span class="ws"> </span>):</pre>
<pre class="line after"><span class="ws"> </span>yield error</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre
class="line after"><span class="ws"></span>def required(validator, required, instance, schema):</pre>
</div>
</div>
<li>
<div class="frame" id="frame-140413103141440">
<h4>File
<cite class="filename">"/usr/local/lib/python3.5/dist-packages/jsonschema/validators.py"</cite>,
line <em class="line">344</em>,
in <code class="function">descend</code></h4>
<div class="source ">
<pre class="line before"><span class="ws"> </span>finally:</pre>
<pre class="line before"><span class="ws"> </span>if scope:</pre>
<pre
class="line before"><span class="ws"> </span>self.resolver.pop_scope()</pre>
<pre class="line before"><span class="ws"></span> </pre>
<pre
class="line before"><span class="ws"> </span>def descend(self, instance, schema, path=None, schema_path=None):</pre>
<pre
class="line current"><span class="ws"> </span>for error in self.iter_errors(instance, schema):</pre>
<pre class="line after"><span class="ws"> </span>if path is not None:</pre>
<pre
class="line after"><span class="ws"> </span>error.path.appendleft(path)</pre>
<pre
class="line after"><span class="ws"> </span>if schema_path is not None:</pre>
<pre
class="line after"><span class="ws"> </span>error.schema_path.appendleft(schema_path)</pre>
<pre class="line after"><span class="ws"> </span>yield error</pre>
</div>
</div>
<li>
<div class="frame" id="frame-140413103141496">
<h4>File
<cite class="filename">"/usr/local/lib/python3.5/dist-packages/jsonschema/validators.py"</cite>,
line <em class="line">328</em>,
in <code class="function">iter_errors</code></h4>
<div class="source ">
<pre
class="line before"><span class="ws"> </span>validator = self.VALIDATORS.get(k)</pre>
<pre
class="line before"><span class="ws"> </span>if validator is None:</pre>
<pre class="line before"><span class="ws"> </span>continue</pre>
<pre class="line before"><span class="ws"></span> </pre>
<pre
class="line before"><span class="ws"> </span>errors = validator(self, v, instance, _schema) or ()</pre>
<pre
class="line current"><span class="ws"> </span>for error in errors:</pre>
<pre
class="line after"><span class="ws"> </span># set details if not already set by the called fn</pre>
<pre class="line after"><span class="ws"> </span>error._set(</pre>
<pre
class="line after"><span class="ws"> </span>validator=k,</pre>
<pre
class="line after"><span class="ws"> </span>validator_value=v,</pre>
<pre
class="line after"><span class="ws"> </span>instance=instance,</pre>
</div>
</div>
<li>
<div class="frame" id="frame-140413103141552">
<h4>File
<cite class="filename">"/usr/local/lib/python3.5/dist-packages/jsonschema/_validators.py"</cite>,
line <em class="line">248</em>,
in <code class="function">enum</code></h4>
<div class="source ">
<pre
class="line before"><span class="ws"></span>def enum(validator, enums, instance, schema):</pre>
<pre
class="line before"><span class="ws"> </span>if instance == 0 or instance == 1:</pre>
<pre class="line before"><span class="ws"> </span>unbooled = unbool(instance)</pre>
<pre
class="line before"><span class="ws"> </span>if all(unbooled != unbool(each) for each in enums):</pre>
<pre
class="line before"><span class="ws"> </span>yield ValidationError("%r is not one of %r" % (instance, enums))</pre>
<pre class="line current"><span class="ws"> </span>elif instance not in enums:</pre>
<pre
class="line after"><span class="ws"> </span>yield ValidationError("%r is not one of %r" % (instance, enums))</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre
class="line after"><span class="ws"></span>def ref(validator, ref, instance, schema):</pre>
<pre
class="line after"><span class="ws"> </span>resolve = getattr(validator.resolver, "resolve", None)</pre>
</div>
</div>
</ul>
<blockquote>TypeError: 'in <string>' requires string as left operand, not dict</blockquote>
</div>
<div class="plain">
<form action="/?__debugger__=yes&cmd=paste" method="post">
<p>
<input type="hidden" name="language" value="pytb">
This is the Copy/Paste friendly version of the traceback. <span
class="pastemessage">You can also paste this traceback into
a <a href="https://gist.github.com/">gist</a>:
<input type="submit" value="create paste"></span>
</p>
<textarea cols="50" rows="10" name="code" readonly>Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/flask_restx/model.py", line 104, in validate
validator.validate(data)
File "/usr/local/lib/python3.5/dist-packages/jsonschema/validators.py", line 353, in validate
raise error
jsonschema.exceptions.ValidationError: {'interface': 'port1', 'gateway': '212.234.67.126', 'ip': '212.234.67.77'} is not of type 'string'
Failed validating 'type' in schema['properties']['admin_gw']:
{'enum': 'MARIUS2', 'example': 'M', 'type': 'string'}
On instance['admin_gw']:
{'gateway': '212.234.67.126',
'interface': 'port1',
'ip': '212.234.67.77'}
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2463, in __call__
return self.wsgi_app(environ, start_response)
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2449, in wsgi_app
response = self.handle_exception(e)
File "/usr/local/lib/python3.5/dist-packages/flask_restx/api.py", line 599, in error_router
return original_handler(f)
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1866, in handle_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python3.5/dist-packages/flask/_compat.py", line 39, in reraise
raise value
File "/usr/local/lib/python3.5/dist-packages/flask_restx/api.py", line 597, in error_router
return self.handle_error(e)
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2446, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1951, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python3.5/dist-packages/flask_restx/api.py", line 599, in error_router
return original_handler(f)
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1820, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python3.5/dist-packages/flask/_compat.py", line 39, in reraise
raise value
File "/usr/local/lib/python3.5/dist-packages/flask_restx/api.py", line 597, in error_router
return self.handle_error(e)
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1949, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1935, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/usr/local/lib/python3.5/dist-packages/flask_restx/api.py", line 339, in wrapper
resp = resource(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/flask/views.py", line 89, in view
return self.dispatch_request(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/flask_restx/resource.py", line 42, in dispatch_request
self.validate_payload(meth)
File "/usr/local/lib/python3.5/dist-packages/flask_restx/resource.py", line 88, in validate_payload
self.__validate_payload(expect, collection=False)
File "/usr/local/lib/python3.5/dist-packages/flask_restx/resource.py", line 73, in __validate_payload
expect.validate(data, self.api.refresolver, self.api.format_checker)
File "/usr/local/lib/python3.5/dist-packages/flask_restx/model.py", line 107, in validate
errors=dict(self.format_error(e) for e in validator.iter_errors(data)))
File "/usr/local/lib/python3.5/dist-packages/flask_restx/model.py", line 107, in <genexpr>
errors=dict(self.format_error(e) for e in validator.iter_errors(data)))
File "/usr/local/lib/python3.5/dist-packages/jsonschema/validators.py", line 328, in iter_errors
for error in errors:
File "/usr/local/lib/python3.5/dist-packages/jsonschema/_validators.py", line 286, in properties
schema_path=property,
File "/usr/local/lib/python3.5/dist-packages/jsonschema/validators.py", line 344, in descend
for error in self.iter_errors(instance, schema):
File "/usr/local/lib/python3.5/dist-packages/jsonschema/validators.py", line 328, in iter_errors
for error in errors:
File "/usr/local/lib/python3.5/dist-packages/jsonschema/_validators.py", line 248, in enum
elif instance not in enums:
TypeError: 'in <string>' requires string as left operand, not dict</textarea>
</form>
</div>
<div class="explanation">
The debugger caught an exception in your WSGI application. You can now
look at the traceback which led to the error. <span class="nojavascript">
If you enable JavaScript you can also use additional features such as code
execution (if the evalex feature is enabled), automatic pasting of the
exceptions and much more.</span>
</div>
<div class="footer">
Brought to you by <strong class="arthur">DON'T PANIC</strong>, your
friendly Werkzeug powered traceback interpreter.
</div>
</div>
<div class="pin-prompt">
<div class="inner">
<h3>Console Locked</h3>
<p>
The console is locked and needs to be unlocked by entering the PIN.
You can find the PIN printed out on the standard output of your
shell that runs the server.
<form>
<p>PIN:
<input type=text name=pin size=14>
<input type=submit name=btn value="Confirm Pin">
</form>
</div>
</div>
</body>
</html>
<!--
Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/flask_restx/model.py", line 104, in validate
validator.validate(data)
File "/usr/local/lib/python3.5/dist-packages/jsonschema/validators.py", line 353, in validate
raise error
jsonschema.exceptions.ValidationError: {'interface': 'port1', 'gateway': '212.234.67.126', 'ip': '212.234.67.77'} is not of type 'string'
Failed validating 'type' in schema['properties']['admin_gw']:
{'enum': 'MARIUS2', 'example': 'M', 'type': 'string'}
On instance['admin_gw']:
{'gateway': '212.234.67.126',
'interface': 'port1',
'ip': '212.234.67.77'}
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2463, in __call__
return self.wsgi_app(environ, start_response)
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2449, in wsgi_app
response = self.handle_exception(e)
File "/usr/local/lib/python3.5/dist-packages/flask_restx/api.py", line 599, in error_router
return original_handler(f)
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1866, in handle_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python3.5/dist-packages/flask/_compat.py", line 39, in reraise
raise value
File "/usr/local/lib/python3.5/dist-packages/flask_restx/api.py", line 597, in error_router
return self.handle_error(e)
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2446, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1951, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python3.5/dist-packages/flask_restx/api.py", line 599, in error_router
return original_handler(f)
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1820, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python3.5/dist-packages/flask/_compat.py", line 39, in reraise
raise value
File "/usr/local/lib/python3.5/dist-packages/flask_restx/api.py", line 597, in error_router
return self.handle_error(e)
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1949, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1935, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/usr/local/lib/python3.5/dist-packages/flask_restx/api.py", line 339, in wrapper
resp = resource(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/flask/views.py", line 89, in view
return self.dispatch_request(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/flask_restx/resource.py", line 42, in dispatch_request
self.validate_payload(meth)
File "/usr/local/lib/python3.5/dist-packages/flask_restx/resource.py", line 88, in validate_payload
self.__validate_payload(expect, collection=False)
File "/usr/local/lib/python3.5/dist-packages/flask_restx/resource.py", line 73, in __validate_payload
expect.validate(data, self.api.refresolver, self.api.format_checker)
File "/usr/local/lib/python3.5/dist-packages/flask_restx/model.py", line 107, in validate
errors=dict(self.format_error(e) for e in validator.iter_errors(data)))
File "/usr/local/lib/python3.5/dist-packages/flask_restx/model.py", line 107, in <genexpr>
errors=dict(self.format_error(e) for e in validator.iter_errors(data)))
File "/usr/local/lib/python3.5/dist-packages/jsonschema/validators.py", line 328, in iter_errors
for error in errors:
File "/usr/local/lib/python3.5/dist-packages/jsonschema/_validators.py", line 286, in properties
schema_path=property,
File "/usr/local/lib/python3.5/dist-packages/jsonschema/validators.py", line 344, in descend
for error in self.iter_errors(instance, schema):
File "/usr/local/lib/python3.5/dist-packages/jsonschema/validators.py", line 328, in iter_errors
for error in errors:
File "/usr/local/lib/python3.5/dist-packages/jsonschema/_validators.py", line 248, in enum
elif instance not in enums:
TypeError: 'in <string>' requires string as left operand, not dict
-->
Do you have any idea about how to get flask restx errors instead of werkzeug debuger?