<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def copy(source, destination):
 """ Copies given file or directory to destination. :param source: Source to copy from. :type source: unicode :param destination: Destination to copy to. :type destination: unicode :return: Method success. :rtype: bool """


    try:
        if os.path.isfile(source):
            LOGGER.debug("> Copying '{0}' file to '{1}'.".format(source, destination))
            shutil.copyfile(source, destination)
        else:
            LOGGER.debug("> Copying '{0}' directory to '{1}'.".format(source, destination))
            shutil.copytree(source, destination)
        return True
    except Exception as error:
        raise foundations.exceptions.PathCopyError(
            "!> {0} | Cannot copy '{1}' path: '{2}'".format(__name__, source, error))