"""
This module is responsible for instantiating objects
specified by the experiment configuration
"""

import collections
import importlib
from inspect import signature, isclass, isfunction
from typing import Any, Dict, Set

from neuralmonkey.logging import debug, warn
from neuralmonkey.config.exceptions import (ConfigInvalidValueException,
                                            ConfigBuildException)


# pylint:disable=too-few-public-methods
class ClassSymbol(object):
    """
    Represents a class (or other callable) in configuration.
    """

    def __init__(self, string: str) -> None:
        self.clazz = string

    def create(self) -> Any:
        class_parts = self.clazz.split(".")

        class_name = class_parts[-1]

        simple_module_path = ".".join(class_parts[:-1])