﻿id	summary	reporter	owner	description	type	status	priority	component	severity	resolution	keywords	cc	release
10677	KeyError: ('add_domain', '_', 'N_', 'tag_')	rjollos	hasienda	"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:
{{{
#!patch
diff --git a/announcer/api.py b/announcer/api.py
index 69d315b..3c4b1e0 100644
--- a/announcer/api.py
+++ b/announcer/api.py
@@ -348,7 +348,7 @@ def istrue(value, otherwise=False):
 try:
     from trac.util.translation import domain_functions
     add_domain, _, N_ , tag_= \
-        domain_functions('announcer', ('add_domain', '_', 'N_', 'tag_'))
+        domain_functions('announcer', 'add_domain', '_', 'N_', 'tag_')
 except ImportError:
     from  genshi.builder         import  tag as tag_
     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:
{{{
#!python
    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."	defect	new	normal	AnnouncerPlugin	normal		i18n compatibility		0.11
