trac-1 | Traceback (most recent call last): trac-1 | File "/usr/local/lib/python3.13/site-packages/trac/web/main.py", line 266, in dispatch trac-1 | req.send(output, content_type or 'text/html') trac-1 | ~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ trac-1 | File "/usr/local/lib/python3.13/site-packages/trac/web/api.py", line 875, in send trac-1 | self._send(content, content_type, status) trac-1 | ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ trac-1 | File "/usr/local/lib/python3.13/site-packages/trac/web/api.py", line 1011, in _send trac-1 | self.write(content) trac-1 | ~~~~~~~~~~^^^^^^^^^ trac-1 | File "/usr/local/lib/python3.13/site-packages/trac/web/api.py", line 969, in write trac-1 | for chunk in data: trac-1 | ^^^^ trac-1 | File "/usr/local/lib/python3.13/site-packages/trac/web/chrome.py", line 1569, in iterable_content trac-1 | for chunk in stream: trac-1 | ^^^^^^ trac-1 | File "/usr/local/lib/python3.13/site-packages/jinja2/environment.py", line 1670, in __next__ trac-1 | return self._next() # type: ignore trac-1 | ~~~~~~~~~~^^ trac-1 | File "/usr/local/lib/python3.13/site-packages/jinja2/environment.py", line 1647, in _buffered_generator trac-1 | c = next(self._gen) trac-1 | File "/usr/local/lib/python3.13/site-packages/jinja2/environment.py", line 1357, in generate trac-1 | yield self.environment.handle_exception() trac-1 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ trac-1 | File "/usr/local/lib/python3.13/site-packages/jinja2/environment.py", line 939, in handle_exception trac-1 | raise rewrite_traceback_stack(source=source) trac-1 | File "/usr/local/lib/python3.13/site-packages/trac/ticket/templates/ticket.html", line 12, in top-level template code trac-1 | # extends 'layout.html' trac-1 | File "/usr/local/lib/python3.13/site-packages/trac/templates/layout.html", line 12, in top-level template code trac-1 | # import "macros.html" as jmacros with context trac-1 | File "/usr/local/lib/python3.13/site-packages/trac/templates/theme.html", line 22, in top-level template code trac-1 | # block body trac-1 | File "/usr/local/lib/python3.13/site-packages/trac/templates/theme.html", line 130, in block 'body' trac-1 | # block content trac-1 | File "/usr/local/lib/python3.13/site-packages/trac/ticket/templates/ticket.html", line 159, in block 'content' trac-1 | # include 'ticket_box.html' trac-1 | File "/usr/local/lib/python3.13/site-packages/trac/ticket/templates/ticket_box.html", line 212, in top-level template code trac-1 | ${wiki_to_html(context, ticket.description, trac-1 | ^^^^^^^^^^^^^^^^^ trac-1 | File "/usr/local/lib/python3.13/site-packages/trac/wiki/formatter.py", line 1625, in format_to_html trac-1 | return HtmlFormatter(env, context, wikidom).generate(escape_newlines) trac-1 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^ trac-1 | File "/usr/local/lib/python3.13/site-packages/trac/wiki/formatter.py", line 1579, in generate trac-1 | Formatter(self.env, self.context).format(self.wikidom, out, trac-1 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^ trac-1 | escape_newlines) trac-1 | ^^^^^^^^^^^^^^^^ trac-1 | File "/usr/local/lib/python3.13/site-packages/trac/wiki/formatter.py", line 1362, in format trac-1 | result = re.sub(self.wikiparser.rules, self.replace, line) trac-1 | File "/usr/local/lib/python3.13/re/__init__.py", line 208, in sub trac-1 | return _compile(pattern, flags).sub(repl, string, count) trac-1 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ trac-1 | File "/usr/local/lib/python3.13/site-packages/trac/wiki/formatter.py", line 1277, in replace trac-1 | replacement = self.handle_match(fullmatch) trac-1 | File "/usr/local/lib/python3.13/site-packages/trac/wiki/formatter.py", line 1273, in handle_match trac-1 | return internal_handler(match, fullmatch) trac-1 | File "/usr/local/lib/python3.13/site-packages/trac/wiki/formatter.py", line 628, in _shref_formatter trac-1 | return self._make_link(ns, target, match, match, fullmatch) trac-1 | ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ trac-1 | File "/usr/local/lib/python3.13/site-packages/trac/wiki/formatter.py", line 678, in _make_link trac-1 | return resolver(self, ns, target, escape(label, False), trac-1 | fullmatch) trac-1 | File "/usr/local/lib/python3.13/site-packages/tractags/wiki.py", line 389, in _format_tagged trac-1 | not iter_is_empty(self.tag_system.query(formatter.req, trac-1 | ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ trac-1 | query))): trac-1 | ^^^^^^^ trac-1 | File "/usr/local/lib/python3.13/site-packages/tractags/wiki.py", line 404, in iter_is_empty trac-1 | next_iter(i) trac-1 | ~~~~~~~~~^^^ trac-1 | File "/usr/local/lib/python3.13/site-packages/tractags/wiki.py", line 44, in next_iter trac-1 | return next(i) trac-1 | File "/usr/local/lib/python3.13/site-packages/tractags/api.py", line 264, in query trac-1 | query = Query(query, attribute_handlers=all_attribute_handlers) trac-1 | File "/usr/local/lib/python3.13/site-packages/tractags/query.py", line 172, in __init__ trac-1 | root = self.parse(tokens) trac-1 | File "/usr/local/lib/python3.13/site-packages/tractags/query.py", line 194, in parse trac-1 | raise InvalidQuery(_("Attribute must be a word")) trac-1 | InvalidQuery: Attribute must be a word