diff --git a/openlibrary/admin/numbers.py b/openlibrary/admin/numbers.py index 0209aa4f0d8..b11692e696c 100644 --- a/openlibrary/admin/numbers.py +++ b/openlibrary/admin/numbers.py @@ -22,6 +22,7 @@ import functools import logging +import web logger = logging.getLogger(__name__) diff --git a/openlibrary/code.py b/openlibrary/code.py index 086cdbcce10..773cff8509e 100644 --- a/openlibrary/code.py +++ b/openlibrary/code.py @@ -46,7 +46,7 @@ def setup(): load_views() # load actions - from . import actions # noqa: F401 + from . import actions logger.info("loading complete.") @@ -64,7 +64,7 @@ def setup_logging(): def load_views(): """Registers all views by loading all view modules.""" - from .views import showmarc # noqa: F401 + from .views import showmarc setup() diff --git a/openlibrary/conftest.py b/openlibrary/conftest.py index e0824b08d23..b97b9ef5985 100644 --- a/openlibrary/conftest.py +++ b/openlibrary/conftest.py @@ -10,15 +10,9 @@ from openlibrary.i18n import gettext from openlibrary.core import helpers -from openlibrary.mocks.mock_infobase import ( - mock_site, # noqa: F401 needed for tests -) -from openlibrary.mocks.mock_ia import ( - mock_ia, # noqa: F401 needed for tests -) -from openlibrary.mocks.mock_memcache import ( - mock_memcache, # noqa: F401 needed for tests -) +from openlibrary.mocks.mock_infobase import mock_site +from openlibrary.mocks.mock_ia import mock_ia +from openlibrary.mocks.mock_memcache import mock_memcache @pytest.fixture(autouse=True) diff --git a/openlibrary/core/edits.py b/openlibrary/core/edits.py index 368f3884961..1c9d40603e6 100644 --- a/openlibrary/core/edits.py +++ b/openlibrary/core/edits.py @@ -1,5 +1,6 @@ import datetime import json +import web from sqlite3 import IntegrityError from psycopg2.errors import UniqueViolation diff --git a/openlibrary/core/follows.py b/openlibrary/core/follows.py index c021d791ad9..646f009c57e 100644 --- a/openlibrary/core/follows.py +++ b/openlibrary/core/follows.py @@ -1,5 +1,6 @@ import logging -from typing import cast +import web +from typing import cast, Any from openlibrary.core.bookshelves import Bookshelves from . import db diff --git a/openlibrary/core/imports.py b/openlibrary/core/imports.py index bb8d4039929..e34b8a4daed 100644 --- a/openlibrary/core/imports.py +++ b/openlibrary/core/imports.py @@ -14,6 +14,7 @@ from psycopg2.errors import UndefinedTable, UniqueViolation from pydantic import ValidationError from web.db import ResultSet +from web.utils import Storage from . import db diff --git a/openlibrary/core/lists/model.py b/openlibrary/core/lists/model.py index 4610e2b8efb..64a93cd7e45 100644 --- a/openlibrary/core/lists/model.py +++ b/openlibrary/core/lists/model.py @@ -8,7 +8,9 @@ import web import logging -from infogami.infobase import client +from infogami import config +from infogami.infobase import client, common +from infogami.utils import stats from openlibrary.core import helpers as h from openlibrary.core import cache diff --git a/openlibrary/core/models.py b/openlibrary/core/models.py index 4dd0436803f..c0d40323818 100644 --- a/openlibrary/core/models.py +++ b/openlibrary/core/models.py @@ -19,19 +19,22 @@ # TODO: fix this. openlibrary.core should not import plugins. from openlibrary import accounts from openlibrary.core import lending +from openlibrary.catalog import add_book from openlibrary.core.booknotes import Booknotes from openlibrary.core.bookshelves import Bookshelves +from openlibrary.core.follows import PubSub from openlibrary.core.helpers import private_collection_in from openlibrary.core.imports import ImportItem from openlibrary.core.observations import Observations from openlibrary.core.ratings import Ratings -from openlibrary.utils import extract_numeric_id_from_olid +from openlibrary.utils import extract_numeric_id_from_olid, dateutil from openlibrary.utils.isbn import to_isbn_13, isbn_13_to_isbn_10, canonical from openlibrary.core.wikidata import WikidataEntity, get_wikidata_entity from . import cache, waitinglist from urllib.parse import urlencode +from pydantic import ValidationError from .ia import get_metadata from .waitinglist import WaitingLoan @@ -992,7 +995,7 @@ def get_loan_for(self, ocaid, use_cache=False): Returns None if this user hasn't borrowed the given book. """ - from ..plugins.upstream import borrow # noqa: F401 + from ..plugins.upstream import borrow loans = ( lending.get_cached_loans_of_user(self.key) diff --git a/openlibrary/core/processors/__init__.py b/openlibrary/core/processors/__init__.py index b3ee5d6a6d9..01fd63f75c2 100644 --- a/openlibrary/core/processors/__init__.py +++ b/openlibrary/core/processors/__init__.py @@ -1 +1 @@ -from openlibrary.core.processors.readableurls import ReadableUrlProcessor # noqa: F401 +from openlibrary.core.processors.readableurls import ReadableUrlProcessor diff --git a/openlibrary/core/sponsorships.py b/openlibrary/core/sponsorships.py index 5b7cecc7ab5..5aef89b2b0d 100644 --- a/openlibrary/core/sponsorships.py +++ b/openlibrary/core/sponsorships.py @@ -10,7 +10,7 @@ from openlibrary.core import lending from openlibrary.core.vendors import get_betterworldbooks_metadata, get_amazon_metadata from openlibrary import accounts -from openlibrary.accounts.model import get_internet_archive_id +from openlibrary.accounts.model import get_internet_archive_id, sendmail from openlibrary.core.civicrm import ( get_contact_id_by_username, get_sponsorships_by_contact_id, diff --git a/openlibrary/core/vendors.py b/openlibrary/core/vendors.py index fcf3ba89ad1..743900108fb 100644 --- a/openlibrary/core/vendors.py +++ b/openlibrary/core/vendors.py @@ -3,6 +3,7 @@ import re import time +from datetime import date from typing import Any, Literal import requests diff --git a/openlibrary/core/waitinglist.py b/openlibrary/core/waitinglist.py index d68d0798db2..6cf941207a7 100644 --- a/openlibrary/core/waitinglist.py +++ b/openlibrary/core/waitinglist.py @@ -17,6 +17,7 @@ import logging import web from openlibrary.accounts.model import OpenLibraryAccount +from openlibrary.core import cache from . import helpers as h from .sendmail import sendmail_with_template from . import db diff --git a/openlibrary/coverstore/archive.py b/openlibrary/coverstore/archive.py index 8fbdcce3abd..f65394f42ef 100644 --- a/openlibrary/coverstore/archive.py +++ b/openlibrary/coverstore/archive.py @@ -13,6 +13,7 @@ from infogami.infobase import utils from openlibrary.coverstore import config, db +from openlibrary.coverstore.coverlib import find_image_path from scripts.solr_builder.solr_builder.fn_to_cli import FnToCLI diff --git a/openlibrary/coverstore/code.py b/openlibrary/coverstore/code.py index 7ca80db92bb..351be881e56 100644 --- a/openlibrary/coverstore/code.py +++ b/openlibrary/coverstore/code.py @@ -20,6 +20,8 @@ download, ol_get, ol_things, + random_string, + rm_f, safeint, ) from openlibrary.plugins.openlibrary.processors import CORSProcessor diff --git a/openlibrary/data/sitemap.py b/openlibrary/data/sitemap.py index 9bccb42e1f4..b0f92f17343 100644 --- a/openlibrary/data/sitemap.py +++ b/openlibrary/data/sitemap.py @@ -19,6 +19,7 @@ import datetime from gzip import open as gzopen +from openlibrary.plugins.openlibrary.processors import urlsafe t = web.template.Template diff --git a/openlibrary/i18n/__init__.py b/openlibrary/i18n/__init__.py index 0471342888c..6274753df76 100644 --- a/openlibrary/i18n/__init__.py +++ b/openlibrary/i18n/__init__.py @@ -14,7 +14,7 @@ from babel.messages import Catalog, Message from babel.messages.pofile import read_po, write_po from babel.messages.mofile import write_mo -from babel.messages.extract import extract_from_dir, extract_python +from babel.messages.extract import extract_from_file, extract_from_dir, extract_python from .validators import validate diff --git a/openlibrary/i18n/validators.py b/openlibrary/i18n/validators.py index 7ee559ae53b..d3cb7980d76 100644 --- a/openlibrary/i18n/validators.py +++ b/openlibrary/i18n/validators.py @@ -1,7 +1,8 @@ from itertools import groupby import re -from babel.messages.catalog import Message, Catalog +from babel.messages.catalog import TranslationError, Message, Catalog +from babel.messages.checkers import python_format def validate(message: Message, catalog: Catalog) -> list[str]: diff --git a/openlibrary/plugins/admin/mem.py b/openlibrary/plugins/admin/mem.py index 83dee5e1296..f618da71577 100644 --- a/openlibrary/plugins/admin/mem.py +++ b/openlibrary/plugins/admin/mem.py @@ -1,3 +1,4 @@ +from infogami.utils import delegate from infogami.utils.view import render, safeint from openlibrary.plugins.admin import memory import web diff --git a/openlibrary/plugins/books/readlinks.py b/openlibrary/plugins/books/readlinks.py index d500a156615..e66ab6abfc4 100644 --- a/openlibrary/plugins/books/readlinks.py +++ b/openlibrary/plugins/books/readlinks.py @@ -10,6 +10,7 @@ import web from openlibrary.core import ia from openlibrary.core import helpers +from openlibrary.api import OpenLibrary from openlibrary.plugins.books import dynlinks from infogami.utils.delegate import register_exception from infogami.utils import stats diff --git a/openlibrary/plugins/openlibrary/api.py b/openlibrary/plugins/openlibrary/api.py index 14a7c80f0f9..4ed5c140cba 100644 --- a/openlibrary/plugins/openlibrary/api.py +++ b/openlibrary/plugins/openlibrary/api.py @@ -9,14 +9,18 @@ import json from collections import defaultdict from openlibrary.views.loanstats import get_trending_books +from infogami import config from infogami.utils import delegate from infogami.utils.view import render_template # noqa: F401 used for its side effects from infogami.plugins.api.code import jsonapi +from infogami.utils.view import add_flash_message from openlibrary import accounts from openlibrary.plugins.openlibrary.code import can_write from openlibrary.utils import extract_numeric_id_from_olid from openlibrary.utils.isbn import isbn_10_to_isbn_13, normalize_isbn -from openlibrary.core import models, lending, helpers as h +from openlibrary.plugins.worksearch.subjects import get_subject +from openlibrary.accounts.model import OpenLibraryAccount +from openlibrary.core import ia, db, models, lending, helpers as h from openlibrary.core.bookshelves_events import BookshelvesEvents from openlibrary.core.observations import Observations, get_observation_metrics from openlibrary.core.models import Booknotes, Work diff --git a/openlibrary/plugins/openlibrary/borrow_home.py b/openlibrary/plugins/openlibrary/borrow_home.py index afcfc396b3a..f1d02d5504b 100644 --- a/openlibrary/plugins/openlibrary/borrow_home.py +++ b/openlibrary/plugins/openlibrary/borrow_home.py @@ -13,7 +13,8 @@ import eventer from infogami.utils import delegate -from infogami.utils.view import render_template # noqa: F401 used for its side effects +from infogami.utils.view import render_template # used for its side effects + from openlibrary.core import statsdb diff --git a/openlibrary/plugins/openlibrary/code.py b/openlibrary/plugins/openlibrary/code.py index d1ca098b581..63cdec5c3e4 100644 --- a/openlibrary/plugins/openlibrary/code.py +++ b/openlibrary/plugins/openlibrary/code.py @@ -2,7 +2,7 @@ Open Library Plugin. """ -from urllib.parse import parse_qs, urlencode +from urllib.parse import parse_qs, urlparse, urlencode, urlunparse import requests import web import json @@ -13,6 +13,7 @@ import logging from time import time import math +from pathlib import Path import infogami # make sure infogami.config.features is set @@ -33,6 +34,7 @@ from infogami.core.db import ValidationException from openlibrary.core import cache +from openlibrary.core.vendors import create_edition_from_amazon_metadata from openlibrary.utils.isbn import isbn_13_to_isbn_10, isbn_10_to_isbn_13, canonical from openlibrary.core.models import Edition from openlibrary.core.lending import get_availability @@ -291,7 +293,7 @@ def POST(self): class clonebook(delegate.page): def GET(self): - from infogami.core.code import edit # noqa: F401 not sure why, probably needed + from infogami.core.code import edit i = web.input('key') page = web.ctx.site.get(i.key) @@ -1176,9 +1178,7 @@ def setup(): authors.setup() swagger.setup() - from openlibrary.plugins.openlibrary import ( - api, # noqa: F401 not sure why but could be needed - ) + from openlibrary.plugins.openlibrary import api delegate.app.add_processor(web.unloadhook(stats.stats_hook)) diff --git a/openlibrary/plugins/openlibrary/connection.py b/openlibrary/plugins/openlibrary/connection.py index 5e51cb15170..d05acc3aaf7 100644 --- a/openlibrary/plugins/openlibrary/connection.py +++ b/openlibrary/plugins/openlibrary/connection.py @@ -2,7 +2,7 @@ """ from infogami import config -from infogami.infobase import client +from infogami.infobase import client, lru from infogami.utils import stats import web diff --git a/openlibrary/plugins/openlibrary/design.py b/openlibrary/plugins/openlibrary/design.py index 0ccdc6bc01b..71c67a5aa25 100644 --- a/openlibrary/plugins/openlibrary/design.py +++ b/openlibrary/plugins/openlibrary/design.py @@ -1,7 +1,8 @@ +import web import logging from infogami.utils import delegate -from infogami.utils.view import render_template +from infogami.utils.view import render_template, public logger = logging.getLogger("openlibrary.design") diff --git a/openlibrary/plugins/openlibrary/home.py b/openlibrary/plugins/openlibrary/home.py index b805df19967..b2bca58ee28 100644 --- a/openlibrary/plugins/openlibrary/home.py +++ b/openlibrary/plugins/openlibrary/home.py @@ -8,6 +8,7 @@ from infogami.utils import delegate from infogami.utils.view import render_template, public from infogami.infobase.client import storify +from infogami import config from openlibrary.core import admin, cache, ia, lending from openlibrary.i18n import gettext as _ diff --git a/openlibrary/plugins/openlibrary/lists.py b/openlibrary/plugins/openlibrary/lists.py index a2f8ea4ef14..c2da27a6b9e 100644 --- a/openlibrary/plugins/openlibrary/lists.py +++ b/openlibrary/plugins/openlibrary/lists.py @@ -24,7 +24,7 @@ import openlibrary.core.helpers as h from openlibrary.i18n import gettext as _ from openlibrary.plugins.upstream.addbook import safe_seeother -from openlibrary.utils import olid_to_key +from openlibrary.utils import dateutil, olid_to_key from openlibrary.plugins.upstream import spamcheck, utils from openlibrary.plugins.upstream.account import MyBooksTemplate from openlibrary.plugins.worksearch import subjects diff --git a/openlibrary/plugins/openlibrary/processors.py b/openlibrary/plugins/openlibrary/processors.py index 9cc07418bd4..4d6ebd600ce 100644 --- a/openlibrary/plugins/openlibrary/processors.py +++ b/openlibrary/plugins/openlibrary/processors.py @@ -6,7 +6,7 @@ from openlibrary.accounts import get_current_user from openlibrary.core import cache -from openlibrary.core.processors import ReadableUrlProcessor # noqa: F401 +from openlibrary.core.processors import ReadableUrlProcessor from openlibrary.plugins.openlibrary.home import caching_prethread from openlibrary.utils import dateutil diff --git a/openlibrary/plugins/openlibrary/stats.py b/openlibrary/plugins/openlibrary/stats.py index 59e9584cb3f..effe7d5e3ac 100644 --- a/openlibrary/plugins/openlibrary/stats.py +++ b/openlibrary/plugins/openlibrary/stats.py @@ -14,7 +14,7 @@ from openlibrary.core import stats as graphite_stats import web from infogami import config -from infogami.utils import stats +from infogami.utils import delegate, stats import openlibrary.plugins.openlibrary.filters as stats_filters diff --git a/openlibrary/plugins/openlibrary/utils.py b/openlibrary/plugins/openlibrary/utils.py index e69de29bb2d..79be1b0b2dd 100644 --- a/openlibrary/plugins/openlibrary/utils.py +++ b/openlibrary/plugins/openlibrary/utils.py @@ -0,0 +1 @@ +from openlibrary.core.helpers import sanitize diff --git a/openlibrary/plugins/upstream/account.py b/openlibrary/plugins/upstream/account.py index 202280c9bbb..513dbf50cd7 100644 --- a/openlibrary/plugins/upstream/account.py +++ b/openlibrary/plugins/upstream/account.py @@ -18,7 +18,7 @@ add_flash_message, ) from infogami.infobase.client import ClientException -import infogami.core.code as core # noqa: F401 definitely needed +import infogami.core.code as core from openlibrary import accounts from openlibrary.i18n import gettext as _ @@ -39,6 +39,7 @@ from openlibrary.plugins import openlibrary as olib from openlibrary.accounts import ( audit_accounts, + Account, OpenLibraryAccount, InternetArchiveAccount, valid_email, @@ -345,6 +346,7 @@ def POST(self): payload is json. Instead, if login attempted w/ json credentials, requires Archive.org s3 keys. """ + from openlibrary.plugins.openlibrary.code import BadRequest d = json.loads(web.data()) email = d.get('email', "") diff --git a/openlibrary/plugins/upstream/addbook.py b/openlibrary/plugins/upstream/addbook.py index 56fe4e813d4..8d1a40d5157 100644 --- a/openlibrary/plugins/upstream/addbook.py +++ b/openlibrary/plugins/upstream/addbook.py @@ -16,6 +16,7 @@ from openlibrary.plugins.worksearch.search import get_solr from openlibrary.core.helpers import uniq +from openlibrary.i18n import gettext as _ from openlibrary import accounts import logging diff --git a/openlibrary/plugins/upstream/addtag.py b/openlibrary/plugins/upstream/addtag.py index aebe04badbf..d36efd87dac 100644 --- a/openlibrary/plugins/upstream/addtag.py +++ b/openlibrary/plugins/upstream/addtag.py @@ -1,6 +1,7 @@ """Handlers for adding and editing tags.""" import web +import json from typing import NoReturn @@ -10,6 +11,8 @@ from infogami.infobase.client import ClientException from infogami.utils import delegate +from openlibrary.plugins.openlibrary.processors import urlsafe +from openlibrary.i18n import gettext as _ import logging from openlibrary.plugins.upstream import spamcheck, utils diff --git a/openlibrary/plugins/upstream/borrow.py b/openlibrary/plugins/upstream/borrow.py index 6af64976ce4..0dbe4408687 100644 --- a/openlibrary/plugins/upstream/borrow.py +++ b/openlibrary/plugins/upstream/borrow.py @@ -15,10 +15,10 @@ from infogami import config from infogami.utils import delegate -from infogami.utils.view import public, add_flash_message -from infogami.utils.view import render_template # noqa: F401 used for its side effects +from infogami.utils.view import public, render_template, add_flash_message from infogami.infobase.utils import parse_datetime +from openlibrary.core import models from openlibrary.core import stats from openlibrary.core import lending from openlibrary.core import vendors diff --git a/openlibrary/plugins/upstream/checkins.py b/openlibrary/plugins/upstream/checkins.py index 5b74b268de2..95fbb766a94 100644 --- a/openlibrary/plugins/upstream/checkins.py +++ b/openlibrary/plugins/upstream/checkins.py @@ -15,6 +15,7 @@ from openlibrary.core.yearly_reading_goals import YearlyReadingGoals from openlibrary.utils import extract_numeric_id_from_olid from openlibrary.core.bookshelves_events import BookshelfEvent, BookshelvesEvents +from openlibrary.utils.decorators import authorized_for def make_date_string(year: int, month: int | None, day: int | None) -> str: diff --git a/openlibrary/plugins/upstream/code.py b/openlibrary/plugins/upstream/code.py index a931fccb5c2..95ced4c0949 100644 --- a/openlibrary/plugins/upstream/code.py +++ b/openlibrary/plugins/upstream/code.py @@ -14,16 +14,19 @@ from infogami.plugins.api.code import request as infogami_request from infogami.infobase import client -from infogami.utils import delegate +from infogami.utils import delegate, app, types from infogami.utils.view import public, safeint, render from infogami.utils.view import render_template # used for its side effects +from infogami.utils.context import context +from openlibrary import accounts from openlibrary.plugins.upstream import addbook, addtag, covers, models, utils from openlibrary.plugins.upstream import spamcheck from openlibrary.plugins.upstream import merge_authors from openlibrary.plugins.upstream import edits from openlibrary.plugins.upstream import checkins +from openlibrary.plugins.upstream import borrow, recentchanges # TODO: unused imports? from openlibrary.plugins.upstream.utils import render_component if not config.get('coverstore_url'): diff --git a/openlibrary/plugins/upstream/covers.py b/openlibrary/plugins/upstream/covers.py index 4dbb3bd07b1..6f382acc0bc 100644 --- a/openlibrary/plugins/upstream/covers.py +++ b/openlibrary/plugins/upstream/covers.py @@ -5,6 +5,7 @@ import requests import web +from io import BytesIO from infogami.utils import delegate from infogami.utils.view import safeint diff --git a/openlibrary/plugins/upstream/data.py b/openlibrary/plugins/upstream/data.py index f912fa6ba32..46d99ccbd87 100644 --- a/openlibrary/plugins/upstream/data.py +++ b/openlibrary/plugins/upstream/data.py @@ -4,6 +4,7 @@ import web from infogami import config from infogami.utils import delegate +from infogami.utils.view import public import requests diff --git a/openlibrary/plugins/upstream/jsdef.py b/openlibrary/plugins/upstream/jsdef.py index feb6f873a51..2c5978b7eff 100644 --- a/openlibrary/plugins/upstream/jsdef.py +++ b/openlibrary/plugins/upstream/jsdef.py @@ -57,6 +57,10 @@ import web from web.template import ( + Template, + Parser, + LineNode, + SuiteNode, DefNode, PythonTokenizer, # INDENT, diff --git a/openlibrary/plugins/upstream/models.py b/openlibrary/plugins/upstream/models.py index b0355032ea8..671526a7ab9 100644 --- a/openlibrary/plugins/upstream/models.py +++ b/openlibrary/plugins/upstream/models.py @@ -8,6 +8,7 @@ from collections import defaultdict from isbnlib import canonical, mask, NotValidISBNError +from infogami import config from infogami.infobase import client from infogami.utils.view import safeint from infogami.utils import stats @@ -17,10 +18,12 @@ from openlibrary.core import lending from openlibrary.plugins.upstream.utils import MultiDict, parse_toc, get_edition_config +from openlibrary.plugins.upstream import account from openlibrary.plugins.upstream import borrow from openlibrary.plugins.worksearch.code import works_by_author from openlibrary.plugins.worksearch.search import get_solr +from openlibrary.utils import dateutil from openlibrary.utils.isbn import isbn_10_to_isbn_13, isbn_13_to_isbn_10 from openlibrary.utils.lccn import normalize_lccn diff --git a/openlibrary/plugins/upstream/mybooks.py b/openlibrary/plugins/upstream/mybooks.py index 0df7eaf6383..db241f0dd1f 100644 --- a/openlibrary/plugins/upstream/mybooks.py +++ b/openlibrary/plugins/upstream/mybooks.py @@ -3,12 +3,14 @@ from typing import Final, Literal, cast +from infogami import config from infogami.utils import delegate from infogami.utils.view import public, safeint, render from openlibrary.i18n import gettext as _ from openlibrary import accounts +from openlibrary.accounts.model import OpenLibraryAccount from openlibrary.utils import extract_numeric_id_from_olid from openlibrary.utils.dateutil import current_year from openlibrary.core.booknotes import Booknotes diff --git a/openlibrary/plugins/upstream/recentchanges.py b/openlibrary/plugins/upstream/recentchanges.py index 83c461c156a..6db3ff83d9e 100644 --- a/openlibrary/plugins/upstream/recentchanges.py +++ b/openlibrary/plugins/upstream/recentchanges.py @@ -9,6 +9,7 @@ from infogami.utils import delegate from infogami.utils.view import public, render, render_template, safeint +from infogami.utils.view import add_flash_message # TODO: unused import? from infogami.utils import features from openlibrary.utils import dateutil diff --git a/openlibrary/plugins/upstream/utils.py b/openlibrary/plugins/upstream/utils.py index 01e8e3397f7..abc2055539a 100644 --- a/openlibrary/plugins/upstream/utils.py +++ b/openlibrary/plugins/upstream/utils.py @@ -16,6 +16,7 @@ import datetime import logging from html.parser import HTMLParser +from pathlib import Path import requests @@ -31,7 +32,7 @@ from infogami import config from infogami.utils import view, delegate, stats -from infogami.utils.view import render, get_template, public +from infogami.utils.view import render, get_template, public, query_param from infogami.utils.macro import macro from infogami.utils.context import InfogamiContext, context from infogami.infobase.client import Changeset, Nothing, Thing, storify diff --git a/openlibrary/plugins/worksearch/languages.py b/openlibrary/plugins/worksearch/languages.py index 98489460f85..3a5a89dffbc 100644 --- a/openlibrary/plugins/worksearch/languages.py +++ b/openlibrary/plugins/worksearch/languages.py @@ -2,7 +2,7 @@ """ from infogami.plugins.api.code import jsonapi -from infogami.utils import delegate +from infogami.utils import delegate, stats from infogami.utils.view import render_template, safeint import web import json diff --git a/openlibrary/plugins/worksearch/publishers.py b/openlibrary/plugins/worksearch/publishers.py index eac1b5c40ac..44f62a21409 100644 --- a/openlibrary/plugins/worksearch/publishers.py +++ b/openlibrary/plugins/worksearch/publishers.py @@ -1,8 +1,8 @@ """Publisher pages """ -from infogami.utils import delegate -from infogami.utils.view import render_template +from infogami.utils import delegate, stats +from infogami.utils.view import render_template, safeint import web import logging diff --git a/openlibrary/records/__init__.py b/openlibrary/records/__init__.py index e69de29bb2d..3b2bc89d01c 100644 --- a/openlibrary/records/__init__.py +++ b/openlibrary/records/__init__.py @@ -0,0 +1,2 @@ +from .driver import search +from .functions import create diff --git a/openlibrary/records/functions.py b/openlibrary/records/functions.py index 0a9ad660fa4..395ff52c604 100644 --- a/openlibrary/records/functions.py +++ b/openlibrary/records/functions.py @@ -7,7 +7,9 @@ import web +from openlibrary.catalog.add_book import normalize from openlibrary.core.models import Thing +import openlibrary.core.helpers as h class NoQueryParam(KeyError): diff --git a/openlibrary/records/matchers.py b/openlibrary/records/matchers.py index c9d0598b26f..57e544a5855 100644 --- a/openlibrary/records/matchers.py +++ b/openlibrary/records/matchers.py @@ -23,6 +23,8 @@ from collections import defaultdict import logging as Logging +from infogami import config +from openlibrary.utils.solr import Solr import web diff --git a/openlibrary/solr/data_provider.py b/openlibrary/solr/data_provider.py index 91e0b61c83c..a718b0b80d7 100644 --- a/openlibrary/solr/data_provider.py +++ b/openlibrary/solr/data_provider.py @@ -10,7 +10,7 @@ import itertools import logging import re -from typing import TypedDict, cast +from typing import Optional, TypedDict, cast from collections.abc import Iterable, Sized import httpx diff --git a/openlibrary/solr/query_utils.py b/openlibrary/solr/query_utils.py index b2d9f6f76a5..1d180104e19 100644 --- a/openlibrary/solr/query_utils.py +++ b/openlibrary/solr/query_utils.py @@ -1,4 +1,4 @@ -from typing import Literal +from typing import Literal, Optional from collections.abc import Callable from luqum.parser import parser from luqum.tree import Item, SearchField, BaseOperation, Group, Word, Unary diff --git a/openlibrary/utils/sentry.py b/openlibrary/utils/sentry.py index 4b6326e542b..f1f20978cb2 100644 --- a/openlibrary/utils/sentry.py +++ b/openlibrary/utils/sentry.py @@ -6,7 +6,7 @@ import web from sentry_sdk.utils import capture_internal_exceptions from sentry_sdk.tracing import Transaction, TRANSACTION_SOURCE_ROUTE -from infogami.utils.app import find_page, modes +from infogami.utils.app import find_page, find_view, modes from infogami.utils.types import type_patterns from openlibrary.utils import get_software_version diff --git a/openlibrary/utils/solr.py b/openlibrary/utils/solr.py index cda6508d7d0..3f8f06d514b 100644 --- a/openlibrary/utils/solr.py +++ b/openlibrary/utils/solr.py @@ -2,7 +2,7 @@ import logging import re -from typing import TypeVar +from typing import Optional, TypeVar from collections.abc import Callable, Iterable import requests diff --git a/pyproject.toml b/pyproject.toml index 0f3936f5690..7af3cddcc53 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -45,6 +45,7 @@ ignore = [ "B904", "B905", "E402", + "F401", "F841", "I", "PERF401", diff --git a/scripts/affiliate_server.py b/scripts/affiliate_server.py index 4659ac9b5f7..195ed85e2d8 100644 --- a/scripts/affiliate_server.py +++ b/scripts/affiliate_server.py @@ -61,6 +61,8 @@ from openlibrary.utils.dateutil import WEEK_SECS from openlibrary.utils.isbn import ( normalize_identifier, + normalize_isbn, + isbn_13_to_isbn_10, isbn_10_to_isbn_13, ) diff --git a/scripts/delete_import_items.py b/scripts/delete_import_items.py index 52bc6c2a9cb..1a2f3e3563a 100644 --- a/scripts/delete_import_items.py +++ b/scripts/delete_import_items.py @@ -21,10 +21,11 @@ from configparser import ConfigParser from pathlib import Path -import _init_path # noqa: F401 # Imported for its side effect of setting PYTHONPATH +import _init_path # Imported for its side effect of setting PYTHONPATH from openlibrary.config import load_config from openlibrary.core.imports import ImportItem +from openlibrary.core.edits import CommunityEditsQueue class DeleteImportItemJob: diff --git a/scripts/import_pressbooks.py b/scripts/import_pressbooks.py index 6f3c2804a97..5316982d102 100644 --- a/scripts/import_pressbooks.py +++ b/scripts/import_pressbooks.py @@ -10,6 +10,7 @@ import requests import html +from infogami import config from openlibrary.config import load_config from openlibrary.core.imports import Batch from scripts.solr_builder.solr_builder.fn_to_cli import FnToCLI diff --git a/scripts/import_standard_ebooks.py b/scripts/import_standard_ebooks.py index 8048ac10746..ab2dcd53def 100755 --- a/scripts/import_standard_ebooks.py +++ b/scripts/import_standard_ebooks.py @@ -11,6 +11,7 @@ from openlibrary.core.imports import Batch from scripts.solr_builder.solr_builder.fn_to_cli import FnToCLI from openlibrary.config import load_config +from infogami import config FEED_URL = 'https://standardebooks.org/opds/all' LAST_UPDATED_TIME = './standard_ebooks_last_updated.txt' diff --git a/scripts/lc_marc_update.py b/scripts/lc_marc_update.py index 9ed6c18d205..6a476fd0861 100755 --- a/scripts/lc_marc_update.py +++ b/scripts/lc_marc_update.py @@ -1,6 +1,7 @@ #!/usr/bin/env python from openlibrary.catalog.importer.scribe import BadImport +from openlibrary.catalog.read_rc import read_rc from openlibrary import config from ftplib import FTP from time import sleep diff --git a/scripts/oldump.py b/scripts/oldump.py index 7c17012456e..b4a9978a2ea 100755 --- a/scripts/oldump.py +++ b/scripts/oldump.py @@ -5,7 +5,7 @@ import sys from datetime import datetime -import _init_path # noqa: F401 # Imported for its side effect of setting PYTHONPATH +import _init_path # Imported for its side effect of setting PYTHONPATH logger = logging.getLogger(__file__) logger.setLevel(logging.DEBUG) diff --git a/scripts/openlibrary-server b/scripts/openlibrary-server index 136736dea3d..14984063848 100755 --- a/scripts/openlibrary-server +++ b/scripts/openlibrary-server @@ -55,7 +55,7 @@ def start_server(): def load_infogami(config_file): import infogami from infogami import config - from infogami.utils import delegate # noqa: F401 not sure why but could be needed + from infogami.utils import delegate config.plugin_path += ['openlibrary.plugins'] config.site = "openlibrary.org" diff --git a/scripts/partner_batch_imports.py b/scripts/partner_batch_imports.py index 37e577b9d1d..f3203c54436 100755 --- a/scripts/partner_batch_imports.py +++ b/scripts/partner_batch_imports.py @@ -19,6 +19,7 @@ import requests +from infogami import config from openlibrary.config import load_config from openlibrary.core.imports import Batch from scripts.solr_builder.solr_builder.fn_to_cli import FnToCLI diff --git a/scripts/promise_batch_imports.py b/scripts/promise_batch_imports.py index 8a8fbddc9d1..345e7096b79 100644 --- a/scripts/promise_batch_imports.py +++ b/scripts/promise_batch_imports.py @@ -22,7 +22,8 @@ import requests import logging -import _init_path # noqa: F401 # Imported for its side effect of setting PYTHONPATH +import _init_path # Imported for its side effect of setting PYTHONPATH +from infogami import config from openlibrary.config import load_config from openlibrary.core.imports import Batch, ImportItem from openlibrary.core.vendors import get_amazon_metadata diff --git a/scripts/pull-templates.py b/scripts/pull-templates.py index d5ef14bec97..97533ea1f49 100755 --- a/scripts/pull-templates.py +++ b/scripts/pull-templates.py @@ -1,7 +1,7 @@ #!/usr/bin/env python """Script to pull templates and macros from an openlibrary instance to repository. """ -import _init_path # noqa: F401 # Imported for its side effect of setting PYTHONPATH +import _init_path # Imported for its side effect of setting PYTHONPATH import os import web diff --git a/scripts/solr_updater.py b/scripts/solr_updater.py index 28b746b9b73..a8ae54e4693 100644 --- a/scripts/solr_updater.py +++ b/scripts/solr_updater.py @@ -17,9 +17,10 @@ import sys import urllib +from typing import Union from collections.abc import Iterator -import _init_path # noqa: F401 # Imported for its side effect of setting PYTHONPATH +import _init_path # Imported for its side effect of setting PYTHONPATH import aiofiles import web diff --git a/scripts/store_counts.py b/scripts/store_counts.py index 7c2d7171699..ea946a2bf83 100755 --- a/scripts/store_counts.py +++ b/scripts/store_counts.py @@ -2,7 +2,7 @@ import sys -import _init_path # noqa: F401 # Imported for its side effect of setting PYTHONPATH +import _init_path # Imported for its side effect of setting PYTHONPATH from openlibrary.admin import stats diff --git a/scripts/tests/test_affiliate_server.py b/scripts/tests/test_affiliate_server.py index 2fc9433607c..1bbc730ebe3 100644 --- a/scripts/tests/test_affiliate_server.py +++ b/scripts/tests/test_affiliate_server.py @@ -18,6 +18,7 @@ from scripts.affiliate_server import ( # noqa: E402 PrioritizedIdentifier, Priority, + Submit, get_isbns_from_book, get_isbns_from_books, get_editions_for_books, diff --git a/scripts/update_stale_work_references.py b/scripts/update_stale_work_references.py index 6c97808eefe..bd16f1d7567 100644 --- a/scripts/update_stale_work_references.py +++ b/scripts/update_stale_work_references.py @@ -2,10 +2,13 @@ PYTHONPATH=. python ./scripts/update_stale_work_references.py /olsystem/etc/openlibrary.yml """ +import web import infogami +from infogami import config from openlibrary.config import load_config from openlibrary.core.models import Work from scripts.solr_builder.solr_builder.fn_to_cli import FnToCLI +import datetime def main(ol_config: str, days=1, skip=7):