On Thu, May 3, 2012 at 12:20 AM, Cory Spencer <cspencer(a)sprocket.org> wrote:
Hi all -
I've been trying to get the <repeat>...</repeat> tag working with a min
attribute for
some time now, though without any success. It works in other tools distributed
with Galaxy, but when I attempt to use it in one of our custom tools, it dies with
a "AttributeError: 'ExpressionContext' object has no attribute
'keys'" exception.
Can anybody offer any insight?
The full traceback is:
⇝ AttributeError: 'ExpressionContext' object has no attribute 'keys'
URL:
http://localhost:8080/tool_runner?tool_id=scde-list-compare
Module weberror.evalexception.middleware:364 in respond view
> app_iter = self.application(environ, detect_start_response)
Module paste.debug.prints:98 in __call__ view
>> environ, self.app)
Module paste.wsgilib:539 in intercept_output view
>> app_iter = application(environ, replacement_start_response)
Module paste.recursive:80 in __call__ view
> return self.application(environ, start_response)
Module paste.httpexceptions:632 in __call__ view
> return self.application(environ, start_response)
Module galaxy.web.framework.base:160 in __call__ view
> body = method( trans, **kwargs )
Module
galaxy.web.controllers.tool_runner:68 in index view
> template, vars = tool.handle_input( trans, params.__dict__ )
Module galaxy.tools:1320 in handle_input view
> state = self.new_state( trans )
Module
galaxy.tools:1248 in new_state view
> self.fill_in_new_state( trans, inputs, state.inputs )
Module galaxy.tools:1257 in fill_in_new_state view
> state[ input.name ] = input.get_initial_value( trans, context )
Module galaxy.tools.parameters.grouping:100 in get_initial_value view
> rval_dict[ input.name ] = input.get_initial_value( trans,
context )
Module galaxy.tools.parameters.basic:1016 in get_initial_value
view
> return SelectToolParameter.get_initial_value( self, trans,
context )
Module galaxy.tools.parameters.basic:785 in get_initial_value
view
> if self.need_late_validation( trans, context ):
Module galaxy.tools.parameters.basic:1022 in need_late_validation view
> if super( ColumnListParameter, self ).need_late_validation(
trans, context ):
Module galaxy.tools.parameters.basic:766 in
need_late_validation view
> for layer in context.itervalues():
Module
UserDict:116 in itervalues view
> for _, v in self.iteritems():
Module UserDict:109 in
iteritems view
> for k in self:
Module UserDict:96 in __iter__
view
> for k in self.keys():
AttributeError:
'ExpressionContext' object has no attribute 'keys'
Hi Cory,
Do you remember if you could solve this? I've used <repeat> a few times
even with a min value, but just hit the same issue as you:
⇝ AttributeError: 'ExpressionContext' object has no attribute 'keys'
URL:
http://localhost/galaxy-dev/tool_runner?tool_id=seq_filter_by_id
Module weberror.evalexception.middleware:364 in respond view
> app_iter = self.application(environ, detect_start_response)
Module paste.recursive:84 in __call__ view
> return self.application(environ, start_response)
Module
paste.httpexceptions:633 in __call__ view
> return self.application(environ, start_response)
Module
galaxy.web.framework.base:132 in __call__ view
> return self.handle_request( environ, start_response )
Module galaxy.web.framework.base:190 in handle_request view
> body = method( trans, **kwargs )
Module
galaxy.webapps.galaxy.controllers.tool_runner:82 in index view
> template, vars = tool.handle_input( trans, params.__dict__ )
Module galaxy.tools:1882 in handle_input view
> state = self.new_state( trans )
Module galaxy.tools:1810
in new_state view
> self.fill_in_new_state( trans, inputs, state.inputs )
Module galaxy.tools:1819 in fill_in_new_state view
> state[ input.name ] = input.get_initial_value( trans, context )
Module galaxy.tools.parameters.grouping:104 in get_initial_value view
> rval_dict[ input.name ] = input.get_initial_value( trans,
context )
Module galaxy.tools.parameters.basic:1042 in get_initial_value
view
> return SelectToolParameter.get_initial_value( self, trans,
context )
Module galaxy.tools.parameters.basic:808 in get_initial_value
view
> if self.need_late_validation( trans, context ):
Module
galaxy.tools.parameters.basic:1048 in need_late_validation view
> if super( ColumnListParameter, self ).need_late_validation(
trans, context ):
Module galaxy.tools.parameters.basic:789 in need_late_validation
view
> for layer in context.itervalues():
Module UserDict:116 in
itervalues view
> for _, v in self.iteritems():
Module UserDict:109 in
iteritems view
> for k in self:
Module UserDict:96 in __iter__
view
> for k in self.keys():
AttributeError:
'ExpressionContext' object has no attribute 'keys'
I see this when trying to access the tool via the normal Galaxy web interface,
and when running the tool's unit tests. Removing the min="1" value
'fixes' this,
but I do want at least one entry.
The tool in question is here:
https://bitbucket.org/peterjc/galaxy-central/commits/806d9526d5e846933bb0...
On the off chance I was using a special value as the repeat name, I tried
changing that - no difference.
Thanks,
Peter