Author SHA1 Message Date
skoandClaude Opus 5 72a1ca284a mediawiki: Suchfehler lesbar statt als Stacktrace (0.1.1)
Gleichstand mit inmedias.it/dokumentierer d1eeb94.

Eine von CirrusSearch abgelehnte Suchanfrage liess mwclient.errors.APIError
bis nach oben durchschlagen - der Benutzer sah einen Stacktrace statt einer
Meldung. cmd_search faengt den Fehler jetzt ab und beendet mit Code 1.

Fuer cirrussearch-parse-error gibt es einen eigenen Hinweis: "insource:wort"
funktioniert, die Regex-Form "insource:/muster/" nicht. Letztere braucht das
Elasticsearch-Plugin wikimedia-extra, das auf unserer Instanz fehlt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-10-06 11:51:07 +02:00
2 changed files with 15 additions and 8 deletions

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "mediawiki", "name": "mediawiki",
"version": "0.1.0", "version": "0.1.1",
"description": "MediaWiki-Seiten/Templates lesen, rendern und schreiben via wiki.py (fetch/update/render/search, Instanzen wiki & devwiki).", "description": "MediaWiki-Seiten/Templates lesen, rendern und schreiben via wiki.py (fetch/update/render/search, Instanzen wiki & devwiki).",
"author": { "author": {
"name": "inmedias.it" "name": "inmedias.it"
+14 -7
View File
@@ -88,13 +88,20 @@ def cmd_search(args: argparse.Namespace) -> None:
sys.exit(f"Error: unknown namespace '{ns_key}'. " sys.exit(f"Error: unknown namespace '{ns_key}'. "
f"Known: all, {', '.join(NAMESPACES)}") f"Known: all, {', '.join(NAMESPACES)}")
result = site.api( try:
"query", list="search", result = site.api(
srsearch=args.query, "query", list="search",
srnamespace=ns, srsearch=args.query,
srlimit=50, srnamespace=ns,
srprop="title|snippet", srlimit=50,
) srprop="title|snippet",
)
except mwclient.errors.APIError as exc:
if exc.code == "cirrussearch-parse-error":
sys.exit(f"Error: Suchanfrage nicht verstanden: {args.query!r}\n"
f"Hinweis: 'insource:wort' funktioniert, die Regex-Form "
f"'insource:/muster/' ist auf dieser Instanz nicht freigeschaltet.")
sys.exit(f"Error: Suche fehlgeschlagen ({exc.code}): {exc.info}")
hits = result["query"]["search"] hits = result["query"]["search"]
if not hits: if not hits:
print("(keine Ergebnisse)", file=sys.stderr) print("(keine Ergebnisse)", file=sys.stderr)