Skip to content

Commit

Permalink
asyncio_run helper to deal with a 3.10 warning, refs #1482
Browse files Browse the repository at this point in the history
  • Loading branch information
simonw committed Oct 24, 2021
1 parent 77542e7 commit 94b0aa9
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 8 deletions.
13 changes: 5 additions & 8 deletions datasette/cli.py
Expand Up @@ -14,6 +14,7 @@
import webbrowser
from .app import Datasette, DEFAULT_SETTINGS, SETTINGS, SQLITE_LIMIT_ATTACHED, pm
from .utils import (
asyncio_run,
StartupError,
check_connection,
find_spatialite,
Expand Down Expand Up @@ -136,9 +137,7 @@ def cli():
@click.option("--inspect-file", default="-")
@sqlite_extensions
def inspect(files, inspect_file, sqlite_extensions):
app = Datasette([], immutables=files, sqlite_extensions=sqlite_extensions)
loop = asyncio.get_event_loop()
inspect_data = loop.run_until_complete(inspect_(files, sqlite_extensions))
inspect_data = asyncio_run(inspect_(files, sqlite_extensions))
if inspect_file == "-":
sys.stdout.write(json.dumps(inspect_data, indent=2))
else:
Expand Down Expand Up @@ -555,10 +554,10 @@ def serve(
return ds

# Run the "startup" plugin hooks
asyncio.get_event_loop().run_until_complete(ds.invoke_startup())
asyncio_run(ds.invoke_startup())

# Run async soundness checks - but only if we're not under pytest
asyncio.get_event_loop().run_until_complete(check_databases(ds))
asyncio_run(check_databases(ds))

if get:
client = TestClient(ds)
Expand All @@ -578,9 +577,7 @@ def serve(
if open_browser:
if url is None:
# Figure out most convenient URL - to table, database or homepage
path = asyncio.get_event_loop().run_until_complete(
initial_path_for_datasette(ds)
)
path = asyncio_run(initial_path_for_datasette(ds))
url = f"http://{host}:{port}{path}"
webbrowser.open(url)
uvicorn_kwargs = dict(
Expand Down
9 changes: 9 additions & 0 deletions datasette/utils/__init__.py
Expand Up @@ -1089,3 +1089,12 @@ async def derive_named_parameters(db, sql):
return [row["p4"].lstrip(":") for row in results if row["opcode"] == "Variable"]
except sqlite3.DatabaseError:
return possible_params


def asyncio_run(coro):
if hasattr(asyncio, "run"):
# Added in Python 3.7
return asyncio.run(coro)
else:
loop = asyncio.get_event_loop()
return loop.run_until_complete(coro)

0 comments on commit 94b0aa9

Please sign in to comment.