code: def direction(self, rf='', v0='0..', v1='90..', off=None):
          
          loc = {'type': 'direction', 'refer': rf}
          loc['m0'] = dq.quantity(v0)
          loc['m1'] = dq.quantity(v1)
          if is_measure(off):
              if not off['type'] == "direction":
                  raise TypeError('Illegal offset type specified.')
              loc["offset"] = off
          return self.measure(loc, rf)
docs: Defines a direction measure. It has to specify a reference code,
          direction quantity values (see introduction for the action on a
          scalar quantity with either a vector or scalar value, and when a
          vector of quantities is given), and optionally it can specify an
          offset, which in itself has to be a direction.
  
          :param rf: reference code string; allowable reference codes are:
                     J2000 JMEAN  JTRUE APP B1950 BMEAN BTRUE GALACTIC HADEC
                     AZEL SUPERGAL ECLIPTIC MECLIPTIC TECLIPTIC MERCURY VENUS
                     MARS JUPITER SATURN URANUS NEPTUNE PLUTO MOON SUN COMET.
                     Note that additional ones may become available. Check with::
  
                         dm.list_codes(dm.direction())
  
          :param v0, v1: Direction quantity values should be
                         longitude (angle) and latitude (angle) or strings
                         parsable by :func:`~casacore.quanta.quantity`.
                         None are needed for planets: the frame epoch defines
                         coordinates. See :func:`~casacore.quanta.quantity` for
                         possible angle formats.
          :param off: an optional offset measure of same type
  
          Example::
  
              >>> dm.direction('j2000','30deg','40deg')
              >>> dm.direction('mars')