o
    >h*                    @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
mZmZmZmZmZmZ d dlmZ d dlmZ d dlZd dlm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"Z#G dd de"Z$G dd de"Z%dd Z&dd Z'd+ddZ(d+dd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/d&ee fd'd(Z0G d)d* d*e"Z1dS ),    N)Path)pformat)UnionDictListOptionalIOAnyTuple)Sequence)
FormatCode)InvalidPayload)hlval)Schema)BaseType)Fieldc                   @   s0  e Zd ZdZdZejZejZejZej	Z	ej
Z
ejZejZejZejZejZejZejZejZejejej	ej
ejejejejejejejejgZejZejZejZejejejgZi ejdejdejdej	dej
dejdejdejdejdejdejdejdejdejdejd	ejd
Zejeejeejeej	eej
eejeejeejeejeejeejeejeejeejeejeiZejdejdej	dej
dejdejdejdejdejdejdejdiZ ejdejdej	dej
dejdejdejdejdejdejdejd iZ!i ejd!ejd"ejd#ej	d$ej
d%ejd&ejd'ejd(ejd)ejd*ejd+ejd,ejd-ejd.ejd/ejd
Z"i d!ejd"ejd#ejd$ej	d%ej
d&ejd'ejd(ejd)ejd*ejd+ejd,ejd-ejd.ejd/ejd
ejZ#	0	0dWd1d2d3d4d5ed6ed7ed8e$e d9e$e fd:d;Z%e&dXd=d>Z'e&dYd?d@Z(e&d<efdAdBZ)e&d<efdCdDZ*e&d<efdEdFZ+e&d<e$e fdGdHZ,e&d<e$e fdIdJZ-	K	LdZdMedNe$e. dOe$e dPed<ef
dQdRZ/d<efdSdTZ0d<e.ee1f fdUdVZ2d0S )[FbsTypez
    Flatbuffers type.

    See: https://github.com/google/flatbuffers/blob/11a19887053534c43f73e74786b46a615ecbf28e/reflection/reflection.fbs#L33
    )_repository_schema	_basetype_element_index_objtype_elementtypeintboolbytesfloatstrr   objectr   	BoolFlags	Int8Flags
Uint8Flags
Int16FlagsUint16Flags
Int32FlagsUint32Flags
Int64FlagsUint64FlagsFloat32FlagsFloat64FlagsPrependBoolSlotPrependInt8SlotPrependUint8SlotPrependInt16SlotPrependUint16SlotPrependInt32SlotPrependUint32SlotPrependInt64SlotPrependUint64SlotPrependFloat32SlotPrependFloat64SlotUTypeBoolByteUByteShortUShortIntUIntLongULongFloatDoubleStringVectorObjN
repositoryFbsRepositoryschema	FbsSchemabasetypeelementindexobjtypeelementtypec                 C   s.   || _ || _|| _|| _|| _|| _|| _d S N)r   r   r   r   r   r   r   )selfrE   rG   rI   rJ   rK   rL   rM    rP   t/var/www/vedio/testing/chatpythonscript.ninositsolution.com/env/lib/python3.10/site-packages/autobahn/xbr/_schema.py__init__   s   
zFbsType.__init__returnc                 C      | j S rN   r   rO   rP   rP   rQ   rE         zFbsType.repositoryc                 C   rT   rN   r   rV   rP   rP   rQ   rG      rW   zFbsType.schemac                 C   rT   )z:
        Flatbuffers base type.

        :return:
        )r   rV   rP   rP   rQ   rI         zFbsType.basetypec                 C   rT   )z>
        Only if basetype == Vector

        :return:
        )r   rV   rP   rP   rQ   rJ      rY   zFbsType.elementc                 C   rT   )z
        If basetype == Object, index into "objects".
        If base_type == Union, UnionType, or integral derived from an enum, index into "enums".
        If base_type == Vector && element == Union or UnionType.

        :return:
        )r   rV   rP   rP   rQ   rK      s   	zFbsType.indexc                 C   sH   | j tjkr!| jdu r!| jtjkr| jj| j j	| _| jS J d| jS )z]
        If basetype == Vector, fully qualified element type name.

        :return:
        NFFIXME)
r   r   rC   r   r   rD   r   
objs_by_idr   namerV   rP   rP   rQ   rM      s   	zFbsType.elementtypec                 C   s.   | j tjkr| jdu r| jj| j j| _| jS )z\
        If basetype == Object, fully qualified object type name.

        :return:
        N)r   r   rD   r   r   r[   r   r\   rV   rP   rP   rQ   rL     s   	zFbsType.objtypeTFlanguageattrsrequiredobjtype_as_stringc                 C   sP  |dkrd}| j tjkr7| jtjkr|rd|v rd}ndd}na| jr-d| jdd }nRdtj| j }nH| j tj	krS| jrI| jdd }n6dtj| j }n,| j tj
tjtjg v ru| j tjkrn|rnd	|v rnd
}ntj| j  }n
td| j | j|r| j tj	kr|rd|S d|S |rd|S d|S td|| j)z

        :param language:
        :param attrs:
        :param required:
        :param objtype_as_string:
        :return:
        pythonNuuidz	uuid.UUIDr   zList[{}].	timestampznp.datetime64zAFIXME: implement mapping of FlatBuffers type "{}" to Python in {}'{}'Optional['{}']{}Optional[{}]z9cannot map FlatBuffers type to target language "{}" in {})rI   r   rC   rJ   r9   rL   formatsplitFBS2PYrD   SCALAR_TYPESr6   r   r?   NotImplementedErrormapRuntimeError)rO   r]   r^   r_   r`   _mapped_typerP   rP   rQ   ro     s:   




zFbsType.mapc                 C      d t|  S N
{}
rj   pprintr   marshalrV   rP   rP   rQ   __str__]     zFbsType.__str__c                 C   s.   | j | jd | j | jd | j| jd}|S )N)rI   rJ   rK   rL   )FBS2STRgetrI   rJ   rK   rL   )rO   objrP   rP   rQ   rw   `  s   zFbsType.marshal)NNrS   rF   rS   rH   )NTF)3__name__
__module____qualname____doc__	__slots__	_BaseTyper6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rm   rC   rD   r   STRUCTURED_TYPESrl   r   r   r   r   listdictFBS2PY_TYPE	FBS2FLAGSFBS2PREPENDrz   STR2FBSr   rR   propertyrE   rG   rI   rJ   rK   rM   rL   r   ro   rx   r	   rw   rP   rP   rP   rQ   r   2   s   	
	
	



