Configured and applied isort, refs #516

isort-22-aug-2023
Simon Willison 2023-08-22 19:07:10 -07:00
rodzic 17ec309e14
commit 59a5d336bd
78 zmienionych plików z 446 dodań i 363 usunięć

Wyświetl plik

@ -1,3 +1,7 @@
[settings] [settings]
multi_line_output=3 multi_line_output=3
include_trailing_comma=True
force_grid_wrap=0
use_parentheses=True
line_length=88
known_first_party=datasette

Wyświetl plik

@ -1,7 +1,8 @@
from datasette.permissions import Permission # noqa from datasette.permissions import Permission # noqa
from datasette.version import __version_info__, __version__ # noqa
from datasette.utils.asgi import Forbidden, NotFound, Request, Response # noqa
from datasette.utils import actor_matches_allow # noqa from datasette.utils import actor_matches_allow # noqa
from datasette.utils.asgi import Forbidden, NotFound, Request, Response # noqa
from datasette.version import __version__, __version_info__ # noqa
from datasette.views import Context # noqa from datasette.views import Context # noqa
from .hookspecs import hookimpl # noqa from .hookspecs import hookimpl # noqa
from .hookspecs import hookspec # noqa from .hookspecs import hookspec # noqa

Wyświetl plik

@ -1,8 +1,10 @@
from datasette import hookimpl
from itsdangerous import BadSignature
from datasette.utils import baseconv
import time import time
from itsdangerous import BadSignature
from datasette import hookimpl
from datasette.utils import baseconv
@hookimpl @hookimpl
def actor_from_request(datasette, request): def actor_from_request(datasette, request):

Wyświetl plik

