
    tf*                       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e"          Z# G d de"          Z$ G d de"          Z%d Z&d Z'd&dZ(d&dZ) G d de"          Z* G d de"          Z+ G d de"          Z, G d de"          Z- G d de"          Z. G d  d!e"          Z/d"ee         fd#Z0 G d$ d%e"          Z1dS )'    N)Path)pformat)UnionDictListOptionalIOAnyTuple)Sequence)
FormatCode)InvalidPayload)hlval)Schema)BaseType)Fieldc                   H   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#	 	 dLd1d2d3d4d5ed6ed7ed8e$e         d9e$e         fd:Z%e&dMd<            Z'e&dNd=            Z(e&d;efd>            Z)e&d;efd?            Z*e&d;efd@            Z+e&d;e$e         fdA            Z,e&d;e$e         fdB            Z-	 	 dOdEedFe$e.         dGe$e         dHed;ef
dIZ/d;efdJZ0d;e.ee1f         fdKZ2d0S )P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                 h    || _         || _        || _        || _        || _        || _        || _        d S N)r   r   r   r   r   r   r   )selfrG   rI   rK   rL   rM   rN   rO   s           S/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/autobahn/xbr/_schema.py__init__zFbsType.__init__   s;     &!'    returnc                     | j         S rQ   r   rR   s    rS   rG   zFbsType.repository       rU   c                     | j         S rQ   r   rY   s    rS   rI   zFbsType.schema   
    |rU   c                     | j         S )z:
        Flatbuffers base type.

        :return:
        )r   rY   s    rS   rK   zFbsType.basetype   s     ~rU   c                     | j         S )z>
        Only if basetype == Vector

        :return:
        )r   rY   s    rS   rL   zFbsType.element   s     }rU   c                     | j         S )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   rY   s    rS   rM   zFbsType.index   s     {rU   c                     | j         t          j        k    rH| j        A| j        t          j        k    r"| j        j        | j                 j	        | _        n
J d            | j        S )z]
        If basetype == Vector, fully qualified element type name.

        :return:
        NFFIXME)
r   r   rE   r   r   rF   r   
objs_by_idr   namerY   s    rS   rO   zFbsType.elementtype   s]     >W^++0A0I}++$(L$;DK$H$M!! &g%%%  rU   c                     | j         t          j        k    r(| j        !| j        j        | j                 j        | _        | j        S )z\
        If basetype == Object, fully qualified object type name.

        :return:
        )r   r   rF   r   r   rc   r   rd   rY   s    rS   rN   zFbsType.objtype  s8     >W[((T]-B L3DK@EDM}rU   TFlanguageattrsrequiredobjtype_as_stringc                 n   |dk    rd}| j         t          j        k    r| j        t          j        k    r|rd|v rd}nbd}n^| j        r5d                    | j                            d          d                   }n"d                    t          j        | j                           }n| j         t          j	        k    rS| j        r!| j                            d          d         }nd                    t          j        | j                           }n| j         t          j
        t          j        t          j        gz   v r6| j         t          j        k    r	|rd	|v rd
}nEt          j        | j                  }n-t          d                    | j         | j                            |rA| j         t          j	        k    r,|rd                    |          S d                    |          S |rd                    |          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 {})rK   r   rE   rL   r;   rN   formatsplitFBS2PYrF   SCALAR_TYPESr8   r   rA   NotImplementedErrormapRuntimeError)rR   rf   rg   rh   ri   _mapped_types         rS   ry   zFbsType.map  s    xL}..<7=00 /5'2'. | W'1'8'89K9KC9P9PQS9T'U'U (2'8'89U'V'V'+--< S#'<#5#5c#:#:2#>LL $.#4#4W^DL5Q#R#RLL'"6'-9W"WWW=GM11e1u@T@T#2LL#*>$-#@LL *W^^_c_lnrnvwwy y y ! ?T]gk%A%A  A!==666+22<@@@ ?;;|444)00>>>ZaabjlpltuuvvvrU   c                 t    d                     t          j        |                                                     S N
{}
rt   pprintr   marshalrY   s    rS   __str__zFbsType.__str__]  &    v~dllnn==>>>rU   c                     | j                             | j        d           | j                             | j        d           | j        | j        d}|S )N)rK   rL   rM   rN   )FBS2STRgetrK   rL   rM   rN   )rR   objs     rS   r   zFbsType.marshal`  sO     ((==|''d;;Z|	
 
 
rU   )NNrV   rH   rV   rJ   )NTF)3__name__
__module____qualname____doc__	__slots__	_BaseTyper8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rw   rE   rF   r   STRUCTURED_TYPESrv   r   r   r   r    listdictFBS2PY_TYPE	FBS2FLAGSFBS2PREPENDr   STR2FBSr   rT   propertyrG   rI   rK   rL   rM   rO   rN   r   ry   r   r
   r    rU   rS   r   r   2   s         jIOE >D>DOEOEF
-C>D>DOEOEFFNNOO$MNNOO$$&L F
-COE!(!!) 	 		
 	 	% 	u 	 	 	 	 	' 	% 	& 	x  	!F( 	#s%#$tK( 	-|.I 	))++-)+*,-.K 	 		
 	 	( 	u 	 	 	 	 	( 	( 	( 	u  	!G&	 		 		
 	 	)" 	y} 		 		 	 	 	)" 	)" 	)" 	y}  	!G2 +/.2   , $    	 
   #3-  'sm               X     X #    X     X s    X !Xc] ! ! ! X!  #    X [_&+>w >wC >w >wRV >w#>w03>w >w >w >w@? ? ? ? ?c3h      rU   r   c                       e Zd Zd Zd ZdS )FbsAttributec                     d S rQ   r   rY   s    rS   rT   zFbsAttribute.__init__l  s    rU   c                 *    d                                 S )N )rt   rY   s    rS   r   zFbsAttribute.__str__o  s    yy{{rU   N)r   r   r   rT   r   r   rU   rS   r   r   k  s2              rU   r   c                      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Zed!d            Zed"d            Zedefd            Zedefd            Zedefd            Zedefd            Zedefd            Zedefd            Zedefd            Zedefd            Zede	ee
f         fd            Zedefd            ZdefdZde	eef         fdZd S )#FbsFieldr   r   _name_type_id_offset_default_int_default_real_deprecated	_required_attrs_docsrG   rH   rI   rJ   rd   typeidoffsetdefault_intdefault_real
deprecatedrh   rg   docsc                     || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        || _        d S rQ   r   )rR   rG   rI   rd   r   r   r   r   r   r   rh   rg   r   s                rS   rT   zFbsField.__init__w  s`     &

')%!


