This is a multi-part MIME message sent by reportbug.
Package: python3-xapian-haystack
Version: 2.1.1-1
Severity: grave
Tags: upstream patch
Justification: renders package unusable
Dear Maintainer,
I installed python3-xapian-haystack in order to employ Xapian as a
Haystack backend in mailman3-web on stable (bookworm).
However, upon actually trying to use it, I got the following traceback:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/django/core/handlers/exception.py", line 47, in inner
response = get_response(request)
File "/usr/lib/python3/dist-packages/django/core/handlers/base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python3/dist-packages/hyperkitty/views/search.py", line 54, in search
results = EmptySearchQuerySet()
File "/usr/lib/python3/dist-packages/haystack/query.py", line 25, in __init__
self._determine_backend()
File "/usr/lib/python3/dist-packages/haystack/query.py", line 58, in _determine_backend
self.query = connections[backend_alias].get_query()
File "/usr/lib/python3/dist-packages/haystack/utils/loading.py", line 114, in __getitem__
self.thread_local.connections[key] = load_backend(
File "/usr/lib/python3/dist-packages/haystack/utils/loading.py", line 60, in load_backend
return import_class(full_backend_path)
File "/usr/lib/python3/dist-packages/haystack/utils/loading.py", line 22, in import_class
module_itself = importlib.import_module(module_path)
File "/usr/lib/python3.11/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
<source code not available>
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
<source code not available>
File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked
<source code not available>
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
<source code not available>
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
<source code not available>
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
<source code not available>
File "/usr/lib/python3/dist-packages/xapian_backend.py", line 10, in <module>
from django.utils import six
Exception Type: ImportError at /hyperkitty/search
Exception Value: cannot import name 'six' from 'django.utils' (/usr/lib/python3/dist-packages/django/utils/__init__.py)
django.utils.six was removed in Django 3.0; the version of Django in
stable is 3.2. Hence python3-xapian-haystack is currently unusable in
stable, as it simply throws an ImportError upon loading.
Upstream fixed this issue when they dropped Python 2 support in [0].
However, I have a simpler patch that just removes the six import and
changes all occurences of `six.moves.range()` to the built-in `range()`,
which I've applied locally (hence the debsums complaint) and seems to do
the trick.
I would very much like a stable-update for this given that the package
simply does not work without the patch.
Many thanks,
Ole
[0]:
https://github.com/notanumber/xapian-haystack/commit/0f9d94fb23ebf8cf194a3a88948a86f6dc69e786#diff-b4466d919fc4105c6306804abd396d6e0ba5e4630346928df34a5308c4700d97
-- System Information:
Debian Release: 12.5
APT prefers stable-updates
APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500, 'stable-debug'), (500, 'stable')
Architecture: amd64 (x86_64)
Kernel: Linux 6.7.8 (SMP w/16 CPU threads; PREEMPT)
Locale: LANG=en_DK.UTF-8, LC_CTYPE=en_DK.UTF-8 (charmap=UTF-8), LANGUAGE=en_NO:en_DK:en_US:en_GB:en
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
Versions of packages python3-xapian-haystack depends on:
ii python3 3.11.2-1+b1
ii python3-django-haystack 3.2.1-1
ii python3-xapian 1.4.22-1
python3-xapian-haystack recommends no packages.
python3-xapian-haystack suggests no packages.
-- no debconf information
-- debsums errors found:
debsums: changed file /usr/lib/python3/dist-packages/xapian_backend.py (from python3-xapian-haystack package)
--- xapian_backend.py 2017-05-18 08:50:23.000000000 +0200
+++ /usr/lib/python3/dist-packages/xapian_backend.py 2024-03-12 01:06:33.011301452 +0100
@@ -7,7 +7,6 @@
import shutil
import sys
-from django.utils import six
from django.conf import settings
from django.core.exceptions import ImproperlyConfigured
from django.utils.encoding import force_text
@@ -346,7 +345,7 @@
def _get_ngram_lengths(value):
values = value.split()
for item in values:
- for ngram_length in six.moves.range(NGRAM_MIN_LENGTH, NGRAM_MAX_LENGTH + 1):
+ for ngram_length in range(NGRAM_MIN_LENGTH, NGRAM_MAX_LENGTH + 1):
yield item, ngram_length
for obj in iterable:
@@ -356,8 +355,8 @@
def ngram_terms(value):
for item, length in _get_ngram_lengths(value):
item_length = len(item)
- for start in six.moves.range