home / github / issue_comments

Menu
  • Search all tables
  • GraphQL API

issue_comments: 1563308919

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-1563308919 https://api.github.com/repos/simonw/datasette/issues/2078 1563308919 IC_kwDOBm6k_c5dLjN3 9599 2023-05-25T18:08:34Z 2023-05-25T18:08:34Z OWNER

After much fiddling this seems to work: ```python import asyncio, types

def is_async_callable(obj): if not callable(obj): raise ValueError("Object is not callable")

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

if hasattr(obj, '__call__'):
    return asyncio.iscoroutinefunction(obj.__call__)

raise ValueError("Not a function and has no __call__ attribute")

Tested like so:python class AsyncClass: async def call(self): pass

class NotAsyncClass: def call(self): pass

class ClassNoCall: pass

async def async_func(): pass

def non_async_func(): pass

for thing in (AsyncClass(), NotAsyncClass(), ClassNoCall(), async_func, non_async_func): try: print(thing, is_async_callable(thing)) except Exception as ex: print(thing, ex) <main.AsyncClass object at 0x106c32150> True <main.NotAsyncClass object at 0x106c32390> False <main.ClassNoCall object at 0x106c32750> Object is not callable <function async_func at 0x1073d5120> True <function non_async_func at 0x1073d5080> 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 0.916ms · About: github-to-sqlite