[fix] pyright repported errors

The errors make pyright usage useless since a new error won't be seen [1].

[1] https://github.com/searxng/searxng/pull/1569

```
  searx/compat.py:11:27 - error: Expression of type "Type[cached_property[_T@cached_property]]" cannot be assigned to declared type "Type[cached_property]"
    "Type[cached_property[_T@cached_property]]" is incompatible with "Type[cached_property]"
    Type "Type[cached_property[_T@cached_property]]" cannot be assigned to type "Type[cached_property]" (reportGeneralTypeIssues)
  searx/utils.py:69:36 - error: Expression of type "None" cannot be assigned to parameter of type "str"
    Type "None" cannot be assigned to type "str" (reportGeneralTypeIssues)
  searx/utils.py:573:85 - error: Expression of type "None" cannot be assigned to parameter of type "int"
    Type "None" cannot be assigned to type "int" (reportGeneralTypeIssues)
  searx/webapp.py:1306:22 - error: Argument of type "str" cannot be assigned to parameter "__a" of type "BytesPath" in function "join"
    Type "str" cannot be assigned to type "BytesPath"
      "str" is incompatible with "bytes"
      "str" is incompatible with protocol "PathLike[bytes]"
        "__fspath__" is not present (reportGeneralTypeIssues)
  searx/webapp.py:1306:68 - error: Argument of type "Literal['themes']" cannot be assigned to parameter "paths" of type "BytesPath" in function "join"
    Type "Literal['themes']" cannot be assigned to type "BytesPath"
      "Literal['themes']" is incompatible with "bytes"
      "Literal['themes']" is incompatible with protocol "PathLike[bytes]"
        "__fspath__" is not present (reportGeneralTypeIssues)
  searx/webapp.py:1306:78 - error: Argument of type "str | Any | None" cannot be assigned to parameter "paths" of type "BytesPath" in function "join"
    Type "str | Any | None" cannot be assigned to type "BytesPath"
      Type "str" cannot be assigned to type "BytesPath"
        "str" is incompatible with "bytes"
        "str" is incompatible with protocol "PathLike[bytes]"
          "__fspath__" is not present (reportGeneralTypeIssues)
  searx/webapp.py:1306:85 - error: Argument of type "Literal['img']" cannot be assigned to parameter "paths" of type "BytesPath" in function "join"
    Type "Literal['img']" cannot be assigned to type "BytesPath"
      "Literal['img']" is incompatible with "bytes"
      "Literal['img']" is incompatible with protocol "PathLike[bytes]"
        "__fspath__" is not present (reportGeneralTypeIssues)
  searx/engines/mongodb.py:8:6 - warning: Import "pymongo" could not be resolved (reportMissingImports)
  searx/engines/mysql_server.py:9:8 - warning: Import "mysql.connector" could not be resolved (reportMissingImports)
  searx/engines/postgresql.py:9:8 - warning: Import "psycopg2" could not be resolved from source (reportMissingModuleSource)
  searx/engines/xpath.py:187:28 - warning: "categories" is not defined (reportUndefinedVariable)
  searx/search/__init__.py:184:82 - warning: "flask" is not defined (reportUndefinedVariable)
  searx/search/checker/background.py:19:26 - error: Type of "schedule" is partially unknown
    Type of "schedule" is "(delay: Any, func: Any, *args: Any) -> Literal[True]" (reportUnknownVariableType)
  searx/shared/__init__.py:8:12 - warning: Import "uwsgi" could not be resolved (reportMissingImports)
  searx/shared/shared_uwsgi.py:5:8 - warning: Import "uwsgi" could not be resolved (reportMissingImports)
```
This commit is contained in:
Alexandre Flament 2022-07-28 13:02:56 +02:00 committed by Markus Heiser
parent ededaab807
commit 2babf59adc
12 changed files with 24 additions and 14 deletions

3
manage
View file

@ -698,7 +698,8 @@ test.pyright() {
| grep -v '/engines/.*.py.* - warning: "logger" is not defined'\ | grep -v '/engines/.*.py.* - warning: "logger" is not defined'\
| grep -v '/plugins/.*.py.* - error: "logger" is not defined'\ | grep -v '/plugins/.*.py.* - error: "logger" is not defined'\
| grep -v '/engines/.*.py.* - warning: "supported_languages" is not defined' \ | grep -v '/engines/.*.py.* - warning: "supported_languages" is not defined' \
| grep -v '/engines/.*.py.* - warning: "language_aliases" is not defined' | grep -v '/engines/.*.py.* - warning: "language_aliases" is not defined' \
| grep -v '/engines/.*.py.* - warning: "categories" is not defined'
dump_return $? dump_return $?
} }

View file

@ -7,8 +7,11 @@
# pylint: disable=C,R # pylint: disable=C,R
__all__ = ('cached_property',)
try: try:
from functools import cached_property # pylint: disable=unused-import from functools import cached_property # type: ignore
except ImportError: except ImportError:

View file

@ -5,7 +5,7 @@
""" """
import re import re
from pymongo import MongoClient # pylint: disable=import-error from pymongo import MongoClient # pyright: ignore # pylint: disable=import-error
engine_type = 'offline' engine_type = 'offline'

View file