@ -1,18 +1,13 @@
import asyncio import asyncio
from typing import Any, Dict, Iterable, List, Optional, Sequence, Tuple, Union
import asgi_csrf
import collections import collections
import dataclasses import dataclasses
import datetime import datetime
import functools import functools
import glob import glob
import hashlib import hashlib
import httpx
import inspect import inspect
from itsdangerous import BadSignature
import json import json
import os import os
import pkg_resources
import re import re
import secrets import secrets
import sys import sys
@ -22,47 +17,25 @@ import types
import urllib.parse import urllib.parse
from concurrent import futures from concurrent import futures
from pathlib import Path from pathlib import Path
from typing import Any, Dict, Iterable, List, Optional, Sequence, Tuple, Union
from markupsafe import Markup, escape import asgi_csrf
from itsdangerous import URLSafeSerializer import httpx
from jinja2 import ( import pkg_resources
ChoiceLoader, from itsdangerous import BadSignature, URLSafeSerializer
Environment, from jinja2 import ChoiceLoader, Environment, FileSystemLoader, PrefixLoader
FileSystemLoader,
PrefixLoader,
)
from jinja2.environment import Template from jinja2.environment import Template
from jinja2.exceptions import TemplateNotFound from jinja2.exceptions import TemplateNotFound
from markupsafe import Markup, escape
from .views import Context
from .views.base import ureg
from .views.database import database_download, DatabaseView, TableCreateView
from .views.index import IndexView
from .views.special import (
JsonDataView,
PatternPortfolioView,
AuthTokenView,
ApiExplorerView,
CreateTokenView,
LogoutView,
AllowDebugView,
PermissionsDebugView,
MessagesDebugView,
)
from .views.table import (
TableInsertView,
TableUpsertView,
TableDropView,
table_view,
)
from .views.row import RowView, RowDeleteView, RowUpdateView
from .renderer import json_renderer
from .url_builder import Urls
from .database import Database, QueryInterrupted from .database import Database, QueryInterrupted
from .plugins import DEFAULT_PLUGINS, get_plugins, pm
from .renderer import json_renderer
from .tracer import AsgiTracer
from .url_builder import Urls
from .utils import ( from .utils import (
PrefixedUrlString,
SPATIALITE_FUNCTIONS, SPATIALITE_FUNCTIONS,
PrefixedUrlString,
StartupError, StartupError,
async_call_with_supported_arguments, async_call_with_supported_arguments,
await_me_maybe, await_me_maybe,
@ -76,34 +49,46 @@ from .utils import (
parse_metadata, parse_metadata,
resolve_env_secrets, resolve_env_secrets,
resolve_routes, resolve_routes,
row_sql_params_pks,
tilde_decode, tilde_decode,
to_css_class, to_css_class,
urlsafe_components, urlsafe_components,
row_sql_params_pks,
) )
from .utils.asgi import ( from .utils.asgi import (
AsgiLifespan, AsgiLifespan,
AsgiRunOnFirstRequest,
DatabaseNotFound,
Forbidden, Forbidden,
NotFound, NotFound,
DatabaseNotFound,
TableNotFound,
RowNotFound,
Request, Request,
Response, Response,
AsgiRunOnFirstRequest, RowNotFound,
asgi_static, TableNotFound,
asgi_send, asgi_send,
asgi_send_file, asgi_send_file,
asgi_send_redirect, asgi_send_redirect,
asgi_static,
) )
from .utils.internal_db import init_internal_db, populate_schema_tables from .utils.internal_db import init_internal_db, populate_schema_tables
from .utils.sqlite import ( from .utils.sqlite import sqlite3, using_pysqlite3
sqlite3,
using_pysqlite3,
)
from .tracer import AsgiTracer
from .plugins import pm, DEFAULT_PLUGINS, get_plugins
from .version import __version__ from .version import __version__
from .views import Context
from .views.base import ureg
from .views.database import DatabaseView, TableCreateView, database_download
from .views.index import IndexView
from .views.row import RowDeleteView, RowUpdateView, RowView
from .views.special import (
AllowDebugView,
ApiExplorerView,
AuthTokenView,
CreateTokenView,
JsonDataView,
LogoutView,
MessagesDebugView,
PatternPortfolioView,
PermissionsDebugView,
)
from .views.table import TableDropView, TableInsertView, TableUpsertView, table_view
app_root = Path(__file__).parent.parent app_root = Path(__file__).parent.parent

Wyświetl plik

@ -1,8 +1,9 @@
from datasette import hookimpl
from datasette.utils.asgi import Response, BadRequest
from datasette.utils import to_css_class
import hashlib import hashlib
from datasette import hookimpl
from datasette.utils import to_css_class
from datasette.utils.asgi import BadRequest, Response
_BLOB_COLUMN = "_blob_column" _BLOB_COLUMN = "_blob_column"
_BLOB_HASH = "_blob_hash" _BLOB_HASH = "_blob_hash"

Wyświetl plik

@ -1,41 +1,43 @@
import asyncio import asyncio
import uvicorn
import click
from click import formatting
from click.types import CompositeParamType
from click_default_group import DefaultGroup
import functools import functools
import json import json
import os import os
import pathlib import pathlib
from runpy import run_module
import shutil import shutil
from subprocess import call
import sys import sys
import textwrap import textwrap
import webbrowser import webbrowser
from runpy import run_module
from subprocess import call
import click
import uvicorn
from click import formatting
from click.types import CompositeParamType
from click_default_group import DefaultGroup
from .app import ( from .app import (
OBSOLETE_SETTINGS,
Datasette,
DEFAULT_SETTINGS, DEFAULT_SETTINGS,
OBSOLETE_SETTINGS,
SETTINGS, SETTINGS,
SQLITE_LIMIT_ATTACHED, SQLITE_LIMIT_ATTACHED,
Datasette,
pm, pm,
) )
from .utils import ( from .utils import (
LoadExtension,
StartupError,
check_connection,
find_spatialite,
parse_metadata,
ConnectionProblem, ConnectionProblem,
LoadExtension,
SpatialiteConnectionProblem, SpatialiteConnectionProblem,
initial_path_for_datasette,
temporary_docker_directory,
value_as_boolean,
SpatialiteNotFound, SpatialiteNotFound,
StartupError,
StaticMount, StaticMount,
ValueAsBooleanError, ValueAsBooleanError,
check_connection,
find_spatialite,
initial_path_for_datasette,
parse_metadata,
temporary_docker_directory,
value_as_boolean,
) )
from .utils.sqlite import sqlite3 from .utils.sqlite import sqlite3
from .utils.testing import TestClient from .utils.testing import TestClient

Wyświetl plik

@ -1,13 +1,15 @@
import asyncio import asyncio
from collections import namedtuple
from pathlib import Path
import hashlib import hashlib
import janus
import queue import queue
import sys import sys
import threading import threading
import uuid import uuid
from collections import namedtuple
from pathlib import Path
import janus
from .inspect import inspect_hash
from .tracer import trace from .tracer import trace
from .utils import ( from .utils import (
detect_fts, detect_fts,
@ -15,12 +17,11 @@ from .utils import (
detect_spatialite, detect_spatialite,
get_all_foreign_keys, get_all_foreign_keys,
get_outbound_foreign_keys, get_outbound_foreign_keys,
sqlite_timelimit,
sqlite3, sqlite3,
table_columns, sqlite_timelimit,
table_column_details, table_column_details,
table_columns,
) )
from .inspect import inspect_hash
connections = threading.local() connections = threading.local()

Wyświetl plik

@ -1,8 +1,9 @@
from datasette import hookimpl
import datetime import datetime
import os import os
import time import time
from datasette import hookimpl
def header(key, request): def header(key, request):
key = key.replace("_", "-").encode("utf-8") key = key.replace("_", "-").encode("utf-8")

Wyświetl plik

@ -1,8 +1,10 @@
from datasette import hookimpl, Permission
from datasette.utils import actor_matches_allow
import itsdangerous
import time import time
import itsdangerous
from datasette import Permission, hookimpl
from datasette.utils import actor_matches_allow
@hookimpl @hookimpl
def register_permissions(): def register_permissions():

Wyświetl plik

@ -1,12 +1,13 @@
import json import json
import urllib import urllib
from datasette import hookimpl from datasette import hookimpl
from datasette.database import QueryInterrupted from datasette.database import QueryInterrupted
from datasette.utils import ( from datasette.utils import (
detect_json1,
escape_sqlite, escape_sqlite,
path_with_added_args, path_with_added_args,
path_with_removed_args, path_with_removed_args,
detect_json1,
sqlite3, sqlite3,
) )

Wyświetl plik

@ -1,8 +1,10 @@
from datasette import hookimpl
from datasette.views.base import DatasetteError
from datasette.utils.asgi import BadRequest
import json import json
import numbers import numbers
from datasette import hookimpl
from datasette.utils.asgi import BadRequest
from datasette.views.base import DatasetteError
from .utils import detect_json1, escape_sqlite, path_with_removed_args from .utils import detect_json1, escape_sqlite, path_with_removed_args

Wyświetl plik

@ -1,5 +1,6 @@
from os import stat from os import stat
from datasette import hookimpl, Response
from datasette import Response, hookimpl
@hookimpl(trylast=True) @hookimpl(trylast=True)

Wyświetl plik

@ -1,14 +1,14 @@
from datasette import hookimpl, Response
from .utils import await_me_maybe, add_cors_headers
from .utils.asgi import (
Base400,
Forbidden,
)
from .views.base import DatasetteError
from markupsafe import Markup
import pdb import pdb
import traceback import traceback
from markupsafe import Markup
from datasette import Response, hookimpl
from .plugins import pm from .plugins import pm
from .utils import add_cors_headers, await_me_maybe
from .utils.asgi import Base400, Forbidden
from .views.base import DatasetteError
try: try:
import rich import rich

Wyświetl plik

@ -1,5 +1,4 @@
from pluggy import HookimplMarker from pluggy import HookimplMarker, HookspecMarker
from pluggy import HookspecMarker
hookspec = HookspecMarker("datasette") hookspec = HookspecMarker("datasette")
hookimpl = HookimplMarker("datasette") hookimpl = HookimplMarker("datasette")

Wyświetl plik

@ -1,16 +1,15 @@
import hashlib import hashlib
from .utils import ( from .utils import (
detect_spatialite,
detect_fts, detect_fts,
detect_primary_keys, detect_primary_keys,
detect_spatialite,
escape_sqlite, escape_sqlite,
get_all_foreign_keys, get_all_foreign_keys,
table_columns,
sqlite3, sqlite3,
table_columns,
) )
HASH_BLOCK_SIZE = 1024 * 1024 HASH_BLOCK_SIZE = 1024 * 1024

Wyświetl plik

@ -1,7 +1,9 @@
import importlib import importlib
import pluggy
import pkg_resources
import sys import sys
import pkg_resources
import pluggy
from . import hookspecs from . import hookspecs
DEFAULT_PLUGINS = ( DEFAULT_PLUGINS = (

Wyświetl plik

@ -1,15 +1,17 @@
from datasette import hookimpl
import click
import json import json
import os import os
import re import re
from subprocess import check_call, check_output from subprocess import check_call, check_output
import click
from datasette import hookimpl
from ..utils import temporary_docker_directory
from .common import ( from .common import (
add_common_publish_arguments_and_options, add_common_publish_arguments_and_options,
fail_if_publish_binary_not_installed, fail_if_publish_binary_not_installed,
) )
from ..utils import temporary_docker_directory
@hookimpl @hookimpl

Wyświetl plik

@ -1,9 +1,11 @@
from ..utils import StaticMount
import click
import os import os
import shutil import shutil
import sys import sys
import click
from ..utils import StaticMount
def add_common_publish_arguments_and_options(subcommand): def add_common_publish_arguments_and_options(subcommand):
for decorator in reversed( for decorator in reversed(

Wyświetl plik

@ -1,19 +1,21 @@
from contextlib import contextmanager
from datasette import hookimpl
import click
import json import json
import os import os
import pathlib import pathlib
import shlex import shlex
import shutil import shutil
from subprocess import call, check_output
import tempfile import tempfile
from contextlib import contextmanager
from subprocess import call, check_output
import click
from datasette import hookimpl
from datasette.utils import link_or_copy, link_or_copy_directory, parse_metadata
from .common import ( from .common import (
add_common_publish_arguments_and_options, add_common_publish_arguments_and_options,
fail_if_publish_binary_not_installed, fail_if_publish_binary_not_installed,
) )
from datasette.utils import link_or_copy, link_or_copy_directory, parse_metadata
@hookimpl @hookimpl

Wyświetl plik

@ -1,10 +1,11 @@
import json import json
from datasette.utils import ( from datasette.utils import (
value_as_boolean,
remove_infinites,
CustomJSONEncoder, CustomJSONEncoder,
path_from_row_pks, path_from_row_pks,
remove_infinites,
sqlite3, sqlite3,
value_as_boolean,
) )
from datasette.utils.asgi import Response from datasette.utils.asgi import Response

Wyświetl plik

@ -1,10 +1,11 @@
import asyncio import asyncio
import json
import time
import traceback
from contextlib import contextmanager from contextlib import contextmanager
from contextvars import ContextVar from contextvars import ContextVar
from markupsafe import escape from markupsafe import escape
import time
import json
import traceback
tracers = {} tracers = {}

Wyświetl plik

@ -1,6 +1,7 @@
from .utils import tilde_encode, path_with_format, HASH_LENGTH, PrefixedUrlString
import urllib import urllib
from .utils import HASH_LENGTH, PrefixedUrlString, path_with_format, tilde_encode
class Urls: class Urls:
def __init__(self, ds): def __init__(self, ds):

Wyświetl plik

@ -1,28 +1,29 @@
import asyncio import asyncio
from contextlib import contextmanager
import click
from collections import OrderedDict, namedtuple, Counter
import base64 import base64
import hashlib import hashlib
import inspect import inspect
import json import json
import markupsafe
import mergedeep
import os import os
import re import re
import secrets
import shlex import shlex
import shutil
import tempfile import tempfile
import typing
import time import time
import types import types
import secrets import typing
import shutil
import urllib import urllib
from collections import Counter, OrderedDict, namedtuple
from contextlib import contextmanager
import click
import markupsafe
import mergedeep
import yaml import yaml
from .shutil_backport import copytree from .shutil_backport import copytree
from .sqlite import sqlite3, supports_table_xinfo from .sqlite import sqlite3, supports_table_xinfo
# From https://www.sqlite.org/lang_keywords.html # From https://www.sqlite.org/lang_keywords.html
reserved_words = set( reserved_words = set(
( (

Wyświetl plik

@ -1,12 +1,14 @@
import json import json
from datasette.utils import MultiParams from http.cookies import Morsel, SimpleCookie
from mimetypes import guess_type from mimetypes import guess_type
from urllib.parse import parse_qs, urlunparse, parse_qsl
from pathlib import Path from pathlib import Path
from http.cookies import SimpleCookie, Morsel from urllib.parse import parse_qs, parse_qsl, urlunparse
import aiofiles import aiofiles
import aiofiles.os import aiofiles.os
from datasette.utils import MultiParams
# Workaround for adding samesite support to pre 3.8 python # Workaround for adding samesite support to pre 3.8 python
Morsel._reserved["samesite"] = "SameSite" Morsel._reserved["samesite"] = "SameSite"
# Thanks, Starlette: # Thanks, Starlette:

Wyświetl plik

@ -1,6 +1,6 @@
import asyncio import asyncio
import types import types
from typing import NamedTuple, Any from typing import Any, NamedTuple
class CallableStatus(NamedTuple): class CallableStatus(NamedTuple):

Wyświetl plik

@ -1,4 +1,5 @@
import textwrap import textwrap
from datasette.utils import table_column_details from datasette.utils import table_column_details

Wyświetl plik

@ -5,7 +5,7 @@ This code is licensed under the Python License:
https://github.com/python/cpython/blob/v3.8.3/LICENSE https://github.com/python/cpython/blob/v3.8.3/LICENSE
""" """
import os import os
from shutil import copy, copy2, copystat, Error from shutil import Error, copy, copy2, copystat
def _copytree( def _copytree(

Wyświetl plik

@ -1,6 +1,7 @@
from asgiref.sync import async_to_sync
from urllib.parse import urlencode
import json import json
from urllib.parse import urlencode
from asgiref.sync import async_to_sync
# These wrapper classes pre-date the introduction of # These wrapper classes pre-date the introduction of
# datasette.client and httpx to Datasette. They could # datasette.client and httpx to Datasette. They could

Wyświetl plik

@ -5,33 +5,26 @@ import sys
import textwrap import textwrap
import time import time
import urllib import urllib
from markupsafe import escape
import pint import pint
from markupsafe import escape
from datasette import __version__ from datasette import __version__
from datasette.database import QueryInterrupted from datasette.database import QueryInterrupted
from datasette.utils.asgi import Request
from datasette.utils import ( from datasette.utils import (
add_cors_headers,
await_me_maybe,
EscapeHtmlWriter, EscapeHtmlWriter,
InvalidSql, InvalidSql,
LimitedWriter, LimitedWriter,
add_cors_headers,
await_me_maybe,
call_with_supported_arguments, call_with_supported_arguments,
path_from_row_pks, path_from_row_pks,
path_with_added_args, path_with_added_args,
path_with_removed_args,
path_with_format, path_with_format,
path_with_removed_args,
sqlite3, sqlite3,
) )
from datasette.utils.asgi import ( from datasette.utils.asgi import AsgiStream, BadRequest, NotFound, Request, Response
AsgiStream,
NotFound,
Response,
BadRequest,
)
ureg = pint.UnitRegistry() ureg = pint.UnitRegistry()

Wyświetl plik

@ -1,36 +1,37 @@
from dataclasses import dataclass, field
from typing import Callable
from urllib.parse import parse_qsl, urlencode
import asyncio import asyncio
import hashlib import hashlib
import itertools import itertools
import json import json
import markupsafe
import os import os
import re import re
import sqlite_utils
import textwrap import textwrap
from dataclasses import dataclass, field
from typing import Callable
from urllib.parse import parse_qsl, urlencode
import markupsafe
import sqlite_utils
from datasette.database import QueryInterrupted from datasette.database import QueryInterrupted
from datasette.plugins import pm
from datasette.utils import ( from datasette.utils import (
InvalidSql,
add_cors_headers, add_cors_headers,
await_me_maybe, await_me_maybe,
call_with_supported_arguments, call_with_supported_arguments,
derive_named_parameters, derive_named_parameters,
format_bytes, format_bytes,
tilde_decode,
to_css_class,
validate_sql_select,
is_url, is_url,
path_with_added_args, path_with_added_args,
path_with_format, path_with_format,
path_with_removed_args, path_with_removed_args,
sqlite3, sqlite3,
tilde_decode,
to_css_class,
truncate_url, truncate_url,
InvalidSql, validate_sql_select,
) )
from datasette.utils.asgi import AsgiFileDownload, NotFound, Response, Forbidden from datasette.utils.asgi import AsgiFileDownload, Forbidden, NotFound, Response
from datasette.plugins import pm
from .base import BaseView, DatasetteError, View, _error, stream_csv from .base import BaseView, DatasetteError, View, _error, stream_csv

Wyświetl plik

@ -1,13 +1,12 @@
import hashlib import hashlib
import json import json
from datasette.utils import add_cors_headers, CustomJSONEncoder from datasette.utils import CustomJSONEncoder, add_cors_headers
from datasette.utils.asgi import Response from datasette.utils.asgi import Response
from datasette.version import __version__ from datasette.version import __version__
from .base import BaseView from .base import BaseView
# Truncate table list on homepage at: # Truncate table list on homepage at:
TRUNCATE_AT = 5 TRUNCATE_AT = 5

Wyświetl plik

@ -1,15 +1,18 @@
from datasette.utils.asgi import NotFound, Forbidden, Response import json
import sqlite_utils
from datasette.database import QueryInterrupted from datasette.database import QueryInterrupted
from .base import DataView, BaseView, _error
from datasette.utils import ( from datasette.utils import (
tilde_decode,
urlsafe_components,
to_css_class,
escape_sqlite, escape_sqlite,
row_sql_params_pks, row_sql_params_pks,
tilde_decode,
to_css_class,
urlsafe_components,
) )
import json from datasette.utils.asgi import Forbidden, NotFound, Response
import sqlite_utils
from .base import BaseView, DataView, _error
from .table import display_columns_and_rows from .table import display_columns_and_rows
@ -152,7 +155,7 @@ class RowError(Exception):
async def _resolve_row_and_check_permission(datasette, request, permission): async def _resolve_row_and_check_permission(datasette, request, permission):
from datasette.app import DatabaseNotFound, TableNotFound, RowNotFound from datasette.app import DatabaseNotFound, RowNotFound, TableNotFound
try: try:
resolved = await datasette.resolve_row(request) resolved = await datasette.resolve_row(request)

Wyświetl plik

@ -1,14 +1,16 @@
import json import json
from datasette.utils.asgi import Response, Forbidden import secrets
import urllib
from datasette.utils import ( from datasette.utils import (
actor_matches_allow, actor_matches_allow,
add_cors_headers, add_cors_headers,
tilde_encode,
tilde_decode, tilde_decode,
tilde_encode,
) )
from datasette.utils.asgi import Forbidden, Response
from .base import BaseView, View from .base import BaseView, View
import secrets
import urllib
class JsonDataView(BaseView): class JsonDataView(BaseView):

Wyświetl plik

@ -3,40 +3,41 @@ import itertools
import json import json
import urllib import urllib
from asyncinject import Registry
import markupsafe import markupsafe
import sqlite_utils
from asyncinject import Registry
from datasette.plugins import pm
from datasette.database import QueryInterrupted
from datasette import tracer from datasette import tracer
from datasette.database import QueryInterrupted
from datasette.filters import Filters
from datasette.plugins import pm
from datasette.utils import ( from datasette.utils import (
CustomRow,
InvalidSql,
add_cors_headers, add_cors_headers,
append_querystring,
await_me_maybe, await_me_maybe,
call_with_supported_arguments, call_with_supported_arguments,
CustomRow,
append_querystring,
compound_keys_after_sql, compound_keys_after_sql,
format_bytes,
tilde_encode,
escape_sqlite, escape_sqlite,
filters_should_redirect, filters_should_redirect,
format_bytes,
is_url, is_url,
path_from_row_pks, path_from_row_pks,
path_with_added_args, path_with_added_args,
path_with_format, path_with_format,
path_with_removed_args, path_with_removed_args,
path_with_replaced_args, path_with_replaced_args,
sqlite3,
tilde_encode,
to_css_class, to_css_class,
truncate_url, truncate_url,
urlsafe_components, urlsafe_components,
value_as_boolean, value_as_boolean,
InvalidSql,
sqlite3,
) )
from datasette.utils.asgi import BadRequest, Forbidden, NotFound, Response from datasette.utils.asgi import BadRequest, Forbidden, NotFound, Response
from datasette.filters import Filters
import sqlite_utils from .base import BaseView, DatasetteError, _error, stream_csv, ureg
from .base import BaseView, DatasetteError, ureg, _error, stream_csv
from .database import QueryView from .database import QueryView
LINK_WITH_LABEL = ( LINK_WITH_LABEL = (

Wyświetl plik

@ -1,7 +1,8 @@
import json import json
import textwrap import textwrap
from yaml import safe_dump
from ruamel.yaml import round_trip_load from ruamel.yaml import round_trip_load
from yaml import safe_dump
def metadata_example(cog, data=None, yaml=None): def metadata_example(cog, data=None, yaml=None):

Wyświetl plik

@ -1,6 +1,7 @@
from setuptools import setup, find_packages
import os import os
from setuptools import find_packages, setup
def get_long_description(): def get_long_description():
with open( with open(

Wyświetl plik

@ -1,15 +1,15 @@
import asyncio import asyncio
import httpx
import os import os
import pathlib import pathlib
import pytest
import pytest_asyncio
import re import re
import subprocess import subprocess
import tempfile import tempfile
import time import time
import trustme
import httpx
import pytest
import pytest_asyncio
import trustme
try: try:
import pysqlite3 as sqlite3 import pysqlite3 as sqlite3
@ -41,6 +41,7 @@ def wait_until_responds(url, timeout=5.0, client=httpx, **kwargs):
@pytest_asyncio.fixture @pytest_asyncio.fixture
async def ds_client(): async def ds_client():
from datasette.app import Datasette from datasette.app import Datasette
from .fixtures import METADATA, PLUGINS_DIR from .fixtures import METADATA, PLUGINS_DIR
global _ds_client global _ds_client
@ -59,7 +60,7 @@ async def ds_client():
"num_sql_threads": 1, "num_sql_threads": 1,
}, },
) )
from .fixtures import TABLES, TABLE_PARAMETERIZED_SQL from .fixtures import TABLE_PARAMETERIZED_SQL, TABLES
db = ds.add_memory_database("fixtures") db = ds.add_memory_database("fixtures")
ds.remove_database("_memory") ds.remove_database("_memory")

Wyświetl plik

@ -1,18 +1,19 @@
from datasette.app import Datasette
from datasette.utils.sqlite import sqlite3
from datasette.utils.testing import TestClient
import click
import contextlib import contextlib
import itertools import itertools
import json import json
import os import os
import pathlib import pathlib
import pytest
import random import random
import string import string
import tempfile import tempfile
import textwrap import textwrap
import click
import pytest
from datasette.app import Datasette
from datasette.utils.sqlite import sqlite3
from datasette.utils.testing import TestClient
# This temp file is used by one of the plugin config tests # This temp file is used by one of the plugin config tests
TEMP_PLUGIN_SECRET_FILE = os.path.join(tempfile.gettempdir(), "plugin-secret") TEMP_PLUGIN_SECRET_FILE = os.path.join(tempfile.gettempdir(), "plugin-secret")

Wyświetl plik

@ -1,13 +1,14 @@
import asyncio import asyncio
from datasette import hookimpl, Permission
from datasette.facets import Facet
from datasette import tracer
from datasette.utils import path_with_added_args
from datasette.utils.asgi import asgi_send_json, Response
import base64 import base64
import pint
import json import json
import pint
from datasette import Permission, hookimpl, tracer
from datasette.facets import Facet
from datasette.utils import path_with_added_args
from datasette.utils.asgi import Response, asgi_send_json
ureg = pint.UnitRegistry() ureg = pint.UnitRegistry()
@ -326,11 +327,7 @@ def startup(datasette):
datasette._startup_hook_fired = True datasette._startup_hook_fired = True
# And test some import shortcuts too # And test some import shortcuts too
from datasette import Response from datasette import Forbidden, NotFound, Response, actor_matches_allow, hookimpl
from datasette import Forbidden
from datasette import NotFound
from datasette import hookimpl
from datasette import actor_matches_allow
_ = (Response, Forbidden, NotFound, hookimpl, actor_matches_allow) _ = (Response, Forbidden, NotFound, hookimpl, actor_matches_allow)

Wyświetl plik

@ -1,8 +1,10 @@
import json
from functools import wraps
import markupsafe
from datasette import hookimpl from datasette import hookimpl
from datasette.utils.asgi import Response from datasette.utils.asgi import Response
from functools import wraps
import markupsafe
import json
@hookimpl @hookimpl

Wyświetl plik

@ -1,6 +1,7 @@
import json
from datasette import hookimpl from datasette import hookimpl
from datasette.utils.asgi import Response from datasette.utils.asgi import Response
import json
async def can_render( async def can_render(

Wyświetl plik

@ -1,6 +1,7 @@
from datasette import hookimpl
import time import time
from datasette import hookimpl
@hookimpl @hookimpl
def prepare_connection(conn): def prepare_connection(conn):

Wyświetl plik

@ -1,26 +1,29 @@
import pathlib
import sys
import urllib
import pytest
from datasette.app import Datasette from datasette.app import Datasette
from datasette.plugins import DEFAULT_PLUGINS from datasette.plugins import DEFAULT_PLUGINS
from datasette.utils.sqlite import supports_table_xinfo from datasette.utils.sqlite import supports_table_xinfo
from datasette.version import __version__ from datasette.version import __version__
from .fixtures import ( # noqa from .fixtures import ( # noqa
app_client,
app_client_no_files,
app_client_with_dot,
app_client_shorter_time_limit,
app_client_two_attached_databases_one_immutable,
app_client_larger_cache_size,
app_client_with_cors,
app_client_two_attached_databases,
app_client_conflicting_database_names,
app_client_immutable_and_inspect_file,
make_app_client,
EXPECTED_PLUGINS, EXPECTED_PLUGINS,
METADATA, METADATA,
app_client,
app_client_conflicting_database_names,
app_client_immutable_and_inspect_file,
app_client_larger_cache_size,
app_client_no_files,
app_client_shorter_time_limit,
app_client_two_attached_databases,
app_client_two_attached_databases_one_immutable,
app_client_with_cors,
app_client_with_dot,
make_app_client,
) )
import pathlib
import pytest
import sys
import urllib
@pytest.mark.asyncio @pytest.mark.asyncio

Wyświetl plik

@ -1,7 +1,9 @@
import time
import pytest
from datasette.app import Datasette from datasette.app import Datasette
from datasette.utils import sqlite3 from datasette.utils import sqlite3
import pytest
import time
@pytest.fixture @pytest.fixture

Wyświetl plik

@ -1,11 +1,14 @@
import time
import pytest
from bs4 import BeautifulSoup as Soup from bs4 import BeautifulSoup as Soup
from click.testing import CliRunner
from datasette.cli import cli
from datasette.utils import baseconv
from .fixtures import app_client from .fixtures import app_client
from .utils import cookie_was_deleted from .utils import cookie_was_deleted
from click.testing import CliRunner
from datasette.utils import baseconv
from datasette.cli import cli
import pytest
import time
@pytest.mark.asyncio @pytest.mark.asyncio

Wyświetl plik

@ -1,8 +1,10 @@
from datasette.views.base import View import json
import pytest
from datasette import Request, Response from datasette import Request, Response
from datasette.app import Datasette from datasette.app import Datasette
import json from datasette.views.base import View
import pytest
class GetView(View): class GetView(View):

Wyświetl plik

@ -1,8 +1,9 @@
import black
from click.testing import CliRunner
from pathlib import Path
import pytest
import sys import sys
from pathlib import Path
import black
import pytest
from click.testing import CliRunner
code_root = Path(__file__).parent.parent code_root = Path(__file__).parent.parent

Wyświetl plik

@ -1,8 +1,10 @@
from bs4 import BeautifulSoup as Soup
import json import json
import pytest
import re import re
from .fixtures import make_app_client, app_client
import pytest
from bs4 import BeautifulSoup as Soup
from .fixtures import app_client, make_app_client
@pytest.fixture @pytest.fixture

Wyświetl plik

@ -1,25 +1,25 @@
from .fixtures import (
app_client,
make_app_client,
TestClient as _TestClient,
EXPECTED_PLUGINS,
)
import asyncio import asyncio
from datasette.app import SETTINGS
from datasette.plugins import DEFAULT_PLUGINS
from datasette.cli import cli, serve
from datasette.version import __version__
from datasette.utils import tilde_encode
from datasette.utils.sqlite import sqlite3
from click.testing import CliRunner
import io import io
import json import json
import pathlib import pathlib
import pytest
import sys import sys
import textwrap import textwrap
from unittest import mock
import urllib import urllib
from unittest import mock
import pytest
from click.testing import CliRunner
from datasette.app import SETTINGS
from datasette.cli import cli, serve
from datasette.plugins import DEFAULT_PLUGINS
from datasette.utils import tilde_encode
from datasette.utils.sqlite import sqlite3
from datasette.version import __version__
from .fixtures import EXPECTED_PLUGINS
from .fixtures import TestClient as _TestClient
from .fixtures import app_client, make_app_client
def test_inspect_cli(app_client): def test_inspect_cli(app_client):

Wyświetl plik

@ -1,8 +1,10 @@
import json
import textwrap
from click.testing import CliRunner
from datasette.cli import cli, serve from datasette.cli import cli, serve
from datasette.plugins import pm from datasette.plugins import pm
from click.testing import CliRunner
import textwrap
import json
def test_serve_with_get(tmp_path_factory): def test_serve_with_get(tmp_path_factory):

Wyświetl plik

@ -1,6 +1,7 @@
import socket
import httpx import httpx
import pytest import pytest
import socket
@pytest.mark.serial @pytest.mark.serial

Wyświetl plik

@ -1,13 +1,15 @@
import json import json
import pathlib import pathlib
import pytest import pytest
from click.testing import CliRunner
from datasette.app import Datasette from datasette.app import Datasette
from datasette.cli import cli from datasette.cli import cli
from datasette.utils.sqlite import sqlite3
from datasette.utils import StartupError from datasette.utils import StartupError
from datasette.utils.sqlite import sqlite3
from .fixtures import TestClient as _TestClient from .fixtures import TestClient as _TestClient
from click.testing import CliRunner
PLUGIN = """ PLUGIN = """
from datasette import hookimpl from datasette import hookimpl

Wyświetl plik

@ -1,7 +1,10 @@
from datasette.cli import cli
from click.testing import CliRunner
import urllib
import sqlite3 import sqlite3
import urllib
from click.testing import CliRunner
from datasette.cli import cli
from .fixtures import app_client_two_attached_databases_crossdb_enabled from .fixtures import app_client_two_attached_databases_crossdb_enabled

Wyświetl plik

@ -1,12 +1,14 @@
from bs4 import BeautifulSoup as Soup import urllib.parse
import pytest import pytest
from bs4 import BeautifulSoup as Soup
from .fixtures import ( # noqa from .fixtures import ( # noqa
app_client, app_client,
app_client_csv_max_mb_one, app_client_csv_max_mb_one,
app_client_with_cors, app_client_with_cors,
app_client_with_trace, app_client_with_trace,
) )
import urllib.parse
EXPECTED_TABLE_CSV = """id,content EXPECTED_TABLE_CSV = """id,content
1,hello 1,hello

Wyświetl plik

@ -1,5 +1,7 @@
import pathlib import pathlib
import pytest import pytest
from .fixtures import make_app_client from .fixtures import make_app_client
TEST_TEMPLATE_DIRS = str(pathlib.Path(__file__).parent / "test_templates") TEST_TEMPLATE_DIRS = str(pathlib.Path(__file__).parent / "test_templates")

Wyświetl plik

@ -1,13 +1,15 @@
""" """
Tests to ensure certain things are documented. Tests to ensure certain things are documented.
""" """
import re
from pathlib import Path
import pytest
from click.testing import CliRunner from click.testing import CliRunner
from datasette import app, utils from datasette import app, utils
from datasette.cli import cli from datasette.cli import cli
from datasette.filters import Filters from datasette.filters import Filters
from pathlib import Path
import pytest
import re
docs_path = Path(__file__).parent.parent / "docs" docs_path = Path(__file__).parent.parent / "docs"
label_re = re.compile(r"\.\. _([^\s:]+):") label_re = re.compile(r"\.\. _([^\s:]+):")

Wyświetl plik

@ -1,11 +1,14 @@
import json
import pytest
from datasette.app import Datasette from datasette.app import Datasette
from datasette.database import Database from datasette.database import Database
from datasette.facets import ColumnFacet, ArrayFacet, DateFacet from datasette.facets import ArrayFacet, ColumnFacet, DateFacet
from datasette.utils.asgi import Request
from datasette.utils import detect_json1 from datasette.utils import detect_json1
from datasette.utils.asgi import Request
from .fixtures import make_app_client from .fixtures import make_app_client
import json
import pytest
@pytest.mark.asyncio @pytest.mark.asyncio

Wyświetl plik

@ -1,7 +1,8 @@
from datasette.filters import Filters, through_filters, where_filters, search_filters
from datasette.utils.asgi import Request
import pytest import pytest
from datasette.filters import Filters, search_filters, through_filters, where_filters
from datasette.utils.asgi import Request
@pytest.mark.parametrize( @pytest.mark.parametrize(
"args,expected_where,expected_params", "args,expected_where,expected_params",

Wyświetl plik

@ -1,19 +1,22 @@
import json
import pathlib
import re
import urllib.parse
import pytest
from bs4 import BeautifulSoup as Soup from bs4 import BeautifulSoup as Soup
from datasette.utils import allowed_pragmas from datasette.utils import allowed_pragmas
from .fixtures import ( # noqa from .fixtures import ( # noqa
METADATA,
app_client, app_client,
app_client_base_url_prefix, app_client_base_url_prefix,
app_client_shorter_time_limit, app_client_shorter_time_limit,
app_client_two_attached_databases, app_client_two_attached_databases,
make_app_client, make_app_client,
METADATA,
) )
from .utils import assert_footer_links, inner_html from .utils import assert_footer_links, inner_html
import json
import pathlib
import pytest
import re
import urllib.parse
def test_homepage(app_client_two_attached_databases): def test_homepage(app_client_two_attached_databases):

Wyświetl plik

@ -1,14 +1,17 @@
""" """
Tests for the datasette.database.Database class Tests for the datasette.database.Database class
""" """
from datasette.database import Database, Results, MultipleValues
from datasette.utils.sqlite import sqlite3
from datasette.utils import Column
from .fixtures import app_client, app_client_two_attached_databases_crossdb_enabled
import pytest
import time import time
import uuid import uuid
import pytest
from datasette.database import Database, MultipleValues, Results
from datasette.utils import Column
from datasette.utils.sqlite import sqlite3
from .fixtures import app_client, app_client_two_attached_databases_crossdb_enabled
@pytest.fixture @pytest.fixture
def db(app_client): def db(app_client):

Wyświetl plik

@ -2,12 +2,14 @@
Tests for the datasette.app.Datasette class Tests for the datasette.app.Datasette class
""" """
import dataclasses import dataclasses
from datasette import Forbidden, Context
from datasette.app import Datasette, Database
from itsdangerous import BadSignature
import pytest
from typing import Optional from typing import Optional
import pytest
from itsdangerous import BadSignature
from datasette import Context, Forbidden
from datasette.app import Database, Datasette
@pytest.fixture @pytest.fixture
def datasette(ds_client): def datasette(ds_client):

Wyświetl plik

@ -1,7 +1,9 @@
from datasette.utils.asgi import Request
import json import json
import pytest import pytest
from datasette.utils.asgi import Request
@pytest.mark.asyncio @pytest.mark.asyncio
async def test_request_post_vars(): async def test_request_post_vars():

Wyświetl plik

@ -1,6 +1,7 @@
from datasette.utils.asgi import Response
import pytest import pytest
from datasette.utils.asgi import Response
def test_response_html(): def test_response_html():
response = Response.html("Hello from HTML") response = Response.html("Hello from HTML")

Wyświetl plik

@ -1,6 +1,7 @@
import pytest
from datasette.app import Datasette from datasette.app import Datasette
from datasette.utils import PrefixedUrlString from datasette.utils import PrefixedUrlString
import pytest
@pytest.fixture(scope="module") @pytest.fixture(scope="module")

Wyświetl plik

@ -1,7 +1,9 @@
from datasette.app import Datasette
import pytest
from pathlib import Path from pathlib import Path
import pytest
from datasette.app import Datasette
# not necessarily a full path - the full compiled path looks like "ext.dylib" # not necessarily a full path - the full compiled path looks like "ext.dylib"
# or another suffix, but sqlite will, under the hood, decide which file # or another suffix, but sqlite will, under the hood, decide which file
# extension to use based on the operating system (apple=dylib, windows=dll etc) # extension to use based on the operating system (apple=dylib, windows=dll etc)

Wyświetl plik

@ -1,6 +1,7 @@
from .utils import cookie_was_deleted
import pytest import pytest
from .utils import cookie_was_deleted
@pytest.mark.asyncio @pytest.mark.asyncio
@pytest.mark.parametrize( @pytest.mark.parametrize(

Wyświetl plik

@ -1,9 +1,11 @@
from click.testing import CliRunner
from datasette import cli
from unittest import mock
import os import os
import pathlib import pathlib
from unittest import mock
import pytest import pytest
from click.testing import CliRunner
from datasette import cli
class CaptureDockerfile: class CaptureDockerfile:

Wyświetl plik

@ -1,17 +1,20 @@
import collections import collections
from datasette.app import Datasette
from datasette.cli import cli
from .fixtures import app_client, assert_permissions_checked, make_app_client
from click.testing import CliRunner
from bs4 import BeautifulSoup as Soup
import copy import copy
import json import json
from pprint import pprint
import pytest_asyncio
import pytest
import re import re
import time import time
import urllib import urllib
from pprint import pprint
import pytest
import pytest_asyncio
from bs4 import BeautifulSoup as Soup
from click.testing import CliRunner
from datasette.app import Datasette
from datasette.cli import cli
from .fixtures import app_client, assert_permissions_checked, make_app_client
@pytest.fixture(scope="module") @pytest.fixture(scope="module")

Wyświetl plik

@ -1,21 +1,3 @@
from bs4 import BeautifulSoup as Soup
from .fixtures import (
app_client,
app_client,
make_app_client,
TABLES,
TEMP_PLUGIN_SECRET_FILE,
PLUGINS_DIR,
TestClient as _TestClient,
) # noqa
from click.testing import CliRunner
from datasette.app import Datasette
from datasette import cli, hookimpl, Permission
from datasette.filters import FilterArguments
from datasette.plugins import get_plugins, DEFAULT_PLUGINS, pm
from datasette.utils.sqlite import sqlite3
from datasette.utils import CustomRow, StartupError
from jinja2.environment import Template
import base64 import base64
import importlib import importlib
import json import json
@ -23,9 +5,24 @@ import os
import pathlib import pathlib
import re import re
import textwrap import textwrap
import pytest
import urllib import urllib
import pytest
from bs4 import BeautifulSoup as Soup
from click.testing import CliRunner
from jinja2.environment import Template
from datasette import Permission, cli, hookimpl
from datasette.app import Datasette
from datasette.filters import FilterArguments
from datasette.plugins import DEFAULT_PLUGINS, get_plugins, pm
from datasette.utils import CustomRow, StartupError
from datasette.utils.sqlite import sqlite3
from .fixtures import PLUGINS_DIR, TABLES, TEMP_PLUGIN_SECRET_FILE
from .fixtures import TestClient as _TestClient # noqa
from .fixtures import app_client, make_app_client
at_memory_re = re.compile(r" at 0x\w+") at_memory_re = re.compile(r" at 0x\w+")

Wyświetl plik

@ -1,10 +1,12 @@
from click.testing import CliRunner
from datasette import cli
from unittest import mock
import json import json
import os import os
import pytest
import textwrap import textwrap
from unittest import mock
import pytest
from click.testing import CliRunner
from datasette import cli
@pytest.mark.serial @pytest.mark.serial

Wyświetl plik

@ -1,9 +1,11 @@
from click.testing import CliRunner
from datasette import cli
from unittest import mock
import os import os
import pathlib import pathlib
from unittest import mock
import pytest import pytest
from click.testing import CliRunner
from datasette import cli
@pytest.mark.serial @pytest.mark.serial

Wyświetl plik

@ -1,8 +1,9 @@
from datasette.app import Datasette, Database
from datasette.utils import resolve_routes
import pytest import pytest
import pytest_asyncio import pytest_asyncio
from datasette.app import Database, Datasette
from datasette.utils import resolve_routes
@pytest.fixture(scope="session") @pytest.fixture(scope="session")
def routes(): def routes():

Wyświetl plik

@ -1,8 +1,10 @@
from datasette.app import Datasette
from datasette.utils import find_spatialite, SpatialiteNotFound, SPATIALITE_FUNCTIONS
from .utils import has_load_extension
import pytest import pytest
from datasette.app import Datasette
from datasette.utils import SPATIALITE_FUNCTIONS, SpatialiteNotFound, find_spatialite
from .utils import has_load_extension
def has_spatialite(): def has_spatialite():
try: try:

Wyświetl plik

@ -1,16 +1,19 @@
import json
import urllib
import pytest
from datasette.utils import detect_json1 from datasette.utils import detect_json1
from datasette.utils.sqlite import sqlite_version from datasette.utils.sqlite import sqlite_version
from .fixtures import ( # noqa from .fixtures import ( # noqa
app_client, app_client,
app_client_with_trace,
app_client_returned_rows_matches_page_size, app_client_returned_rows_matches_page_size,
app_client_with_trace,
generate_compound_rows, generate_compound_rows,
generate_sortable_rows, generate_sortable_rows,
make_app_client, make_app_client,
) )
import json
import pytest
import urllib
@pytest.mark.asyncio @pytest.mark.asyncio

Wyświetl plik

@ -1,12 +1,12 @@
from datasette.app import Datasette, Database
from bs4 import BeautifulSoup as Soup
from .fixtures import ( # noqa
app_client,
make_app_client,
)
import pathlib import pathlib
import pytest
import urllib.parse import urllib.parse
import pytest
from bs4 import BeautifulSoup as Soup
from datasette.app import Database, Datasette
from .fixtures import app_client, make_app_client # noqa
from .utils import assert_footer_links, inner_html from .utils import assert_footer_links, inner_html

Wyświetl plik

@ -1,4 +1,5 @@
import pytest import pytest
from .fixtures import make_app_client from .fixtures import make_app_client

Wyświetl plik

@ -1,17 +1,19 @@
""" """
Tests for various datasette helper functions. Tests for various datasette helper functions.
""" """
from datasette.app import Datasette
from datasette import utils
from datasette.utils.asgi import Request
from datasette.utils.sqlite import sqlite3
import json import json
import os import os
import pathlib import pathlib
import pytest
import tempfile import tempfile
from unittest.mock import patch from unittest.mock import patch
import pytest
from datasette import utils
from datasette.app import Datasette
from datasette.utils.asgi import Request
from datasette.utils.sqlite import sqlite3
@pytest.mark.parametrize( @pytest.mark.parametrize(
"path,expected", "path,expected",

Wyświetl plik

@ -1,6 +1,7 @@
from datasette.utils.check_callable import check_callable
import pytest import pytest
from datasette.utils.check_callable import check_callable
class AsyncClass: class AsyncClass:
async def __call__(self): async def __call__(self):