code: def get_ephemeris(self, component=None, t0='t0_supconj', **kwargs):
          
  
          if component is None:
              component = self.hierarchy.get_top()
  
          if kwargs.get('shift', False):
              raise ValueError("support for phshift was removed as of 2.1.  Please pass t0 instead.")
  
          ret = {}
  
          ps = self.filter(component=component, context='component')
  
          if ps.kind in ['orbit']:
              ret['period'] = ps.get_value(qualifier='period', unit=u.d)
              if isinstance(t0, str):
                  ret['t0'] = ps.get_value(qualifier=t0, unit=u.d)
              elif isinstance(t0, float) or isinstance(t0, int):
                  ret['t0'] = t0
              else:
                  raise ValueError("t0 must be string (qualifier) or float")
              ret['dpdt'] = ps.get_value(qualifier='dpdt', unit=u.d/u.d)
          elif ps.kind in ['star']:
              # TODO: consider renaming period to prot
              ret['period'] = ps.get_value(qualifier='period', unit=u.d)
          else:
              raise NotImplementedError
  
          for k,v in kwargs.items():
              ret[k] = v
  
          return ret
docs: Get the ephemeris of a component (star or orbit)
  
          :parameter str component: name of the component.  If not given,
              component will default to the top-most level of the current
              hierarchy
          :parameter t0: qualifier of the parameter to be used for t0
          :type t0: str
          :parameter **kwargs: any value passed through kwargs will override the
              ephemeris retrieved by component (ie period, t0, dpdt).
              Note: be careful about units - input values will not be converted.
          :return: dictionary containing period, t0 (t0_supconj if orbit),
              dpdt (as applicable)
          :rtype: dict