'Create a new Session object.
:type session_vars: dict
:param session_vars: A dictionary that is used to override some or all
of the environment variables associated with this session.  The
key/value pairs defined in this dictionary will override the
corresponding variables defined in ``SESSION_VARIABLES``.
:type event_hooks: BaseEventHooks
:param event_hooks: The event hooks object to use. If one is not
provided, an event hooks object will be automatically created
for you.
:type include_builtin_handlers: bool
:param include_builtin_handlers: Indicates whether or not to
automatically register builtin handlers.
:type profile: str
:param profile: The name of the profile to use for this
session.  Note that the profile can only be set when
the session is created.'

def __init__(self, session_vars=None, event_hooks=None, include_builtin_handlers=True, profile=None):

    self.session_var_map = copy.copy(self.SESSION_VARIABLES)
    if session_vars:
        self.session_var_map.update(session_vars)
    if (event_hooks is None):
        self._events = HierarchicalEmitter()
    else:
        self._events = event_hooks
    if include_builtin_handlers:
        self._register_builtin_handlers(self._events)
    self.user_agent_name = 'Botocore'
    self.user_agent_version = __version__
    self.user_agent_extra = ''
    self._profile = None
    self._config = None
    self._credentials = None
    self._profile_map = None
    self._session_instance_vars = {}
    if (profile is not None):
        self._session_instance_vars['profile'] = profile
    self._client_config = None
    self._components = ComponentLocator()
    self._register_components()
