#82 Python directive: infinite recursion when calling a method with a list argument
Closed: Fixed None Opened 9 years ago by kparal.

I tried to execute the python directive with this yaml file:

---
name: upgradepath
desc: Check pending builds in a specific Koji tag for an upgrade path 
  conformance.
maintainer: kparal

input:
    args: tag

environment:
    rpm:
        - libtaskotron

task:
    - name: run upgradepath
      python:
          file: upgradepath.py
          callable: main
          custom_args:
              - "--debug"
              - "{{ tag }}"
      export: upgradepath_output

Please note custom_args, that's supposed to be a list of strings. My impression was that it would call:

import upgradepath
upgradepath.main(custom_args=['--debug', 'TAG'])

But I received this:

$ runtask -i f20-updates -t koji_tag upgradepath.yaml 
[libtaskotron:logger.py:63] 2014-04-29 12:49:19 DEBUG   doing stream logging
[libtaskotron:logger.py:34] 2014-04-29 12:49:19 CRITICAL Traceback (most recent call last):
  File "/home/kparal/devel/taskotron/env_taskotron/bin/runtask", line 9, in <module>
    load_entry_point('libtaskotron==0.0.3', 'console_scripts', 'runtask')()
  File "/home/kparal/devel/taskotron/libtaskotron/libtaskotron/runner.py", line 184, in main
    task_runner.run()
  File "/home/kparal/devel/taskotron/libtaskotron/libtaskotron/runner.py", line 33, in run
    self.do_actions()
  File "/home/kparal/devel/taskotron/libtaskotron/libtaskotron/runner.py", line 107, in do_actions
    self.do_single_action(action)
  File "/home/kparal/devel/taskotron/libtaskotron/libtaskotron/runner.py", line 86, in do_single_action
    rendered_action = self._render_action(action)
  File "/home/kparal/devel/taskotron/libtaskotron/libtaskotron/runner.py", line 69, in _render_action
    arg_template = jinja_env.from_string(input_action)
  File "/home/kparal/.local/lib/python2.7/site-packages/jinja2/environment.py", line 841, in from_string
    return cls.from_code(self, self.compile(source), globals, None)
  File "/home/kparal/.local/lib/python2.7/site-packages/jinja2/environment.py", line 542, in compile
    source = optimize(source, self)
  File "/home/kparal/.local/lib/python2.7/site-packages/jinja2/optimizer.py", line 27, in optimize
    return optimizer.visit(node)
  File "/home/kparal/.local/lib/python2.7/site-packages/jinja2/visitor.py", line 38, in visit
    return f(node, *args, **kwargs)
  File "/home/kparal/.local/lib/python2.7/site-packages/jinja2/visitor.py", line 84, in visit_list
    rv = self.visit(node, *args, **kwargs)
  File "/home/kparal/.local/lib/python2.7/site-packages/jinja2/visitor.py", line 38, in visit
    return f(node, *args, **kwargs)
  File "/home/kparal/.local/lib/python2.7/site-packages/jinja2/visitor.py", line 84, in visit_list
    rv = self.visit(node, *args, **kwargs)
  File "/home/kparal/.local/lib/python2.7/site-packages/jinja2/visitor.py", line 38, in visit
    return f(node, *args, **kwargs)
  File "/home/kparal/.local/lib/python2.7/site-packages/jinja2/visitor.py", line 84, in visit_list
    rv = self.visit(node, *args, **kwargs)
<snip (another few hundreds of the same lines)>
  File "/home/kparal/.local/lib/python2.7/site-packages/jinja2/visitor.py", line 38, in visit
    return f(node, *args, **kwargs)
  File "/home/kparal/.local/lib/python2.7/site-packages/jinja2/visitor.py", line 84, in visit_list
    rv = self.visit(node, *args, **kwargs)
  File "/home/kparal/.local/lib/python2.7/site-packages/jinja2/visitor.py", line 38, in visit
    return f(node, *args, **kwargs)
  File "/home/kparal/.local/lib/python2.7/site-packages/jinja2/visitor.py", line 84, in visit_list
    rv = self.visit(node, *args, **kwargs)
RuntimeError: maximum recursion depth exceeded while calling a Python object

I'm not sure we support list arguments (it would be nice if it worked), but at least let's not crash.


This ticket had assigned some Differential requests:
D108

Login to comment on this ticket.

Metadata