Re: [galaxy-dev] Difficulties using repeat tagset with min attribute

2013-05-08 Thread Peter Cock
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 

Re: [galaxy-dev] Difficulties using repeat tagset with min attribute

2013-05-08 Thread Peter Cock
On Wed, May 8, 2013 at 5:40 PM, Peter Cock p.j.a.c...@googlemail.com wrote:
 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'
 ...
 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.

Progress, this works (no min value):

  repeat name=identifiers title=Tabular file(s) with sequence identifiers
param name=input_tabular type=data format=tabular
label=Tabular file containing sequence identifiers/
 param name=columns type=data_column data_ref=input_tabular
multiple=True numerical=False
   label=Column(s) containing sequence identifiers
   help=Multi-select list - hold the appropriate key
while clicking to select multiple columns
   validator type=no_options message=Pick at least one column/
 /param
   /repeat

This also work - using a min value for the repeat, but removing the
data_column parameter,

  repeat name=identifiers title=Tabular file(s) with sequence identifiers
param name=input_tabular type=data format=tabular
label=Tabular file containing sequence identifiers/
   /repeat

However what I want to use fails:

  repeat name=identifiers title=Tabular file(s) with sequence
identifiers min=1
param name=input_tabular type=data format=tabular
label=Tabular file containing sequence identifiers/
 param name=columns type=data_column data_ref=input_tabular
multiple=True numerical=False
   label=Column(s) containing sequence identifiers
   help=Multi-select list - hold the appropriate key
while clicking to select multiple columns
   validator type=no_options message=Pick at least one column/
 /param
   /repeat

So something bad is happening with the initial population of the first repeat
value (triggered by using min=1) from the data_column parameter.

I would guess Cory's example also used a non-trivial parameter type.

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/