Modify ↓
Opened 18 years ago
Closed 18 years ago
#2147 closed defect (fixed)
UnboundLocalError: local variable 'impl' referenced before assignment
| Reported by: | anonymous | Owned by: | Alec Thomas |
|---|---|---|---|
| Priority: | normal | Component: | TracDeveloperPlugin |
| Severity: | major | Keywords: | |
| Cc: | Trac Release: | 0.11 |
Description
(FYI, environment: Debian 4.0, sid; trac 0.11dev r6083)
I received the following error when I followed the "Plugins" link immediately after install:
Traceback (most recent call last):
File "/var/lib/python-support/python2.5/trac/web/main.py", line 381, in dispatch_request
dispatcher.dispatch(req)
File "/var/lib/python-support/python2.5/trac/web/main.py", line 191, in dispatch
resp = chosen_handler.process_request(req)
File "/var/lib/python-support/python2.5/trac/admin/web_ui.py", line 108, in process_request
path_info)
File "/var/lib/python-support/python2.5/tracdeveloper/plugins.py", line 22, in render_admin_panel
data = self.get_api(req)
File "/var/lib/python-support/python2.5/tracdeveloper/plugins.py", line 71, in get_api
interface_methods = [m['name'] for i in impl for m in i['methods']]
UnboundLocalError: local variable 'impl' referenced before assignment
I'm not sure if this is a fix or a workaround, as I just barely looked at the code. In any case, the below patch fixes the problem without causing any apparent problems (yet).
--- plugins.py.orig 2007-11-03 00:19:53.335412857 -0400
+++ plugins.py 2007-11-03 00:10:11.300490812 -0400
@@ -68,14 +68,15 @@
if hasattr(component, '_implements'):
impl = [interfaces['%s.%s' % (i.__module__, i.__name__)]
for i in component._implements]
- interface_methods = [m['name'] for i in impl for m in i['methods']]
+ interface_methods = [m['name'] for i in impl for m in i['methods']]
+ data['implements'] = impl
+ for imp in impl:
+ imp['implemented_by'].append(data)
+
methods = self.extract_methods(req, component, interface_methods)
data = self.base_data(req, component)
data['extensionpoints'] = self.extension_points(req, component)
- data['implements'] = impl
data['methods'] = methods
- for imp in impl:
- imp['implemented_by'].append(data)
components[data['name']] = data
api['components'] = components
return api
Attachments (0)
Note: See
TracTickets for help on using
tickets.



Fixed in r2737, thanks.