U
    ڲgI                     @   sr   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ G dd de jZ	G dd	 d	e j
e	d
ZG dd dZdS )    N)descriptor_pb2)
_file_info)_package_info)EnumRulec                       s    e Zd ZdZ fddZ  ZS )ProtoEnumMetaz8A metaclass for building and registering protobuf enums.c                    s  |d t jkr t | || S t| \}}t d|d}d|krx|	d}|d |d  ||d d   }d
|f| d}tj d| }	d}
 |
i }|
 jkrt jtr j	|
} j| n$t jtr j|
 n j|
= tj|t fdd	  D d
d d|d}tj|	|}t|dkrj|jj | n
||j |< t | || }t!|d d|_"||j#|< |$|t%| |j&|dr|j'||d |S )Nr   __qualname__.z<locals>   
__module__Z_pb_optionsc                 3   s4   | ],\}}| j krt|trtj||d V  qdS ))namenumberN)_member_names
isinstanceintr   ZEnumValueDescriptorProto).0r   r   attrs //tmp/pip-unpacked-wheel-zasgy6sz/proto/enums.py	<genexpr>K   s   
 
z(ProtoEnumMeta.__new__.<locals>.<genexpr>c                 S   s   | j S N)r   )vr   r   r   <lambda>S       z'ProtoEnumMeta.__new__.<locals>.<lambda>)key)r   valueoptions	full_namepb)	new_class)r    Zfallback_salt)(enumIntEnumsuper__new__r   compiletuplegetsplitindexjoinlstripr   Z	_FileInfoZproto_file_namelowerpopr   r   listsetdiscardr   ZEnumDescriptorProtosorteditemsZmaybe_add_descriptorlenZ
descriptorZ	enum_typeaddZ	MergeFromZnested_enum	_EnumInfoZ_metaenumsregisterr   readyZgenerate_file_pb)mclsr   basesr   packagemarshal
local_pathixr   filenameZ
pb_optionsoptsidxZ	enum_desc	file_infocls	__class__r   r   r$      sR    
 


zProtoEnumMeta.__new__)__name__r
   r   __doc__r$   __classcell__r   r   rD   r   r      s   r   c                   @   sP   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd ZdS )Enumz:A enum object that also builds a protobuf enum descriptor.c                 C   s   t |t | tfkS r   )typer   selfotherr   r   r   _comparablev   s    zEnum._comparablec                 C   s
   t | jS r   )hashr   )rL   r   r   r   __hash__z   s    zEnum.__hash__c                 C   s   |  |stS | jt|kS r   rN   NotImplementedr   r   rK   r   r   r   __eq__}   s    
zEnum.__eq__c                 C   s   |  |stS | jt|kS r   rQ   rK   r   r   r   __ne__   s    
zEnum.__ne__c                 C   s   |  |stS | jt|k S r   rQ   rK   r   r   r   __lt__   s    
zEnum.__lt__c                 C   s   |  |stS | jt|kS r   rQ   rK   r   r   r   __le__   s    
zEnum.__le__c                 C   s   |  |stS | jt|kS r   rQ   rK   r   r   r   __ge__   s    
zEnum.__ge__c                 C   s   |  |stS | jt|kS r   rQ   rK   r   r   r   __gt__   s    
zEnum.__gt__N)rF   r
   r   rG   rN   rP   rS   rT   rU   rV   rW   rX   r   r   r   r   rI   s   s   rI   )	metaclassc                   @   s   e Zd ZedddZdS )r5   )r   c                C   s   || _ || _d S r   r   )rL   r   r   r   r   r   __init__   s    z_EnumInfo.__init__N)rF   r
   r   strrZ   r   r   r   r   r5      s   r5   )r!   Zgoogle.protobufr   protor   r   Zproto.marshal.rules.enumsr   EnumMetar   r"   rI   r5   r   r   r   r   <module>   s   [/