def __init__(self, *args, outputs=None, inputs=None, implicit_inputs=None, orderonly_inputs=None): nargs = len(args) if nargs > 0 and outputs is not None: raise TypeError("cannot mix positional and keyword outputs") if nargs > 1 and inputs is not None: raise TypeError("cannot mix positional and keyword inputs") if nargs == 0: self._init_io(outputs=outputs, inputs=inputs) elif nargs == 1: if outputs is not None: raise TypeError("cannot mix positional and keyword outputs") self._init_io(outputs=args[0], inputs=inputs) else: if inputs is not None: raise TypeError("cannot mix positional and keyword inputs") self._init_io(outputs=args[0], inputs=args[1:]) self._implicit_inputs = tuple(as_flat_list(implicit_inputs)) self._orderonly_inputs = tuple(as_flat_list(orderonly_inputs)) if not self._outputs: raise ValueError("phony object with no outputs")
def test_complex_rec(self): self.assertEqual(as_flat_list([[["a"], "b"], ["c", [["d"]]]]), ["a", "b", "c", "d"])
def test_singleton_list3(self): self.assertEqual(as_flat_list([[["foo"]]]), ["foo"])
def test_frozenset(self): self.assertCountEqual(as_flat_list(frozenset(("foo", "bar"))), ["foo", "bar"])
def test_tuple(self): self.assertEqual(as_flat_list(("foo", "bar")), ["foo", "bar"])
def test_list(self): self.assertEqual(as_flat_list(["foo", "bar"]), ["foo", "bar"])
def test_singleton(self): self.assertEqual(as_flat_list("foo"), ["foo"])
def test_none(self): self.assertEqual(as_flat_list(None), [])
def _init_io(self, outputs=None, inputs=None): self._outputs = tuple(as_flat_list(outputs)) self._inputs = tuple(as_flat_list(inputs))
def __init__(self, *targets): self._targets = tuple(as_flat_list(targets))
def outputs(self): """Return all the explicit output file names of this command.""" return as_flat_list(self.output_placeholders.values())
def formatter(self): return " ".join(shquote(as_flat_list(getattr(self, name))))