1
0
Fork 0

Type annotations and related changes for bookwyrm.connectors

This commit is contained in:
Joeri de Ruiter 2023-07-28 17:43:32 +02:00
parent 07aca2f62c
commit f07d7b02f1
13 changed files with 357 additions and 176 deletions

View file

@ -1,10 +1,13 @@
""" using a bookwyrm instance as a source of book data """
from __future__ import annotations
from dataclasses import asdict, dataclass
from functools import reduce
import operator
from typing import Optional, Union, Any
from django.contrib.postgres.search import SearchRank, SearchQuery
from django.db.models import F, Q
from django.db.models.query import QuerySet
from bookwyrm import models
from bookwyrm import connectors
@ -12,7 +15,12 @@ from bookwyrm.settings import MEDIA_FULL_URL
# pylint: disable=arguments-differ
def search(query, min_confidence=0, filters=None, return_first=False):
def search(
query: str,
min_confidence: float = 0,
filters: Optional[list[Any]] = None,
return_first: bool = False,
):
"""search your local database"""
filters = filters or []
if not query:
@ -66,7 +74,9 @@ def format_search_result(search_result):
).json()
def search_identifiers(query, *filters, return_first=False):
def search_identifiers(
query, *filters, return_first=False
) -> Union[Optional[models.Edition], QuerySet[models.Edition]]:
"""tries remote_id, isbn; defined as dedupe fields on the model"""
if connectors.maybe_isbn(query):
# Oh did you think the 'S' in ISBN stood for 'standard'?
@ -122,11 +132,11 @@ class SearchResult:
title: str
key: str
connector: object
view_link: str = None
author: str = None
year: str = None
cover: str = None
confidence: int = 1
view_link: Optional[str] = None
author: Optional[str] = None
year: Optional[str] = None
cover: Optional[str] = None
confidence: float = 1.0
def __repr__(self):
# pylint: disable=consider-using-f-string