@r   c                   @   s   e Zd Zdd Zdd ZdS )FbsAttributec                 C   s   d S rN   rP   rV   rP   rP   rQ   rR   l  s   zFbsAttribute.__init__c                 C   s   d  S )N )rj   rV   rP   rP   rQ   rx   o  s   zFbsAttribute.__str__N)r   r   r   rR   rx   rP   rP   rP   rQ   r   k  s    r   c                   @   sN  e Zd ZdZdddddededed	ed
edededede	ee
f defddZed0ddZed1ddZedefddZedefddZedefddZedefddZedefdd Zedefd!d"Zedefd#d$Zedefd%d&Zede	ee
f fd'd(Zedefd)d*Zdefd+d,Zde	eef fd-d.Zd/S )2FbsFieldr   r   _name_type_id_offset_default_int_default_real_deprecated	_required_attrs_docsrE   rF   rG   rH   r\   typeidoffsetdefault_intdefault_real
deprecatedr_   r^   docsc                 C   sL   || _ || _|| _|| _|| _|| _|| _|| _|	| _|
| _	|| _
|| _d S rN   r   )rO   rE   rG   r\   r   r   r   r   r   r   r_   r^   r   rP   rP   rQ   rR   w  s   
zFbsField.__init__rS   c                 C   rT   rN   rU   rV   rP   rP   rQ   rE     rW   zFbsField.repositoryc                 C   rT   rN   rX   rV   rP   rP   rQ   rG     rW   zFbsField.schemac                 C   rT   rN   r   rV   rP   rP   rQ   r\     rW   zFbsField.namec                 C   rT   rN   )r   rV   rP   rP   rQ   r     rW   zFbsField.typec                 C   rT   rN   r   rV   rP   rP   rQ   r     rW   zFbsField.idc                 C   rT   rN   )r   rV   rP   rP   rQ   r     rW   zFbsField.offsetc                 C   rT   rN   )r   rV   rP   rP   rQ   r     rW   zFbsField.default_intc                 C   rT   rN   )r   rV   rP   rP   rQ   r     rW   zFbsField.default_realc                 C   rT   rN   )r   rV   rP   rP   rQ   r     rW   zFbsField.deprecatedc                 C   rT   rN   )r   rV   rP   rP   rQ   r_     rW   zFbsField.requiredc                 C   rT   rN   r   rV   rP   rP   rQ   r^     rW   zFbsField.attrsc                 C   rT   rN   r   rV   rP   rP   rQ   r     rW   zFbsField.docsc                 C   rr   rs   ru   rV   rP   rP   rQ   rx     ry   zFbsField.__str__c                 C   sd   | j | jr
| j nd | j| j| j| j| j| ji | j	d
}| j
r0| j
 D ]
\}}||d |< q%|S )N)
r\   r   r   r   r   r   r   r_   r^   r   r^   )r   r   rw   r   r   r   r   r   r   r   r   itemsrO   r|   kvrP   rP   rQ   rw     s   zFbsField.marshalNr}   r~   )r   r   r   r   r   r   r   r   r   r   r   rR   r   rE   rG   r\   r   r   r   r   r   r   r_   r^   r   rx   r	   rw   rP   rP   rP   rQ   r   s  sj    	


r   c                 C   sd   i }t |  D ]'}| |}| }|r|d}| }|r%|d}||vs+J |||< q|S )Nutf8)rangeAttributesLength
AttributesKeydecodeValue)r|   r^   jfbs_attrattr_key
attr_valuerP   rP   rQ   
parse_attr  s   



r   c                 C   sN   g }t |  D ]}| |}|r|d }|| qd| }|S )Nr    )r   DocumentationLengthDocumentationr   stripappendjoin)r|   r   r   doc_linerP   rP   rQ   
parse_docs  s   

r   c                 C   s  i }i }t | D ]e}||}| }|r|d}t| }	|||	< | }
d }t| ||
	 |

 |
 |d}t| ||||	| | | | | t|t|d}||vskJ d||	t| |||< q
g }t t|D ]}||||   qx||fS )Nr   )rE   rG   rI   rJ   rK   rL   )rE   rG   r\   r   r   r   r   r   r   r_   r^   r   z,field "{}" with id "{}" already in fields {})r   FieldsLengthFieldsNamer   r   IdTyper   r   ElementIndexr   OffsetDefaultIntegerDefaultReal
DeprecatedRequiredr   r   rj   sortedkeyslenr   )rE   rG   r|   objs_lstfields_by_namefield_id_to_namer   	fbs_field
field_namefield_idfbs_field_typer   
field_typefieldfields_by_idirP   rP   rQ   parse_fields  sP   	

	

r   c           &      C   s  i }i }t | D ]}||}| }|r|d}|}	| }
|
 }|r-|d}|
 }|r8|d}|
 }|
 }|
	 }t
