mirror of
https://github.com/searxng/searxng.git
synced 2025-07-12 07:49:22 +02:00
[mod] move all default settings into searx.settings_defaults
This commit is contained in:
parent
856729226d
commit
4b07df62e5
9 changed files with 249 additions and 156 deletions
|
@ -8,7 +8,6 @@ from os.path import splitext, join
|
|||
from random import choice
|
||||
from html.parser import HTMLParser
|
||||
from urllib.parse import urljoin, urlparse
|
||||
from collections.abc import Mapping
|
||||
|
||||
from lxml import html
|
||||
from lxml.etree import ElementBase, XPath, XPathError, XPathSyntaxError, _ElementStringResult, _ElementUnicodeResult
|
||||
|
@ -46,7 +45,7 @@ def searx_useragent():
|
|||
"""Return the searx User Agent"""
|
||||
return 'searx/{searx_version} {suffix}'.format(
|
||||
searx_version=VERSION_STRING,
|
||||
suffix=settings['outgoing'].get('useragent_suffix', '')).strip()
|
||||
suffix=settings['outgoing']['useragent_suffix'].strip())
|
||||
|
||||
|
||||
def gen_useragent(os=None):
|
||||
|
@ -501,58 +500,6 @@ def get_engine_from_settings(name):
|
|||
return {}
|
||||
|
||||
|
||||
NOT_EXISTS = object()
|
||||
"""Singleton used by :py:obj:`get_value` if a key does not exists."""
|
||||
|
||||
|
||||
def get_value(dictionary, *keys, default=NOT_EXISTS):
|
||||
"""Return the value from a *deep* mapping type (e.g. the ``settings`` object
|
||||
from yaml). If the path to the *key* does not exists a :py:obj:`NOT_EXISTS`
|
||||
is returned (non ``KeyError`` exception is raised).
|
||||
|
||||
.. code: python
|
||||
|
||||
>>> from searx import settings
|
||||
>>> from searx.utils import get_value, NOT_EXISTS
|
||||
>>> get_value(settings, 'checker', 'additional_tests', 'rosebud', 'result_container')
|
||||
['not_empty', ['one_title_contains', 'citizen kane']]
|
||||
|
||||
>>> get_value(settings, 'search', 'xxx') is NOT_EXISTS
|
||||
True
|
||||
>>> get_value(settings, 'search', 'formats')
|
||||
['html', 'csv', 'json', 'rss']
|
||||
|
||||
The list returned from the ``search.format`` key is not a mapping type, you
|
||||
can't traverse along non-mapping types. If you try it, you will get a
|
||||
:py:ref:`NOT_EXISTS`:
|
||||
|
||||
.. code: python
|
||||
|
||||
>>> get_value(settings, 'search', 'format', 'csv') is NOT_EXISTS
|
||||
True
|
||||
>>> get_value(settings, 'search', 'formats')[1]
|
||||
'csv'
|
||||
|
||||
For convenience you can replace :py:ref:`NOT_EXISTS` by a default value of
|
||||
your choice:
|
||||
|
||||
.. code: python
|
||||
|
||||
if 'csv' in get_value(settings, 'search', 'formats', default=[]):
|
||||
print("csv format is denied")
|
||||
|
||||
"""
|
||||
|
||||
obj = dictionary
|
||||
for k in keys:
|
||||
if not isinstance(obj, Mapping):
|
||||
raise TypeError("expected mapping type, got %s" % type(obj))
|
||||
obj = obj.get(k, default)
|
||||
if obj is default:
|
||||
return obj
|
||||
return obj
|
||||
|
||||
|
||||
def get_xpath(xpath_spec):
|
||||
"""Return cached compiled XPath
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue