enginelib.html 77 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657
  1. <!DOCTYPE html>
  2. <html lang="en" data-content_root="../../">
  3. <head>
  4. <meta charset="utf-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1">
  7. <title>Engine Library &#8212; SearXNG Documentation (2025.5.5+0315988f5)</title>
  8. <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=6625fa76" />
  9. <link rel="stylesheet" type="text/css" href="../../_static/searxng.css?v=52e4ff28" />
  10. <script src="../../_static/documentation_options.js?v=6bec52eb"></script>
  11. <script src="../../_static/doctools.js?v=9a2dae69"></script>
  12. <script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
  13. <script data-project="searxng" data-version="2025.5.5+0315988f5" src="../../_static/describe_version.js?v=fa7f30d0"></script>
  14. <link rel="index" title="Index" href="../../genindex.html" />
  15. <link rel="search" title="Search" href="../../search.html" />
  16. <link rel="next" title="SearXNG’s engines loader" href="engines.html" />
  17. <link rel="prev" title="Engine Implementations" href="index.html" />
  18. </head><body>
  19. <div class="related" role="navigation" aria-label="Related">
  20. <h3>Navigation</h3>
  21. <ul>
  22. <li class="right" style="margin-right: 10px">
  23. <a href="../../genindex.html" title="General Index"
  24. accesskey="I">index</a></li>
  25. <li class="right" >
  26. <a href="../../py-modindex.html" title="Python Module Index"
  27. >modules</a> |</li>
  28. <li class="right" >
  29. <a href="engines.html" title="SearXNG’s engines loader"
  30. accesskey="N">next</a> |</li>
  31. <li class="right" >
  32. <a href="index.html" title="Engine Implementations"
  33. accesskey="P">previous</a> |</li>
  34. <li class="nav-item nav-item-0"><a href="../../index.html">SearXNG Documentation (2025.5.5+0315988f5)</a> &#187;</li>
  35. <li class="nav-item nav-item-1"><a href="../index.html" >Developer documentation</a> &#187;</li>
  36. <li class="nav-item nav-item-2"><a href="index.html" accesskey="U">Engine Implementations</a> &#187;</li>
  37. <li class="nav-item nav-item-this"><a href="">Engine Library</a></li>
  38. </ul>
  39. </div>
  40. <div class="document">
  41. <div class="documentwrapper">
  42. <div class="bodywrapper">
  43. <div class="body" role="main">
  44. <section id="module-searx.enginelib">
  45. <span id="engine-library"></span><span id="searx-enginelib"></span><h1>Engine Library<a class="headerlink" href="#module-searx.enginelib" title="Link to this heading">¶</a></h1>
  46. <p>Implementations of the framework for the SearXNG engines.</p>
  47. <ul class="simple">
  48. <li><p><a class="reference internal" href="#searx.enginelib.EngineCache" title="searx.enginelib.EngineCache"><code class="xref py py-obj docutils literal notranslate"><span class="pre">searx.enginelib.EngineCache</span></code></a></p></li>
  49. <li><p><a class="reference internal" href="#searx.enginelib.Engine" title="searx.enginelib.Engine"><code class="xref py py-obj docutils literal notranslate"><span class="pre">searx.enginelib.Engine</span></code></a></p></li>
  50. <li><p><a class="reference internal" href="#module-searx.enginelib.traits" title="searx.enginelib.traits"><code class="xref py py-obj docutils literal notranslate"><span class="pre">searx.enginelib.traits</span></code></a></p></li>
  51. </ul>
  52. <p>There is a command line for developer purposes and for deeper analysis. Here is
  53. an example in which the command line is called in the development environment:</p>
  54. <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ ./manage pyenv.cmd bash --norc --noprofile
  55. (py3) python -m searx.enginelib --help
  56. </pre></div>
  57. </div>
  58. <div class="admonition hint">
  59. <p class="admonition-title">Hint</p>
  60. <p>The long term goal is to modularize all implementations of the engine
  61. framework here in this Python package. ToDo:</p>
  62. <ul class="simple">
  63. <li><p>move implementations of the <a class="reference internal" href="engines.html#searx-engines-loader"><span class="std std-ref">SearXNG’s engines loader</span></a> to a new module in
  64. the <a class="reference internal" href="#module-searx.enginelib" title="searx.enginelib"><code class="xref py py-obj docutils literal notranslate"><span class="pre">searx.enginelib</span></code></a> namespace.</p></li>
  65. </ul>
  66. </div>
  67. <hr class="docutils" />
  68. <dl class="py class">
  69. <dt class="sig sig-object py" id="searx.enginelib.EngineCache">
  70. <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">searx.enginelib.</span></span><span class="sig-name descname"><span class="pre">EngineCache</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">engine_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.13)"><span class="pre">str</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">expire</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.13)"><span class="pre">int</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.13)"><span class="pre">None</span></a></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/searx/enginelib.html#EngineCache"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#searx.enginelib.EngineCache" title="Link to this definition">¶</a></dt>
  71. <dd><p>Persistent (SQLite) key/value cache that deletes its values again after
  72. <code class="docutils literal notranslate"><span class="pre">expire</span></code> seconds (default/max: <a class="reference internal" href="../../src/searx.cache.html#searx.cache.ExpireCacheCfg.MAXHOLD_TIME" title="searx.cache.ExpireCacheCfg.MAXHOLD_TIME"><code class="xref py py-obj docutils literal notranslate"><span class="pre">MAXHOLD_TIME</span></code></a>). This class is a wrapper around
  73. <a class="reference internal" href="#searx.enginelib.ENGINES_CACHE" title="searx.enginelib.ENGINES_CACHE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ENGINES_CACHE</span></code></a> (<a class="reference internal" href="../../src/searx.cache.html#searx.cache.ExpireCacheSQLite" title="searx.cache.ExpireCacheSQLite"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ExpireCacheSQLite</span></code></a>).</p>
  74. <p>In the <a class="extlink-origin reference external" href="https://github.com/searxng/searxng/blob/master/searx/engines/demo_offline.py">git://searx/engines/demo_offline.py</a> engine you can find an
  75. exemplary implementation of such a cache other exaples are implemeted
  76. in:</p>
  77. <ul class="simple">
  78. <li><p><a class="extlink-origin reference external" href="https://github.com/searxng/searxng/blob/master/searx/engines/radio_browser.py">git://searx/engines/radio_browser.py</a></p></li>
  79. <li><p><a class="extlink-origin reference external" href="https://github.com/searxng/searxng/blob/master/searx/engines/soundcloud.py">git://searx/engines/soundcloud.py</a></p></li>
  80. <li><p><a class="extlink-origin reference external" href="https://github.com/searxng/searxng/blob/master/searx/engines/startpage.py">git://searx/engines/startpage.py</a></p></li>
  81. </ul>
  82. <p>For introspection of the DB, jump into developer environment and run command to
  83. show cache state:</p>
  84. <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ ./manage pyenv.cmd bash --norc --noprofile
  85. (py3) python -m searx.enginelib cache state
  86. cache tables and key/values
  87. ===========================
  88. [demo_offline ] 2025-04-22 11:32:50 count --&gt; (int) 4
  89. [startpage ] 2025-04-22 12:32:30 SC_CODE --&gt; (str) fSOBnhEMlDfE20
  90. [duckduckgo ] 2025-04-22 12:32:31 4dff493e.... --&gt; (str) 4-128634958369380006627592672385352473325
  91. [duckduckgo ] 2025-04-22 12:40:06 3e2583e2.... --&gt; (str) 4-263126175288871260472289814259666848451
  92. [radio_browser ] 2025-04-23 11:33:08 servers --&gt; (list) [&#39;https://de2.api.radio-browser.info&#39;, ...]
  93. [soundcloud ] 2025-04-29 11:40:06 guest_client_id --&gt; (str) EjkRJG0BLNEZquRiPZYdNtJdyGtTuHdp
  94. [wolframalpha ] 2025-04-22 12:40:06 code --&gt; (str) 5aa79f86205ad26188e0e26e28fb7ae7
  95. number of tables: 6
  96. number of key/value pairs: 7
  97. </pre></div>
  98. </div>
  99. <p>In the “cache tables and key/values” section, the table name (engine name) is at
  100. first position on the second there is the calculated expire date and on the
  101. third and fourth position the key/value is shown.</p>
  102. <p>About duckduckgo: The <em>vqd coode</em> of ddg depends on the query term and therefore
  103. the key is a hash value of the query term (to not to store the raw query term).</p>
  104. <p>In the “properties of ENGINES_CACHE” section all properties of the SQLiteAppl /
  105. ExpireCache and their last modification date are shown:</p>
  106. <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">properties</span> <span class="n">of</span> <span class="n">ENGINES_CACHE</span>
  107. <span class="o">===========================</span>
  108. <span class="p">[</span><span class="n">last</span> <span class="n">modified</span><span class="p">:</span> <span class="mi">2025</span><span class="o">-</span><span class="mi">04</span><span class="o">-</span><span class="mi">22</span> <span class="mi">11</span><span class="p">:</span><span class="mi">32</span><span class="p">:</span><span class="mi">27</span><span class="p">]</span> <span class="n">DB_SCHEMA</span> <span class="p">:</span> <span class="mi">1</span>
  109. <span class="p">[</span><span class="n">last</span> <span class="n">modified</span><span class="p">:</span> <span class="mi">2025</span><span class="o">-</span><span class="mi">04</span><span class="o">-</span><span class="mi">22</span> <span class="mi">11</span><span class="p">:</span><span class="mi">32</span><span class="p">:</span><span class="mi">27</span><span class="p">]</span> <span class="n">LAST_MAINTENANCE</span> <span class="p">:</span>
  110. <span class="p">[</span><span class="n">last</span> <span class="n">modified</span><span class="p">:</span> <span class="mi">2025</span><span class="o">-</span><span class="mi">04</span><span class="o">-</span><span class="mi">22</span> <span class="mi">11</span><span class="p">:</span><span class="mi">32</span><span class="p">:</span><span class="mi">27</span><span class="p">]</span> <span class="n">crypt_hash</span> <span class="p">:</span> <span class="n">ca612e3566fdfd7cf7efe</span><span class="o">...</span>
  111. <span class="p">[</span><span class="n">last</span> <span class="n">modified</span><span class="p">:</span> <span class="mi">2025</span><span class="o">-</span><span class="mi">04</span><span class="o">-</span><span class="mi">22</span> <span class="mi">11</span><span class="p">:</span><span class="mi">32</span><span class="p">:</span><span class="mi">30</span><span class="p">]</span> <span class="n">CACHE</span><span class="o">-</span><span class="n">TABLE</span><span class="o">--</span><span class="n">demo_offline</span><span class="p">:</span> <span class="n">demo_offline</span>
  112. <span class="p">[</span><span class="n">last</span> <span class="n">modified</span><span class="p">:</span> <span class="mi">2025</span><span class="o">-</span><span class="mi">04</span><span class="o">-</span><span class="mi">22</span> <span class="mi">11</span><span class="p">:</span><span class="mi">32</span><span class="p">:</span><span class="mi">30</span><span class="p">]</span> <span class="n">CACHE</span><span class="o">-</span><span class="n">TABLE</span><span class="o">--</span><span class="n">startpage</span><span class="p">:</span> <span class="n">startpage</span>
  113. <span class="p">[</span><span class="n">last</span> <span class="n">modified</span><span class="p">:</span> <span class="mi">2025</span><span class="o">-</span><span class="mi">04</span><span class="o">-</span><span class="mi">22</span> <span class="mi">11</span><span class="p">:</span><span class="mi">32</span><span class="p">:</span><span class="mi">31</span><span class="p">]</span> <span class="n">CACHE</span><span class="o">-</span><span class="n">TABLE</span><span class="o">--</span><span class="n">duckduckgo</span><span class="p">:</span> <span class="n">duckduckgo</span>
  114. <span class="p">[</span><span class="n">last</span> <span class="n">modified</span><span class="p">:</span> <span class="mi">2025</span><span class="o">-</span><span class="mi">04</span><span class="o">-</span><span class="mi">22</span> <span class="mi">11</span><span class="p">:</span><span class="mi">33</span><span class="p">:</span><span class="mi">08</span><span class="p">]</span> <span class="n">CACHE</span><span class="o">-</span><span class="n">TABLE</span><span class="o">--</span><span class="n">radio_browser</span><span class="p">:</span> <span class="n">radio_browser</span>
  115. <span class="p">[</span><span class="n">last</span> <span class="n">modified</span><span class="p">:</span> <span class="mi">2025</span><span class="o">-</span><span class="mi">04</span><span class="o">-</span><span class="mi">22</span> <span class="mi">11</span><span class="p">:</span><span class="mi">40</span><span class="p">:</span><span class="mi">06</span><span class="p">]</span> <span class="n">CACHE</span><span class="o">-</span><span class="n">TABLE</span><span class="o">--</span><span class="n">soundcloud</span><span class="p">:</span> <span class="n">soundcloud</span>
  116. <span class="p">[</span><span class="n">last</span> <span class="n">modified</span><span class="p">:</span> <span class="mi">2025</span><span class="o">-</span><span class="mi">04</span><span class="o">-</span><span class="mi">22</span> <span class="mi">11</span><span class="p">:</span><span class="mi">40</span><span class="p">:</span><span class="mi">06</span><span class="p">]</span> <span class="n">CACHE</span><span class="o">-</span><span class="n">TABLE</span><span class="o">--</span><span class="n">wolframalpha</span><span class="p">:</span> <span class="n">wolframalpha</span>
  117. </pre></div>
  118. </div>
  119. <p>These properties provide information about the state of the ExpireCache and
  120. control the behavior. For example, the maintenance intervals are controlled by
  121. the last modification date of the LAST_MAINTENANCE property and the hash value
  122. of the password can be used to detect whether the password has been changed (in
  123. this case the DB entries can no longer be decrypted and the entire cache must be
  124. discarded).</p>
  125. </dd></dl>
  126. <dl class="py class">
  127. <dt class="sig sig-object py" id="searx.enginelib.Engine">
  128. <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">searx.enginelib.</span></span><span class="sig-name descname"><span class="pre">Engine</span></span><a class="reference internal" href="../../_modules/searx/enginelib.html#Engine"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#searx.enginelib.Engine" title="Link to this definition">¶</a></dt>
  129. <dd><p>Class of engine instances build from YAML settings.</p>
  130. <p>Further documentation see <a class="reference internal" href="engine_overview.html#general-engine-configuration"><span class="std std-ref">General Engine Configuration</span></a>.</p>
  131. <div class="admonition hint">
  132. <p class="admonition-title">Hint</p>
  133. <p>This class is currently never initialized and only used for type hinting.</p>
  134. </div>
  135. <dl class="py attribute">
  136. <dt class="sig sig-object py" id="searx.enginelib.Engine.engine_type">
  137. <span class="sig-name descname"><span class="pre">engine_type</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.13)"><span class="pre">str</span></a></em><a class="headerlink" href="#searx.enginelib.Engine.engine_type" title="Link to this definition">¶</a></dt>
  138. <dd><p>Type of the engine (<a class="reference internal" href="../../src/searx.search.processors.html#searx-search-processors"><span class="std std-ref">Search processors</span></a>)</p>
  139. </dd></dl>
  140. <dl class="py attribute">
  141. <dt class="sig sig-object py" id="searx.enginelib.Engine.paging">
  142. <span class="sig-name descname"><span class="pre">paging</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.13)"><span class="pre">bool</span></a></em><a class="headerlink" href="#searx.enginelib.Engine.paging" title="Link to this definition">¶</a></dt>
  143. <dd><p>Engine supports multiple pages.</p>
  144. </dd></dl>
  145. <dl class="py attribute">
  146. <dt class="sig sig-object py" id="searx.enginelib.Engine.time_range_support">
  147. <span class="sig-name descname"><span class="pre">time_range_support</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.13)"><span class="pre">bool</span></a></em><a class="headerlink" href="#searx.enginelib.Engine.time_range_support" title="Link to this definition">¶</a></dt>
  148. <dd><p>Engine supports search time range.</p>
  149. </dd></dl>
  150. <dl class="py attribute">
  151. <dt class="sig sig-object py" id="searx.enginelib.Engine.safesearch">
  152. <span class="sig-name descname"><span class="pre">safesearch</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.13)"><span class="pre">bool</span></a></em><a class="headerlink" href="#searx.enginelib.Engine.safesearch" title="Link to this definition">¶</a></dt>
  153. <dd><p>Engine supports SafeSearch</p>
  154. </dd></dl>
  155. <dl class="py attribute">
  156. <dt class="sig sig-object py" id="searx.enginelib.Engine.language_support">
  157. <span class="sig-name descname"><span class="pre">language_support</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.13)"><span class="pre">bool</span></a></em><a class="headerlink" href="#searx.enginelib.Engine.language_support" title="Link to this definition">¶</a></dt>
  158. <dd><p>Engine supports languages (locales) search.</p>
  159. </dd></dl>
  160. <dl class="py attribute">
  161. <dt class="sig sig-object py" id="searx.enginelib.Engine.language">
  162. <span class="sig-name descname"><span class="pre">language</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.13)"><span class="pre">str</span></a></em><a class="headerlink" href="#searx.enginelib.Engine.language" title="Link to this definition">¶</a></dt>
  163. <dd><p>For an engine, when there is <code class="docutils literal notranslate"><span class="pre">language:</span> <span class="pre">...</span></code> in the YAML settings the engine
  164. does support only this one language:</p>
  165. <div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">google french</span>
  166. <span class="w"> </span><span class="nt">engine</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">google</span>
  167. <span class="w"> </span><span class="nt">language</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">fr</span>
  168. </pre></div>
  169. </div>
  170. </dd></dl>
  171. <dl class="py attribute">
  172. <dt class="sig sig-object py" id="searx.enginelib.Engine.region">
  173. <span class="sig-name descname"><span class="pre">region</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.13)"><span class="pre">str</span></a></em><a class="headerlink" href="#searx.enginelib.Engine.region" title="Link to this definition">¶</a></dt>
  174. <dd><p>For an engine, when there is <code class="docutils literal notranslate"><span class="pre">region:</span> <span class="pre">...</span></code> in the YAML settings the engine
  175. does support only this one region:</p>
  176. <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">..</span> <span class="n">code</span><span class="p">::</span> <span class="n">yaml</span>
  177. </pre></div>
  178. </div>
  179. <blockquote>
  180. <div><ul class="simple">
  181. <li><p>name: google belgium
  182. engine: google
  183. region: fr-BE</p></li>
  184. </ul>
  185. </div></blockquote>
  186. </dd></dl>
  187. <dl class="py attribute">
  188. <dt class="sig sig-object py" id="searx.enginelib.Engine.fetch_traits">
  189. <span class="sig-name descname"><span class="pre">fetch_traits</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/typing.html#typing.Callable" title="(in Python v3.13)"><span class="pre">Callable</span></a></em><a class="headerlink" href="#searx.enginelib.Engine.fetch_traits" title="Link to this definition">¶</a></dt>
  190. <dd><p>Function to to fetch engine’s traits from origin.</p>
  191. </dd></dl>
  192. <dl class="py attribute">
  193. <dt class="sig sig-object py" id="searx.enginelib.Engine.traits">
  194. <span class="sig-name descname"><span class="pre">traits</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="#searx.enginelib.traits.EngineTraits" title="searx.enginelib.traits.EngineTraits"><span class="pre">EngineTraits</span></a></em><a class="headerlink" href="#searx.enginelib.Engine.traits" title="Link to this definition">¶</a></dt>
  195. <dd><p>Traits of the engine.</p>
  196. </dd></dl>
  197. <dl class="py attribute">
  198. <dt class="sig sig-object py" id="searx.enginelib.Engine.categories">
  199. <span class="sig-name descname"><span class="pre">categories</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/typing.html#typing.List" title="(in Python v3.13)"><span class="pre">List</span></a><span class="p"><span class="pre">[</span></span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.13)"><span class="pre">str</span></a><span class="p"><span class="pre">]</span></span></em><a class="headerlink" href="#searx.enginelib.Engine.categories" title="Link to this definition">¶</a></dt>
  200. <dd><p>Specifies to which <a class="reference internal" href="../../admin/settings/settings_engines.html#engine-categories"><span class="std std-ref">categories</span></a> the engine should be added.</p>
  201. </dd></dl>
  202. <dl class="py attribute">
  203. <dt class="sig sig-object py" id="searx.enginelib.Engine.name">
  204. <span class="sig-name descname"><span class="pre">name</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.13)"><span class="pre">str</span></a></em><a class="headerlink" href="#searx.enginelib.Engine.name" title="Link to this definition">¶</a></dt>
  205. <dd><p>Name that will be used across SearXNG to define this engine. In settings, on
  206. the result page ..</p>
  207. </dd></dl>
  208. <dl class="py attribute">
  209. <dt class="sig sig-object py" id="searx.enginelib.Engine.engine">
  210. <span class="sig-name descname"><span class="pre">engine</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.13)"><span class="pre">str</span></a></em><a class="headerlink" href="#searx.enginelib.Engine.engine" title="Link to this definition">¶</a></dt>
  211. <dd><p>Name of the python file used to handle requests and responses to and from
  212. this search engine (file name from <a class="extlink-origin reference external" href="https://github.com/searxng/searxng/blob/master/searx/engines">git://searx/engines</a> without
  213. <code class="docutils literal notranslate"><span class="pre">.py</span></code>).</p>
  214. </dd></dl>
  215. <dl class="py attribute">
  216. <dt class="sig sig-object py" id="searx.enginelib.Engine.enable_http">
  217. <span class="sig-name descname"><span class="pre">enable_http</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.13)"><span class="pre">bool</span></a></em><a class="headerlink" href="#searx.enginelib.Engine.enable_http" title="Link to this definition">¶</a></dt>
  218. <dd><p>Enable HTTP (by default only HTTPS is enabled).</p>
  219. </dd></dl>
  220. <dl class="py attribute">
  221. <dt class="sig sig-object py" id="searx.enginelib.Engine.shortcut">
  222. <span class="sig-name descname"><span class="pre">shortcut</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.13)"><span class="pre">str</span></a></em><a class="headerlink" href="#searx.enginelib.Engine.shortcut" title="Link to this definition">¶</a></dt>
  223. <dd><p>Code used to execute bang requests (<code class="docutils literal notranslate"><span class="pre">!foo</span></code>)</p>
  224. </dd></dl>
  225. <dl class="py attribute">
  226. <dt class="sig sig-object py" id="searx.enginelib.Engine.timeout">
  227. <span class="sig-name descname"><span class="pre">timeout</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/functions.html#float" title="(in Python v3.13)"><span class="pre">float</span></a></em><a class="headerlink" href="#searx.enginelib.Engine.timeout" title="Link to this definition">¶</a></dt>
  228. <dd><p>Specific timeout for search-engine.</p>
  229. </dd></dl>
  230. <dl class="py attribute">
  231. <dt class="sig sig-object py" id="searx.enginelib.Engine.display_error_messages">
  232. <span class="sig-name descname"><span class="pre">display_error_messages</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.13)"><span class="pre">bool</span></a></em><a class="headerlink" href="#searx.enginelib.Engine.display_error_messages" title="Link to this definition">¶</a></dt>
  233. <dd><p>Display error messages on the web UI.</p>
  234. </dd></dl>
  235. <dl class="py attribute">
  236. <dt class="sig sig-object py" id="searx.enginelib.Engine.proxies">
  237. <span class="sig-name descname"><span class="pre">proxies</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#dict" title="(in Python v3.13)"><span class="pre">dict</span></a></em><a class="headerlink" href="#searx.enginelib.Engine.proxies" title="Link to this definition">¶</a></dt>
  238. <dd><p>Set proxies for a specific engine (YAML):</p>
  239. <div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">proxies </span><span class="p">:</span>
  240. <span class="w"> </span><span class="nt">http</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">socks5://proxy:port</span>
  241. <span class="w"> </span><span class="nt">https</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">socks5://proxy:port</span>
  242. </pre></div>
  243. </div>
  244. </dd></dl>
  245. <dl class="py attribute">
  246. <dt class="sig sig-object py" id="searx.enginelib.Engine.disabled">
  247. <span class="sig-name descname"><span class="pre">disabled</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.13)"><span class="pre">bool</span></a></em><a class="headerlink" href="#searx.enginelib.Engine.disabled" title="Link to this definition">¶</a></dt>
  248. <dd><p>To disable by default the engine, but not deleting it. It will allow the
  249. user to manually activate it in the settings.</p>
  250. </dd></dl>
  251. <dl class="py attribute">
  252. <dt class="sig sig-object py" id="searx.enginelib.Engine.inactive">
  253. <span class="sig-name descname"><span class="pre">inactive</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.13)"><span class="pre">bool</span></a></em><a class="headerlink" href="#searx.enginelib.Engine.inactive" title="Link to this definition">¶</a></dt>
  254. <dd><p>Remove the engine from the settings (<em>disabled &amp; removed</em>).</p>
  255. </dd></dl>
  256. <dl class="py attribute">
  257. <dt class="sig sig-object py" id="searx.enginelib.Engine.about">
  258. <span class="sig-name descname"><span class="pre">about</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#dict" title="(in Python v3.13)"><span class="pre">dict</span></a></em><a class="headerlink" href="#searx.enginelib.Engine.about" title="Link to this definition">¶</a></dt>
  259. <dd><p>Additional fields describing the engine.</p>
  260. <div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">about</span><span class="p">:</span>
  261. <span class="w"> </span><span class="nt">website</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">https://example.com</span>
  262. <span class="w"> </span><span class="nt">wikidata_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Q306656</span>
  263. <span class="w"> </span><span class="nt">official_api_documentation</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">https://example.com/api-doc</span>
  264. <span class="w"> </span><span class="nt">use_official_api</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
  265. <span class="w"> </span><span class="nt">require_api_key</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
  266. <span class="w"> </span><span class="nt">results</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">HTML</span>
  267. </pre></div>
  268. </div>
  269. </dd></dl>
  270. <dl class="py attribute">
  271. <dt class="sig sig-object py" id="searx.enginelib.Engine.using_tor_proxy">
  272. <span class="sig-name descname"><span class="pre">using_tor_proxy</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.13)"><span class="pre">bool</span></a></em><a class="headerlink" href="#searx.enginelib.Engine.using_tor_proxy" title="Link to this definition">¶</a></dt>
  273. <dd><p>Using tor proxy (<code class="docutils literal notranslate"><span class="pre">true</span></code>) or not (<code class="docutils literal notranslate"><span class="pre">false</span></code>) for this engine.</p>
  274. </dd></dl>
  275. <dl class="py attribute">
  276. <dt class="sig sig-object py" id="searx.enginelib.Engine.send_accept_language_header">
  277. <span class="sig-name descname"><span class="pre">send_accept_language_header</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.13)"><span class="pre">bool</span></a></em><a class="headerlink" href="#searx.enginelib.Engine.send_accept_language_header" title="Link to this definition">¶</a></dt>
  278. <dd><p>When this option is activated, the language (locale) that is selected by
  279. the user is used to build and send a <code class="docutils literal notranslate"><span class="pre">Accept-Language</span></code> header in the
  280. request to the origin search engine.</p>
  281. </dd></dl>
  282. <dl class="py attribute">
  283. <dt class="sig sig-object py" id="searx.enginelib.Engine.tokens">
  284. <span class="sig-name descname"><span class="pre">tokens</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/typing.html#typing.List" title="(in Python v3.13)"><span class="pre">List</span></a><span class="p"><span class="pre">[</span></span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.13)"><span class="pre">str</span></a><span class="p"><span class="pre">]</span></span></em><a class="headerlink" href="#searx.enginelib.Engine.tokens" title="Link to this definition">¶</a></dt>
  285. <dd><p>A list of secret tokens to make this engine <em>private</em>, more details see
  286. <a class="reference internal" href="../../admin/settings/settings_engines.html#private-engines"><span class="std std-ref">Private Engines (tokens)</span></a>.</p>
  287. </dd></dl>
  288. <dl class="py attribute">
  289. <dt class="sig sig-object py" id="searx.enginelib.Engine.weight">
  290. <span class="sig-name descname"><span class="pre">weight</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.13)"><span class="pre">int</span></a></em><a class="headerlink" href="#searx.enginelib.Engine.weight" title="Link to this definition">¶</a></dt>
  291. <dd><p>Weighting of the results of this engine (<a class="reference internal" href="../../admin/settings/settings_engines.html#settings-engines"><span class="std std-ref">weight</span></a>).</p>
  292. </dd></dl>
  293. </dd></dl>
  294. <dl class="py data">
  295. <dt class="sig sig-object py" id="searx.enginelib.ENGINES_CACHE">
  296. <span class="sig-prename descclassname"><span class="pre">searx.enginelib.</span></span><span class="sig-name descname"><span class="pre">ENGINES_CACHE</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">&lt;searx.cache.ExpireCacheSQLite</span> <span class="pre">object&gt;</span></em><a class="headerlink" href="#searx.enginelib.ENGINES_CACHE" title="Link to this definition">¶</a></dt>
  297. <dd><p>Global <a class="reference internal" href="../../src/searx.cache.html#searx.cache.ExpireCacheSQLite" title="searx.cache.ExpireCacheSQLite"><code class="xref py py-obj docutils literal notranslate"><span class="pre">searx.cache.ExpireCacheSQLite</span></code></a> instance where the cached
  298. values from all engines are stored. The <cite>MAXHOLD_TIME</cite> is 7 days and the
  299. <cite>MAINTENANCE_PERIOD</cite> is set to two hours.</p>
  300. </dd></dl>
  301. <section id="module-searx.enginelib.traits">
  302. <span id="engine-traits"></span><span id="searx-enginelib-traits"></span><h2>Engine traits<a class="headerlink" href="#module-searx.enginelib.traits" title="Link to this heading">¶</a></h2>
  303. <p>Engine’s traits are fetched from the origin engines and stored in a JSON file
  304. in the <em>data folder</em>. Most often traits are languages and region codes and
  305. their mapping from SearXNG’s representation to the representation in the origin
  306. search engine. For new traits new properties can be added to the class
  307. <a class="reference internal" href="#searx.enginelib.traits.EngineTraits" title="searx.enginelib.traits.EngineTraits"><code class="xref py py-class docutils literal notranslate"><span class="pre">EngineTraits</span></code></a>.</p>
  308. <p>To load traits from the persistence <a class="reference internal" href="#searx.enginelib.traits.EngineTraitsMap.from_data" title="searx.enginelib.traits.EngineTraitsMap.from_data"><code class="xref py py-obj docutils literal notranslate"><span class="pre">EngineTraitsMap.from_data</span></code></a> can be
  309. used.</p>
  310. <dl class="py class">
  311. <dt class="sig sig-object py" id="searx.enginelib.traits.EngineTraitsEncoder">
  312. <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">searx.enginelib.traits.</span></span><span class="sig-name descname"><span class="pre">EngineTraitsEncoder</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">skipkeys</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ensure_ascii</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">check_circular</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">allow_nan</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sort_keys</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">indent</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">separators</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">default</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/searx/enginelib/traits.html#EngineTraitsEncoder"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#searx.enginelib.traits.EngineTraitsEncoder" title="Link to this definition">¶</a></dt>
  313. <dd><p>Encodes <a class="reference internal" href="#searx.enginelib.traits.EngineTraits" title="searx.enginelib.traits.EngineTraits"><code class="xref py py-class docutils literal notranslate"><span class="pre">EngineTraits</span></code></a> to a serializable object, see
  314. <a class="reference external" href="https://docs.python.org/3/library/json.html#json.JSONEncoder" title="(in Python v3.13)"><code class="xref py py-class docutils literal notranslate"><span class="pre">json.JSONEncoder</span></code></a>.</p>
  315. <dl class="py method">
  316. <dt class="sig sig-object py" id="searx.enginelib.traits.EngineTraitsEncoder.default">
  317. <span class="sig-name descname"><span class="pre">default</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">o</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/searx/enginelib/traits.html#EngineTraitsEncoder.default"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#searx.enginelib.traits.EngineTraitsEncoder.default" title="Link to this definition">¶</a></dt>
  318. <dd><p>Return dictionary of a <a class="reference internal" href="#searx.enginelib.traits.EngineTraits" title="searx.enginelib.traits.EngineTraits"><code class="xref py py-class docutils literal notranslate"><span class="pre">EngineTraits</span></code></a> object.</p>
  319. </dd></dl>
  320. </dd></dl>
  321. <dl class="py class">
  322. <dt class="sig sig-object py" id="searx.enginelib.traits.EngineTraits">
  323. <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">searx.enginelib.traits.</span></span><span class="sig-name descname"><span class="pre">EngineTraits</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">regions:</span> <span class="pre">~typing.Dict[str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">str]</span> <span class="pre">=</span> <span class="pre">&lt;factory&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">languages:</span> <span class="pre">~typing.Dict[str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">str]</span> <span class="pre">=</span> <span class="pre">&lt;factory&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">all_locale:</span> <span class="pre">str</span> <span class="pre">|</span> <span class="pre">None</span> <span class="pre">=</span> <span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_type:</span> <span class="pre">~typing.Literal['traits_v1']</span> <span class="pre">=</span> <span class="pre">'traits_v1'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">custom:</span> <span class="pre">~typing.Dict[str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">~typing.Dict[str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">~typing.Dict]</span> <span class="pre">|</span> <span class="pre">~typing.Iterable[str]]</span> <span class="pre">=</span> <span class="pre">&lt;factory&gt;</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/searx/enginelib/traits.html#EngineTraits"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#searx.enginelib.traits.EngineTraits" title="Link to this definition">¶</a></dt>
  324. <dd><p>The class is intended to be instantiated for each engine.</p>
  325. <dl class="py attribute">
  326. <dt class="sig sig-object py" id="searx.enginelib.traits.EngineTraits.regions">
  327. <span class="sig-name descname"><span class="pre">regions</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/typing.html#typing.Dict" title="(in Python v3.13)"><span class="pre">Dict</span></a><span class="p"><span class="pre">[</span></span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.13)"><span class="pre">str</span></a><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.13)"><span class="pre">str</span></a><span class="p"><span class="pre">]</span></span></em><a class="headerlink" href="#searx.enginelib.traits.EngineTraits.regions" title="Link to this definition">¶</a></dt>
  328. <dd><p>Maps SearXNG’s internal representation of a region to the one of the engine.</p>
  329. <p>SearXNG’s internal representation can be parsed by babel and the value is
  330. send to the engine:</p>
  331. <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">regions</span> <span class="o">=</span><span class="p">{</span>
  332. <span class="s1">&#39;fr-BE&#39;</span> <span class="p">:</span> <span class="o">&lt;</span><span class="n">engine</span><span class="s1">&#39;s region name&gt;,</span>
  333. <span class="p">}</span>
  334. <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">egnine_region</span> <span class="n">regions</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
  335. <span class="n">searxng_region</span> <span class="o">=</span> <span class="n">babel</span><span class="o">.</span><span class="n">Locale</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s1">&#39;-&#39;</span><span class="p">)</span>
  336. <span class="o">...</span>
  337. </pre></div>
  338. </div>
  339. </dd></dl>
  340. <dl class="py attribute">
  341. <dt class="sig sig-object py" id="searx.enginelib.traits.EngineTraits.languages">
  342. <span class="sig-name descname"><span class="pre">languages</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/typing.html#typing.Dict" title="(in Python v3.13)"><span class="pre">Dict</span></a><span class="p"><span class="pre">[</span></span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.13)"><span class="pre">str</span></a><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.13)"><span class="pre">str</span></a><span class="p"><span class="pre">]</span></span></em><a class="headerlink" href="#searx.enginelib.traits.EngineTraits.languages" title="Link to this definition">¶</a></dt>
  343. <dd><p>Maps SearXNG’s internal representation of a language to the one of the engine.</p>
  344. <p>SearXNG’s internal representation can be parsed by babel and the value is
  345. send to the engine:</p>
  346. <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">languages</span> <span class="o">=</span> <span class="p">{</span>
  347. <span class="s1">&#39;ca&#39;</span> <span class="p">:</span> <span class="o">&lt;</span><span class="n">engine</span><span class="s1">&#39;s language name&gt;,</span>
  348. <span class="p">}</span>
  349. <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">egnine_lang</span> <span class="ow">in</span> <span class="n">languages</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
  350. <span class="n">searxng_lang</span> <span class="o">=</span> <span class="n">babel</span><span class="o">.</span><span class="n">Locale</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
  351. <span class="o">...</span>
  352. </pre></div>
  353. </div>
  354. </dd></dl>
  355. <dl class="py attribute">
  356. <dt class="sig sig-object py" id="searx.enginelib.traits.EngineTraits.all_locale">
  357. <span class="sig-name descname"><span class="pre">all_locale</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.13)"><span class="pre">str</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.13)"><span class="pre">None</span></a></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#searx.enginelib.traits.EngineTraits.all_locale" title="Link to this definition">¶</a></dt>
  358. <dd><p>To which locale value SearXNG’s <code class="docutils literal notranslate"><span class="pre">all</span></code> language is mapped (shown a “Default
  359. language”).</p>
  360. </dd></dl>
  361. <dl class="py attribute">
  362. <dt class="sig sig-object py" id="searx.enginelib.traits.EngineTraits.data_type">
  363. <span class="sig-name descname"><span class="pre">data_type</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/typing.html#typing.Literal" title="(in Python v3.13)"><span class="pre">Literal</span></a><span class="p"><span class="pre">[</span></span><span class="s"><span class="pre">'traits_v1'</span></span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'traits_v1'</span></em><a class="headerlink" href="#searx.enginelib.traits.EngineTraits.data_type" title="Link to this definition">¶</a></dt>
  364. <dd><p>Data type, default is ‘traits_v1’.</p>
  365. </dd></dl>
  366. <dl class="py attribute">
  367. <dt class="sig sig-object py" id="searx.enginelib.traits.EngineTraits.custom">
  368. <span class="sig-name descname"><span class="pre">custom</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/typing.html#typing.Dict" title="(in Python v3.13)"><span class="pre">Dict</span></a><span class="p"><span class="pre">[</span></span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.13)"><span class="pre">str</span></a><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/typing.html#typing.Dict" title="(in Python v3.13)"><span class="pre">Dict</span></a><span class="p"><span class="pre">[</span></span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.13)"><span class="pre">str</span></a><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/typing.html#typing.Dict" title="(in Python v3.13)"><span class="pre">Dict</span></a><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/typing.html#typing.Iterable" title="(in Python v3.13)"><span class="pre">Iterable</span></a><span class="p"><span class="pre">[</span></span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.13)"><span class="pre">str</span></a><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></em><a class="headerlink" href="#searx.enginelib.traits.EngineTraits.custom" title="Link to this definition">¶</a></dt>
  369. <dd><p>A place to store engine’s custom traits, not related to the SearXNG core.</p>
  370. </dd></dl>
  371. <dl class="py method">
  372. <dt class="sig sig-object py" id="searx.enginelib.traits.EngineTraits.get_language">
  373. <span class="sig-name descname"><span class="pre">get_language</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">searxng_locale</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.13)"><span class="pre">str</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">default</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/searx/enginelib/traits.html#EngineTraits.get_language"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#searx.enginelib.traits.EngineTraits.get_language" title="Link to this definition">¶</a></dt>
  374. <dd><p>Return engine’s language string that <em>best fits</em> to SearXNG’s locale.</p>
  375. <dl class="field-list simple">
  376. <dt class="field-odd">Parameters<span class="colon">:</span></dt>
  377. <dd class="field-odd"><ul class="simple">
  378. <li><p><strong>searxng_locale</strong> – SearXNG’s internal representation of locale
  379. selected by the user.</p></li>
  380. <li><p><strong>default</strong> – engine’s default language</p></li>
  381. </ul>
  382. </dd>
  383. </dl>
  384. <p>The <em>best fits</em> rules are implemented in
  385. <a class="reference internal" href="../../src/searx.locales.html#searx.locales.get_engine_locale" title="searx.locales.get_engine_locale"><code class="xref py py-obj docutils literal notranslate"><span class="pre">searx.locales.get_engine_locale</span></code></a>. Except for the special value <code class="docutils literal notranslate"><span class="pre">all</span></code>
  386. which is determined from <a class="reference internal" href="#searx.enginelib.traits.EngineTraits.all_locale" title="searx.enginelib.traits.EngineTraits.all_locale"><code class="xref py py-obj docutils literal notranslate"><span class="pre">EngineTraits.all_locale</span></code></a>.</p>
  387. </dd></dl>
  388. <dl class="py method">
  389. <dt class="sig sig-object py" id="searx.enginelib.traits.EngineTraits.get_region">
  390. <span class="sig-name descname"><span class="pre">get_region</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">searxng_locale</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.13)"><span class="pre">str</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">default</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/searx/enginelib/traits.html#EngineTraits.get_region"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#searx.enginelib.traits.EngineTraits.get_region" title="Link to this definition">¶</a></dt>
  391. <dd><p>Return engine’s region string that best fits to SearXNG’s locale.</p>
  392. <dl class="field-list simple">
  393. <dt class="field-odd">Parameters<span class="colon">:</span></dt>
  394. <dd class="field-odd"><ul class="simple">
  395. <li><p><strong>searxng_locale</strong> – SearXNG’s internal representation of locale
  396. selected by the user.</p></li>
  397. <li><p><strong>default</strong> – engine’s default region</p></li>
  398. </ul>
  399. </dd>
  400. </dl>
  401. <p>The <em>best fits</em> rules are implemented in
  402. <a class="reference internal" href="../../src/searx.locales.html#searx.locales.get_engine_locale" title="searx.locales.get_engine_locale"><code class="xref py py-obj docutils literal notranslate"><span class="pre">searx.locales.get_engine_locale</span></code></a>. Except for the special value <code class="docutils literal notranslate"><span class="pre">all</span></code>
  403. which is determined from <a class="reference internal" href="#searx.enginelib.traits.EngineTraits.all_locale" title="searx.enginelib.traits.EngineTraits.all_locale"><code class="xref py py-obj docutils literal notranslate"><span class="pre">EngineTraits.all_locale</span></code></a>.</p>
  404. </dd></dl>
  405. <dl class="py method">
  406. <dt class="sig sig-object py" id="searx.enginelib.traits.EngineTraits.is_locale_supported">
  407. <span class="sig-name descname"><span class="pre">is_locale_supported</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">searxng_locale</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.13)"><span class="pre">str</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.13)"><span class="pre">bool</span></a></span></span><a class="reference internal" href="../../_modules/searx/enginelib/traits.html#EngineTraits.is_locale_supported"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#searx.enginelib.traits.EngineTraits.is_locale_supported" title="Link to this definition">¶</a></dt>
  408. <dd><p>A <em>locale</em> (SearXNG’s internal representation) is considered to be
  409. supported by the engine if the <em>region</em> or the <em>language</em> is supported
  410. by the engine.</p>
  411. <p>For verification the functions <a class="reference internal" href="#searx.enginelib.traits.EngineTraits.get_region" title="searx.enginelib.traits.EngineTraits.get_region"><code class="xref py py-func docutils literal notranslate"><span class="pre">EngineTraits.get_region()</span></code></a> and
  412. <a class="reference internal" href="#searx.enginelib.traits.EngineTraits.get_language" title="searx.enginelib.traits.EngineTraits.get_language"><code class="xref py py-func docutils literal notranslate"><span class="pre">EngineTraits.get_language()</span></code></a> are used.</p>
  413. </dd></dl>
  414. <dl class="py method">
  415. <dt class="sig sig-object py" id="searx.enginelib.traits.EngineTraits.copy">
  416. <span class="sig-name descname"><span class="pre">copy</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/searx/enginelib/traits.html#EngineTraits.copy"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#searx.enginelib.traits.EngineTraits.copy" title="Link to this definition">¶</a></dt>
  417. <dd><p>Create a copy of the dataclass object.</p>
  418. </dd></dl>
  419. <dl class="py method">
  420. <dt class="sig sig-object py" id="searx.enginelib.traits.EngineTraits.fetch_traits">
  421. <em class="property"><span class="pre">classmethod</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">fetch_traits</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">engine</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#searx.enginelib.Engine" title="searx.enginelib.Engine"><span class="pre">Engine</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="s"><span class="pre">'EngineTraits'</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.13)"><span class="pre">None</span></a></span></span><a class="reference internal" href="../../_modules/searx/enginelib/traits.html#EngineTraits.fetch_traits"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#searx.enginelib.traits.EngineTraits.fetch_traits" title="Link to this definition">¶</a></dt>
  422. <dd><p>Call a function <code class="docutils literal notranslate"><span class="pre">fetch_traits(engine_traits)</span></code> from engines namespace to fetch
  423. and set properties from the origin engine in the object <code class="docutils literal notranslate"><span class="pre">engine_traits</span></code>. If
  424. function does not exists, <code class="docutils literal notranslate"><span class="pre">None</span></code> is returned.</p>
  425. </dd></dl>
  426. <dl class="py method">
  427. <dt class="sig sig-object py" id="searx.enginelib.traits.EngineTraits.set_traits">
  428. <span class="sig-name descname"><span class="pre">set_traits</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">engine</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#searx.enginelib.Engine" title="searx.enginelib.Engine"><span class="pre">Engine</span></a></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/searx/enginelib/traits.html#EngineTraits.set_traits"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#searx.enginelib.traits.EngineTraits.set_traits" title="Link to this definition">¶</a></dt>
  429. <dd><p>Set traits from self object in a <a class="reference internal" href="#searx.enginelib.Engine" title="searx.enginelib.Engine"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Engine</span></code></a> namespace.</p>
  430. <dl class="field-list simple">
  431. <dt class="field-odd">Parameters<span class="colon">:</span></dt>
  432. <dd class="field-odd"><p><strong>engine</strong> – engine instance build by <a class="reference internal" href="engines.html#searx.engines.load_engine" title="searx.engines.load_engine"><code class="xref py py-func docutils literal notranslate"><span class="pre">searx.engines.load_engine()</span></code></a></p>
  433. </dd>
  434. </dl>
  435. </dd></dl>
  436. </dd></dl>
  437. <dl class="py class">
  438. <dt class="sig sig-object py" id="searx.enginelib.traits.EngineTraitsMap">
  439. <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">searx.enginelib.traits.</span></span><span class="sig-name descname"><span class="pre">EngineTraitsMap</span></span><a class="reference internal" href="../../_modules/searx/enginelib/traits.html#EngineTraitsMap"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#searx.enginelib.traits.EngineTraitsMap" title="Link to this definition">¶</a></dt>
  440. <dd><p>A python dictionary to map <a class="reference internal" href="#searx.enginelib.traits.EngineTraits" title="searx.enginelib.traits.EngineTraits"><code class="xref py py-class docutils literal notranslate"><span class="pre">EngineTraits</span></code></a> by engine name.</p>
  441. <dl class="py attribute">
  442. <dt class="sig sig-object py" id="searx.enginelib.traits.EngineTraitsMap.ENGINE_TRAITS_FILE">
  443. <span class="sig-name descname"><span class="pre">ENGINE_TRAITS_FILE</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">PosixPath('/home/runner/work/searxng/searxng/searx/data/engine_traits.json')</span></em><a class="headerlink" href="#searx.enginelib.traits.EngineTraitsMap.ENGINE_TRAITS_FILE" title="Link to this definition">¶</a></dt>
  444. <dd><p>File with persistence of the <a class="reference internal" href="#searx.enginelib.traits.EngineTraitsMap" title="searx.enginelib.traits.EngineTraitsMap"><code class="xref py py-obj docutils literal notranslate"><span class="pre">EngineTraitsMap</span></code></a>.</p>
  445. </dd></dl>
  446. <dl class="py method">
  447. <dt class="sig sig-object py" id="searx.enginelib.traits.EngineTraitsMap.save_data">
  448. <span class="sig-name descname"><span class="pre">save_data</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/searx/enginelib/traits.html#EngineTraitsMap.save_data"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#searx.enginelib.traits.EngineTraitsMap.save_data" title="Link to this definition">¶</a></dt>
  449. <dd><p>Store EngineTraitsMap in in file <code class="xref py py-obj docutils literal notranslate"><span class="pre">self.ENGINE_TRAITS_FILE</span></code></p>
  450. </dd></dl>
  451. <dl class="py method">
  452. <dt class="sig sig-object py" id="searx.enginelib.traits.EngineTraitsMap.from_data">
  453. <em class="property"><span class="pre">classmethod</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_data</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#searx.enginelib.traits.EngineTraitsMap" title="searx.enginelib.traits.EngineTraitsMap"><span class="pre">EngineTraitsMap</span></a></span></span><a class="reference internal" href="../../_modules/searx/enginelib/traits.html#EngineTraitsMap.from_data"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#searx.enginelib.traits.EngineTraitsMap.from_data" title="Link to this definition">¶</a></dt>
  454. <dd><p>Instantiate <a class="reference internal" href="#searx.enginelib.traits.EngineTraitsMap" title="searx.enginelib.traits.EngineTraitsMap"><code class="xref py py-class docutils literal notranslate"><span class="pre">EngineTraitsMap</span></code></a> object from <code class="xref py py-obj docutils literal notranslate"><span class="pre">ENGINE_TRAITS</span></code></p>
  455. </dd></dl>
  456. <dl class="py method">
  457. <dt class="sig sig-object py" id="searx.enginelib.traits.EngineTraitsMap.set_traits">
  458. <span class="sig-name descname"><span class="pre">set_traits</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">engine</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#searx.enginelib.Engine" title="searx.enginelib.Engine"><span class="pre">Engine</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/types.html#types.ModuleType" title="(in Python v3.13)"><span class="pre">types.ModuleType</span></a></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/searx/enginelib/traits.html#EngineTraitsMap.set_traits"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#searx.enginelib.traits.EngineTraitsMap.set_traits" title="Link to this definition">¶</a></dt>
  459. <dd><p>Set traits in a <code class="xref py py-obj docutils literal notranslate"><span class="pre">Engine</span></code> namespace.</p>
  460. <dl class="field-list simple">
  461. <dt class="field-odd">Parameters<span class="colon">:</span></dt>
  462. <dd class="field-odd"><p><strong>engine</strong> – engine instance build by <a class="reference internal" href="engines.html#searx.engines.load_engine" title="searx.engines.load_engine"><code class="xref py py-func docutils literal notranslate"><span class="pre">searx.engines.load_engine()</span></code></a></p>
  463. </dd>
  464. </dl>
  465. </dd></dl>
  466. </dd></dl>
  467. </section>
  468. </section>
  469. <div class="clearer"></div>
  470. </div>
  471. </div>
  472. </div>
  473. <span id="sidebar-top"></span>
  474. <div class="sphinxsidebar" role="navigation" aria-label="Main">
  475. <div class="sphinxsidebarwrapper">
  476. <p class="logo"><a href="../../index.html">
  477. <img class="logo" src="../../_static/searxng-wordmark.svg" alt="Logo of SearXNG"/>
  478. </a></p>
  479. <h3><a href="../../index.html">Table of Contents</a></h3>
  480. <ul class="current">
  481. <li class="toctree-l1"><a class="reference internal" href="../../user/index.html">User information</a></li>
  482. <li class="toctree-l1"><a class="reference internal" href="../../own-instance.html">Why use a private instance?</a></li>
  483. <li class="toctree-l1"><a class="reference internal" href="../../admin/index.html">Administrator documentation</a></li>
  484. <li class="toctree-l1 current"><a class="reference internal" href="../index.html">Developer documentation</a><ul class="current">
  485. <li class="toctree-l2"><a class="reference internal" href="../quickstart.html">Development Quickstart</a></li>
  486. <li class="toctree-l2"><a class="reference internal" href="../rtm_asdf.html">Runtime Management</a></li>
  487. <li class="toctree-l2"><a class="reference internal" href="../contribution_guide.html">How to contribute</a></li>
  488. <li class="toctree-l2"><a class="reference internal" href="../extended_types.html">Extended Types</a></li>
  489. <li class="toctree-l2 current"><a class="reference internal" href="index.html">Engine Implementations</a><ul class="current">
  490. <li class="toctree-l3 current"><a class="current reference internal" href="#">Engine Library</a><ul>
  491. <li class="toctree-l4"><a class="reference internal" href="#searx.enginelib.EngineCache"><code class="docutils literal notranslate"><span class="pre">EngineCache</span></code></a></li>
  492. <li class="toctree-l4"><a class="reference internal" href="#searx.enginelib.Engine"><code class="docutils literal notranslate"><span class="pre">Engine</span></code></a><ul>
  493. <li class="toctree-l5"><a class="reference internal" href="#searx.enginelib.Engine.engine_type"><code class="docutils literal notranslate"><span class="pre">Engine.engine_type</span></code></a></li>
  494. <li class="toctree-l5"><a class="reference internal" href="#searx.enginelib.Engine.paging"><code class="docutils literal notranslate"><span class="pre">Engine.paging</span></code></a></li>
  495. <li class="toctree-l5"><a class="reference internal" href="#searx.enginelib.Engine.time_range_support"><code class="docutils literal notranslate"><span class="pre">Engine.time_range_support</span></code></a></li>
  496. <li class="toctree-l5"><a class="reference internal" href="#searx.enginelib.Engine.safesearch"><code class="docutils literal notranslate"><span class="pre">Engine.safesearch</span></code></a></li>
  497. <li class="toctree-l5"><a class="reference internal" href="#searx.enginelib.Engine.language_support"><code class="docutils literal notranslate"><span class="pre">Engine.language_support</span></code></a></li>
  498. <li class="toctree-l5"><a class="reference internal" href="#searx.enginelib.Engine.language"><code class="docutils literal notranslate"><span class="pre">Engine.language</span></code></a></li>
  499. <li class="toctree-l5"><a class="reference internal" href="#searx.enginelib.Engine.region"><code class="docutils literal notranslate"><span class="pre">Engine.region</span></code></a></li>
  500. <li class="toctree-l5"><a class="reference internal" href="#searx.enginelib.Engine.fetch_traits"><code class="docutils literal notranslate"><span class="pre">Engine.fetch_traits</span></code></a></li>
  501. <li class="toctree-l5"><a class="reference internal" href="#searx.enginelib.Engine.traits"><code class="docutils literal notranslate"><span class="pre">Engine.traits</span></code></a></li>
  502. <li class="toctree-l5"><a class="reference internal" href="#searx.enginelib.Engine.categories"><code class="docutils literal notranslate"><span class="pre">Engine.categories</span></code></a></li>
  503. <li class="toctree-l5"><a class="reference internal" href="#searx.enginelib.Engine.name"><code class="docutils literal notranslate"><span class="pre">Engine.name</span></code></a></li>
  504. <li class="toctree-l5"><a class="reference internal" href="#searx.enginelib.Engine.engine"><code class="docutils literal notranslate"><span class="pre">Engine.engine</span></code></a></li>
  505. <li class="toctree-l5"><a class="reference internal" href="#searx.enginelib.Engine.enable_http"><code class="docutils literal notranslate"><span class="pre">Engine.enable_http</span></code></a></li>
  506. <li class="toctree-l5"><a class="reference internal" href="#searx.enginelib.Engine.shortcut"><code class="docutils literal notranslate"><span class="pre">Engine.shortcut</span></code></a></li>
  507. <li class="toctree-l5"><a class="reference internal" href="#searx.enginelib.Engine.timeout"><code class="docutils literal notranslate"><span class="pre">Engine.timeout</span></code></a></li>
  508. <li class="toctree-l5"><a class="reference internal" href="#searx.enginelib.Engine.display_error_messages"><code class="docutils literal notranslate"><span class="pre">Engine.display_error_messages</span></code></a></li>
  509. <li class="toctree-l5"><a class="reference internal" href="#searx.enginelib.Engine.proxies"><code class="docutils literal notranslate"><span class="pre">Engine.proxies</span></code></a></li>
  510. <li class="toctree-l5"><a class="reference internal" href="#searx.enginelib.Engine.disabled"><code class="docutils literal notranslate"><span class="pre">Engine.disabled</span></code></a></li>
  511. <li class="toctree-l5"><a class="reference internal" href="#searx.enginelib.Engine.inactive"><code class="docutils literal notranslate"><span class="pre">Engine.inactive</span></code></a></li>
  512. <li class="toctree-l5"><a class="reference internal" href="#searx.enginelib.Engine.about"><code class="docutils literal notranslate"><span class="pre">Engine.about</span></code></a></li>
  513. <li class="toctree-l5"><a class="reference internal" href="#searx.enginelib.Engine.using_tor_proxy"><code class="docutils literal notranslate"><span class="pre">Engine.using_tor_proxy</span></code></a></li>
  514. <li class="toctree-l5"><a class="reference internal" href="#searx.enginelib.Engine.send_accept_language_header"><code class="docutils literal notranslate"><span class="pre">Engine.send_accept_language_header</span></code></a></li>
  515. <li class="toctree-l5"><a class="reference internal" href="#searx.enginelib.Engine.tokens"><code class="docutils literal notranslate"><span class="pre">Engine.tokens</span></code></a></li>
  516. <li class="toctree-l5"><a class="reference internal" href="#searx.enginelib.Engine.weight"><code class="docutils literal notranslate"><span class="pre">Engine.weight</span></code></a></li>
  517. </ul>
  518. </li>
  519. <li class="toctree-l4"><a class="reference internal" href="#searx.enginelib.ENGINES_CACHE"><code class="docutils literal notranslate"><span class="pre">ENGINES_CACHE</span></code></a></li>
  520. <li class="toctree-l4"><a class="reference internal" href="#module-searx.enginelib.traits">Engine traits</a><ul>
  521. <li class="toctree-l5"><a class="reference internal" href="#searx.enginelib.traits.EngineTraitsEncoder"><code class="docutils literal notranslate"><span class="pre">EngineTraitsEncoder</span></code></a></li>
  522. <li class="toctree-l5"><a class="reference internal" href="#searx.enginelib.traits.EngineTraits"><code class="docutils literal notranslate"><span class="pre">EngineTraits</span></code></a></li>
  523. <li class="toctree-l5"><a class="reference internal" href="#searx.enginelib.traits.EngineTraitsMap"><code class="docutils literal notranslate"><span class="pre">EngineTraitsMap</span></code></a></li>
  524. </ul>
  525. </li>
  526. </ul>
  527. </li>
  528. <li class="toctree-l3"><a class="reference internal" href="engines.html">SearXNG’s engines loader</a></li>
  529. <li class="toctree-l3"><a class="reference internal" href="engine_overview.html">Engine Overview</a></li>
  530. <li class="toctree-l3"><a class="reference internal" href="index.html#resultlist-and-engines">ResultList and engines</a></li>
  531. <li class="toctree-l3"><a class="reference internal" href="index.html#engine-types">Engine Types</a></li>
  532. </ul>
  533. </li>
  534. <li class="toctree-l2"><a class="reference internal" href="../result_types/index.html">Result Types</a></li>
  535. <li class="toctree-l2"><a class="reference internal" href="../templates.html">Simple Theme Templates</a></li>
  536. <li class="toctree-l2"><a class="reference internal" href="../search_api.html">Search API</a></li>
  537. <li class="toctree-l2"><a class="reference internal" href="../plugins/index.html">Plugins</a></li>
  538. <li class="toctree-l2"><a class="reference internal" href="../answerers/index.html">Answerers</a></li>
  539. <li class="toctree-l2"><a class="reference internal" href="../translation.html">Translation</a></li>
  540. <li class="toctree-l2"><a class="reference internal" href="../lxcdev.html">Developing in Linux Containers</a></li>
  541. <li class="toctree-l2"><a class="reference internal" href="../makefile.html">Makefile &amp; <code class="docutils literal notranslate"><span class="pre">./manage</span></code></a></li>
  542. <li class="toctree-l2"><a class="reference internal" href="../reST.html">reST primer</a></li>
  543. <li class="toctree-l2"><a class="reference internal" href="../searxng_extra/index.html">Tooling box <code class="docutils literal notranslate"><span class="pre">searxng_extra</span></code></a></li>
  544. </ul>
  545. </li>
  546. <li class="toctree-l1"><a class="reference internal" href="../../utils/index.html">DevOps tooling box</a></li>
  547. <li class="toctree-l1"><a class="reference internal" href="../../src/index.html">Source-Code</a></li>
  548. </ul>
  549. <h3>Project Links</h3>
  550. <ul>
  551. <li><a href="https://github.com/searxng/searxng/tree/master">Source</a>
  552. <li><a href="https://github.com/searxng/searxng/wiki">Wiki</a>
  553. <li><a href="https://searx.space">Public instances</a>
  554. <li><a href="https://github.com/searxng/searxng/issues">Issue Tracker</a>
  555. </ul><h3>Navigation</h3>
  556. <ul>
  557. <li><a href="../../index.html">Overview</a>
  558. <ul>
  559. <li><a href="../index.html">Developer documentation</a>
  560. <ul>
  561. <li><a href="index.html">Engine Implementations</a>
  562. <ul>
  563. <li>Previous: <a href="index.html" title="previous chapter">Engine Implementations</a>
  564. <li>Next: <a href="engines.html" title="next chapter">SearXNG’s engines loader</a></ul>
  565. </li></ul>
  566. </li>
  567. </ul>
  568. </li>
  569. </ul>
  570. <search id="searchbox" style="display: none" role="search">
  571. <h3 id="searchlabel">Quick search</h3>
  572. <div class="searchformwrapper">
  573. <form class="search" action="../../search.html" method="get">
  574. <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
  575. <input type="submit" value="Go" />
  576. </form>
  577. </div>
  578. </search>
  579. <script>document.getElementById('searchbox').style.display = "block"</script>
  580. <div role="note" aria-label="source link">
  581. <h3>This Page</h3>
  582. <ul class="this-page-menu">
  583. <li><a href="../../_sources/dev/engines/enginelib.rst.txt"
  584. rel="nofollow">Show Source</a></li>
  585. </ul>
  586. </div>
  587. </div>
  588. </div>
  589. <div class="clearer"></div>
  590. </div>
  591. <div class="footer" role="contentinfo">
  592. &#169; Copyright SearXNG team.
  593. </div>
  594. </body>
  595. </html>