|
}t|
}t| ||
|d\}}t| ||||||||||d}| }| }|rt|d}| }|r|d}| }| }|	 }t
|}t|}t| |||d\}}t| ||||||||||d}t
|} t|}!t| |||	||| |!d}"||vsJ d||	t| |"||< |	|vsJ d||	t| |||	< q
g }#t| D ]	\}$}%|#|% q|#}||fS )Nr   r   rE   rG   declaration_filer\   fieldsr   	is_struct	min_alignbytesizer^   r   )rE   rG   r\   r   requestresponser   r^   z*call "{}" with id "{}" already in calls {}z+call "{}" with id " {}" already in calls {})r   CallsLengthCallsr   r   RequestDeclarationFileIsStructMinalignBytesizer   r   r   	FbsObjectResponse
FbsRPCCallrj   r   r   r   r   )&rE   rG   svc_objr   callscalls_by_idr   fbs_call	call_namecall_idfbs_call_reqcall_req_namecall_req_declaration_filecall_req_is_structcall_req_min_aligncall_req_bytesizecall_req_docscall_req_attrscall_req_fieldscall_fields_by_idcall_reqfbs_call_respcall_resp_namecall_resp_declaration_filecall_resp_is_structcall_resp_min_aligncall_resp_bytesizecall_resp_docscall_resp_attrscall_resp_fieldscall_resp_fields_by_id	call_resp	call_docs
call_attrscallres_valuerP   rP   rQ   parse_calls<  s   





	


r  c                   @   s  e Zd ZdZdddddededeeef d	ee d
ede	de	deee
f defddZd8dedee dedefddZdedefddZed9ddZed:ddZedefdd Zedefd!d"Zedeeef fd#d$Zedee fd%d&Zedefd'd(Zede	fd)d*Zede	fd+d,Zedeee
f fd-d.Zedefd/d0Zdefd1d2Zdeeef fd3d4Zed;d6d7Zd5S )<r   )r   r   _declaration_filer   _fields_fields_by_id
_is_struct
_min_align	_bytesizer   r   
modulename	classnamemodule_relimportrE   rF   rG   rH   r   r\   r   r   r   r   r   r^   r   c                 C   F   || _ || _|| _|| _|| _|| _|| _|| _|	| _|
| _	|| _
d S rN   )r   r   r  r   r  r  r  r  r  r   r   )rO   rE   rG   r   r\   r   r   r   r   r   r^   r   rP   rP   rQ   rR     s   
zFbsObject.__init__TFr]   r_   r`   rS   c                 C   sR   |dkr&| j dd }|r|rd|S d|S |r!d|S d|S t )Nra   rc   rd   rf   rg   rh   ri   r   rk   rj   rn   )rO   r]   r_   r`   klassrP   rP   rQ   ro     s   



zFbsObject.mapc                 C   s:   |dkr| j dd }| j dd }d||S t )Nra   rc   rd   zfrom {} import {}r  )rO   r]   baser  rP   rP   rQ   
map_import  s
   zFbsObject.map_importc                 C   rT   rN   rU   rV   rP   rP   rQ   rE     rW   zFbsObject.repositoryc                 C   rT   rN   rX   rV   rP   rP   rQ   rG     rW   zFbsObject.schemac                 C   rT   rN   r  rV   rP   rP   rQ   r     rW   zFbsObject.declaration_filec                 C   rT   rN   r   rV   rP   rP   rQ   r\     rW   zFbsObject.namec                 C   rT   rN   )r  rV   rP   rP   rQ   r     rW   zFbsObject.fieldsc                 C   rT   rN   )r  rV   rP   rP   rQ   r     rW   zFbsObject.fields_by_idc                 C   rT   rN   )r  rV   rP   rP   rQ   r     rW   zFbsObject.is_structc                 C   rT   rN   )r  rV   rP   rP   rQ   r     rW   zFbsObject.min_alignc                 C   rT   rN   )r  rV   rP   rP   rQ   r     rW   zFbsObject.bytesizec                 C   rT   rN   r   rV   rP   rP   rQ   r^     rW   zFbsObject.attrsc                 C   rT   rN   r   rV   rP   rP   rQ   r     rW   zFbsObject.docsc                 C   rr   rs   ru   rV   rP   rP   rQ   rx     ry   zFbsObject.__str__c              	   C   s~   | j | ji | j| j| ji | jd}| jr*| j D ]\}}|r#| nd |d |< q| j	r=| j	 D ]
\}}||d |< q2|S )N)r\   r   r   r   r   r   r^   r   r   r^   )
r   r  r  r  r  r   r  r   rw   r   r   rP   rP   rQ   rw     s    
zFbsObject.marshalNc                 C   s~   |  }|r|d}| }|r|d}t|}t|}t| |||d\}}	t| |||||	| | |	 ||d}
|
S )Nr   r   r   )
r   r   r   r   r   r   r   r   r   r   )rE   rG   fbs_objr   obj_nameobj_declaration_fileobj_docs	obj_attrsr   r   r|   rP   rP   rQ   parse  s,   

zFbsObject.parse)TFr}   r~   rN   ) r   r   r   r   r   r   r   r   r   r   r   rR   r   ro   r  r   rE   rG   r   r\   r   r   r   r   r   r^   r   rx   r	   rw   staticmethodr$  rP   rP   rP   rQ   r     sj    
	


 r   c                   @   s   e Zd Zdddddedededed	ed
