#  Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
#
#  Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
#  with the License. A copy of the License is located at
#
#  http://aws.amazon.com/apache2.0/
#
#  or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
#  OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
#  and limitations under the License.
import logging

LOGGER = logging.getLogger(__name__)


def call_instance_method(instance, name, args, kwargs):
    """indirect caller for instance methods for multiprocessing

    Args:
        instance: the instance to call method with
        name (str): method name to call
        args (tuple or None): arguments to be passed to getattr(instance, name)
        kwargs (dict or None): kwargs to be passed to getattr(instance, name)

    Returns:
        the returned values of getattr(instance, name)
    """
    if args is None:
        args = ()
    if kwargs is None:
        kwargs = {}
    return getattr(instance, name)(*args, **kwargs)
