<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_configuration(head, update, head_source=None):
 """ This function return the right configuration for the inspire_merge function in according to the given sources. Both parameters can not be None. Params: head(dict):
 the HEAD record update(dict):
 the UPDATE record head_source(string):
 the source of the HEAD record Returns: MergerConfigurationOperations: an object containing the rules needed to merge HEAD and UPDATE """

    head_source = (head_source or get_head_source(head))
    update_source = get_acquisition_source(update)

    if not is_arxiv_and_publisher(head_source, update_source) and is_manual_merge(head, update):
        return ManualMergeOperations

    if head_source == 'arxiv':
        if update_source == 'arxiv':
            return ArxivOnArxivOperations
        else:
            return PublisherOnArxivOperations
    else:
        if update_source == 'arxiv':
            return ArxivOnPublisherOperations
        else:
            return PublisherOnPublisherOperations