rU   rV   c                     | j         S rQ   rX   rY   s    rS   rG   zFbsField.repository  rZ   rU   c                     | j         S rQ   r\   rY   s    rS   rI   zFbsField.schema  r]   rU   c                     | j         S rQ   r   rY   s    rS   rd   zFbsField.name  
    zrU   c                     | j         S rQ   )r   rY   s    rS   r   zFbsField.type  r   rU   c                     | j         S rQ   r   rY   s    rS   r   zFbsField.id  	    xrU   c                     | j         S rQ   )r   rY   s    rS   r   zFbsField.offset  r]   rU   c                     | j         S rQ   )r   rY   s    rS   r   zFbsField.default_int        rU   c                     | j         S rQ   )r   rY   s    rS   r   zFbsField.default_real      !!rU   c                     | j         S rQ   )r   rY   s    rS   r   zFbsField.deprecated  rZ   rU   c                     | j         S rQ   )r   rY   s    rS   rh   zFbsField.required  
    ~rU   c                     | j         S rQ   r   rY   s    rS   rg   zFbsField.attrs  
    {rU   c                     | j         S rQ   r   rY   s    rS   r   zFbsField.docs  r   rU   c                 t    d                     t          j        |                                                     S r}   r   rY   s    rS   r   zFbsField.__str__  r   rU   c                    | j         | j        r| j                                        nd | j        | j        | j        | j        | j        | j        i | j	        d
}| j
        r*| j
                                        D ]\  }}||d         |<   |S )N)
rd   r   r   r   r   r   r   rh   rg   r   rg   )r   r   r   r   r   r   r   r   r   r   r   itemsrR   r   kvs       rS   r   zFbsField.marshal  s    J,0J@DJ&&(((D(l, .*J
 
 ; 	$))++ $ $1"#GQ
rU   Nr   r   )r   r   r   r   r    r   r   r   r   r   r   rT   r   rG   rI   rd   r   r   r   r   r   r   rh   rg   r   r   r
   r   r   rU   rS   r   r   s  s       QI,$  	
   "  % "   S,./    4       X     X c    X g    X C    X     X !S ! ! ! X! "e " " " X"  D       X  $    X tC-.    X c    X? ? ? ? ?c3h      rU   r   c                 >   i }t          |                                           D ]x}|                     |          }|                                }|r|                    d          }|                                }|r|                    d          }||vsJ |||<   y|S )Nutf8)rangeAttributesLength
AttributesKeydecodeValue)r   rg   jfbs_attrattr_key
attr_values         rS   
parse_attrr     s    E3''))** 	% 	%>>!$$<<>> 	/v..H^^%%
 	3#**622Ju$$$$$hLrU   c                 F   g }t          |                                           D ]U}|                     |          }|r<|                    d                                          }|                    |           Vd                    |                                          }|S )Nr    )r   DocumentationLengthDocumentationr   stripappendjoin)r   r   r   doc_lines       rS   
parse_docsr     s    D3**,,-- " "$$Q'' 	"v..4466HKK!!!88D>>!!DKrU   c                    i }i }t          |                                          D ]}|                    |          }|                                }|r|                    d          }t          |                                          }	|||	<   |                                }
d }t          | ||
	                                |

                                |
                                |          }t          | ||||	|                                |                                |                                |                                |                                t%          |          t'          |                    }||vs>J d                    ||	t+          |                                                                |||<   g }t          t/          |                    D ]#}|                    |||                             $||fS )Nr   )rG   rI   rK   rL   rM   rN   )rG   rI   rd   r   r   r   r   r   r   rh   rg   r   z,field "{}" with id "{}" already in fields {})r   FieldsLengthFieldsNamer   r   IdTyper   r   ElementIndexr   OffsetDefaultIntegerDefaultReal
DeprecatedRequiredr   r   rt   sortedkeyslenr   )rG   rI   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is                   rS   parse_fieldsr     s=    N
 3##%%&& 0+ 0+::a==	^^%%
 	3#**622Jy||~~&& &0""))  
$*&4&=&=&?&?%3%;%;%=%=#1#7#7#9#9%-/ / /
 J &(($ ) 0 0 2 2%.%=%=%?%?&/&;&;&=&=$-$8$8$:$:"+"4"4"6"6))44(335 5 5 ///1_1f1fgqgogmn|  oB  oB  oD  oD  hE  hE2F 2F/// &+z"" L3~&&'' A AN+;A+>?@@@@<''rU   c                    i }i }t          |                                          D ]}|                    |          }|                                }|r|                    d          }|}	|                                }
|
                                }|r|                    d          }|
                                }|r|                    d          }|
                                }|
                                }|
	                                }t          |
          }t          |
          }t          | ||
|          \  }}t          | ||||||||||          }|                                }|                                }|r|                    d          }|                                }|r|                    d          }|                                }|                                }|	                                }t          |          }t          |          }t          | |||          \  }}t          | ||||||||||          }t          |          } t          |          }!t          | |||	||| |!          }"||vs>J d                    ||	t#          |                                                                |"||<   |	|vs>J d                    ||	t#          |                                                                |||	<   g }#t#          |                                          D ]\  }$}%|#                    |%           |#}||fS )Nr   r   rG   rI   declaration_filerd   fieldsr   	is_struct	min_alignbytesizerg   r   )rG   rI   rd   r   requestresponser   rg   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
FbsRPCCallrt   r   r   r   r   )&rG   rI   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_values&                                         rS   parse_callsr7  <  s   EK7&&(()) M) M)==##MMOO	 	1!((00I ''))$))++ 	9)0088M$0$@$@$B$B!$ 	Q(A(H(H(P(P%)2244)2244(1133"<00#L11-9*flem-n-n-n**
$*.G"/$3*;'9'9&7#1"/
1 
1 
1 !))++&++-- 	;+226::N%2%B%B%D%D"% 	S)C)J)J6)R)R&+4466+4466*3355#M22$]333?
FTalt3u3u3u00%+/I#1%5+A(;(;'9$3#1
3 
3 
3	 x((	))
Z!'($"*#,( *, , , %%%'S'Z'Z[dfm[abgblblbnbn[o[o(q (q%%%ik)))+X+_+_`ikr`fglgqgqgsgs`t`t,v ,v)))(G
C;,,..//  5

5K+rU   c                   @   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Zd'dedee         dedefdZdedefdZed(d            Zed)d            Zedefd            Zedefd            Zedeeef         fd            Zedee         fd            Zedefd            Zede	fd            Zede	fd             Zedeee
f         fd!            Zedefd"            Zdefd#Zdeeef         fd$Zed*d&            Zd%S )+r  )r   r   _declaration_filer   _fields_fields_by_id
_is_struct
_min_align	_bytesizer   r   
modulename	classnamemodule_relimportrG   rH   rI   rJ   r  rd   r  r   r  r  r  rg   r   c                     || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        d S rQ   )r   r   r9  r   r:  r;  r<  r=  r>  r   r   )rR   rG   rI   r  rd   r  r   r  r  r  rg   r   s               rS   rT   zFbsObject.__init__  sX     &!1
)##!


