U
    •uÄc¥*  ã                   @   sú   d dl Z d dlmZ d dlmZ dZG dd„ dejƒZG dd„ deƒZG d	d
„ d
eƒZ	G dd„ deƒZ
G dd„ deƒZG dd„ deƒZG dd„ deƒZee	e
eeedœZe	dddddd�e
ddddddd�edddddd�eddddddddd�dœZdS )é    N)Úutil)ÚProtocolError)	ÚRoleFeaturesÚRoleBrokerFeaturesÚRoleSubscriberFeaturesÚRolePublisherFeaturesÚRoleDealerFeaturesÚRoleCallerFeaturesÚRoleCalleeFeaturesÚROLE_NAME_TO_CLASSÚDEFAULT_CLIENT_ROLESc                   @   s,   e Zd ZdZdZdd„ Zdd„ Zdd„ ZdS )	r   z,
    Base class for WAMP role features.
    Nc                 C   s   t  | j¡S ©N)ÚjsonÚdumpsÚ__dict__)Úself© r   úU/var/www/html/BOARDBOSS/school/venv/lib/python3.8/site-packages/autobahn/wamp/role.pyÚ__str__5   s    zRoleFeatures.__str__c                 C   sJ   i }| j  ¡ D ]\}}|d k	r|||< qd | jd dd„ | ¡ D ƒ¡¡S )Nz{0}({1})z, c                 S   s    g | ]\}}|d  t |ƒ ‘qS )ú=)Ústr)Ú.0ÚkÚvr   r   r   Ú
<listcomp>=   s   ÿz)RoleFeatures.__repr__.<locals>.<listcomp>)r   ÚitemsÚformatÚROLEÚjoin)r   Zconfigured_optionsr   r   r   r   r   Ú__repr__8   s    
ÿzRoleFeatures.__repr__c                 C   s\   | j D ]P}| d¡s|dkrt| |ƒd k	rtt| |ƒƒtkrtd t| |ƒ|| j¡ƒ‚qd S )NÚ_r   z1invalid type {0} for feature '{1}' for role '{2}')r   Ú
startswithÚgetattrÚtypeÚboolr   r   r   )r   r   r   r   r   Ú_check_all_bool@   s    
 zRoleFeatures._check_all_bool)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r%   r   r   r   r   r   -   s
   r   c                   @   s   e Zd ZdZdZddd„ZdS )r   z$
    WAMP broker role features.
    ÚbrokerNc                 K   sZ   || _ || _|| _|| _|| _|| _|| _|| _|	| _|
| _	|| _
|| _|| _|  ¡  d S r   )Úpublisher_identificationÚpublication_trustlevelsÚpattern_based_subscriptionÚsession_meta_apiÚsubscription_meta_apiÚsubscriber_blackwhite_listingÚpublisher_exclusionÚsubscription_revocationÚevent_historyÚpayload_transparencyÚx_acknowledged_event_deliveryÚpayload_encryption_cryptoboxÚevent_retentionr%   )r   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   Úkwargsr   r   r   Ú__init__P   s    zRoleBrokerFeatures.__init__)NNNNNNNNNNNNN©r&   r'   r(   r)   r   r9   r   r   r   r   r   H   s                 ór   c                   @   s   e Zd ZdZdZddd„ZdS )r   z(
    WAMP subscriber role features.
    Ú
subscriberNc           	      K   s6   || _ || _|| _|| _|| _|| _|| _|  ¡  d S r   )r+   r,   r-   r2   r3   r4   r6   r%   )	r   r+   r,   r-   r2   r3   r4   r6   r8   r   r   r   r9   w   s    	zRoleSubscriberFeatures.__init__)NNNNNNNr:   r   r   r   r   r   o   s          ùr   c                   @   s   e Zd ZdZdZddd„ZdS )r   z'
    WAMP publisher role features.
    Ú	publisherNc                 K   s0   || _ || _|| _|| _|| _|| _|  ¡  d S r   )r+   r0   r1   r4   r5   r6   r%   )r   r+   r0   r1   r4   r5   r6   r8   r   r   r   r9   ’   s    zRolePublisherFeatures.__init__)NNNNNNr:   r   r   r   r   r   Š   s         úr   c                   @   s   e Zd ZdZdZddd„ZdS )r   z$
    WAMP dealer role features.
    ÚdealerNc                 K   sZ   || _ || _|| _|| _|| _|| _|| _|| _|	| _|
| _	|| _
|| _|| _|  ¡  d S r   )Úcaller_identificationÚcall_trustlevelsÚpattern_based_registrationr.   Úregistration_meta_apiÚshared_registrationÚcall_timeoutÚcall_cancelingÚprogressive_call_resultsÚregistration_revocationr4   Útestament_meta_apir6   r%   )r   r>   r?   r@   r.   rA   rB   rC   rD   rE   rF   r4   rG   r6   r8   r   r   r   r9   «   s    zRoleDealerFeatures.__init__)NNNNNNNNNNNNNr:   r   r   r   r   r   £   s                 ór   c                   @   s   e Zd ZdZdZddd„ZdS )r	   z$
    WAMP caller role features.
    ÚcallerNc                 K   s0   || _ || _|| _|| _|| _|| _|  ¡  d S r   )r>   rC   rD   rE   r4   r6   r%   )r   r>   rC   rD   rE   r4   r6   r8   r   r   r   r9   Ò   s    zRoleCallerFeatures.__init__)NNNNNNr:   r   r   r   r   r	   Ê   s         úr	   c                
   @   s   e Zd ZdZdZddd„ZdS )r
   z$
    WAMP callee role features.
    ÚcalleeNc                 K   sH   || _ || _|| _|| _|| _|| _|| _|| _|	| _|
| _	|  
¡  d S r   )r>   r?   r@   rB   rC   rD   rE   rF   r4   r6   r%   )r   r>   r?   r@   rB   rC   rD   rE   rF   r4   r6   r8   r   r   r   r9   ë   s    zRoleCalleeFeatures.__init__)
NNNNNNNNNNr:   r   r   r   r   r
   ã   s             ör
   )r*   r;   r<   r=   rH   rI   T)r+   r-   r2   r4   r6   )r+   r0   r1   r4   r5   r6   )r>   rE   r4   r6   rD   )r>   r@   rB   rE   rF   r4   r6   rD   )r;   r<   rH   rI   )r   Úautobahnr   Zautobahn.wamp.exceptionr   Ú__all__ZEqualityMixinr   r   r   r   r   r	   r
   r   r   r   r   r   r   Ú<module>   sd   ''#úûúûøé