Skip to content

LazyProxy can't be encoded by Flask JSONEncoder #4

Open
@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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions