code: def set_unit(self, unit):
          
          # accept all core time units
          if unit is None or (isinstance(unit, units.NamedUnit) and
                              unit.physical_type == 'time'):
              self._unit = unit
              return
          # convert float to custom unit in seconds
          if isinstance(unit, Number):
              unit = units.Unit(unit * units.second)
          # otherwise, should be able to convert to a time unit
          try:
              unit = units.Unit(unit)
          except ValueError as exc:
              # catch annoying plurals
              try:
                  unit = units.Unit(str(unit).rstrip('s'))
              except ValueError:
                  raise exc
          # decompose and check that it's actually a time unit
          dec = unit.decompose()
          if dec.bases != [units.second]:
              raise ValueError("Cannot set GPS unit to %s" % unit)
          # check equivalent units
          for other in TIME_UNITS:
              if other.decompose().scale == dec.scale:
                  self._unit = other
                  return
          raise ValueError("Unrecognised unit: %s" % unit)
docs: Set the GPS step scale