docs: def eval_components(self, *args, **kwargs):
          """
          :return: evaluated lambda functions of each of the components in
              model_dict, to be used in numerical calculation.
          """
          bound_arguments = self.__signature__.bind(*args, **kwargs)
          kwargs = bound_arguments.arguments  # Only work with kwargs
          components = dict(zip(self, self.numerical_components))
          # Evaluate the variables in topological order.
          for symbol in self.ordered_symbols:
              if symbol.name not in kwargs:
                  dependencies = self.connectivity_mapping[symbol]
                  dependencies_kwargs = {d.name: kwargs[d.name]
                                         for d in dependencies}
                  kwargs[symbol.name] = components[symbol](**dependencies_kwargs)
  
          return [np.atleast_1d(kwargs[var.name]) for var in self]