Opened 12 years ago
Closed 8 years ago
#10677 closed defect (wontfix)
KeyError: ('add_domain', '_', 'N_', 'tag_')
Reported by: | Ryan J Ollos | Owned by: | |
---|---|---|---|
Priority: | normal | Component: | AnnouncerPlugin |
Severity: | normal | Keywords: | i18n compatibility |
Cc: | Trac Release: | 0.11 |
Description
When running the unit tests again r8130 of the trunk (which fail for other reasons such as Trac database compatibility), I see the following traceback:
Traceback (most recent call last): File "setup.py", line 87, in <module> **extra File "/usr/lib/python2.7/distutils/core.py", line 152, in setup dist.run_commands() File "/usr/lib/python2.7/distutils/dist.py", line 953, in run_commands self.run_command(cmd) File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command cmd_obj.run() File "/home/user/Workspace/th9110-r8130/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/test.py", line 137, in run self.with_project_on_sys_path(self.run_tests) File "/home/user/Workspace/th9110-r8130/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/test.py", line 117, in with_project_on_sys_path func() File "/home/user/Workspace/th9110-r8130/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/test.py", line 146, in run_tests testLoader = loader_class() File "/usr/lib/python2.7/unittest/main.py", line 94, in __init__ self.parseArgs(argv) File "/usr/lib/python2.7/unittest/main.py", line 149, in parseArgs self.createTests() File "/usr/lib/python2.7/unittest/main.py", line 158, in createTests self.module) File "/usr/lib/python2.7/unittest/loader.py", line 128, in loadTestsFromNames suites = [self.loadTestsFromName(name, module) for name in names] File "/usr/lib/python2.7/unittest/loader.py", line 91, in loadTestsFromName module = __import__('.'.join(parts_copy)) File "/home/user/Workspace/announcerplugin.git/announcer/tests/__init__.py", line 24, in <module> from announcer.tests import ( File "/home/user/Workspace/announcerplugin.git/announcer/tests/api.py", line 20, in <module> from announcer.api import AnnouncementSystem, AnnouncementEvent File "/home/user/Workspace/announcerplugin.git/announcer/api.py", line 351, in <module> domain_functions('announcer', ('add_domain', '_', 'N_', 'tag_')) File "/home/user/Workspace/th9110-r8130/trac-trunk-r8130/trac/util/translation.py", line 91, in domain_functions return [_functions[s] for s in symbols] KeyError: ('add_domain', '_', 'N_', 'tag_')
The fix appears to be:
-
announcer/api.py
diff --git a/announcer/api.py b/announcer/api.py index 69d315b..3c4b1e0 100644
a b def istrue(value, otherwise=False): 348 348 try: 349 349 from trac.util.translation import domain_functions 350 350 add_domain, _, N_ , tag_= \ 351 domain_functions('announcer', ('add_domain', '_', 'N_', 'tag_'))351 domain_functions('announcer', 'add_domain', '_', 'N_', 'tag_') 352 352 except ImportError: 353 353 from genshi.builder import tag as tag_ 354 354 from trac.util.translation import gettext
It looks like the reason there is not an error in later versions of Trac is the addition to the top of the function to handle a tuple argument:
if symbols and not isinstance(symbols[0], basestring): symbols = symbols[0]
So the modification to the function call may only be necessary for Trac 0.11 compatibility.
Attachments (0)
Change History (4)
comment:1 Changed 12 years ago by
Keywords: | i18n compatibility added |
---|
comment:2 Changed 12 years ago by
Since you are in a try/except
, you might be able to deal with the issue by catching KeyError
. I briefly tried that and it wasn't working, but didn't dig deeper in why I was running into problems.
comment:3 Changed 8 years ago by
Owner: | Steffen Hoffmann deleted |
---|
comment:4 Changed 8 years ago by
Resolution: | → wontfix |
---|---|
Status: | new → closed |
Wontfix since this is a 0.11 compatibility issue.
I remember that change being made, and the new tuple form becoming the recommended invocation.
For Trac 0.11 this shouldn't be an issue, because all i18n is >= 0.12 only. Anyway, I'll have a look at it and deal with this issue after back-porting db API.