rU   TFrf   rh   ri   rV   c                    |dk    rz| j                             d          d         }|r,|rd                    |          S d                    |          S |rd                    |          S d                    |          S t                      )Nrk   rm   rn   rp   rq   rr   rs   r   ru   rt   rx   )rR   rf   rh   ri   klasss        rS   ry   zFbsObject.map  s    xJ$$S))"-E  8  :!==///+225999 8;;u---)00777%'''rU   c                     |dk    rV| j                             d          d         }| j                             d          d         }d                    ||          S t                      )Nrk   rm   rn   zfrom {} import {}rD  )rR   rf   baserE  s       rS   
map_importzFbsObject.map_import  sc    x:##C((,DJ$$S))"-E&--dE:::%'''rU   c                     | j         S rQ   rX   rY   s    rS   rG   zFbsObject.repository  rZ   rU   c                     | j         S rQ   r\   rY   s    rS   rI   zFbsObject.schema  r]   rU   c                     | j         S rQ   r9  rY   s    rS   r  zFbsObject.declaration_file      %%rU   c                     | j         S rQ   r   rY   s    rS   rd   zFbsObject.name  r   rU   c                     | j         S rQ   )r:  rY   s    rS   r  zFbsObject.fields  r]   rU   c                     | j         S rQ   )r;  rY   s    rS   r   zFbsObject.fields_by_id  r   rU   c                     | j         S rQ   )r<  rY   s    rS   r  zFbsObject.is_struct  
    rU   c                     | j         S rQ   )r=  rY   s    rS   r  zFbsObject.min_align  rS  rU   c                     | j         S rQ   )r>  rY   s    rS   r  zFbsObject.bytesize  r   rU   c                     | j         S rQ   r   rY   s    rS   rg   zFbsObject.attrs  r   rU   c                     | j         S rQ   r   rY   s    rS   r   zFbsObject.docs  r   rU   c                 t    d                     t          j        |                                                     S r}   r   rY   s    rS   r   zFbsObject.__str__  r   rU   c           	      H   | j         | j        i | j        | j        | j        i | j        d}| j        r@| j                                        D ]&\  }}|r|                                nd |d         |<   '| j	        r*| j	                                        D ]\  }}||d         |<   |S )N)rd   r  r  r  r  r  rg   r   r  rg   )
r   r9  r<  r=  r>  r   r:  r   r   r   r   s       rS   r   zFbsObject.marshal  s    J $ 6J	
 	
 < 	>**,, > >123#=199;;;Ha  ; 	$))++ $ $1"#GQ
rU   Nc                    |                                 }|r|                    d          }|                                }|r|                    d          }t          |          }t	          |          }t          | |||          \  }}	t          | |||||	|                                |                                |	                                ||          }
|
S )Nr   r  r  )
r   r   r  r   r   r   r  r  r  r  )rG   rI   fbs_objr   obj_nameobj_declaration_fileobj_docs	obj_attrsr   r   r   s              rS   parsezFbsObject.parse  s    <<>> 	/v..H&6688 	G#7#>#>v#F#F g&&w''	'3JZb'c'c'c$:%)=%-%1")"2"2"4"4")"2"2"4"4!(!1!1!3!3'%
' 
' 
' 
rU   )TFr   r   rQ   ) r   r   r   r   r    r   r   r   r   r   r   rT   r   ry   rI  r   rG   rI   r  rd   r  r   r  r  r  rg   r   r   r
   r   staticmethodr`  r   rU   rS   r  r    s"       @I,$ $' 	
 c8m,  $H~ !    S,./    0( (C (8D> (UY (fi ( ( ( (&(3 (3 ( ( ( (       X     X &# & & & X& c    X S(]+    X "d8n " " " X" 4    X 3    X #    X tC-.    X c    X? ? ? ? ?c3h    &    \  rU   r  c                      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Ze	d             Z
e	d             Ze	d             Ze	d             Ze	d             Ze	d             Ze	d             Ze	d             Zd Zd ZdS )r  rG   rH   rI   rJ   rd   r   r	  r
  r   rg   c	                 v    || _         || _        || _        || _        || _        || _        || _        || _        d S rQ   )r   r   r   r   _request	_responser   r   )	rR   rG   rI   rd   r   r	  r
  r   rg   s	            rS   rT   zFbsRPCCall.__init__+  sA     &
!
rU   c                     | j         S rQ   rX   rY   s    rS   rG   zFbsRPCCall.repository=  rZ   rU   c                     | j         S rQ   r\   rY   s    rS   rI   zFbsRPCCall.schemaA  r]   rU   c                     | j         S rQ   r   rY   s    rS   rd   zFbsRPCCall.nameE  r   rU   c                     | j         S rQ   r   rY   s    rS   r   zFbsRPCCall.idI  r   rU   c                     | j         S rQ   )rd  rY   s    rS   r	  zFbsRPCCall.requestM  s
    }rU   c                     | j         S rQ   )re  rY   s    rS   r
  zFbsRPCCall.responseQ  r   rU   c                     | j         S rQ   r   rY   s    rS   r   zFbsRPCCall.docsU  r   rU   c                     | j         S rQ   r   rY   s    rS   rg   zFbsRPCCall.attrsY  r   rU   c                 t    d                     t          j        |                                                     S r}   r   rY   s    rS   r   zFbsRPCCall.__str__]  r   rU   c                    | j         | j        r| j                                        nd | j        r| j                                        nd i | j        d}| j        r*| j                                        D ]\  }}||d         |<   |S )N)rd   r	  r
  rg   r   rg   )r   rd  r   re  r   r   r   r   s       rS   r   zFbsRPCCall.marshal`  s    J26-It},,...T48NL..000J
 
 ; 	$))++ $ $1"#GQ
rU   N)r   r   r   r    r   r  r   r   rT   r   rG   rI   rd   r   r	  r
  r   rg   r   r   r   rU   rS   r  r  *  st       ,$  	
 $ %  S,./   $     X    X   X   X   X   X   X   X? ? ?    rU   r  c                      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Ze	d             Z
e	d             Ze	d             Ze	d             Ze	d             Ze	d             Ze	d             Ze	d             Zd Zd ZdS )
FbsServicerG   rH   rI   rJ   r  rd   r  r  rg   r   c	                 v    || _         || _        || _        || _        || _        || _        || _        || _        d S rQ   )r   r   r9  r   _calls_calls_by_idr   r   )	rR   rG   rI   r  rd   r  r  rg   r   s	            rS   rT   zFbsService.__init__o  sC     &!1
'


