Skip to content

LazyProxy can't be encoded by Flask JSONEncoder #4

@ramnes

Description

@ramnes
from flask import Flask, jsonify
from lazify import LazyProxy

app = Flask(__name__)


@app.route("/")
def test():
    return jsonify(LazyProxy(lambda: {"test": "test"}))


app.run()

This test case raises:

[2018-04-16 09:59:48,336] ERROR in app: Exception on / [GET]
Traceback (most recent call last):
  File "/test/.venv/lib/python3.4/site-packages/flask/app.py", line 1982, in wsgi_app
    response = self.full_dispatch_request()
  File "/test/.venv/lib/python3.4/site-packages/flask/app.py", line 1614, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/test/.venv/lib/python3.4/site-packages/flask/app.py", line 1517, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/test/.venv/lib/python3.4/site-packages/flask/_compat.py", line 33, in reraise
    raise value
  File "/test/.venv/lib/python3.4/site-packages/flask/app.py", line 1612, in full_dispatch_request
    rv = self.dispatch_request()
  File "/test/.venv/lib/python3.4/site-packages/flask/app.py", line 1598, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "toto.py", line 9, in test
    return jsonify(LazyProxy(lambda: {"test": "test"}))
  File "/test/.venv/lib/python3.4/site-packages/flask/json.py", line 263, in jsonify
    (dumps(data, indent=indent, separators=separators), '\n'),
  File "/test/.venv/lib/python3.4/site-packages/flask/json.py", line 123, in dumps
    rv = _json.dumps(obj, **kwargs)
  File "/usr/lib64/python3.4/json/__init__.py", line 237, in dumps
    **kw).encode(obj)
  File "/usr/lib64/python3.4/json/encoder.py", line 194, in encode
    chunks = list(chunks)
  File "/usr/lib64/python3.4/json/encoder.py", line 429, in _iterencode
    o = _default(o)
  File "/test/.venv/lib/python3.4/site-packages/flask/json.py", line 80, in default
    return _json.JSONEncoder.default(self, o)
  File "/usr/lib64/python3.4/json/encoder.py", line 173, in default
    raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <lazify.LazyProxy object at 0x7f6ea61340a0> is not JSON serializable
127.0.0.1 - - [16/Apr/2018 09:59:48] "GET / HTTP/1.1" 500 

Versions in use:

  • Lazify==0.3.1
  • Flask==0.12.2
  • Werkzeug==0.14.1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions