pymel.util.arguments.iterateArgs

iterateArgs(*args, **kwargs)

Iterates through all arguments list: recursively replaces any iterable argument in *args by a tuple of its elements that will be inserted at its place in the returned arguments.

By default will return elements depth first, from root to leaves. Set postorder or breadth to control order.

Keywords:
depth : int

will specify the nested depth limit after which iterables are returned as they are

type

for type=’list’ will only expand lists, by default type=’all’ expands any iterable sequence

postorder : bool

will return elements depth first, from leaves to roots

breadth : bool

will return elements breadth first, roots, then first depth level, etc.

For a nested list represent trees:

a____b____c
|    |____d
e____f
|____g

preorder(default) :

>>> tuple(k for k in iterateArgs( 'a', ['b', ['c', 'd']], 'e', ['f', 'g'], limit=1 ))
('a', 'b', ['c', 'd'], 'e', 'f', 'g')
>>> tuple(k for k in iterateArgs( 'a', ['b', ['c', 'd']], 'e', ['f', 'g'] ))
('a', 'b', 'c', 'd', 'e', 'f', 'g')

postorder :

>>> tuple(k for k in iterateArgs( 'a', ['b', ['c', 'd']], 'e', ['f', 'g'], postorder=True, limit=1 ))
('b', ['c', 'd'], 'a', 'f', 'g', 'e')
>>> tuple(k for k in iterateArgs( 'a', ['b', ['c', 'd']], 'e', ['f', 'g'], postorder=True))
('c', 'd', 'b', 'a', 'f', 'g', 'e')

breadth :

>>> tuple(k for k in iterateArgs( 'a', ['b', ['c', 'd']], 'e', ['f', 'g'], limit=1, breadth=True))
('a', 'e', 'b', ['c', 'd'], 'f', 'g')
>>> tuple(k for k in iterateArgs( 'a', ['b', ['c', 'd']], 'e', ['f', 'g'], breadth=True))
('a', 'e', 'b', 'f', 'g', 'c', 'd')

Note that with default depth (-1 for unlimited) and order (preorder), if passed a pymel Tree result will be the equivalent of using a preorder iterator : iter(theTree)