@ -6,7 +6,7 @@
# import error is ignored because the admin has to install mysql manually to use # import error is ignored because the admin has to install mysql manually to use
# the engine # the engine
import mysql.connector # pylint: disable=import-error import mysql.connector # pyright: ignore # pylint: disable=import-error
engine_type = 'offline' engine_type = 'offline'
auth_plugin = 'caching_sha2_password' auth_plugin = 'caching_sha2_password'

View file

@ -6,7 +6,7 @@
# import error is ignored because the admin has to install mysql manually to use # import error is ignored because the admin has to install mysql manually to use
# the engine # the engine
import psycopg2 # pylint: disable=import-error import psycopg2 # pyright: ignore # pylint: disable=import-error
engine_type = 'offline' engine_type = 'offline'
host = "127.0.0.1" host = "127.0.0.1"

View file

@ -2,11 +2,12 @@
# lint: pylint # lint: pylint
# pylint: disable=missing-module-docstring, too-few-public-methods # pylint: disable=missing-module-docstring, too-few-public-methods
import typing
import threading import threading
from timeit import default_timer from timeit import default_timer
from uuid import uuid4 from uuid import uuid4
import flask
from searx import settings from searx import settings
from searx.answerers import ask from searx.answerers import ask
from searx.external_bang import get_bang_url from searx.external_bang import get_bang_url
@ -181,7 +182,7 @@ class SearchWithPlugins(Search):
__slots__ = 'ordered_plugin_list', 'request' __slots__ = 'ordered_plugin_list', 'request'
def __init__(self, search_query: SearchQuery, ordered_plugin_list, request: "flask.Request"): def __init__(self, search_query: SearchQuery, ordered_plugin_list, request: flask.Request):
super().__init__(search_query) super().__init__(search_query)
self.ordered_plugin_list = ordered_plugin_list self.ordered_plugin_list = ordered_plugin_list
self.result_container.on_result = self._on_result self.result_container.on_result = self._on_result

View file

@ -16,7 +16,7 @@ from searx import logger, settings, searx_debug
from searx.exceptions import SearxSettingsException from searx.exceptions import SearxSettingsException
from searx.search.processors import PROCESSORS from searx.search.processors import PROCESSORS
from searx.search.checker import Checker from searx.search.checker import Checker
from searx.shared import schedule, storage from searx.shared import schedule, storage # pyright: ignore
CHECKER_RESULT = 'CHECKER_RESULT' CHECKER_RESULT = 'CHECKER_RESULT'

View file

@ -1,11 +1,14 @@
# SPDX-License-Identifier: AGPL-3.0-or-later # SPDX-License-Identifier: AGPL-3.0-or-later
import logging import logging
import importlib
logger = logging.getLogger('searx.shared') logger = logging.getLogger('searx.shared')
__all__ = ['SharedDict', 'schedule']
try: try:
import uwsgi uwsgi = importlib.import_module('uwsgi')
except: except:
# no uwsgi # no uwsgi
from .shared_simple import SimpleSharedDict as SharedDict, schedule from .shared_simple import SimpleSharedDict as SharedDict, schedule

View file

@ -2,7 +2,7 @@
import time import time
from typing import Optional from typing import Optional
import uwsgi # pylint: disable=E0401 import uwsgi # pyright: ignore # pylint: disable=E0401
from . import shared_abstract from . import shared_abstract

View file

@ -66,7 +66,7 @@ def searx_useragent() -> str:
).strip() ).strip()
def gen_useragent(os_string: str = None) -> str: def gen_useragent(os_string: Optional[str] = None) -> str:
"""Return a random browser User Agent """Return a random browser User Agent
See searx/data/useragents.json See searx/data/useragents.json
@ -570,7 +570,7 @@ def eval_xpath(element: ElementBase, xpath_spec: XPathSpecType):
raise SearxEngineXPathException(xpath_spec, arg) from e raise SearxEngineXPathException(xpath_spec, arg) from e
def eval_xpath_list(element: ElementBase, xpath_spec: XPathSpecType, min_len: int = None): def eval_xpath_list(element: ElementBase, xpath_spec: XPathSpecType, min_len: Optional[int] = None):
"""Same as eval_xpath, check if the result is a list """Same as eval_xpath, check if the result is a list
Args: Args:

View file

@ -6,6 +6,7 @@ import os
import shlex import shlex
import subprocess import subprocess
import logging import logging
import importlib
# fallback values # fallback values
# if there is searx.version_frozen module, and it is not possible to get the git tag # if there is searx.version_frozen module, and it is not possible to get the git tag
@ -73,7 +74,8 @@ def get_git_version():
try: try:
from searx.version_frozen import VERSION_STRING, VERSION_TAG, GIT_URL, GIT_BRANCH vf = importlib.import_module('searx.version_frozen')
VERSION_STRING, VERSION_TAG, GIT_URL, GIT_BRANCH = vf.VERSION_STRING, vf.VERSION_TAG, vf.GIT_URL, vf.GIT_BRANCH
except ImportError: except ImportError:
try: try:
try: try:

View file

@ -1303,7 +1303,7 @@ def opensearch():
def favicon(): def favicon():
theme = request.preferences.get_value("theme") theme = request.preferences.get_value("theme")
return send_from_directory( return send_from_directory(
os.path.join(app.root_path, settings['ui']['static_path'], 'themes', theme, 'img'), os.path.join(app.root_path, settings['ui']['static_path'], 'themes', theme, 'img'), # pyright: ignore
'favicon.png', 'favicon.png',
mimetype='image/vnd.microsoft.icon', mimetype='image/vnd.microsoft.icon',
) )