question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

[BUG] TypeError not callable : rich.print_exception

See original GitHub issue

Hello !

Describe the bug I use print_exception with uvicorn and print_exception got an exception “Field not Callable”, I patched uvicorn/protocols/http/httptools_impl.py:404 this way

        except BaseException as exc:
            msg = "Exception in ASGI application\n"
            # PATCH start
            from rich.console import Console

            self.console = Console()
            self.console.print_exception(extra_lines=5, show_locals=True)
            # PATCH end
            self.logger.error(msg, exc_info=exc)
            if not self.response_started:
                await self.send_500_response()
            else:
                self.transport.close()

The exception which occured (the first part is the error in my side ; the second is the error in rich, both printed by uvicorn)

future: <Task finished name='Task-5' coro=<RequestResponseCycle.run_asgi() done, defined at .venv/lib/python3.9/site-packages/uvicorn/protocols/http/httptools_impl.py:396> exception=TypeError("'Field' object is not callable")>
Traceback (most recent call last):
  File ".venv/lib/python3.9/site-packages/uvicorn/protocols/http/httptools_impl.py", line 398, in run_asgi
    result = await app(self.scope, self.receive, self.send)
  File ".venv/lib/python3.9/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
    return await self.app(scope, receive, send)
  File ".venv/lib/python3.9/site-packages/fastapi/applications.py", line 199, in __call__
    await super().__call__(scope, receive, send)
  File ".venv/lib/python3.9/site-packages/starlette/applications.py", line 112, in __call__
    await self.middleware_stack(scope, receive, send)
  File ".venv/lib/python3.9/site-packages/starlette/middleware/errors.py", line 181, in __call__
    raise exc from None
  File ".venv/lib/python3.9/site-packages/starlette/middleware/errors.py", line 159, in __call__
    await self.app(scope, receive, _send)
  File ".venv/lib/python3.9/site-packages/starlette/exceptions.py", line 82, in __call__
    raise exc from None
  File ".venv/lib/python3.9/site-packages/starlette/exceptions.py", line 71, in __call__
    await self.app(scope, receive, sender)
  File ".venv/lib/python3.9/site-packages/starlette/routing.py", line 580, in __call__
    await route.handle(scope, receive, send)
  File ".venv/lib/python3.9/site-packages/starlette/routing.py", line 241, in handle
    await self.app(scope, receive, send)
  File ".venv/lib/python3.9/site-packages/starlette/routing.py", line 52, in app
    response = await func(request)
  File ".venv/lib/python3.9/site-packages/fastapi/routing.py", line 201, in app
    raw_response = await run_endpoint_function(
  File ".venv/lib/python3.9/site-packages/fastapi/routing.py", line 148, in run_endpoint_function
    return await dependant.call(**values)
  File "./openapi_server/utils/routes.py", line 26, in filter_fields
    response = await func(*args, **kwargs)
  File "./openapi_server/apis/geographic_address_api.py", line 74, in list_geographic_address
    return await handler.objects()
  File "business/business/handlers/handler.py", line 39, in objects
    query_set = await self.query_set.limit(self.limit)
  File ".venv/lib/python3.9/site-packages/tortoise/queryset.py", line 900, in __await__
    self._make_query()
  File ".venv/lib/python3.9/site-packages/tortoise/queryset.py", line 862, in _make_query
    self.resolve_filters(
  File ".venv/lib/python3.9/site-packages/tortoise/queryset.py", line 129, in resolve_filters
    modifier &= node.resolve(model, annotations, custom_filters, model._meta.basetable)
  File ".venv/lib/python3.9/site-packages/tortoise/query_utils.py", line 390, in resolve
    return self._resolve_kwargs(model, table)
  File ".venv/lib/python3.9/site-packages/tortoise/query_utils.py", line 344, in _resolve_kwargs
    key, value = self._get_actual_filter_params(model, raw_key, raw_value)
  File ".venv/lib/python3.9/site-packages/tortoise/query_utils.py", line 338, in _get_actual_filter_params
    raise FieldError(f"Unknown filter param '{key}'. Allowed base values are {allowed}")
tortoise.exceptions.FieldError: Unknown filter param 'buildings__id'. Allowed base values are ['X', 'Y', 'buildings_FR', 'coverage_infra_ftto_FR', 'id', 'numéro', 'répétiteur', 'voie', 'voie_id']

Traceback (most recent call last):
  File ".venv/lib/python3.9/site-packages/uvicorn/protocols/http/httptools_impl.py", line 404, in run_asgi
    self.console.print_exception(extra_lines=5, show_locals=True)
  File ".venv/lib/python3.9/site-packages/rich/console.py", line 1719, in print_exception
    traceback = Traceback(
  File ".venv/lib/python3.9/site-packages/rich/traceback.py", line 223, in __init__
    trace = self.extract(
  File ".venv/lib/python3.9/site-packages/rich/traceback.py", line 350, in extract
    locals={
  File ".venv/lib/python3.9/site-packages/rich/traceback.py", line 351, in <dictcomp>
    key: pretty.traverse(
  File ".venv/lib/python3.9/site-packages/rich/pretty.py", line 686, in traverse
    node = _traverse(_object, root=True)
  File ".venv/lib/python3.9/site-packages/rich/pretty.py", line 672, in _traverse
    child_node = _traverse(child)
  File ".venv/lib/python3.9/site-packages/rich/pretty.py", line 509, in _traverse
    args = list(iter_rich_args(obj.__rich_repr__()))
TypeError: 'Field' object is not callable

To Reproduce It is complex to reproduce it 😕 Maybe I could reproduce it, it seems to come from tortoise orm, I will try later.

Platform Linux

Diagnose I quickly fixed the problem (but it seems to reduce the quantity of details) by patching rich this way (rich/pretty.py:509) :

            # PATCH start
            # args = list(iter_rich_args(obj.__rich_repr__()))  # replaced line
            try:
                args = list(iter_rich_args(obj.__rich_repr__()))
            except TypeError:
                args = []
                # print("FAILLED")
            # PATCH end

Issue Analytics

  • State:closed
  • Created 2 years ago
  • Comments:6

github_iconTop GitHub Comments

1reaction
yoann9344commented, Sep 18, 2021

Perfect ! I tried, it works smooth, thx 😃

0reactions
willmcgugancommented, Sep 18, 2021

Please try v10.10.0 Fixes your example code.

Read more comments on GitHub >

github_iconTop Results From Across the Web

TypeError: 'module' object is not callable - Stack Overflow
This is what the error message means: It says module object is not callable , because your code is calling a module object....
Read more >
TypeError: module object is not callable [Python Error Solved]
In this article, we'll talk about the "TypeError: 'module' object is not callable" error in Python. We'll start by defining some of the ......
Read more >
TypeError: 'module' object is not callable · Issue #14 - GitHub
Python version 3.6.9. Package version 0.18.1. Current behavior (bug description) on the very first line where i call the benedict() class, ...
Read more >
TypeError 'module' object is not callable in Python - STechies
This tutorial explains why TypeError 'module' object is not callable occurs in Python and how to resolve this error. The error “TypeError: 'module'...
Read more >
'classmethod' object not callable (Example) - Treehouse
And here is the error I received: TypeError: 'classmethod' object is not callable. So, the classmethod is defined, and so is the parent ......
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found