Skip to content

Allow HistoryManager to start in standalone mode, fix gajim.gui.emoji_data module not found error

  • OS: Gentoo
  • Gajim version: 1.3.2
  • GTK version: 3.24.26
  • Python-nbxmpp version: 2.0.2

Fixes the following error when starting gajim-history-manager:

ModuleNotFoundError: No module named 'gajim.gui.emoji_data'

Fixes test_gui_interface failure for the same reason as above (see #10478 (closed)).

The real import for the module emoji_data is gajim.gtk.emoji_data, rather than gajim.gui.emoji_data. Due to this, before importing gajim.gui.<module> it's required the following initialization:

import gajim.gui
gajim.gui.init('gtk')

Another solution could be to fix gajim/common/regex.py and all the alikes, changing gajim.gui into gajim.gtk...

$ gajim-history-manager
...
No translations found
Dirs searched: [PosixPath('/home/<user>/.local/share'), PosixPath('/usr/local/share'), PosixPath('/usr/share')]
Traceback (most recent call last):
  File "/usr/bin/gajim-history-manager", line 33, in <module>
    sys.exit(load_entry_point('gajim==1.3.2', 'gui_scripts', 'gajim-history-manager')())
  File "/usr/bin/gajim-history-manager", line 25, in importlib_load_entry_point
    return next(matches).load()
  File "/usr/lib/python3.8/importlib/metadata.py", line 77, in load
    module = import_module(match.group('module'))
  File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
   return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 783, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/usr/lib/python3.8/site-packages/gajim/history_manager.py", line 58, in <module>
    from gajim.common.settings import Settings
  File "/usr/lib/python3.8/site-packages/gajim/common/settings.py", line 36, in <module>
    from gajim.common.helpers import get_muc_context
  File "/usr/lib/python3.8/site-packages/gajim/common/helpers.py", line 84, in <module>
    from gajim.common.regex import INVALID_XML_CHARS_REGEX
  File "/usr/lib/python3.8/site-packages/gajim/common/regex.py", line 76, in <module>
    EMOT_AND_LINK_REGEX = re.compile(_get_emot_and_basic_pattern(False),
  File "/usr/lib/python3.8/site-packages/gajim/common/regex.py", line 58, in _get_emot_and_basic_pattern
    from gajim.gui.emoji_data import emoji_data
ModuleNotFoundError: No module named 'gajim.gui.emoji_data'
$ python setup.py test
...
======================================================================
ERROR: test_gui_interface (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: test_gui_interface
Traceback (most recent call last):
  File "/usr/lib/python3.8/unittest/loader.py", line 154, in loadTestsFromName
    module = __import__(module_name)
  File "/var/tmp/portage/net-im/gajim-1.3.2/work/gajim-1.3.2/test/unit/test_gui_interface.py", line 7, in <module>
    lib.setup_env()
  File "/var/tmp/portage/net-im/gajim-1.3.2/work/gajim-1.3.2/test/lib/__init__.py", line 45, in setup_env
    from gajim.application import GajimApplication
  File "/var/tmp/portage/net-im/gajim-1.3.2/work/gajim-1.3.2/gajim/application.py", line 57, in <module>
    from gajim.common.storage.archive import MessageArchiveStorage
  File "/var/tmp/portage/net-im/gajim-1.3.2/work/gajim-1.3.2/gajim/common/storage/archive.py", line 34, in <module>
    from gajim.common.helpers import AdditionalDataDict
  File "/var/tmp/portage/net-im/gajim-1.3.2/work/gajim-1.3.2/gajim/common/helpers.py", line 84, in <module>
    from gajim.common.regex import INVALID_XML_CHARS_REGEX
  File "/var/tmp/portage/net-im/gajim-1.3.2/work/gajim-1.3.2/gajim/common/regex.py", line 76, in <module>
    EMOT_AND_LINK_REGEX = re.compile(_get_emot_and_basic_pattern(False),
  File "/var/tmp/portage/net-im/gajim-1.3.2/work/gajim-1.3.2/gajim/common/regex.py", line 58, in _get_emot_and_basic_pattern
    from gajim.gui.emoji_data import emoji_data
ModuleNotFoundError: No module named 'gajim.gui.emoji_data'
...

Merge request reports