rU   c                     | j         S rQ   rX   rY   s    rS   rG   zFbsService.repository  rZ   rU   c                     | j         S rQ   r\   rY   s    rS   rI   zFbsService.schema  r]   rU   c                     | j         S rQ   rM  rY   s    rS   r  zFbsService.declaration_file  rN  rU   c                     | j         S rQ   r   rY   s    rS   rd   zFbsService.name  r   rU   c                     | j         S rQ   )rs  rY   s    rS   r  zFbsService.calls  r   rU   c                     | j         S rQ   )rt  rY   s    rS   r  zFbsService.calls_by_id  r   rU   c                     | j         S rQ   r   rY   s    rS   rg   zFbsService.attrs  r   rU   c                     | j         S rQ   r   rY   s    rS   r   zFbsService.docs  r   rU   c                 t    d                     t          j        |                                                     S r}   r   rY   s    rS   r   zFbsService.__str__  r   rU   c                    | j         | j        i i | j        d}| j        r<| j                                        D ]"\  }}|                                |d         |<   #| j        r*| j                                        D ]\  }}||d         |<   |S )N)rd   r  r  rg   r   r  rg   )r   r9  r   rs  r   r   r   r   s       rS   r   zFbsService.marshal  s    J $ 6J
 
 ; 	.))++ . .1"#))++GQ; 	$))++ $ $1"#GQ
rU   N)r   r   r   r    r   r  r   r   rT   r   rG   rI   r  rd   r  r  rg   r   r   r   r   rU   rS   rq  rq  n  s       ,$ $' 	
 S*_- #:. S,./    $     X    X & & X&   X   X ! ! X!   X   X? ? ?    rU   rq  c                       e Zd ZdddddedefdZed             Zed	             Zed
             Z	ed             Z
ed             Zed             Zed             Zd Zd ZdS )FbsEnumValuerG   rH   rI   rJ   rd   r   c                 h    || _         || _        || _        || _        || _        i | _        || _        dS )ze

        :param repository:
        :param name:
        :param value:
        :param docs:
        N)r   r   r   r   _valuer   r   )rR   rG   rI   rd   r   r6  r   s          rS   rT   zFbsEnumValue.__init__  s:     &



rU   c                     | j         S rQ   rX   rY   s    rS   rG   zFbsEnumValue.repository  rZ   rU   c                     | j         S rQ   r\   rY   s    rS   rI   zFbsEnumValue.schema  r]   rU   c                     | j         S rQ   r   rY   s    rS   rd   zFbsEnumValue.name  r   rU   c                     | j         S rQ   r   rY   s    rS   r   zFbsEnumValue.id  r   rU   c                     | j         S rQ   )r  rY   s    rS   r6  zFbsEnumValue.value  r   rU   c                     | j         S rQ   r   rY   s    rS   rg   zFbsEnumValue.attrs  r   rU   c                     | j         S rQ   r   rY   s    rS   r   zFbsEnumValue.docs  r   rU   c                 t    d                     t          j        |                                                     S r}   r   rY   s    rS   r   zFbsEnumValue.__str__  r   rU   c                     | j         | j        | j        | j        | j        d}| j        r*| j                                        D ]\  }}||d         |<   |S )N)r   rd   rg   r   r6  rg   )r   r   r   r   r  r   r   s       rS   r   zFbsEnumValue.marshal  sh    (J[J[
 
 ; 	$))++ $ $1"#GQ
rU   N)r   r   r   r    r   rT   r   rG   rI   rd   r   r6  rg   r   r   r   r   rU   rS   r  r    s'       ,$  	   ,     X    X   X   X   X   X   X? ? ?    rU   r  c                   p   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Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zd Zd ZdS )FbsEnumz
    FlatBuffers enum type.

    See https://github.com/google/flatbuffers/blob/11a19887053534c43f73e74786b46a615ecbf28e/reflection/reflection.fbs#L61
    rG   rH   rI   rJ   r  rd   r   valuesvalues_by_idis_unionunderlying_typerg   r   c                     || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        d S rQ   )r   r   r9  r   r   _values_values_by_id	_is_union_underlying_typer   r   )rR   rG   rI   r  rd   r   r  r  r  r  rg   r   s               rS   rT   zFbsEnum.__init__   s[     &!1
)! !0


