chore: deduplicate src/search modules (cache, content, query) into shims (#2506)

* chore: dedupe src/search/cache.py into a re-export shim

src/search/cache.py was a byte-identical copy of services/search/cache.py.
Convert it to a sys.modules alias of the canonical services module (matching
src/search/core.py, providers.py, ranking.py) so the two cannot drift, and add
an identity assertion to test_search_module_consolidation.py.

content.py and query.py are intentionally left as-is: the copies have drifted
and services lacks fixes that src has, so they need services reconciled first
before they can be shimmed safely.

* chore: dedupe src/search content.py and query.py into shims

Convert src/search/content.py and query.py to sys.modules aliases of the
canonical services/search/* (matching cache.py, core.py, providers.py,
ranking.py) so the duplicate copies cannot drift.

Repoint the two tests that were coupled to the src-copy internals onto the
canonical services surface (behaviour is equivalent):
- test_src_search_query_nonstring.py: import services.search.query instead of
  loading the src file by path.
- test_security_regressions.py::test_web_fetch_guard_blocks_redirect_into_private:
  mock httpx.get (services uses the module-level get, not httpx.Client) and
  assert on the canonical 'Blocked' message.

Drop the now-redundant [src_content, service_content] parametrization in
test_search_content_extraction_parity.py and test_search_content_url_guards.py
(after the shim both params are the same object); add content/query identity
assertions to test_search_module_consolidation.py.
This commit is contained in:
Kenny Van de Maele
2026-06-04 18:10:55 +02:00
committed by GitHub
parent 66fba78011
commit 8bfd79fe8e
8 changed files with 44 additions and 640 deletions
@@ -33,3 +33,10 @@ def test_src_search_package_exports_still_resolve():
assert search.searxng_search_results is service_search.searxng_search_results
assert search.searxng_search_api is service_search.searxng_search_api
assert search.PROVIDER_INFO is service_search.PROVIDER_INFO
def test_src_search_cache_content_query_alias_services():
for name in ("cache", "content", "query"):
src_mod = importlib.import_module(f"src.search.{name}")
svc_mod = importlib.import_module(f"services.search.{name}")
assert src_mod is svc_mod, f"src.search.{name} should alias services.search.{name}"