parent
b109915b4e
commit
291d1b661b
4
.flake8
4
.flake8
|
@ -13,5 +13,7 @@ ignore =
|
|||
# flake8 and black disagree about
|
||||
# W503 line break before binary operator
|
||||
# E203 whitespace before ':'
|
||||
W503,E203
|
||||
# E701/E704 multiple statements on one line
|
||||
# https://black.readthedocs.io/en/latest/guides/using_black_with_other_tools.html#labels-why-pycodestyle-warnings
|
||||
W503,E203,E701,E704
|
||||
doctests = true
|
||||
|
|
|
@ -40,13 +40,13 @@ class NoResultError(Exception):
|
|||
|
||||
async def maybe_create_tables(db):
|
||||
try:
|
||||
with (await db.cursor()) as cur:
|
||||
with await db.cursor() as cur:
|
||||
await cur.execute("SELECT COUNT(*) FROM entries LIMIT 1")
|
||||
await cur.fetchone()
|
||||
except psycopg2.ProgrammingError:
|
||||
with open("schema.sql") as f:
|
||||
schema = f.read()
|
||||
with (await db.cursor()) as cur:
|
||||
with await db.cursor() as cur:
|
||||
await cur.execute(schema)
|
||||
|
||||
|
||||
|
@ -89,7 +89,7 @@ class BaseHandler(tornado.web.RequestHandler):
|
|||
|
||||
Must be called with ``await self.execute(...)``
|
||||
"""
|
||||
with (await self.application.db.cursor()) as cur:
|
||||
with await self.application.db.cursor() as cur:
|
||||
await cur.execute(stmt, args)
|
||||
|
||||
async def query(self, stmt, *args):
|
||||
|
@ -103,7 +103,7 @@ class BaseHandler(tornado.web.RequestHandler):
|
|||
|
||||
for row in await self.query(...)
|
||||
"""
|
||||
with (await self.application.db.cursor()) as cur:
|
||||
with await self.application.db.cursor() as cur:
|
||||
await cur.execute(stmt, args)
|
||||
return [self.row_to_obj(row, cur) for row in await cur.fetchall()]
|
||||
|
||||
|
|
|
@ -10,6 +10,7 @@ Recommended usage:
|
|||
- Run this file with `python main.py --config_file=main.cfg`
|
||||
- Visit "http://localhost:8888" in your browser.
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
import json
|
||||
import tornado
|
||||
|
|
|
@ -8,7 +8,7 @@ alabaster==0.7.13
|
|||
# via sphinx
|
||||
babel==2.11.0
|
||||
# via sphinx
|
||||
black==22.12.0
|
||||
black==24.4.2
|
||||
# via -r requirements.in
|
||||
build==0.10.0
|
||||
# via pip-tools
|
||||
|
@ -56,6 +56,7 @@ mypy-extensions==0.4.3
|
|||
# mypy
|
||||
packaging==23.1
|
||||
# via
|
||||
# black
|
||||
# build
|
||||
# pyproject-api
|
||||
# sphinx
|
||||
|
|
|
@ -118,6 +118,7 @@ def run_on_executor(*args: Any, **kwargs: Any) -> Callable:
|
|||
|
||||
The ``callback`` argument was removed.
|
||||
"""
|
||||
|
||||
# Fully type-checking decorators is tricky, and this one is
|
||||
# discouraged anyway so it doesn't have all the generic magic.
|
||||
def run_on_executor_decorator(fn: Callable) -> Callable[..., Future]:
|
||||
|
|
|
@ -66,6 +66,7 @@ function to extend this mechanism.
|
|||
via ``singledispatch``.
|
||||
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
import builtins
|
||||
import collections
|
||||
|
@ -165,13 +166,11 @@ def _fake_ctx_run(f: Callable[..., _T], *args: Any, **kw: Any) -> _T:
|
|||
@overload
|
||||
def coroutine(
|
||||
func: Callable[..., "Generator[Any, Any, _T]"]
|
||||
) -> Callable[..., "Future[_T]"]:
|
||||
...
|
||||
) -> Callable[..., "Future[_T]"]: ...
|
||||
|
||||
|
||||
@overload
|
||||
def coroutine(func: Callable[..., _T]) -> Callable[..., "Future[_T]"]:
|
||||
...
|
||||
def coroutine(func: Callable[..., _T]) -> Callable[..., "Future[_T]"]: ...
|
||||
|
||||
|
||||
def coroutine(
|
||||
|
|
|
@ -429,9 +429,9 @@ class _HTTPConnection(httputil.HTTPMessageDelegate):
|
|||
self.request.method == "POST"
|
||||
and "Content-Type" not in self.request.headers
|
||||
):
|
||||
self.request.headers[
|
||||
"Content-Type"
|
||||
] = "application/x-www-form-urlencoded"
|
||||
self.request.headers["Content-Type"] = (
|
||||
"application/x-www-form-urlencoded"
|
||||
)
|
||||
if self.request.decompress_response:
|
||||
self.request.headers["Accept-Encoding"] = "gzip"
|
||||
req_path = (self.parsed.path or "/") + (
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
This only works in python 2.7+.
|
||||
"""
|
||||
|
||||
from tornado.test.runtests import all, main
|
||||
|
||||
# tornado.testing.main autodiscovery relies on 'all' being present in
|
||||
|
|
|
@ -194,9 +194,11 @@ linkify_tests = [
|
|||
(
|
||||
"www.external-link.com and www.internal-link.com/blogs extra",
|
||||
{
|
||||
"extra_params": lambda href: 'class="internal"'
|
||||
"extra_params": lambda href: (
|
||||
'class="internal"'
|
||||
if href.startswith("http://www.internal-link.com")
|
||||
else 'rel="nofollow" class="external"'
|
||||
)
|
||||
},
|
||||
'<a href="http://www.external-link.com" rel="nofollow" class="external">www.external-link.com</a>' # noqa: E501
|
||||
' and <a href="http://www.internal-link.com/blogs" class="internal">www.internal-link.com/blogs</a> extra', # noqa: E501
|
||||
|
|
|
@ -261,6 +261,7 @@ class TestIOLoop(AsyncTestCase):
|
|||
the object should be closed (by IOLoop.close(all_fds=True),
|
||||
not just the fd.
|
||||
"""
|
||||
|
||||
# Use a socket since they are supported by IOLoop on all platforms.
|
||||
# Unfortunately, sockets don't support the .closed attribute for
|
||||
# inspecting their close status, so we must use a wrapper.
|
||||
|
|
|
@ -1392,9 +1392,9 @@ class WebSocketClientConnection(simple_httpclient._HTTPConnection):
|
|||
# from the server).
|
||||
# TODO: set server parameters for deflate extension
|
||||
# if requested in self.compression_options.
|
||||
request.headers[
|
||||
"Sec-WebSocket-Extensions"
|
||||
] = "permessage-deflate; client_max_window_bits"
|
||||
request.headers["Sec-WebSocket-Extensions"] = (
|
||||
"permessage-deflate; client_max_window_bits"
|
||||
)
|
||||
|
||||
# Websocket connection is currently unable to follow redirects
|
||||
request.follow_redirects = False
|
||||
|
|
Loading…
Reference in New Issue