<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def read_hdf5_array(source, path=None, array_type=Array):
 """Read an `Array` from the given HDF5 object Parameters source : `str`, :class:`h5py.HLObject` path to HDF file on disk, or open `h5py.HLObject`. path : `str` path in HDF hierarchy of dataset. array_type : `type` desired return type """

    dataset = io_hdf5.find_dataset(source, path=path)
    attrs = dict(dataset.attrs)
    # unpickle channel object
    try:
        attrs['channel'] = _unpickle_channel(attrs['channel'])
    except KeyError:  # no channel stored
        pass
    # unpack byte strings for python3
    for key in attrs:
        if isinstance(attrs[key], bytes):
            attrs[key] = attrs[key].decode('utf-8')
    return array_type(dataset[()], **attrs)