code: def register_rate_producer(self, rate_name: str, source: Callable[..., pd.DataFrame]=None) -> Pipeline:
          
          return self._value_manager.register_rate_producer(rate_name, source)
docs: Marks a ``Callable`` as the producer of a named rate.
  
          This is a convenience wrapper around ``register_value_producer`` that makes sure
          rate data is appropriately scaled to the size of the simulation time step.
          It is equivalent to ``register_value_producer(value_name, source,
          preferred_combiner=replace_combiner, preferred_post_processor=rescale_post_processor)``
  
          Parameters
          ----------
          rate_name :
              The name of the new dynamic rate pipeline.
          source :
              A callable source for the dynamic rate pipeline.
  
          Returns
          -------
          Callable
              A callable reference to the named dynamic rate pipeline.