rU   c                     | j         S rQ   rX   rY   s    rS   rG   zFbsEnum.repository  rZ   rU   c                     | j         S rQ   r\   rY   s    rS   rI   zFbsEnum.schema  r]   rU   c                     | j         S rQ   rM  rY   s    rS   r  zFbsEnum.declaration_file"  rN  rU   c                     | j         S rQ   r   rY   s    rS   rd   zFbsEnum.name&  r   rU   c                     | j         S rQ   r   rY   s    rS   r   z
FbsEnum.id*  r   rU   c                     | j         S rQ   )r  rY   s    rS   r  zFbsEnum.values.  r]   rU   c                     | j         S rQ   )r  rY   s    rS   r  zFbsEnum.values_by_id2  r   rU   c                     | j         S rQ   )r  rY   s    rS   r  zFbsEnum.is_union6  r   rU   c                     | j         S rQ   )r  rY   s    rS   r  zFbsEnum.underlying_type:  s    $$rU   c                     | j         S rQ   r   rY   s    rS   rg   zFbsEnum.attrs>  r   rU   c                     | j         S rQ   r   rY   s    rS   r   zFbsEnum.docsB  r   rU   c                 t    d                     t          j        |                                                     S r}   r   rY   s    rS   r   zFbsEnum.__str__F  r   rU   c                 p   | j         | j        i | j        t          j                            | j        d           i | j        d}| j        r<| j        	                                D ]"\  }}|
                                |d         |<   #| j        r*| j        	                                D ]\  }}||d         |<   |S )N)rd   r   r  r  r  rg   r   r  rg   )r   r   r  r   r   r   r  r   r  r   r   r   r   s       rS   r   zFbsEnum.marshalI  s    J(&2243H$OOJ
 
 < 	/**,, / /1#$99;;Ha  ; 	$))++ $ $1"#GQ
rU   N)r   r   r   r   r    r   r   r  r   r   r   rT   r   rG   rI   r  rd   r   r  r  r  r  rg   r   r   r   r   rU   rS   r  r    s        ,$ $' 	
  c</0  $L1   #& S,./    4     X    X & & X&   X   X   X " " X"   X % % X%   X   X? ? ?    rU   r  c            !          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Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed              Zed!             Zed"             Zd# Zd$eeef         fd%Z e!	 d*ddd&e"ee#j$        e%e&         f         d'e
e         d$d fd(            Z'dS )+rJ   z
    NrG   rH   	file_namefile_sha256	file_size
file_identfile_ext	fbs_files
root_tablerootobjsrc   enumsenums_by_idservicesservices_by_idc                     || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        || _        || _        || _        || _        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)rR   rG   r  r  r  r  r  r  r  r  r  rc   r  r  r  r  s                   rS   rT   zFbsSchema.__init__`  s{    D &#'#%!#%

%'!-rU   c                     | j         S rQ   rX   rY   s    rS   rG   zFbsSchema.repository  rZ   rU   c                     | j         S rQ   )r  rY   s    rS   r  zFbsSchema.file_name  rS  rU   c                     | j         S rQ   )r  rY   s    rS   r  zFbsSchema.file_sha256  r   rU   c                     | j         S rQ   )r  rY   s    rS   r  zFbsSchema.file_size  rS  rU   c                     | j         S rQ   )r  rY   s    rS   r  zFbsSchema.file_ident  rZ   rU   c                     | j         S rQ   )r  rY   s    rS   r  zFbsSchema.file_ext  r   rU   c                     | j         S rQ   )r  rY   s    rS   r  zFbsSchema.fbs_files  rS  rU   c                     | j         S rQ   )r  rY   s    rS   r  zFbsSchema.root_table  rZ   rU   c                     | j         S rQ   )r  rY   s    rS   r  zFbsSchema.root  r   rU   c                     | j         S rQ   r  rY   s    rS   r  zFbsSchema.objs  r   rU   c                     | j         S rQ   )r  rY   s    rS   rc   zFbsSchema.objs_by_id  rZ   rU   c                     | j         S rQ   r  rY   s    rS   r  zFbsSchema.enums  r   rU   c                     | j         S rQ   )r  rY   s    rS   r  zFbsSchema.enums_by_id  r   rU   c                     | j         S rQ   r  rY   s    rS   r  zFbsSchema.services  r   rU   c                     | j         S rQ   )r  rY   s    rS   r  zFbsSchema.services_by_id  s    ##rU   c                 x    d                     t          j        |                                 d                    S )Nr~      )widthr   rY   s    rS   r   zFbsSchema.__str__  s+    v~dllnnCHHHIIIrU   rV   c                    | 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        r<| j                                        D ]"\  }}|                                |d         |<   #| j
        r<| j
                                        D ]"\  }}|                                |d         |<   #| j        r<| j                                        D ]"\  }}|                                |d         |<   #|S )z

        :return:
        N)	identextrd   filessha256sizeobjectsr  r  )rI   r  r  r  r  r  r  r  )r  r  r  ospathbasenamer  r  r  r   r  r  r  r  r   r   r   s       rS   r   zFbsSchema.marshal  sw    )~=A_V((999RV+tz??T[))//
 
 9=8HR$*22444d
 
" ; 	.))++ . .1"#))++GQ: 	0
((** 0 01$%IIKKIq!!> 	1,,.. 1 11%&YY[[J""
rU   sfilefilenamec                    t          |          t          k    r\t          j                            |          r=t          |d          5 }|                                }ddd           n# 1 swxY w Y   n|                                }t          j                    }|	                    |           t          j        |d          }|                                }||                    d          }|                                }||                    d          }g }	t          |                                          D ]}
|                    |
          }|                                }|r|                    d          }g }t          |                                          D ]C}|                    |          }|r|                    d          }|                    |           D|	                    ||d           |                                }|t.                              | |          }t3          | |t5          |          |                                |||	||	  	        }i }g }t          |                                          D ]}
|                    |
          }|                                }|r|                    d          }|                                }|r|                    d          }|                                 }i }g }t          |!                                          D ]}|"                    |          }|                                }|r|                    d          }|#                                }tI          |          }tK          | |||||          }||vsJ |||<   |                    |           tM          | ||||
|||'                                |tQ          |          tI          |                    }||vsJ |||<   |                    |           ||_)        ||_*        i } g }!t          |+                                          D ]_}
|,                    |
          }"t.                              | ||"|!	          }#|#j-        | vsJ |#| |#j-        <   |!                    |#           `| |_.        |!|_/        i }$g }%t          |0                                          D ]}
|1                    |
          }&|&                                }'|'r|'                    d          }'|&                                }(|(r|(                    d          }(tI          |&          })tQ          |&          }*te          | ||&|!	          \  }+},tg          | ||(|'|+|,|*|)
          }-|'|$vsJ |-|$|'<   |%                    |-           |$|_4        |%|_5        |S )ze

        :param repository:
        :param sfile:
        :param filename:
        :return:
        rbNr   r   )r  included_filenames)	rG   r  r  r  r  r  r  r  r  )rG   rI   rd   r   r6  r   )rG   rI   r  rd   r   r  r  r  r  rg   r   r  )rG   rI   r  rd   r  r  rg   r   )6r   r    r  r  isfileopenreadhashlibr  update_SchemaGetRootAsSchema	FileIdentr   FileExtr   FbsFilesLengthFbsFilesFilenameIncludedFilenamesLengthIncludedFilenamesr   	RootTabler  r`  rJ   r   	hexdigestEnumsLengthEnumsr   r  UnderlyingTypeValuesLengthValuesr   r   r  r  IsUnionr   r  r  ObjectsLengthObjectsrd   r  r  ServicesLengthServicesr7  rq  r  r  ).rG   r  r  fddatamr  r  r  r  r   schema_fileschema_file_filenameschema_file_included_filenamesr   included_filenamer  rI   r  r  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  rc   r[  r   r  r  r  svc_namesvc_declaration_filer   rg   r  r  services.                                                 rS   loadzFbsSchema.load  s    ;;#"'.."7"7eT"" !bwwyy! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ::<<DN	
 &tQ//^^%%
!#**622J<<>>v..H	t**,,-- 	 	A--**K#.#7#7#9#9 # K';'B'B6'J'J$-/*;>>@@AA I I$/$A$A!$D$D!$ I(9(@(@(H(H%.556GHHHH 4*H     ^^%%
!"Z@@Jj%-%(YY'({{}}&0$,%.&0 $& & & t''))** -	% -	%Azz!}}H I 5%,,V44	$,$<$<$>$>!$ M(=(D(DV(L(L%#+#:#:#<#< K "8002233 5 5!)!3!3"0"5"5"7"7" E&5&<&<V&D&DO#1#7#7#9#9 ",^"<"<)Z17/>-.0@/>@ @ @
 'k9999/9O,!((4444j"(,A )"-(9$,$4$4$6$6+?!+H!5!5 *8 4 4
6 
6 
6D E))))#E)t$$$$) 
t))++,, 	# 	#All1ooG//*fg
/SSC84'''' DNc""""' t**,,-- 	+ 	+AmmA&&G||~~H 3#??622#*#:#:#<#< # K';'B'B6'J'J$g&&Dw''E!,ZS]!^!^!^E; J(.2F&.',-8',&*, , ,G 8++++!(HX!!'****#!/s   A))A-0A-)NNNNNNrQ   )(r   r   r   r   r    r   r   r   r  r  r   r  rq  rT   r   rG   r  r  r  r  r  r  r  r  r  rc   r  r  r  r  r   r!   r   ra  r   io	RawIOBaser	   r   r  r   rU   rS   rJ   rJ   \  sg         9=9=7;8<=A>B0. 0.,0.0. "0.  	0.
 !0. 0. !c3h00. '0. 0.  S)^ 450. &d9o60. !c7l!340. 'tG}50. $Dj$9:0. "*$z*:!;0. 0. 0. 0.d     X    X ! ! X!   X     X    X   X     X    X   X     X    X ! ! X!   X $ $ X$J J Jc6k*    B  (,c c c#r|RY67c}c0;c c c \c c crU   rJ   r6  c                    | j         j        t          j        v rat          j        | j         j                 }t          |          |k    r0t	          d                    t          |          |                    d S J d            )Nz&invalid type {} for value, expected {}Frb   )r   rK   r   r   r   rt   )r   r6  expected_types      rS   validate_scalarr    s|     zg111+EJ,?@;;-'' !I!P!PQUV[Q\Q\^k!l!lmmm (' 	grU   c            	          e Zd ZdZdefdZededd fd            Zededd fd            Ze	defd	            Z
e	deeef         fd
            Ze	deeef         fd            Ze	deeef         fd            Ze	deeef         fd            Ze	d             Zdedeeef         fdZddZd Zd Zdee         dee         fdZdedee         deeef         dee         fdZdS )rH   z
    crossbar.interfaces.IInventory
      - add: FbsRepository[]
        - load: FbsSchema[]

    https://github.com/google/flatbuffers/blob/master/reflection/reflection.fbs
    
basemodulec                 |    t          j                    | _        || _        i | _        i | _        i | _        i | _        d S rQ   )txaiomake_loggerlog_basemodule	_schematar  r  r  )rR   r  s     rS   rT   zFbsRepository.__init__  s:    $&&%/1+-
*,02rU   r  rV   c                 "    t                      }|S rQ   rH   )r  catalogs     rS   from_archivezFbsRepository.from_archive      //rU   addressc                 "    t                      }|S rQ   r$  )r(  r%  s     rS   from_addresszFbsRepository.from_address  r'  rU   c                     | j         S rQ   )r!  rY   s    rS   r  zFbsRepository.basemodule  rZ   rU   c                     | j         S rQ   )r"  rY   s    rS   schemaszFbsRepository.schemas  r   rU   c                     | j         S rQ   r  rY   s    rS   r  zFbsRepository.objs  r   rU   c                     | j         S rQ   r  rY   s    rS   r  zFbsRepository.enums  r   rU   c                     | j         S rQ   r  rY   s    rS   r  zFbsRepository.services  r   rU   c                 ~    t          | j                  t          | j                  z   t          | j                  z   S rQ   )r   r  r  r  rY   s    rS   total_countzFbsRepository.total_count  s.    4:T[!1!11C4G4GGGrU   c                 b   d}g }t           j                            |          rpt          |                              d          D ]K}t           j                            ||j                  }|| j        vr|                    |           F|dz  }Ln$t           j        	                    |          r%|| j        vr|                    |           n|dz  }nd|v r|
                    d          D ]}t           j                            |          }t           j        	                    |          rB|| j        vr|                    |           _t          d                    |                     t          d                    |                    n"t          d                    |                    d}d}d}	|D ]}t                              | |          }
|
j                                        D ]%}|j        | j        v r|dz  }|| j        |j        <   &|
j                                        D ]%}|j        | j        v r|dz  }|| j        |j        <   &|
j                                        D ]%}|j        | j        v r|	dz  }	|| j        |j        <   &|
| j        |<   ||z   |	z   }||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   rd   r"  r   r  ru   
expanduserprintrt   rz   rJ   r  r  r  r  r  r  r  r  )rR   r  	file_dupsload_from_filenamesr  fnfilename_single	enum_dupsobj_dupssvc_dupsrI   r  r   svc	type_dupss                  rS   r  zFbsRepository.load  s    	 7=="" 	^X,,X66 # #W\\(DI66T^++'..r2222 NII# W^^H%% 	^t~--#**84444 Q		H__#+>>##6#6 	] 	]"$'"4"4_"E"E7>>/22 ]&dn<<+22?CCCCSZZ[jkkllll&'C'J'J?'['[\\\	] KRRS[\\]]]	 & 	( 	(B )tR 8 8F ++-- 2 29++NII-1DK	** {))++ / /8tz))MHH+.DJsx(( --// 3 38t~--MHH/2DN38,,!'DN2(83	)##rU   Fc                    |rt          | j                                                  t          | j                                                  t          | j                                                  t          | j                                                  dS t          | j                  t          | j                  t          | j                  t          | j                  dS )N)schematar  r  r  )r   r"  r   r  r  r  r   )rR   r   s     rS   summaryzFbsRepository.summary%  s     	"4>#6#6#8#899tz0011 0 0 2 233"4>#6#6#8#899	    //DJT[))//	  rU   c                 
   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          |	          z
  z            |                               |r>t          d                    t          |          t          |                               n/t          d                    t          |                               t                       t          t          j        |j        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          }|
j        j        t$          j        k    re|
j        j                            d          d         }| j         |
j        j                 j        rt          |d          }nt          ||          }n|
j        j        t$          j        k    rAd                    t$          j        |
j        j                           }t          |d          }n-t$          j        |
j        j                 }t          |d          }|
j        rrdd                    |
j                                                  z   dz   }t          ||          }d                     ||g          }d                     ||g          }n|}|}t          d!                    t          |
j                  |d d"t          |          z
  z  z   |r|d#         nd                     |d$d          D ]}t          d%|z              "t                       | j                                        D ]\  }}|j                            d| j                  }|j                            d&d           }|                    d          d         }d'                    |          }t          d                    t          d                    d|ddt          |          z
  z            d(                               t          d)                    t          |                               t          d*                    t          |          t          d+|          t          d,d-                               t                       t          t          j        |j        dddddddddd                     |j                                        D ]_}t                       |j        |         }|j        d.         }d-|d/                    |d          }d0                    t          |j                            d|j                  d1                    }t          d2                    t          ||          |t          |j        j                            d          d         dd3          t          |j        j                            d          d         dd3                               t                       t          t          j        |j        d4d5d5ddddddd                     at                       d S )6N)3      r  )r     $   )rI  rI  rI  wampurirm   rn   bluez{} {}StructTablez{}
z   {} {} {}z=====v   )colorz    Type URI:  {}.{}z    Type URI:  {}d   z    TF   )
r  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   r4  z9                                                         rl   zInterface {}yellowz    Interface UUID:  {}z    Interface URIs:  {}.({}|{})	proceduretopicgreenr   )re  rd  rr   )r  r  r  z      {} {} ({}) -> {})rQ  boldZ   z
          )r  r   rg   r   r!  ru   r  rt   r9  r   r   textwrapfillr   r   wrapr   rK   r   rF   rN   rE   r   rL   r   r   rd   r  r  r	  r
  )rR   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_keyrA  ifx_uuidifc_name	ifc_labeluriepep_typeep_color	uri_shorts                                rS   print_summaryzFbsRepository.print_summary5  s      IOO-- C	 C	LGSy$2BCCJ}}S))"-H"%-:UI3='MxxgxXXI&--m&:&:69cUX[^_h[i[iUiNj&k&k,5!7 !7 !7 8 8 9 9 9  C,33E*4E4EuXWWXXXX)00xAABBBGGG(-&)/528,0375:150415()
+ 
+ 
+ 
, 
, 
, GGG) (+ (+}UZ+-4679158<:?6:596:-.
0 
0 
0 :&'+55$)J$6$<$<S$A$A"$EMy!34> F$)-v$F$F$F		$)-u$E$E$E		Z(GN::$0$7$7
HZ8[$\$\M %m7 C C CII$+OEJ4G$HM %m7 C C CI; *%(499U[5E5E5G5G+H+H%H3%NN!&~T!B!B!BJ$'HHm^-L$M$MM #)Z)@ A AII$1M )I (//ej0A0A09C2MHZHZCZ<[0[;?0GQRI I J J J !H + +D(T/****+GGGG M//11 .	 .	LGSy$2BCCJy}}VT22H}}S))"-H&--h77I&--m&:&:69cUX[^_h[i[iUiNj&k&k,4!6 !6 !6 7 7 8 8 8+225??CCDDD3::5;L;LeT_gmNnNnNn;@PW;X;X;XZ Z [ [ [GGG(-&)/528,0375:150415()
+ 
+ 
+ 
, 
, 
, y~~'' 0 0!$3(6*%,6BBFFwPWXX !KKbhll9bg.N.NVe(f(f(fgg	.55eG86T6T6T6?6;BJO<Q<QRU<V<VWY<Zbhot6u6u6u6;BK<L<R<RSV<W<WXZ<[cipu6v6v6vx x y y y hmBG*,3?6B047;9>594859,-
/ 
/ 
/ 
0 
0 
0 
0 GGGG].	 .	rU   c           
         | j                                         | j                                        | j                                        d}i }i }i }|                                D ]\  }}	|	D ]}
t          |
t                    sTt          |
t                    s?t          |
t                    s*J d	                    t          |
                                |
}d                    |j                            d          dd                   }||_        |j                            d          d                                         |_        |                    d          d         |_        ||v}||f|v}|rd|||f<   |dk    r|                    d	                    |                    }|                    | |t(          ||| j        	          }|                    d
	                    |                    }|                    | |t(          ||| j        	          }n|dk    rR|                    d	                    |                    }|                    | |t(          ||| j        	          }d}d}nV|dk    r.t-          j        |                                dddd          }d}n"t3          d	                    |                    ||vr
g ||<   g ||<   ||                             |           |r||                             |           ||                             d           Ȑi }|                                D ]}|                    d          }t9          t;          |                    D ]W}||         }d                    |d|                   }||vrg ||<   |r%|||         vr||                             |           Xt=          d	                    t?          |                               d}tA                      }|                                D ]\  }}d                    |          }|r"dg|                    d          dd         z   }ndg}t9          t;          |                    D ]}tC          j"        j        |g|d|dz            R  }tB          j"        #                    |          stC          j$        |           |dk    rxtB          j"                            |d          }d                    |d|dz                      dd         }||         }|                    d          }|                    | ||| j                  } | %                    d          }!tB          j"        &                    |          stO          |d          5 }"|"(                    |!           ddd           n# 1 swxY w Y   t=          d	                    t;          |!          |                     |)                    |           tO          |d          5 }"|"(                    |!           ddd           n# 1 swxY w Y   |dk    rd|r]d	                    |                    d          d                   }#d 	                    |                    d          d                   }$nEd}#d}$n@|dk    r6|r/d!	                    |                    d          d                   }#nd"}#d}$nd}#d}$|#r		 tU          |          d         }n9# tV          $ r,}%t=          d#	                    |%                     Y d}%~%nd}%~%ww xY w|%                    d          }!tC          j"        j        ||#gz    }tB          j"                            ||          }tO          |d          5 }&|&(                    |!           ddd           n# 1 swxY w Y   t=          d$	                    t;          |!          |                     |$r||         }'d                    |'          }	 tU          |          d         }n9# tV          $ r,}%t=          d#	                    |%                     Y d}%~%nd}%~%ww xY w|%                    d          }!tC          j"        j        ||$gz    }tB          j"                            ||          }||vrtB          j"        &                    |          rytC          j,        |           tO          |d          5 }&|&(                    d%%                    d                     ddd           n# 1 swxY w Y   |)                    |           tO          |d          5 }&|&(                    |!           ddd           n# 1 swxY w Y   t=          d$	                    t;          |!          |                     dS )&zm

        :param jinja2_env:
        :param output_dir:
        :param output_lang:
        :return:
        )r   r  r  zunexpected type {}rm   r   rn   Trk   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: FrS  )
separatorsensure_asciiindent	sort_keysz)invalid language "{}" for code generationzNamespaces:
{}
z


r   r4  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  r  r  r  r   
isinstancer  r  rq  rt   r   r   rd   ru   r?  r   r@  rA  get_templaterenderr   r  r  dumpsr   rz   r   r   r   r   r9  r   setr  r  r6  mkdirencodeexistsr  writeaddr   	Exceptionremove)(rR   
jinja2_env
output_diroutput_langworkcode_modulestest_code_modulesis_first_by_category_modulescategoryr  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_sectionss(                                           rS   r  zFbsRepository.render  s    9##%%J%%''}++--
 
 ')$ $

 M	? M	?Hf  I? I?!$	22  Yjw6O6O  YS]^bdnSoSo  Y  Y  rF  rM  rM  NR  SW  NX  NX  rY  rY  Y  Y  Y   !XXhm&9&9#&>&>qt&DEE
&0# &.]%8%8%=%=b%A%G%G%I%I" -7,<,<S,A,A",E)%\9(2H'=Ea'a$' PKO0*h1GH (**%223M3T3TU]3^3^__D;;D8W6><P<@O ' M MD !+ 7 78W8^8^_g8h8h i iI ) 0 0dXW^@HFZFJo !1 !W !WII
 !H,,%223S3Z3Z[c3d3deeD;;D8W6><P<@O ' M MD !%I $II F**:h&6&6&8&81=38-.04	6 6 6D
 !%II&'R'Y'YZe'f'fggg \11/1L,46%j1Z(//555 ?%j188CCCC%j188>>>>SI?X 
%**,, 	. 	.I"--J3z??++ . .]XXj!n--Z''%'JrN ."JrN22rN))"---. 	!(()<)<==>>> ee(4(:(:(<(< _	J _	J$I}==//D %!#ys';';AbD'A A!# 3}--.. * *GLF}Va!eV/DFFFw}}Q''  HQKKK(**a77B"%((=!a%+@"A"A!"""EK)+6H%223QRRD $+W_AE !, !R !RI$++F33D7>>"-- *!"d^^ *qGGDMMM* * * * * * * * * * * * * * *SZZ[^_c[d[dfhiijjj#++++!"d^^ *qGGDMMM* * * * * * * * * * * * * * * h&& /%,^^IOOC4H4H4L%M%MN*6*=*=iooc>R>RSU>V*W*W''%2N*.''&& 1%.%5%5iooc6J6J26N%O%ONN%0N&*##!%&*#  JH%d++A.DD  H H H<CCAFFGGGGGGGGH{{6**W\M^4D$DFW\\*b11 "d^^ #rHHTNNN# # # # # # # # # # # # # # # 299#d))RHHIII # J%6y%A"$MM*<==	H *9 5 5a 8II  H H H<CCAFFGGGGGGGGH ''//W\M5H4I$IKW\\*b11[((RW^^B-?-?(IbMMMb$ I2!8!?!?!G!GHHHI I I I I I I I I I I I I I IOOB'''"d^^ #rHHTNNN# # # # # # # # # # # # # # # 299#d))RHHIII_	J _	Js   1WWW5YYY\((
]2"]]=__#	&_#	;a
b"bb)ee	e	f$$f(	+f(	validation_typer6  c                 	   |dS || j         vr't          d                    | j                             | j         |         }t          |          t          k    rt          |j                                                  }|                                D ]\  }}||j        vr(t          d                    ||j
                            |                    |           |j        |         }|j        j        t          j        k    r!|                     |j        j        |           |j        j        t          j        k    r	 t%          d           |j        j        t          j        k    rt)          |t*                    st)          |t,                    rt%          d           t)          |t.                    r'|D ]"}|                     |j        j        |           #Pt          d                    t          |          |j
                            t3          ||           |j        r7|r7t          d                    t7          |          |j
                            dS dS t          |          t8          t6          fv r|j        s5t          d                    t          |          |j
                            d	}	|j        D ]}|	t=          |          k    r-t          d
                    |j
        |j
                            ||	         }|	dz  }	|j        j        t          j        k    r!|                     |j        j        |           |j        j        t          j        k    r	 t%          d           |j        j        t          j        k    rt)          |t*                    st)          |t,                    rt%          d           t)          |t.                    rA|D ]<}t%          |j        j        |           |                     |j        j        |           =at%          d           rt3          ||           t=          |          |	k    r't          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 "{}"r4  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  rz   rt   r   r   r  r  r   r   r   rd   discardrK   r   rF   validate_objrN   r   r9  rE   r  r    r   r   rO   r  r  r   tupler   r   )
rR   r  r6  vt	vt_kwargsr   r   r   veidxs
             rS   r  zFbsRepository.validate_obj  s    "F$)++LSSTXT]^^___ 	/2;;$BINN,,--I . .1BI%%()d)k)klmoqov)w)wxxx!!!$$$	! :&'+55%%ej&8!<<<<Z(GM99+,,,,Z(GN::!!S)) aZ5-A-A a23333#Ax00 a"# J JB --ej.DbIIIIJ - .GGMvdSTggWYW^G_G_a a a $E1----| x	 x$%U%\%\]abk]l]lnpnu%v%vwwwx x x x %[[UDM))< $%`%g%ghlmrhshsuwu|%}%}~~~C . .#e**$$()M)T)TUZU_acah)i)ijjj#Jq :&'+55%%ej&8!<<<<Z(GM99+,,,,Z(GN::!!S)) 4Z5-A-A 423333#Ax00 4"# J JB!%*"8"=== --ej.DbIIIIJ 23333 $E1----5zzC$%U%\%\]_]d%e%efff   !!T![![\`af\g\gikip!q!qrrrrU   argskwargsc                    |dS || j         vr5t          d                    |t          | j                                       | j         |         }d}t	          |r|                                ng           }|j        D ]}|j        sd|j        v s
d|j        vr||t          |          k    r-t          d                    |j
        |j
                            ||         }|dz  }|j        j        t          j        k    r!|                     |j        j        |           |j        j        t          j        k    r	 t%          d           |j        j        t          j        k    rt)          |t*                    st)          |t,                    rt%          d	           't)          |t.                    rA|D ]<}	t%          |j        j        |	           |                     |j        j        |	           =}t%          d
           t3          ||           d|j        v rA|j
        |v r6||j
                 }t%          d           |                    |j
                   J d            t          |          |k    r8t          d                    t          |          |z
  |j
                            |rCt          d                    t          |          t7          |          |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 "{}"r4  r  r  r  z	FIXME-003Fzshould not arrive herez/{} unexpected positional arguments in type "{}"z/{} unexpected keyword arguments {} in type "{}")r  rz   rt   r   r  r   r   rh   rg   r   rd   r   rK   r   rF   r  rN   r   r9  rE   r  r    r   r   rO   r  r  r   )
rR   r  r  r  r  args_idxkwargs_keysr   r6  r  s
             rS   validatezFbsRepository.validate  sA     "4$)++]ddetvyz~  {D  wE  wE   F   F  G  G  G 	/2  69&++---r:: _ (	7 (	7E ~ %7%+!5!59S9S<8s4yy#8#8()X)_)_`e`jlnls)t)tuuuXA :&'+55%%ej&8%@@@@Z(GM99+,,,,Z(GN::!%-- 4E51I1I 423333#E844 4"' J JB!%*"8"=== --ej.DbIIIIJ 23333 $E51111 EK'':,,"5:.E+&&&''
33366666t99x !R!Y!YZ]^bZcZcfnZnprpw!x!xyyy 	I !R!Y!YZ]^iZjZjlpq|l}l}  @B  @G  "H  "H  I  I  I	rU   N)F) r   r   r   r   r    rT   ra  r&  r*  r   r  r   rJ   r-  r  r  r  r  rq  r  r2  r   r   r  rE  r  r  r   r
   r  r   r  r   rU   rS   rH   rH     s        33 3 3 3 3 s     \ c o    \  C       X  c9n-    X d3	>*    X tCL)    X $sJ/    X H H XHK$S K$U38_ K$ K$ K$ K$Z    ~ ~ ~@VJ VJ VJp`sHSM `s(3- `s `s `s `sDR R49 Rd3PS8n RYabkYl R R R R R RrU   rH   rQ   )2r  r  r  r   r  ri  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   r  %zlmdb.flatbuffers.reflection.BaseTyper   r   "zlmdb.flatbuffers.reflection.Fieldr   r!   r   r   r   r   r   r   r7  r  r  rq  r  r  rJ   r  rH   r   rU   rS   <module>r     s  4  				 				                > > > > > > > > > > > > > > > > > > $ $ $ $ $ $ - , , , , ,  2 2 2 2 2 2       A A A A A A G G G G G G 4 4 4 4 4 4v v v v vf v v vr	    6   a a a a av a a aH  	 	 	G( G( G( G(TV V V VrR R R R R R R RjA A A A A A A AHD D D D D D D DNA A A A A6 A A AH` ` ` ` `f ` ` `Fz z z z z z z zz		(3- 	 	 	 	\
 \
 \
 \
 \
F \
 \
 \
 \
 \
rU   