eeef fddZe	dd Z
e	dd Ze	dd Ze	dd Ze	dd Ze	dd Ze	dd Ze	dd Zdd Zdd  Zd!S )"r   rE   rF   rG   rH   r\   r   r   r   r   r^   c	           	      C   4   || _ || _|| _|| _|| _|| _|| _|| _d S rN   )r   r   r   r   _request	_responser   r   )	rO   rE   rG   r\   r   r   r   r   r^   rP   rP   rQ   rR   +     	
zFbsRPCCall.__init__c                 C   rT   rN   rU   rV   rP   rP   rQ   rE   =  rW   zFbsRPCCall.repositoryc                 C   rT   rN   rX   rV   rP   rP   rQ   rG   A  rW   zFbsRPCCall.schemac                 C   rT   rN   r   rV   rP   rP   rQ   r\   E  rW   zFbsRPCCall.namec                 C   rT   rN   r   rV   rP   rP   rQ   r   I  rW   zFbsRPCCall.idc                 C   rT   rN   )r'  rV   rP   rP   rQ   r   M  rW   zFbsRPCCall.requestc                 C   rT   rN   )r(  rV   rP   rP   rQ   r   Q  rW   zFbsRPCCall.responsec                 C   rT   rN   r   rV   rP   rP   rQ   r   U  rW   zFbsRPCCall.docsc                 C   rT   rN   r   rV   rP   rP   rQ   r^   Y  rW   zFbsRPCCall.attrsc                 C   rr   rs   ru   rV   rP   rP   rQ   rx   ]  ry   zFbsRPCCall.__str__c                 C   s^   | j | jr
| j nd | jr| j nd i | jd}| jr-| j D ]
\}}||d |< q"|S )N)r\   r   r   r^   r   r^   )r   r'  rw   r(  r   r   r   r   rP   rP   rQ   rw   `  s   zFbsRPCCall.marshalN)r   r   r   r   r   r   r   r   rR   r   rE   rG   r\   r   r   r   r   r^   rx   rw   rP   rP   rP   rQ   r   *  sH    









r   c                   @   s   e Zd Zdddddededeeef dee d	eeef d
efddZe	dd Z
e	dd Ze	dd Ze	dd Ze	dd Ze	dd Ze	dd Ze	dd Zdd Zdd  Zd!S )"
FbsServicerE   rF   rG   rH   r   r\   r   r   r^   r   c	           	      C   r&  rN   )r   r   r  r   _calls_calls_by_idr   r   )	rO   rE   rG   r   r\   r   r   r^   r   rP   rP   rQ   rR   o  r)  zFbsService.__init__c                 C   rT   rN   rU   rV   rP   rP   rQ   rE     rW   zFbsService.repositoryc                 C   rT   rN   rX   rV   rP   rP   rQ   rG     rW   zFbsService.schemac                 C   rT   rN   r  rV   rP   rP   rQ   r     rW   zFbsService.declaration_filec                 C   rT   rN   r   rV   rP   rP   rQ   r\     rW   zFbsService.namec                 C   rT   rN   )r+  rV   rP   rP   rQ   r     rW   zFbsService.callsc                 C   rT   rN   )r,  rV   rP   rP   rQ   r     rW   zFbsService.calls_by_idc                 C   rT   rN   r   rV   rP   rP   rQ   r^     rW   zFbsService.attrsc                 C   rT   rN   r   rV   rP   rP   rQ   r     rW   zFbsService.docsc                 C   rr   rs   ru   rV   rP   rP   rQ   rx     ry   zFbsService.__str__c                 C   sj   | j | ji i | jd}| jr | j D ]\}}| |d |< q| jr3| j D ]
\}}||d |< q(|S )N)r\   r   r   r^   r   r   r^   )r   r  r   r+  r   rw   r   r   rP   rP   rQ   rw     s   zFbsService.marshalN)r   r   r   r   r   r   r   r   rR   r   rE   rG   r   r\   r   r   r^   r   rx   rw   rP   rP   rP   rQ   r*  n  sH    










r*  c                   @   s   e Zd ZdddddedefddZed	d
 Zedd Zedd Z	edd Z
edd Zedd Zedd Zdd Zdd ZdS )FbsEnumValuerE   rF   rG   rH   r\   r   c                 C   s.   || _ || _|| _|| _|| _i | _|| _dS )ze

        :param repository:
        :param name:
        :param value:
        :param docs:
        N)r   r   r   r   _valuer   r   )rO   rE   rG   r\   r   r  r   rP   rP   rQ   rR     s   
zFbsEnumValue.__init__c                 C   rT   rN   rU   rV   rP   rP   rQ   rE     rW   zFbsEnumValue.repositoryc                 C   rT   rN   rX   rV   rP   rP   rQ   rG     rW   zFbsEnumValue.schemac                 C   rT   rN   r   rV   rP   rP   rQ   r\     rW   zFbsEnumValue.namec                 C   rT   rN   r   rV   rP   rP   rQ   r     rW   zFbsEnumValue.idc                 C   rT   rN   )r.  rV   rP   rP   rQ   r    rW   zFbsEnumValue.valuec                 C   rT   rN   r   rV   rP   rP   rQ   r^     rW   zFbsEnumValue.attrsc                 C   rT   rN   r   rV   rP   rP   rQ   r     rW   zFbsEnumValue.docsc                 C   rr   rs   ru   rV   rP   rP   rQ   rx     ry   zFbsEnumValue.__str__c                 C   sD   | j | j| j| j| jd}| jr | j D ]
\}}||d |< q|S )N)r   r\   r^   r   r  r^   )r   r   r   r   r.  r   r   rP   rP   rQ   rw     s   zFbsEnumValue.marshalN)r   r   r   r   r   rR   r   rE   rG   r\   r   r  r^   r   rx   rw   rP   rP   rP   rQ   r-    s4    







r-  c                   @   s   e Zd ZdZdddddededed	eeef d
ee de	dedeee
f defddZedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd  Zed!d" Zed#d$ Zed%d& Zd'd( Zd)d* Zd+S ),FbsEnumz
    FlatBuffers enum type.

    See https://github.com/google/flatbuffers/blob/11a19887053534c43f73e74786b46a615ecbf28e/reflection/reflection.fbs#L61
    rE   rF   rG   rH   r   r\   r   valuesvalues_by_idis_unionunderlying_typer^   r   c                 C   r  rN   )r   r   r  r   r   _values_values_by_id	_is_union_underlying_typer   r   )rO   rE   rG   r   r\   r   r0  r1  r2  r3  r^   r   rP   rP   rQ   rR      s   
