<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _convert_units(obj, desired, guess=False):
 """ Given an object with scale and units try to scale to different units via the object's `apply_scale`. Parameters --------- obj : object With apply_scale method (i.e. Trimesh, Path2D, etc) desired : str Units desired (eg 'inches') guess: bool Whether we are allowed to guess the units if they are not specified. """

    if obj.units is None:
        # try to extract units from metadata
        # if nothing specified in metadata and not allowed
        # to guess will raise a ValueError
        obj.units = units_from_metadata(obj, guess=guess)

    log.info('converting units from %s to %s', obj.units, desired)
    # float, conversion factor
    conversion = unit_conversion(obj.units, desired)

    # apply scale uses transforms which preserve
    # cached properties (rather than just multiplying vertices)
    obj.apply_scale(conversion)
    # units are now desired units
    obj.units = desired