Loading graph.py +3 −1 Original line number Diff line number Diff line Loading @@ -38,8 +38,10 @@ def gen_targets(params, tag): print("While formatting %s in %s:"%(var, tag)) raise e for n in eval(r, {}, {}): fmt = {} dict_merge(fmt, params) for ttype, tgt in params['loop'][tgtname].items(): fmt = {var: n} fmt[var] = n yield ttype, tgt.format(**fmt) # Determine if dirname / tname must be generated by pmake Loading rules.py +8 −9 Original line number Diff line number Diff line Loading @@ -96,7 +96,7 @@ class Rule: par = {} dict_merge(par, self.defaults) dict_merge(par, self.params) format_dict(par, kws, skip=["script", "inp"]) format_dict(par, kws, skip=["script", "loop"]) self.params = par assert 'rulename' in self.params, "Rule subclass must have rulename" assert 'dirname' in kws, "Instantiation must include dirname." Loading Loading @@ -231,23 +231,22 @@ class RuleTypes: " conflicts with earlier target (%s: %s) declared by %s.\n"%(f2,ft,rn)) self.files.append( (f, ftype, rname) ) # Find the rule what produces this output filename def __getitem__(self, fname): for f, ftype, rname in self.files: m = f.match(fname) if m is False: continue params = {} if isinstance(m, tuple): if isinstance(m, tuple): # we match with a param substitution params[m[0]] = m[1] dict_merge(params, self.rules[rname]) # TODO: deal with loop: if "inp" in params and isinstance(params["inp"], dict): format_dict(params["inp"], params) #if "loop" in params and isinstance(params["loop"], dict): # format_dict(params["loop"], params) if isinstance(m, tuple): # substutite outputs like blob.{ext} ~> blob.txt for k, v in params["out"].items(): params["out"][k] = FMatch(v).matched(m[1]) format_dict(params["inp"], params, skip=["loop"]) #if isinstance(m, tuple): # substutite outputs like blob.{ext} ~> blob.txt # for k, v in params["out"].items(): # params["out"][k] = FMatch(v).matched(m[1]) format_dict(params["out"], params, skip=["loop"]) return type(rname, (Rule,), {'params': params, 'varname': f.var}), ftype raise KeyError(fname) Loading Loading
graph.py +3 −1 Original line number Diff line number Diff line Loading @@ -38,8 +38,10 @@ def gen_targets(params, tag): print("While formatting %s in %s:"%(var, tag)) raise e for n in eval(r, {}, {}): fmt = {} dict_merge(fmt, params) for ttype, tgt in params['loop'][tgtname].items(): fmt = {var: n} fmt[var] = n yield ttype, tgt.format(**fmt) # Determine if dirname / tname must be generated by pmake Loading
rules.py +8 −9 Original line number Diff line number Diff line Loading @@ -96,7 +96,7 @@ class Rule: par = {} dict_merge(par, self.defaults) dict_merge(par, self.params) format_dict(par, kws, skip=["script", "inp"]) format_dict(par, kws, skip=["script", "loop"]) self.params = par assert 'rulename' in self.params, "Rule subclass must have rulename" assert 'dirname' in kws, "Instantiation must include dirname." Loading Loading @@ -231,23 +231,22 @@ class RuleTypes: " conflicts with earlier target (%s: %s) declared by %s.\n"%(f2,ft,rn)) self.files.append( (f, ftype, rname) ) # Find the rule what produces this output filename def __getitem__(self, fname): for f, ftype, rname in self.files: m = f.match(fname) if m is False: continue params = {} if isinstance(m, tuple): if isinstance(m, tuple): # we match with a param substitution params[m[0]] = m[1] dict_merge(params, self.rules[rname]) # TODO: deal with loop: if "inp" in params and isinstance(params["inp"], dict): format_dict(params["inp"], params) #if "loop" in params and isinstance(params["loop"], dict): # format_dict(params["loop"], params) if isinstance(m, tuple): # substutite outputs like blob.{ext} ~> blob.txt for k, v in params["out"].items(): params["out"][k] = FMatch(v).matched(m[1]) format_dict(params["inp"], params, skip=["loop"]) #if isinstance(m, tuple): # substutite outputs like blob.{ext} ~> blob.txt # for k, v in params["out"].items(): # params["out"][k] = FMatch(v).matched(m[1]) format_dict(params["out"], params, skip=["loop"]) return type(rname, (Rule,), {'params': params, 'varname': f.var}), ftype raise KeyError(fname) Loading