zFbsEnum.__init__c                 C   rT   rN   rU   rV   rP   rP   rQ   rE     rW   zFbsEnum.repositoryc                 C   rT   rN   rX   rV   rP   rP   rQ   rG     rW   zFbsEnum.schemac                 C   rT   rN   r  rV   rP   rP   rQ   r   "  rW   zFbsEnum.declaration_filec                 C   rT   rN   r   rV   rP   rP   rQ   r\   &  rW   zFbsEnum.namec                 C   rT   rN   r   rV   rP   rP   rQ   r   *  rW   z
FbsEnum.idc                 C   rT   rN   )r4  rV   rP   rP   rQ   r0  .  rW   zFbsEnum.valuesc                 C   rT   rN   )r5  rV   rP   rP   rQ   r1  2  rW   zFbsEnum.values_by_idc                 C   rT   rN   )r6  rV   rP   rP   rQ   r2  6  rW   zFbsEnum.is_unionc                 C   rT   rN   )r7  rV   rP   rP   rQ   r3  :  rW   zFbsEnum.underlying_typec                 C   rT   rN   r   rV   rP   rP   rQ   r^   >  rW   zFbsEnum.attrsc                 C   rT   rN   r   rV   rP   rP   rQ   r   B  rW   zFbsEnum.docsc                 C   rr   rs   ru   rV   rP   rP   rQ   rx   F  ry   zFbsEnum.__str__c                 C   s|   | j | ji | jtj| jd i | jd}| jr)| j	 D ]\}}|
 |d |< q| jr<| j	 D ]
\}}||d |< q1|S )N)r\   r   r0  r2  r3  r^   r   r0  r^   )r   r   r6  r   rz   r{   r7  r   r4  r   rw   r   r   rP   rP   rQ   rw   I  s   	zFbsEnum.marshalN)r   r   r   r   r   r   r   r-  r   r   r   rR   r   rE   rG   r   r\   r   r0  r1  r2  r3  r^   r   rx   rw   rP   rP   rP   rQ   r/    sb    
	













r/  c                !   @   s  e Zd ZdZ						d<dddedededed	ed
eeeef  dede	de
eeef  de
ee  de
eeef  de
ee  de
eeef  de
ee  fddZedd Zedd Zedd Zedd Zedd Zedd  Zed!d" Zed#d$ Zed%d& Zed'd( Zed)d* Zed+d, Zed-d. Zed/d0 Zed1d2 Zd3d4 Zd5eeef fd6d7Z e!	d=ddd8e"ee#j$e%e& f d9e
e d5d fd:d;Z'dS )>rH   z
    NrE   rF   	file_namefile_sha256	file_size
file_identfile_ext	fbs_files
root_tablerootobjsr[   enumsenums_by_idservicesservices_by_idc                 C   s^   || _ || _|| _|| _|| _|| _|| _|| _|	| _|
| _	|| _
|| _|| _|| _|| _dS )a  

        :param repository:
        :param file_name:
        :param file_sha256:
        :param file_size:
        :param file_ident:
        :param file_ext:
        :param fbs_files:
        :param root_table:
        :param root:
        :param objs:
        :param objs_by_id:
        :param enums:
        :param enums_by_id:
        :param services:
        :param services_by_id:
        N)r   
