':type load_config: callable
:param load_config: A function that accepts no arguments, and
when called, will return the full configuration dictionary
for the session (``session.full_config``).
:type client_creator: callable
:param client_creator: A factory function that will create
a client when called.  Has the same interface as
``botocore.session.Session.create_client``.
:type cache: JSONFileCache
:param cache: An object that supports ``__getitem__``,
``__setitem__``, and ``__contains__``.  An example
of this is the ``JSONFileCache`` class.
:type profile_name: str
:param profile_name: The name of the profile.
:type prompter: callable
:param prompter: A callable that returns input provided
by the user (i.e raw_input, getpass.getpass, etc.).'

def __init__(self, load_config, client_creator, cache, profile_name, prompter=getpass.getpass):

    self.cache = cache
    self._load_config = load_config
    self._client_creator = client_creator
    self._profile_name = profile_name
    self._prompter = prompter
    self._loaded_config = {}
