code: def set_defaults(self, *args, **kwargs):
          '''
          node.set_defaults(a=b...) yields a new calculation node identical to the given node except
          with the default values matching the given key-value pairs. Arguments are collapsed left-to
          right with later arguments overwriting earlier arguments.
          '''
          args = merge(self.defaults, args, kwargs)
          new_cnode = copy.copy(self)
          object.__setattr__(new_cnode, 'defaults', ps.pmap(args))
          return new_cnodf set_defaults(self, *args, **kwargs):
          '''
          node.set_defaults(a=b...) yields a new calculation node identical to the given node except
          with the default values matching the given key-value pairs. Arguments are collapsed left-to
          right with later arguments overwriting earlier arguments.
          '''
          args = merge(self.defaults, args, kwargs)
          new_cnode = copy.copy(self)
          object.__setattr__(new_cnode, 'defaults', ps.pmap(args))
          return new_cnode
docs: node.set_defaults(a=b...) yields a new calculation node identical to the given node except
          with the default values matching the given key-value pairs. Arguments are collapsed left-to
          right with later arguments overwriting earlier arguments.