_file_name_file_sha256
_file_size_file_ident	_file_ext
_fbs_files_root_table_root_objs_objs_by_id_enums_enums_by_id	_services_services_by_id)rO   rE   r8  r9  r:  r;  r<  r=  r>  r?  r@  r[   rA  rB  rC  rD  rP   rP   rQ   rR   `  s   "
zFbsSchema.__init__c                 C   rT   rN   rU   rV   rP   rP   rQ   rE     rW   zFbsSchema.repositoryc                 C   rT   rN   )rE  rV   rP   rP   rQ   r8    rW   zFbsSchema.file_namec                 C   rT   rN   )rF  rV   rP   rP   rQ   r9    rW   zFbsSchema.file_sha256c                 C   rT   rN   )rG  rV   rP   rP   rQ   r:    rW   zFbsSchema.file_sizec                 C   rT   rN   )rH  rV   rP   rP   rQ   r;    rW   zFbsSchema.file_identc                 C   rT   rN   )rI  rV   rP   rP   rQ   r<    rW   zFbsSchema.file_extc                 C   rT   rN   )rJ  rV   rP   rP   rQ   r=    rW   zFbsSchema.fbs_filesc                 C   rT   rN   )rK  rV   rP   rP   rQ   r>    rW   zFbsSchema.root_tablec                 C   rT   rN   )rL  rV   rP   rP   rQ   r?    rW   zFbsSchema.rootc                 C   rT   rN   rM  rV   rP   rP   rQ   r@    rW   zFbsSchema.objsc                 C   rT   rN   )rN  rV   rP   rP   rQ   r[     rW   zFbsSchema.objs_by_idc                 C   rT   rN   rO  rV   rP   rP   rQ   rA    rW   zFbsSchema.enumsc                 C   rT   rN   )rP  rV   rP   rP   rQ   rB    rW   zFbsSchema.enums_by_idc                 C   rT   rN   rQ  rV   rP   rP   rQ   rC    rW   zFbsSchema.servicesc                 C   rT   rN   )rR  rV   rP   rP   rQ   rD    rW   zFbsSchema.services_by_idc                 C   s   d tj|  ddS )Nrt      )widthru   rV   rP   rP   rQ   rx     s   zFbsSchema.__str__rS   c              
   C   s   | j | j| jrtj| jnd| j| j| jt	| j
t	| jt	| jd	| jr+| j ndi i i d}| jrG| j D ]\}}| |d |< q:| j
r\| j
 D ]\}}| |d |< qO| jrq| j D ]\}}| |d |< qd|S )z

        :return:
        N)	identextr\   filessha256sizeobjectsrA  rC  )rG   r>  rA  r]  rC  rA  r]  rC  )rH  rI  rE  ospathbasenamerJ  rF  rG  r   rM  rO  rQ  rK  rw   r   r   rP   rP   rQ   rw     s2   zFbsSchema.marshalsfilefilenamec           .      C   s  t |tkr&tj|r&t|d}| }W d   n1 s w   Y  n| }t }|	| t
|d}| }|durF|d}| }|durS|d}g }	t| D ]6}
||
}| }|rm|d}g }t| D ]}||}|r|d}|| qu|	||d q[| }|durt| |}t| |t|| |||	||d	}i }g }t| D ]}
||
}| }|r|d}| }|r|d}|  }i }g }t|! D ]4}|"|}| }|r|d}|# }t$|}t%| |||||d}||vsJ |||< || qt&| ||||
|||' |t(|t$|d}||vs7J |||< || q||_)||_*i } g }!t|+ D ]#}
|,|
}"tj| ||"|!d	}#|#j-| vsiJ |#| |#j-< |!|# qQ| |_.|!|_/i }$g }%t|0 D ]N}
|1|
}&|& }'|'r|'d}'|& }(|(r|(d}(t$|&})t(|&}*t2| ||&|!d	\}+},t3| ||(|'|+|,|*|)d
}-|'|$vsJ |-|$|'< |%|- q|$|_4|%|_5|S )ze

        :param repository:
        :param sfile:
        :param filename:
        :return:
        rbNr   r   )rb  included_filenames)	rE   r8  r:  r9  r;  r<  r=  r>  r?  )rE   rG   r\   r   r  r   )rE   rG   r   r\   r   r0  r1  r2  r3  r^   r   r   )rE   rG   r   r\   r   r   r^   r   )6r   r   r^  r_  isfileopenreadhashlibr[  update_SchemaGetRootAsSchema	FileIdentr   FileExtr   FbsFilesLengthFbsFilesFilenameIncludedFilenamesLengthIncludedFilenamesr   	RootTabler   r$  rH   r   	hexdigestEnumsLengthEnumsr   r   UnderlyingTypeValuesLengthValuesr   r   r-  r/  IsUnionr   rO  rP  ObjectsLengthObjectsr\   rM  rN  ServicesLengthServicesr  r*  rQ  rR  ).rE   ra  rb  fddatamr?  r;  r<  r=  r   schema_fileschema_file_filenameschema_file_included_filenamesr   included_filenamer>  rG   rA  rB  fbs_enum	enum_nameenum_declaration_fileenum_underlying_typeenum_valuesenum_values_by_idfbs_enum_valueenum_value_nameenum_value_valueenum_value_docs
enum_valueenumr@  r[   r  r|   rC  rD  r   svc_namesvc_declaration_filer   r^   r   r   servicerP   rP   rQ   load  s  

















zFbsSchema.load)NNNNNNrN   )(r   r   r   r   r   r   r   r   r   rj  r   r/  r*  rR   r   rE   r8  r9  r:  r;  r<  r=  r>  r?  r@  r[   rA  rB  rC  rD  rx   r   rw   r%  r   io	RawIOBaser   r   r  rP   rP   rP   rQ   rH   \  s    	




2














!rH   r  c                 C   sH   | j jtjv r tj| j j }t ||krtdt ||d S J d)Nz&invalid type {} for value, expected {}FrZ   )r   rI   r   r   r   rj   )r   r  expected_typerP   rP   rQ   validate_scalar  s   r  c                	   @   sH  e Zd ZdZdefddZededd fddZed	edd fd
dZe	defddZ
e	deeef fddZe	deeef fddZe	deeef fddZe	deeef fddZe	dd Zdedeeef fddZd*ddZdd Zdd  Zd!ee d"ee fd#d$Zd!ed%ee d&eeef dee fd'd(Zd)S )+rF   z
    crossbar.interfaces.IInventory
      - add: FbsRepository[]
        - load: FbsSchema[]

    https://github.com/google/flatbuffers/blob/master/reflection/reflection.fbs
    
basemodulec                 C   s,   t  | _|| _i | _i | _i | _i | _d S rN   )txaiomake_loggerlog_basemodule	_schematarM  rO  rQ  )rO   r  rP   rP   rQ   rR     s   

zFbsRepository.__init__rb  rS   c                 C   
   t  }|S rN   rF   )rb  catalogrP   rP   rQ   from_archive     zFbsRepository.from_archiveaddressc                 C   r  rN   r  )r  r  rP   rP   rQ   from_address  r  zFbsRepository.from_addressc                 C   rT   rN   )r  rV   rP   rP   rQ   r    rW   zFbsRepository.basemodulec                 C   rT   rN   )r  rV   rP   rP   rQ   schemas  rW   zFbsRepository.schemasc                 C   rT   rN   rS  rV   rP   rP   rQ   r@    rW   zFbsRepository.objsc                 C   rT   rN   rT  rV   rP   rP   rQ   rA    rW   zFbsRepository.enumsc                 C   rT   rN   rU  rV   rP   rP   rQ   rC    rW   zFbsRepository.servicesc                 C   s   t | jt | j t | j S rN   )r   rM  rO  rQ  rV   rP   rP   rQ   total_count  s   zFbsRepository.total_countc                 C   s  d}g }t j|r,t|dD ]}t j||j}|| jvr&|| q|d7 }qnOt j	|rB|| jvr=|| n>|d7 }n9d|v rt|
dD ]'}t j|}t j	|rl|| jvrd|| qKtd| qKtd|ntd|d}d}d}	|D ]X}t| |}
|
j D ]}|j| jv r|d7 }q|| j|j< q|
j D ]}|j| jv r|d7 }q|| j|j< q|
j D ]}|j| jv r|	d7 }	q|| j|j< q|
| j|< q|| |	 }||fS )aM  
        Load and add all schemata from Flatbuffers binary schema files (`*.bfbs`)
        found in the given directory. Alternatively, a path to a single schema file
        can be provided.

        :param filename: Filesystem path of a directory or single file from which to
            load and add Flatbuffers schemata.
        r   z*.bfbs   ,z3duplicate schema file skipped ("{}" already loaded)z"{}" in list is not a filez*cannot open schema file or directory: "{}")r^  r_  isdirr   rglobr   r\   r  r   re  rk   
expanduserprintrj   rp   rH   r  rA  r0  rO  r@  rM  rC  rQ  )rO   rb  	file_dupsload_from_filenamesr_  fnfilename_single	enum_dupsobj_dupssvc_dupsrG   r  r|   svc	type_dupsrP   rP   rQ   r    sV   	







zFbsRepository.loadFc                 C   s`   |rt | j t | j t | j t | j dS t| jt| jt| jt| jdS )N)schematar@  rA  rC  )r   r  r   rM  rO  rQ  r   )rO   r   rP   rP   rQ   summary%  s   zFbsRepository.summaryc                 C   s  d}d}d}| j  D ]$\}}|jd| j}|dd }|jr$dn|}d|jr-d	nd
|}	tdt	dd|	ddt
|	  |d |rVtdt	|t	| n	tdt	| t  ttj|jddddddddddd t  |jD ]}
tj|
jddddddddddd}|
jjtjkr|
jjdd }| j |
jj jrt	|dd}n,t	||d}n%|
jjtjkrdtj|
jj }t	|dd}ntj|
jj }t	|dd}|
jrdd|
j  d }t	||d}d ||g}d ||g}n|}|}td!t	|
j|d d"t
|   |r|d# nd |d$d  D ]	}td%|  q"q{t  q| j D ]\}}|jd| j}|jd&d }|dd }d'|}tdt	dd|ddt
|  d(d td)t	| td*t	|t	d+|dt	d,d-d t  ttj|jddddddddddd |j D ]d}t  |j| }|jd. }d-|d/|d}d0t	|jd|jd1d}td2t	||d|t	|jjdd ddd3t	|jjdd ddd3 t  ttj|jd4d5d5dddddddd qt  q6d S )6N)3      rV  )rV     $   )r  r  r  wampurirc   rd   bluez{} {}StructTablez{}
z   {} {} {}z=====v   )colorz    Type URI:  {}.{}z    Type URI:  {}d   z    TF   )
rW  initial_indentsubsequent_indentexpand_tabsreplace_whitespacefix_sentence_endingsbreak_long_wordsdrop_whitespacebreak_on_hyphenstabsizeF   r   z
Vector[{}]white(, )r   z    {:<36} {} {}   r   r  z9                                                         rb   zInterface {}yellowz    Interface UUID:  {}z    Interface URIs:  {}.({}|{})	proceduretopicgreenr   )r  r  rh   )rV  rV  rV  z      {} {} ({}) -> {})r  boldZ   z
          )r@  r   r^   r{   r  rk   r   rj   r  r   r   textwrapfillr   r   wrapr   rI   r   rD   rL   rC   rz   rJ   r   r   r\   rC  r   r   r   )rO   brownorangepinkobj_keyr|   
