o
    g                     @   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|v r<|	d}|d |d  ||d d   }d
|f| d}tj d| }	d}
 |
i }|
 jv rwt jtrs j	|
} j| n j|
= tj|t fdd	  D d
d d|d}tj|	|}t|dkr|jj | n||j|< t | || }t|d d|_ ||j!|< |"|t#| |j$|dr|j%||d |S )Nr   __qualname__.z<locals>   
__module___pb_optionsc                 3   s6    | ]\}}| j v rt|trtj||d V  qdS ))namenumberN)_member_names
isinstanceintr   EnumValueDescriptorProto).0r   r   attrs W/var/www/html/Testing_prj/Navya-Bakers/venv/lib/python3.10/site-packages/proto/enums.py	<genexpr>I   s    z(ProtoEnumMeta.__new__.<locals>.<genexpr>c                 S   s   | j S N)r   )vr   r   r   <lambda>Q   s    z'ProtoEnumMeta.__new__.<locals>.<lambda>)key)r   valueoptions	full_namepb)	new_class)r!   fallback_salt)&enumIntEnumsuper__new__r   compiletuplegetsplitindexjoinlstripr   	_FileInfoproto_file_namelowerpopr   r   listr   EnumDescriptorProtosorteditemsmaybe_add_descriptorlen
descriptor	enum_typeadd	MergeFromnested_enum	_EnumInfo_metaenumsregisterr   readygenerate_file_pb)mclsr   basesr   packagemarshal
local_pathixr   filename
pb_optionsoptsidx	enum_desc	file_infocls	__class__r   r   r&      sN   
 



zProtoEnumMeta.__new__)__name__r
   r   __doc__r&   __classcell__r   r   rP   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v S r   )typer   selfotherr   r   r   _comparablet   s   zEnum._comparablec                 C   s
   t | jS r   )hashr   )rX   r   r   r   __hash__x   s   
zEnum.__hash__c                 C   s   |  |stS | jt|kS r   rZ   NotImplementedr   r   rW   r   r   r   __eq__{      
zEnum.__eq__c                 C   s   |  |stS | jt|kS r   r]   rW   r   r   r   __ne__   r`   zEnum.__ne__c                 C   s   |  |stS | jt|k S r   r]   rW   r   r   r   __lt__   r`   zEnum.__lt__c                 C   s   |  |stS | jt|kS r   r]   rW   r   r   r   __le__   r`   zEnum.__le__c                 C   s   |  |stS | jt|kS r   r]   rW   r   r   r   __ge__   r`   zEnum.__ge__c                 C   s   |  |stS | jt|kS r   r]   rW   r   r   r   __gt__   r`   zEnum.__gt__N)rR   r
   r   rS   rZ   r\   r_   ra   rb   rc   rd   re   r   r   r   r   rU   q   s    rU   )	metaclassc                   @   s   e Zd ZdefddZdS )r=   r   c                C   s   || _ || _d S r   r   )rX   r   r    r   r   r   __init__   s   
z_EnumInfo.__init__N)rR   r
   r   strrg   r   r   r   r   r=      s    r=   )r#   google.protobufr   protor   r   proto.marshal.rules.enumsr   EnumMetar   r$   rU   r=   r   r   r   r   <module>   s   Y/