U
    ccg                     @   s   d dl Z d dlZd dlZd dlZd dlmZ ejrrd dlmZmZm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZ G dd deZdS )	    N)Enum)DictListOptionalUnionAny)datetime)Application)Userc                   @   sf   e Zd ZdZddddddZdd	d
dddZdZdddZdd Zdd Z	dd Z
dd Zdd ZdS )Sessionu  
    Represents a single execution of the alexa service


    :param new: A boolean value indicating whether this is a new session. Returns true for a new session or false for an existing session.
    :type new: (optional) bool
    :param session_id: A string that represents a unique identifier per a user’s active session.
    :type session_id: (optional) str
    :param user: An object that describes the user making the request.
    :type user: (optional) ask_sdk_model.user.User
    :param attributes: A map of key-value pairs. The attributes map is empty for requests where a new session has started with the property new set to true. When returning your response, you can include data you need to persist during the session in the sessionAttributes property. The attributes you provide are then passed back to your skill on the next request.
    :type attributes: (optional) dict(str, object)
    :param application: 
    :type application: (optional) ask_sdk_model.application.Application

    boolstrzask_sdk_model.user.Userzdict(str, object)z%ask_sdk_model.application.Application)new
session_iduser
attributesapplicationr   Z	sessionIdr   r   r   FNc                 C   s(   d| _ || _|| _|| _|| _|| _dS )u  Represents a single execution of the alexa service

        :param new: A boolean value indicating whether this is a new session. Returns true for a new session or false for an existing session.
        :type new: (optional) bool
        :param session_id: A string that represents a unique identifier per a user’s active session.
        :type session_id: (optional) str
        :param user: An object that describes the user making the request.
        :type user: (optional) ask_sdk_model.user.User
        :param attributes: A map of key-value pairs. The attributes map is empty for requests where a new session has started with the property new set to true. When returning your response, you can include data you need to persist during the session in the sessionAttributes property. The attributes you provide are then passed back to your skill on the next request.
        :type attributes: (optional) dict(str, object)
        :param application: 
        :type application: (optional) ask_sdk_model.application.Application
        N)Z_Session__discriminator_valuer   r   r   r   r   )selfr   r   r   r   r    r   9/tmp/pip-unpacked-wheel-urk6bcke/ask_sdk_model/session.py__init__@   s    zSession.__init__c                 C   s   i }t | jD ]\}}t| |}t|trDttdd |||< qt|trZ|j||< qt	|drr|
 ||< qt|trttdd | ||< q|||< q|S )z&Returns the model properties as a dictc                 S   s&   t | dr|  S t| tr"| jS | S )Nto_dicthasattrr   
isinstancer   value)xr   r   r   <lambda>`   s   z!Session.to_dict.<locals>.<lambda>r   c                 S   sF   t | d dr"| d | d  fS t| d trB| d | d jfS | S )N   r   r   r   )itemr   r   r   r   j   s
    )six	iteritemsdeserialized_typesgetattrr   listmapr   r   r   r   dictitems)r   resultattr_r   r   r   r   r   W   s&    





zSession.to_dictc                 C   s   t |  S )z.Returns the string representation of the model)pprintpformatr   r   r   r   r   to_stru   s    zSession.to_strc                 C   s   |   S )zFor `print` and `pprint`)r.   r-   r   r   r   __repr__z   s    zSession.__repr__c                 C   s   t |tsdS | j|jkS )z&Returns true if both objects are equalF)r   r   __dict__r   otherr   r   r   __eq__   s    
zSession.__eq__c                 C   s
   | |k S )z*Returns true if both objects are not equalr   r1   r   r   r   __ne__   s    zSession.__ne__)NNNNN)__name__
__module____qualname____doc__r"   Zattribute_mapZsupports_multiple_typesr   r   r.   r/   r3   r4   r   r   r   r   r      s(   	
r   )r+   rer    typingenumr   TYPE_CHECKINGr   r   r   r   r   r   Zask_sdk_model.applicationr	   ZApplication_fbe81c42Zask_sdk_model.userr
   ZUser_8987f2deobjectr   r   r   r   r   <module>   s   