prefix_urir   	obj_color	obj_labelr   r   type_desc_str	type_descattrs_text_str
attrs_texttype_text_str	type_textlinesvc_keyr  ifx_uuidifc_name	ifc_labeluriepep_typeep_color	uri_shortrP   rP   rQ   print_summary5  s    



 






zFbsRepository.print_summaryc           (      C   s  | j  | j | j d}i }i }i }| D ]\}}	|	D ]}
t|
ts9t|
ts9t|
ts9J d	t
|
|
}d|jddd }||_|jdd  |_|dd |_||v}||f|v}|rpd|||f< |dkr|d	|}|j| |t||| jd	}|d
	|}|j| |t||| jd	}n7|dkr|d	|}|j| |t||| jd	}d}d}n|dkrtj| ddddd}d}ntd	|||vrg ||< g ||< || | |r|| | q|| d qqi }| D ]9}|d}tt|D ]*}|| }d|d| }||vr%g ||< |r6||| vr6|| | qq td	t| d}t  }| D ]\}}d|}|rfdg|ddd  }ndg}tt|D ]}t!j"j|g|d|d  R  }t!j"#|st!$| |dkrt!j"|d}d|d|d  dd }|| }|d}|j| ||| jd} | %d}!t!j"&|st'|d}"|"(|! W d   n	1 sw   Y  td	t|!| |)| qot'|d}"|"(|! W d   n	1 s	w   Y  qo|dkr2|r-d	|dd }#d 	|dd }$n!d}#d}$n|dkrJ|rEd!	|dd }#nd"}#d}$nd}#d}$|#rzt*|d }W n t+ys }% ztd#	|% W Y d}%~%nd}%~%ww |%d}!t!j"j||#g  }t!j"||}t'|d}&|&(|! W d   n	1 sw   Y  td$	t|!| |$rK|| }'d|'}zt*|d }W n t+y }% ztd#	|% W Y d}%~%nd}%~%ww |%d}!t!j"j||$g  }t!j"||}||vr&t!j"&|r&t!,| t'|d}&|&(d%%d W d   n	1 sw   Y  |)| t'|d}&|&(|! W d   n	1 s<w   Y  td$	t|!| qLdS )&zm

        :param jinja2_env:
        :param output_dir:
        :param output_lang:
        :return:
        )r|   r  r  zunexpected type {}rc   r   rd   Tra   zpy-autobahn/{}.py.jinja2)repometadatar   render_importsis_first_by_categoryrender_to_basemodulezpy-autobahn/test_{}.py.jinja2eip712zso-eip712/{}-eip712.sol.jinja2Njson)r  z: Fr  )
