On Thu, May 3, 2012 at 12:20 AM, Cory Spencer <cspen...@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/806d9526d5e846933bb02c9d3efb8ccc398609f4

On the off chance I was using a special value as the repeat name, I tried
changing that - no difference.

Thanks,

Peter

___________________________________________________________
Please keep all replies on the list by using "reply all"
in your mail client.  To manage your subscriptions to this
and other Galaxy lists, please use the interface at:
  http://lists.bx.psu.edu/

To search Galaxy mailing lists use the unified search at:
  http://galaxyproject.org/search/mailinglists/

Reply via email to