home / github / issue_comments

Menu
  • Search all tables
  • GraphQL API

issue_comments: 1563329245

This data as json

html_url issue_url id node_id user created_at updated_at author_association body reactions issue performed_via_github_app
https://github.com/simonw/datasette/issues/2078#issuecomment-1563329245 https://api.github.com/repos/simonw/datasette/issues/2078 1563329245 IC_kwDOBm6k_c5dLoLd 9599 2023-05-25T18:26:47Z 2023-05-25T18:28:08Z OWNER

With type hints and a namedtuple: ```python import asyncio import types from typing import NamedTuple, Any

class CallableStatus(NamedTuple): is_callable: bool is_async_callable: bool

def check_callable(obj: Any) -> CallableStatus: if not callable(obj): return CallableStatus(False, False)

if isinstance(obj, type):
    # It's a class
    return CallableStatus(True, False)

if isinstance(obj, types.FunctionType):
    return CallableStatus(True, asyncio.iscoroutinefunction(obj))

if hasattr(obj, "__call__"):
    return CallableStatus(True, asyncio.iscoroutinefunction(obj.__call__))

assert False, "obj {} is somehow callable with no __call__ method".format(repr(obj))

python for thing in ( async_func, non_async_func, AsyncClass(), NotAsyncClass(), ClassNoCall(), AsyncClass, NotAsyncClass, ClassNoCall, ): print(thing, check_callable(thing)) <function async_func at 0x1073d5120> CallableStatus(is_callable=True, is_async_callable=True) <function non_async_func at 0x1073d5080> CallableStatus(is_callable=True, is_async_callable=False) <main.AsyncClass object at 0x106ba7490> CallableStatus(is_callable=True, is_async_callable=True) <main.NotAsyncClass object at 0x106740150> CallableStatus(is_callable=True, is_async_callable=False) <main.ClassNoCall object at 0x10676d910> CallableStatus(is_callable=False, is_async_callable=False) <class '__main__.AsyncClass'> CallableStatus(is_callable=True, is_async_callable=False) <class '__main__.NotAsyncClass'> CallableStatus(is_callable=True, is_async_callable=False) <class '__main__.ClassNoCall'> CallableStatus(is_callable=True, is_async_callable=False) ```

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
1726236847  
Powered by Datasette · Queries took 2.479ms · About: github-to-sqlite