separatorsensure_asciiindent	sort_keysz)invalid language "{}" for code generationzNamespaces:
{}
z


r   r  z__init__.pyzpy-autobahn/module.py.jinja2)r  r  importsr  r   wbz3Ok, rendered "module.py.jinja2" in {} bytes to "{}"abz{}.pyz
test_{}.pyz{}.jsonz	init.jsonz error during formatting code: {}zOk, written {} bytes to {}z# Copyright (c) ...
)-r@  r0  rA  rC  r   
isinstancer   r/  r*  rj   r   r   r\   rk   r  r   r  r  get_templaterenderr   r  r  dumpsrw   rp   r   r   r   r   r  r   setr^  r_  r  mkdirencodeexistsrf  writeaddr   	Exceptionremove)(rO   
jinja2_env
output_diroutput_langworkcode_modulestest_code_modulesis_first_by_category_modulescategoryr0  itemr  r  is_firstr  tmplcode	test_tmpl	test_code
namespaces	code_file
name_partsr   pnnsinitializedcode_sectionscode_file_dirdr  _modulename_imports	init_coder  fcode_file_nametest_code_file_nameer  test_code_sectionsrP   rP   rQ   r    s0  0
	


L


 







	



zFbsRepository.rendervalidation_typer  c           
      C   s  |du rdS || j vrtd| j | j | }t|tkrt|j }| D ]r\}}||jvr;t	d||j
|| |j| }|jjtjkrU| |jj| q)|jjtjkrb	 td q)|jjtjkrt|tsst|trxtd q)t|tr|D ]
}| |jj| qq)t	dt||j
t|| q)|jr|rt	dt||j
dS dS t|ttfv rU|jst	dt||j
d	}	|jD ]w}|	t|krt	d
|j
|j
||	 }|	d7 }	|jjtjkr| |jj| q|jjtjkr	 td q|jjtjkr>t|tst|trtd qt|tr9|D ]}t|jj| | |jj| q%qtd qt|| qt||	krSt	d|j
dS t	dt||j
)a  
        Validate value against the validation type given.

        If the application payload does not validate against the provided type,
        an :class:`autobahn.wamp.exception.InvalidPayload` is raised.

        :param validation_type: Flatbuffers type (fully qualified) against to validate application payload.
        :param value: Value to validate.
        :return:
        Nz+validation type "{}" not found in inventoryz9unexpected argument "{}" in value of validation type "{}"FIXME-003-UnionzFIXME-003-1-VectorzNinvalid type {} for value (expected Vector/List/Tuple) of validation type "{}"z.missing argument(s) {} in validation type "{}"z9**: invalid type {} for (non-struct) validation type "{}"r   z"missing argument "{}" in type "{}"r  zFIXME-005-UnionFIXME-005-1-VectorFIXME-005-3-Vectorz.unexpected argument(s) in validation type "{}"z1invalid type {} for value of validation type "{}")r@  rp   rj   r   r   r	  r   r   r   r   r\   discardrI   r   rD   validate_objrL   r   r  rC   r  r   r   r   rM   r  r   r   tupler   r   )
rO   r0  r  vt	vt_kwargsr   r   r   veidxrP   rP   rQ   r5    sv   












zFbsRepository.validate_objargskwargsc           
      C   s  |du rdS || j vrtd|t| j | j | }d}t|r$| ng }|jD ]}|js9d|jv s9d|jvr|du sC|t|krMt	d|j
|j
|| }|d7 }|jjtjkre| |jj| q*|jjtjkrr	 td q*|jjtjkrt|tst|trtd	 q*t|tr|D ]}	t|jj|	 | |jj|	 qq*td
 q*t|| q*d|jv r|j
|v r||j
 }td ||j
 q*J dt||krt	dt|| |j
|rt	dt|t||j
|S )a  
        Validate the WAMP application payload provided in positional argument in ``args``
        and in keyword-based arguments in ``kwargs`` against the FlatBuffers table
        type ``validation_type`` from this repository.

        If the application payload does not validate against the provided type,
        an :class:`autobahn.wamp.exception.InvalidPayload` is raised.

        :param validation_type: Flatbuffers type (fully qualified) against to validate application payload.
        :param args: The application payload WAMP positional arguments.
        :param kwargs: The application payload WAMP keyword-based arguments.
        :return: The validation type object from this repository (reference in ``validation_type``)
            which has been used for validation.
        Nz<validation type "{}" not found in inventory (among {} types)r   argkwargz-missing positional argument "{}" in type "{}"r  r1  r2  r3  z	FIXME-003Fzshould not arrive herez/{} unexpected positional arguments in type "{}"z/{} unexpected keyword arguments {} in type "{}")r@  rp   rj   r   r	  r   r   r_   r^   r   r\   r   rI   r   rD   r5  rL   r   r  rC   r  r   r   r   rM   r  r4  r   )
rO   r0  r;  r<  r7  args_idxkwargs_keysr   r  r9  rP   rP   rQ   validate  sP   









zFbsRepository.validateN)F) r   r   r   r   r   rR   r%  r  r  r   r  r   rH   r  r   r@  r/  rA  r*  rC  r  r
   r   r  r  r  r  r   r	   r5  r   rA  rP   rP   rP   rQ   rF     s6    

M  Y.brF   rN   )2r  r^  r  rv   rh  r  pathlibr   r   typingr   r   r   r   r   r	   r
   collections.abcr   yapf.yapflib.yapf_apir   r  autobahn.wamp.exceptionr   autobahn.utilr   #zlmdb.flatbuffers.reflection.Schemar   rj  %zlmdb.flatbuffers.reflection.BaseTyper   r   "zlmdb.flatbuffers.reflection.Fieldr   r   r   r   r   r   r   r   r  r   r   r*  r-  r/  rH   r  rF   rP   rP   rP   rQ   <module>   sJ   $  ;d

JY DGDc  ?