code: def obj_with_unit(obj, unit):
      
      unit_type = _UNAME2UTYPE[unit]
  
      if isinstance(obj, numbers.Number):
          return FloatWithUnit(obj, unit=unit, unit_type=unit_type)
      elif isinstance(obj, collections.Mapping):
          return {k: obj_with_unit(v, unit) for k,v in obj.items()}
      else:
          return ArrayWithUnit(obj, unit=unit, unit_type=unit_type)
docs: Returns a `FloatWithUnit` instance if obj is scalar, a dictionary of
      objects with units if obj is a dict, else an instance of
      `ArrayWithFloatWithUnit`.
  
      Args:
          unit: Specific units (eV, Ha, m, ang, etc.).